summaryrefslogtreecommitdiffstats
path: root/browser/components/search/test/browser_private_search_perwindowpb.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/search/test/browser_private_search_perwindowpb.js')
-rw-r--r--browser/components/search/test/browser_private_search_perwindowpb.js76
1 files changed, 76 insertions, 0 deletions
diff --git a/browser/components/search/test/browser_private_search_perwindowpb.js b/browser/components/search/test/browser_private_search_perwindowpb.js
new file mode 100644
index 000000000..c0410371b
--- /dev/null
+++ b/browser/components/search/test/browser_private_search_perwindowpb.js
@@ -0,0 +1,76 @@
+// This test performs a search in a public window, then a different
+// search in a private window, and then checks in the public window
+// whether there is an autocomplete entry for the private search.
+
+add_task(function* () {
+ // Don't use about:home as the homepage for new windows
+ Services.prefs.setIntPref("browser.startup.page", 0);
+ registerCleanupFunction(() => Services.prefs.clearUserPref("browser.startup.page"));
+
+ let windowsToClose = [];
+
+ function performSearch(aWin, aIsPrivate) {
+ let searchBar = aWin.BrowserSearch.searchBar;
+ ok(searchBar, "got search bar");
+
+ let loadPromise = BrowserTestUtils.browserLoaded(aWin.gBrowser.selectedBrowser);
+
+ searchBar.value = aIsPrivate ? "private test" : "public test";
+ searchBar.focus();
+ EventUtils.synthesizeKey("VK_RETURN", {}, aWin);
+
+ return loadPromise;
+ }
+
+ function* testOnWindow(aIsPrivate) {
+ let win = yield BrowserTestUtils.openNewBrowserWindow({ private: aIsPrivate });
+ yield SimpleTest.promiseFocus(win);
+ windowsToClose.push(win);
+ return win;
+ }
+
+ yield promiseNewEngine("426329.xml", { iconURL: "data:image/x-icon,%00" });
+
+ let newWindow = yield* testOnWindow(false);
+ yield performSearch(newWindow, false);
+
+ newWindow = yield* testOnWindow(true);
+ yield performSearch(newWindow, true);
+
+ newWindow = yield* testOnWindow(false);
+
+ let searchBar = newWindow.BrowserSearch.searchBar;
+ searchBar.value = "p";
+ searchBar.focus();
+
+ let popup = searchBar.textbox.popup;
+ let popupPromise = BrowserTestUtils.waitForEvent(popup, "popupshown");
+ searchBar.textbox.showHistoryPopup();
+ yield popupPromise;
+
+ let entries = getMenuEntries(searchBar);
+ for (let i = 0; i < entries.length; i++) {
+ isnot(entries[i], "private test",
+ "shouldn't see private autocomplete entries");
+ }
+
+ searchBar.textbox.toggleHistoryPopup();
+ searchBar.value = "";
+
+ windowsToClose.forEach(function(win) {
+ win.close();
+ });
+});
+
+function getMenuEntries(searchBar) {
+ let entries = [];
+ let autocompleteMenu = searchBar.textbox.popup;
+ // Could perhaps pull values directly from the controller, but it seems
+ // more reliable to test the values that are actually in the tree?
+ let column = autocompleteMenu.tree.columns[0];
+ let numRows = autocompleteMenu.tree.view.rowCount;
+ for (let i = 0; i < numRows; i++) {
+ entries.push(autocompleteMenu.tree.view.getValueAt(i, column));
+ }
+ return entries;
+}