From 12679ea765e9dffa7c51c7c576a7b05bcb92851b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20Qu=C3=A8ze?= Date: Tue, 3 Feb 2015 13:06:01 +0100 Subject: [PATCH] Bug 1111947 - Dropping text on the searchbar shouldn't search it immediately, r=Mossop. --- browser/components/search/content/search.xml | 2 +- browser/components/search/test/browser.ini | 2 +- .../components/search/test/browser_426329.js | 29 +------------------ .../test/browser_searchbar_openpopup.js | 24 ++++++++++++++- 4 files changed, 26 insertions(+), 31 deletions(-) diff --git a/browser/components/search/content/search.xml b/browser/components/search/content/search.xml index 1fc046bc102..723d6d13781 100644 --- a/browser/components/search/content/search.xml +++ b/browser/components/search/content/search.xml @@ -1255,7 +1255,7 @@ if (data) { event.preventDefault(); this.value = data; - this.onTextEntered(event); + document.getBindingParent(this).openSuggestionsPanel(); } ]]> diff --git a/browser/components/search/test/browser.ini b/browser/components/search/test/browser.ini index 72058a3ae27..9439cf705d1 100644 --- a/browser/components/search/test/browser.ini +++ b/browser/components/search/test/browser.ini @@ -40,4 +40,4 @@ skip-if = e10s # Bug ?????? - some issue with progress listeners [JavaScript Err [browser_abouthome_behavior.js] skip-if = e10s || true # Bug ??????, Bug 1100301 - leaks windows until shutdown when --run-by-dir [browser_searchbar_openpopup.js] -skip-if = os == "linux" || e10s # Linux has different focus behaviours and e10s seems to have timing issues. +skip-if = os == "linux" || e10s || (os == "win" && os_version == "5.1" && debug) # Linux has different focus behaviours, e10s seems to have timing issues, Windows XP debug fails inexplicably for the test added in bug 1111947. diff --git a/browser/components/search/test/browser_426329.js b/browser/components/search/test/browser_426329.js index f8d6d2219d8..e9c1a7fef3b 100644 --- a/browser/components/search/test/browser_426329.js +++ b/browser/components/search/test/browser_426329.js @@ -71,7 +71,7 @@ function* countEntries(name, value) { var searchBar; var searchButton; -var searchEntries = ["test", "More Text", "Some Text"]; +var searchEntries = ["test"]; function* promiseSetEngine() { let deferred = Promise.defer(); var ss = Services.search; @@ -227,33 +227,6 @@ add_task(function testShiftMiddleClick() { is(event.originalTarget.URL, expectedURL(searchBar.value), "testShiftMiddleClick opened correct search page"); }); -add_task(function testDropText() { - yield prepareTest(); - // drop on the search button so that we don't need to worry about the - // default handlers for textboxes. - let searchButton = document.getAnonymousElementByAttribute(searchBar, "anonid", "searchbar-search-button"); - ChromeUtils.synthesizeDrop(searchButton, searchButton, [[ {type: "text/plain", data: "Some Text" } ]], "copy", window); - let event = yield promiseOnLoad(); - is(event.originalTarget.URL, expectedURL(searchBar.value), "testDropText opened correct search page"); - is(searchBar.value, "Some Text", "drop text/plain on searchbar"); -}); - -add_task(function testDropInternalText() { - yield prepareTest(); - let searchButton = document.getAnonymousElementByAttribute(searchBar, "anonid", "searchbar-search-button"); - ChromeUtils.synthesizeDrop(searchButton, searchButton, [[ {type: "text/x-moz-text-internal", data: "More Text" } ]], "copy", window); - let event = yield promiseOnLoad(); - is(event.originalTarget.URL, expectedURL(searchBar.value), "testDropInternalText opened correct search page"); - is(searchBar.value, "More Text", "drop text/x-moz-text-internal on searchbar"); - - // testDropLink implicitly depended on testDropInternalText, so these two tests - // were merged so that if testDropInternalText failed it wouldn't cause testDropLink - // to fail unexplainably. - yield prepareTest(); - ChromeUtils.synthesizeDrop(searchBar.searchButton, searchBar.searchButton, [[ {type: "text/uri-list", data: "http://www.mozilla.org" } ]], "copy", window); - is(searchBar.value, "More Text", "drop text/uri-list on searchbar shouldn't change anything"); -}); - add_task(function testRightClick() { preTabNo = gBrowser.tabs.length; content.location.href = "about:blank"; diff --git a/browser/components/search/test/browser_searchbar_openpopup.js b/browser/components/search/test/browser_searchbar_openpopup.js index 8287f0a7bb1..4230cae1018 100644 --- a/browser/components/search/test/browser_searchbar_openpopup.js +++ b/browser/components/search/test/browser_searchbar_openpopup.js @@ -1,5 +1,12 @@ // Tests that the suggestion popup appears at the right times in response to -// focus and clicks. +// focus and user events (mouse, keyboard, drop). + +// Instead of loading ChromeUtils.js into the test scope in browser-test.js for all tests, +// we only need ChromeUtils.js for a few files which is why we are using loadSubScript. +var ChromeUtils = {}; +this._scriptLoader = Cc["@mozilla.org/moz/jssubscript-loader;1"]. + getService(Ci.mozIJSSubScriptLoader); +this._scriptLoader.loadSubScript("chrome://mochikit/content/tests/SimpleTest/ChromeUtils.js", ChromeUtils); const searchbar = document.getElementById("searchbar"); const searchIcon = document.getAnonymousElementByAttribute(searchbar, "anonid", "searchbar-search-button"); @@ -369,3 +376,18 @@ add_task(function* dont_consume_clicks() { textbox.value = ""; }); + +// Dropping text to the searchbar should open the popup +add_task(function* drop_opens_popup() { + let promise = promiseEvent(searchPopup, "popupshown"); + ChromeUtils.synthesizeDrop(searchIcon, textbox.inputField, [[ {type: "text/plain", data: "foo" } ]], "move", window); + yield promise; + + isnot(searchPopup.getAttribute("showonlysettings"), "true", "Should show the full popup"); + is(Services.focus.focusedElement, textbox.inputField, "Should have focused the search bar"); + promise = promiseEvent(searchPopup, "popuphidden"); + searchPopup.hidePopup(); + yield promise; + + textbox.value = ""; +});