summaryrefslogtreecommitdiffstats
path: root/browser/components/urlbar/tests/browser/browser_searchMode_engineRemoval.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/urlbar/tests/browser/browser_searchMode_engineRemoval.js')
-rw-r--r--browser/components/urlbar/tests/browser/browser_searchMode_engineRemoval.js109
1 files changed, 109 insertions, 0 deletions
diff --git a/browser/components/urlbar/tests/browser/browser_searchMode_engineRemoval.js b/browser/components/urlbar/tests/browser/browser_searchMode_engineRemoval.js
new file mode 100644
index 0000000000..f5eab77789
--- /dev/null
+++ b/browser/components/urlbar/tests/browser/browser_searchMode_engineRemoval.js
@@ -0,0 +1,109 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+/**
+ * Tests that we exit search mode when the search mode engine is removed.
+ */
+
+"use strict";
+
+// Tests that we exit search mode in the active tab when the search mode engine
+// is removed.
+add_task(async function activeTab() {
+ let extension = await SearchTestUtils.installSearchExtension(
+ {},
+ { skipUnload: true }
+ );
+ let engine = Services.search.getEngineByName("Example");
+ await Services.search.moveEngine(engine, 0);
+
+ await UrlbarTestUtils.promiseAutocompleteResultPopup({
+ window,
+ value: "ex",
+ });
+ await UrlbarTestUtils.enterSearchMode(window);
+ // Sanity check: we are in the correct search mode.
+ await UrlbarTestUtils.assertSearchMode(window, {
+ engineName: engine.name,
+ entry: "oneoff",
+ });
+ await extension.unload();
+ // Check that we are no longer in search mode.
+ await UrlbarTestUtils.assertSearchMode(window, null);
+});
+
+// Tests that we exit search mode in a background tab when the search mode
+// engine is removed.
+add_task(async function backgroundTab() {
+ let extension = await SearchTestUtils.installSearchExtension(
+ {},
+ { skipUnload: true }
+ );
+ let engine = Services.search.getEngineByName("Example");
+ await Services.search.moveEngine(engine, 0);
+
+ await UrlbarTestUtils.promiseAutocompleteResultPopup({
+ window,
+ value: "ex",
+ });
+ await UrlbarTestUtils.enterSearchMode(window);
+ let tab1 = gBrowser.selectedTab;
+ let tab2 = await BrowserTestUtils.openNewForegroundTab(gBrowser);
+
+ // Sanity check: tab1 is still in search mode.
+ await BrowserTestUtils.switchTab(gBrowser, tab1);
+ await UrlbarTestUtils.assertSearchMode(window, {
+ engineName: engine.name,
+ entry: "oneoff",
+ });
+
+ // Switch back to tab2 so tab1 is in the background when the engine is
+ // removed.
+ await BrowserTestUtils.switchTab(gBrowser, tab2);
+ // tab2 shouldn't be in search mode.
+ await UrlbarTestUtils.assertSearchMode(window, null);
+ await extension.unload();
+
+ // tab1 should have exited search mode.
+ await BrowserTestUtils.switchTab(gBrowser, tab1);
+ await UrlbarTestUtils.assertSearchMode(window, null);
+ BrowserTestUtils.removeTab(tab2);
+});
+
+// Tests that we exit search mode in a background window when the search mode
+// engine is removed.
+add_task(async function backgroundWindow() {
+ let extension = await SearchTestUtils.installSearchExtension(
+ {},
+ { skipUnload: true }
+ );
+ let engine = Services.search.getEngineByName("Example");
+ await Services.search.moveEngine(engine, 0);
+
+ let win1 = window;
+ await UrlbarTestUtils.promiseAutocompleteResultPopup({
+ window: win1,
+ value: "ex",
+ });
+ await UrlbarTestUtils.enterSearchMode(win1);
+ let win2 = await BrowserTestUtils.openNewBrowserWindow();
+
+ // Sanity check: win1 is still in search mode.
+ win1.focus();
+ await UrlbarTestUtils.assertSearchMode(win1, {
+ engineName: engine.name,
+ entry: "oneoff",
+ });
+
+ // Switch back to win2 so win1 is in the background when the engine is
+ // removed.
+ win2.focus();
+ // win2 shouldn't be in search mode.
+ await UrlbarTestUtils.assertSearchMode(win2, null);
+ await extension.unload();
+
+ // win1 should not be in search mode.
+ win1.focus();
+ await UrlbarTestUtils.assertSearchMode(win1, null);
+ await BrowserTestUtils.closeWindow(win2);
+});