Backed out changeset 8e0d1f35d3cc (bug 1748923) for causing mochitest failures on browser_ProcessHangNotifications.js. CLOSED TREE

This commit is contained in:
Iulian Moraru 2022-02-03 07:33:00 +02:00
Родитель 29b5fbdd8d
Коммит 29074fb140
7 изменённых файлов: 11 добавлений и 179 удалений

Просмотреть файл

@ -567,9 +567,6 @@ pref("browser.download.clearHistoryOnDelete", 0);
pref("browser.helperApps.showOpenOptionForPdfJS", 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
pref("browser.search.searchEnginesURL", "https://addons.mozilla.org/%LOCALE%/firefox/search-engines/");

Просмотреть файл

@ -4278,57 +4278,6 @@ const BrowserSearch = {
var where = newWindowPref == 3 ? "tab" : "window";
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);

Просмотреть файл

@ -57,7 +57,6 @@
persist="screenX screenY width height sizemode"
data-l10n-sync="true">
<head>
<link rel="localization" href="browser/search.ftl"/>
<link rel="localization" href="branding/brand.ftl"/>
<link rel="localization" href="browser/branding/sync-brand.ftl"/>
<link rel="localization" href="browser/branding/brandings.ftl"/>

Просмотреть файл

@ -28,11 +28,3 @@ searchbar-input =
searchbar-icon =
.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() {
// 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 originalPrivateEngine = await Services.search.getDefaultPrivate();

Просмотреть файл

@ -557,11 +557,6 @@ SearchService.prototype = {
* An object representing the search engine 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");
let { engines, privateDefault } = await this._fetchEngineSelectorEngines();
this._setDefaultAndOrdersFromSelector(engines, privateDefault);
@ -590,23 +585,6 @@ SearchService.prototype = {
this._loadEnginesMetadataFromSettings(settings.engines);
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) {
// Capture the current engine state, in case we need to notify below.
let prevCurrentEngine = this._currentEngine;
let prevPrivateEngine = this._currentPrivateEngine;
let prevMetaData = { ...settings?.metaData };
const prevCurrentEngine = this._currentEngine;
const prevPrivateEngine = this._currentPrivateEngine;
// 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.
@ -797,21 +774,6 @@ SearchService.prototype = {
// Now set the sort out the default engines and notify as appropriate.
this._currentEngine = 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(
originalConfigEngines,
@ -833,19 +795,7 @@ SearchService.prototype = {
SearchUtils.MODIFIED_TYPE.DEFAULT_PRIVATE
);
}
if (
prevMetaData &&
settings.metaData &&
!this._hasSettingsMetaDataChanged(prevMetaData, settings.metaData)
) {
this._showRemovalOfSearchEngineNotificationBox(
prevCurrentEngine.name,
this.defaultEngine.name
);
}
}
if (
this._separatePrivateDefault &&
prevPrivateEngine &&
@ -2193,7 +2143,11 @@ SearchService.prototype = {
// 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.
// by calling the setter.
this._setEngineDefault(privateMode, newDefault);
if (privateMode) {
this.defaultPrivateEngine = newDefault;
} else {
this.defaultEngine = newDefault;
}
return this[currentEngineProp];
},
@ -2209,6 +2163,7 @@ SearchService.prototype = {
* The appropriate search engine, or null if one could not be determined.
*/
_getEngineDefault(privateMode) {
this._ensureInitialized();
const currentEngineProp = privateMode
? "_currentPrivateEngine"
: "_currentEngine";
@ -2220,7 +2175,7 @@ SearchService.prototype = {
// No default loaded, so find it from settings.
const attributeName = privateMode ? "private" : "current";
let name = this._settings.getAttribute(attributeName);
let engine = this._engines.get(name) || null;
let engine = this.getEngineByName(name);
if (
engine &&
(engine.isAppProvided ||
@ -2255,6 +2210,7 @@ SearchService.prototype = {
* The search engine to select
*/
_setEngineDefault(privateMode, newEngine) {
this._ensureInitialized();
// Sometimes we get wrapped nsISearchEngine objects (external XPCOM callers),
// and sometimes we get raw Engine JS objects (callers in this file), so
// handle both.
@ -2268,7 +2224,7 @@ SearchService.prototype = {
);
}
const newCurrentEngine = this._engines.get(newEngine.name);
const newCurrentEngine = this.getEngineByName(newEngine.name);
if (!newCurrentEngine) {
throw Components.Exception(
"Can't find engine in store!",
@ -2339,22 +2295,18 @@ SearchService.prototype = {
},
get defaultEngine() {
this._ensureInitialized();
return this._getEngineDefault(false);
},
set defaultEngine(newEngine) {
this._ensureInitialized();
this._setEngineDefault(false, newEngine);
},
get defaultPrivateEngine() {
this._ensureInitialized();
return this._getEngineDefault(this._separatePrivateDefault);
},
set defaultPrivateEngine(newEngine) {
this._ensureInitialized();
if (!this._separatePrivateDefaultPrefValue) {
Services.prefs.setBoolPref(
SearchUtils.BROWSER_SEARCH_PREF + "separatePrivateDefault",
@ -2872,48 +2824,6 @@ SearchService.prototype = {
"nsIObserver",
"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 = {

Просмотреть файл

@ -4,13 +4,6 @@
const kDefaultEngineName = "engine1";
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();
await AddonTestUtils.promiseStartupManager();
await SearchTestUtils.useTestEngines("data1");