Bug 1106926 - Insuring that removing a hidden one click search provider also removes it from the browser.search.hiddenOneOffs pref. r=florian
This commit is contained in:
@@ -405,6 +405,9 @@ pref("browser.search.context.loadInBackground", false);
|
|||||||
|
|
||||||
pref("browser.search.showOneOffButtons", true);
|
pref("browser.search.showOneOffButtons", true);
|
||||||
|
|
||||||
|
// comma seperated list of of engines to hide in the search panel.
|
||||||
|
pref("browser.search.hiddenOneOffs", "");
|
||||||
|
|
||||||
// How many times to show the new search highlight
|
// How many times to show the new search highlight
|
||||||
pref("browser.search.highlightCount", 5);
|
pref("browser.search.highlightCount", 5);
|
||||||
|
|
||||||
|
|||||||
@@ -413,6 +413,18 @@ BrowserGlue.prototype = {
|
|||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
case "browser-search-engine-modified":
|
case "browser-search-engine-modified":
|
||||||
|
// Ensure we cleanup the hiddenOneOffs pref when removing
|
||||||
|
// an engine, and that newly added engines are visible.
|
||||||
|
if (data == "engine-added" || data == "engine-removed") {
|
||||||
|
let engineName = subject.QueryInterface(Ci.nsISearchEngine).name;
|
||||||
|
let hiddenPref =
|
||||||
|
Services.prefs.getCharPref("browser.search.hiddenOneOffs");
|
||||||
|
let hiddenEngines = hiddenPref ? hiddenPref.split(",") : [];
|
||||||
|
hiddenEngines = hiddenEngines.filter(x => x !== engineName);
|
||||||
|
Services.prefs.setCharPref("browser.search.hiddenOneOffs",
|
||||||
|
hiddenEngines.join(","));
|
||||||
|
}
|
||||||
|
|
||||||
if (data != "engine-default" && data != "engine-current") {
|
if (data != "engine-default" && data != "engine-current") {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ support-files =
|
|||||||
test.html
|
test.html
|
||||||
testEngine.src
|
testEngine.src
|
||||||
testEngine.xml
|
testEngine.xml
|
||||||
|
testEngine_dupe.xml
|
||||||
testEngine_mozsearch.xml
|
testEngine_mozsearch.xml
|
||||||
|
|
||||||
[browser_405664.js]
|
[browser_405664.js]
|
||||||
@@ -30,6 +31,7 @@ skip-if = e10s # Bug ?????? - some issue with progress listeners [JavaScript Err
|
|||||||
[browser_google_behavior.js]
|
[browser_google_behavior.js]
|
||||||
skip-if = e10s # Bug ?????? - some issue with progress listeners [JavaScript Error: "req.originalURI is null" {file: "chrome://mochitests/content/browser/browser/components/search/test/browser_bing_behavior.js" line: 127}]
|
skip-if = e10s # Bug ?????? - some issue with progress listeners [JavaScript Error: "req.originalURI is null" {file: "chrome://mochitests/content/browser/browser/components/search/test/browser_bing_behavior.js" line: 127}]
|
||||||
[browser_healthreport.js]
|
[browser_healthreport.js]
|
||||||
|
[browser_hiddenOneOffs_cleanup.js]
|
||||||
[browser_private_search_perwindowpb.js]
|
[browser_private_search_perwindowpb.js]
|
||||||
skip-if = e10s # Bug ?????? - Test uses load event and checks event.target.
|
skip-if = e10s # Bug ?????? - Test uses load event and checks event.target.
|
||||||
[browser_yahoo.js]
|
[browser_yahoo.js]
|
||||||
|
|||||||
@@ -0,0 +1,76 @@
|
|||||||
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
const cachedPref = Services.prefs.getCharPref("browser.search.hiddenOneOffs");
|
||||||
|
const testPref = "Foo,FooDupe";
|
||||||
|
|
||||||
|
function promiseNewEngine(basename) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
info("Waiting for engine to be added: " + basename);
|
||||||
|
Services.search.init({
|
||||||
|
onInitComplete: function() {
|
||||||
|
let url = getRootDirectory(gTestPath) + basename;
|
||||||
|
Services.search.addEngine(url, Ci.nsISearchEngine.TYPE_MOZSEARCH, "", false, {
|
||||||
|
onSuccess: function (engine) {
|
||||||
|
info("Search engine added: " + basename);
|
||||||
|
resolve(engine);
|
||||||
|
},
|
||||||
|
onError: function (errCode) {
|
||||||
|
ok(false, "addEngine failed with error code " + errCode);
|
||||||
|
reject();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
add_task(function* test_remove() {
|
||||||
|
yield promiseNewEngine("testEngine_dupe.xml");
|
||||||
|
yield promiseNewEngine("testEngine.xml");
|
||||||
|
Services.prefs.setCharPref("browser.search.hiddenOneOffs", testPref);
|
||||||
|
|
||||||
|
info("Removing testEngine_dupe.xml");
|
||||||
|
Services.search.removeEngine(Services.search.getEngineByName("FooDupe"));
|
||||||
|
|
||||||
|
let hiddenOneOffs =
|
||||||
|
Services.prefs.getCharPref("browser.search.hiddenOneOffs").split(",");
|
||||||
|
|
||||||
|
is(hiddenOneOffs.length, 1,
|
||||||
|
"hiddenOneOffs has the correct engine count post removal.");
|
||||||
|
is(hiddenOneOffs.includes("FooDupe"), false,
|
||||||
|
"Removed Engine is not in hiddenOneOffs after removal");
|
||||||
|
is(hiddenOneOffs.includes("Foo"), true,
|
||||||
|
"Current hidden engine is not affected by removal.");
|
||||||
|
|
||||||
|
info("Removing testEngine.xml");
|
||||||
|
Services.search.removeEngine(Services.search.getEngineByName("Foo"));
|
||||||
|
|
||||||
|
is(Services.prefs.getCharPref("browser.search.hiddenOneOffs"), "",
|
||||||
|
"hiddenOneOffs is empty after removing all hidden engines.");
|
||||||
|
});
|
||||||
|
|
||||||
|
add_task(function* test_add() {
|
||||||
|
yield promiseNewEngine("testEngine.xml");
|
||||||
|
info("setting prefs to " + testPref);
|
||||||
|
Services.prefs.setCharPref("browser.search.hiddenOneOffs", testPref);
|
||||||
|
yield promiseNewEngine("testEngine_dupe.xml");
|
||||||
|
|
||||||
|
let hiddenOneOffs =
|
||||||
|
Services.prefs.getCharPref("browser.search.hiddenOneOffs").split(",");
|
||||||
|
|
||||||
|
is(hiddenOneOffs.length, 1,
|
||||||
|
"hiddenOneOffs has the correct number of hidden engines present post add.");
|
||||||
|
is(hiddenOneOffs.includes("FooDupe"), false,
|
||||||
|
"Added engine is not present in hidden list.");
|
||||||
|
is(hiddenOneOffs.includes("Foo"), true,
|
||||||
|
"Adding an engine does not remove engines from hidden list.");
|
||||||
|
});
|
||||||
|
|
||||||
|
registerCleanupFunction(() => {
|
||||||
|
info("Removing testEngine.xml");
|
||||||
|
Services.search.removeEngine(Services.search.getEngineByName("Foo"));
|
||||||
|
info("Removing testEngine_dupe.xml");
|
||||||
|
Services.search.removeEngine(Services.search.getEngineByName("FooDupe"));
|
||||||
|
Services.prefs.setCharPref("browser.search.hiddenOneOffs", cachedPref);
|
||||||
|
});
|
||||||
12
browser/components/search/test/testEngine_dupe.xml
Normal file
12
browser/components/search/test/testEngine_dupe.xml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/"
|
||||||
|
xmlns:moz="http://www.mozilla.org/2006/browser/search/">
|
||||||
|
<ShortName>FooDupe</ShortName>
|
||||||
|
<Description>Second Engine Search</Description>
|
||||||
|
<InputEncoding>utf-8</InputEncoding>
|
||||||
|
<Image width="16" height="16">data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAABGklEQVQoz2NgGB6AnZ1dUlJSXl4eSDIyMhLW4Ovr%2B%2Fr168uXL69Zs4YoG%2BLi4i5dusTExMTGxsbNzd3f37937976%2BnpmZmagbHR09J49e5YvX66kpATVEBYW9ubNm2nTphkbG7e2tp44cQLIuHfvXm5urpaWFlDKysqqu7v73LlzECMYIiIiHj58mJCQoKKicvXq1bS0NKBgW1vbjh074uPjgeqAXE1NzSdPnvDz84M0AEUvXLgAsW379u1z5swBen3jxo2zZ892cHB4%2BvQp0KlAfwI1cHJyghQFBwfv2rULokFXV%2FfixYu7d%2B8GGqGgoMDKyrpu3br9%2B%2FcDuXl5eVA%2FAEWBfoWHAdAYoNuAYQ0XAeoUERFhGDYAAPoUaT2dfWJuAAAAAElFTkSuQmCC</Image>
|
||||||
|
<Url type="text/html" method="GET" template="http://mochi.test:8888/browser/browser/components/search/test/?search">
|
||||||
|
<Param name="test" value="{searchTerms}"/>
|
||||||
|
</Url>
|
||||||
|
<moz:SearchForm>http://mochi.test:8888/browser/browser/components/search/test/</moz:SearchForm>
|
||||||
|
<moz:Alias>secondalias</moz:Alias>
|
||||||
|
</OpenSearchDescription>
|
||||||
Reference in New Issue
Block a user