зеркало из https://github.com/mozilla/gecko-dev.git
Backed out changeset 56b09fa0748c (bug 1345375) on request from dao
This commit is contained in:
Родитель
3dc1381af2
Коммит
10f32bd039
|
@ -726,8 +726,9 @@ const CustomizableWidgets = [
|
|||
}
|
||||
|
||||
// Register ourselves with the service so we know when the zoom prefs change.
|
||||
Services.obs.addObserver(updateZoomResetButton, "browser-fullZoom:zoomChange", false);
|
||||
Services.obs.addObserver(updateZoomResetButton, "browser-fullZoom:zoomReset", false);
|
||||
Services.obs.addObserver(updateZoomResetButton, "browser-fullZoom:location-change", false);
|
||||
window.addEventListener("FullZoomChange", updateZoomResetButton);
|
||||
|
||||
if (inPanel) {
|
||||
let panel = aDocument.getElementById(kPanelId);
|
||||
|
@ -804,8 +805,9 @@ const CustomizableWidgets = [
|
|||
return;
|
||||
|
||||
CustomizableUI.removeListener(listener);
|
||||
Services.obs.removeObserver(updateZoomResetButton, "browser-fullZoom:zoomChange");
|
||||
Services.obs.removeObserver(updateZoomResetButton, "browser-fullZoom:zoomReset");
|
||||
Services.obs.removeObserver(updateZoomResetButton, "browser-fullZoom:location-change");
|
||||
window.removeEventListener("FullZoomChange", updateZoomResetButton);
|
||||
let panel = aDoc.getElementById(kPanelId);
|
||||
panel.removeEventListener("popupshowing", updateZoomResetButton);
|
||||
let container = aDoc.defaultView.gBrowser.tabContainer;
|
||||
|
|
|
@ -14,13 +14,11 @@ var URLBarZoom = {
|
|||
aWindow.addEventListener("EndSwapDocShells", onEndSwapDocShells, true);
|
||||
aWindow.addEventListener("unload", () => {
|
||||
aWindow.removeEventListener("EndSwapDocShells", onEndSwapDocShells, true);
|
||||
aWindow.removeEventListener("FullZoomChange", onFullZoomChange);
|
||||
}, {once: true});
|
||||
aWindow.addEventListener("FullZoomChange", onFullZoomChange);
|
||||
},
|
||||
}
|
||||
|
||||
function fullZoomLocationChangeObserver(aSubject, aTopic) {
|
||||
function fullZoomObserver(aSubject, aTopic) {
|
||||
// If the tab was the last one in its window and has been dragged to another
|
||||
// window, the original browser's window will be unavailable here. Since that
|
||||
// window is closing, we can just ignore this notification.
|
||||
|
@ -28,25 +26,25 @@ function fullZoomLocationChangeObserver(aSubject, aTopic) {
|
|||
return;
|
||||
}
|
||||
|
||||
updateZoomButton(aSubject, false);
|
||||
let animate = (aTopic != "browser-fullZoom:location-change");
|
||||
updateZoomButton(aSubject, animate);
|
||||
}
|
||||
|
||||
function onEndSwapDocShells(event) {
|
||||
updateZoomButton(event.originalTarget);
|
||||
}
|
||||
|
||||
function onFullZoomChange(event) {
|
||||
updateZoomButton(event.originalTarget, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the zoom button in the location bar.
|
||||
*
|
||||
* @param {object} aBrowser The browser that the zoomed content resides in.
|
||||
* @param {boolean} aAnimate Should be True for all cases unless the zoom
|
||||
* change is related to tab switching. Optional
|
||||
* @param {number} aValue The value that should be used for the zoom control.
|
||||
* If not provided then the value will be read from the window. Useful
|
||||
* if the data on the window may be stale.
|
||||
*/
|
||||
function updateZoomButton(aBrowser, aAnimate = false) {
|
||||
function updateZoomButton(aBrowser, aAnimate = false, aValue = undefined) {
|
||||
let win = aBrowser.ownerGlobal;
|
||||
if (aBrowser != win.gBrowser.selectedBrowser) {
|
||||
return;
|
||||
|
@ -62,9 +60,12 @@ function updateZoomButton(aBrowser, aAnimate = false) {
|
|||
return;
|
||||
}
|
||||
|
||||
let zoomFactor = Math.round(win.ZoomManager.zoom * 100);
|
||||
let zoomFactor = Math.round((aValue || win.ZoomManager.zoom) * 100);
|
||||
if (zoomFactor != 100) {
|
||||
zoomResetButton.hidden = false;
|
||||
// Check if zoom button is visible and update label if it is
|
||||
if (zoomResetButton.hidden) {
|
||||
zoomResetButton.hidden = false;
|
||||
}
|
||||
if (aAnimate) {
|
||||
zoomResetButton.setAttribute("animate", "true");
|
||||
} else {
|
||||
|
@ -78,4 +79,9 @@ function updateZoomButton(aBrowser, aAnimate = false) {
|
|||
}
|
||||
}
|
||||
|
||||
Services.obs.addObserver(fullZoomLocationChangeObserver, "browser-fullZoom:location-change", false);
|
||||
Services.obs.addObserver(fullZoomObserver, "browser-fullZoom:zoomChange", false);
|
||||
Services.obs.addObserver(fullZoomObserver, "browser-fullZoom:zoomReset", false);
|
||||
Services.obs.addObserver(fullZoomObserver, "browser-fullZoom:location-change", false);
|
||||
Services.mm.addMessageListener("SyntheticDocument:ZoomChange", function(aMessage) {
|
||||
updateZoomButton(aMessage.target, true, aMessage.data.value);
|
||||
});
|
||||
|
|
|
@ -24,13 +24,14 @@ add_task(function* () {
|
|||
let buttonZoomLevel = parseInt(zoomResetButton.getAttribute("label"), 10);
|
||||
is(buttonZoomLevel, expectedZoomLevel, ("Button label updated successfully to " + Math.floor(ZoomManager.zoom * 100) + "%"));
|
||||
|
||||
let zoomResetPromise = BrowserTestUtils.waitForEvent(window, "FullZoomChange");
|
||||
let zoomResetPromise = promiseObserverNotification("browser-fullZoom:zoomReset");
|
||||
zoomResetButton.click();
|
||||
yield zoomResetPromise;
|
||||
pageZoomLevel = Math.floor(ZoomManager.zoom * 100);
|
||||
expectedZoomLevel = 100;
|
||||
is(pageZoomLevel, expectedZoomLevel, "Clicking zoom button successfully resets browser zoom to 100%");
|
||||
is(zoomResetButton.hidden, true, "Zoom reset button returns to being hidden");
|
||||
|
||||
});
|
||||
|
||||
add_task(function* () {
|
||||
|
@ -38,7 +39,7 @@ add_task(function* () {
|
|||
CustomizableUI.addWidgetToArea("zoom-controls", CustomizableUI.AREA_NAVBAR);
|
||||
let zoomCustomizableWidget = document.getElementById("zoom-reset-button");
|
||||
let zoomResetButton = document.getElementById("urlbar-zoom-button");
|
||||
let zoomChangePromise = BrowserTestUtils.waitForEvent(window, "FullZoomChange");
|
||||
let zoomChangePromise = promiseObserverNotification("browser-fullZoom:zoomChange");
|
||||
FullZoom.enlarge();
|
||||
yield zoomChangePromise;
|
||||
is(zoomResetButton.hidden, true, "URL zoom button remains hidden despite zoom increase");
|
||||
|
@ -53,4 +54,20 @@ add_task(function* asyncCleanup() {
|
|||
CustomizableUI.removeWidgetFromArea("zoom-controls", CustomizableUI.AREA_NAVBAR);
|
||||
ok(!document.getElementById("zoom-controls"), "Customizable zoom widget removed from toolbar");
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
function promiseObserverNotification(aObserver) {
|
||||
let deferred = Promise.defer();
|
||||
function notificationCallback(e) {
|
||||
Services.obs.removeObserver(notificationCallback, aObserver);
|
||||
clearTimeout(timeoutId);
|
||||
deferred.resolve();
|
||||
}
|
||||
let timeoutId = setTimeout(() => {
|
||||
Services.obs.removeObserver(notificationCallback, aObserver);
|
||||
deferred.reject("Notification '" + aObserver + "' did not happen within 20 seconds.");
|
||||
}, kTimeoutInMS);
|
||||
Services.obs.addObserver(notificationCallback, aObserver, false);
|
||||
return deferred.promise;
|
||||
}
|
||||
|
|
|
@ -1777,6 +1777,20 @@ let DateTimePickerListener = {
|
|||
|
||||
DateTimePickerListener.init();
|
||||
|
||||
let URLBarZoom = {
|
||||
init() {
|
||||
addEventListener("FullZoomChange", e => {
|
||||
if (!e.target.mozSyntheticDocument) {
|
||||
return;
|
||||
}
|
||||
sendSyncMessage("SyntheticDocument:ZoomChange",
|
||||
{"value": docShell.contentViewer.fullZoom});
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
URLBarZoom.init();
|
||||
|
||||
addEventListener("mozshowdropdown", event => {
|
||||
if (!event.isTrusted)
|
||||
return;
|
||||
|
|
|
@ -539,14 +539,7 @@
|
|||
return this.markupDocumentViewer.fullZoom;
|
||||
]]></getter>
|
||||
<setter><![CDATA[
|
||||
let changed = val.toFixed(2) != this.markupDocumentViewer.fullZoom.toFixed(2);
|
||||
|
||||
this.markupDocumentViewer.fullZoom = val;
|
||||
|
||||
if (changed) {
|
||||
let event = new Event("FullZoomChange", {bubbles: true});
|
||||
this.dispatchEvent(event);
|
||||
}
|
||||
]]></setter>
|
||||
</property>
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче