summaryrefslogtreecommitdiffstats
path: root/browser/components/urlbar/tests/browser/browser_enterAfterMouseOver.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/urlbar/tests/browser/browser_enterAfterMouseOver.js')
-rw-r--r--browser/components/urlbar/tests/browser/browser_enterAfterMouseOver.js97
1 files changed, 97 insertions, 0 deletions
diff --git a/browser/components/urlbar/tests/browser/browser_enterAfterMouseOver.js b/browser/components/urlbar/tests/browser/browser_enterAfterMouseOver.js
new file mode 100644
index 0000000000..3629774c73
--- /dev/null
+++ b/browser/components/urlbar/tests/browser/browser_enterAfterMouseOver.js
@@ -0,0 +1,97 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+/**
+ * Tests that enter works correctly after a mouse over.
+ */
+
+function repeat(limit, func) {
+ for (let i = 0; i < limit; i++) {
+ func(i);
+ }
+}
+
+async function promiseAutoComplete(inputText) {
+ gURLBar.focus();
+ gURLBar.value = inputText.slice(0, -1);
+ EventUtils.sendString(inputText.slice(-1));
+ await UrlbarTestUtils.promiseSearchComplete(window);
+}
+
+function assertSelected(index) {
+ Assert.equal(
+ UrlbarTestUtils.getSelectedRowIndex(window),
+ index,
+ "Should have the correct index selected"
+ );
+}
+
+let gMaxResults;
+
+add_task(async function() {
+ registerCleanupFunction(async function() {
+ await PlacesUtils.history.clear();
+ });
+
+ await PlacesUtils.history.clear();
+
+ gMaxResults = Services.prefs.getIntPref("browser.urlbar.maxRichResults");
+
+ let visits = [];
+ repeat(gMaxResults, i => {
+ visits.push({
+ uri: makeURI("http://example.com/autocomplete/?" + i),
+ });
+ });
+ await PlacesTestUtils.addVisits(visits);
+
+ gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser, "about:blank");
+ await promiseAutoComplete("http://example.com/autocomplete/");
+
+ Assert.equal(
+ UrlbarTestUtils.getResultCount(window),
+ gMaxResults,
+ "Should have got the correct amount of results"
+ );
+
+ let initiallySelected = UrlbarTestUtils.getSelectedRowIndex(window);
+
+ info("Key Down to select the next item");
+ EventUtils.synthesizeKey("KEY_ArrowDown");
+ assertSelected(initiallySelected + 1);
+
+ let result = await UrlbarTestUtils.getDetailsOfResultAt(
+ window,
+ initiallySelected + 1
+ );
+ let expectedURL = result.url;
+
+ Assert.equal(
+ gURLBar.untrimmedValue,
+ expectedURL,
+ "Value in the URL bar should be updated by keyboard selection"
+ );
+
+ // Verify that what we're about to do changes the selectedIndex:
+ Assert.notEqual(
+ initiallySelected + 1,
+ 3,
+ "Shouldn't be changing the selectedIndex to the same index we keyboard-selected."
+ );
+
+ let element = await UrlbarTestUtils.waitForAutocompleteResultAt(window, 3);
+ EventUtils.synthesizeMouseAtCenter(element, { type: "mousemove" });
+
+ await UrlbarTestUtils.promisePopupClose(window, async () => {
+ let openedExpectedPage = BrowserTestUtils.waitForDocLoadAndStopIt(
+ expectedURL,
+ gBrowser.selectedBrowser
+ );
+ EventUtils.synthesizeKey("KEY_Enter");
+ await openedExpectedPage;
+ });
+
+ gBrowser.removeCurrentTab();
+});