diff --git a/browser_patches/firefox-stable/BUILD_NUMBER b/browser_patches/firefox-stable/BUILD_NUMBER index ebdca68403..2d31641cc4 100644 --- a/browser_patches/firefox-stable/BUILD_NUMBER +++ b/browser_patches/firefox-stable/BUILD_NUMBER @@ -1,2 +1,2 @@ -1251 -Changed: lushnikov@chromium.org Wed 12 May 2021 04:13:18 PM PDT +1252 +Changed: joel.einbinder@gmail.com Fri 14 May 2021 08:01:19 AM PDT diff --git a/browser_patches/firefox-stable/juggler/components/juggler.js b/browser_patches/firefox-stable/juggler/components/juggler.js index 7fd1ca3ad6..caa0987930 100644 --- a/browser_patches/firefox-stable/juggler/components/juggler.js +++ b/browser_patches/firefox-stable/juggler/components/juggler.js @@ -45,12 +45,6 @@ CommandLineHandler.prototype = { const loadFrameScript = () => { Services.mm.loadFrameScript(FRAME_SCRIPT, true /* aAllowDelayedLoad */); - if (Cc["@mozilla.org/gfx/info;1"].getService(Ci.nsIGfxInfo).isHeadless) { - const styleSheetService = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Components.interfaces.nsIStyleSheetService); - const ioService = Cc["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService); - const uri = ioService.newURI('chrome://juggler/content/content/hidden-scrollbars.css', null, null); - styleSheetService.loadAndRegisterSheet(uri, styleSheetService.AGENT_SHEET); - } }; // Force create hidden window here, otherwise its creation later closes the web socket! diff --git a/browser_patches/firefox-stable/juggler/content/FrameTree.js b/browser_patches/firefox-stable/juggler/content/FrameTree.js index 0b2cce1998..928ad67def 100644 --- a/browser_patches/firefox-stable/juggler/content/FrameTree.js +++ b/browser_patches/firefox-stable/juggler/content/FrameTree.js @@ -42,6 +42,8 @@ class FrameTree { Ci.nsISupportsWeakReference, ]); + this._addedScrollbarsStylesheetSymbol = Symbol('_addedScrollbarsStylesheetSymbol'); + this._wdm = Cc["@mozilla.org/dom/workers/workerdebuggermanager;1"].createInstance(Ci.nsIWorkerDebuggerManager); this._wdmListener = { QueryInterface: ChromeUtils.generateQI([Ci.nsIWorkerDebuggerManagerListener]), @@ -103,12 +105,24 @@ class FrameTree { } _onDOMWindowCreated(window) { + if (!window[this._addedScrollbarsStylesheetSymbol] && this.scrollbarsHidden) { + const styleSheetService = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Components.interfaces.nsIStyleSheetService); + const ioService = Cc["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService); + const uri = ioService.newURI('chrome://juggler/content/content/hidden-scrollbars.css', null, null); + const sheet = styleSheetService.preloadSheet(uri, styleSheetService.AGENT_SHEET); + window.windowUtils.addSheet(sheet, styleSheetService.AGENT_SHEET); + window[this._addedScrollbarsStylesheetSymbol] = true; + } const frame = this._docShellToFrame.get(window.docShell) || null; if (!frame) return; frame._onGlobalObjectCleared(); } + setScrollbarsHidden(hidden) { + this.scrollbarsHidden = hidden; + } + _onWorkerCreated(workerDebugger) { // Note: we do not interoperate with firefox devtools. if (workerDebugger.isInitialized) diff --git a/browser_patches/firefox-stable/juggler/content/PageAgent.js b/browser_patches/firefox-stable/juggler/content/PageAgent.js index a58f8309a3..427fc0fbc0 100644 --- a/browser_patches/firefox-stable/juggler/content/PageAgent.js +++ b/browser_patches/firefox-stable/juggler/content/PageAgent.js @@ -62,7 +62,6 @@ class PageAgent { const docShell = frameTree.mainFrame().docShell(); this._docShell = docShell; this._initialDPPX = docShell.contentViewer.overrideDPPX; - this._customScrollbars = null; this._dragging = false; // Dispatch frameAttached events for all initial frames diff --git a/browser_patches/firefox-stable/juggler/content/main.js b/browser_patches/firefox-stable/juggler/content/main.js index ec9da55e35..4e7f427a10 100644 --- a/browser_patches/firefox-stable/juggler/content/main.js +++ b/browser_patches/firefox-stable/juggler/content/main.js @@ -62,6 +62,10 @@ const applySetting = { docShell.allowJavascript = !javaScriptDisabled; }, + scrollbarsHidden: (hidden) => { + frameTree.setScrollbarsHidden(hidden); + }, + colorScheme: (colorScheme) => { frameTree.setColorScheme(colorScheme); }, diff --git a/browser_patches/firefox-stable/juggler/protocol/BrowserHandler.js b/browser_patches/firefox-stable/juggler/protocol/BrowserHandler.js index e915dc6deb..a7499b7cee 100644 --- a/browser_patches/firefox-stable/juggler/protocol/BrowserHandler.js +++ b/browser_patches/firefox-stable/juggler/protocol/BrowserHandler.js @@ -233,6 +233,10 @@ class BrowserHandler { await this._targetRegistry.browserContextForId(browserContextId).setDefaultViewport(nullToUndefined(viewport)); } + async ['Browser.setScrollbarsHidden']({browserContextId, hidden}) { + await this._targetRegistry.browserContextForId(browserContextId).applySetting('scrollbarsHidden', nullToUndefined(hidden)); + } + async ['Browser.addScriptToEvaluateOnNewDocument']({browserContextId, script}) { await this._targetRegistry.browserContextForId(browserContextId).addScriptToEvaluateOnNewDocument(script); } diff --git a/browser_patches/firefox-stable/juggler/protocol/Protocol.js b/browser_patches/firefox-stable/juggler/protocol/Protocol.js index 1dcd2f916b..8a70316198 100644 --- a/browser_patches/firefox-stable/juggler/protocol/Protocol.js +++ b/browser_patches/firefox-stable/juggler/protocol/Protocol.js @@ -364,6 +364,12 @@ const Browser = { viewport: t.Nullable(pageTypes.Viewport), } }, + 'setScrollbarsHidden': { + params: { + browserContextId: t.Optional(t.String), + hidden: t.Boolean, + } + }, 'addScriptToEvaluateOnNewDocument': { params: { browserContextId: t.Optional(t.String), diff --git a/browser_patches/firefox/BUILD_NUMBER b/browser_patches/firefox/BUILD_NUMBER index 83f8b0fc0a..2f2121d2c4 100644 --- a/browser_patches/firefox/BUILD_NUMBER +++ b/browser_patches/firefox/BUILD_NUMBER @@ -1,2 +1,2 @@ -1261 -Changed: lushnikov@chromium.org Wed 12 May 2021 04:12:52 PM PDT +1262 +Changed: joel.einbinder@gmail.com Fri 14 May 2021 08:00:09 AM PDT diff --git a/browser_patches/firefox/juggler/components/juggler.js b/browser_patches/firefox/juggler/components/juggler.js index 7fd1ca3ad6..caa0987930 100644 --- a/browser_patches/firefox/juggler/components/juggler.js +++ b/browser_patches/firefox/juggler/components/juggler.js @@ -45,12 +45,6 @@ CommandLineHandler.prototype = { const loadFrameScript = () => { Services.mm.loadFrameScript(FRAME_SCRIPT, true /* aAllowDelayedLoad */); - if (Cc["@mozilla.org/gfx/info;1"].getService(Ci.nsIGfxInfo).isHeadless) { - const styleSheetService = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Components.interfaces.nsIStyleSheetService); - const ioService = Cc["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService); - const uri = ioService.newURI('chrome://juggler/content/content/hidden-scrollbars.css', null, null); - styleSheetService.loadAndRegisterSheet(uri, styleSheetService.AGENT_SHEET); - } }; // Force create hidden window here, otherwise its creation later closes the web socket! diff --git a/browser_patches/firefox/juggler/content/FrameTree.js b/browser_patches/firefox/juggler/content/FrameTree.js index 0b2cce1998..928ad67def 100644 --- a/browser_patches/firefox/juggler/content/FrameTree.js +++ b/browser_patches/firefox/juggler/content/FrameTree.js @@ -42,6 +42,8 @@ class FrameTree { Ci.nsISupportsWeakReference, ]); + this._addedScrollbarsStylesheetSymbol = Symbol('_addedScrollbarsStylesheetSymbol'); + this._wdm = Cc["@mozilla.org/dom/workers/workerdebuggermanager;1"].createInstance(Ci.nsIWorkerDebuggerManager); this._wdmListener = { QueryInterface: ChromeUtils.generateQI([Ci.nsIWorkerDebuggerManagerListener]), @@ -103,12 +105,24 @@ class FrameTree { } _onDOMWindowCreated(window) { + if (!window[this._addedScrollbarsStylesheetSymbol] && this.scrollbarsHidden) { + const styleSheetService = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Components.interfaces.nsIStyleSheetService); + const ioService = Cc["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService); + const uri = ioService.newURI('chrome://juggler/content/content/hidden-scrollbars.css', null, null); + const sheet = styleSheetService.preloadSheet(uri, styleSheetService.AGENT_SHEET); + window.windowUtils.addSheet(sheet, styleSheetService.AGENT_SHEET); + window[this._addedScrollbarsStylesheetSymbol] = true; + } const frame = this._docShellToFrame.get(window.docShell) || null; if (!frame) return; frame._onGlobalObjectCleared(); } + setScrollbarsHidden(hidden) { + this.scrollbarsHidden = hidden; + } + _onWorkerCreated(workerDebugger) { // Note: we do not interoperate with firefox devtools. if (workerDebugger.isInitialized) diff --git a/browser_patches/firefox/juggler/content/PageAgent.js b/browser_patches/firefox/juggler/content/PageAgent.js index a58f8309a3..427fc0fbc0 100644 --- a/browser_patches/firefox/juggler/content/PageAgent.js +++ b/browser_patches/firefox/juggler/content/PageAgent.js @@ -62,7 +62,6 @@ class PageAgent { const docShell = frameTree.mainFrame().docShell(); this._docShell = docShell; this._initialDPPX = docShell.contentViewer.overrideDPPX; - this._customScrollbars = null; this._dragging = false; // Dispatch frameAttached events for all initial frames diff --git a/browser_patches/firefox/juggler/content/main.js b/browser_patches/firefox/juggler/content/main.js index ec9da55e35..4e7f427a10 100644 --- a/browser_patches/firefox/juggler/content/main.js +++ b/browser_patches/firefox/juggler/content/main.js @@ -62,6 +62,10 @@ const applySetting = { docShell.allowJavascript = !javaScriptDisabled; }, + scrollbarsHidden: (hidden) => { + frameTree.setScrollbarsHidden(hidden); + }, + colorScheme: (colorScheme) => { frameTree.setColorScheme(colorScheme); }, diff --git a/browser_patches/firefox/juggler/protocol/BrowserHandler.js b/browser_patches/firefox/juggler/protocol/BrowserHandler.js index e915dc6deb..a7499b7cee 100644 --- a/browser_patches/firefox/juggler/protocol/BrowserHandler.js +++ b/browser_patches/firefox/juggler/protocol/BrowserHandler.js @@ -233,6 +233,10 @@ class BrowserHandler { await this._targetRegistry.browserContextForId(browserContextId).setDefaultViewport(nullToUndefined(viewport)); } + async ['Browser.setScrollbarsHidden']({browserContextId, hidden}) { + await this._targetRegistry.browserContextForId(browserContextId).applySetting('scrollbarsHidden', nullToUndefined(hidden)); + } + async ['Browser.addScriptToEvaluateOnNewDocument']({browserContextId, script}) { await this._targetRegistry.browserContextForId(browserContextId).addScriptToEvaluateOnNewDocument(script); } diff --git a/browser_patches/firefox/juggler/protocol/Protocol.js b/browser_patches/firefox/juggler/protocol/Protocol.js index 1dcd2f916b..8a70316198 100644 --- a/browser_patches/firefox/juggler/protocol/Protocol.js +++ b/browser_patches/firefox/juggler/protocol/Protocol.js @@ -364,6 +364,12 @@ const Browser = { viewport: t.Nullable(pageTypes.Viewport), } }, + 'setScrollbarsHidden': { + params: { + browserContextId: t.Optional(t.String), + hidden: t.Boolean, + } + }, 'addScriptToEvaluateOnNewDocument': { params: { browserContextId: t.Optional(t.String),