diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
commit | 36d22d82aa202bb199967e9512281e9a53db42c9 (patch) | |
tree | 105e8c98ddea1c1e4784a60a5a6410fa416be2de /toolkit/components/places/tests/queries/test_options_inherit.js | |
parent | Initial commit. (diff) | |
download | firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip |
Adding upstream version 115.7.0esr.upstream/115.7.0esr
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'toolkit/components/places/tests/queries/test_options_inherit.js')
-rw-r--r-- | toolkit/components/places/tests/queries/test_options_inherit.js | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/toolkit/components/places/tests/queries/test_options_inherit.js b/toolkit/components/places/tests/queries/test_options_inherit.js new file mode 100644 index 0000000000..ae43350eda --- /dev/null +++ b/toolkit/components/places/tests/queries/test_options_inherit.js @@ -0,0 +1,118 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +/** + * Tests inheritance of certain query options like: + * excludeItems, excludeQueries, expandQueries. + */ + +"use strict"; + +add_task(async function () { + await PlacesUtils.bookmarks.insertTree({ + guid: PlacesUtils.bookmarks.unfiledGuid, + children: [ + { + title: "folder", + type: PlacesUtils.bookmarks.TYPE_FOLDER, + children: [ + { + title: "query", + url: + "place:queryType=" + + Ci.nsINavHistoryQueryOptions.QUERY_TYPE_BOOKMARKS, + }, + { title: "bm", url: "http://example.com" }, + { + type: PlacesUtils.bookmarks.TYPE_SEPARATOR, + }, + ], + }, + { title: "bm", url: "http://example.com" }, + { + type: PlacesUtils.bookmarks.TYPE_SEPARATOR, + }, + ], + }); + + await test_query({}, 3, 3, 2); + await test_query({ expandQueries: false }, 3, 3, 0); + await test_query({ excludeItems: true }, 1, 1, 0); + await test_query({ excludeItems: true, expandQueries: false }, 1, 1, 0); + await test_query({ excludeItems: true, excludeQueries: true }, 1, 0, 0); +}); + +async function test_query( + opts, + expectedRootCc, + expectedFolderCc, + expectedQueryCc +) { + let query = PlacesUtils.history.getNewQuery(); + query.setParents([PlacesUtils.bookmarks.unfiledGuid]); + let options = PlacesUtils.history.getNewQueryOptions(); + for (const [o, v] of Object.entries(opts)) { + info(`Setting ${o} to ${v}`); + options[o] = v; + } + let root = PlacesUtils.history.executeQuery(query, options).root; + root.containerOpen = true; + + Assert.equal(root.childCount, expectedRootCc, "Checking root child count"); + if (root.childCount > 0) { + let folder = root.getChild(0); + Assert.equal(folder.title, "folder", "Found the expected folder"); + + // Check the folder uri doesn't reflect the root options, since those + // options are inherited and not part of this node declaration. + checkURIOptions(folder.uri); + + PlacesUtils.asContainer(folder).containerOpen = true; + Assert.equal( + folder.childCount, + expectedFolderCc, + "Checking folder child count" + ); + if (folder.childCount) { + let placeQuery = folder.getChild(0); + PlacesUtils.asQuery(placeQuery).containerOpen = true; + Assert.equal( + placeQuery.childCount, + expectedQueryCc, + "Checking query child count" + ); + placeQuery.containerOpen = false; + } + folder.containerOpen = false; + } + let f = await PlacesUtils.bookmarks.insert({ + parentGuid: PlacesUtils.bookmarks.unfiledGuid, + type: PlacesUtils.bookmarks.TYPE_FOLDER, + }); + checkURIOptions(root.getChild(root.childCount - 1).uri); + await PlacesUtils.bookmarks.remove(f); + + root.containerOpen = false; +} + +function checkURIOptions(uri) { + info("Checking options for uri " + uri); + let folderOptions = {}; + PlacesUtils.history.queryStringToQuery(uri, {}, folderOptions); + folderOptions = folderOptions.value; + Assert.equal( + folderOptions.excludeItems, + false, + "ExcludeItems should not be changed" + ); + Assert.equal( + folderOptions.excludeQueries, + false, + "ExcludeQueries should not be changed" + ); + Assert.equal( + folderOptions.expandQueries, + true, + "ExpandQueries should not be changed" + ); +} |