From 32579b7ff7c37ac515321f9686a19a223b9a8ce9 Mon Sep 17 00:00:00 2001 From: Brad Werth Date: Fri, 23 Oct 2020 23:20:07 +0000 Subject: [PATCH] Bug 1634556 Part 2: Make web extension popup panels listen to zoom enlarge/reduce events. r=mixedpuppy These events are fired for all parent process documents by the code that handles native mousewheel events. This change adds listeners to those events and handles them similarly to how they are handled for browsers. Differential Revision: https://phabricator.services.mozilla.com/D87113 --- browser/components/extensions/ExtensionPopups.jsm | 30 +++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/browser/components/extensions/ExtensionPopups.jsm b/browser/components/extensions/ExtensionPopups.jsm index eddb3969a349..fdb24248c4f5 100644 --- a/browser/components/extensions/ExtensionPopups.jsm +++ b/browser/components/extensions/ExtensionPopups.jsm @@ -180,6 +180,8 @@ class BasePopup { } browser.removeEventListener("pagetitlechanged", this); browser.removeEventListener("DOMWindowClose", this); + browser.removeEventListener("DoZoomEnlargeBy10", this); + browser.removeEventListener("DoZoomReduceBy10", this); } // Returns the name of the event fired on `viewNode` when the popup is being @@ -263,6 +265,30 @@ class BasePopup { case "DOMWindowClose": this.closePopup(); break; + + case "DoZoomEnlargeBy10": { + const browser = event.target; + let { ZoomManager } = browser.ownerGlobal; + let zoom = this.browser.fullZoom; + zoom += 0.1; + if (zoom > ZoomManager.MAX) { + zoom = ZoomManager.MAX; + } + browser.fullZoom = zoom; + break; + } + + case "DoZoomReduceBy10": { + const browser = event.target; + let { ZoomManager } = browser.ownerGlobal; + let zoom = browser.fullZoom; + zoom -= 0.1; + if (zoom < ZoomManager.MIN) { + zoom = ZoomManager.MIN; + } + browser.fullZoom = zoom; + break; + } } } @@ -319,6 +345,7 @@ class BasePopup { stack.appendChild(browser); viewNode.appendChild(stack); + if (!this.extension.remote) { // FIXME: bug 1494029 - this code used to rely on the browser binding // accessing browser.contentWindow. This is a stopgap to continue doing @@ -335,6 +362,9 @@ class BasePopup { mm.addMessageListener("Extension:BrowserResized", this); browser.addEventListener("pagetitlechanged", this); browser.addEventListener("DOMWindowClose", this); + browser.addEventListener("DoZoomEnlargeBy10", this, true); // eslint-disable-line mozilla/balanced-listeners + browser.addEventListener("DoZoomReduceBy10", this, true); // eslint-disable-line mozilla/balanced-listeners + return browser; }; -- 2.11.4.GIT