summaryrefslogtreecommitdiffstats
path: root/browser/components/urlbar/tests/browser/browser_keyword_select_and_type.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/urlbar/tests/browser/browser_keyword_select_and_type.js')
-rw-r--r--browser/components/urlbar/tests/browser/browser_keyword_select_and_type.js97
1 files changed, 97 insertions, 0 deletions
diff --git a/browser/components/urlbar/tests/browser/browser_keyword_select_and_type.js b/browser/components/urlbar/tests/browser/browser_keyword_select_and_type.js
new file mode 100644
index 0000000000..a3222c293f
--- /dev/null
+++ b/browser/components/urlbar/tests/browser/browser_keyword_select_and_type.js
@@ -0,0 +1,97 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+/**
+ * This tests that changing away from a keyword result and back again, still
+ * operates correctly.
+ */
+
+add_task(async function () {
+ let bookmarks = [];
+ bookmarks.push(
+ await PlacesUtils.bookmarks.insert({
+ parentGuid: PlacesUtils.bookmarks.unfiledGuid,
+ url: "http://example.com/?q=%s",
+ title: "test",
+ })
+ );
+ await PlacesUtils.keywords.insert({
+ keyword: "keyword",
+ url: "http://example.com/?q=%s",
+ });
+
+ // This item is only needed so we can select the keyword item, select something
+ // else, then select the keyword item again.
+ bookmarks.push(
+ await PlacesUtils.bookmarks.insert({
+ parentGuid: PlacesUtils.bookmarks.unfiledGuid,
+ url: "http://example.com/keyword",
+ title: "keyword abc",
+ })
+ );
+
+ registerCleanupFunction(async function () {
+ for (let bm of bookmarks) {
+ await PlacesUtils.bookmarks.remove(bm);
+ }
+ });
+
+ let tab = await BrowserTestUtils.openNewForegroundTab(
+ gBrowser,
+ "about:mozilla"
+ );
+ await UrlbarTestUtils.promiseAutocompleteResultPopup({
+ window,
+ value: "keyword a",
+ });
+ await UrlbarTestUtils.waitForAutocompleteResultAt(window, 1);
+
+ // First item should already be selected
+ Assert.equal(
+ UrlbarTestUtils.getSelectedRowIndex(window),
+ 0,
+ "Should have the first item selected"
+ );
+
+ // Select next one (important!)
+ EventUtils.synthesizeKey("KEY_ArrowDown");
+ Assert.equal(
+ UrlbarTestUtils.getSelectedRowIndex(window),
+ 1,
+ "Should have the second item selected"
+ );
+
+ // Re-select keyword item
+ EventUtils.synthesizeKey("KEY_ArrowUp");
+ Assert.equal(
+ UrlbarTestUtils.getSelectedRowIndex(window),
+ 0,
+ "Should have the first item selected"
+ );
+
+ EventUtils.sendString("b");
+ await UrlbarTestUtils.promiseSearchComplete(window);
+
+ Assert.equal(
+ gURLBar.value,
+ "keyword ab",
+ "urlbar should have expected input"
+ );
+
+ let result = await UrlbarTestUtils.getDetailsOfResultAt(window, 0);
+
+ Assert.equal(
+ result.type,
+ UrlbarUtils.RESULT_TYPE.KEYWORD,
+ "Should have a result of type keyword"
+ );
+ Assert.equal(
+ result.url,
+ "http://example.com/?q=ab",
+ "Should have the correct url"
+ );
+
+ gBrowser.removeTab(tab);
+});