diff options
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.js | 146 |
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(); +}); |