summaryrefslogtreecommitdiffstats
path: root/browser/components/urlbar/tests/browser/browser_searchMode_autofill.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/urlbar/tests/browser/browser_searchMode_autofill.js')
-rw-r--r--browser/components/urlbar/tests/browser/browser_searchMode_autofill.js133
1 files changed, 133 insertions, 0 deletions
diff --git a/browser/components/urlbar/tests/browser/browser_searchMode_autofill.js b/browser/components/urlbar/tests/browser/browser_searchMode_autofill.js
new file mode 100644
index 0000000000..3186d96b92
--- /dev/null
+++ b/browser/components/urlbar/tests/browser/browser_searchMode_autofill.js
@@ -0,0 +1,133 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+/**
+ * Tests that autofill is cleared if a remote search mode is entered but still
+ * works for local search modes.
+ */
+
+"use strict";
+
+add_setup(async function () {
+ for (let i = 0; i < 5; i++) {
+ await PlacesTestUtils.addVisits([{ uri: "http://example.com/" }]);
+ }
+
+ await SearchTestUtils.installSearchExtension({}, { setAsDefault: true });
+ let defaultEngine = Services.search.getEngineByName("Example");
+ await Services.search.moveEngine(defaultEngine, 0);
+
+ await SpecialPowers.pushPrefEnv({
+ set: [["browser.urlbar.suggest.quickactions", false]],
+ });
+
+ registerCleanupFunction(async () => {
+ await PlacesUtils.history.clear();
+ });
+});
+
+// Tests that autofill is cleared when entering a remote search mode and that
+// autofill doesn't happen when in that mode.
+add_task(async function remote() {
+ info("Sanity check: we autofill in a normal search.");
+ await UrlbarTestUtils.promiseAutocompleteResultPopup({
+ window,
+ value: "ex",
+ fireInputEvent: true,
+ });
+ let details = await UrlbarTestUtils.getDetailsOfResultAt(window, 0);
+ Assert.ok(details.autofill, "We're autofilling.");
+ Assert.equal(
+ gURLBar.value,
+ "example.com/",
+ "Urlbar contains the autofilled URL."
+ );
+ info("Enter remote search mode and check autofill is cleared.");
+ await UrlbarTestUtils.enterSearchMode(window);
+ Assert.equal(gURLBar.value, "ex", "Urlbar contains the typed string.");
+
+ info("Continue typing and check that we're not autofilling.");
+ await UrlbarTestUtils.promiseAutocompleteResultPopup({
+ window,
+ value: "exa",
+ fireInputEvent: true,
+ });
+
+ details = await UrlbarTestUtils.getDetailsOfResultAt(window, 0);
+ Assert.ok(!details.autofill, "We're not autofilling.");
+ Assert.equal(gURLBar.value, "exa", "Urlbar contains the typed string.");
+
+ info("Exit remote search mode and check that we now autofill.");
+ await UrlbarTestUtils.exitSearchMode(window, { backspace: true });
+ await UrlbarTestUtils.promiseAutocompleteResultPopup({
+ window,
+ value: "exam",
+ fireInputEvent: true,
+ });
+ details = await UrlbarTestUtils.getDetailsOfResultAt(window, 0);
+ Assert.ok(details.autofill, "We're autofilling.");
+ Assert.equal(
+ gURLBar.value,
+ "example.com/",
+ "Urlbar contains the typed string."
+ );
+ await UrlbarTestUtils.promisePopupClose(window, () => gURLBar.blur());
+});
+
+// Tests that autofill works as normal when entering and when in a local search
+// mode.
+add_task(async function local() {
+ info("Sanity check: we autofill in a normal search.");
+ await UrlbarTestUtils.promiseAutocompleteResultPopup({
+ window,
+ value: "ex",
+ fireInputEvent: true,
+ });
+ let details = await UrlbarTestUtils.getDetailsOfResultAt(window, 0);
+ Assert.ok(details.autofill, "We're autofilling.");
+ Assert.equal(
+ gURLBar.value,
+ "example.com/",
+ "Urlbar contains the autofilled URL."
+ );
+ info("Enter local search mode and check autofill is preserved.");
+ await UrlbarTestUtils.enterSearchMode(window, {
+ source: UrlbarUtils.RESULT_SOURCE.HISTORY,
+ });
+ Assert.equal(
+ gURLBar.value,
+ "example.com/",
+ "Urlbar contains the autofilled URL."
+ );
+
+ info("Continue typing and check that we're autofilling.");
+ await UrlbarTestUtils.promiseAutocompleteResultPopup({
+ window,
+ value: "exa",
+ fireInputEvent: true,
+ });
+
+ details = await UrlbarTestUtils.getDetailsOfResultAt(window, 0);
+ Assert.ok(details.autofill, "We're autofilling.");
+ Assert.equal(
+ gURLBar.value,
+ "example.com/",
+ "Urlbar contains the autofilled URL."
+ );
+
+ info("Exit local search mode and check that nothing has changed.");
+ await UrlbarTestUtils.exitSearchMode(window, { backspace: true });
+ await UrlbarTestUtils.promiseAutocompleteResultPopup({
+ window,
+ value: "exam",
+ fireInputEvent: true,
+ });
+ details = await UrlbarTestUtils.getDetailsOfResultAt(window, 0);
+ Assert.ok(details.autofill, "We're autofilling.");
+ Assert.equal(
+ gURLBar.value,
+ "example.com/",
+ "Urlbar contains the typed string."
+ );
+ await UrlbarTestUtils.promisePopupClose(window, () => gURLBar.blur());
+});