summaryrefslogtreecommitdiffstats
path: root/browser/components/urlbar/tests/browser/browser_suggestedIndex.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/urlbar/tests/browser/browser_suggestedIndex.js')
-rw-r--r--browser/components/urlbar/tests/browser/browser_suggestedIndex.js120
1 files changed, 120 insertions, 0 deletions
diff --git a/browser/components/urlbar/tests/browser/browser_suggestedIndex.js b/browser/components/urlbar/tests/browser/browser_suggestedIndex.js
new file mode 100644
index 0000000000..563202036a
--- /dev/null
+++ b/browser/components/urlbar/tests/browser/browser_suggestedIndex.js
@@ -0,0 +1,120 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+// Tests that results with a suggestedIndex property end up in the expected
+// position.
+
+add_task(async function suggestedIndex() {
+ let result1 = new UrlbarResult(
+ UrlbarUtils.RESULT_TYPE.URL,
+ UrlbarUtils.RESULT_SOURCE.HISTORY,
+ { url: "http://mozilla.org/1" }
+ );
+ result1.suggestedIndex = 2;
+ let result2 = new UrlbarResult(
+ UrlbarUtils.RESULT_TYPE.URL,
+ UrlbarUtils.RESULT_SOURCE.HISTORY,
+ { url: "http://mozilla.org/2" }
+ );
+ result2.suggestedIndex = 6;
+
+ let provider = new UrlbarTestUtils.TestProvider({
+ results: [result1, result2],
+ });
+ UrlbarProvidersManager.registerProvider(provider);
+ async function clean() {
+ UrlbarProvidersManager.unregisterProvider(provider);
+ await PlacesUtils.history.clear();
+ }
+ registerCleanupFunction(clean);
+
+ let urls = [];
+ let maxResults = UrlbarPrefs.get("maxRichResults");
+ // Add more results, so that the sum of these results plus the above ones,
+ // will be greater than maxResults.
+ for (let i = 0; i < maxResults; ++i) {
+ urls.push("http://example.com/foo" + i);
+ }
+ await PlacesTestUtils.addVisits(urls);
+
+ await UrlbarTestUtils.promiseAutocompleteResultPopup({
+ window,
+ value: "foo",
+ });
+
+ Assert.equal(
+ UrlbarTestUtils.getResultCount(window),
+ maxResults,
+ `There should be ${maxResults} results in the view.`
+ );
+
+ urls.reverse();
+ urls.unshift(
+ (await Services.search.getDefault()).getSubmission("foo").uri.spec
+ );
+ urls.splice(result1.suggestedIndex, 0, result1.payload.url);
+ urls.splice(result2.suggestedIndex, 0, result2.payload.url);
+ urls = urls.slice(0, maxResults);
+
+ let expected = [];
+ for (let i = 0; i < maxResults; ++i) {
+ let url = (await UrlbarTestUtils.getDetailsOfResultAt(window, i)).url;
+ expected.push(url);
+ }
+ // Check all the results.
+ Assert.deepEqual(expected, urls);
+
+ await clean();
+ await UrlbarTestUtils.promisePopupClose(window);
+});
+
+add_task(async function suggestedIndex_append() {
+ // When suggestedIndex is greater than the number of results the result is
+ // appended.
+ let result = new UrlbarResult(
+ UrlbarUtils.RESULT_TYPE.URL,
+ UrlbarUtils.RESULT_SOURCE.HISTORY,
+ { url: "http://mozilla.org/append/" }
+ );
+ result.suggestedIndex = 4;
+
+ let provider = new UrlbarTestUtils.TestProvider({ results: [result] });
+ UrlbarProvidersManager.registerProvider(provider);
+ async function clean() {
+ UrlbarProvidersManager.unregisterProvider(provider);
+ await PlacesUtils.history.clear();
+ }
+ registerCleanupFunction(clean);
+
+ await PlacesTestUtils.addVisits("http://example.com/bar");
+
+ await UrlbarTestUtils.promiseAutocompleteResultPopup({
+ window,
+ value: "bar",
+ });
+
+ Assert.equal(
+ UrlbarTestUtils.getResultCount(window),
+ 3,
+ `There should be 3 results in the view.`
+ );
+
+ let urls = [
+ (await Services.search.getDefault()).getSubmission("bar").uri.spec,
+ "http://example.com/bar",
+ "http://mozilla.org/append/",
+ ];
+
+ let expected = [];
+ for (let i = 0; i < 3; ++i) {
+ let url = (await UrlbarTestUtils.getDetailsOfResultAt(window, i)).url;
+ expected.push(url);
+ }
+ // Check all the results.
+ Assert.deepEqual(expected, urls);
+
+ await clean();
+ await UrlbarTestUtils.promisePopupClose(window);
+});