summaryrefslogtreecommitdiffstats
path: root/browser/base/content/test/urlbar/browser_urlbar_autoFill_backspaced.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/base/content/test/urlbar/browser_urlbar_autoFill_backspaced.js')
-rw-r--r--browser/base/content/test/urlbar/browser_urlbar_autoFill_backspaced.js146
1 files changed, 146 insertions, 0 deletions
diff --git a/browser/base/content/test/urlbar/browser_urlbar_autoFill_backspaced.js b/browser/base/content/test/urlbar/browser_urlbar_autoFill_backspaced.js
new file mode 100644
index 000000000..7fefd3f77
--- /dev/null
+++ b/browser/base/content/test/urlbar/browser_urlbar_autoFill_backspaced.js
@@ -0,0 +1,146 @@
+/* This test ensures that backspacing autoFilled values still allows to
+ * confirm the remaining value.
+ */
+
+function* test_autocomplete(data) {
+ let {desc, typed, autofilled, modified, keys, action, onAutoFill} = data;
+ info(desc);
+
+ yield promiseAutocompleteResultPopup(typed);
+ is(gURLBar.textValue, autofilled, "autofilled value is as expected");
+ if (onAutoFill)
+ onAutoFill()
+
+ keys.forEach(key => EventUtils.synthesizeKey(key, {}));
+
+ is(gURLBar.textValue, modified, "backspaced value is as expected");
+
+ yield promiseSearchComplete();
+
+ ok(gURLBar.popup.richlistbox.children.length > 0, "Should get at least 1 result");
+ let result = gURLBar.popup.richlistbox.children[0];
+ let type = result.getAttribute("type");
+ let types = type.split(/\s+/);
+ ok(types.indexOf(action) >= 0, `The type attribute "${type}" includes the expected action "${action}"`);
+
+ gURLBar.popup.hidePopup();
+ yield promisePopupHidden(gURLBar.popup);
+ gURLBar.blur();
+}
+
+add_task(function* () {
+ registerCleanupFunction(function* () {
+ Services.prefs.clearUserPref("browser.urlbar.autoFill");
+ gURLBar.handleRevert();
+ yield PlacesTestUtils.clearHistory();
+ });
+ Services.prefs.setBoolPref("browser.urlbar.autoFill", true);
+
+ // Add a typed visit, so it will be autofilled.
+ yield PlacesTestUtils.addVisits({
+ uri: NetUtil.newURI("http://example.com/"),
+ transition: Ci.nsINavHistoryService.TRANSITION_TYPED
+ });
+
+ yield test_autocomplete({ desc: "DELETE the autofilled part should search",
+ typed: "exam",
+ autofilled: "example.com/",
+ modified: "exam",
+ keys: ["VK_DELETE"],
+ action: "searchengine"
+ });
+ yield test_autocomplete({ desc: "DELETE the final slash should visit",
+ typed: "example.com",
+ autofilled: "example.com/",
+ modified: "example.com",
+ keys: ["VK_DELETE"],
+ action: "visiturl"
+ });
+
+ yield test_autocomplete({ desc: "BACK_SPACE the autofilled part should search",
+ typed: "exam",
+ autofilled: "example.com/",
+ modified: "exam",
+ keys: ["VK_BACK_SPACE"],
+ action: "searchengine"
+ });
+ yield test_autocomplete({ desc: "BACK_SPACE the final slash should visit",
+ typed: "example.com",
+ autofilled: "example.com/",
+ modified: "example.com",
+ keys: ["VK_BACK_SPACE"],
+ action: "visiturl"
+ });
+
+ yield test_autocomplete({ desc: "DELETE the autofilled part, then BACK_SPACE, should search",
+ typed: "exam",
+ autofilled: "example.com/",
+ modified: "exa",
+ keys: ["VK_DELETE", "VK_BACK_SPACE"],
+ action: "searchengine"
+ });
+ yield test_autocomplete({ desc: "DELETE the final slash, then BACK_SPACE, should search",
+ typed: "example.com",
+ autofilled: "example.com/",
+ modified: "example.co",
+ keys: ["VK_DELETE", "VK_BACK_SPACE"],
+ action: "visiturl"
+ });
+
+ yield test_autocomplete({ desc: "BACK_SPACE the autofilled part, then BACK_SPACE, should search",
+ typed: "exam",
+ autofilled: "example.com/",
+ modified: "exa",
+ keys: ["VK_BACK_SPACE", "VK_BACK_SPACE"],
+ action: "searchengine"
+ });
+ yield test_autocomplete({ desc: "BACK_SPACE the final slash, then BACK_SPACE, should search",
+ typed: "example.com",
+ autofilled: "example.com/",
+ modified: "example.co",
+ keys: ["VK_BACK_SPACE", "VK_BACK_SPACE"],
+ action: "visiturl"
+ });
+
+ yield test_autocomplete({ desc: "BACK_SPACE after blur should search",
+ typed: "ex",
+ autofilled: "example.com/",
+ modified: "e",
+ keys: ["VK_BACK_SPACE"],
+ action: "searchengine",
+ onAutoFill: () => {
+ gURLBar.blur();
+ gURLBar.focus();
+ gURLBar.selectionStart = 1;
+ gURLBar.selectionEnd = 12;
+ }
+ });
+ yield test_autocomplete({ desc: "DELETE after blur should search",
+ typed: "ex",
+ autofilled: "example.com/",
+ modified: "e",
+ keys: ["VK_DELETE"],
+ action: "searchengine",
+ onAutoFill: () => {
+ gURLBar.blur();
+ gURLBar.focus();
+ gURLBar.selectionStart = 1;
+ gURLBar.selectionEnd = 12;
+ }
+ });
+ yield test_autocomplete({ desc: "double BACK_SPACE after blur should search",
+ typed: "ex",
+ autofilled: "example.com/",
+ modified: "e",
+ keys: ["VK_BACK_SPACE", "VK_BACK_SPACE"],
+ action: "searchengine",
+ onAutoFill: () => {
+ gURLBar.blur();
+ gURLBar.focus();
+ gURLBar.selectionStart = 2;
+ gURLBar.selectionEnd = 12;
+ }
+ });
+
+ yield PlacesTestUtils.clearHistory();
+});