зеркало из https://github.com/mozilla/gecko-dev.git
Backed out changeset 8e0d1f35d3cc (bug 1748923) for causing mochitest failures on browser_ProcessHangNotifications.js. CLOSED TREE
This commit is contained in:
Родитель
29b5fbdd8d
Коммит
29074fb140
|
@ -567,9 +567,6 @@ pref("browser.download.clearHistoryOnDelete", 0);
|
||||||
pref("browser.helperApps.showOpenOptionForPdfJS", true);
|
pref("browser.helperApps.showOpenOptionForPdfJS", true);
|
||||||
pref("browser.helperApps.showOpenOptionForViewableInternally", true);
|
pref("browser.helperApps.showOpenOptionForViewableInternally", true);
|
||||||
|
|
||||||
// search engine removal URL
|
|
||||||
pref("browser.search.searchEngineRemoval", "https://support.mozilla.org/1/firefox/%VERSION%/%OS%/%LOCALE%/search-engine-removal");
|
|
||||||
|
|
||||||
// search engines URL
|
// search engines URL
|
||||||
pref("browser.search.searchEnginesURL", "https://addons.mozilla.org/%LOCALE%/firefox/search-engines/");
|
pref("browser.search.searchEnginesURL", "https://addons.mozilla.org/%LOCALE%/firefox/search-engines/");
|
||||||
|
|
||||||
|
|
|
@ -4278,57 +4278,6 @@ const BrowserSearch = {
|
||||||
var where = newWindowPref == 3 ? "tab" : "window";
|
var where = newWindowPref == 3 ? "tab" : "window";
|
||||||
openTrustedLinkIn(this.searchEnginesURL, where);
|
openTrustedLinkIn(this.searchEnginesURL, where);
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
|
||||||
* Infobar to notify the user's search engine has been removed
|
|
||||||
* and replaced with an application default search engine.
|
|
||||||
*
|
|
||||||
* @param {string} oldEngine
|
|
||||||
* name of the engine to be moved and replaced.
|
|
||||||
* @param {string} newEngine
|
|
||||||
* name of the application default engine to replaced the removed engine.
|
|
||||||
*/
|
|
||||||
removalOfSearchEngineNotificationBox(oldEngine, newEngine) {
|
|
||||||
let messageFragment = document.createDocumentFragment();
|
|
||||||
let message = document.createElement("span");
|
|
||||||
let link = document.createXULElement("label", {
|
|
||||||
is: "text-link",
|
|
||||||
});
|
|
||||||
|
|
||||||
link.href = Services.urlFormatter.formatURLPref(
|
|
||||||
"browser.search.searchEngineRemoval"
|
|
||||||
);
|
|
||||||
link.setAttribute("data-l10n-name", "remove-search-engine-article");
|
|
||||||
document.l10n.setAttributes(message, "remove-search-engine-message", {
|
|
||||||
oldEngine,
|
|
||||||
newEngine,
|
|
||||||
});
|
|
||||||
|
|
||||||
message.appendChild(link);
|
|
||||||
messageFragment.appendChild(message);
|
|
||||||
|
|
||||||
let button = [
|
|
||||||
{
|
|
||||||
"l10n-id": "remove-search-engine-button",
|
|
||||||
primary: true,
|
|
||||||
callback() {
|
|
||||||
const notificationBox = gNotificationBox.getNotificationWithValue(
|
|
||||||
"search-engine-removal"
|
|
||||||
);
|
|
||||||
gNotificationBox.removeNotification(notificationBox);
|
|
||||||
},
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
gNotificationBox.appendNotification(
|
|
||||||
"search-engine-removal",
|
|
||||||
{
|
|
||||||
label: messageFragment,
|
|
||||||
priority: gNotificationBox.PRIORITY_SYSTEM,
|
|
||||||
},
|
|
||||||
button
|
|
||||||
);
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
XPCOMUtils.defineConstant(this, "BrowserSearch", BrowserSearch);
|
XPCOMUtils.defineConstant(this, "BrowserSearch", BrowserSearch);
|
||||||
|
|
|
@ -57,7 +57,6 @@
|
||||||
persist="screenX screenY width height sizemode"
|
persist="screenX screenY width height sizemode"
|
||||||
data-l10n-sync="true">
|
data-l10n-sync="true">
|
||||||
<head>
|
<head>
|
||||||
<link rel="localization" href="browser/search.ftl"/>
|
|
||||||
<link rel="localization" href="branding/brand.ftl"/>
|
<link rel="localization" href="branding/brand.ftl"/>
|
||||||
<link rel="localization" href="browser/branding/sync-brand.ftl"/>
|
<link rel="localization" href="browser/branding/sync-brand.ftl"/>
|
||||||
<link rel="localization" href="browser/branding/brandings.ftl"/>
|
<link rel="localization" href="browser/branding/brandings.ftl"/>
|
||||||
|
|
|
@ -28,11 +28,3 @@ searchbar-input =
|
||||||
|
|
||||||
searchbar-icon =
|
searchbar-icon =
|
||||||
.tooltiptext = Search
|
.tooltiptext = Search
|
||||||
|
|
||||||
## Infobar shown when search engine is removed and replaced.
|
|
||||||
## Variables
|
|
||||||
## $oldEngine (String) - the search engine to be removed.
|
|
||||||
## $newEngine (String) - the search engine to replace the removed search engine.
|
|
||||||
|
|
||||||
remove-search-engine-message = <strong>Your default search engine has been changed.</strong> { -brand-short-name } no longer supports { $oldEngine }. { $newEngine } is now your default search engine. To change to another default search engine, go to settings. <label data-l10n-name="remove-search-engine-article">Learn more</label>
|
|
||||||
remove-search-engine-button = OK
|
|
||||||
|
|
|
@ -31,14 +31,6 @@ function sendEventToContent(browser, data) {
|
||||||
}
|
}
|
||||||
|
|
||||||
add_task(async function setup() {
|
add_task(async function setup() {
|
||||||
// Stub removal of search engine notification box.
|
|
||||||
// This ensures the infobar is not shown in this test.
|
|
||||||
const { sinon } = ChromeUtils.import("resource://testing-common/Sinon.jsm");
|
|
||||||
sinon.stub(
|
|
||||||
await Services.search.wrappedJSObject,
|
|
||||||
"_showRemovalOfSearchEngineNotificationBox"
|
|
||||||
);
|
|
||||||
|
|
||||||
const originalEngine = await Services.search.getDefault();
|
const originalEngine = await Services.search.getDefault();
|
||||||
const originalPrivateEngine = await Services.search.getDefaultPrivate();
|
const originalPrivateEngine = await Services.search.getDefaultPrivate();
|
||||||
|
|
||||||
|
|
|
@ -557,11 +557,6 @@ SearchService.prototype = {
|
||||||
* An object representing the search engine settings.
|
* An object representing the search engine settings.
|
||||||
*/
|
*/
|
||||||
async _loadEngines(settings) {
|
async _loadEngines(settings) {
|
||||||
// Get user's current settings and search engine before we load engines from
|
|
||||||
// config. These values will be compared after engines are loaded.
|
|
||||||
let prevMetaData = { ...settings?.metaData };
|
|
||||||
let prevCurrentEngine = prevMetaData.current;
|
|
||||||
|
|
||||||
logConsole.debug("_loadEngines: start");
|
logConsole.debug("_loadEngines: start");
|
||||||
let { engines, privateDefault } = await this._fetchEngineSelectorEngines();
|
let { engines, privateDefault } = await this._fetchEngineSelectorEngines();
|
||||||
this._setDefaultAndOrdersFromSelector(engines, privateDefault);
|
this._setDefaultAndOrdersFromSelector(engines, privateDefault);
|
||||||
|
@ -590,23 +585,6 @@ SearchService.prototype = {
|
||||||
this._loadEnginesMetadataFromSettings(settings.engines);
|
this._loadEnginesMetadataFromSettings(settings.engines);
|
||||||
|
|
||||||
logConsole.debug("_loadEngines: done");
|
logConsole.debug("_loadEngines: done");
|
||||||
|
|
||||||
// If the defaultEngine has changed and the user's search settings are the
|
|
||||||
// same, notify user their engine has been removed.
|
|
||||||
let newCurrentEngine = this._getEngineDefault(false)?.name;
|
|
||||||
|
|
||||||
if (
|
|
||||||
prevCurrentEngine &&
|
|
||||||
newCurrentEngine !== prevCurrentEngine &&
|
|
||||||
prevMetaData &&
|
|
||||||
settings.metaData &&
|
|
||||||
!this._hasSettingsMetaDataChanged(prevMetaData, settings.metaData)
|
|
||||||
) {
|
|
||||||
this._showRemovalOfSearchEngineNotificationBox(
|
|
||||||
prevCurrentEngine,
|
|
||||||
newCurrentEngine
|
|
||||||
);
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -682,9 +660,8 @@ SearchService.prototype = {
|
||||||
|
|
||||||
async _reloadEngines(settings) {
|
async _reloadEngines(settings) {
|
||||||
// Capture the current engine state, in case we need to notify below.
|
// Capture the current engine state, in case we need to notify below.
|
||||||
let prevCurrentEngine = this._currentEngine;
|
const prevCurrentEngine = this._currentEngine;
|
||||||
let prevPrivateEngine = this._currentPrivateEngine;
|
const prevPrivateEngine = this._currentPrivateEngine;
|
||||||
let prevMetaData = { ...settings?.metaData };
|
|
||||||
|
|
||||||
// Ensure that we don't set the useSavedOrder flag whilst we're doing this.
|
// Ensure that we don't set the useSavedOrder flag whilst we're doing this.
|
||||||
// This isn't a user action, so we shouldn't be switching it.
|
// This isn't a user action, so we shouldn't be switching it.
|
||||||
|
@ -797,21 +774,6 @@ SearchService.prototype = {
|
||||||
// Now set the sort out the default engines and notify as appropriate.
|
// Now set the sort out the default engines and notify as appropriate.
|
||||||
this._currentEngine = null;
|
this._currentEngine = null;
|
||||||
this._currentPrivateEngine = null;
|
this._currentPrivateEngine = null;
|
||||||
// If the user's default is one of the private engines that is being removed,
|
|
||||||
// reset the stored setting, so that we correctly detect the change in
|
|
||||||
// in default.
|
|
||||||
if (
|
|
||||||
prevCurrentEngine &&
|
|
||||||
enginesToRemove.some(e => e.name == prevCurrentEngine.name)
|
|
||||||
) {
|
|
||||||
this._settings.setAttribute("current", "");
|
|
||||||
}
|
|
||||||
if (
|
|
||||||
prevPrivateEngine &&
|
|
||||||
enginesToRemove.some(e => e.name == prevPrivateEngine.name)
|
|
||||||
) {
|
|
||||||
this._settings.setAttribute("private", "");
|
|
||||||
}
|
|
||||||
|
|
||||||
this._setDefaultAndOrdersFromSelector(
|
this._setDefaultAndOrdersFromSelector(
|
||||||
originalConfigEngines,
|
originalConfigEngines,
|
||||||
|
@ -833,19 +795,7 @@ SearchService.prototype = {
|
||||||
SearchUtils.MODIFIED_TYPE.DEFAULT_PRIVATE
|
SearchUtils.MODIFIED_TYPE.DEFAULT_PRIVATE
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (
|
|
||||||
prevMetaData &&
|
|
||||||
settings.metaData &&
|
|
||||||
!this._hasSettingsMetaDataChanged(prevMetaData, settings.metaData)
|
|
||||||
) {
|
|
||||||
this._showRemovalOfSearchEngineNotificationBox(
|
|
||||||
prevCurrentEngine.name,
|
|
||||||
this.defaultEngine.name
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (
|
if (
|
||||||
this._separatePrivateDefault &&
|
this._separatePrivateDefault &&
|
||||||
prevPrivateEngine &&
|
prevPrivateEngine &&
|
||||||
|
@ -2193,7 +2143,11 @@ SearchService.prototype = {
|
||||||
// to pick a new current engine. As soon as we return it, this new
|
// to pick a new current engine. As soon as we return it, this new
|
||||||
// current engine will become user-visible, so we should persist it.
|
// current engine will become user-visible, so we should persist it.
|
||||||
// by calling the setter.
|
// by calling the setter.
|
||||||
this._setEngineDefault(privateMode, newDefault);
|
if (privateMode) {
|
||||||
|
this.defaultPrivateEngine = newDefault;
|
||||||
|
} else {
|
||||||
|
this.defaultEngine = newDefault;
|
||||||
|
}
|
||||||
|
|
||||||
return this[currentEngineProp];
|
return this[currentEngineProp];
|
||||||
},
|
},
|
||||||
|
@ -2209,6 +2163,7 @@ SearchService.prototype = {
|
||||||
* The appropriate search engine, or null if one could not be determined.
|
* The appropriate search engine, or null if one could not be determined.
|
||||||
*/
|
*/
|
||||||
_getEngineDefault(privateMode) {
|
_getEngineDefault(privateMode) {
|
||||||
|
this._ensureInitialized();
|
||||||
const currentEngineProp = privateMode
|
const currentEngineProp = privateMode
|
||||||
? "_currentPrivateEngine"
|
? "_currentPrivateEngine"
|
||||||
: "_currentEngine";
|
: "_currentEngine";
|
||||||
|
@ -2220,7 +2175,7 @@ SearchService.prototype = {
|
||||||
// No default loaded, so find it from settings.
|
// No default loaded, so find it from settings.
|
||||||
const attributeName = privateMode ? "private" : "current";
|
const attributeName = privateMode ? "private" : "current";
|
||||||
let name = this._settings.getAttribute(attributeName);
|
let name = this._settings.getAttribute(attributeName);
|
||||||
let engine = this._engines.get(name) || null;
|
let engine = this.getEngineByName(name);
|
||||||
if (
|
if (
|
||||||
engine &&
|
engine &&
|
||||||
(engine.isAppProvided ||
|
(engine.isAppProvided ||
|
||||||
|
@ -2255,6 +2210,7 @@ SearchService.prototype = {
|
||||||
* The search engine to select
|
* The search engine to select
|
||||||
*/
|
*/
|
||||||
_setEngineDefault(privateMode, newEngine) {
|
_setEngineDefault(privateMode, newEngine) {
|
||||||
|
this._ensureInitialized();
|
||||||
// Sometimes we get wrapped nsISearchEngine objects (external XPCOM callers),
|
// Sometimes we get wrapped nsISearchEngine objects (external XPCOM callers),
|
||||||
// and sometimes we get raw Engine JS objects (callers in this file), so
|
// and sometimes we get raw Engine JS objects (callers in this file), so
|
||||||
// handle both.
|
// handle both.
|
||||||
|
@ -2268,7 +2224,7 @@ SearchService.prototype = {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
const newCurrentEngine = this._engines.get(newEngine.name);
|
const newCurrentEngine = this.getEngineByName(newEngine.name);
|
||||||
if (!newCurrentEngine) {
|
if (!newCurrentEngine) {
|
||||||
throw Components.Exception(
|
throw Components.Exception(
|
||||||
"Can't find engine in store!",
|
"Can't find engine in store!",
|
||||||
|
@ -2339,22 +2295,18 @@ SearchService.prototype = {
|
||||||
},
|
},
|
||||||
|
|
||||||
get defaultEngine() {
|
get defaultEngine() {
|
||||||
this._ensureInitialized();
|
|
||||||
return this._getEngineDefault(false);
|
return this._getEngineDefault(false);
|
||||||
},
|
},
|
||||||
|
|
||||||
set defaultEngine(newEngine) {
|
set defaultEngine(newEngine) {
|
||||||
this._ensureInitialized();
|
|
||||||
this._setEngineDefault(false, newEngine);
|
this._setEngineDefault(false, newEngine);
|
||||||
},
|
},
|
||||||
|
|
||||||
get defaultPrivateEngine() {
|
get defaultPrivateEngine() {
|
||||||
this._ensureInitialized();
|
|
||||||
return this._getEngineDefault(this._separatePrivateDefault);
|
return this._getEngineDefault(this._separatePrivateDefault);
|
||||||
},
|
},
|
||||||
|
|
||||||
set defaultPrivateEngine(newEngine) {
|
set defaultPrivateEngine(newEngine) {
|
||||||
this._ensureInitialized();
|
|
||||||
if (!this._separatePrivateDefaultPrefValue) {
|
if (!this._separatePrivateDefaultPrefValue) {
|
||||||
Services.prefs.setBoolPref(
|
Services.prefs.setBoolPref(
|
||||||
SearchUtils.BROWSER_SEARCH_PREF + "separatePrivateDefault",
|
SearchUtils.BROWSER_SEARCH_PREF + "separatePrivateDefault",
|
||||||
|
@ -2872,48 +2824,6 @@ SearchService.prototype = {
|
||||||
"nsIObserver",
|
"nsIObserver",
|
||||||
"nsITimerCallback",
|
"nsITimerCallback",
|
||||||
]),
|
]),
|
||||||
|
|
||||||
/**
|
|
||||||
* @param {object} prevMetaDataObj
|
|
||||||
* settings metaData Object
|
|
||||||
* @param {object} currentMetaDataObj
|
|
||||||
* settings metaData Object
|
|
||||||
* @returns {boolean}
|
|
||||||
* Returns true if the metaData objects have different properties values.
|
|
||||||
*/
|
|
||||||
_hasSettingsMetaDataChanged(prevMetaDataObj, currentMetaDataObj) {
|
|
||||||
let metaDataProperties = [
|
|
||||||
"locale",
|
|
||||||
"region",
|
|
||||||
"channel",
|
|
||||||
"experiment",
|
|
||||||
"distroID",
|
|
||||||
];
|
|
||||||
|
|
||||||
return metaDataProperties.some(
|
|
||||||
p => prevMetaDataObj?.[p] != currentMetaDataObj?.[p]
|
|
||||||
);
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Shows an infobar to notify the user their default search engine has been
|
|
||||||
* removed and replaced by a new default search engine.
|
|
||||||
*
|
|
||||||
* @param {string} prevCurrentEngine
|
|
||||||
* The engine that was previously the default engine and is to be replaced.
|
|
||||||
* @param {string} newCurrentEngine
|
|
||||||
* The engine that will be the new the default engine.
|
|
||||||
*/
|
|
||||||
_showRemovalOfSearchEngineNotificationBox(
|
|
||||||
prevCurrentEngine,
|
|
||||||
newCurrentEngine
|
|
||||||
) {
|
|
||||||
let win = Services.wm.getMostRecentBrowserWindow();
|
|
||||||
win.BrowserSearch.removalOfSearchEngineNotificationBox(
|
|
||||||
prevCurrentEngine,
|
|
||||||
newCurrentEngine
|
|
||||||
);
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
var engineUpdateService = {
|
var engineUpdateService = {
|
||||||
|
|
|
@ -4,13 +4,6 @@
|
||||||
const kDefaultEngineName = "engine1";
|
const kDefaultEngineName = "engine1";
|
||||||
|
|
||||||
add_task(async function setup() {
|
add_task(async function setup() {
|
||||||
// Stub removal of search engine notification box.
|
|
||||||
// This ensures that BrowserSearch.win is not accessed in this test.
|
|
||||||
sinon.stub(
|
|
||||||
await Services.search.wrappedJSObject,
|
|
||||||
"_showRemovalOfSearchEngineNotificationBox"
|
|
||||||
);
|
|
||||||
|
|
||||||
useHttpServer();
|
useHttpServer();
|
||||||
await AddonTestUtils.promiseStartupManager();
|
await AddonTestUtils.promiseStartupManager();
|
||||||
await SearchTestUtils.useTestEngines("data1");
|
await SearchTestUtils.useTestEngines("data1");
|
||||||
|
|
Загрузка…
Ссылка в новой задаче