зеркало из https://github.com/mozilla/gecko-dev.git
Backed out changeset 2a98180ffc2f (bug 1334642) for Win8 failures in browser_toolbariconcolor_restyles.js
CLOSED TREE
This commit is contained in:
Родитель
c582d2c9af
Коммит
bf4625c652
|
@ -636,8 +636,7 @@ var FullScreen = {
|
|||
}
|
||||
}
|
||||
|
||||
ToolbarIconColor.inferFromText("fullscreen", aEnterFS);
|
||||
|
||||
ToolbarIconColor.inferFromText();
|
||||
|
||||
// For Lion fullscreen, all fullscreen controls are hidden, don't
|
||||
// bother to touch them. If we don't stop here, the following code
|
||||
|
|
|
@ -247,8 +247,7 @@ var TabsInTitlebar = {
|
|||
menubar.style.paddingBottom = "";
|
||||
}
|
||||
|
||||
ToolbarIconColor.inferFromText("tabsintitlebar", TabsInTitlebar.enabled);
|
||||
|
||||
ToolbarIconColor.inferFromText();
|
||||
if (CustomizationHandler.isCustomizing()) {
|
||||
gCustomizeMode.updateLWTStyling();
|
||||
}
|
||||
|
|
|
@ -5408,6 +5408,8 @@ function setToolbarVisibility(toolbar, isVisible, persist = true) {
|
|||
|
||||
PlacesToolbarHelper.init();
|
||||
BookmarkingUI.onToolbarVisibilityChange();
|
||||
if (isVisible)
|
||||
ToolbarIconColor.inferFromText();
|
||||
}
|
||||
|
||||
var TabletModeUpdater = {
|
||||
|
@ -8255,25 +8257,18 @@ var MousePosTracker = {
|
|||
};
|
||||
|
||||
var ToolbarIconColor = {
|
||||
_windowState: {
|
||||
"active": false,
|
||||
"fullscreen": false,
|
||||
"tabsintitlebar": false
|
||||
},
|
||||
init() {
|
||||
this._initialized = true;
|
||||
|
||||
window.addEventListener("activate", this);
|
||||
window.addEventListener("deactivate", this);
|
||||
window.addEventListener("toolbarvisibilitychange", this);
|
||||
Services.obs.addObserver(this, "lightweight-theme-styling-update", false);
|
||||
|
||||
// If the window isn't active now, we assume that it has never been active
|
||||
// before and will soon become active such that inferFromText will be
|
||||
// called from the initial activate event.
|
||||
if (Services.focus.activeWindow == window) {
|
||||
this.inferFromText("activate");
|
||||
}
|
||||
if (Services.focus.activeWindow == window)
|
||||
this.inferFromText();
|
||||
},
|
||||
|
||||
uninit() {
|
||||
|
@ -8281,18 +8276,14 @@ var ToolbarIconColor = {
|
|||
|
||||
window.removeEventListener("activate", this);
|
||||
window.removeEventListener("deactivate", this);
|
||||
window.removeEventListener("toolbarvisibilitychange", this);
|
||||
Services.obs.removeObserver(this, "lightweight-theme-styling-update");
|
||||
},
|
||||
|
||||
handleEvent(event) {
|
||||
switch (event.type) {
|
||||
case "activate": // falls through
|
||||
case "activate":
|
||||
case "deactivate":
|
||||
this.inferFromText(event.type);
|
||||
break;
|
||||
case "toolbarvisibilitychange":
|
||||
this.inferFromText(event.type, event.visible);
|
||||
this.inferFromText();
|
||||
break;
|
||||
}
|
||||
},
|
||||
|
@ -8302,18 +8293,12 @@ var ToolbarIconColor = {
|
|||
case "lightweight-theme-styling-update":
|
||||
// inferFromText needs to run after LightweightThemeConsumer.jsm's
|
||||
// lightweight-theme-styling-update observer.
|
||||
setTimeout(() => {
|
||||
this.inferFromText(aTopic);
|
||||
}, 0);
|
||||
setTimeout(() => { this.inferFromText(); }, 0);
|
||||
break;
|
||||
}
|
||||
},
|
||||
|
||||
// a cache of luminance values for each toolbar
|
||||
// to avoid unnecessary calls to getComputedStyle
|
||||
_toolbarLuminanceCache: new Map(),
|
||||
|
||||
inferFromText(reason, reasonValue) {
|
||||
inferFromText() {
|
||||
if (!this._initialized)
|
||||
return;
|
||||
|
||||
|
@ -8323,46 +8308,17 @@ var ToolbarIconColor = {
|
|||
return rgb.map(x => parseInt(x));
|
||||
}
|
||||
|
||||
switch (reason) {
|
||||
case "activate": // falls through
|
||||
case "deactivate":
|
||||
this._windowState.active = (reason === "activate");
|
||||
break;
|
||||
case "fullscreen":
|
||||
this._windowState.fullscreen = reasonValue;
|
||||
break;
|
||||
case "lightweight-theme-styling-update":
|
||||
// theme change, we'll need to recalculate all color values
|
||||
this._toolbarLuminanceCache.clear();
|
||||
break;
|
||||
case "toolbarvisibilitychange":
|
||||
// toolbar changes dont require reset of the caches color values
|
||||
break;
|
||||
case "tabsintitlebar":
|
||||
this._windowState.tabsintitlebar = reasonValue;
|
||||
break;
|
||||
}
|
||||
|
||||
let toolbarSelector = "#navigator-toolbox > toolbar:not([collapsed=true]):not(#addon-bar)";
|
||||
if (AppConstants.platform == "macosx")
|
||||
toolbarSelector += ":not([type=menubar])";
|
||||
|
||||
// The getComputedStyle calls and setting the brighttext are separated in
|
||||
// two loops to avoid flushing layout and making it dirty repeatedly.
|
||||
let cachedLuminances = this._toolbarLuminanceCache;
|
||||
let luminances = new Map();
|
||||
|
||||
let luminances = new Map;
|
||||
for (let toolbar of document.querySelectorAll(toolbarSelector)) {
|
||||
// toolbars *should* all have ids, but guard anyway to avoid blowing up
|
||||
let cacheKey = toolbar.id && toolbar.id + JSON.stringify(this._windowState);
|
||||
// lookup cached luminance value for this toolbar in this window state
|
||||
let luminance = cacheKey && cachedLuminances.get(cacheKey);
|
||||
if (isNaN(luminance)) {
|
||||
let [r, g, b] = parseRGB(getComputedStyle(toolbar).color);
|
||||
luminance = 0.2125 * r + 0.7154 * g + 0.0721 * b;
|
||||
if (cacheKey) {
|
||||
cachedLuminances.set(cacheKey, luminance);
|
||||
}
|
||||
}
|
||||
let [r, g, b] = parseRGB(getComputedStyle(toolbar).color);
|
||||
let luminance = 0.2125 * r + 0.7154 * g + 0.0721 * b;
|
||||
luminances.set(toolbar, luminance);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +0,0 @@
|
|||
"use strict";
|
||||
|
||||
module.exports = {
|
||||
"extends": [
|
||||
"plugin:mozilla/browser-test"
|
||||
]
|
||||
};
|
|
@ -1,2 +0,0 @@
|
|||
[DEFAULT]
|
||||
[browser_toolbariconcolor_restyles.js]
|
|
@ -1,40 +0,0 @@
|
|||
"use strict";
|
||||
|
||||
/**
|
||||
* Ensure redundant style flushes are not triggered when switching between windows
|
||||
*/
|
||||
add_task(function* test_toolbar_element_restyles_on_activation() {
|
||||
|
||||
let restyles = {
|
||||
win1: {},
|
||||
win2: {}
|
||||
};
|
||||
|
||||
// create a window and snapshot the elementsStyled
|
||||
let win1 = yield BrowserTestUtils.openNewBrowserWindow();
|
||||
let utils1 = SpecialPowers.getDOMWindowUtils(win1);
|
||||
restyles.win1.initial = utils1.elementsRestyled;
|
||||
|
||||
// create a 2nd window and snapshot the elementsStyled
|
||||
let win2 = yield BrowserTestUtils.openNewBrowserWindow();
|
||||
let utils2 = SpecialPowers.getDOMWindowUtils(win2);
|
||||
restyles.win2.initial = utils2.elementsRestyled;
|
||||
|
||||
// switch back to 1st window, and snapshot elementsStyled
|
||||
win1.focus();
|
||||
restyles.win1.activate = utils1.elementsRestyled;
|
||||
restyles.win2.deactivate = utils2.elementsRestyled;
|
||||
|
||||
// switch back to 2nd window, and snapshot elementsStyled
|
||||
win2.focus();
|
||||
restyles.win2.activate = utils2.elementsRestyled;
|
||||
restyles.win1.deactivate = utils1.elementsRestyled;
|
||||
|
||||
is(restyles.win1.activate - restyles.win1.deactivate, 0,
|
||||
"No elements restyled when re-activating/deactivating a window");
|
||||
is(restyles.win2.activate - restyles.win2.deactivate, 0,
|
||||
"No elements restyled when re-activating/deactivating a window");
|
||||
|
||||
yield BrowserTestUtils.closeWindow(win1);
|
||||
yield BrowserTestUtils.closeWindow(win2);
|
||||
});
|
|
@ -35,7 +35,6 @@ BROWSER_CHROME_MANIFESTS += [
|
|||
'content/test/urlbar/browser.ini',
|
||||
'content/test/webextensions/browser.ini',
|
||||
'content/test/webrtc/browser.ini',
|
||||
'content/test/windows/browser.ini',
|
||||
]
|
||||
|
||||
if CONFIG['MOZ_UPDATER']:
|
||||
|
|
Загрузка…
Ссылка в новой задаче