summaryrefslogtreecommitdiffstats
path: root/browser/components/urlbar/tests/browser/browser_searchMode_pickResult.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/urlbar/tests/browser/browser_searchMode_pickResult.js')
-rw-r--r--browser/components/urlbar/tests/browser/browser_searchMode_pickResult.js89
1 files changed, 89 insertions, 0 deletions
diff --git a/browser/components/urlbar/tests/browser/browser_searchMode_pickResult.js b/browser/components/urlbar/tests/browser/browser_searchMode_pickResult.js
new file mode 100644
index 0000000000..ac45b3e5c7
--- /dev/null
+++ b/browser/components/urlbar/tests/browser/browser_searchMode_pickResult.js
@@ -0,0 +1,89 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+/**
+ * Tests that search mode is exited after picking a result.
+ */
+
+"use strict";
+
+const BOOKMARK_URL = "http://www.example.com/browser_searchMode_pickResult.js";
+
+add_setup(async function () {
+ // Add a bookmark so we can enter bookmarks search mode and pick it.
+ await PlacesUtils.bookmarks.eraseEverything();
+ await PlacesUtils.bookmarks.insert({
+ parentGuid: PlacesUtils.bookmarks.unfiledGuid,
+ url: BOOKMARK_URL,
+ });
+ registerCleanupFunction(async () => {
+ await PlacesUtils.bookmarks.eraseEverything();
+ });
+});
+
+// Opens a new tab, enters search mode, does a search for our test bookmark, and
+// picks it. Uses a variety of initial URLs and search strings in order to hit
+// different branches in setURI. Search mode should be exited in all cases.
+add_task(async function pickResult() {
+ for (let test of [
+ // initialURL, searchString
+ ["about:blank", BOOKMARK_URL],
+ ["about:blank", new URL(BOOKMARK_URL).origin],
+ ["about:blank", new URL(BOOKMARK_URL).pathname],
+ [BOOKMARK_URL, BOOKMARK_URL],
+ [BOOKMARK_URL, new URL(BOOKMARK_URL).origin],
+ [BOOKMARK_URL, new URL(BOOKMARK_URL).pathname],
+ ]) {
+ await doPickResultTest(...test);
+ }
+});
+
+async function doPickResultTest(initialURL, searchString) {
+ info(
+ "doPickResultTest with args: " +
+ JSON.stringify({
+ initialURL,
+ searchString,
+ })
+ );
+
+ await BrowserTestUtils.withNewTab(initialURL, async () => {
+ await UrlbarTestUtils.promiseAutocompleteResultPopup({
+ window,
+ value: searchString,
+ fireInputEvent: true,
+ });
+
+ await UrlbarTestUtils.enterSearchMode(window, {
+ source: UrlbarUtils.RESULT_SOURCE.BOOKMARKS,
+ });
+
+ // Arrow down to the bookmark result.
+ let firstResult = await UrlbarTestUtils.getDetailsOfResultAt(window, 0);
+ if (!firstResult.heuristic) {
+ EventUtils.synthesizeKey("KEY_ArrowDown");
+ }
+ let foundResult = false;
+ for (let i = 0; i < UrlbarTestUtils.getResultCount(window); i++) {
+ let result = await UrlbarTestUtils.getDetailsOfResultAt(window, i);
+ if (result.url == BOOKMARK_URL) {
+ foundResult = true;
+ break;
+ }
+ EventUtils.synthesizeKey("KEY_ArrowDown");
+ }
+ Assert.ok(foundResult, "The bookmark result should have been found");
+
+ // Press enter.
+ let loadPromise = BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser);
+ EventUtils.synthesizeKey("KEY_Enter");
+ await loadPromise;
+ Assert.equal(
+ gBrowser.currentURI.spec,
+ BOOKMARK_URL,
+ "Should have loaded the bookmarked URL"
+ );
+
+ await UrlbarTestUtils.assertSearchMode(window, null);
+ });
+}