diff --git a/browser_patches/firefox-beta/BUILD_NUMBER b/browser_patches/firefox-beta/BUILD_NUMBER index 3acd579288..d1bec215b9 100644 --- a/browser_patches/firefox-beta/BUILD_NUMBER +++ b/browser_patches/firefox-beta/BUILD_NUMBER @@ -1,2 +1,2 @@ -1333 -Changed: dgozman@gmail.com Thu Jun 30 14:19:05 PDT 2022 +1334 +Changed: lushnikov@chromium.org Wed Jul 6 01:35:56 MSK 2022 diff --git a/browser_patches/firefox-beta/UPSTREAM_CONFIG.sh b/browser_patches/firefox-beta/UPSTREAM_CONFIG.sh index dd616f0ba0..750e3b3fcb 100644 --- a/browser_patches/firefox-beta/UPSTREAM_CONFIG.sh +++ b/browser_patches/firefox-beta/UPSTREAM_CONFIG.sh @@ -1,3 +1,3 @@ REMOTE_URL="https://github.com/mozilla/gecko-dev" BASE_BRANCH="beta" -BASE_REVISION="4eec8e1d31fe3650e87754cb2d12bf4336cc901a" +BASE_REVISION="30c461e82b48bd2e4f69c9cba7f6a0e86dbf7040" diff --git a/browser_patches/firefox-beta/build.sh b/browser_patches/firefox-beta/build.sh index 8c90d0b5ca..68baa179c8 100755 --- a/browser_patches/firefox-beta/build.sh +++ b/browser_patches/firefox-beta/build.sh @@ -3,7 +3,7 @@ set -e set +x RUST_VERSION="1.59.0" -CBINDGEN_VERSION="0.23.0" +CBINDGEN_VERSION="0.24.3" trap "cd $(pwd -P)" EXIT diff --git a/browser_patches/firefox-beta/install-preferences.js b/browser_patches/firefox-beta/install-preferences.js index a1d850e14e..f82f791d54 100644 --- a/browser_patches/firefox-beta/install-preferences.js +++ b/browser_patches/firefox-beta/install-preferences.js @@ -31,7 +31,7 @@ async function installFirefoxPreferences(distpath) { if (os.platform() === 'linux') executablePath = path.join(distpath, 'firefox'); else if (os.platform() === 'darwin') - executablePath = path.join(distpath, 'Nightly.app', 'Contents', 'MacOS', 'firefox'); + executablePath = path.join(distpath, (process.env.FF_DEBUG_BUILD ? 'NightlyDebug.app' : 'Nightly.app'), 'Contents', 'MacOS', 'firefox'); else if (os.platform() === 'win32') executablePath = path.join(distpath, 'firefox.exe'); diff --git a/browser_patches/firefox-beta/juggler/NetworkObserver.js b/browser_patches/firefox-beta/juggler/NetworkObserver.js index 7f59f311e1..eabbf6cc1b 100644 --- a/browser_patches/firefox-beta/juggler/NetworkObserver.js +++ b/browser_patches/firefox-beta/juggler/NetworkObserver.js @@ -8,6 +8,7 @@ const {EventEmitter} = ChromeUtils.import('resource://gre/modules/EventEmitter.j const {Helper} = ChromeUtils.import('chrome://juggler/content/Helper.js'); const {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm"); const {NetUtil} = ChromeUtils.import('resource://gre/modules/NetUtil.jsm'); +const { ChannelEventSinkFactory } = ChromeUtils.import("chrome://remote/content/cdp/observers/ChannelEventSink.jsm"); const Cc = Components.classes; @@ -27,14 +28,6 @@ const StorageStream = CC('@mozilla.org/storagestream;1', 'nsIStorageStream', 'in // Cap response storage with 100Mb per tracked tab. const MAX_RESPONSE_STORAGE_SIZE = 100 * 1024 * 1024; -/** - * This is a nsIChannelEventSink implementation that monitors channel redirects. - */ -const SINK_CLASS_DESCRIPTION = "Juggler NetworkMonitor Channel Event Sink"; -const SINK_CLASS_ID = Components.ID("{c2b4c83e-607a-405a-beab-0ef5dbfb7617}"); -const SINK_CONTRACT_ID = "@mozilla.org/network/monitor/channeleventsink;1"; -const SINK_CATEGORY_NAME = "net-channel-event-sinks"; - const pageNetworkSymbol = Symbol('PageNetwork'); class PageNetwork { @@ -620,21 +613,10 @@ class NetworkObserver { }; protocolProxyService.registerChannelFilter(this._channelProxyFilter, 0 /* position */); - this._channelSink = { - QueryInterface: ChromeUtils.generateQI([Ci.nsIChannelEventSink]), - asyncOnChannelRedirect: (oldChannel, newChannel, flags, callback) => { - this._onRedirect(oldChannel, newChannel, flags); - callback.onRedirectVerifyCallback(Cr.NS_OK); - }, - }; - this._channelSinkFactory = { - QueryInterface: ChromeUtils.generateQI([Ci.nsIFactory]), - createInstance: (aOuter, aIID) => this._channelSink.QueryInterface(aIID), - }; // Register self as ChannelEventSink to track redirects. - const registrar = Cm.QueryInterface(Ci.nsIComponentRegistrar); - registrar.registerFactory(SINK_CLASS_ID, SINK_CLASS_DESCRIPTION, SINK_CONTRACT_ID, this._channelSinkFactory); - Services.catMan.addCategoryEntry(SINK_CATEGORY_NAME, SINK_CONTRACT_ID, SINK_CONTRACT_ID, false, true); + ChannelEventSinkFactory.getService().registerCollector({ + _onChannelRedirect: this._onRedirect.bind(this), + }); this._eventListeners = [ helper.addObserver(this._onRequest.bind(this), 'http-on-modify-request'), @@ -716,9 +698,7 @@ class NetworkObserver { dispose() { this._activityDistributor.removeObserver(this); - const registrar = Cm.QueryInterface(Ci.nsIComponentRegistrar); - registrar.unregisterFactory(SINK_CLASS_ID, this._channelSinkFactory); - Services.catMan.deleteCategoryEntry(SINK_CATEGORY_NAME, SINK_CONTRACT_ID, false); + ChannelEventSinkFactory.unregister(); helper.removeListeners(this._eventListeners); } } diff --git a/browser_patches/firefox-beta/juggler/content/PageAgent.js b/browser_patches/firefox-beta/juggler/content/PageAgent.js index ac4b37e933..1fd9c0b05a 100644 --- a/browser_patches/firefox-beta/juggler/content/PageAgent.js +++ b/browser_patches/firefox-beta/juggler/content/PageAgent.js @@ -101,7 +101,6 @@ class PageAgent { helper.addObserver(this._filePickerShown.bind(this), 'juggler-file-picker-shown'), helper.addEventListener(this._messageManager, 'DOMContentLoaded', this._onDOMContentLoaded.bind(this)), helper.addObserver(this._onDocumentOpenLoad.bind(this), 'juggler-document-open-loaded'), - helper.addEventListener(this._messageManager, 'error', this._onError.bind(this)), helper.on(this._frameTree, 'load', this._onLoad.bind(this)), helper.on(this._frameTree, 'frameattached', this._onFrameAttached.bind(this)), helper.on(this._frameTree, 'framedetached', this._onFrameDetached.bind(this)), @@ -129,6 +128,7 @@ class PageAgent { }); }), this._runtime.events.onConsoleMessage(msg => this._browserPage.emit('runtimeConsole', msg)), + this._runtime.events.onRuntimeError(this._onRuntimeError.bind(this)), this._runtime.events.onExecutionContextCreated(this._onExecutionContextCreated.bind(this)), this._runtime.events.onExecutionContextDestroyed(this._onExecutionContextDestroyed.bind(this)), this._runtime.events.onBindingCalled(this._onBindingCalled.bind(this)), @@ -139,7 +139,6 @@ class PageAgent { describeNode: this._describeNode.bind(this), dispatchKeyEvent: this._dispatchKeyEvent.bind(this), dispatchMouseEvent: this._dispatchMouseEvent.bind(this), - dispatchWheelEvent: this._dispatchWheelEvent.bind(this), dispatchTouchEvent: this._dispatchTouchEvent.bind(this), dispatchTapEvent: this._dispatchTapEvent.bind(this), getContentQuads: this._getContentQuads.bind(this), @@ -274,15 +273,11 @@ class PageAgent { }); } - _onError(errorEvent) { - const docShell = errorEvent.target.ownerGlobal.docShell; - const frame = this._frameTree.frameForDocShell(docShell); - if (!frame) - return; + _onRuntimeError({ executionContext, message, stack }) { this._browserPage.emit('pageUncaughtError', { - frameId: frame.id(), - message: errorEvent.message, - stack: errorEvent.error && typeof errorEvent.error.stack === 'string' ? errorEvent.error.stack : '', + frameId: executionContext.auxData().frameId, + message: message.toString(), + stack: stack.toString(), }); } @@ -760,26 +755,6 @@ class PageAgent { } } - async _dispatchWheelEvent({x, y, button, deltaX, deltaY, deltaZ, modifiers }) { - const deltaMode = 0; // WheelEvent.DOM_DELTA_PIXEL - const lineOrPageDeltaX = deltaX > 0 ? Math.floor(deltaX) : Math.ceil(deltaX); - const lineOrPageDeltaY = deltaY > 0 ? Math.floor(deltaY) : Math.ceil(deltaY); - - const frame = this._frameTree.mainFrame(); - - frame.domWindow().windowUtils.sendWheelEvent( - x, - y, - deltaX, - deltaY, - deltaZ, - deltaMode, - modifiers, - lineOrPageDeltaX, - lineOrPageDeltaY, - 0 /* options */); - } - async _insertText({text}) { const frame = this._frameTree.mainFrame(); frame.textInputProcessor().commitCompositionWith(text); diff --git a/browser_patches/firefox-beta/juggler/content/Runtime.js b/browser_patches/firefox-beta/juggler/content/Runtime.js index 925a435cbe..20c046a1db 100644 --- a/browser_patches/firefox-beta/juggler/content/Runtime.js +++ b/browser_patches/firefox-beta/juggler/content/Runtime.js @@ -65,12 +65,13 @@ class Runtime { } else { const {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm"); this._registerConsoleServiceListener(Services); - this._registerConsoleObserver(Services); + this._registerConsoleAPIListener(Services); } // We can't use event listener here to be compatible with Worker Global Context. // Use plain callbacks instead. this.events = { onConsoleMessage: createEvent(), + onRuntimeError: createEvent(), onErrorFromWorker: createEvent(), onExecutionContextCreated: createEvent(), onExecutionContextDestroyed: createEvent(), @@ -129,7 +130,7 @@ class Runtime { observe: message => { if (!(message instanceof Ci.nsIScriptError) || !message.outerWindowID || - !message.category || disallowedMessageCategories.has(message.category) || message.hasException) { + !message.category || disallowedMessageCategories.has(message.category)) { return; } const errorWindow = Services.wm.getOuterWindowWithId(message.outerWindowID); @@ -138,34 +139,46 @@ class Runtime { return; } const executionContext = this._windowToExecutionContext.get(errorWindow); - if (!executionContext) + if (!executionContext) { return; + } const typeNames = { [Ci.nsIConsoleMessage.debug]: 'debug', [Ci.nsIConsoleMessage.info]: 'info', [Ci.nsIConsoleMessage.warn]: 'warn', [Ci.nsIConsoleMessage.error]: 'error', }; - emitEvent(this.events.onConsoleMessage, { - args: [{ - value: message.message, - }], - type: typeNames[message.logLevel], - executionContextId: executionContext.id(), - location: { - lineNumber: message.lineNumber, - columnNumber: message.columnNumber, - url: message.sourceName, - }, - }); + if (!message.hasException) { + emitEvent(this.events.onConsoleMessage, { + args: [{ + value: message.message, + }], + type: typeNames[message.logLevel], + executionContextId: executionContext.id(), + location: { + lineNumber: message.lineNumber, + columnNumber: message.columnNumber, + url: message.sourceName, + }, + }); + } else { + emitEvent(this.events.onRuntimeError, { + executionContext, + message: message.errorMessage, + stack: message.stack.toString(), + }); + } }, }; Services.console.registerListener(consoleServiceListener); this._eventListeners.push(() => Services.console.unregisterListener(consoleServiceListener)); } - _registerConsoleObserver(Services) { - const consoleObserver = ({wrappedJSObject}, topic, data) => { + _registerConsoleAPIListener(Services) { + const Ci = Components.interfaces; + const Cc = Components.classes; + const ConsoleAPIStorage = Cc["@mozilla.org/consoleAPI-storage;1"].getService(Ci.nsIConsoleAPIStorage); + const onMessage = ({ wrappedJSObject }) => { const executionContext = Array.from(this._executionContexts.values()).find(context => { // There is no easy way to determine isolated world context and we normally don't write // objects to console from utility worlds so we always return main world context here. @@ -177,9 +190,12 @@ class Runtime { if (!executionContext) return; this._onConsoleMessage(executionContext, wrappedJSObject); - }; - Services.obs.addObserver(consoleObserver, "console-api-log-event"); - this._eventListeners.push(() => Services.obs.removeObserver(consoleObserver, "console-api-log-event")); + } + ConsoleAPIStorage.addLogEventListener( + onMessage, + Cc["@mozilla.org/systemprincipal;1"].createInstance(Ci.nsIPrincipal) + ); + this._eventListeners.push(() => ConsoleAPIStorage.removeLogEventListener(onMessage)); } _registerWorkerConsoleHandler() { diff --git a/browser_patches/firefox-beta/juggler/protocol/BrowserHandler.js b/browser_patches/firefox-beta/juggler/protocol/BrowserHandler.js index 31a59bae43..04a139343e 100644 --- a/browser_patches/firefox-beta/juggler/protocol/BrowserHandler.js +++ b/browser_patches/firefox-beta/juggler/protocol/BrowserHandler.js @@ -44,18 +44,6 @@ class BrowserHandler { for (const target of this._targetRegistry.targets()) this._onTargetCreated(target); - - // Wait to complete initialization of addon manager and search - // service before returning from this method. Failing to do so will result - // in a broken shutdown sequence and multiple errors in browser STDERR log. - // - // NOTE: we have to put this here as well as in the `Browser.close` handler - // since browser shutdown can be initiated when the last tab is closed, e.g. - // with persistent context. - await Promise.all([ - waitForAddonManager(), - waitForSearchService(), - ]); } async ['Browser.createBrowserContext']({removeOnDetach}) { @@ -146,12 +134,6 @@ class BrowserHandler { waitForWindowClosed(browserWindow), ]); } - // Try to fully initialize browser before closing. - // See comment in `Browser.enable`. - await Promise.all([ - waitForAddonManager(), - waitForSearchService(), - ]); this._onclose(); Services.startup.quit(Ci.nsIAppStartup.eForceQuit); } @@ -283,26 +265,6 @@ class BrowserHandler { } } -async function waitForSearchService() { - const searchService = Components.classes["@mozilla.org/browser/search-service;1"].getService(Components.interfaces.nsISearchService); - await searchService.init(); -} - -async function waitForAddonManager() { - if (AddonManager.isReady) - return; - await new Promise(resolve => { - let listener = { - onStartup() { - AddonManager.removeManagerListener(listener); - resolve(); - }, - onShutdown() { }, - }; - AddonManager.addManagerListener(listener); - }); -} - async function waitForWindowClosed(browserWindow) { if (browserWindow.closed) return; diff --git a/browser_patches/firefox-beta/juggler/protocol/PageHandler.js b/browser_patches/firefox-beta/juggler/protocol/PageHandler.js index 46dc8265d8..4648476169 100644 --- a/browser_patches/firefox-beta/juggler/protocol/PageHandler.js +++ b/browser_patches/firefox-beta/juggler/protocol/PageHandler.js @@ -354,8 +354,26 @@ class PageHandler { return await this._contentPage.send('dispatchMouseEvent', options); } - async ['Page.dispatchWheelEvent'](options) { - return await this._contentPage.send('dispatchWheelEvent', options); + async ['Page.dispatchWheelEvent']({x, y, button, deltaX, deltaY, deltaZ, modifiers }) { + const boundingBox = this._pageTarget._linkedBrowser.getBoundingClientRect(); + x += boundingBox.left; + y += boundingBox.top; + const deltaMode = 0; // WheelEvent.DOM_DELTA_PIXEL + const lineOrPageDeltaX = deltaX > 0 ? Math.floor(deltaX) : Math.ceil(deltaX); + const lineOrPageDeltaY = deltaY > 0 ? Math.floor(deltaY) : Math.ceil(deltaY); + + const win = this._pageTarget._window; + win.windowUtils.sendWheelEvent( + x, + y, + deltaX, + deltaY, + deltaZ, + deltaMode, + modifiers, + lineOrPageDeltaX, + lineOrPageDeltaY, + 0 /* options */); } async ['Page.insertText'](options) { diff --git a/browser_patches/firefox-beta/juggler/screencast/HeadlessWindowCapturer.cpp b/browser_patches/firefox-beta/juggler/screencast/HeadlessWindowCapturer.cpp index d451e1cc1a..88d1791dde 100644 --- a/browser_patches/firefox-beta/juggler/screencast/HeadlessWindowCapturer.cpp +++ b/browser_patches/firefox-beta/juggler/screencast/HeadlessWindowCapturer.cpp @@ -69,7 +69,7 @@ int32_t HeadlessWindowCapturer::StopCaptureIfAllClientsClose() { } } -int32_t HeadlessWindowCapturer::StartCapture(const VideoCaptureCapability& capability) { +int32_t HeadlessWindowCapturer::StartCapture(const webrtc::VideoCaptureCapability& capability) { mWindow->SetSnapshotListener([this] (RefPtr&& dataSurface){ if (!NS_IsInCompositorThread()) { fprintf(stderr, "SnapshotListener is called not on the Compositor thread!\n"); diff --git a/browser_patches/firefox-beta/juggler/screencast/nsScreencastService.cpp b/browser_patches/firefox-beta/juggler/screencast/nsScreencastService.cpp index 7774787ab9..1c673ee11b 100644 --- a/browser_patches/firefox-beta/juggler/screencast/nsScreencastService.cpp +++ b/browser_patches/firefox-beta/juggler/screencast/nsScreencastService.cpp @@ -55,7 +55,7 @@ rtc::scoped_refptr CreateWindowCapturer(nsIWidget* windowId.AppendPrintf("%" PRIuPTR, rawWindowId); bool captureCursor = false; static int moduleId = 0; - return webrtc::DesktopCaptureImpl::Create(++moduleId, windowId.get(), webrtc::CaptureDeviceType::Window, captureCursor); + return webrtc::DesktopCaptureImpl::Create(++moduleId, windowId.get(), CaptureDeviceType::Window, captureCursor); } nsresult generateUid(nsString& uid) { diff --git a/browser_patches/firefox-beta/patches/bootstrap.diff b/browser_patches/firefox-beta/patches/bootstrap.diff index 3bbb5f43e0..45d4e421c8 100644 --- a/browser_patches/firefox-beta/patches/bootstrap.diff +++ b/browser_patches/firefox-beta/patches/bootstrap.diff @@ -1,8 +1,8 @@ diff --git a/accessible/base/NotificationController.h b/accessible/base/NotificationController.h -index b2e16c00e6e67d640974cd4f1aa7a819d4d32063..e80b42794f1fc425e25e6ea8b7a284000080708f 100644 +index afb6230bb613ecde4a5e3271478a682d0396dc3b..a3a7d9786f9d18bad6afc292264b9dbc62c14cf2 100644 --- a/accessible/base/NotificationController.h +++ b/accessible/base/NotificationController.h -@@ -275,6 +275,8 @@ class NotificationController final : public EventQueue, +@@ -276,6 +276,8 @@ class NotificationController final : public EventQueue, } #endif @@ -26,10 +26,10 @@ index a91df31c96afda66f478a5a38eaa4352039c2a0b..ee777c1746284027fb3aa2f1686f8082 + readonly attribute boolean isUpdatePendingForJugglerAccessibility; }; diff --git a/accessible/xpcom/xpcAccessibleDocument.cpp b/accessible/xpcom/xpcAccessibleDocument.cpp -index ec83b699e1449b2610b43b35694ee18d80cee2ff..66854bda7d8c20627949289b9f2e2e161a00fea8 100644 +index 1ddd5c8372c2742a8dc4e7a8156c084aaf2442fc..7e3aa30c20d8b2fcae5c12d293ca7772ecd28657 100644 --- a/accessible/xpcom/xpcAccessibleDocument.cpp +++ b/accessible/xpcom/xpcAccessibleDocument.cpp -@@ -142,6 +142,15 @@ xpcAccessibleDocument::GetVirtualCursor(nsIAccessiblePivot** aVirtualCursor) { +@@ -143,6 +143,15 @@ xpcAccessibleDocument::GetVirtualCursor(nsIAccessiblePivot** aVirtualCursor) { return NS_OK; } @@ -59,7 +59,7 @@ index 416a1c5497c97ed80cc0f37d72545e36f7e36b4c..b81983cf7153378260a21f6af225e349 * Return XPCOM wrapper for the internal accessible. */ diff --git a/browser/app/winlauncher/LauncherProcessWin.cpp b/browser/app/winlauncher/LauncherProcessWin.cpp -index 4460774865769609b66c0710f7c83f4d5c02b6fa..2ca95607b9b093218d48f83adc95c514cebe661b 100644 +index 4c5a84e9f824ca68dfcc429df5550136c647992a..c39d73a3b8be8bb8476618e93ef263e3640ba1ab 100644 --- a/browser/app/winlauncher/LauncherProcessWin.cpp +++ b/browser/app/winlauncher/LauncherProcessWin.cpp @@ -23,6 +23,7 @@ @@ -70,7 +70,7 @@ index 4460774865769609b66c0710f7c83f4d5c02b6fa..2ca95607b9b093218d48f83adc95c514 #include #include -@@ -359,8 +360,19 @@ Maybe LauncherMain(int& argc, wchar_t* argv[], +@@ -421,8 +422,19 @@ Maybe LauncherMain(int& argc, wchar_t* argv[], HANDLE stdHandles[] = {::GetStdHandle(STD_INPUT_HANDLE), ::GetStdHandle(STD_OUTPUT_HANDLE), ::GetStdHandle(STD_ERROR_HANDLE)}; @@ -172,10 +172,10 @@ index 040c7b124dec6bb254563bbe74fe50012cb077a3..b4e6b8132786af70e8ad0dce88b67c28 const transportProvider = { setListener(upgradeListener) { diff --git a/docshell/base/BrowsingContext.cpp b/docshell/base/BrowsingContext.cpp -index d5006b4b576870bb7e6ca06bd0696b786c0f9236..96157b8e9a40b28ad05ae57e2f4457fe8d440567 100644 +index 2eb25e3e50f8865a1788e1043187eb78f5efc72f..a3435e5f28cc4932b530ae9890f0d8591f22c717 100644 --- a/docshell/base/BrowsingContext.cpp +++ b/docshell/base/BrowsingContext.cpp -@@ -110,6 +110,20 @@ struct ParamTraits +@@ -111,6 +111,20 @@ struct ParamTraits mozilla::dom::PrefersColorSchemeOverride::None, mozilla::dom::PrefersColorSchemeOverride::EndGuard_> {}; @@ -196,7 +196,7 @@ index d5006b4b576870bb7e6ca06bd0696b786c0f9236..96157b8e9a40b28ad05ae57e2f4457fe template <> struct ParamTraits : public ContiguousEnumSerializer< -@@ -2775,6 +2789,40 @@ void BrowsingContext::DidSet(FieldIndex, +@@ -2780,6 +2794,40 @@ void BrowsingContext::DidSet(FieldIndex, PresContextAffectingFieldChanged(); } @@ -305,7 +305,7 @@ index e0b091feba6ce38e57681c62c386d3b70234de1f..4fae381a8bded7ae004ccb25187b3ace bool CanSet(FieldIndex, bool, ContentParent*) { diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp -index 6f554d87958ea61b1adadeba09fc99031dda8e10..2eff5cc5721bf99166420eb2b35a43769782b0fa 100644 +index c42f9450ce1a8e1b1b77ac3c5e5dd186f2b03d9f..dfb824b4b5ae54126beba8231111e93f0de2000d 100644 --- a/docshell/base/nsDocShell.cpp +++ b/docshell/base/nsDocShell.cpp @@ -15,6 +15,12 @@ @@ -367,7 +367,7 @@ index 6f554d87958ea61b1adadeba09fc99031dda8e10..2eff5cc5721bf99166420eb2b35a4376 mAllowAuth(mItemType == typeContent), mAllowKeywordFixup(false), mDisableMetaRefreshWhenInactive(false), -@@ -3286,6 +3303,221 @@ nsDocShell::GetMessageManager(ContentFrameMessageManager** aMessageManager) { +@@ -3266,6 +3283,221 @@ nsDocShell::GetMessageManager(ContentFrameMessageManager** aMessageManager) { return NS_OK; } @@ -589,7 +589,7 @@ index 6f554d87958ea61b1adadeba09fc99031dda8e10..2eff5cc5721bf99166420eb2b35a4376 NS_IMETHODIMP nsDocShell::GetIsNavigating(bool* aOut) { *aOut = mIsNavigating; -@@ -4918,7 +5150,7 @@ nsDocShell::GetVisibility(bool* aVisibility) { +@@ -4896,7 +5128,7 @@ nsDocShell::GetVisibility(bool* aVisibility) { } void nsDocShell::ActivenessMaybeChanged() { @@ -598,7 +598,7 @@ index 6f554d87958ea61b1adadeba09fc99031dda8e10..2eff5cc5721bf99166420eb2b35a4376 if (RefPtr presShell = GetPresShell()) { presShell->ActivenessMaybeChanged(); } -@@ -8652,6 +8884,12 @@ nsresult nsDocShell::PerformRetargeting(nsDocShellLoadState* aLoadState) { +@@ -8633,6 +8865,12 @@ nsresult nsDocShell::PerformRetargeting(nsDocShellLoadState* aLoadState) { true, // aForceNoOpener getter_AddRefs(newBC)); MOZ_ASSERT(!newBC); @@ -611,7 +611,7 @@ index 6f554d87958ea61b1adadeba09fc99031dda8e10..2eff5cc5721bf99166420eb2b35a4376 return rv; } -@@ -12802,6 +13040,9 @@ class OnLinkClickEvent : public Runnable { +@@ -12781,6 +13019,9 @@ class OnLinkClickEvent : public Runnable { mHandler->OnLinkClickSync(mContent, mLoadState, mNoOpenerImplied, mTriggeringPrincipal); } @@ -621,7 +621,7 @@ index 6f554d87958ea61b1adadeba09fc99031dda8e10..2eff5cc5721bf99166420eb2b35a4376 return NS_OK; } -@@ -12881,6 +13122,8 @@ nsresult nsDocShell::OnLinkClick( +@@ -12860,6 +13101,8 @@ nsresult nsDocShell::OnLinkClick( nsCOMPtr ev = new OnLinkClickEvent(this, aContent, loadState, noOpenerImplied, aIsTrusted, aTriggeringPrincipal); @@ -631,7 +631,7 @@ index 6f554d87958ea61b1adadeba09fc99031dda8e10..2eff5cc5721bf99166420eb2b35a4376 } diff --git a/docshell/base/nsDocShell.h b/docshell/base/nsDocShell.h -index 7326eb6d5c927c0509333447edf111657597ab90..bc9dcabb82832fd1a3a8f2dd8811481a9c5ad84c 100644 +index 79b2af0c0f58e00965473edb55a4e184dd225b1b..4a991cba9d77207a631b5f076c37e7f9281e9a4a 100644 --- a/docshell/base/nsDocShell.h +++ b/docshell/base/nsDocShell.h @@ -16,6 +16,7 @@ @@ -650,7 +650,7 @@ index 7326eb6d5c927c0509333447edf111657597ab90..bc9dcabb82832fd1a3a8f2dd8811481a class nsGlobalWindowOuter; class FramingChecker; -@@ -411,6 +413,15 @@ class nsDocShell final : public nsDocLoader, +@@ -408,6 +410,15 @@ class nsDocShell final : public nsDocLoader, void SetWillChangeProcess() { mWillChangeProcess = true; } bool WillChangeProcess() { return mWillChangeProcess; } @@ -666,7 +666,7 @@ index 7326eb6d5c927c0509333447edf111657597ab90..bc9dcabb82832fd1a3a8f2dd8811481a // Create a content viewer within this nsDocShell for the given // `WindowGlobalChild` actor. nsresult CreateContentViewerForActor( -@@ -1026,6 +1037,8 @@ class nsDocShell final : public nsDocLoader, +@@ -1023,6 +1034,8 @@ class nsDocShell final : public nsDocLoader, bool CSSErrorReportingEnabled() const { return mCSSErrorReportingEnabled; } @@ -675,7 +675,7 @@ index 7326eb6d5c927c0509333447edf111657597ab90..bc9dcabb82832fd1a3a8f2dd8811481a // Handles retrieval of subframe session history for nsDocShell::LoadURI. If a // load is requested in a subframe of the current DocShell, the subframe // loadType may need to reflect the loadType of the parent document, or in -@@ -1311,6 +1324,16 @@ class nsDocShell final : public nsDocLoader, +@@ -1308,6 +1321,16 @@ class nsDocShell final : public nsDocLoader, bool mAllowDNSPrefetch : 1; bool mAllowWindowControl : 1; bool mCSSErrorReportingEnabled : 1; @@ -747,10 +747,10 @@ index 6b85ddd842a6d2e29f86047017b78b2007b99867..e0b56c4f85544580b9a631619fb06799 * This attempts to save any applicable layout history state (like * scroll position) in the nsISHEntry. This is normally done diff --git a/dom/base/Document.cpp b/dom/base/Document.cpp -index 3f454bb509cf6b251f2e47974976fa40f9b04020..826369ef5dca9d88d66b48d2ba40caf03217dfd6 100644 +index feaee86ca5fd78d7df8d08a737ba9b8da173feac..86f31fb2d1e6b6e667e066eaff80763855cef08e 100644 --- a/dom/base/Document.cpp +++ b/dom/base/Document.cpp -@@ -3648,6 +3648,9 @@ void Document::SendToConsole(nsCOMArray& aMessages) { +@@ -3645,6 +3645,9 @@ void Document::SendToConsole(nsCOMArray& aMessages) { } void Document::ApplySettingsFromCSP(bool aSpeculative) { @@ -760,7 +760,7 @@ index 3f454bb509cf6b251f2e47974976fa40f9b04020..826369ef5dca9d88d66b48d2ba40caf0 nsresult rv = NS_OK; if (!aSpeculative) { // 1) apply settings from regular CSP -@@ -3705,6 +3708,11 @@ nsresult Document::InitCSP(nsIChannel* aChannel) { +@@ -3702,6 +3705,11 @@ nsresult Document::InitCSP(nsIChannel* aChannel) { MOZ_ASSERT(!mScriptGlobalObject, "CSP must be initialized before mScriptGlobalObject is set!"); @@ -772,7 +772,7 @@ index 3f454bb509cf6b251f2e47974976fa40f9b04020..826369ef5dca9d88d66b48d2ba40caf0 // If this is a data document - no need to set CSP. if (mLoadedAsData) { return NS_OK; -@@ -4516,6 +4524,10 @@ bool Document::HasFocus(ErrorResult& rv) const { +@@ -4508,6 +4516,10 @@ bool Document::HasFocus(ErrorResult& rv) const { return false; } @@ -783,7 +783,7 @@ index 3f454bb509cf6b251f2e47974976fa40f9b04020..826369ef5dca9d88d66b48d2ba40caf0 if (!fm->IsInActiveWindow(bc)) { return false; } -@@ -17879,6 +17891,71 @@ ColorScheme Document::PreferredColorScheme(IgnoreRFP aIgnoreRFP) const { +@@ -17654,6 +17666,71 @@ ColorScheme Document::PreferredColorScheme(IgnoreRFP aIgnoreRFP) const { return LookAndFeel::PreferredColorSchemeForContent(); } @@ -856,10 +856,10 @@ index 3f454bb509cf6b251f2e47974976fa40f9b04020..826369ef5dca9d88d66b48d2ba40caf0 if (!sLoadingForegroundTopLevelContentDocument) { return false; diff --git a/dom/base/Document.h b/dom/base/Document.h -index a9d9c2f2d0a1359fec5c4edfffd8f8fab3607525..ad6e19137bbd341414ffee670e3070d692985536 100644 +index 7a4ddc544948509dfe6b7998f31fb9bdf2de841e..40d92e63470091fe3497291aa631464f0ee92b71 100644 --- a/dom/base/Document.h +++ b/dom/base/Document.h -@@ -4020,6 +4020,9 @@ class Document : public nsINode, +@@ -4001,6 +4001,9 @@ class Document : public nsINode, // color-scheme meta tag. ColorScheme DefaultColorScheme() const; @@ -870,10 +870,10 @@ index a9d9c2f2d0a1359fec5c4edfffd8f8fab3607525..ad6e19137bbd341414ffee670e3070d6 static bool AutomaticStorageAccessPermissionCanBeGranted( diff --git a/dom/base/Navigator.cpp b/dom/base/Navigator.cpp -index 6f5812f17a980be7c9823708853018868cbcd18f..fa9a88eedb2b6a19dffbadd9dbdf3a2f48d60ca1 100644 +index 85f28cce26f37b5df95c4a96658b9328f13b5a47..917d89943589ba4d7b065bdacb76aa281508de29 100644 --- a/dom/base/Navigator.cpp +++ b/dom/base/Navigator.cpp -@@ -326,14 +326,18 @@ void Navigator::GetAppName(nsAString& aAppName, CallerType aCallerType) const { +@@ -325,14 +325,18 @@ void Navigator::GetAppName(nsAString& aAppName, CallerType aCallerType) const { * for more detail. */ /* static */ @@ -894,7 +894,7 @@ index 6f5812f17a980be7c9823708853018868cbcd18f..fa9a88eedb2b6a19dffbadd9dbdf3a2f // Split values on commas. for (nsDependentSubstring lang : -@@ -385,7 +389,13 @@ void Navigator::GetLanguage(nsAString& aLanguage) { +@@ -384,7 +388,13 @@ void Navigator::GetLanguage(nsAString& aLanguage) { } void Navigator::GetLanguages(nsTArray& aLanguages) { @@ -909,7 +909,7 @@ index 6f5812f17a980be7c9823708853018868cbcd18f..fa9a88eedb2b6a19dffbadd9dbdf3a2f // The returned value is cached by the binding code. The window listens to the // accept languages change and will clear the cache when needed. It has to -@@ -564,7 +574,13 @@ bool Navigator::CookieEnabled() { +@@ -563,7 +573,13 @@ bool Navigator::CookieEnabled() { return granted; } @@ -925,7 +925,7 @@ index 6f5812f17a980be7c9823708853018868cbcd18f..fa9a88eedb2b6a19dffbadd9dbdf3a2f void Navigator::GetBuildID(nsAString& aBuildID, CallerType aCallerType, ErrorResult& aRv) const { diff --git a/dom/base/Navigator.h b/dom/base/Navigator.h -index 7184795e21afe8b1ac5d36c6f645fc9a027f74d5..0d9c6ae7edd65cd8b7660cff22853ec4859ec608 100644 +index 2a16e5e18427944f007c3f33301f2faea92f63e0..69a2037379bc03f941789814d00c7e99e58bdf0e 100644 --- a/dom/base/Navigator.h +++ b/dom/base/Navigator.h @@ -216,7 +216,7 @@ class Navigator final : public nsISupports, public nsWrapperCache { @@ -938,10 +938,10 @@ index 7184795e21afe8b1ac5d36c6f645fc9a027f74d5..0d9c6ae7edd65cd8b7660cff22853ec4 dom::MediaCapabilities* MediaCapabilities(); dom::MediaSession* MediaSession(); diff --git a/dom/base/nsContentUtils.cpp b/dom/base/nsContentUtils.cpp -index 6b910d1eea981d62d7bfc6964a97d683686094f8..b00acefd43e19c404abb34c5e32fe6f3f0d08d45 100644 +index efc42b7f547d9b8b8a202e2130c409b3bb63e9fb..ebf11bd9ed41c061863836a96ae0cda7e37d2032 100644 --- a/dom/base/nsContentUtils.cpp +++ b/dom/base/nsContentUtils.cpp -@@ -8226,7 +8226,8 @@ nsresult nsContentUtils::SendMouseEvent( +@@ -8369,7 +8369,8 @@ nsresult nsContentUtils::SendMouseEvent( bool aIgnoreRootScrollFrame, float aPressure, unsigned short aInputSourceArg, uint32_t aIdentifier, bool aToWindow, PreventDefaultResult* aPreventDefault, bool aIsDOMEventSynthesized, @@ -951,7 +951,7 @@ index 6b910d1eea981d62d7bfc6964a97d683686094f8..b00acefd43e19c404abb34c5e32fe6f3 nsPoint offset; nsCOMPtr widget = GetWidget(aPresShell, &offset); if (!widget) return NS_ERROR_FAILURE; -@@ -8285,6 +8286,7 @@ nsresult nsContentUtils::SendMouseEvent( +@@ -8428,6 +8429,7 @@ nsresult nsContentUtils::SendMouseEvent( event.mTime = PR_IntervalNow(); event.mFlags.mIsSynthesizedForTests = aIsDOMEventSynthesized; event.mExitFrom = exitFrom; @@ -960,10 +960,10 @@ index 6b910d1eea981d62d7bfc6964a97d683686094f8..b00acefd43e19c404abb34c5e32fe6f3 nsPresContext* presContext = aPresShell->GetPresContext(); if (!presContext) return NS_ERROR_FAILURE; diff --git a/dom/base/nsContentUtils.h b/dom/base/nsContentUtils.h -index 0dbce2bdf40bf23ec748996f1b8f2f543b005b16..cdb2e5d62169d36077e9c9d6c50d8edf8b6ebe56 100644 +index 739e8ca23c858ac2bf0356ad8c0eb0da4471d9ea..afb76693d313dc3c97fb54d014ed146a5b1bfb01 100644 --- a/dom/base/nsContentUtils.h +++ b/dom/base/nsContentUtils.h -@@ -2928,7 +2928,8 @@ class nsContentUtils { +@@ -2943,7 +2943,8 @@ class nsContentUtils { int32_t aModifiers, bool aIgnoreRootScrollFrame, float aPressure, unsigned short aInputSourceArg, uint32_t aIdentifier, bool aToWindow, mozilla::PreventDefaultResult* aPreventDefault, @@ -974,10 +974,10 @@ index 0dbce2bdf40bf23ec748996f1b8f2f543b005b16..cdb2e5d62169d36077e9c9d6c50d8edf static void FirePageShowEventForFrameLoaderSwap( nsIDocShellTreeItem* aItem, diff --git a/dom/base/nsDOMWindowUtils.cpp b/dom/base/nsDOMWindowUtils.cpp -index a078d2973bb539f6dac799ffa438569cef38067c..64af78f470e2343c7ff5332bca77ca5df46e9515 100644 +index 24771c8d8fb251cb837f2c5c43a34f2f5e921188..1ccc540f4bf0a71546117479c86a07252ca00f1d 100644 --- a/dom/base/nsDOMWindowUtils.cpp +++ b/dom/base/nsDOMWindowUtils.cpp -@@ -655,7 +655,7 @@ nsDOMWindowUtils::SendMouseEvent( +@@ -683,7 +683,7 @@ nsDOMWindowUtils::SendMouseEvent( int32_t aClickCount, int32_t aModifiers, bool aIgnoreRootScrollFrame, float aPressure, unsigned short aInputSourceArg, bool aIsDOMEventSynthesized, bool aIsWidgetEventSynthesized, @@ -986,7 +986,7 @@ index a078d2973bb539f6dac799ffa438569cef38067c..64af78f470e2343c7ff5332bca77ca5d bool* aPreventDefault) { return SendMouseEventCommon( aType, aX, aY, aButton, aClickCount, aModifiers, aIgnoreRootScrollFrame, -@@ -663,7 +663,7 @@ nsDOMWindowUtils::SendMouseEvent( +@@ -691,7 +691,7 @@ nsDOMWindowUtils::SendMouseEvent( aOptionalArgCount >= 7 ? aIdentifier : DEFAULT_MOUSE_POINTER_ID, false, aPreventDefault, aOptionalArgCount >= 4 ? aIsDOMEventSynthesized : true, aOptionalArgCount >= 5 ? aIsWidgetEventSynthesized : false, @@ -995,7 +995,7 @@ index a078d2973bb539f6dac799ffa438569cef38067c..64af78f470e2343c7ff5332bca77ca5d } NS_IMETHODIMP -@@ -690,13 +690,13 @@ nsDOMWindowUtils::SendMouseEventCommon( +@@ -718,13 +718,13 @@ nsDOMWindowUtils::SendMouseEventCommon( int32_t aClickCount, int32_t aModifiers, bool aIgnoreRootScrollFrame, float aPressure, unsigned short aInputSourceArg, uint32_t aPointerId, bool aToWindow, bool* aPreventDefault, bool aIsDOMEventSynthesized, @@ -1025,10 +1025,10 @@ index 30e0fafa77857c33e9871259a6ac0cebac965df8..3d8810abcfac1c220529b4e6163b0159 MOZ_CAN_RUN_SCRIPT nsresult SendTouchEventCommon( diff --git a/dom/base/nsFocusManager.cpp b/dom/base/nsFocusManager.cpp -index ffeb42544dccb0efb5c94b652aba4d1801d953aa..49681f4adcbac3fcb80d66ab4a08a21d7fb08472 100644 +index 6f226bbe93a5ba7621bcdeb910ff62568ae600d1..cca5be36464557439b7d119e97a173420b1bc4e2 100644 --- a/dom/base/nsFocusManager.cpp +++ b/dom/base/nsFocusManager.cpp -@@ -1613,6 +1613,10 @@ void nsFocusManager::SetFocusInner(Element* aNewContent, int32_t aFlags, +@@ -1610,6 +1610,10 @@ void nsFocusManager::SetFocusInner(Element* aNewContent, int32_t aFlags, (GetActiveBrowsingContext() == newRootBrowsingContext); } @@ -1039,7 +1039,7 @@ index ffeb42544dccb0efb5c94b652aba4d1801d953aa..49681f4adcbac3fcb80d66ab4a08a21d // Exit fullscreen if a website focuses another window if (StaticPrefs::full_screen_api_exit_on_windowRaise() && !isElementInActiveWindow && (aFlags & FLAG_RAISE) && -@@ -2923,7 +2927,9 @@ void nsFocusManager::RaiseWindow(nsPIDOMWindowOuter* aWindow, +@@ -2929,7 +2933,9 @@ void nsFocusManager::RaiseWindow(nsPIDOMWindowOuter* aWindow, } } @@ -1051,7 +1051,7 @@ index ffeb42544dccb0efb5c94b652aba4d1801d953aa..49681f4adcbac3fcb80d66ab4a08a21d // care of lowering the present active window. This happens in // a separate runnable to avoid touching multiple windows in diff --git a/dom/base/nsGlobalWindowOuter.cpp b/dom/base/nsGlobalWindowOuter.cpp -index ceaf5011caab63d01401d67f2b0352678e7bd9d6..8f9e5ab07b0e825fd5d5e459b6b4233ffedc85e5 100644 +index 674353189dca391077370b899b69041305c440ca..5069dd0a761e5fd666d3ae4506cd6292fdbc92d3 100644 --- a/dom/base/nsGlobalWindowOuter.cpp +++ b/dom/base/nsGlobalWindowOuter.cpp @@ -2478,7 +2478,7 @@ nsresult nsGlobalWindowOuter::SetNewDocument(Document* aDocument, @@ -1084,7 +1084,7 @@ index ceaf5011caab63d01401d67f2b0352678e7bd9d6..8f9e5ab07b0e825fd5d5e459b6b4233f } } -@@ -2624,6 +2630,19 @@ void nsGlobalWindowOuter::DispatchDOMWindowCreated() { +@@ -2621,6 +2627,19 @@ void nsGlobalWindowOuter::DispatchDOMWindowCreated() { } } @@ -1104,7 +1104,7 @@ index ceaf5011caab63d01401d67f2b0352678e7bd9d6..8f9e5ab07b0e825fd5d5e459b6b4233f void nsGlobalWindowOuter::ClearStatus() { SetStatusOuter(u""_ns); } void nsGlobalWindowOuter::SetDocShell(nsDocShell* aDocShell) { -@@ -3792,6 +3811,14 @@ Maybe nsGlobalWindowOuter::GetRDMDeviceSize( +@@ -3734,6 +3753,14 @@ Maybe nsGlobalWindowOuter::GetRDMDeviceSize( } } } @@ -1120,10 +1120,10 @@ index ceaf5011caab63d01401d67f2b0352678e7bd9d6..8f9e5ab07b0e825fd5d5e459b6b4233f } diff --git a/dom/base/nsGlobalWindowOuter.h b/dom/base/nsGlobalWindowOuter.h -index ab3a63025e19a68811ea98b77c728ac70a0a63b8..32d37910dbd3a04c64ccb4f2b2cf1505e50330aa 100644 +index 70cea10edfd5445c93900c876dbbcaa07dccf23b..814f29ac5fbd08e4b5b458995aa7ed17d16b5fce 100644 --- a/dom/base/nsGlobalWindowOuter.h +++ b/dom/base/nsGlobalWindowOuter.h -@@ -327,6 +327,7 @@ class nsGlobalWindowOuter final : public mozilla::dom::EventTarget, +@@ -330,6 +330,7 @@ class nsGlobalWindowOuter final : public mozilla::dom::EventTarget, // Outer windows only. void DispatchDOMWindowCreated(); @@ -1132,10 +1132,10 @@ index ab3a63025e19a68811ea98b77c728ac70a0a63b8..32d37910dbd3a04c64ccb4f2b2cf1505 // Outer windows only. virtual void EnsureSizeAndPositionUpToDate() override; diff --git a/dom/base/nsINode.cpp b/dom/base/nsINode.cpp -index 22c32682fd1a332cf77b811ae28497932cf7108f..15adc1c0dfda0d80c310db815dc9cf2215464c9c 100644 +index 88e24213ce8f052d1bbe00c4fcb385aa70496552..23a463c943e630ad93cc780fb4b7b894ce76f7b9 100644 --- a/dom/base/nsINode.cpp +++ b/dom/base/nsINode.cpp -@@ -1312,6 +1312,49 @@ void nsINode::GetBoxQuadsFromWindowOrigin(const BoxQuadOptions& aOptions, +@@ -1324,6 +1324,49 @@ void nsINode::GetBoxQuadsFromWindowOrigin(const BoxQuadOptions& aOptions, mozilla::GetBoxQuadsFromWindowOrigin(this, aOptions, aResult, aRv); } @@ -1186,10 +1186,10 @@ index 22c32682fd1a332cf77b811ae28497932cf7108f..15adc1c0dfda0d80c310db815dc9cf22 DOMQuad& aQuad, const GeometryNode& aFrom, const ConvertCoordinateOptions& aOptions, CallerType aCallerType, diff --git a/dom/base/nsINode.h b/dom/base/nsINode.h -index 3991f8007498f04a07b7a46b82fb41c944330ffa..ac06535828a22c9261641c880be788b29c976b3d 100644 +index 56adeeb339ec7dcf63785b46c194c38614e2b000..0421f57f310c397438090cbd3f4b4290cc21151b 100644 --- a/dom/base/nsINode.h +++ b/dom/base/nsINode.h -@@ -2123,6 +2123,10 @@ class nsINode : public mozilla::dom::EventTarget { +@@ -2131,6 +2131,10 @@ class nsINode : public mozilla::dom::EventTarget { nsTArray>& aResult, ErrorResult& aRv); @@ -1201,7 +1201,7 @@ index 3991f8007498f04a07b7a46b82fb41c944330ffa..ac06535828a22c9261641c880be788b2 DOMQuad& aQuad, const TextOrElementOrDocument& aFrom, const ConvertCoordinateOptions& aOptions, CallerType aCallerType, diff --git a/dom/base/nsJSUtils.cpp b/dom/base/nsJSUtils.cpp -index 399bae250043708540d99c188ae3dfc4587cb5ea..43c315aa22b97b30ebbc72d13296fd89076b231c 100644 +index 2b8e5f7f34ee91034ddd53c858937e0f67008645..7bb979dadfa1811593d4cc3fcb306f35b2b34093 100644 --- a/dom/base/nsJSUtils.cpp +++ b/dom/base/nsJSUtils.cpp @@ -169,6 +169,11 @@ bool nsJSUtils::GetScopeChainForElement( @@ -1229,7 +1229,7 @@ index 85a21e459305f556933f4dc0fa7441d8f9ed95a9..d7cb86479ba2ed06542307349d6d86df static bool DumpEnabled(); diff --git a/dom/chrome-webidl/BrowsingContext.webidl b/dom/chrome-webidl/BrowsingContext.webidl -index c802621cc5f710883ba2da9b44d8a24a78ddbab8..071f3e9faa1f093c06c7b66923a12d7efead65b2 100644 +index 414e8367d19057d3249f07f6590fc84534406bf3..5872741f2e22d500cd3b939e66e730aaac5ad717 100644 --- a/dom/chrome-webidl/BrowsingContext.webidl +++ b/dom/chrome-webidl/BrowsingContext.webidl @@ -52,6 +52,24 @@ enum PrefersColorSchemeOverride { @@ -1271,7 +1271,7 @@ index c802621cc5f710883ba2da9b44d8a24a78ddbab8..071f3e9faa1f093c06c7b66923a12d7e * A unique identifier for the browser element that is hosting this * BrowsingContext tree. Every BrowsingContext in the element's tree will diff --git a/dom/geolocation/Geolocation.cpp b/dom/geolocation/Geolocation.cpp -index 5f91e0ba2507a2da269617ffc71d7855942aed43..29d89af640386202b1f2525db098eee4a1bc08e7 100644 +index 5b85084f551faa37ed41a3f7c15482b68b653937..b0886dc9fdd5740d24359aed29d45351599950e1 100644 --- a/dom/geolocation/Geolocation.cpp +++ b/dom/geolocation/Geolocation.cpp @@ -23,6 +23,7 @@ @@ -1282,7 +1282,7 @@ index 5f91e0ba2507a2da269617ffc71d7855942aed43..29d89af640386202b1f2525db098eee4 #include "nsGlobalWindow.h" #include "mozilla/dom/Document.h" #include "nsINamed.h" -@@ -259,10 +260,8 @@ nsGeolocationRequest::Allow(JS::HandleValue aChoices) { +@@ -260,10 +261,8 @@ nsGeolocationRequest::Allow(JS::Handle aChoices) { return NS_OK; } @@ -1295,7 +1295,7 @@ index 5f91e0ba2507a2da269617ffc71d7855942aed43..29d89af640386202b1f2525db098eee4 CachedPositionAndAccuracy lastPosition = gs->GetCachedPosition(); if (lastPosition.position) { EpochTimeStamp cachedPositionTime_ms; -@@ -435,8 +434,7 @@ void nsGeolocationRequest::Shutdown() { +@@ -436,8 +435,7 @@ void nsGeolocationRequest::Shutdown() { // If there are no other high accuracy requests, the geolocation service will // notify the provider to switch to the default accuracy. if (mOptions && mOptions->mEnableHighAccuracy) { @@ -1305,7 +1305,7 @@ index 5f91e0ba2507a2da269617ffc71d7855942aed43..29d89af640386202b1f2525db098eee4 if (gs) { gs->UpdateAccuracy(); } -@@ -717,8 +715,14 @@ void nsGeolocationService::StopDevice() { +@@ -727,8 +725,14 @@ void nsGeolocationService::StopDevice() { StaticRefPtr nsGeolocationService::sService; already_AddRefed @@ -1321,7 +1321,7 @@ index 5f91e0ba2507a2da269617ffc71d7855942aed43..29d89af640386202b1f2525db098eee4 if (nsGeolocationService::sService) { result = nsGeolocationService::sService; -@@ -810,7 +814,9 @@ nsresult Geolocation::Init(nsPIDOMWindowInner* aContentDom) { +@@ -820,7 +824,9 @@ nsresult Geolocation::Init(nsPIDOMWindowInner* aContentDom) { // If no aContentDom was passed into us, we are being used // by chrome/c++ and have no mOwner, no mPrincipal, and no need // to prompt. @@ -1333,7 +1333,7 @@ index 5f91e0ba2507a2da269617ffc71d7855942aed43..29d89af640386202b1f2525db098eee4 mService->AddLocator(this); } diff --git a/dom/geolocation/Geolocation.h b/dom/geolocation/Geolocation.h -index 893192d7a33ade248dc32a201fbf5ec418793920..d85ffb5b3b19698b1ed6edd4615976167cf8c034 100644 +index 5c0d2f96a22c6928d6aee5a226032c0944ae7a54..5a7bb1f6cea1946eea143dca4e2f1e19746a04a4 100644 --- a/dom/geolocation/Geolocation.h +++ b/dom/geolocation/Geolocation.h @@ -31,6 +31,7 @@ @@ -1344,19 +1344,7 @@ index 893192d7a33ade248dc32a201fbf5ec418793920..d85ffb5b3b19698b1ed6edd461597616 class nsGeolocationService; class nsGeolocationRequest; -@@ -42,6 +43,11 @@ using GeoPositionCallback = - CallbackObjectHolder; - using GeoPositionErrorCallback = - CallbackObjectHolder; -+typedef CallbackObjectHolder -+ GeoPositionCallback; -+typedef CallbackObjectHolder -+ GeoPositionErrorCallback; - } // namespace dom - } // namespace mozilla - -@@ -50,13 +56,14 @@ struct CachedPositionAndAccuracy { +@@ -48,13 +49,14 @@ struct CachedPositionAndAccuracy { bool isHighAccuracy; }; @@ -1372,7 +1360,7 @@ index 893192d7a33ade248dc32a201fbf5ec418793920..d85ffb5b3b19698b1ed6edd461597616 static mozilla::StaticRefPtr sService; NS_DECL_THREADSAFE_ISUPPORTS -@@ -182,6 +189,8 @@ class Geolocation final : public nsIGeolocationUpdate, public nsWrapperCache { +@@ -179,6 +181,8 @@ class Geolocation final : public nsIGeolocationUpdate, public nsWrapperCache { // null. static already_AddRefed NonWindowSingleton(); @@ -1382,7 +1370,7 @@ index 893192d7a33ade248dc32a201fbf5ec418793920..d85ffb5b3b19698b1ed6edd461597616 ~Geolocation(); diff --git a/dom/html/HTMLInputElement.cpp b/dom/html/HTMLInputElement.cpp -index 9fb48fd6d15322bbf324fc63c3c6dec05a2bfb9f..c09d509603cbf4740ba867e4abdd946685d6c626 100644 +index c8888eb6cfb0319e83d711d6958f8d03faf409d7..878a72a2aa005fd2ee7ac0290706629b66ddb837 100644 --- a/dom/html/HTMLInputElement.cpp +++ b/dom/html/HTMLInputElement.cpp @@ -53,6 +53,7 @@ @@ -1393,7 +1381,7 @@ index 9fb48fd6d15322bbf324fc63c3c6dec05a2bfb9f..c09d509603cbf4740ba867e4abdd9466 #include "nsIFormControlFrame.h" #include "nsITextControlFrame.h" #include "nsIFrame.h" -@@ -743,6 +744,12 @@ nsresult HTMLInputElement::InitFilePicker(FilePickerType aType) { +@@ -746,6 +747,12 @@ nsresult HTMLInputElement::InitFilePicker(FilePickerType aType) { return NS_ERROR_FAILURE; } @@ -1407,10 +1395,10 @@ index 9fb48fd6d15322bbf324fc63c3c6dec05a2bfb9f..c09d509603cbf4740ba867e4abdd9466 return NS_OK; } diff --git a/dom/interfaces/base/nsIDOMWindowUtils.idl b/dom/interfaces/base/nsIDOMWindowUtils.idl -index 60ccb8838ea6a0b040c2c1fc42e554ef00de8826..942120ecbc6900803ebfeff717be621be519c0cf 100644 +index c16b813f29d8a519673129bb7debaaec0430145a..6f82922ac7e889e55beda7d43da3ebe6adeb7ca9 100644 --- a/dom/interfaces/base/nsIDOMWindowUtils.idl +++ b/dom/interfaces/base/nsIDOMWindowUtils.idl -@@ -364,7 +364,8 @@ interface nsIDOMWindowUtils : nsISupports { +@@ -375,7 +375,8 @@ interface nsIDOMWindowUtils : nsISupports { [optional] in boolean aIsDOMEventSynthesized, [optional] in boolean aIsWidgetEventSynthesized, [optional] in long aButtons, @@ -1421,10 +1409,10 @@ index 60ccb8838ea6a0b040c2c1fc42e554ef00de8826..942120ecbc6900803ebfeff717be621b /** Synthesize a touch event. The event types supported are: * touchstart, touchend, touchmove, and touchcancel diff --git a/dom/media/systemservices/video_engine/desktop_capture_impl.cc b/dom/media/systemservices/video_engine/desktop_capture_impl.cc -index e744940a8e7517b39a73509da3942c2cac9ee0c1..9ba6fe797ed0707137f9cf32b784544d0db0195c 100644 +index 9d4e8fbbfe8d45cc6245c7659423004ad1ceedeb..70150e9271720a562fd646a50d30369965d8521a 100644 --- a/dom/media/systemservices/video_engine/desktop_capture_impl.cc +++ b/dom/media/systemservices/video_engine/desktop_capture_impl.cc -@@ -122,10 +122,11 @@ int32_t ScreenDeviceInfoImpl::GetOrientation(const char* deviceUniqueIdUTF8, +@@ -123,10 +123,11 @@ int32_t ScreenDeviceInfoImpl::GetOrientation(const char* deviceUniqueIdUTF8, return 0; } @@ -1439,7 +1427,7 @@ index e744940a8e7517b39a73509da3942c2cac9ee0c1..9ba6fe797ed0707137f9cf32b784544d } int32_t WindowDeviceInfoImpl::Init() { -@@ -357,9 +358,13 @@ int32_t DesktopCaptureImpl::Init() { +@@ -358,9 +359,13 @@ int32_t DesktopCaptureImpl::Init() { DesktopCapturer::SourceId sourceId = atoi(_deviceUniqueId.c_str()); pWindowCapturer->SelectSource(sourceId); @@ -1456,7 +1444,7 @@ index e744940a8e7517b39a73509da3942c2cac9ee0c1..9ba6fe797ed0707137f9cf32b784544d } else if (_deviceType == CaptureDeviceType::Browser) { // XXX We don't capture cursors, so avoid the extra indirection layer. We // could also pass null for the pMouseCursorMonitor. -@@ -376,13 +381,15 @@ int32_t DesktopCaptureImpl::Init() { +@@ -377,13 +382,15 @@ int32_t DesktopCaptureImpl::Init() { } DesktopCaptureImpl::DesktopCaptureImpl(const int32_t id, const char* uniqueId, @@ -1473,7 +1461,7 @@ index e744940a8e7517b39a73509da3942c2cac9ee0c1..9ba6fe797ed0707137f9cf32b784544d time_event_(EventWrapper::Create()), #if defined(_WIN32) capturer_thread_( -@@ -427,6 +434,19 @@ void DesktopCaptureImpl::DeRegisterCaptureDataCallback( +@@ -428,6 +435,19 @@ void DesktopCaptureImpl::DeRegisterCaptureDataCallback( } } @@ -1493,7 +1481,7 @@ index e744940a8e7517b39a73509da3942c2cac9ee0c1..9ba6fe797ed0707137f9cf32b784544d int32_t DesktopCaptureImpl::StopCaptureIfAllClientsClose() { if (_dataCallBacks.empty()) { return StopCapture(); -@@ -627,6 +647,12 @@ void DesktopCaptureImpl::OnCaptureResult(DesktopCapturer::Result result, +@@ -636,6 +656,12 @@ void DesktopCaptureImpl::OnCaptureResult(DesktopCapturer::Result result, frameInfo.height = frame->size().height(); frameInfo.videoType = VideoType::kARGB; @@ -1507,10 +1495,10 @@ index e744940a8e7517b39a73509da3942c2cac9ee0c1..9ba6fe797ed0707137f9cf32b784544d frameInfo.width * frameInfo.height * DesktopFrame::kBytesPerPixel; IncomingFrame(videoFrame, videoFrameLength, diff --git a/dom/media/systemservices/video_engine/desktop_capture_impl.h b/dom/media/systemservices/video_engine/desktop_capture_impl.h -index a07735e4f046b98d4380ecaa8327620e3819c4d8..29b9b63f1b8dfbcec302a5db49f1032205076795 100644 +index b725849dab1d1f898ab988e57a35c27e3eb44700..e2e13b0a0926475fe673fecf5e3c497569d158b3 100644 --- a/dom/media/systemservices/video_engine/desktop_capture_impl.h +++ b/dom/media/systemservices/video_engine/desktop_capture_impl.h -@@ -44,6 +44,21 @@ namespace webrtc { +@@ -46,6 +46,21 @@ namespace webrtc { class VideoCaptureEncodeInterface; @@ -1532,7 +1520,7 @@ index a07735e4f046b98d4380ecaa8327620e3819c4d8..29b9b63f1b8dfbcec302a5db49f10322 // simulate deviceInfo interface for video engine, bridge screen/application and // real screen/application device info -@@ -156,12 +171,13 @@ class BrowserDeviceInfoImpl : public VideoCaptureModule::DeviceInfo { +@@ -158,12 +173,13 @@ class BrowserDeviceInfoImpl : public VideoCaptureModule::DeviceInfo { // As with video, DesktopCaptureImpl is a proxy for screen sharing // and follows the video pipeline design class DesktopCaptureImpl : public DesktopCapturer::Callback, @@ -1549,7 +1537,7 @@ index a07735e4f046b98d4380ecaa8327620e3819c4d8..29b9b63f1b8dfbcec302a5db49f10322 static VideoCaptureModule::DeviceInfo* CreateDeviceInfo( const int32_t id, const CaptureDeviceType type); -@@ -171,6 +187,8 @@ class DesktopCaptureImpl : public DesktopCapturer::Callback, +@@ -173,6 +189,8 @@ class DesktopCaptureImpl : public DesktopCapturer::Callback, void DeRegisterCaptureDataCallback( rtc::VideoSinkInterface* dataCallback) override; int32_t StopCaptureIfAllClientsClose() override; @@ -1558,7 +1546,7 @@ index a07735e4f046b98d4380ecaa8327620e3819c4d8..29b9b63f1b8dfbcec302a5db49f10322 int32_t SetCaptureRotation(VideoRotation rotation) override; bool SetApplyRotation(bool enable) override; -@@ -191,7 +209,7 @@ class DesktopCaptureImpl : public DesktopCapturer::Callback, +@@ -193,7 +211,7 @@ class DesktopCaptureImpl : public DesktopCapturer::Callback, protected: DesktopCaptureImpl(const int32_t id, const char* uniqueId, @@ -1567,7 +1555,7 @@ index a07735e4f046b98d4380ecaa8327620e3819c4d8..29b9b63f1b8dfbcec302a5db49f10322 virtual ~DesktopCaptureImpl(); int32_t DeliverCapturedFrame(webrtc::VideoFrame& captureFrame); -@@ -213,6 +231,7 @@ class DesktopCaptureImpl : public DesktopCapturer::Callback, +@@ -215,6 +233,7 @@ class DesktopCaptureImpl : public DesktopCapturer::Callback, rtc::RecursiveCriticalSection _apiCs; std::set*> _dataCallBacks; @@ -1575,8 +1563,8 @@ index a07735e4f046b98d4380ecaa8327620e3819c4d8..29b9b63f1b8dfbcec302a5db49f10322 int64_t _incomingFrameTimesNanos [kFrameRateCountHistorySize]; // timestamp for local captured frames -@@ -234,6 +253,7 @@ class DesktopCaptureImpl : public DesktopCapturer::Callback, - void process(); +@@ -237,6 +256,7 @@ class DesktopCaptureImpl : public DesktopCapturer::Callback, + void ProcessIter(); private: + bool capture_cursor_ = true; @@ -1628,7 +1616,7 @@ index 8c8a5810fd56512cf37635da1f43757719f06113..d2bc58fcd3b05f989f948839d574d00d return aGlobalOrNull; diff --git a/dom/security/nsCSPUtils.cpp b/dom/security/nsCSPUtils.cpp -index 7c270d908b14088cb67e3d21919b7c7af447c190..c7b7123b7639995772aa23ae81f2c7f488ddb966 100644 +index b31ca1000cb1d7b8ca1af74b9ac0313aba053875..54abd38a35fc2b4906760c370d9f96d7f2ade0e2 100644 --- a/dom/security/nsCSPUtils.cpp +++ b/dom/security/nsCSPUtils.cpp @@ -127,6 +127,11 @@ void CSP_ApplyMetaCSPToDoc(mozilla::dom::Document& aDoc, @@ -1658,10 +1646,10 @@ index 2f71b284ee5f7e11f117c447834b48355784448c..d996e0a3cbbb19c1dc320c305c6d7403 * returned quads are further translated relative to the window * origin -- which is not the layout origin. Further translation diff --git a/dom/workers/RuntimeService.cpp b/dom/workers/RuntimeService.cpp -index c33dc6bea849ccd161a4e82a44ceb9b0d1dc54f3..12ad9ec8ad0c6c8671a4d3aa3cb75ffb0c96f5db 100644 +index 1422ee80d2ac3cf24304f3b2318ad0bc7da7efe7..1940994c96c2c714761d242f374973b08e81d51d 100644 --- a/dom/workers/RuntimeService.cpp +++ b/dom/workers/RuntimeService.cpp -@@ -958,7 +958,7 @@ void PrefLanguagesChanged(const char* /* aPrefName */, void* /* aClosure */) { +@@ -976,7 +976,7 @@ void PrefLanguagesChanged(const char* /* aPrefName */, void* /* aClosure */) { AssertIsOnMainThread(); nsTArray languages; @@ -1670,7 +1658,7 @@ index c33dc6bea849ccd161a4e82a44ceb9b0d1dc54f3..12ad9ec8ad0c6c8671a4d3aa3cb75ffb RuntimeService* runtime = RuntimeService::GetService(); if (runtime) { -@@ -1160,8 +1160,7 @@ bool RuntimeService::RegisterWorker(WorkerPrivate& aWorkerPrivate) { +@@ -1178,8 +1178,7 @@ bool RuntimeService::RegisterWorker(WorkerPrivate& aWorkerPrivate) { } // The navigator overridden properties should have already been read. @@ -1680,7 +1668,7 @@ index c33dc6bea849ccd161a4e82a44ceb9b0d1dc54f3..12ad9ec8ad0c6c8671a4d3aa3cb75ffb mNavigatorPropertiesLoaded = true; } -@@ -1760,6 +1759,13 @@ void RuntimeService::PropagateStorageAccessPermissionGranted( +@@ -1783,6 +1782,13 @@ void RuntimeService::PropagateStorageAccessPermissionGranted( } } @@ -1694,7 +1682,7 @@ index c33dc6bea849ccd161a4e82a44ceb9b0d1dc54f3..12ad9ec8ad0c6c8671a4d3aa3cb75ffb template void RuntimeService::BroadcastAllWorkers(const Func& aFunc) { AssertIsOnMainThread(); -@@ -2175,6 +2181,14 @@ void PropagateStorageAccessPermissionGrantedToWorkers( +@@ -2198,6 +2204,14 @@ void PropagateStorageAccessPermissionGrantedToWorkers( } } @@ -1710,10 +1698,10 @@ index c33dc6bea849ccd161a4e82a44ceb9b0d1dc54f3..12ad9ec8ad0c6c8671a4d3aa3cb75ffb MOZ_ASSERT(!NS_IsMainThread()); MOZ_ASSERT(aCx); diff --git a/dom/workers/RuntimeService.h b/dom/workers/RuntimeService.h -index ca44a269c65959940865853c5e40120eabb5101a..704ecf69807ccbc4bada4a9bcd0ce6343021a7cd 100644 +index ef32cc847e8b86319830bb93879aaf809fe464d4..5db3be0dc87e50ff75177194ca734313b22509d6 100644 --- a/dom/workers/RuntimeService.h +++ b/dom/workers/RuntimeService.h -@@ -111,6 +111,8 @@ class RuntimeService final : public nsIObserver { +@@ -110,6 +110,8 @@ class RuntimeService final : public nsIObserver { void PropagateStorageAccessPermissionGranted( const nsPIDOMWindowInner& aWindow); @@ -1723,10 +1711,10 @@ index ca44a269c65959940865853c5e40120eabb5101a..704ecf69807ccbc4bada4a9bcd0ce634 return mNavigatorProperties; } diff --git a/dom/workers/WorkerCommon.h b/dom/workers/WorkerCommon.h -index 8b1b46d69f2c90d851d292c285a1ba9bdbd4d9b7..dea5259b0a82e5e6d3c431fc78e60d5df80b3eda 100644 +index d10dabb5c5ff8e17851edf2bd2efc08e74584d8e..53c4070c5fde43b27fb8fbfdcf4c23d8af57fba3 100644 --- a/dom/workers/WorkerCommon.h +++ b/dom/workers/WorkerCommon.h -@@ -45,6 +45,8 @@ void ResumeWorkersForWindow(const nsPIDOMWindowInner& aWindow); +@@ -44,6 +44,8 @@ void ResumeWorkersForWindow(const nsPIDOMWindowInner& aWindow); void PropagateStorageAccessPermissionGrantedToWorkers( const nsPIDOMWindowInner& aWindow); @@ -1736,7 +1724,7 @@ index 8b1b46d69f2c90d851d292c285a1ba9bdbd4d9b7..dea5259b0a82e5e6d3c431fc78e60d5d bool IsWorkerGlobal(JSObject* global); diff --git a/dom/workers/WorkerPrivate.cpp b/dom/workers/WorkerPrivate.cpp -index 409142d06f9323621cd35b70e3a6d0eea4c00502..457f90743f27a6c9b6c988b477ff63908aa0e27d 100644 +index 957103c9baec027ed667ccea45cdde5f44961daf..2eb02b70b59c515d8c758cf576dac2b18c8df80e 100644 --- a/dom/workers/WorkerPrivate.cpp +++ b/dom/workers/WorkerPrivate.cpp @@ -695,6 +695,18 @@ class UpdateContextOptionsRunnable final : public WorkerControlRunnable { @@ -1758,7 +1746,7 @@ index 409142d06f9323621cd35b70e3a6d0eea4c00502..457f90743f27a6c9b6c988b477ff6390 class UpdateLanguagesRunnable final : public WorkerRunnable { nsTArray mLanguages; -@@ -1892,6 +1904,16 @@ void WorkerPrivate::UpdateContextOptions( +@@ -1925,6 +1937,16 @@ void WorkerPrivate::UpdateContextOptions( } } @@ -1775,7 +1763,7 @@ index 409142d06f9323621cd35b70e3a6d0eea4c00502..457f90743f27a6c9b6c988b477ff6390 void WorkerPrivate::UpdateLanguages(const nsTArray& aLanguages) { AssertIsOnParentThread(); -@@ -5053,6 +5075,15 @@ void WorkerPrivate::UpdateContextOptionsInternal( +@@ -5086,6 +5108,15 @@ void WorkerPrivate::UpdateContextOptionsInternal( } } @@ -1792,7 +1780,7 @@ index 409142d06f9323621cd35b70e3a6d0eea4c00502..457f90743f27a6c9b6c988b477ff6390 const nsTArray& aLanguages) { WorkerGlobalScope* globalScope = GlobalScope(); diff --git a/dom/workers/WorkerPrivate.h b/dom/workers/WorkerPrivate.h -index 43a0a10d14b2b52c1318d8678fc9d549381a811d..ed3b79125a412634853bc0ced6f108a21aa40453 100644 +index 1f31c4a6a94491cb6c981655e30e1fd42c4dbfc1..dbfdf4fc27f112e7cadbb768a858323f8ee919d1 100644 --- a/dom/workers/WorkerPrivate.h +++ b/dom/workers/WorkerPrivate.h @@ -330,6 +330,8 @@ class WorkerPrivate final @@ -1804,7 +1792,7 @@ index 43a0a10d14b2b52c1318d8678fc9d549381a811d..ed3b79125a412634853bc0ced6f108a2 void UpdateLanguagesInternal(const nsTArray& aLanguages); void UpdateJSWorkerMemoryParameterInternal(JSContext* aCx, JSGCParamKey key, -@@ -950,6 +952,8 @@ class WorkerPrivate final +@@ -966,6 +968,8 @@ class WorkerPrivate final void UpdateContextOptions(const JS::ContextOptions& aContextOptions); @@ -1866,10 +1854,10 @@ index bb69d58dc96ed7f0b37f73e26abdd0bdfeaaf556..8436d439f72287176a2fe6a1a837d3db inline ClippedTime TimeClip(double time); diff --git a/js/src/debugger/Object.cpp b/js/src/debugger/Object.cpp -index 838eb84e208a6ee101371ea05ce048615bcd1f1f..ee248d0069d2b710d6ec4279d88e4a63ede721f5 100644 +index 1c00fed8e0dc84b12c9b1c169d841e27402579a1..ad25cb5f8a0572c9c8622f85551b79dd2ffea819 100644 --- a/js/src/debugger/Object.cpp +++ b/js/src/debugger/Object.cpp -@@ -2371,7 +2371,11 @@ Maybe DebuggerObject::call(JSContext* cx, +@@ -2373,7 +2373,11 @@ Maybe DebuggerObject::call(JSContext* cx, invokeArgs[i].set(args2[i]); } @@ -1981,10 +1969,10 @@ index 3ce936fe3a4a83f9161eddc9e5289322d6a363e3..6b1c34244d8b2f2102ec423e2d96812f void internalResyncICUDefaultTimeZone(); diff --git a/layout/base/PresShell.cpp b/layout/base/PresShell.cpp -index 63f7f0524b0d87fb8b2950963888a27865a8d089..603d16543a7b0c4d20840ca5b2f12665dc310fa7 100644 +index 8cd1cee03620a33e3301373bb0ba3f1f0cfa062b..7100faf245bf35af3da20dba3dc49d4f65fcb8a5 100644 --- a/layout/base/PresShell.cpp +++ b/layout/base/PresShell.cpp -@@ -10886,7 +10886,9 @@ auto PresShell::ComputeActiveness() const -> Activeness { +@@ -10901,7 +10901,9 @@ auto PresShell::ComputeActiveness() const -> Activeness { if (!browserChild->IsVisible()) { MOZ_LOG(gLog, LogLevel::Debug, (" > BrowserChild %p is not visible", browserChild)); @@ -1996,10 +1984,10 @@ index 63f7f0524b0d87fb8b2950963888a27865a8d089..603d16543a7b0c4d20840ca5b2f12665 // If the browser is visible but just due to be preserving layers diff --git a/layout/style/GeckoBindings.h b/layout/style/GeckoBindings.h -index a384a0d00ce970a3e9db8983deaa012b45a76324..954bf59def43fdbb62924f35b45cde5f6c1a9fff 100644 +index 8b434ea8977e1c3a4a9238d00477dd012a170596..1980be6beff1b4dc7720eb9518ed2b265cc675e0 100644 --- a/layout/style/GeckoBindings.h +++ b/layout/style/GeckoBindings.h -@@ -586,6 +586,7 @@ void Gecko_MediaFeatures_GetDeviceSize(const mozilla::dom::Document*, +@@ -567,6 +567,7 @@ void Gecko_MediaFeatures_GetDeviceSize(const mozilla::dom::Document*, float Gecko_MediaFeatures_GetResolution(const mozilla::dom::Document*); bool Gecko_MediaFeatures_PrefersReducedMotion(const mozilla::dom::Document*); @@ -2040,10 +2028,10 @@ index f2723e654098ff27542e1eb16a536c11ad0af617..b0b480551ff7d895dfdeb5a980087485 /* Use accelerated SIMD routines. */ diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js -index 9db483dc45ff297064630effceb1d5f46c31905b..29a28d7a19c714ecaf79a77944912ad4a06e4f32 100644 +index 03fda287c5203648ac3535e57bcf94f6c78606fb..4f76df0900eada6c1eaae41a7f0cd2cf8480dfa0 100644 --- a/modules/libpref/init/all.js +++ b/modules/libpref/init/all.js -@@ -4531,7 +4531,9 @@ pref("devtools.experiment.f12.shortcut_disabled", false); +@@ -4341,7 +4341,9 @@ pref("devtools.experiment.f12.shortcut_disabled", false); // doesn't provide a way to lock the pref pref("dom.postMessage.sharedArrayBuffer.bypassCOOP_COEP.insecure.enabled", false); #else @@ -2114,10 +2102,10 @@ index 4504ade8e6b3be9404e0d72fd30f60939831ed0f..34988ac3ede846d0aaa0d4637439108f cmd = [strip] + flags + [path] if subprocess.call(cmd) != 0: diff --git a/security/manager/ssl/nsCertOverrideService.cpp b/security/manager/ssl/nsCertOverrideService.cpp -index 6f5713d20e23ab7e71499528e109e2446216338d..64f09ebaec26961cabedb1e6642f8e61f8fa68b8 100644 +index 153722c33b9db6475aa5134ad5b665051ac68658..74324d95f7088c65c3d52ab2a7c40e89901d9512 100644 --- a/security/manager/ssl/nsCertOverrideService.cpp +++ b/security/manager/ssl/nsCertOverrideService.cpp -@@ -570,7 +570,12 @@ nsCertOverrideService::HasMatchingOverride( +@@ -572,7 +572,12 @@ nsCertOverrideService::HasMatchingOverride( bool disableAllSecurityCheck = false; { MutexAutoLock lock(mMutex); @@ -2131,7 +2119,7 @@ index 6f5713d20e23ab7e71499528e109e2446216338d..64f09ebaec26961cabedb1e6642f8e61 } if (disableAllSecurityCheck) { nsCertOverride::OverrideBits all = nsCertOverride::OverrideBits::Untrusted | -@@ -774,14 +779,24 @@ static bool IsDebugger() { +@@ -789,14 +794,24 @@ static bool IsDebugger() { NS_IMETHODIMP nsCertOverrideService:: @@ -2160,17 +2148,17 @@ index 6f5713d20e23ab7e71499528e109e2446216338d..64f09ebaec26961cabedb1e6642f8e61 nsCOMPtr nss(do_GetService(PSM_COMPONENT_CONTRACTID)); diff --git a/security/manager/ssl/nsCertOverrideService.h b/security/manager/ssl/nsCertOverrideService.h -index 6f924246ee1c6c3bb118e643d7851c320a380664..ea3af29f08ec1e0aa5093ca375601a027c148fcb 100644 +index e601df1b13d9b2c028bffe6348d052960c80951c..0d782585199479db6218f4c72ed7b6133e3122b3 100644 --- a/security/manager/ssl/nsCertOverrideService.h +++ b/security/manager/ssl/nsCertOverrideService.h -@@ -133,6 +133,7 @@ class nsCertOverrideService final : public nsICertOverrideService, - ~nsCertOverrideService(); +@@ -134,6 +134,7 @@ class nsCertOverrideService final : public nsICertOverrideService, + + mozilla::Mutex mMutex; + bool mDisableAllSecurityCheck GUARDED_BY(mMutex); ++ mozilla::HashSet mUserContextIdsWithDisabledSecurityChecks GUARDED_BY(mMutex); + nsCOMPtr mSettingsFile GUARDED_BY(mMutex); + nsTHashtable mSettingsTable GUARDED_BY(mMutex); - mozilla::Mutex mMutex MOZ_UNANNOTATED; -+ mozilla::HashSet mUserContextIdsWithDisabledSecurityChecks; - bool mDisableAllSecurityCheck; - nsCOMPtr mSettingsFile; - nsTHashtable mSettingsTable; diff --git a/security/manager/ssl/nsICertOverrideService.idl b/security/manager/ssl/nsICertOverrideService.idl index 3862fe6830874c036592fd217cab7ad5f4cd3e27..3166b37db0e52f7f2972d2bcb7a72ed819805794 100644 --- a/security/manager/ssl/nsICertOverrideService.idl @@ -2187,20 +2175,20 @@ index 3862fe6830874c036592fd217cab7ad5f4cd3e27..3166b37db0e52f7f2972d2bcb7a72ed8 readonly attribute boolean securityCheckDisabled; }; diff --git a/services/settings/Utils.jsm b/services/settings/Utils.jsm -index 2c0b99fc4f26871d61d1a6dff37d344b17a3f9b7..fec985ec13a1a9b8e3f80a6eac02a388b713a213 100644 +index 23d6bf1a20bea134358347b43e8fc776a04617f3..12f96aece0b2c843c34815cafb80ff1b6b6528aa 100644 --- a/services/settings/Utils.jsm +++ b/services/settings/Utils.jsm -@@ -87,7 +87,7 @@ function _isUndefined(value) { +@@ -103,7 +103,7 @@ function _isUndefined(value) { var Utils = { get SERVER_URL() { -- return allowServerURLOverride -+ return true || allowServerURLOverride - ? gServerURL - : "https://firefox.settings.services.mozilla.com/v1"; +- return lazy.allowServerURLOverride ++ return true || lazy.allowServerURLOverride + ? lazy.gServerURL + : AppConstants.REMOTE_SETTINGS_SERVER_URL; }, diff --git a/servo/components/style/gecko/media_features.rs b/servo/components/style/gecko/media_features.rs -index 7923576fccceea26f0871662e15e0b64059f98aa..be5fe6fab7afba05c21016ed94b335663e9bba9b 100644 +index 8c93dfa24ce7810f004227fc0430338229a0bc3f..09a1f93dd027394345e910e00b765689490ac2a3 100644 --- a/servo/components/style/gecko/media_features.rs +++ b/servo/components/style/gecko/media_features.rs @@ -224,10 +224,15 @@ pub enum ForcedColors { @@ -2237,10 +2225,10 @@ index 4f7337926efbb086a2be97cdbcb3dca39e27c786..f2005cb726ff153d6b1011d6af0479db // ignored for Linux. const unsigned long CHROME_SUPPRESS_ANIMATION = 0x01000000; diff --git a/toolkit/components/enterprisepolicies/EnterprisePoliciesParent.jsm b/toolkit/components/enterprisepolicies/EnterprisePoliciesParent.jsm -index 6cf104c07f5140d881eed17783d404075766ed41..1d476170119aa9b9e1007ea25d8039e80bf6785b 100644 +index aecb28d95de7cc84a3e2010264a056e178cb11be..79b729d99e5d693d13223401ef72c7020c10fb1a 100644 --- a/toolkit/components/enterprisepolicies/EnterprisePoliciesParent.jsm +++ b/toolkit/components/enterprisepolicies/EnterprisePoliciesParent.jsm -@@ -115,6 +115,12 @@ EnterprisePoliciesManager.prototype = { +@@ -117,6 +117,12 @@ EnterprisePoliciesManager.prototype = { Services.prefs.clearUserPref(PREF_POLICIES_APPLIED); } @@ -2282,10 +2270,10 @@ index 3e9672fdfe9ddab8acd0f8b18772aece92bb3b64..83454a9c27c96d72597445653beaa014 int32_t aMaxSelfProgress, int32_t aCurTotalProgress, diff --git a/toolkit/components/windowwatcher/nsWindowWatcher.cpp b/toolkit/components/windowwatcher/nsWindowWatcher.cpp -index 0f8f1560e734dd82ffdace9edf755d525a0028d9..9f0c24184dc09b31c8f0629a946d9ec0dfeec58f 100644 +index 33ffbeb8e969eccd0c40effc693d9191aab15891..386c3e76fdff6b6e60917ebf2ecf7595598ac57f 100644 --- a/toolkit/components/windowwatcher/nsWindowWatcher.cpp +++ b/toolkit/components/windowwatcher/nsWindowWatcher.cpp -@@ -1813,7 +1813,11 @@ uint32_t nsWindowWatcher::CalculateChromeFlagsForContent( +@@ -1814,7 +1814,11 @@ uint32_t nsWindowWatcher::CalculateChromeFlagsForContent( // Open a minimal popup. *aIsPopupRequested = true; @@ -2299,23 +2287,23 @@ index 0f8f1560e734dd82ffdace9edf755d525a0028d9..9f0c24184dc09b31c8f0629a946d9ec0 /** diff --git a/toolkit/mozapps/update/UpdateService.jsm b/toolkit/mozapps/update/UpdateService.jsm -index d27d58cdb99a3c87469b0d5a398f592b46d41b24..eae73182410c09077497199fb4c5b35bedddfe2d 100644 +index 285568a708854e5afb33268ccf8e7a2f3b4d4dcb..4667eb22474863c44e43e46f524b3362d14dcade 100644 --- a/toolkit/mozapps/update/UpdateService.jsm +++ b/toolkit/mozapps/update/UpdateService.jsm -@@ -3594,6 +3594,8 @@ UpdateService.prototype = { +@@ -3608,6 +3608,8 @@ UpdateService.prototype = { }, get disabledForTesting() { + /* for playwright */ + return true; return ( - (Cu.isInAutomation || Marionette.running || RemoteAgent.running) && - Services.prefs.getBoolPref(PREF_APP_UPDATE_DISABLEDFORTESTING, false) + (Cu.isInAutomation || + lazy.Marionette.running || diff --git a/toolkit/toolkit.mozbuild b/toolkit/toolkit.mozbuild -index 79df0d9e61a645f23d1c9544841f6963a94fc43c..60423fb04d43a56160c6409bbef1aa6d93fd93be 100644 +index 1241f1b0f94e0965b517898167ca1b52cfb48dc5..39c14eb7c548b81d564bd2a4ed15c70a920e173c 100644 --- a/toolkit/toolkit.mozbuild +++ b/toolkit/toolkit.mozbuild -@@ -160,6 +160,7 @@ if CONFIG['ENABLE_WEBDRIVER']: +@@ -154,6 +154,7 @@ if CONFIG['ENABLE_WEBDRIVER']: '/remote', '/testing/firefox-ui', '/testing/marionette', @@ -2379,10 +2367,10 @@ index 9ca3975c99c8bff3829bce1cf49d1235910c3ab8..6606eb02fba53ea8bd401d07460b85b0 // nsDocumentViewer::LoadComplete that doesn't do various things // that are not relevant here because this wasn't an actual diff --git a/uriloader/exthandler/nsExternalHelperAppService.cpp b/uriloader/exthandler/nsExternalHelperAppService.cpp -index 1ddfd9f652e581a3afc2bdb35bc5ff8b2aec65d7..2bf7e5db98a275e46d94b199b0f61ed4be5b76a5 100644 +index 3aaf69cd26156e497e46e5b714db1c2de2ba8c38..015533b2cba80b842e5a82a438e350d2dcdcad47 100644 --- a/uriloader/exthandler/nsExternalHelperAppService.cpp +++ b/uriloader/exthandler/nsExternalHelperAppService.cpp -@@ -107,6 +107,7 @@ +@@ -110,6 +110,7 @@ #include "mozilla/Components.h" #include "mozilla/ClearOnShutdown.h" @@ -2390,7 +2378,7 @@ index 1ddfd9f652e581a3afc2bdb35bc5ff8b2aec65d7..2bf7e5db98a275e46d94b199b0f61ed4 #include "mozilla/Preferences.h" #include "mozilla/ipc/URIUtils.h" -@@ -995,6 +996,12 @@ NS_IMETHODIMP nsExternalHelperAppService::ApplyDecodingForExtension( +@@ -834,6 +835,12 @@ NS_IMETHODIMP nsExternalHelperAppService::ApplyDecodingForExtension( return NS_OK; } @@ -2403,7 +2391,7 @@ index 1ddfd9f652e581a3afc2bdb35bc5ff8b2aec65d7..2bf7e5db98a275e46d94b199b0f61ed4 nsresult nsExternalHelperAppService::GetFileTokenForPath( const char16_t* aPlatformAppPath, nsIFile** aFile) { nsDependentString platformAppPath(aPlatformAppPath); -@@ -1721,7 +1728,12 @@ nsresult nsExternalAppHandler::SetUpTempFile(nsIChannel* aChannel) { +@@ -1443,7 +1450,12 @@ nsresult nsExternalAppHandler::SetUpTempFile(nsIChannel* aChannel) { // Strip off the ".part" from mTempLeafName mTempLeafName.Truncate(mTempLeafName.Length() - ArrayLength(".part") + 1); @@ -2416,7 +2404,7 @@ index 1ddfd9f652e581a3afc2bdb35bc5ff8b2aec65d7..2bf7e5db98a275e46d94b199b0f61ed4 mSaver = do_CreateInstance(NS_BACKGROUNDFILESAVERSTREAMLISTENER_CONTRACTID, &rv); NS_ENSURE_SUCCESS(rv, rv); -@@ -1912,7 +1924,36 @@ NS_IMETHODIMP nsExternalAppHandler::OnStartRequest(nsIRequest* request) { +@@ -1634,7 +1646,36 @@ NS_IMETHODIMP nsExternalAppHandler::OnStartRequest(nsIRequest* request) { return NS_OK; } @@ -2454,7 +2442,7 @@ index 1ddfd9f652e581a3afc2bdb35bc5ff8b2aec65d7..2bf7e5db98a275e46d94b199b0f61ed4 if (NS_FAILED(rv)) { nsresult transferError = rv; -@@ -1967,6 +2008,9 @@ NS_IMETHODIMP nsExternalAppHandler::OnStartRequest(nsIRequest* request) { +@@ -1689,6 +1730,9 @@ NS_IMETHODIMP nsExternalAppHandler::OnStartRequest(nsIRequest* request) { bool alwaysAsk = true; mMimeInfo->GetAlwaysAskBeforeHandling(&alwaysAsk); @@ -2464,7 +2452,7 @@ index 1ddfd9f652e581a3afc2bdb35bc5ff8b2aec65d7..2bf7e5db98a275e46d94b199b0f61ed4 if (alwaysAsk) { // But we *don't* ask if this mimeInfo didn't come from // our user configuration datastore and the user has said -@@ -2532,6 +2576,16 @@ nsExternalAppHandler::OnSaveComplete(nsIBackgroundFileSaver* aSaver, +@@ -2254,6 +2298,16 @@ nsExternalAppHandler::OnSaveComplete(nsIBackgroundFileSaver* aSaver, NotifyTransfer(aStatus); } @@ -2481,7 +2469,7 @@ index 1ddfd9f652e581a3afc2bdb35bc5ff8b2aec65d7..2bf7e5db98a275e46d94b199b0f61ed4 return NS_OK; } -@@ -3005,6 +3059,15 @@ NS_IMETHODIMP nsExternalAppHandler::Cancel(nsresult aReason) { +@@ -2733,6 +2787,15 @@ NS_IMETHODIMP nsExternalAppHandler::Cancel(nsresult aReason) { } } @@ -2498,10 +2486,10 @@ index 1ddfd9f652e581a3afc2bdb35bc5ff8b2aec65d7..2bf7e5db98a275e46d94b199b0f61ed4 // OnStartRequest) mDialog = nullptr; diff --git a/uriloader/exthandler/nsExternalHelperAppService.h b/uriloader/exthandler/nsExternalHelperAppService.h -index 0d4b2bde66c7d75214587cb7aa4768bcb9b5821c..c47e275ab5d334d01663e3d363b8c2365d5088b9 100644 +index f8832bbde4042df9631794ca45886dcb02b60457..6a28695117997f1fd3753a75c94bc0e67e49d215 100644 --- a/uriloader/exthandler/nsExternalHelperAppService.h +++ b/uriloader/exthandler/nsExternalHelperAppService.h -@@ -215,6 +215,8 @@ class nsExternalHelperAppService : public nsIExternalHelperAppService, +@@ -241,6 +241,8 @@ class nsExternalHelperAppService : public nsIExternalHelperAppService, mozilla::dom::BrowsingContext* aContentContext, bool aForceSave, nsIInterfaceRequestor* aWindowContext, nsIStreamListener** aStreamListener); @@ -2510,7 +2498,7 @@ index 0d4b2bde66c7d75214587cb7aa4768bcb9b5821c..c47e275ab5d334d01663e3d363b8c236 }; /** -@@ -411,6 +413,9 @@ class nsExternalAppHandler final : public nsIStreamListener, +@@ -437,6 +439,9 @@ class nsExternalAppHandler final : public nsIStreamListener, * Upon successful return, both mTempFile and mSaver will be valid. */ nsresult SetUpTempFile(nsIChannel* aChannel); @@ -2800,10 +2788,10 @@ index 7f91de9e67d7ffa02de3eef1d760e5cfd05e7ad6..753b8902026626e8f0a190ea3130ba5e } // namespace widget diff --git a/widget/headless/HeadlessWidget.cpp b/widget/headless/HeadlessWidget.cpp -index a79d86ce6f8f6ffda89739bf735f2c3f5abffe21..43684040367d7888263bf65a908f0757ad2fcad8 100644 +index c1fbcccc93d9a6876aa82893cdf9c09b72087751..7a8073e3b746aec3a894957e87975189c06782d3 100644 --- a/widget/headless/HeadlessWidget.cpp +++ b/widget/headless/HeadlessWidget.cpp -@@ -108,6 +108,8 @@ void HeadlessWidget::Destroy() { +@@ -109,6 +109,8 @@ void HeadlessWidget::Destroy() { } } @@ -2812,7 +2800,7 @@ index a79d86ce6f8f6ffda89739bf735f2c3f5abffe21..43684040367d7888263bf65a908f0757 nsBaseWidget::OnDestroy(); nsBaseWidget::Destroy(); -@@ -559,5 +561,15 @@ nsresult HeadlessWidget::SynthesizeNativeTouchPadPinch( +@@ -564,5 +566,15 @@ nsresult HeadlessWidget::SynthesizeNativeTouchPadPinch( DispatchPinchGestureInput(inputToDispatch); return NS_OK; } @@ -2829,10 +2817,10 @@ index a79d86ce6f8f6ffda89739bf735f2c3f5abffe21..43684040367d7888263bf65a908f0757 } // namespace widget } // namespace mozilla diff --git a/widget/headless/HeadlessWidget.h b/widget/headless/HeadlessWidget.h -index a9ba98c048b51eece158b9a04ff2770f4c7afa76..de8d25ffd94ff92dde3ece18e9b6d7df98a995c5 100644 +index 2b80eea70e58dd53c34edd9c5fa4415c42bcd632..72ecda7d8ddc7a9f87a954b547f8411e67ef1570 100644 --- a/widget/headless/HeadlessWidget.h +++ b/widget/headless/HeadlessWidget.h -@@ -134,6 +134,9 @@ class HeadlessWidget : public nsBaseWidget { +@@ -135,6 +135,9 @@ class HeadlessWidget : public nsBaseWidget { TouchpadGesturePhase aEventPhase, float aScale, LayoutDeviceIntPoint aPoint, int32_t aModifierFlags) override; @@ -2843,7 +2831,7 @@ index a9ba98c048b51eece158b9a04ff2770f4c7afa76..de8d25ffd94ff92dde3ece18e9b6d7df ~HeadlessWidget(); bool mEnabled; diff --git a/widget/windows/nsAppShell.cpp b/widget/windows/nsAppShell.cpp -index 5b0d22b5c4a8d8bd5cd907c519a7afbd07faa6fb..ef8e98cce9b9f851a2f3b8af2c3ed3c0ce8e83a1 100644 +index e2cf83f3d6ee0b120bb22f46aa873d3bd6436cd0..8ea269c8de520d3a9eed42f99f66ad28f5e63fbc 100644 --- a/widget/windows/nsAppShell.cpp +++ b/widget/windows/nsAppShell.cpp @@ -17,7 +17,9 @@ @@ -2858,7 +2846,7 @@ index 5b0d22b5c4a8d8bd5cd907c519a7afbd07faa6fb..ef8e98cce9b9f851a2f3b8af2c3ed3c0 #include "nsIDOMWakeLockListener.h" #include "nsIPowerManagerService.h" diff --git a/xpcom/reflect/xptinfo/xptinfo.h b/xpcom/reflect/xptinfo/xptinfo.h -index efee881c142175c29d15f7ceaaebf852f39e44cd..014bf4b39b99eaf2fba6fb08827e7d2f964bab33 100644 +index 2456c2c2b58b27cd595880b547ed20fb687a1835..e967c089b2331c7cd36d34e511543fbc84320b7d 100644 --- a/xpcom/reflect/xptinfo/xptinfo.h +++ b/xpcom/reflect/xptinfo/xptinfo.h @@ -514,7 +514,7 @@ static_assert(sizeof(nsXPTMethodInfo) == 8, "wrong size"); diff --git a/browser_patches/firefox-beta/preferences/playwright.cfg b/browser_patches/firefox-beta/preferences/playwright.cfg index e55d07a4f4..f58a6d10d4 100644 --- a/browser_patches/firefox-beta/preferences/playwright.cfg +++ b/browser_patches/firefox-beta/preferences/playwright.cfg @@ -54,6 +54,7 @@ pref("ui.use_standins_for_native_colors", true); pref("permissions.isolateBy.userContext", true); pref("dom.push.serverURL", ""); +// This setting breaks settings loading. pref("services.settings.server", ""); pref("browser.safebrowsing.provider.mozilla.updateURL", ""); pref("browser.library.activity-stream.enabled", false); @@ -263,9 +264,6 @@ pref("security.fileuri.strict_origin_policy", false); // Tests do not wait for the notification button security delay pref("security.notification_enable_delay", 0); -// Ensure blocklist updates do not hit the network -pref("services.settings.server", ""); - // Do not automatically fill sign-in forms with known usernames and // passwords pref("signon.autofillForms", false); diff --git a/tests/config/browserTest.ts b/tests/config/browserTest.ts index d57a33c28e..ff45579e8b 100644 --- a/tests/config/browserTest.ts +++ b/tests/config/browserTest.ts @@ -53,7 +53,14 @@ const test = baseTest.extend }, { scope: 'worker' } ], defaultSameSiteCookieValue: [async ({ browserName, browserMajorVersion }, run) => { - await run(browserName === 'chromium' || (browserName === 'firefox' && browserMajorVersion >= 96 && browserMajorVersion < 97) ? 'Lax' : 'None'); + if (browserName === 'chromium') + await run('Lax'); + else if (browserName === 'webkit') + await run('None'); + else if (browserName === 'firefox') + await run(browserMajorVersion === 96 || browserMajorVersion >= 103 ? 'Lax' : 'None'); + else + throw new Error('unknown browser - ' + browserName); }, { scope: 'worker' } ], browserMajorVersion: [async ({ browserVersion }, run) => { diff --git a/tests/library/browsercontext-add-cookies.spec.ts b/tests/library/browsercontext-add-cookies.spec.ts index 96e0a64d78..6fef472813 100644 --- a/tests/library/browsercontext-add-cookies.spec.ts +++ b/tests/library/browsercontext-add-cookies.spec.ts @@ -366,7 +366,7 @@ it('should(not) block third party cookies', async ({ context, page, server, brow }, server.CROSS_PROCESS_PREFIX + '/grid.html'); await page.frames()[1].evaluate(`document.cookie = 'username=John Doe'`); await page.waitForTimeout(2000); - const allowsThirdParty = browserName === 'firefox' && browserMajorVersion >= 97; + const allowsThirdParty = browserName === 'firefox' && (browserMajorVersion >= 97 && browserMajorVersion < 103); const cookies = await context.cookies(server.CROSS_PROCESS_PREFIX + '/grid.html'); if (allowsThirdParty) { expect(cookies).toEqual([ diff --git a/tests/library/defaultbrowsercontext-1.spec.ts b/tests/library/defaultbrowsercontext-1.spec.ts index f0a886dd31..c9cbd0adba 100644 --- a/tests/library/defaultbrowsercontext-1.spec.ts +++ b/tests/library/defaultbrowsercontext-1.spec.ts @@ -97,7 +97,7 @@ it('should(not) block third party cookies', async ({ server, launchPersistent, b return document.cookie; }); await page.waitForTimeout(2000); - const allowsThirdParty = browserName === 'firefox' && browserMajorVersion >= 97; + const allowsThirdParty = browserName === 'firefox' && (browserMajorVersion >= 97 && browserMajorVersion < 103); expect(documentCookie).toBe(allowsThirdParty ? 'username=John Doe' : ''); const cookies = await context.cookies(server.CROSS_PROCESS_PREFIX + '/grid.html'); if (allowsThirdParty) { diff --git a/tests/library/headful.spec.ts b/tests/library/headful.spec.ts index a1e669466c..7017dba9ef 100644 --- a/tests/library/headful.spec.ts +++ b/tests/library/headful.spec.ts @@ -104,7 +104,7 @@ it('should(not) block third party cookies', async ({ browserType, server, browse return document.cookie; }); await page.waitForTimeout(2000); - const allowsThirdParty = browserName === 'firefox' && browserMajorVersion >= 97; + const allowsThirdParty = browserName === 'firefox' && (browserMajorVersion >= 97 && browserMajorVersion < 103); expect(documentCookie).toBe(allowsThirdParty ? 'username=John Doe' : ''); const cookies = await page.context().cookies(server.CROSS_PROCESS_PREFIX + '/grid.html'); if (allowsThirdParty) {