From 0c4bed191fccef206cd0f8040c4636e7c5ee4c57 Mon Sep 17 00:00:00 2001 From: Andrey Lushnikov Date: Mon, 24 Apr 2023 21:28:08 +0000 Subject: [PATCH] chore: update browser patches as of Mar 14, 2023 (#22603) Internal commit reference: https://github.com/microsoft/playwright-browsers/commit/e994525a6d93ad6324366b1231c331581fee34a8 --- browser_patches/firefox/UPSTREAM_CONFIG.sh | 2 +- .../firefox/juggler/JugglerFrameParent.jsm | 7 + .../firefox/juggler/NetworkObserver.js | 9 +- .../firefox/juggler/TargetRegistry.js | 15 +- .../firefox/juggler/content/FrameTree.js | 107 +- .../firefox/juggler/content/Runtime.js | 8 +- .../firefox/juggler/content/main.js | 2 +- .../juggler/protocol/BrowserHandler.js | 6 + .../firefox/juggler/protocol/PageHandler.js | 141 +- .../firefox/juggler/protocol/Protocol.js | 6 +- .../firefox/patches/bootstrap.diff | 225 +- .../firefox/preferences/playwright.cfg | 9 + browser_patches/webkit/UPSTREAM_CONFIG.sh | 2 +- browser_patches/webkit/patches/bootstrap.diff | 2002 ++++++++--------- 14 files changed, 1228 insertions(+), 1313 deletions(-) diff --git a/browser_patches/firefox/UPSTREAM_CONFIG.sh b/browser_patches/firefox/UPSTREAM_CONFIG.sh index 29e1497d59..710ea215f1 100644 --- a/browser_patches/firefox/UPSTREAM_CONFIG.sh +++ b/browser_patches/firefox/UPSTREAM_CONFIG.sh @@ -1,3 +1,3 @@ REMOTE_URL="https://github.com/mozilla/gecko-dev" BASE_BRANCH="release" -BASE_REVISION="fe696abae79ffbfa13037a5d9bd3a2e2b293f2af" +BASE_REVISION="250178df19caa1fb25bfa0e35728426cfbde95f8" diff --git a/browser_patches/firefox/juggler/JugglerFrameParent.jsm b/browser_patches/firefox/juggler/JugglerFrameParent.jsm index da234ac7c7..e621fab240 100644 --- a/browser_patches/firefox/juggler/JugglerFrameParent.jsm +++ b/browser_patches/firefox/juggler/JugglerFrameParent.jsm @@ -15,6 +15,13 @@ class JugglerFrameParent extends JSWindowActorParent { receiveMessage() { } async actorCreated() { + // Actors are registered per the WindowGlobalParent / WindowGlobalChild pair. We are only + // interested in those WindowGlobalParent actors that are matching current browsingContext + // window global. + // See https://github.com/mozilla/gecko-dev/blob/cd2121e7d83af1b421c95e8c923db70e692dab5f/testing/mochitest/BrowserTestUtils/BrowserTestUtilsParent.sys.mjs#L15 + if (!this.manager?.isCurrentGlobal) + return; + // Only interested in main frames for now. if (this.browsingContext.parent) return; diff --git a/browser_patches/firefox/juggler/NetworkObserver.js b/browser_patches/firefox/juggler/NetworkObserver.js index 2610b37f41..26791c5e56 100644 --- a/browser_patches/firefox/juggler/NetworkObserver.js +++ b/browser_patches/firefox/juggler/NetworkObserver.js @@ -300,6 +300,9 @@ class NetworkRequest { } if (!credentials) return false; + const origin = aChannel.URI.scheme + '://' + aChannel.URI.hostPort; + if (credentials.origin && origin.toLowerCase() !== credentials.origin.toLowerCase()) + return false; authInfo.username = credentials.username; authInfo.password = credentials.password; // This will produce a new request with respective auth header set. @@ -464,9 +467,11 @@ class NetworkRequest { } _fallThroughInterceptController() { - if (!this._previousCallbacks || !(this._previousCallbacks instanceof Ci.nsINetworkInterceptController)) + try { + return this._previousCallbacks?.getInterface(Ci.nsINetworkInterceptController); + } catch (e) { return undefined; - return this._previousCallbacks.getInterface(Ci.nsINetworkInterceptController); + } } _sendOnRequest(isIntercepted) { diff --git a/browser_patches/firefox/juggler/TargetRegistry.js b/browser_patches/firefox/juggler/TargetRegistry.js index 80195058f6..bf8243f53b 100644 --- a/browser_patches/firefox/juggler/TargetRegistry.js +++ b/browser_patches/firefox/juggler/TargetRegistry.js @@ -386,7 +386,7 @@ class PageTarget { const tabBrowser = ownerWindow.gBrowser; // Serialize all tab-switching commands per tabbed browser // to disallow concurrent tab switching. - tabBrowser.__serializedChain = (tabBrowser.__serializedChain ?? Promise.resolve()).then(async () => { + const result = (tabBrowser.__serializedChain ?? Promise.resolve()).then(async () => { this._window.focus(); if (tabBrowser.selectedTab !== this._tab) { const promise = helper.awaitEvent(ownerWindow, 'TabSwitchDone'); @@ -395,7 +395,8 @@ class PageTarget { } await callback(); }); - return tabBrowser.__serializedChain; + tabBrowser.__serializedChain = result.catch(error => { /* swallow errors to keep chain running */ }); + return result; } frameIdToBrowsingContext(frameId) { @@ -702,7 +703,17 @@ class PageTarget { screencastService.stopVideoRecording(screencastId); } + ensureContextMenuClosed() { + // Close context menu, if any, since it might capture mouse events on Linux + // and prevent browser shutdown on MacOS. + const doc = this._linkedBrowser.ownerDocument; + const contextMenu = doc.getElementById("contentAreaContextMenu"); + if (contextMenu) + contextMenu.hidePopup(); + } + dispose() { + this.ensureContextMenuClosed(); this._disposed = true; if (this._videoRecordingInfo) this._stopVideoRecording(); diff --git a/browser_patches/firefox/juggler/content/FrameTree.js b/browser_patches/firefox/juggler/content/FrameTree.js index 680ec5303d..f6468df05a 100644 --- a/browser_patches/firefox/juggler/content/FrameTree.js +++ b/browser_patches/firefox/juggler/content/FrameTree.js @@ -14,10 +14,12 @@ const {Runtime} = ChromeUtils.import('chrome://juggler/content/content/Runtime.j const helper = new Helper(); class FrameTree { - constructor(rootDocShell) { + constructor(rootBrowsingContext) { helper.decorateAsEventEmitter(this); - this._browsingContextGroup = rootDocShell.browsingContext.group; + this._rootBrowsingContext = rootBrowsingContext; + + this._browsingContextGroup = rootBrowsingContext.group; if (!this._browsingContextGroup.__jugglerFrameTrees) this._browsingContextGroup.__jugglerFrameTrees = new Set(); this._browsingContextGroup.__jugglerFrameTrees.add(this); @@ -29,12 +31,14 @@ class FrameTree { this._runtime = new Runtime(false /* isWorker */); this._workers = new Map(); - this._docShellToFrame = new Map(); this._frameIdToFrame = new Map(); this._pageReady = false; this._javaScriptDisabled = false; - this._mainFrame = this._createFrame(rootDocShell); - const webProgress = rootDocShell.QueryInterface(Ci.nsIInterfaceRequestor) + for (const browsingContext of helper.collectAllBrowsingContexts(rootBrowsingContext)) + this._createFrame(browsingContext); + this._mainFrame = this.frameForBrowsingContext(rootBrowsingContext); + + const webProgress = rootBrowsingContext.docShell.QueryInterface(Ci.nsIInterfaceRequestor) .getInterface(Ci.nsIWebProgress); this.QueryInterface = ChromeUtils.generateQI([ Ci.nsIWebProgressListener, @@ -58,7 +62,7 @@ class FrameTree { Ci.nsIWebProgress.NOTIFY_LOCATION; this._eventListeners = [ helper.addObserver((docShell, topic, loadIdentifier) => { - const frame = this._docShellToFrame.get(docShell); + const frame = this.frameForDocShell(docShell); if (!frame) return; frame._pendingNavigationId = helper.toProtocolNavigationId(loadIdentifier); @@ -66,8 +70,12 @@ class FrameTree { }, 'juggler-navigation-started-renderer'), helper.addObserver(this._onDOMWindowCreated.bind(this), 'content-document-global-created'), helper.addObserver(this._onDOMWindowCreated.bind(this), 'juggler-dom-window-reused'), - helper.addObserver(subject => this._onDocShellCreated(subject.QueryInterface(Ci.nsIDocShell)), 'webnavigation-create'), - helper.addObserver(subject => this._onDocShellDestroyed(subject.QueryInterface(Ci.nsIDocShell)), 'webnavigation-destroy'), + helper.addObserver((browsingContext, topic, why) => { + this._onBrowsingContextAttached(browsingContext); + }, 'browsing-context-attached'), + helper.addObserver((browsingContext, topic, why) => { + this._onBrowsingContextDetached(browsingContext); + }, 'browsing-context-discarded'), helper.addProgressListener(webProgress, this, flags), ]; @@ -114,8 +122,7 @@ class FrameTree { return null; if (!workerDebugger.window) return null; - const docShell = workerDebugger.window.docShell; - return this._docShellToFrame.get(docShell) || null; + return this.frameForDocShell(workerDebugger.window.docShell); } _onDOMWindowCreated(window) { @@ -127,7 +134,7 @@ class FrameTree { window.windowUtils.addSheet(sheet, styleSheetService.AGENT_SHEET); window[this._addedScrollbarsStylesheetSymbol] = true; } - const frame = this._docShellToFrame.get(window.docShell) || null; + const frame = this.frameForDocShell(window.docShell); if (!frame) return; frame._onGlobalObjectCleared(); @@ -202,8 +209,18 @@ class FrameTree { frame._addBinding(worldName, name, script); } + frameForBrowsingContext(browsingContext) { + if (!browsingContext) + return null; + const frameId = helper.browsingContextToFrameId(browsingContext); + return this._frameIdToFrame.get(frameId) ?? null; + } + frameForDocShell(docShell) { - return this._docShellToFrame.get(docShell) || null; + if (!docShell) + return null; + const frameId = helper.browsingContextToFrameId(docShell.browsingContext); + return this._frameIdToFrame.get(frameId) ?? null; } frame(frameId) { @@ -246,9 +263,9 @@ class FrameTree { return; const docShell = event.target.ownerGlobal.docShell; - const frame = this._docShellToFrame.get(docShell); + const frame = this.frameForDocShell(docShell); if (!frame) { - dump(`WARNING: ${event.type} for unknown frame ${docShell.browsingContext.id}\n`); + dump(`WARNING: ${event.type} for unknown frame ${helper.browsingContextToFrameId(docShell.browsingContext)}\n`); return; } if (frame._pendingNavigationId) { @@ -292,7 +309,7 @@ class FrameTree { return; const channel = request.QueryInterface(Ci.nsIChannel); const docShell = progress.DOMWindow.docShell; - const frame = this._docShellToFrame.get(docShell); + const frame = this.frameForDocShell(docShell); if (!frame) return; @@ -317,7 +334,7 @@ class FrameTree { onLocationChange(progress, request, location, flags) { const docShell = progress.DOMWindow.docShell; - const frame = this._docShellToFrame.get(docShell); + const frame = this.frameForDocShell(docShell); const sameDocumentNavigation = !!(flags & Ci.nsIWebProgressListener.LOCATION_CHANGE_SAME_DOCUMENT); if (frame && sameDocumentNavigation) { frame._url = location.spec; @@ -325,30 +342,29 @@ class FrameTree { } } - _onDocShellCreated(docShell) { - // Bug 1142752: sometimes, the docshell appears to be immediately - // destroyed, bailout early to prevent random exceptions. - if (docShell.isBeingDestroyed()) + _onBrowsingContextAttached(browsingContext) { + // If this browsing context doesn't belong to our frame tree - do nothing. + if (browsingContext.top !== this._rootBrowsingContext) return; - // If this docShell doesn't belong to our frame tree - do nothing. - let root = docShell; - while (root.parent) - root = root.parent; - if (root === this._mainFrame._docShell) - this._createFrame(docShell); + this._createFrame(browsingContext); } - _createFrame(docShell) { - const parentFrame = this._docShellToFrame.get(docShell.parent) || null; + _onBrowsingContextDetached(browsingContext) { + const frame = this.frameForBrowsingContext(browsingContext); + if (frame) + this._detachFrame(frame); + } + + _createFrame(browsingContext) { + const parentFrame = this.frameForBrowsingContext(browsingContext.parent); if (!parentFrame && this._mainFrame) { dump(`WARNING: found docShell with the same root, but no parent!\n`); return; } - const frame = new Frame(this, this._runtime, docShell, parentFrame); - this._docShellToFrame.set(docShell, frame); + const frame = new Frame(this, this._runtime, browsingContext, parentFrame); this._frameIdToFrame.set(frame.id(), frame); - if (docShell.domWindow && docShell.domWindow.location) - frame._url = docShell.domWindow.location.href; + if (browsingContext.docShell?.domWindow && browsingContext.docShell?.domWindow.location) + frame._url = browsingContext.docShell.domWindow.location.href; this.emit(FrameTree.Events.FrameAttached, frame); // Create execution context **after** reporting frame. // This is our protocol contract. @@ -357,12 +373,6 @@ class FrameTree { return frame; } - _onDocShellDestroyed(docShell) { - const frame = this._docShellToFrame.get(docShell); - if (frame) - this._detachFrame(frame); - } - _detachFrame(frame) { // Detach all children first for (const subframe of frame._children) @@ -372,7 +382,6 @@ class FrameTree { // as it confuses the client. return; } - this._docShellToFrame.delete(frame._docShell); this._frameIdToFrame.delete(frame.id()); if (frame._parentFrame) frame._parentFrame._children.delete(frame); @@ -409,12 +418,12 @@ class IsolatedWorld { } class Frame { - constructor(frameTree, runtime, docShell, parentFrame) { + constructor(frameTree, runtime, browsingContext, parentFrame) { this._frameTree = frameTree; this._runtime = runtime; - this._docShell = docShell; + this._browsingContext = browsingContext; this._children = new Set(); - this._frameId = helper.browsingContextToFrameId(this._docShell.browsingContext); + this._frameId = helper.browsingContextToFrameId(browsingContext); this._parentFrame = null; this._url = ''; if (parentFrame) { @@ -556,7 +565,7 @@ class Frame { _onGlobalObjectCleared() { const webSocketService = this._frameTree._webSocketEventService; - if (this._webSocketListenerInnerWindowId) + if (this._webSocketListenerInnerWindowId && webSocketService.hasListenerFor(this._webSocketListenerInnerWindowId)) webSocketService.removeListener(this._webSocketListenerInnerWindowId, this._webSocketListener); this._webSocketListenerInnerWindowId = this.domWindow().windowGlobalChild.innerWindowId; webSocketService.addListener(this._webSocketListenerInnerWindowId, this._webSocketListener); @@ -591,8 +600,8 @@ class Frame { } _updateJavaScriptDisabled() { - if (this._docShell.browsingContext.currentWindowContext) - this._docShell.browsingContext.currentWindowContext.allowJavascript = !this._frameTree._javaScriptDisabled; + if (this._browsingContext.currentWindowContext) + this._browsingContext.currentWindowContext.allowJavascript = !this._frameTree._javaScriptDisabled; } mainExecutionContext() { @@ -603,7 +612,7 @@ class Frame { if (!this._textInputProcessor) { this._textInputProcessor = Cc["@mozilla.org/text-input-processor;1"].createInstance(Ci.nsITextInputProcessor); } - this._textInputProcessor.beginInputTransactionForTests(this._docShell.DOMWindow); + this._textInputProcessor.beginInputTransactionForTests(this.docShell().DOMWindow); return this._textInputProcessor; } @@ -616,15 +625,15 @@ class Frame { } docShell() { - return this._docShell; + return this._browsingContext.docShell; } domWindow() { - return this._docShell.domWindow; + return this.docShell()?.domWindow; } name() { - const frameElement = this._docShell.domWindow.frameElement; + const frameElement = this.domWindow()?.frameElement; let name = ''; if (frameElement) name = frameElement.getAttribute('name') || frameElement.getAttribute('id') || ''; diff --git a/browser_patches/firefox/juggler/content/Runtime.js b/browser_patches/firefox/juggler/content/Runtime.js index a64d2b5dea..ac7adc1515 100644 --- a/browser_patches/firefox/juggler/content/Runtime.js +++ b/browser_patches/firefox/juggler/content/Runtime.js @@ -311,8 +311,9 @@ class ExecutionContext { this._id = generateId(); this._auxData = auxData; this._jsonStringifyObject = this._debuggee.executeInGlobal(`((stringify, object) => { - const oldToJSON = Date.prototype.toJSON; - Date.prototype.toJSON = undefined; + const oldToJSON = Date.prototype?.toJSON; + if (oldToJSON) + Date.prototype.toJSON = undefined; const oldArrayToJSON = Array.prototype.toJSON; const oldArrayHadToJSON = Array.prototype.hasOwnProperty('toJSON'); if (oldArrayHadToJSON) @@ -325,7 +326,8 @@ class ExecutionContext { return value; }); - Date.prototype.toJSON = oldToJSON; + if (oldToJSON) + Date.prototype.toJSON = oldToJSON; if (oldArrayHadToJSON) Array.prototype.toJSON = oldArrayToJSON; diff --git a/browser_patches/firefox/juggler/content/main.js b/browser_patches/firefox/juggler/content/main.js index 9e35917d87..b133f63d0a 100644 --- a/browser_patches/firefox/juggler/content/main.js +++ b/browser_patches/firefox/juggler/content/main.js @@ -85,7 +85,7 @@ function initialize(browsingContext, docShell, actor) { docShell.overrideHasFocus = true; docShell.forceActiveState = true; docShell.disallowBFCache = true; - data.frameTree = new FrameTree(docShell); + data.frameTree = new FrameTree(browsingContext); for (const [name, value] of Object.entries(contextCrossProcessCookie.settings)) { if (value !== undefined) applySetting[name](value); diff --git a/browser_patches/firefox/juggler/protocol/BrowserHandler.js b/browser_patches/firefox/juggler/protocol/BrowserHandler.js index 2492840cc2..0360e502a6 100644 --- a/browser_patches/firefox/juggler/protocol/BrowserHandler.js +++ b/browser_patches/firefox/juggler/protocol/BrowserHandler.js @@ -152,6 +152,12 @@ class BrowserHandler { this._targetRegistry.browserContextForId(browserContextId).extraHTTPHeaders = headers; } + ['Browser.clearCache']() { + // Clearing only the context cache does not work: https://bugzilla.mozilla.org/show_bug.cgi?id=1819147 + Services.cache2.clear(); + ChromeUtils.clearStyleSheetCache(); + } + ['Browser.setHTTPCredentials']({browserContextId, credentials}) { this._targetRegistry.browserContextForId(browserContextId).httpCredentials = nullToUndefined(credentials); } diff --git a/browser_patches/firefox/juggler/protocol/PageHandler.js b/browser_patches/firefox/juggler/protocol/PageHandler.js index 82539d4221..0ada0a2683 100644 --- a/browser_patches/firefox/juggler/protocol/PageHandler.js +++ b/browser_patches/firefox/juggler/protocol/PageHandler.js @@ -426,9 +426,11 @@ class PageHandler { return { success: true }; } - async ['Page.reload']({}) { - const browsingContext = this._pageTarget.linkedBrowser().browsingContext; - browsingContext.reload(Ci.nsIWebNavigation.LOAD_FLAGS_NONE); + async ['Page.reload']() { + await this._pageTarget.activateAndRun(() => { + const doc = this._pageTarget._tab.linkedBrowser.ownerDocument; + doc.getElementById('Browser:Reload').doCommand(); + }); } async ['Page.describeNode'](options) { @@ -470,88 +472,91 @@ class PageHandler { } async ['Page.dispatchMouseEvent']({type, x, y, button, clickCount, modifiers, buttons}) { - const boundingBox = this._pageTarget._linkedBrowser.getBoundingClientRect(); + this._pageTarget.ensureContextMenuClosed(); + const boundingBox = this._pageTarget._linkedBrowser.getBoundingClientRect(); const win = this._pageTarget._window; const sendEvents = async (types) => { - // We must switch to proper tab in the tabbed browser so that - // event is dispatched to a proper renderer. - await this._pageTarget.activateAndRun(() => { - for (const type of types) { - // This dispatches to the renderer synchronously. - win.windowUtils.sendMouseEvent( - type, - x + boundingBox.left, - y + boundingBox.top, - button, - clickCount, - modifiers, - false /* aIgnoreRootScrollFrame */, - undefined /* pressure */, - undefined /* inputSource */, - true /* isDOMEventSynthesized */, - undefined /* isWidgetEventSynthesized */, - buttons); - } - }); + for (const type of types) { + // This dispatches to the renderer synchronously. + win.windowUtils.sendMouseEvent( + type, + x + boundingBox.left, + y + boundingBox.top, + button, + clickCount, + modifiers, + false /* aIgnoreRootScrollFrame */, + undefined /* pressure */, + undefined /* inputSource */, + true /* isDOMEventSynthesized */, + undefined /* isWidgetEventSynthesized */, + buttons); + } }; - if (type === 'mousedown') { - if (this._isDragging) - return; + // We must switch to proper tab in the tabbed browser so that + // 1. Event is dispatched to a proper renderer. + // 2. We receive an ack from the renderer for the dispatched event. + await this._pageTarget.activateAndRun(async () => { + if (type === 'mousedown') { + if (this._isDragging) + return; - const eventNames = button === 2 ? ['mousedown', 'contextmenu'] : ['mousedown']; - const watcher = new EventWatcher(this._pageEventSink, eventNames); - await sendEvents(eventNames); - await watcher.ensureEventsAndDispose(eventNames); - return; - } - - if (type === 'mousemove') { - this._lastMousePosition = { x, y }; - if (this._isDragging) { - const watcher = new EventWatcher(this._pageEventSink, ['dragover']); - await this._contentPage.send('dispatchDragEvent', {type:'dragover', x, y, modifiers}); - await watcher.ensureEventsAndDispose(['dragover']); + const eventNames = button === 2 ? ['mousedown', 'contextmenu'] : ['mousedown']; + const watcher = new EventWatcher(this._pageEventSink, eventNames); + await sendEvents(eventNames); + await watcher.ensureEventsAndDispose(eventNames); return; } - const watcher = new EventWatcher(this._pageEventSink, ['dragstart', 'mousemove', 'juggler-drag-finalized']); - await sendEvents(['mousemove']); + if (type === 'mousemove') { + this._lastMousePosition = { x, y }; + if (this._isDragging) { + const watcher = new EventWatcher(this._pageEventSink, ['dragover']); + await this._contentPage.send('dispatchDragEvent', {type:'dragover', x, y, modifiers}); + await watcher.ensureEventsAndDispose(['dragover']); + return; + } - // The order of events after 'mousemove' is sent: - // 1. [dragstart] - might or might NOT be emitted - // 2. [mousemove] - always emitted - // 3. [juggler-drag-finalized] - only emitted if dragstart was emitted. + const watcher = new EventWatcher(this._pageEventSink, ['dragstart', 'mousemove', 'juggler-drag-finalized']); + await sendEvents(['mousemove']); - await watcher.ensureEvent('mousemove'); - if (watcher.hasEvent('dragstart')) { - const eventObject = await watcher.ensureEvent('juggler-drag-finalized'); - this._isDragging = eventObject.dragSessionStarted; + // The order of events after 'mousemove' is sent: + // 1. [dragstart] - might or might NOT be emitted + // 2. [mousemove] - always emitted + // 3. [juggler-drag-finalized] - only emitted if dragstart was emitted. + + await watcher.ensureEvent('mousemove'); + if (watcher.hasEvent('dragstart')) { + const eventObject = await watcher.ensureEvent('juggler-drag-finalized'); + this._isDragging = eventObject.dragSessionStarted; + } + watcher.dispose(); + return; } - watcher.dispose(); - return; - } - if (type === 'mouseup') { - if (this._isDragging) { - const watcher = new EventWatcher(this._pageEventSink, ['dragover', 'dragend']); - await this._contentPage.send('dispatchDragEvent', {type: 'dragover', x, y, modifiers}); - await this._contentPage.send('dispatchDragEvent', {type: 'drop', x, y, modifiers}); - await this._contentPage.send('dispatchDragEvent', {type: 'dragend', x, y, modifiers}); - // NOTE: 'drop' event might not be dispatched at all, depending on dropAction. - await watcher.ensureEventsAndDispose(['dragover', 'dragend']); - this._isDragging = false; - } else { - const watcher = new EventWatcher(this._pageEventSink, ['mouseup']); - await sendEvents(['mouseup']); - await watcher.ensureEventsAndDispose(['mouseup']); + if (type === 'mouseup') { + if (this._isDragging) { + const watcher = new EventWatcher(this._pageEventSink, ['dragover', 'dragend']); + await this._contentPage.send('dispatchDragEvent', {type: 'dragover', x, y, modifiers}); + await this._contentPage.send('dispatchDragEvent', {type: 'drop', x, y, modifiers}); + await this._contentPage.send('dispatchDragEvent', {type: 'dragend', x, y, modifiers}); + // NOTE: 'drop' event might not be dispatched at all, depending on dropAction. + await watcher.ensureEventsAndDispose(['dragover', 'dragend']); + this._isDragging = false; + } else { + const watcher = new EventWatcher(this._pageEventSink, ['mouseup']); + await sendEvents(['mouseup']); + await watcher.ensureEventsAndDispose(['mouseup']); + } + return; } - return; - } + }); } async ['Page.dispatchWheelEvent']({x, y, button, deltaX, deltaY, deltaZ, modifiers }) { + this._pageTarget.ensureContextMenuClosed(); const boundingBox = this._pageTarget._linkedBrowser.getBoundingClientRect(); x += boundingBox.left; y += boundingBox.top; diff --git a/browser_patches/firefox/juggler/protocol/Protocol.js b/browser_patches/firefox/juggler/protocol/Protocol.js index 79ed9b42a6..834f390bee 100644 --- a/browser_patches/firefox/juggler/protocol/Protocol.js +++ b/browser_patches/firefox/juggler/protocol/Protocol.js @@ -188,6 +188,7 @@ networkTypes.HTTPHeader = { networkTypes.HTTPCredentials = { username: t.String, password: t.String, + origin: t.Optional(t.String), }; networkTypes.SecurityDetails = { @@ -281,6 +282,7 @@ const Browser = { headers: t.Array(networkTypes.HTTPHeader), }, }, + 'clearCache': {}, 'setBrowserProxy': { params: { type: t.Enum(['http', 'https', 'socks', 'socks4']), @@ -841,9 +843,7 @@ const Page = { }, }, 'reload': { - params: { - frameId: t.String, - }, + params: { }, }, 'adoptNode': { params: { diff --git a/browser_patches/firefox/patches/bootstrap.diff b/browser_patches/firefox/patches/bootstrap.diff index 549d3054b3..d791d28ca1 100644 --- a/browser_patches/firefox/patches/bootstrap.diff +++ b/browser_patches/firefox/patches/bootstrap.diff @@ -59,10 +59,10 @@ 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 16e8c466e00d7dafe12e5e958c5be5967b06360b..a34658a87ac19797e694fb69dd369bb2476fb7d4 100644 +index 33b8ed52bff98c2216c16d47840fcd55907c414b..5a0320b4ad87055280c4fba4deb0cdc9b7557c50 100644 --- a/browser/app/winlauncher/LauncherProcessWin.cpp +++ b/browser/app/winlauncher/LauncherProcessWin.cpp -@@ -23,6 +23,7 @@ +@@ -24,6 +24,7 @@ #include "mozilla/WinHeaderOnlyUtils.h" #include "nsWindowsHelpers.h" @@ -70,7 +70,7 @@ index 16e8c466e00d7dafe12e5e958c5be5967b06360b..a34658a87ac19797e694fb69dd369bb2 #include #include -@@ -421,8 +422,18 @@ Maybe LauncherMain(int& argc, wchar_t* argv[], +@@ -430,8 +431,18 @@ Maybe LauncherMain(int& argc, wchar_t* argv[], HANDLE stdHandles[] = {::GetStdHandle(STD_INPUT_HANDLE), ::GetStdHandle(STD_OUTPUT_HANDLE), ::GetStdHandle(STD_ERROR_HANDLE)}; @@ -169,10 +169,10 @@ index a32156978aacd7c8cbe9001250bfa1516dbc360f..ff03ff48b505ef8a9117671bf21e8b0e const transportProvider = { setListener(upgradeListener) { diff --git a/docshell/base/BrowsingContext.cpp b/docshell/base/BrowsingContext.cpp -index 0ed77a6b3225b0c23d960376545698bb9f4b7d38..1db1cbeddf56d4be45e66f89a802e88ebe1f0b40 100644 +index e5e8720e90716f96af982d99b4c83ec74715ed26..74c858d6e05081e08a34a98fd517ffd1487dcf12 100644 --- a/docshell/base/BrowsingContext.cpp +++ b/docshell/base/BrowsingContext.cpp -@@ -111,6 +111,20 @@ struct ParamTraits +@@ -112,6 +112,20 @@ struct ParamTraits mozilla::dom::PrefersColorSchemeOverride::None, mozilla::dom::PrefersColorSchemeOverride::EndGuard_> {}; @@ -193,7 +193,7 @@ index 0ed77a6b3225b0c23d960376545698bb9f4b7d38..1db1cbeddf56d4be45e66f89a802e88e template <> struct ParamTraits : public ContiguousEnumSerializer< -@@ -2835,6 +2849,40 @@ void BrowsingContext::DidSet(FieldIndex, +@@ -2838,6 +2852,40 @@ void BrowsingContext::DidSet(FieldIndex, PresContextAffectingFieldChanged(); } @@ -313,10 +313,10 @@ index 8d32d0f5a37396eb18aa217bcac887f131df9fa2..86eca6ab834829283454d1565d1a7211 bool CanSet(FieldIndex, bool, ContentParent*) { diff --git a/docshell/base/CanonicalBrowsingContext.cpp b/docshell/base/CanonicalBrowsingContext.cpp -index 4afe2dfa63ffc2486472fe4565eacce4204c7a76..4ed1e688fcc32ef279eb409c9c8f66c13c2cf887 100644 +index 542ee945424fe3cfc28318a395b8663d39d7ff78..f743a1d663af30140cee9255fc2522f5b214f79f 100644 --- a/docshell/base/CanonicalBrowsingContext.cpp +++ b/docshell/base/CanonicalBrowsingContext.cpp -@@ -1393,6 +1393,12 @@ void CanonicalBrowsingContext::LoadURI(const nsAString& aURI, +@@ -1435,6 +1435,12 @@ void CanonicalBrowsingContext::LoadURI(const nsAString& aURI, return; } @@ -330,7 +330,7 @@ index 4afe2dfa63ffc2486472fe4565eacce4204c7a76..4ed1e688fcc32ef279eb409c9c8f66c1 } diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp -index e188c7614d2fffb76e9e931e759aa1534d13af38..e4d34751b34dde333201041d32e46a257c836f7c 100644 +index bc67480311817f1d16f7da3560fd7bd4720fedbd..2cd03b86d7f5516a050bcf612d5e1ded8baff839 100644 --- a/docshell/base/nsDocShell.cpp +++ b/docshell/base/nsDocShell.cpp @@ -15,6 +15,12 @@ @@ -362,7 +362,7 @@ index e188c7614d2fffb76e9e931e759aa1534d13af38..e4d34751b34dde333201041d32e46a25 #include "mozilla/net/DocumentChannel.h" #include "mozilla/net/DocumentChannelChild.h" #include "mozilla/net/ParentChannelWrapper.h" -@@ -114,6 +122,7 @@ +@@ -113,6 +121,7 @@ #include "nsIDocShellTreeOwner.h" #include "mozilla/dom/Document.h" #include "nsHTMLDocument.h" @@ -370,7 +370,7 @@ index e188c7614d2fffb76e9e931e759aa1534d13af38..e4d34751b34dde333201041d32e46a25 #include "nsIDocumentLoaderFactory.h" #include "nsIDOMWindow.h" #include "nsIEditingSession.h" -@@ -208,6 +217,7 @@ +@@ -207,6 +216,7 @@ #include "nsFocusManager.h" #include "nsGlobalWindow.h" #include "nsJSEnvironment.h" @@ -378,7 +378,7 @@ index e188c7614d2fffb76e9e931e759aa1534d13af38..e4d34751b34dde333201041d32e46a25 #include "nsNetCID.h" #include "nsNetUtil.h" #include "nsObjectLoadingContent.h" -@@ -371,6 +381,14 @@ nsDocShell::nsDocShell(BrowsingContext* aBrowsingContext, +@@ -349,6 +359,14 @@ nsDocShell::nsDocShell(BrowsingContext* aBrowsingContext, mAllowDNSPrefetch(true), mAllowWindowControl(true), mCSSErrorReportingEnabled(false), @@ -393,7 +393,7 @@ index e188c7614d2fffb76e9e931e759aa1534d13af38..e4d34751b34dde333201041d32e46a25 mAllowAuth(mItemType == typeContent), mAllowKeywordFixup(false), mDisableMetaRefreshWhenInactive(false), -@@ -3268,6 +3286,234 @@ nsDocShell::GetMessageManager(ContentFrameMessageManager** aMessageManager) { +@@ -3246,6 +3264,234 @@ nsDocShell::GetMessageManager(ContentFrameMessageManager** aMessageManager) { return NS_OK; } @@ -628,7 +628,7 @@ index e188c7614d2fffb76e9e931e759aa1534d13af38..e4d34751b34dde333201041d32e46a25 NS_IMETHODIMP nsDocShell::GetIsNavigating(bool* aOut) { *aOut = mIsNavigating; -@@ -4912,7 +5158,7 @@ nsDocShell::GetVisibility(bool* aVisibility) { +@@ -4907,7 +5153,7 @@ nsDocShell::GetVisibility(bool* aVisibility) { } void nsDocShell::ActivenessMaybeChanged() { @@ -637,7 +637,7 @@ index e188c7614d2fffb76e9e931e759aa1534d13af38..e4d34751b34dde333201041d32e46a25 if (RefPtr presShell = GetPresShell()) { presShell->ActivenessMaybeChanged(); } -@@ -6865,6 +7111,10 @@ bool nsDocShell::CanSavePresentation(uint32_t aLoadType, +@@ -6852,6 +7098,10 @@ bool nsDocShell::CanSavePresentation(uint32_t aLoadType, return false; // no entry to save into } @@ -648,7 +648,7 @@ index e188c7614d2fffb76e9e931e759aa1534d13af38..e4d34751b34dde333201041d32e46a25 MOZ_ASSERT(!mozilla::SessionHistoryInParent(), "mOSHE cannot be non-null with SHIP"); nsCOMPtr viewer = mOSHE->GetContentViewer(); -@@ -8652,6 +8902,12 @@ nsresult nsDocShell::PerformRetargeting(nsDocShellLoadState* aLoadState) { +@@ -8623,6 +8873,12 @@ nsresult nsDocShell::PerformRetargeting(nsDocShellLoadState* aLoadState) { true, // aForceNoOpener getter_AddRefs(newBC)); MOZ_ASSERT(!newBC); @@ -817,10 +817,10 @@ index 6b85ddd842a6d2e29f86047017b78b2007b99867..f530ab61ac26cb7c94c8ccd07d11aa90 * 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 b54b5111b7bde93bdfa6ec0294e345e5986feaae..0cbd7b3116c5277027d6e7ee2d40d12f815db1e0 100644 +index 1287a8de21579db0490c42f492129a07b920f164..9eefcf442c2237729d393b56df42e9ee14420d20 100644 --- a/dom/base/Document.cpp +++ b/dom/base/Document.cpp -@@ -3647,6 +3647,9 @@ void Document::SendToConsole(nsCOMArray& aMessages) { +@@ -3680,6 +3680,9 @@ void Document::SendToConsole(nsCOMArray& aMessages) { } void Document::ApplySettingsFromCSP(bool aSpeculative) { @@ -830,7 +830,7 @@ index b54b5111b7bde93bdfa6ec0294e345e5986feaae..0cbd7b3116c5277027d6e7ee2d40d12f nsresult rv = NS_OK; if (!aSpeculative) { // 1) apply settings from regular CSP -@@ -3704,6 +3707,11 @@ nsresult Document::InitCSP(nsIChannel* aChannel) { +@@ -3737,6 +3740,11 @@ nsresult Document::InitCSP(nsIChannel* aChannel) { MOZ_ASSERT(!mScriptGlobalObject, "CSP must be initialized before mScriptGlobalObject is set!"); @@ -842,7 +842,7 @@ index b54b5111b7bde93bdfa6ec0294e345e5986feaae..0cbd7b3116c5277027d6e7ee2d40d12f // If this is a data document - no need to set CSP. if (mLoadedAsData) { return NS_OK; -@@ -4519,6 +4527,10 @@ bool Document::HasFocus(ErrorResult& rv) const { +@@ -4552,6 +4560,10 @@ bool Document::HasFocus(ErrorResult& rv) const { return false; } @@ -853,7 +853,7 @@ index b54b5111b7bde93bdfa6ec0294e345e5986feaae..0cbd7b3116c5277027d6e7ee2d40d12f if (!fm->IsInActiveWindow(bc)) { return false; } -@@ -17907,6 +17919,71 @@ ColorScheme Document::PreferredColorScheme(IgnoreRFP aIgnoreRFP) const { +@@ -17942,6 +17954,71 @@ ColorScheme Document::PreferredColorScheme(IgnoreRFP aIgnoreRFP) const { return LookAndFeel::PreferredColorSchemeForContent(); } @@ -926,7 +926,7 @@ index b54b5111b7bde93bdfa6ec0294e345e5986feaae..0cbd7b3116c5277027d6e7ee2d40d12f if (!sLoadingForegroundTopLevelContentDocument) { return false; diff --git a/dom/base/Document.h b/dom/base/Document.h -index 7d7f342bee2248e4c0152bc6430bcbde416cb9dc..1af7812071429a8cd849c8b7a9fbbd0f4b36feb0 100644 +index 1c3fd1f413738228940bcdcc0e22b573360c3a38..d2d7bc873cb7ec9c050c61f881b3a81dd4c418d6 100644 --- a/dom/base/Document.h +++ b/dom/base/Document.h @@ -4052,6 +4052,9 @@ class Document : public nsINode, @@ -940,10 +940,10 @@ index 7d7f342bee2248e4c0152bc6430bcbde416cb9dc..1af7812071429a8cd849c8b7a9fbbd0f static bool AutomaticStorageAccessPermissionCanBeGranted( diff --git a/dom/base/Navigator.cpp b/dom/base/Navigator.cpp -index b3200900ea2b59968c11ec1347ab947446bb1215..06f9f3d91397986973401a8dc95ccca9b27addf0 100644 +index aebd8fb26596e0f701cc2173bd60d827e987e992..8fc5bdd912c9cf71fbd6541c5ae1189f56bb6bef 100644 --- a/dom/base/Navigator.cpp +++ b/dom/base/Navigator.cpp -@@ -326,14 +326,18 @@ void Navigator::GetAppName(nsAString& aAppName, CallerType aCallerType) const { +@@ -331,14 +331,18 @@ void Navigator::GetAppName(nsAString& aAppName, CallerType aCallerType) const { * for more detail. */ /* static */ @@ -964,7 +964,7 @@ index b3200900ea2b59968c11ec1347ab947446bb1215..06f9f3d91397986973401a8dc95ccca9 // Split values on commas. for (nsDependentSubstring lang : -@@ -385,7 +389,13 @@ void Navigator::GetLanguage(nsAString& aLanguage) { +@@ -390,7 +394,13 @@ void Navigator::GetLanguage(nsAString& aLanguage) { } void Navigator::GetLanguages(nsTArray& aLanguages) { @@ -979,7 +979,7 @@ index b3200900ea2b59968c11ec1347ab947446bb1215..06f9f3d91397986973401a8dc95ccca9 // 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() { +@@ -569,7 +579,13 @@ bool Navigator::CookieEnabled() { return granted; } @@ -995,10 +995,10 @@ index b3200900ea2b59968c11ec1347ab947446bb1215..06f9f3d91397986973401a8dc95ccca9 void Navigator::GetBuildID(nsAString& aBuildID, CallerType aCallerType, ErrorResult& aRv) const { diff --git a/dom/base/Navigator.h b/dom/base/Navigator.h -index fd4b1276ab056b4c0b66b57b0b45f793a877dda7..340dcb8e220f2c30aba98bc86e750613ce5edb32 100644 +index 9f6b85ecfac7196cc57c1b1979313403a41d4a6c..0fe045f38c36eb0284bb7c1fb6d3346378f4ae07 100644 --- a/dom/base/Navigator.h +++ b/dom/base/Navigator.h -@@ -214,7 +214,7 @@ class Navigator final : public nsISupports, public nsWrapperCache { +@@ -217,7 +217,7 @@ class Navigator final : public nsISupports, public nsWrapperCache { StorageManager* Storage(); @@ -1008,10 +1008,10 @@ index fd4b1276ab056b4c0b66b57b0b45f793a877dda7..340dcb8e220f2c30aba98bc86e750613 dom::MediaCapabilities* MediaCapabilities(); dom::MediaSession* MediaSession(); diff --git a/dom/base/nsContentUtils.cpp b/dom/base/nsContentUtils.cpp -index 25dc7c7d952319cb5ffbc77a12b19b5ed9c3a401..48f4295c4fd23e37b0726f0eb070b3aadf2e90e1 100644 +index e1b3fc0e6f27cee1152057601c50f7e206bebe2f..00a50373d28aaae191caaf35a20847c1eabc562d 100644 --- a/dom/base/nsContentUtils.cpp +++ b/dom/base/nsContentUtils.cpp -@@ -8364,7 +8364,8 @@ nsresult nsContentUtils::SendMouseEvent( +@@ -8382,7 +8382,8 @@ nsresult nsContentUtils::SendMouseEvent( bool aIgnoreRootScrollFrame, float aPressure, unsigned short aInputSourceArg, uint32_t aIdentifier, bool aToWindow, PreventDefaultResult* aPreventDefault, bool aIsDOMEventSynthesized, @@ -1021,7 +1021,7 @@ index 25dc7c7d952319cb5ffbc77a12b19b5ed9c3a401..48f4295c4fd23e37b0726f0eb070b3aa nsPoint offset; nsCOMPtr widget = GetWidget(aPresShell, &offset); if (!widget) return NS_ERROR_FAILURE; -@@ -8372,6 +8373,7 @@ nsresult nsContentUtils::SendMouseEvent( +@@ -8390,6 +8391,7 @@ nsresult nsContentUtils::SendMouseEvent( EventMessage msg; Maybe exitFrom; bool contextMenuKey = false; @@ -1029,7 +1029,7 @@ index 25dc7c7d952319cb5ffbc77a12b19b5ed9c3a401..48f4295c4fd23e37b0726f0eb070b3aa if (aType.EqualsLiteral("mousedown")) { msg = eMouseDown; } else if (aType.EqualsLiteral("mouseup")) { -@@ -8396,6 +8398,12 @@ nsresult nsContentUtils::SendMouseEvent( +@@ -8414,6 +8416,12 @@ nsresult nsContentUtils::SendMouseEvent( msg = eMouseHitTest; } else if (aType.EqualsLiteral("MozMouseExploreByTouch")) { msg = eMouseExploreByTouch; @@ -1042,7 +1042,7 @@ index 25dc7c7d952319cb5ffbc77a12b19b5ed9c3a401..48f4295c4fd23e37b0726f0eb070b3aa } else { return NS_ERROR_FAILURE; } -@@ -8404,12 +8412,21 @@ nsresult nsContentUtils::SendMouseEvent( +@@ -8422,12 +8430,21 @@ nsresult nsContentUtils::SendMouseEvent( aInputSourceArg = MouseEvent_Binding::MOZ_SOURCE_MOUSE; } @@ -1066,8 +1066,8 @@ index 25dc7c7d952319cb5ffbc77a12b19b5ed9c3a401..48f4295c4fd23e37b0726f0eb070b3aa event.pointerId = aIdentifier; event.mModifiers = GetWidgetModifiers(aModifiers); event.mButton = aButton; -@@ -8423,6 +8440,7 @@ nsresult nsContentUtils::SendMouseEvent( - event.mTime = PR_IntervalNow(); +@@ -8440,6 +8457,7 @@ nsresult nsContentUtils::SendMouseEvent( + event.mClickCount = aClickCount; event.mFlags.mIsSynthesizedForTests = aIsDOMEventSynthesized; event.mExitFrom = exitFrom; + event.convertToPointer = convertToPointer; @@ -1075,10 +1075,10 @@ index 25dc7c7d952319cb5ffbc77a12b19b5ed9c3a401..48f4295c4fd23e37b0726f0eb070b3aa nsPresContext* presContext = aPresShell->GetPresContext(); if (!presContext) return NS_ERROR_FAILURE; diff --git a/dom/base/nsContentUtils.h b/dom/base/nsContentUtils.h -index 4a7bc62fe746bc617b8e230c7743de2644eca1a4..f5a4c806a02a406bf025684535a4028fe18cbaf4 100644 +index 0dfb4d790f70f09add362063a71835d58c147a2f..09d2aecc355ef79afcdf73d16426c83fff570a85 100644 --- a/dom/base/nsContentUtils.h +++ b/dom/base/nsContentUtils.h -@@ -2940,7 +2940,8 @@ class nsContentUtils { +@@ -2917,7 +2917,8 @@ class nsContentUtils { int32_t aModifiers, bool aIgnoreRootScrollFrame, float aPressure, unsigned short aInputSourceArg, uint32_t aIdentifier, bool aToWindow, mozilla::PreventDefaultResult* aPreventDefault, @@ -1089,7 +1089,7 @@ index 4a7bc62fe746bc617b8e230c7743de2644eca1a4..f5a4c806a02a406bf025684535a4028f static void FirePageShowEventForFrameLoaderSwap( nsIDocShellTreeItem* aItem, diff --git a/dom/base/nsDOMWindowUtils.cpp b/dom/base/nsDOMWindowUtils.cpp -index e2cc2300c6a27b54cd5cef52ca0362fb816bd342..0bdbead3c978224b72a9a151b4b99ee71df9b95a 100644 +index 5c6c4a44c2da4a38de141f1ec9bd9297ded90ea4..77bb38e1e37ed934804db078e5558369a5078d72 100644 --- a/dom/base/nsDOMWindowUtils.cpp +++ b/dom/base/nsDOMWindowUtils.cpp @@ -682,7 +682,7 @@ nsDOMWindowUtils::SendMouseEvent( @@ -1140,10 +1140,10 @@ index 63968c9b7a4e418e4c0de6e7a75fa215a36a9105..4dcec26021e74ada0757b4686bd07828 MOZ_CAN_RUN_SCRIPT nsresult SendTouchEventCommon( diff --git a/dom/base/nsFocusManager.cpp b/dom/base/nsFocusManager.cpp -index f29523824dee02d15bd6e662e95a32357cc72bf1..1f216917eb393344f6449955b2e3702d0a0b7b08 100644 +index 9be4c87f759f0a7f7fb65d6493e83e1291b87017..13681a8ceae3cbd9f3bacda709c3b0a95a88d454 100644 --- a/dom/base/nsFocusManager.cpp +++ b/dom/base/nsFocusManager.cpp -@@ -1634,6 +1634,10 @@ void nsFocusManager::SetFocusInner(Element* aNewContent, int32_t aFlags, +@@ -1646,6 +1646,10 @@ void nsFocusManager::SetFocusInner(Element* aNewContent, int32_t aFlags, (GetActiveBrowsingContext() == newRootBrowsingContext); } @@ -1154,7 +1154,7 @@ index f29523824dee02d15bd6e662e95a32357cc72bf1..1f216917eb393344f6449955b2e3702d // Exit fullscreen if a website focuses another window if (StaticPrefs::full_screen_api_exit_on_windowRaise() && !isElementInActiveWindow && (aFlags & FLAG_RAISE) && -@@ -2951,7 +2955,9 @@ void nsFocusManager::RaiseWindow(nsPIDOMWindowOuter* aWindow, +@@ -2963,7 +2967,9 @@ void nsFocusManager::RaiseWindow(nsPIDOMWindowOuter* aWindow, } } @@ -1166,10 +1166,10 @@ index f29523824dee02d15bd6e662e95a32357cc72bf1..1f216917eb393344f6449955b2e3702d // 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 0eedb288e67ae18fb73b758d81b770b04f8f628c..dc2255273ef4e46b4ed985d32bd3283c75de071d 100644 +index 461bbbb88126c5b12b54c2210cead1b5cb414384..9348681049bcb3f8e357eb03785b8c81ddde1d16 100644 --- a/dom/base/nsGlobalWindowOuter.cpp +++ b/dom/base/nsGlobalWindowOuter.cpp -@@ -2489,7 +2489,7 @@ nsresult nsGlobalWindowOuter::SetNewDocument(Document* aDocument, +@@ -2481,7 +2481,7 @@ nsresult nsGlobalWindowOuter::SetNewDocument(Document* aDocument, &nsGlobalWindowInner::FireOnNewGlobalObject)); } @@ -1178,7 +1178,7 @@ index 0eedb288e67ae18fb73b758d81b770b04f8f628c..dc2255273ef4e46b4ed985d32bd3283c // We should probably notify. However if this is the, arguably bad, // situation when we're creating a temporary non-chrome-about-blank // document in a chrome docshell, don't notify just yet. Instead wait -@@ -2508,10 +2508,16 @@ nsresult nsGlobalWindowOuter::SetNewDocument(Document* aDocument, +@@ -2500,10 +2500,16 @@ nsresult nsGlobalWindowOuter::SetNewDocument(Document* aDocument, }(); if (!isContentAboutBlankInChromeDocshell) { @@ -1199,7 +1199,7 @@ index 0eedb288e67ae18fb73b758d81b770b04f8f628c..dc2255273ef4e46b4ed985d32bd3283c } } -@@ -2632,6 +2638,19 @@ void nsGlobalWindowOuter::DispatchDOMWindowCreated() { +@@ -2624,6 +2630,19 @@ void nsGlobalWindowOuter::DispatchDOMWindowCreated() { } } @@ -1219,7 +1219,7 @@ index 0eedb288e67ae18fb73b758d81b770b04f8f628c..dc2255273ef4e46b4ed985d32bd3283c void nsGlobalWindowOuter::ClearStatus() { SetStatusOuter(u""_ns); } void nsGlobalWindowOuter::SetDocShell(nsDocShell* aDocShell) { -@@ -3769,6 +3788,14 @@ Maybe nsGlobalWindowOuter::GetRDMDeviceSize( +@@ -3744,6 +3763,14 @@ Maybe nsGlobalWindowOuter::GetRDMDeviceSize( } } } @@ -1235,10 +1235,10 @@ index 0eedb288e67ae18fb73b758d81b770b04f8f628c..dc2255273ef4e46b4ed985d32bd3283c } diff --git a/dom/base/nsGlobalWindowOuter.h b/dom/base/nsGlobalWindowOuter.h -index f7f512a301cd637c404fbfb3c2fabc206414b5f1..337bb3be30262145e82ebac4853907561bf812b4 100644 +index 5d2a162dce39170b66595de3f99d83afedfae287..a98c01bb6ce1971e41c0398900bf8060542663c9 100644 --- a/dom/base/nsGlobalWindowOuter.h +++ b/dom/base/nsGlobalWindowOuter.h -@@ -334,6 +334,7 @@ class nsGlobalWindowOuter final : public mozilla::dom::EventTarget, +@@ -333,6 +333,7 @@ class nsGlobalWindowOuter final : public mozilla::dom::EventTarget, // Outer windows only. void DispatchDOMWindowCreated(); @@ -1356,7 +1356,7 @@ index 85a21e459305f556933f4dc0fa7441d8f9ed95a9..d7cb86479ba2ed06542307349d6d86df static bool DumpEnabled(); diff --git a/dom/chrome-webidl/BrowsingContext.webidl b/dom/chrome-webidl/BrowsingContext.webidl -index 76d0d088dea7520f5fd7753525e98840f30db969..2452b99f6cc7faf80c4589221d622ac97f602cb3 100644 +index 590ad9e2fd6f1457150a39aa2979bebcc991c5ed..e35107c8f5cc64aa97c80cf1a2e11e601deab23d 100644 --- a/dom/chrome-webidl/BrowsingContext.webidl +++ b/dom/chrome-webidl/BrowsingContext.webidl @@ -52,6 +52,24 @@ enum PrefersColorSchemeOverride { @@ -1384,7 +1384,7 @@ index 76d0d088dea7520f5fd7753525e98840f30db969..2452b99f6cc7faf80c4589221d622ac9 /** * Allowed overrides of platform/pref default behaviour for touch events. */ -@@ -186,6 +204,12 @@ interface BrowsingContext { +@@ -188,6 +206,12 @@ interface BrowsingContext { // Color-scheme simulation, for DevTools. [SetterThrows] attribute PrefersColorSchemeOverride prefersColorSchemeOverride; @@ -1397,7 +1397,7 @@ index 76d0d088dea7520f5fd7753525e98840f30db969..2452b99f6cc7faf80c4589221d622ac9 /** * A unique identifier for the browser element that is hosting this * BrowsingContext tree. Every BrowsingContext in the element's tree will -@@ -244,6 +268,8 @@ interface BrowsingContext { +@@ -246,6 +270,8 @@ interface BrowsingContext { undefined resetLocationChangeRateLimit(); readonly attribute long childOffset; @@ -1506,18 +1506,18 @@ index 7e1af00d05fbafa2d828e2c7e4dcc5c82d115f5b..e85af9718d064e4d2865bc944e9d4ba1 ~Geolocation(); diff --git a/dom/html/HTMLInputElement.cpp b/dom/html/HTMLInputElement.cpp -index a72822084f09180e57b337ee5fe66c2e5f8b2232..7226b2c665e8920d25824e0aca6c730a3e763f7c 100644 +index d28c5ec6ff3116e2e3b39347f8ac2cd75b1e903b..85ba2959233c304877c8869878ae2725aabf7ceb 100644 --- a/dom/html/HTMLInputElement.cpp +++ b/dom/html/HTMLInputElement.cpp -@@ -56,6 +56,7 @@ - #include "nsMappedAttributes.h" - #include "nsIFormControl.h" +@@ -57,6 +57,7 @@ #include "mozilla/dom/Document.h" + #include "mozilla/dom/HTMLDataListElement.h" + #include "mozilla/dom/HTMLOptionElement.h" +#include "nsDocShell.h" #include "nsIFormControlFrame.h" #include "nsITextControlFrame.h" #include "nsIFrame.h" -@@ -749,6 +750,12 @@ nsresult HTMLInputElement::InitFilePicker(FilePickerType aType) { +@@ -778,6 +779,12 @@ nsresult HTMLInputElement::InitFilePicker(FilePickerType aType) { return NS_ERROR_FAILURE; } @@ -1545,7 +1545,7 @@ index 89338882e70f7954d5f728406302c8bfc88ab3af..30bef01638db72293ea093ecb572b71b /** 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 6e3b67ccf5ab93a63a75bf9d7045aff01b46d94e..e4ae75881fe49b7c72723059640d551cb348e823 100644 +index fd88433cfa61abdf9ecc3a3864e12ad8ddd53cd0..7ee39fdbca07fdeab50d28eaff5bc9bd88265056 100644 --- a/dom/media/systemservices/video_engine/desktop_capture_impl.cc +++ b/dom/media/systemservices/video_engine/desktop_capture_impl.cc @@ -131,10 +131,11 @@ int32_t ScreenDeviceInfoImpl::GetOrientation(const char* deviceUniqueIdUTF8, @@ -1563,7 +1563,7 @@ index 6e3b67ccf5ab93a63a75bf9d7045aff01b46d94e..e4ae75881fe49b7c72723059640d551c } int32_t WindowDeviceInfoImpl::Init() { -@@ -372,9 +373,13 @@ int32_t DesktopCaptureImpl::LazyInitDesktopCapturer() { +@@ -402,9 +403,13 @@ int32_t DesktopCaptureImpl::LazyInitDesktopCapturer() { DesktopCapturer::SourceId sourceId = atoi(_deviceUniqueId.c_str()); pWindowCapturer->SelectSource(sourceId); @@ -1580,7 +1580,7 @@ index 6e3b67ccf5ab93a63a75bf9d7045aff01b46d94e..e4ae75881fe49b7c72723059640d551c } 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. -@@ -391,7 +396,8 @@ int32_t DesktopCaptureImpl::LazyInitDesktopCapturer() { +@@ -421,7 +426,8 @@ int32_t DesktopCaptureImpl::LazyInitDesktopCapturer() { } DesktopCaptureImpl::DesktopCaptureImpl(const int32_t id, const char* uniqueId, @@ -1590,7 +1590,7 @@ index 6e3b67ccf5ab93a63a75bf9d7045aff01b46d94e..e4ae75881fe49b7c72723059640d551c : _id(id), _tracking_id( mozilla::TrackingId(CaptureEngineToTrackingSourceStr([&] { -@@ -412,6 +418,7 @@ DesktopCaptureImpl::DesktopCaptureImpl(const int32_t id, const char* uniqueId, +@@ -442,6 +448,7 @@ DesktopCaptureImpl::DesktopCaptureImpl(const int32_t id, const char* uniqueId, _requestedCapability(), _rotateFrame(kVideoRotation_0), last_capture_time_ms_(rtc::TimeMillis()), @@ -1598,7 +1598,7 @@ index 6e3b67ccf5ab93a63a75bf9d7045aff01b46d94e..e4ae75881fe49b7c72723059640d551c time_event_(EventWrapper::Create()), capturer_thread_(nullptr), started_(false) { -@@ -449,6 +456,19 @@ void DesktopCaptureImpl::DeRegisterCaptureDataCallback( +@@ -479,6 +486,19 @@ void DesktopCaptureImpl::DeRegisterCaptureDataCallback( } } @@ -1618,7 +1618,7 @@ index 6e3b67ccf5ab93a63a75bf9d7045aff01b46d94e..e4ae75881fe49b7c72723059640d551c int32_t DesktopCaptureImpl::StopCaptureIfAllClientsClose() { if (_dataCallBacks.empty()) { return StopCapture(); -@@ -669,6 +689,15 @@ void DesktopCaptureImpl::OnCaptureResult(DesktopCapturer::Result result, +@@ -699,6 +719,15 @@ void DesktopCaptureImpl::OnCaptureResult(DesktopCapturer::Result result, frameInfo.height = frame->size().height(); frameInfo.videoType = VideoType::kARGB; @@ -1712,7 +1712,7 @@ index d6b024f24be5b2ed0359e241d0014409798ac4b9..e0f80c54d7a6e87936ed345744d4f568 // and the capturer thread. It is created prior to the capturer thread // starting and is destroyed after it is stopped. diff --git a/dom/script/ScriptSettings.cpp b/dom/script/ScriptSettings.cpp -index 8c8a5810fd56512cf37635da1f43757719f06113..d2bc58fcd3b05f989f948839d574d00d0409873c 100644 +index 1f2d92bcb5d989bf9ecc044f8c51006f991b0007..9cf5dd885e658e0fe5e7ab75e7fc1f97a8d214b8 100644 --- a/dom/script/ScriptSettings.cpp +++ b/dom/script/ScriptSettings.cpp @@ -150,6 +150,30 @@ ScriptSettingsStackEntry::~ScriptSettingsStackEntry() { @@ -1756,7 +1756,7 @@ index 8c8a5810fd56512cf37635da1f43757719f06113..d2bc58fcd3b05f989f948839d574d00d return aGlobalOrNull; diff --git a/dom/security/nsCSPUtils.cpp b/dom/security/nsCSPUtils.cpp -index 0af8c6b7d09ef727b5ee1a245704ab9a360eadfc..44a5b1071ff2fa468bf30758d3aa344944df8591 100644 +index c430c6ee3bd4e88cf6b47df64e983dbe4f8ccf95..ca77b627b7b73b1f08f22d9e297d73cf731b3719 100644 --- a/dom/security/nsCSPUtils.cpp +++ b/dom/security/nsCSPUtils.cpp @@ -127,6 +127,11 @@ void CSP_ApplyMetaCSPToDoc(mozilla::dom::Document& aDoc, @@ -1795,7 +1795,7 @@ index 2f71b284ee5f7e11f117c447834b48355784448c..2640bd57123c2b03bf4b06a2419cd020 * 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 60dbd47ed22c3109d558c3c1a3fa4a128f5bc72a..60111e5ec2b531ee13e83dbb628a4b205500ddb5 100644 +index 94c1a4ab5cca1e1b451336900c1d0fa1d35bfe95..ecff2d39975d912584bd85b1692cacd523caccc7 100644 --- a/dom/workers/RuntimeService.cpp +++ b/dom/workers/RuntimeService.cpp @@ -983,7 +983,7 @@ void PrefLanguagesChanged(const char* /* aPrefName */, void* /* aClosure */) { @@ -1831,7 +1831,7 @@ index 60dbd47ed22c3109d558c3c1a3fa4a128f5bc72a..60111e5ec2b531ee13e83dbb628a4b20 template void RuntimeService::BroadcastAllWorkers(const Func& aFunc) { AssertIsOnMainThread(); -@@ -2209,6 +2215,14 @@ void PropagateStorageAccessPermissionGrantedToWorkers( +@@ -2211,6 +2217,14 @@ void PropagateStorageAccessPermissionGrantedToWorkers( } } @@ -1873,7 +1873,7 @@ index d10dabb5c5ff8e17851edf2bd2efc08e74584d8e..53c4070c5fde43b27fb8fbfdcf4c23d8 bool IsWorkerGlobal(JSObject* global); diff --git a/dom/workers/WorkerPrivate.cpp b/dom/workers/WorkerPrivate.cpp -index 30cbeb4c562848bcca03fa9e53b63210f101e354..36dff2d6f5a7842442c7eeb03f08c8937647e15d 100644 +index a03caa714962634399ee233e8cdcb6772b5d8210..2f0367db82e8e4262c72e5b853f31c11fdf0bc0e 100644 --- a/dom/workers/WorkerPrivate.cpp +++ b/dom/workers/WorkerPrivate.cpp @@ -700,6 +700,18 @@ class UpdateContextOptionsRunnable final : public WorkerControlRunnable { @@ -1895,7 +1895,7 @@ index 30cbeb4c562848bcca03fa9e53b63210f101e354..36dff2d6f5a7842442c7eeb03f08c893 class UpdateLanguagesRunnable final : public WorkerRunnable { nsTArray mLanguages; -@@ -1952,6 +1964,16 @@ void WorkerPrivate::UpdateContextOptions( +@@ -1964,6 +1976,16 @@ void WorkerPrivate::UpdateContextOptions( } } @@ -1912,7 +1912,7 @@ index 30cbeb4c562848bcca03fa9e53b63210f101e354..36dff2d6f5a7842442c7eeb03f08c893 void WorkerPrivate::UpdateLanguages(const nsTArray& aLanguages) { AssertIsOnParentThread(); -@@ -5151,6 +5173,15 @@ void WorkerPrivate::UpdateContextOptionsInternal( +@@ -5220,6 +5242,15 @@ void WorkerPrivate::UpdateContextOptionsInternal( } } @@ -1929,10 +1929,10 @@ index 30cbeb4c562848bcca03fa9e53b63210f101e354..36dff2d6f5a7842442c7eeb03f08c893 const nsTArray& aLanguages) { WorkerGlobalScope* globalScope = GlobalScope(); diff --git a/dom/workers/WorkerPrivate.h b/dom/workers/WorkerPrivate.h -index 1ba0be2a34151d66ec33f48c58552e3e33b25bfc..4f65d40575e7d5dd6c507d8738979c10bdb3a52a 100644 +index 2107d505d92172e985230f290a86907f97a0ac76..c325556ed433255e5166930db613c5a6d9f80c3d 100644 --- a/dom/workers/WorkerPrivate.h +++ b/dom/workers/WorkerPrivate.h -@@ -330,6 +330,8 @@ class WorkerPrivate final +@@ -331,6 +331,8 @@ class WorkerPrivate final void UpdateContextOptionsInternal(JSContext* aCx, const JS::ContextOptions& aContextOptions); @@ -1941,7 +1941,7 @@ index 1ba0be2a34151d66ec33f48c58552e3e33b25bfc..4f65d40575e7d5dd6c507d8738979c10 void UpdateLanguagesInternal(const nsTArray& aLanguages); void UpdateJSWorkerMemoryParameterInternal(JSContext* aCx, JSGCParamKey key, -@@ -955,6 +957,8 @@ class WorkerPrivate final +@@ -945,6 +947,8 @@ class WorkerPrivate final void UpdateContextOptions(const JS::ContextOptions& aContextOptions); @@ -2003,10 +2003,10 @@ index cd641a54d9f968b4f5ac62aff701576e63a29439..27067c68a74a5578b8b5e6bbef3a4b48 inline ClippedTime TimeClip(double time); diff --git a/js/src/debugger/Object.cpp b/js/src/debugger/Object.cpp -index 0b40f96e76a75fd4c3b3f0bae787515571723f5e..a75b2706d3206859dc7ebebd98b7c5d5f57195f8 100644 +index b6d2c54e7a97a90d06f0271c27ff50a6bad497d7..a92870e1e0791a2b0a15386f8d454ef1bf2d0b8b 100644 --- a/js/src/debugger/Object.cpp +++ b/js/src/debugger/Object.cpp -@@ -2373,7 +2373,11 @@ Maybe DebuggerObject::call(JSContext* cx, +@@ -2369,7 +2369,11 @@ Maybe DebuggerObject::call(JSContext* cx, invokeArgs[i].set(args2[i]); } @@ -2168,10 +2168,10 @@ index dac899f7558b26d6848da8b98ed8a93555c8751a..2a07d67fa1c2840b25085566e84dc3b2 // No boxes to return return; diff --git a/layout/base/PresShell.cpp b/layout/base/PresShell.cpp -index d43373d90e82f4ac2f6399b38956167481ff9951..95b18fcde2f18f9944ddf2828f1f58ac89b3b03b 100644 +index f4d42f575e40e716dc142681c6d6596fff2056f8..622b2d21380f5ef777955d9c388af77760225bf6 100644 --- a/layout/base/PresShell.cpp +++ b/layout/base/PresShell.cpp -@@ -10969,7 +10969,9 @@ auto PresShell::ComputeActiveness() const -> Activeness { +@@ -10931,7 +10931,9 @@ auto PresShell::ComputeActiveness() const -> Activeness { if (!browserChild->IsVisible()) { MOZ_LOG(gLog, LogLevel::Debug, (" > BrowserChild %p is not visible", browserChild)); @@ -2183,10 +2183,10 @@ index d43373d90e82f4ac2f6399b38956167481ff9951..95b18fcde2f18f9944ddf2828f1f58ac // 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 73e9c213afcd5ef7f6ba4cfcf5b95bdb9226d48e..128745902d7b56dd85e05999cb4fb882bc74c8cd 100644 +index 164e65ac9a2b6b7c0eec4428b74de8f0bb907918..1d9421c7d014721ce920b93e3b790c44422ebea4 100644 --- a/layout/style/GeckoBindings.h +++ b/layout/style/GeckoBindings.h -@@ -608,6 +608,7 @@ void Gecko_MediaFeatures_GetDeviceSize(const mozilla::dom::Document*, +@@ -611,6 +611,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*); @@ -2195,10 +2195,10 @@ index 73e9c213afcd5ef7f6ba4cfcf5b95bdb9226d48e..128745902d7b56dd85e05999cb4fb882 const mozilla::dom::Document*); mozilla::StylePrefersColorScheme Gecko_MediaFeatures_PrefersColorScheme( diff --git a/layout/style/nsMediaFeatures.cpp b/layout/style/nsMediaFeatures.cpp -index d3b604a668e0d6d18b7427811e91744a7ac2f0d1..9f92569829e51f3516f9c33c65ec0b4aa016dd46 100644 +index 5cd90a4ca6cb85808076ece7dbc616c3fecdc352..7fbb6e25a815c4d63919c40beaea89aae62add59 100644 --- a/layout/style/nsMediaFeatures.cpp +++ b/layout/style/nsMediaFeatures.cpp -@@ -264,10 +264,11 @@ bool Gecko_MediaFeatures_MatchesPlatform(StylePlatform aPlatform) { +@@ -276,10 +276,11 @@ bool Gecko_MediaFeatures_MatchesPlatform(StylePlatform aPlatform) { } bool Gecko_MediaFeatures_PrefersReducedMotion(const Document* aDocument) { @@ -2227,10 +2227,10 @@ index f2723e654098ff27542e1eb16a536c11ad0af617..b0b480551ff7d895dfdeb5a980087485 /* Use accelerated SIMD routines. */ diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js -index 5ec8703f298994caad9698dca0c98c68fd487b01..24c75b6760cc8436e5cfa9cf05d0f2383f87fe0c 100644 +index 88e7709c28b706f9dd235c53d0946e3cb0e0af95..3b7c0b0eb047531b353057b6dd97a4a198fc7561 100644 --- a/modules/libpref/init/all.js +++ b/modules/libpref/init/all.js -@@ -4126,7 +4126,9 @@ pref("devtools.experiment.f12.shortcut_disabled", false); +@@ -4121,7 +4121,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 @@ -2292,7 +2292,7 @@ index 735b3a134a8c7104909ff9424eff74eab80c4830..a31e8b68e201dbf238d80ab32d46d465 if (mPump && mLoadFlags & LOAD_CALL_CONTENT_SNIFFERS) { mPump->PeekStream(CallTypeSniffers, static_cast(this)); diff --git a/parser/html/nsHtml5TreeOpExecutor.cpp b/parser/html/nsHtml5TreeOpExecutor.cpp -index 17d2c7d96c19421ae0b19ac02c3668d2247c1f64..c0b733791f6244c25595434992ff8ec9f9b6ef0b 100644 +index da570e5b6dbaffb9a7ba8bffcf14dd9e180d5215..3782a2d47b1feca7897924bff46ac4a0b0a383df 100644 --- a/parser/html/nsHtml5TreeOpExecutor.cpp +++ b/parser/html/nsHtml5TreeOpExecutor.cpp @@ -1371,6 +1371,10 @@ void nsHtml5TreeOpExecutor::UpdateReferrerInfoFromMeta( @@ -2380,10 +2380,10 @@ index e31cf158dcac3540b0c721cbd677b8522d7549b3..029fc67df81911e3abf3724e8ed99e4b readonly attribute boolean securityCheckDisabled; }; diff --git a/services/settings/Utils.jsm b/services/settings/Utils.jsm -index 50114dfbbc464fd59779d0babfb1489cafc9a28b..70f56aac932bebe3837b1fb67bbdbafe697a6b1d 100644 +index 94f47133802fd47a8a2bb800bdda8382d7ee82e5..2aa50e24dc1cb39012ed1d2b3b370cce546d28b1 100644 --- a/services/settings/Utils.jsm +++ b/services/settings/Utils.jsm -@@ -96,7 +96,7 @@ function _isUndefined(value) { +@@ -103,7 +103,7 @@ function _isUndefined(value) { var Utils = { get SERVER_URL() { @@ -2393,10 +2393,10 @@ index 50114dfbbc464fd59779d0babfb1489cafc9a28b..70f56aac932bebe3837b1fb67bbdbafe : AppConstants.REMOTE_SETTINGS_SERVER_URL; }, diff --git a/servo/components/style/gecko/media_features.rs b/servo/components/style/gecko/media_features.rs -index 778a57cd95d710a2331bb59a9ce2a19a2a0679df..0fd70320d4773247d1f00a12ed812fcb4c5ff843 100644 +index 8f56f185d2ab47041a73837fe1b150c305db2893..8282ca4c0aa6d5848642fcfb48e74a90924ca7fe 100644 --- a/servo/components/style/gecko/media_features.rs +++ b/servo/components/style/gecko/media_features.rs -@@ -232,10 +232,15 @@ pub enum ForcedColors { +@@ -265,10 +265,15 @@ pub enum ForcedColors { /// https://drafts.csswg.org/mediaqueries-5/#forced-colors fn eval_forced_colors(context: &Context, query_value: Option) -> bool { @@ -2416,10 +2416,10 @@ index 778a57cd95d710a2331bb59a9ce2a19a2a0679df..0fd70320d4773247d1f00a12ed812fcb } diff --git a/toolkit/components/browser/nsIWebBrowserChrome.idl b/toolkit/components/browser/nsIWebBrowserChrome.idl -index 4f7337926efbb086a2be97cdbcb3dca39e27c786..f2005cb726ff153d6b1011d6af0479dbf1af02a5 100644 +index 54de3abab5757dd706e3d909ccef6a0bed5deacc..f5c5480cd052ede0c76e5eec733dbb9283389045 100644 --- a/toolkit/components/browser/nsIWebBrowserChrome.idl +++ b/toolkit/components/browser/nsIWebBrowserChrome.idl -@@ -70,6 +70,9 @@ interface nsIWebBrowserChrome : nsISupports +@@ -71,6 +71,9 @@ interface nsIWebBrowserChrome : nsISupports // Whether this window should use out-of-process cross-origin subframes. const unsigned long CHROME_FISSION_WINDOW = 0x00200000; @@ -2475,7 +2475,7 @@ index 3e9672fdfe9ddab8acd0f8b18772aece92bb3b64..83454a9c27c96d72597445653beaa014 int32_t aMaxSelfProgress, int32_t aCurTotalProgress, diff --git a/toolkit/components/windowwatcher/nsWindowWatcher.cpp b/toolkit/components/windowwatcher/nsWindowWatcher.cpp -index be8deb75c81c2614c0b034e20b0d523de3b59cc0..41813bf13751601b679e816325f30d834962640e 100644 +index 6d6a91821e0df64e12e576d8c9e5b3d2e6aade27..1a8b8ff82586cca439dafc5e13e8c46adadd6ecc 100644 --- a/toolkit/components/windowwatcher/nsWindowWatcher.cpp +++ b/toolkit/components/windowwatcher/nsWindowWatcher.cpp @@ -1854,7 +1854,11 @@ uint32_t nsWindowWatcher::CalculateChromeFlagsForContent( @@ -2492,7 +2492,7 @@ index be8deb75c81c2614c0b034e20b0d523de3b59cc0..41813bf13751601b679e816325f30d83 /** diff --git a/toolkit/mozapps/update/UpdateService.jsm b/toolkit/mozapps/update/UpdateService.jsm -index 512b4058c6aa467cd04d25765c7ddd0b75acda86..c2ef1ac2c2e034d77401dd711f46a85c5848eaea 100644 +index aaaaeda9bf81517ad1568b12dc23ce2fa585a049..c28f21a534004b2f5186f13f6091d3538c6db2be 100644 --- a/toolkit/mozapps/update/UpdateService.jsm +++ b/toolkit/mozapps/update/UpdateService.jsm @@ -3848,6 +3848,8 @@ UpdateService.prototype = { @@ -2571,7 +2571,7 @@ index e1e46ccdceae595f95d100116ff480905047e82b..eaa0252e768140120158525723ad867b // 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 2fb5aefa9b47a25051449df37d81587f6939d300..8bb750c1abd487d5458fa108e3079986eb0f1b6d 100644 +index 90a370792bacd26f4ac54903ab09cfab686c1c9a..215a9a099c719efb64518288c17a2182efdc0e0b 100644 --- a/uriloader/exthandler/nsExternalHelperAppService.cpp +++ b/uriloader/exthandler/nsExternalHelperAppService.cpp @@ -112,6 +112,7 @@ @@ -2843,7 +2843,7 @@ index d3e5983259053175584254e7ac01ca9ce024f33a..97f5b851c402fea5477c0ee57af451c6 } if (aEvent.IsMeta()) { diff --git a/widget/headless/HeadlessCompositorWidget.cpp b/widget/headless/HeadlessCompositorWidget.cpp -index b31a969b7ab3d0fc80912b110d91dfdf3e5991f4..52aed4f9fb51f3f58a440d7e57eaccd6dfcbc2ab 100644 +index bb4ee9175e66dc40de1871a7f91368fe309494a3..856faef297c9eb0a510df123513b9ac095634e98 100644 --- a/widget/headless/HeadlessCompositorWidget.cpp +++ b/widget/headless/HeadlessCompositorWidget.cpp @@ -3,6 +3,7 @@ @@ -2854,15 +2854,14 @@ index b31a969b7ab3d0fc80912b110d91dfdf3e5991f4..52aed4f9fb51f3f58a440d7e57eaccd6 #include "mozilla/widget/PlatformWidgetTypes.h" #include "HeadlessCompositorWidget.h" #include "VsyncDispatcher.h" -@@ -13,10 +14,32 @@ namespace widget { - HeadlessCompositorWidget::HeadlessCompositorWidget( - const HeadlessCompositorWidgetInitData& aInitData, - const layers::CompositorOptions& aOptions, HeadlessWidget* aWindow) -- : CompositorWidget(aOptions), mWidget(aWindow) { -+ : CompositorWidget(aOptions), mWidget(aWindow), mMon("snapshotListener") { - mClientSize = aInitData.InitialClientSize(); - } - +@@ -16,7 +17,30 @@ HeadlessCompositorWidget::HeadlessCompositorWidget( + : CompositorWidget(aOptions), + mWidget(aWindow), + mClientSize(LayoutDeviceIntSize(aInitData.InitialClientSize()), +- "HeadlessCompositorWidget::mClientSize") {} ++ "HeadlessCompositorWidget::mClientSize"), ++ mMon("snapshotListener") {} ++ +void HeadlessCompositorWidget::SetSnapshotListener(HeadlessWidget::SnapshotListener&& listener) { + MOZ_ASSERT(NS_IsMainThread()); + @@ -2884,14 +2883,13 @@ index b31a969b7ab3d0fc80912b110d91dfdf3e5991f4..52aed4f9fb51f3f58a440d7e57eaccd6 + RefPtr result = mDrawTarget; + return result.forget(); +} -+ + void HeadlessCompositorWidget::ObserveVsync(VsyncObserver* aObserver) { if (RefPtr cvd = - mWidget->GetCompositorVsyncDispatcher()) { -@@ -29,6 +52,59 @@ nsIWidget* HeadlessCompositorWidget::RealWidget() { return mWidget; } - void HeadlessCompositorWidget::NotifyClientSizeChanged( +@@ -31,6 +55,59 @@ void HeadlessCompositorWidget::NotifyClientSizeChanged( const LayoutDeviceIntSize& aClientSize) { - mClientSize = aClientSize; + auto size = mClientSize.Lock(); + *size = aClientSize; + layers::CompositorThread()->Dispatch(NewRunnableMethod( + "HeadlessCompositorWidget::UpdateDrawTarget", this, + &HeadlessCompositorWidget::UpdateDrawTarget, @@ -2949,7 +2947,7 @@ index b31a969b7ab3d0fc80912b110d91dfdf3e5991f4..52aed4f9fb51f3f58a440d7e57eaccd6 LayoutDeviceIntSize HeadlessCompositorWidget::GetClientSize() { diff --git a/widget/headless/HeadlessCompositorWidget.h b/widget/headless/HeadlessCompositorWidget.h -index 7f91de9e67d7ffa02de3eef1d760e5cfd05e7ad6..753b8902026626e8f0a190ea3130ba5e65c24835 100644 +index facd2bc65afab8ec1aa322faa20a67464964dfb9..d6dea95472bec6006411753c3dfdab2e3659171f 100644 --- a/widget/headless/HeadlessCompositorWidget.h +++ b/widget/headless/HeadlessCompositorWidget.h @@ -6,6 +6,7 @@ @@ -2973,7 +2971,7 @@ index 7f91de9e67d7ffa02de3eef1d760e5cfd05e7ad6..753b8902026626e8f0a190ea3130ba5e uintptr_t GetWidgetKey() override; -@@ -42,9 +47,17 @@ class HeadlessCompositorWidget final : public CompositorWidget, +@@ -42,10 +47,18 @@ class HeadlessCompositorWidget final : public CompositorWidget, } private: @@ -2984,7 +2982,8 @@ index 7f91de9e67d7ffa02de3eef1d760e5cfd05e7ad6..753b8902026626e8f0a190ea3130ba5e HeadlessWidget* mWidget; + mozilla::ReentrantMonitor mMon; - LayoutDeviceIntSize mClientSize; + // See GtkCompositorWidget for the justification for this mutex. + DataMutex mClientSize; + + HeadlessWidget::SnapshotListener mSnapshotListener; + RefPtr mDrawTarget; @@ -2992,7 +2991,7 @@ index 7f91de9e67d7ffa02de3eef1d760e5cfd05e7ad6..753b8902026626e8f0a190ea3130ba5e } // namespace widget diff --git a/widget/headless/HeadlessWidget.cpp b/widget/headless/HeadlessWidget.cpp -index 1beca01cf88466e8a10e2cb6ae972e4461e94e22..8c5c1d8685190d9710200daed17aa423095cdc0b 100644 +index 54d9625e5ec05dfa4fe938181c755c78752231b7..44b934e7681c30707f2a87d7b62572bca93549e2 100644 --- a/widget/headless/HeadlessWidget.cpp +++ b/widget/headless/HeadlessWidget.cpp @@ -109,6 +109,8 @@ void HeadlessWidget::Destroy() { @@ -3004,7 +3003,7 @@ index 1beca01cf88466e8a10e2cb6ae972e4461e94e22..8c5c1d8685190d9710200daed17aa423 nsBaseWidget::OnDestroy(); nsBaseWidget::Destroy(); -@@ -607,5 +609,14 @@ nsresult HeadlessWidget::SynthesizeNativeTouchpadPan( +@@ -614,5 +616,14 @@ nsresult HeadlessWidget::SynthesizeNativeTouchpadPan( return NS_OK; } @@ -3020,7 +3019,7 @@ index 1beca01cf88466e8a10e2cb6ae972e4461e94e22..8c5c1d8685190d9710200daed17aa423 } // namespace widget } // namespace mozilla diff --git a/widget/headless/HeadlessWidget.h b/widget/headless/HeadlessWidget.h -index b77ec632a90ff98f4df7af6846fc02fd6411d2e1..ccdbaac472b4c9f6d94e6f8665af9ee740f61311 100644 +index f5b10886863facaa0e760606d4103a61a6072e1a..662678842c869c5152899405056a8fdcd0cadcbf 100644 --- a/widget/headless/HeadlessWidget.h +++ b/widget/headless/HeadlessWidget.h @@ -141,6 +141,9 @@ class HeadlessWidget : public nsBaseWidget { diff --git a/browser_patches/firefox/preferences/playwright.cfg b/browser_patches/firefox/preferences/playwright.cfg index 0d8483d3aa..503f5fe896 100644 --- a/browser_patches/firefox/preferences/playwright.cfg +++ b/browser_patches/firefox/preferences/playwright.cfg @@ -78,6 +78,15 @@ pref("geo.provider.testing", true); // THESE ARE NICHE PROPERTIES THAT ARE NICE TO HAVE // ================================================================= +// Disable auto-fill for credit cards and addresses. +// See https://github.com/microsoft/playwright/issues/21393 +pref("extensions.formautofill.creditCards.supported", "off"); +pref("extensions.formautofill.addresses.supported", "off"); + +// Allow access to system-added self-signed certificates. This aligns +// firefox behavior with other browser defaults. +pref("security.enterprise_roots.enabled", true); + // Avoid stalling on shutdown, after "xpcom-will-shutdown" phase. // This at least happens when shutting down soon after launching. // See AppShutdown.cpp for more details on shutdown phases. diff --git a/browser_patches/webkit/UPSTREAM_CONFIG.sh b/browser_patches/webkit/UPSTREAM_CONFIG.sh index 1ccf9f5732..e3eebadca5 100644 --- a/browser_patches/webkit/UPSTREAM_CONFIG.sh +++ b/browser_patches/webkit/UPSTREAM_CONFIG.sh @@ -1,3 +1,3 @@ REMOTE_URL="https://github.com/WebKit/WebKit.git" BASE_BRANCH="main" -BASE_REVISION="2091944d51ce324e4e7e735350062c715d163e35" +BASE_REVISION="f735506198f5107f919ba461479fffadd32adc93" diff --git a/browser_patches/webkit/patches/bootstrap.diff b/browser_patches/webkit/patches/bootstrap.diff index 2c55fb8b22..b2a7bb19bc 100644 --- a/browser_patches/webkit/patches/bootstrap.diff +++ b/browser_patches/webkit/patches/bootstrap.diff @@ -1,8 +1,8 @@ diff --git a/Source/JavaScriptCore/CMakeLists.txt b/Source/JavaScriptCore/CMakeLists.txt -index 7ac90340dc605072b34b7d35f58f6e48e49704d0..e9f60ce05e5537f26f4c6d6c4dae16179be12abb 100644 +index f7cacfdd8da567e80b93a39d85f685e8e9517826..32114088df586b14156f196b12e34bb7079ff44f 100644 --- a/Source/JavaScriptCore/CMakeLists.txt +++ b/Source/JavaScriptCore/CMakeLists.txt -@@ -1394,22 +1394,27 @@ set(JavaScriptCore_INSPECTOR_DOMAINS +@@ -1391,22 +1391,27 @@ set(JavaScriptCore_INSPECTOR_DOMAINS ${JAVASCRIPTCORE_DIR}/inspector/protocol/CSS.json ${JAVASCRIPTCORE_DIR}/inspector/protocol/Canvas.json ${JAVASCRIPTCORE_DIR}/inspector/protocol/Console.json @@ -79,7 +79,7 @@ index d28bffd30f21910bb63f515efc6fa9c7749825a4..498ea4b88e0befb9b526c188e079bb5b return nullptr; inspectorObject->setValue(name.string(), inspectorValue.releaseNonNull()); diff --git a/Source/JavaScriptCore/inspector/IdentifiersFactory.cpp b/Source/JavaScriptCore/inspector/IdentifiersFactory.cpp -index 18b6dab3b9df38d781c5c767f76a29d8d18dbe02..0f3a341056f429ff282abcab22be4843c60f546c 100644 +index 528cceee66a1b1c91a0d0e59d5f1a1770a050c17..0f3a341056f429ff282abcab22be4843c60f546c 100644 --- a/Source/JavaScriptCore/inspector/IdentifiersFactory.cpp +++ b/Source/JavaScriptCore/inspector/IdentifiersFactory.cpp @@ -32,14 +32,21 @@ @@ -92,7 +92,7 @@ index 18b6dab3b9df38d781c5c767f76a29d8d18dbe02..0f3a341056f429ff282abcab22be4843 static String addPrefixToIdentifier(unsigned long identifier) { -- return makeString("0.", identifier); +- return makeString("0."_s, identifier); + return makeString(s_processID, ".", identifier); } @@ -248,7 +248,7 @@ index 1cf725d02a5771cddee1029669eac752efc9bf3e..3d625dec9a281e898f4e3085bbfec829 } diff --git a/Source/JavaScriptCore/inspector/InspectorBackendDispatcher.cpp b/Source/JavaScriptCore/inspector/InspectorBackendDispatcher.cpp -index c7ca76cc055bd7d57f33664ac00013bc5e944aa2..9ab8476df0cb52eab6dee44e995d80db4cd6f4b3 100644 +index 820a08fc660633e09675d0e647bd0c50d2fa905a..5ca5ee5a6897b7ef332d906018b457122096df98 100644 --- a/Source/JavaScriptCore/inspector/InspectorBackendDispatcher.cpp +++ b/Source/JavaScriptCore/inspector/InspectorBackendDispatcher.cpp @@ -101,7 +101,7 @@ void BackendDispatcher::registerDispatcherForDomain(const String& domain, Supple @@ -338,7 +338,7 @@ index 4b95964db4d902b4b7f4b0b4c40afea51654ff2f..653842a82ed7a7be8603c9ef88ff48d1 bool m_isPaused { false }; }; diff --git a/Source/JavaScriptCore/inspector/JSGlobalObjectConsoleClient.cpp b/Source/JavaScriptCore/inspector/JSGlobalObjectConsoleClient.cpp -index f06ff03be0fe272e08a46c84b0e81323ac06f90b..cf7b13aabfd13b7e8b258b4795933268c9e90c08 100644 +index 1c40b312afeca605fc8a6aefd993749fce3f3676..b7fbac213249fd15233b60e11a38aae7b934cf7e 100644 --- a/Source/JavaScriptCore/inspector/JSGlobalObjectConsoleClient.cpp +++ b/Source/JavaScriptCore/inspector/JSGlobalObjectConsoleClient.cpp @@ -218,6 +218,14 @@ void JSGlobalObjectConsoleClient::screenshot(JSGlobalObject*, Refurl()) || document()->isSecureContext(); bool hasMixedContent = !document()->foundMixedContent().isEmpty(); bool isLocalOrigin = securityOrigin()->isLocal(); + bool isPotentiallyTrustworthy = securityOrigin()->isPotentiallyTrustworthy(); if (document()->canAccessResource(ScriptExecutionContext::ResourceType::Geolocation) != ScriptExecutionContext::HasResourceAccess::No) { -- if (isLocalOrigin || (isSecure && !hasMixedContent) || isRequestFromIBooks()) -+ if (isLocalOrigin || isPotentiallyTrustworthy || (isSecure && !hasMixedContent) || isRequestFromIBooks()) +- if (isLocalOrigin || (isSecure && !hasMixedContent)) ++ if (isLocalOrigin || isPotentiallyTrustworthy || (isSecure && !hasMixedContent)) return false; } @@ -2366,10 +2375,10 @@ index 2472c255319384d9f7361130f2db186b82875e9c..c9f8884711ef948a2d426b1afb21d12c namespace WebCore { diff --git a/Source/WebCore/Modules/speech/cocoa/WebSpeechRecognizerTask.mm b/Source/WebCore/Modules/speech/cocoa/WebSpeechRecognizerTask.mm -index a941d76a4f748718df1e3cff2a6c5e0827f48891..f62db5a27ac0e4c12430e7d19e60c83d768ace22 100644 +index 316aa5b17c5346b2d3e420e7262e7e76e254f427..c2beed6bd1e83257095252146ee3506ce5c92b07 100644 --- a/Source/WebCore/Modules/speech/cocoa/WebSpeechRecognizerTask.mm +++ b/Source/WebCore/Modules/speech/cocoa/WebSpeechRecognizerTask.mm -@@ -198,6 +198,7 @@ - (void)sendEndIfNeeded +@@ -195,6 +195,7 @@ - (void)sendEndIfNeeded - (void)speechRecognizer:(SFSpeechRecognizer *)speechRecognizer availabilityDidChange:(BOOL)available { @@ -2377,7 +2386,7 @@ index a941d76a4f748718df1e3cff2a6c5e0827f48891..f62db5a27ac0e4c12430e7d19e60c83d ASSERT(isMainThread()); if (available || !_task) -@@ -211,6 +212,7 @@ - (void)speechRecognizer:(SFSpeechRecognizer *)speechRecognizer availabilityDidC +@@ -208,6 +209,7 @@ - (void)speechRecognizer:(SFSpeechRecognizer *)speechRecognizer availabilityDidC - (void)speechRecognitionTask:(SFSpeechRecognitionTask *)task didHypothesizeTranscription:(SFTranscription *)transcription { @@ -2385,15 +2394,15 @@ index a941d76a4f748718df1e3cff2a6c5e0827f48891..f62db5a27ac0e4c12430e7d19e60c83d ASSERT(isMainThread()); [self sendSpeechStartIfNeeded]; -@@ -219,6 +221,7 @@ - (void)speechRecognitionTask:(SFSpeechRecognitionTask *)task didHypothesizeTran +@@ -216,6 +218,7 @@ - (void)speechRecognitionTask:(SFSpeechRecognitionTask *)task didHypothesizeTran - (void)speechRecognitionTask:(SFSpeechRecognitionTask *)task didFinishRecognition:(SFSpeechRecognitionResult *)recognitionResult { + UNUSED_PARAM(task); ASSERT(isMainThread()); - [self callbackWithTranscriptions:recognitionResult.transcriptions isFinal:YES]; -@@ -230,6 +233,7 @@ - (void)speechRecognitionTask:(SFSpeechRecognitionTask *)task didFinishRecogniti + if (task.state == SFSpeechRecognitionTaskStateCanceling || (!_doMultipleRecognitions && task.state == SFSpeechRecognitionTaskStateCompleted)) +@@ -229,6 +232,7 @@ - (void)speechRecognitionTask:(SFSpeechRecognitionTask *)task didFinishRecogniti - (void)speechRecognitionTaskWasCancelled:(SFSpeechRecognitionTask *)task { @@ -2402,10 +2411,10 @@ index a941d76a4f748718df1e3cff2a6c5e0827f48891..f62db5a27ac0e4c12430e7d19e60c83d [self sendSpeechEndIfNeeded]; diff --git a/Source/WebCore/PlatformWPE.cmake b/Source/WebCore/PlatformWPE.cmake -index ca1b377de5ef0be938bfa7356f67714a03a90c02..6468a08f678bd657c1c2cf1f928aa5a9874a7bba 100644 +index 66c94345e5fa16273b533647c7b55a9c6bb6d627..dd9c9c0e8ae7d833f8f5a72435abbcc89a9f0576 100644 --- a/Source/WebCore/PlatformWPE.cmake +++ b/Source/WebCore/PlatformWPE.cmake -@@ -50,6 +50,7 @@ list(APPEND WebCore_PRIVATE_FRAMEWORK_HEADERS +@@ -49,6 +49,7 @@ list(APPEND WebCore_PRIVATE_FRAMEWORK_HEADERS platform/graphics/wayland/PlatformDisplayWayland.h platform/graphics/wayland/WlUniquePtr.h @@ -2414,10 +2423,10 @@ index ca1b377de5ef0be938bfa7356f67714a03a90c02..6468a08f678bd657c1c2cf1f928aa5a9 set(CSS_VALUE_PLATFORM_DEFINES "HAVE_OS_DARK_MODE_SUPPORT=1") diff --git a/Source/WebCore/SourcesCocoa.txt b/Source/WebCore/SourcesCocoa.txt -index 26dc2aa0ba6900b43514ab94929ca81f07995c1f..3771eea385b374c583824240fa4e9977a0956456 100644 +index 464eeee0204e13d33c9a531a123447c4c5142022..82c509d2308966bbd5c7fd0826d730b6924794a3 100644 --- a/Source/WebCore/SourcesCocoa.txt +++ b/Source/WebCore/SourcesCocoa.txt -@@ -682,3 +682,9 @@ platform/graphics/angle/GraphicsContextGLANGLE.cpp @no-unify +@@ -687,3 +687,9 @@ platform/graphics/angle/GraphicsContextGLANGLE.cpp @no-unify platform/graphics/cocoa/ANGLEUtilitiesCocoa.cpp @no-unify platform/graphics/cocoa/GraphicsContextGLCocoa.mm @no-unify platform/graphics/cv/GraphicsContextGLCVCocoa.cpp @no-unify @@ -2428,12 +2437,12 @@ index 26dc2aa0ba6900b43514ab94929ca81f07995c1f..3771eea385b374c583824240fa4e9977 +JSTouchList.cpp +// Playwright end diff --git a/Source/WebCore/SourcesGTK.txt b/Source/WebCore/SourcesGTK.txt -index 723e7782ff80a3dc839d96aaf77864e63834e1d9..2e743b22e9dc5205ab41844f2d325714ff8e959e 100644 +index 09d074dba32553c0e1253f7f5e2503a812c0dd24..8a4108deffb7686d2014d8a34878a5146ab67f0f 100644 --- a/Source/WebCore/SourcesGTK.txt +++ b/Source/WebCore/SourcesGTK.txt -@@ -138,3 +138,10 @@ platform/xdg/MIMETypeRegistryXdg.cpp +@@ -134,3 +134,10 @@ platform/unix/LoggingUnix.cpp + platform/xdg/MIMETypeRegistryXdg.cpp - rendering/RenderThemeAdwaita.cpp rendering/RenderThemeGtk.cpp + +// Playwright: begin. @@ -2443,7 +2452,7 @@ index 723e7782ff80a3dc839d96aaf77864e63834e1d9..2e743b22e9dc5205ab41844f2d325714 +JSSpeechSynthesisEventInit.cpp +// Playwright: end. diff --git a/Source/WebCore/SourcesWPE.txt b/Source/WebCore/SourcesWPE.txt -index ec0ab70ea90648a5d72afa35946735c747f1c2d2..b3d82fa0cd4e7e38c700bb11dd1218cb92f0de7e 100644 +index 739128afb36df50b1bb2b5d8e08a32b3fbbfab0f..da7748cdd97b54d5e3470730415a788af34a5f51 100644 --- a/Source/WebCore/SourcesWPE.txt +++ b/Source/WebCore/SourcesWPE.txt @@ -43,6 +43,8 @@ editing/libwpe/EditorLibWPE.cpp @@ -2455,7 +2464,7 @@ index ec0ab70ea90648a5d72afa35946735c747f1c2d2..b3d82fa0cd4e7e38c700bb11dd1218cb page/linux/ResourceUsageOverlayLinux.cpp page/linux/ResourceUsageThreadLinux.cpp -@@ -95,8 +97,19 @@ platform/text/LocaleICU.cpp +@@ -92,6 +94,17 @@ platform/text/LocaleICU.cpp platform/unix/LoggingUnix.cpp @@ -2464,19 +2473,17 @@ index ec0ab70ea90648a5d72afa35946735c747f1c2d2..b3d82fa0cd4e7e38c700bb11dd1218cb platform/wpe/PlatformScreenWPE.cpp platform/xdg/MIMETypeRegistryXdg.cpp - - rendering/RenderThemeAdwaita.cpp -+ -+platform/wpe/SelectionData.cpp + +// Playwright: begin. ++platform/wpe/SelectionData.cpp ++ +JSSpeechSynthesisErrorCode.cpp +JSSpeechSynthesisErrorEvent.cpp +JSSpeechSynthesisErrorEventInit.cpp +JSSpeechSynthesisEventInit.cpp +// Playwright: end. diff --git a/Source/WebCore/WebCore.order b/Source/WebCore/WebCore.order -index a5938677622935e2c6ca3ed76c3a12d0eb7e04a7..cea2a0e330cfdf01b172b3f6acc60acbb680776f 100644 +index 57171686b9bdfa7c81411d2fd8954749a81d0c2c..e07222e6d4cd5596edae43b796ed365436470fa3 100644 --- a/Source/WebCore/WebCore.order +++ b/Source/WebCore/WebCore.order @@ -3089,7 +3089,6 @@ __ZN7WebCore14DocumentLoader23stopLoadingSubresourcesEv @@ -2488,10 +2495,10 @@ index a5938677622935e2c6ca3ed76c3a12d0eb7e04a7..cea2a0e330cfdf01b172b3f6acc60acb __ZN7WebCore14DocumentLoaderD2Ev __ZN7WebCore14DocumentLoader17clearMainResourceEv diff --git a/Source/WebCore/WebCore.xcodeproj/project.pbxproj b/Source/WebCore/WebCore.xcodeproj/project.pbxproj -index e4516ba0cb033df81189b69b4f2c9604fede76c5..04bf943d7d84a00cf0d7f30ade1200f03d16eb62 100644 +index ff940ab298a8061f236af6fa8da5c25819556ecc..430840259b7d32817359a94240c55c9b13c80075 100644 --- a/Source/WebCore/WebCore.xcodeproj/project.pbxproj +++ b/Source/WebCore/WebCore.xcodeproj/project.pbxproj -@@ -5763,6 +5763,13 @@ +@@ -5826,6 +5826,13 @@ EDE3A5000C7A430600956A37 /* ColorMac.h in Headers */ = {isa = PBXBuildFile; fileRef = EDE3A4FF0C7A430600956A37 /* ColorMac.h */; settings = {ATTRIBUTES = (Private, ); }; }; EDEC98030AED7E170059137F /* WebCorePrefix.h in Headers */ = {isa = PBXBuildFile; fileRef = EDEC98020AED7E170059137F /* WebCorePrefix.h */; }; EFCC6C8F20FE914400A2321B /* CanvasActivityRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = EFCC6C8D20FE914000A2321B /* CanvasActivityRecord.h */; settings = {ATTRIBUTES = (Private, ); }; }; @@ -2505,7 +2512,7 @@ index e4516ba0cb033df81189b69b4f2c9604fede76c5..04bf943d7d84a00cf0d7f30ade1200f0 F12171F616A8CF0B000053CA /* WebVTTElement.h in Headers */ = {isa = PBXBuildFile; fileRef = F12171F416A8BC63000053CA /* WebVTTElement.h */; }; F32BDCD92363AACA0073B6AE /* UserGestureEmulationScope.h in Headers */ = {isa = PBXBuildFile; fileRef = F32BDCD72363AACA0073B6AE /* UserGestureEmulationScope.h */; }; F344C7141125B82C00F26EEE /* InspectorFrontendClient.h in Headers */ = {isa = PBXBuildFile; fileRef = F344C7121125B82C00F26EEE /* InspectorFrontendClient.h */; settings = {ATTRIBUTES = (Private, ); }; }; -@@ -18672,6 +18679,14 @@ +@@ -18893,6 +18900,14 @@ EDEC98020AED7E170059137F /* WebCorePrefix.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = WebCorePrefix.h; sourceTree = ""; tabWidth = 4; usesTabs = 0; }; EFB7287B2124C73D005C2558 /* CanvasActivityRecord.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CanvasActivityRecord.cpp; sourceTree = ""; }; EFCC6C8D20FE914000A2321B /* CanvasActivityRecord.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CanvasActivityRecord.h; sourceTree = ""; }; @@ -2520,7 +2527,7 @@ index e4516ba0cb033df81189b69b4f2c9604fede76c5..04bf943d7d84a00cf0d7f30ade1200f0 F12171F316A8BC63000053CA /* WebVTTElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebVTTElement.cpp; sourceTree = ""; }; F12171F416A8BC63000053CA /* WebVTTElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebVTTElement.h; sourceTree = ""; }; F32BDCD52363AAC90073B6AE /* UserGestureEmulationScope.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UserGestureEmulationScope.cpp; sourceTree = ""; }; -@@ -25581,6 +25596,11 @@ +@@ -25903,6 +25918,11 @@ BC4A5324256055590028C592 /* TextDirectionSubmenuInclusionBehavior.h */, 2D4F96F11A1ECC240098BF88 /* TextIndicator.cpp */, 2D4F96F21A1ECC240098BF88 /* TextIndicator.h */, @@ -2532,7 +2539,7 @@ index e4516ba0cb033df81189b69b4f2c9604fede76c5..04bf943d7d84a00cf0d7f30ade1200f0 F48570A42644C76D00C05F71 /* TranslationContextMenuInfo.h */, F4E1965F21F26E4E00285078 /* UndoItem.cpp */, 2ECDBAD521D8906300F00ECD /* UndoItem.h */, -@@ -31621,6 +31641,8 @@ +@@ -31995,6 +32015,8 @@ 29E4D8DF16B0940F00C84704 /* PlatformSpeechSynthesizer.h */, 1AD8F81A11CAB9E900E93E54 /* PlatformStrategies.cpp */, 1AD8F81911CAB9E900E93E54 /* PlatformStrategies.h */, @@ -2541,7 +2548,7 @@ index e4516ba0cb033df81189b69b4f2c9604fede76c5..04bf943d7d84a00cf0d7f30ade1200f0 0FD7C21D23CE41E30096D102 /* PlatformWheelEvent.cpp */, 935C476A09AC4D4F00A6AAB4 /* PlatformWheelEvent.h */, BCBB8AB513F1AFB000734DF0 /* PODInterval.h */, -@@ -34109,6 +34131,7 @@ +@@ -34500,6 +34522,7 @@ AD6E71AB1668899D00320C13 /* DocumentSharedObjectPool.h */, 6BDB5DC1227BD3B800919770 /* DocumentStorageAccess.cpp */, 6BDB5DC0227BD3B800919770 /* DocumentStorageAccess.h */, @@ -2549,7 +2556,7 @@ index e4516ba0cb033df81189b69b4f2c9604fede76c5..04bf943d7d84a00cf0d7f30ade1200f0 7CE7FA5B1EF882300060C9D6 /* DocumentTouch.cpp */, 7CE7FA591EF882300060C9D6 /* DocumentTouch.h */, A8185F3209765765005826D9 /* DocumentType.cpp */, -@@ -38512,6 +38535,8 @@ +@@ -38957,6 +38980,8 @@ 1AD8F81B11CAB9E900E93E54 /* PlatformStrategies.h in Headers */, 0F7D07331884C56C00B4AF86 /* PlatformTextTrack.h in Headers */, 074E82BB18A69F0E007EF54C /* PlatformTimeRanges.h in Headers */, @@ -2558,7 +2565,7 @@ index e4516ba0cb033df81189b69b4f2c9604fede76c5..04bf943d7d84a00cf0d7f30ade1200f0 CDD08ABD277E542600EA3755 /* PlatformTrackConfiguration.h in Headers */, CD1F9B022700323D00617EB6 /* PlatformVideoColorPrimaries.h in Headers */, CD1F9B01270020B700617EB6 /* PlatformVideoColorSpace.h in Headers */, -@@ -39710,6 +39735,7 @@ +@@ -40167,6 +40192,7 @@ 0F54DD081881D5F5003EEDBB /* Touch.h in Headers */, 71B7EE0D21B5C6870031C1EF /* TouchAction.h in Headers */, 0F54DD091881D5F5003EEDBB /* TouchEvent.h in Headers */, @@ -2566,7 +2573,7 @@ index e4516ba0cb033df81189b69b4f2c9604fede76c5..04bf943d7d84a00cf0d7f30ade1200f0 0F54DD0A1881D5F5003EEDBB /* TouchList.h in Headers */, 070334D71459FFD5008D8D45 /* TrackBase.h in Headers */, BE88E0C21715CE2600658D98 /* TrackListBase.h in Headers */, -@@ -40674,6 +40700,7 @@ +@@ -41136,6 +41162,7 @@ 1ABA76CA11D20E50004C201C /* CSSPropertyNames.cpp in Sources */, 2D22830323A8470700364B7E /* CursorMac.mm in Sources */, 5CBD59592280E926002B22AA /* CustomHeaderFields.cpp in Sources */, @@ -2574,9 +2581,9 @@ index e4516ba0cb033df81189b69b4f2c9604fede76c5..04bf943d7d84a00cf0d7f30ade1200f0 329C0C2528BD96EB00F187D2 /* ElementName.cpp in Sources */, 7CE6CBFD187F394900D46BF5 /* FormatConverter.cpp in Sources */, 4667EA3E2968D9DA00BAB1E2 /* GameControllerHapticEffect.mm in Sources */, -@@ -40751,6 +40778,9 @@ - 329C0C2328BD96D600F187D2 /* TagName.cpp in Sources */, +@@ -41214,6 +41241,9 @@ CE88EE262414467B007F29C2 /* TextAlternativeWithRange.mm in Sources */, + BE39137129B267F500FA5D4F /* TextTransformCocoa.cpp in Sources */, 51DF6D800B92A18E00C2DC85 /* ThreadCheck.mm in Sources */, + F050E16A23AD660C0011CE47 /* Touch.cpp in Sources */, + F050E17123AD669F0011CE47 /* TouchEvent.cpp in Sources */, @@ -2585,10 +2592,10 @@ index e4516ba0cb033df81189b69b4f2c9604fede76c5..04bf943d7d84a00cf0d7f30ade1200f0 538EC8021F96AF81004D22A8 /* UnifiedSource1.cpp in Sources */, 538EC8051F96AF81004D22A8 /* UnifiedSource2-mm.mm in Sources */, diff --git a/Source/WebCore/accessibility/AccessibilityObject.cpp b/Source/WebCore/accessibility/AccessibilityObject.cpp -index fc9a0a8c4078fd533364d429dee947d0f801d887..2a43efe25027d712178600ef8e9ba5be7f279118 100644 +index 43f1c868788fe8ba84b984bd265983bd798ede7e..e9779489a7cadb8c979c582574117cfa67a26019 100644 --- a/Source/WebCore/accessibility/AccessibilityObject.cpp +++ b/Source/WebCore/accessibility/AccessibilityObject.cpp -@@ -62,6 +62,7 @@ +@@ -64,6 +64,7 @@ #include "HTMLParserIdioms.h" #include "HTMLTextAreaElement.h" #include "HitTestResult.h" @@ -2596,7 +2603,7 @@ index fc9a0a8c4078fd533364d429dee947d0f801d887..2a43efe25027d712178600ef8e9ba5be #include "LocalizedStrings.h" #include "MathMLNames.h" #include "NodeList.h" -@@ -3657,9 +3658,14 @@ AccessibilityObjectInclusion AccessibilityObject::defaultObjectInclusion() const +@@ -3702,9 +3703,14 @@ AccessibilityObjectInclusion AccessibilityObject::defaultObjectInclusion() const if (roleValue() == AccessibilityRole::ApplicationDialog) return AccessibilityObjectInclusion::IncludeObject; @@ -2614,10 +2621,10 @@ index fc9a0a8c4078fd533364d429dee947d0f801d887..2a43efe25027d712178600ef8e9ba5be { AXComputedObjectAttributeCache* attributeCache = nullptr; diff --git a/Source/WebCore/bindings/js/WebCoreBuiltinNames.h b/Source/WebCore/bindings/js/WebCoreBuiltinNames.h -index c4fd0ee5013d5f22e61a8013abe67a1730128705..97412e7a3bd1c95ce1bd8a4f5d1528ebcc6fa8bb 100644 +index 8b56160e0e42841968fee4303ab8f7571bc1646e..6edd1cabb8722752b0d47d7711aad61677cf5f3b 100644 --- a/Source/WebCore/bindings/js/WebCoreBuiltinNames.h +++ b/Source/WebCore/bindings/js/WebCoreBuiltinNames.h -@@ -162,6 +162,8 @@ namespace WebCore { +@@ -167,6 +167,8 @@ namespace WebCore { macro(DecompressionStreamTransform) \ macro(DelayNode) \ macro(DeprecationReportBody) \ @@ -2627,10 +2634,10 @@ index c4fd0ee5013d5f22e61a8013abe67a1730128705..97412e7a3bd1c95ce1bd8a4f5d1528eb macro(DynamicsCompressorNode) \ macro(ElementInternals) \ diff --git a/Source/WebCore/css/query/MediaQueryFeatures.cpp b/Source/WebCore/css/query/MediaQueryFeatures.cpp -index ab1ccbfa400ef05139c1f5c7cf25efaf6e74a16e..fdb488be74e8715da0c62d70832851393801f913 100644 +index eb1bc006642c7aa4a8fb05cc117f296dcbd56445..e8bc769b71c0ba027cb302af8eca9df4a0361002 100644 --- a/Source/WebCore/css/query/MediaQueryFeatures.cpp +++ b/Source/WebCore/css/query/MediaQueryFeatures.cpp -@@ -355,7 +355,11 @@ const FeatureSchema& forcedColors() +@@ -368,7 +368,11 @@ const FeatureSchema& forcedColors() static MainThreadNeverDestroyed schema { "forced-colors"_s, Vector { CSSValueNone, CSSValueActive }, @@ -2643,7 +2650,7 @@ index ab1ccbfa400ef05139c1f5c7cf25efaf6e74a16e..fdb488be74e8715da0c62d7083285139 return MatchingIdentifiers { CSSValueNone }; } }; -@@ -535,6 +539,9 @@ const FeatureSchema& prefersReducedMotion() +@@ -551,6 +555,9 @@ const FeatureSchema& prefersReducedMotion() [](auto& context) { bool userPrefersReducedMotion = [&] { auto& frame = *context.document.frame(); @@ -2654,10 +2661,10 @@ index ab1ccbfa400ef05139c1f5c7cf25efaf6e74a16e..fdb488be74e8715da0c62d7083285139 case ForcedAccessibilityValue::On: return true; diff --git a/Source/WebCore/dom/DataTransfer.cpp b/Source/WebCore/dom/DataTransfer.cpp -index c816a217e6d632a472e4f7a499d051443c599e84..e5733a0e482ea5f8a2e319bccb02f13f33d75cb8 100644 +index f3847d5b99d839d31976f898b8fcaa5b32168027..d35cd25d0986c69ddfbef123ec46cdf52ccbe4f0 100644 --- a/Source/WebCore/dom/DataTransfer.cpp +++ b/Source/WebCore/dom/DataTransfer.cpp -@@ -503,6 +503,14 @@ Ref DataTransfer::createForDrag(const Document& document) +@@ -511,6 +511,14 @@ Ref DataTransfer::createForDrag(const Document& document) return adoptRef(*new DataTransfer(StoreMode::ReadWrite, Pasteboard::createForDragAndDrop(PagePasteboardContext::create(document.pageID())), Type::DragAndDropData)); } @@ -2883,7 +2890,7 @@ index 780b9decb28f284cfdc3f88a11bef37dd3e96ca5..0b827f111748054377e296c3973089eb #endif // USE(LIBWPE) diff --git a/Source/WebCore/html/FileInputType.cpp b/Source/WebCore/html/FileInputType.cpp -index c24037a5738c3b02ab26044db7c5830f8eabd8ad..e3ada478803f06243e9317fc96dee74a3825b577 100644 +index 045cc0057af32f0010d503e98541100d45de6d9d..b251c5498cd82d18fbeebc84944eaba184bdc9a7 100644 --- a/Source/WebCore/html/FileInputType.cpp +++ b/Source/WebCore/html/FileInputType.cpp @@ -38,6 +38,7 @@ @@ -2906,7 +2913,7 @@ index c24037a5738c3b02ab26044db7c5830f8eabd8ad..e3ada478803f06243e9317fc96dee74a if (!UserGestureIndicator::processingUserGesture()) return; -@@ -374,7 +380,9 @@ void FileInputType::setFiles(RefPtr&& files, RequestIcon shouldRequest +@@ -378,7 +384,9 @@ void FileInputType::setFiles(RefPtr&& files, RequestIcon shouldRequest pathsChanged = true; else { for (unsigned i = 0; i < length; ++i) { @@ -2918,7 +2925,7 @@ index c24037a5738c3b02ab26044db7c5830f8eabd8ad..e3ada478803f06243e9317fc96dee74a break; } diff --git a/Source/WebCore/inspector/InspectorController.cpp b/Source/WebCore/inspector/InspectorController.cpp -index d392cf514a0306ba9eb516a5cb4c92280ed13bb0..276daf6464546a451de17951d3c6773555d9ae17 100644 +index 4a02058192ee354d49a2af7ec86ae6213df00d47..f24adaa859081843dfd07025f0d594f9054b2172 100644 --- a/Source/WebCore/inspector/InspectorController.cpp +++ b/Source/WebCore/inspector/InspectorController.cpp @@ -288,6 +288,8 @@ void InspectorController::disconnectFrontend(FrontendChannel& frontendChannel) @@ -2976,7 +2983,7 @@ index d392cf514a0306ba9eb516a5cb4c92280ed13bb0..276daf6464546a451de17951d3c67735 + } // namespace WebCore diff --git a/Source/WebCore/inspector/InspectorController.h b/Source/WebCore/inspector/InspectorController.h -index d41c9f913f5916aec62452041d5a40988b4a25c9..aa62e18e401249aad2939aa62a20c8e226936d01 100644 +index 92dbeae204e0ea3c3a99b66250378a24f3c75459..8a61728ed460a85b363ec3fbc45c37a0330cde1f 100644 --- a/Source/WebCore/inspector/InspectorController.h +++ b/Source/WebCore/inspector/InspectorController.h @@ -101,6 +101,10 @@ public: @@ -2999,7 +3006,7 @@ index d41c9f913f5916aec62452041d5a40988b4a25c9..aa62e18e401249aad2939aa62a20c8e2 } // namespace WebCore diff --git a/Source/WebCore/inspector/InspectorInstrumentation.cpp b/Source/WebCore/inspector/InspectorInstrumentation.cpp -index 88725f518d3bc0a46d15ca14fab3b8d252fb3816..6612a07e137e7b53b3f029ab36ee627a4a26dc8a 100644 +index 1a05d2d131ebb8e580bd3c72628086424710001c..b19fde2076c1b1da41f162cdc759439d2f3ff72b 100644 --- a/Source/WebCore/inspector/InspectorInstrumentation.cpp +++ b/Source/WebCore/inspector/InspectorInstrumentation.cpp @@ -601,6 +601,12 @@ void InspectorInstrumentation::applyUserAgentOverrideImpl(InstrumentingAgents& i @@ -3052,7 +3059,7 @@ index 88725f518d3bc0a46d15ca14fab3b8d252fb3816..6612a07e137e7b53b3f029ab36ee627a } void InspectorInstrumentation::frameDetachedFromParentImpl(InstrumentingAgents& instrumentingAgents, Frame& frame) -@@ -810,12 +819,6 @@ void InspectorInstrumentation::frameDocumentUpdatedImpl(InstrumentingAgents& ins +@@ -812,12 +821,6 @@ void InspectorInstrumentation::frameDocumentUpdatedImpl(InstrumentingAgents& ins pageDOMDebuggerAgent->frameDocumentUpdated(frame); } @@ -3065,7 +3072,7 @@ index 88725f518d3bc0a46d15ca14fab3b8d252fb3816..6612a07e137e7b53b3f029ab36ee627a void InspectorInstrumentation::frameStartedLoadingImpl(InstrumentingAgents& instrumentingAgents, Frame& frame) { if (frame.isMainFrame()) { -@@ -840,10 +843,10 @@ void InspectorInstrumentation::frameStoppedLoadingImpl(InstrumentingAgents& inst +@@ -842,10 +845,10 @@ void InspectorInstrumentation::frameStoppedLoadingImpl(InstrumentingAgents& inst inspectorPageAgent->frameStoppedLoading(frame); } @@ -3078,7 +3085,7 @@ index 88725f518d3bc0a46d15ca14fab3b8d252fb3816..6612a07e137e7b53b3f029ab36ee627a } void InspectorInstrumentation::frameClearedScheduledNavigationImpl(InstrumentingAgents& instrumentingAgents, Frame& frame) -@@ -858,6 +861,12 @@ void InspectorInstrumentation::accessibilitySettingsDidChangeImpl(InstrumentingA +@@ -860,6 +863,12 @@ void InspectorInstrumentation::accessibilitySettingsDidChangeImpl(InstrumentingA inspectorPageAgent->accessibilitySettingsDidChange(); } @@ -3091,7 +3098,7 @@ index 88725f518d3bc0a46d15ca14fab3b8d252fb3816..6612a07e137e7b53b3f029ab36ee627a #if ENABLE(DARK_MODE_CSS) || HAVE(OS_DARK_MODE_SUPPORT) void InspectorInstrumentation::defaultAppearanceDidChangeImpl(InstrumentingAgents& instrumentingAgents) { -@@ -1040,6 +1049,12 @@ void InspectorInstrumentation::consoleStopRecordingCanvasImpl(InstrumentingAgent +@@ -1042,6 +1051,12 @@ void InspectorInstrumentation::consoleStopRecordingCanvasImpl(InstrumentingAgent canvasAgent->consoleStopRecordingCanvas(context); } @@ -3104,7 +3111,7 @@ index 88725f518d3bc0a46d15ca14fab3b8d252fb3816..6612a07e137e7b53b3f029ab36ee627a void InspectorInstrumentation::didOpenDatabaseImpl(InstrumentingAgents& instrumentingAgents, Database& database) { if (auto* databaseAgent = instrumentingAgents.enabledDatabaseAgent()) -@@ -1340,6 +1355,36 @@ void InspectorInstrumentation::renderLayerDestroyedImpl(InstrumentingAgents& ins +@@ -1342,6 +1357,36 @@ void InspectorInstrumentation::renderLayerDestroyedImpl(InstrumentingAgents& ins layerTreeAgent->renderLayerDestroyed(renderLayer); } @@ -3141,7 +3148,7 @@ index 88725f518d3bc0a46d15ca14fab3b8d252fb3816..6612a07e137e7b53b3f029ab36ee627a InstrumentingAgents& InspectorInstrumentation::instrumentingAgents(WorkerOrWorkletGlobalScope& globalScope) { return globalScope.inspectorController().m_instrumentingAgents; -@@ -1351,6 +1396,13 @@ InstrumentingAgents& InspectorInstrumentation::instrumentingAgents(Page& page) +@@ -1353,6 +1398,13 @@ InstrumentingAgents& InspectorInstrumentation::instrumentingAgents(Page& page) return page.inspectorController().m_instrumentingAgents.get(); } @@ -3434,7 +3441,7 @@ index 07103c35e0a9193a010a85cf2ea8017b2ad59212..338d158be5a6f35adc6817dc94d6084b class UserGestureEmulationScope { WTF_MAKE_NONCOPYABLE(UserGestureEmulationScope); diff --git a/Source/WebCore/inspector/agents/InspectorDOMAgent.cpp b/Source/WebCore/inspector/agents/InspectorDOMAgent.cpp -index aefd8aa53a0578d335a077a224481cd139b32edf..77316083fa2e841cd3e08db84897e379020f2dbf 100644 +index 35c844baa2d09b358ef63d2cb3881608a24413c6..4beec23c0cf4b13bfb5caf78cdd63f2e5361baf8 100644 --- a/Source/WebCore/inspector/agents/InspectorDOMAgent.cpp +++ b/Source/WebCore/inspector/agents/InspectorDOMAgent.cpp @@ -62,12 +62,16 @@ @@ -3481,14 +3488,14 @@ index aefd8aa53a0578d335a077a224481cd139b32edf..77316083fa2e841cd3e08db84897e379 return std::nullopt; @@ -153,7 +160,7 @@ static std::optional parseColor(RefPtr&& colorObject) - static Color parseConfigColor(const String& fieldName, JSON::Object& configObject) + static std::optional parseRequiredConfigColor(const String& fieldName, JSON::Object& configObject) { -- return parseColor(configObject.getObject(fieldName)).value_or(Color::transparentBlack); -+ return InspectorDOMAgent::parseColor(configObject.getObject(fieldName)).value_or(Color::transparentBlack); +- return parseColor(configObject.getObject(fieldName)); ++ return InspectorDOMAgent::parseColor(configObject.getObject(fieldName)); } - static bool parseQuad(Ref&& quadArray, FloatQuad* quad) -@@ -176,6 +183,20 @@ static bool parseQuad(Ref&& quadArray, FloatQuad* quad) + static Color parseOptionalConfigColor(const String& fieldName, JSON::Object& configObject) +@@ -181,6 +188,20 @@ static bool parseQuad(Ref&& quadArray, FloatQuad* quad) return true; } @@ -3509,7 +3516,7 @@ index aefd8aa53a0578d335a077a224481cd139b32edf..77316083fa2e841cd3e08db84897e379 class RevalidateStyleAttributeTask { WTF_MAKE_FAST_ALLOCATED; public: -@@ -454,6 +475,20 @@ Node* InspectorDOMAgent::assertNode(Protocol::ErrorString& errorString, Protocol +@@ -462,6 +483,20 @@ Node* InspectorDOMAgent::assertNode(Protocol::ErrorString& errorString, Protocol return node; } @@ -3530,8 +3537,8 @@ index aefd8aa53a0578d335a077a224481cd139b32edf..77316083fa2e841cd3e08db84897e379 Document* InspectorDOMAgent::assertDocument(Protocol::ErrorString& errorString, Protocol::DOM::NodeId nodeId) { Node* node = assertNode(errorString, nodeId); -@@ -1447,16 +1482,7 @@ Protocol::ErrorStringOr InspectorDOMAgent::highlightSelector(Ref InspectorDOMAgent::highlightNode(Ref&& highlightInspectorObject, std::optional&& nodeId, const Protocol::Runtime::RemoteObjectId& objectId) +@@ -1537,16 +1572,7 @@ Protocol::ErrorStringOr InspectorDOMAgent::highlightNode(std::optional InspectorDOMAgent::highlightNode(std::optional&& nodeId, const Protocol::Runtime::RemoteObjectId& objectId, Ref&& highlightInspectorObject, RefPtr&& gridOverlayInspectorObject, RefPtr&& flexOverlayInspectorObject, std::optional&& showRulers) { Protocol::ErrorString errorString; - @@ -3548,7 +3555,7 @@ index aefd8aa53a0578d335a077a224481cd139b32edf..77316083fa2e841cd3e08db84897e379 if (!node) return makeUnexpected(errorString); -@@ -1694,15 +1720,155 @@ Protocol::ErrorStringOr InspectorDOMAgent::setInspectedNode(Protocol::DOM: +@@ -1801,15 +1827,155 @@ Protocol::ErrorStringOr InspectorDOMAgent::setInspectedNode(Protocol::DOM: return { }; } @@ -3707,7 +3714,7 @@ index aefd8aa53a0578d335a077a224481cd139b32edf..77316083fa2e841cd3e08db84897e379 if (!object) return makeUnexpected("Missing injected script for given nodeId"_s); -@@ -2959,7 +3125,7 @@ Protocol::ErrorStringOr InspectorDOMAgent::pushNodeByPath +@@ -3066,7 +3232,7 @@ Protocol::ErrorStringOr InspectorDOMAgent::pushNodeByPath return makeUnexpected("Missing node for given path"_s); } @@ -3716,7 +3723,7 @@ index aefd8aa53a0578d335a077a224481cd139b32edf..77316083fa2e841cd3e08db84897e379 { Document* document = &node->document(); if (auto* templateHost = document->templateDocumentHost()) -@@ -2968,12 +3134,18 @@ RefPtr InspectorDOMAgent::resolveNode(Node* nod +@@ -3075,12 +3241,18 @@ RefPtr InspectorDOMAgent::resolveNode(Node* nod if (!frame) return nullptr; @@ -3738,7 +3745,7 @@ index aefd8aa53a0578d335a077a224481cd139b32edf..77316083fa2e841cd3e08db84897e379 } Node* InspectorDOMAgent::scriptValueAsNode(JSC::JSValue value) -@@ -2996,4 +3168,57 @@ Protocol::ErrorStringOr InspectorDOMAgent::setAllowEditingUserAgentShadowT +@@ -3103,4 +3275,57 @@ Protocol::ErrorStringOr InspectorDOMAgent::setAllowEditingUserAgentShadowT return { }; } @@ -3797,7 +3804,7 @@ index aefd8aa53a0578d335a077a224481cd139b32edf..77316083fa2e841cd3e08db84897e379 + } // namespace WebCore diff --git a/Source/WebCore/inspector/agents/InspectorDOMAgent.h b/Source/WebCore/inspector/agents/InspectorDOMAgent.h -index 3388aaf2e56eef45ad037497af8721487ff88d8f..ec0c749db7f6128545b0c4a887b86190346da78e 100644 +index 9e51c4e404fa0eaa19f0d951deaacce17d94b4b8..7385521cbb0f06b2f72f1aa063c22138866c22a3 100644 --- a/Source/WebCore/inspector/agents/InspectorDOMAgent.h +++ b/Source/WebCore/inspector/agents/InspectorDOMAgent.h @@ -57,6 +57,7 @@ namespace WebCore { @@ -3824,8 +3831,8 @@ index 3388aaf2e56eef45ad037497af8721487ff88d8f..ec0c749db7f6128545b0c4a887b86190 + Inspector::Protocol::ErrorStringOr> resolveNode(std::optional&& nodeId, const String& objectId, const Inspector::Protocol::Network::FrameId& frameId, std::optional&& contextId, const String& objectGroup); Inspector::Protocol::ErrorStringOr>> getAttributes(Inspector::Protocol::DOM::NodeId); #if PLATFORM(IOS_FAMILY) - Inspector::Protocol::ErrorStringOr setInspectModeEnabled(bool, RefPtr&& highlightConfig); -@@ -159,6 +161,10 @@ public: + Inspector::Protocol::ErrorStringOr setInspectModeEnabled(bool, RefPtr&& highlightConfig, RefPtr&& gridOverlayConfig, RefPtr&& flexOverlayConfig); +@@ -168,6 +170,10 @@ public: Inspector::Protocol::ErrorStringOr focus(Inspector::Protocol::DOM::NodeId); Inspector::Protocol::ErrorStringOr setInspectedNode(Inspector::Protocol::DOM::NodeId); Inspector::Protocol::ErrorStringOr setAllowEditingUserAgentShadowTrees(bool); @@ -3836,7 +3843,7 @@ index 3388aaf2e56eef45ad037497af8721487ff88d8f..ec0c749db7f6128545b0c4a887b86190 // InspectorInstrumentation Inspector::Protocol::DOM::NodeId identifierForNode(Node&); -@@ -200,7 +206,7 @@ public: +@@ -209,7 +215,7 @@ public: Node* nodeForId(Inspector::Protocol::DOM::NodeId); Inspector::Protocol::DOM::NodeId boundNodeId(const Node*); @@ -3845,7 +3852,7 @@ index 3388aaf2e56eef45ad037497af8721487ff88d8f..ec0c749db7f6128545b0c4a887b86190 bool handleMousePress(); void mouseDidMoveOverElement(const HitTestResult&, unsigned modifierFlags); void inspect(Node*); -@@ -212,12 +218,15 @@ public: +@@ -221,12 +227,15 @@ public: void reset(); Node* assertNode(Inspector::Protocol::ErrorString&, Inspector::Protocol::DOM::NodeId); @@ -3861,7 +3868,7 @@ index 3388aaf2e56eef45ad037497af8721487ff88d8f..ec0c749db7f6128545b0c4a887b86190 private: #if ENABLE(VIDEO) void mediaMetricsTimerFired(); -@@ -246,7 +255,6 @@ private: +@@ -256,7 +265,6 @@ private: void processAccessibilityChildren(AXCoreObject&, JSON::ArrayOf&); Node* nodeForPath(const String& path); @@ -3988,7 +3995,7 @@ index c6ebcc9d7e399a35f71350c9374df0f2107c518b..3bfa03ae7f27d9128fe207c1de1bfea9 // InspectorInstrumentation void willRecalculateStyle(); diff --git a/Source/WebCore/inspector/agents/InspectorPageAgent.cpp b/Source/WebCore/inspector/agents/InspectorPageAgent.cpp -index a88b7eec7ac6de39d55bb5e6045677b2a495299a..e4cb156d0fcf7b3be0953b9f185a08838e55cd08 100644 +index e5c3f310a8d2cd9c0eaa113c607e286da296ac95..cb3c4ff3f47bddae3aab6d16525effd919197005 100644 --- a/Source/WebCore/inspector/agents/InspectorPageAgent.cpp +++ b/Source/WebCore/inspector/agents/InspectorPageAgent.cpp @@ -32,21 +32,29 @@ @@ -4021,9 +4028,11 @@ index a88b7eec7ac6de39d55bb5e6045677b2a495299a..e4cb156d0fcf7b3be0953b9f185a0883 #include "HTMLNames.h" #include "ImageBuffer.h" #include "InspectorClient.h" -@@ -57,8 +65,12 @@ +@@ -55,10 +63,13 @@ + #include "InspectorOverlay.h" + #include "InstrumentingAgents.h" #include "MIMETypeRegistry.h" - #include "MemoryCache.h" +-#include "MemoryCache.h" #include "Page.h" +#include "PageRuntimeAgent.h" +#include "PlatformScreen.h" @@ -4034,7 +4043,7 @@ index a88b7eec7ac6de39d55bb5e6045677b2a495299a..e4cb156d0fcf7b3be0953b9f185a0883 #include "ScriptController.h" #include "ScriptSourceCode.h" #include "SecurityOrigin.h" -@@ -66,11 +78,18 @@ +@@ -66,11 +77,18 @@ #include "StyleScope.h" #include "Theme.h" #include @@ -4053,7 +4062,7 @@ index a88b7eec7ac6de39d55bb5e6045677b2a495299a..e4cb156d0fcf7b3be0953b9f185a0883 #include #include #include -@@ -83,11 +102,15 @@ +@@ -83,11 +101,15 @@ #include "LegacyWebArchive.h" #endif @@ -4070,7 +4079,7 @@ index a88b7eec7ac6de39d55bb5e6045677b2a495299a..e4cb156d0fcf7b3be0953b9f185a0883 static bool decodeBuffer(const uint8_t* buffer, unsigned size, const String& textEncodingName, String* result) { if (buffer) { -@@ -331,6 +354,7 @@ InspectorPageAgent::InspectorPageAgent(PageAgentContext& context, InspectorClien +@@ -331,6 +353,7 @@ InspectorPageAgent::InspectorPageAgent(PageAgentContext& context, InspectorClien , m_frontendDispatcher(makeUnique(context.frontendRouter)) , m_backendDispatcher(Inspector::PageBackendDispatcher::create(context.backendDispatcher, this)) , m_inspectedPage(context.inspectedPage) @@ -4078,7 +4087,7 @@ index a88b7eec7ac6de39d55bb5e6045677b2a495299a..e4cb156d0fcf7b3be0953b9f185a0883 , m_client(client) , m_overlay(overlay) { -@@ -360,12 +384,20 @@ Protocol::ErrorStringOr InspectorPageAgent::enable() +@@ -360,12 +383,20 @@ Protocol::ErrorStringOr InspectorPageAgent::enable() defaultUserPreferencesDidChange(); @@ -4099,7 +4108,7 @@ index a88b7eec7ac6de39d55bb5e6045677b2a495299a..e4cb156d0fcf7b3be0953b9f185a0883 setShowPaintRects(false); #if !PLATFORM(IOS_FAMILY) -@@ -414,6 +446,22 @@ Protocol::ErrorStringOr InspectorPageAgent::reload(std::optional&& i +@@ -418,6 +449,22 @@ Protocol::ErrorStringOr InspectorPageAgent::reload(std::optional&& i return { }; } @@ -4121,8 +4130,8 @@ index a88b7eec7ac6de39d55bb5e6045677b2a495299a..e4cb156d0fcf7b3be0953b9f185a0883 + Protocol::ErrorStringOr InspectorPageAgent::navigate(const String& url) { - Frame& frame = m_inspectedPage.mainFrame(); -@@ -435,6 +483,13 @@ Protocol::ErrorStringOr InspectorPageAgent::overrideUserAgent(const String + auto* localMainFrame = dynamicDowncast(m_inspectedPage.mainFrame()); +@@ -441,6 +488,13 @@ Protocol::ErrorStringOr InspectorPageAgent::overrideUserAgent(const String return { }; } @@ -4136,7 +4145,7 @@ index a88b7eec7ac6de39d55bb5e6045677b2a495299a..e4cb156d0fcf7b3be0953b9f185a0883 Protocol::ErrorStringOr InspectorPageAgent::overrideSetting(Protocol::Page::Setting setting, std::optional&& value) { auto& inspectedPageSettings = m_inspectedPage.settings(); -@@ -448,6 +503,12 @@ Protocol::ErrorStringOr InspectorPageAgent::overrideSetting(Protocol::Page +@@ -454,6 +508,12 @@ Protocol::ErrorStringOr InspectorPageAgent::overrideSetting(Protocol::Page inspectedPageSettings.setAuthorAndUserStylesEnabledInspectorOverride(value); return { }; @@ -4149,7 +4158,7 @@ index a88b7eec7ac6de39d55bb5e6045677b2a495299a..e4cb156d0fcf7b3be0953b9f185a0883 case Protocol::Page::Setting::ICECandidateFilteringEnabled: inspectedPageSettings.setICECandidateFilteringEnabledInspectorOverride(value); return { }; -@@ -473,6 +534,38 @@ Protocol::ErrorStringOr InspectorPageAgent::overrideSetting(Protocol::Page +@@ -479,6 +539,38 @@ Protocol::ErrorStringOr InspectorPageAgent::overrideSetting(Protocol::Page inspectedPageSettings.setNeedsSiteSpecificQuirksInspectorOverride(value); return { }; @@ -4188,7 +4197,7 @@ index a88b7eec7ac6de39d55bb5e6045677b2a495299a..e4cb156d0fcf7b3be0953b9f185a0883 case Protocol::Page::Setting::ScriptEnabled: inspectedPageSettings.setScriptEnabledInspectorOverride(value); return { }; -@@ -485,6 +578,12 @@ Protocol::ErrorStringOr InspectorPageAgent::overrideSetting(Protocol::Page +@@ -491,6 +583,12 @@ Protocol::ErrorStringOr InspectorPageAgent::overrideSetting(Protocol::Page inspectedPageSettings.setShowRepaintCounterInspectorOverride(value); return { }; @@ -4201,7 +4210,7 @@ index a88b7eec7ac6de39d55bb5e6045677b2a495299a..e4cb156d0fcf7b3be0953b9f185a0883 case Protocol::Page::Setting::WebRTCEncryptionEnabled: inspectedPageSettings.setWebRTCEncryptionEnabledInspectorOverride(value); return { }; -@@ -780,9 +879,13 @@ Protocol::ErrorStringOr> InspectorP +@@ -787,9 +885,13 @@ Protocol::ErrorStringOr> InspectorP return { { content, base64Encoded } }; } @@ -4217,7 +4226,7 @@ index a88b7eec7ac6de39d55bb5e6045677b2a495299a..e4cb156d0fcf7b3be0953b9f185a0883 return { }; } -@@ -888,15 +991,16 @@ Protocol::ErrorStringOr InspectorPageAgent::setShowPaintRects(bool show) +@@ -895,15 +997,16 @@ Protocol::ErrorStringOr InspectorPageAgent::setShowPaintRects(bool show) return { }; } @@ -4239,7 +4248,7 @@ index a88b7eec7ac6de39d55bb5e6045677b2a495299a..e4cb156d0fcf7b3be0953b9f185a0883 } void InspectorPageAgent::frameNavigated(Frame& frame) -@@ -904,13 +1008,23 @@ void InspectorPageAgent::frameNavigated(Frame& frame) +@@ -911,13 +1014,23 @@ void InspectorPageAgent::frameNavigated(Frame& frame) m_frontendDispatcher->frameNavigated(buildObjectForFrame(&frame)); } @@ -4266,7 +4275,7 @@ index a88b7eec7ac6de39d55bb5e6045677b2a495299a..e4cb156d0fcf7b3be0953b9f185a0883 } Frame* InspectorPageAgent::frameForId(const Protocol::Network::FrameId& frameId) -@@ -922,20 +1036,18 @@ String InspectorPageAgent::frameId(Frame* frame) +@@ -929,20 +1042,18 @@ String InspectorPageAgent::frameId(Frame* frame) { if (!frame) return emptyString(); @@ -4293,7 +4302,7 @@ index a88b7eec7ac6de39d55bb5e6045677b2a495299a..e4cb156d0fcf7b3be0953b9f185a0883 } Frame* InspectorPageAgent::assertFrame(Protocol::ErrorString& errorString, const Protocol::Network::FrameId& frameId) -@@ -946,11 +1058,6 @@ Frame* InspectorPageAgent::assertFrame(Protocol::ErrorString& errorString, const +@@ -953,11 +1064,6 @@ Frame* InspectorPageAgent::assertFrame(Protocol::ErrorString& errorString, const return frame; } @@ -4305,7 +4314,7 @@ index a88b7eec7ac6de39d55bb5e6045677b2a495299a..e4cb156d0fcf7b3be0953b9f185a0883 void InspectorPageAgent::frameStartedLoading(Frame& frame) { m_frontendDispatcher->frameStartedLoading(frameId(&frame)); -@@ -961,9 +1068,9 @@ void InspectorPageAgent::frameStoppedLoading(Frame& frame) +@@ -968,9 +1074,9 @@ void InspectorPageAgent::frameStoppedLoading(Frame& frame) m_frontendDispatcher->frameStoppedLoading(frameId(&frame)); } @@ -4317,7 +4326,7 @@ index a88b7eec7ac6de39d55bb5e6045677b2a495299a..e4cb156d0fcf7b3be0953b9f185a0883 } void InspectorPageAgent::frameClearedScheduledNavigation(Frame& frame) -@@ -1018,6 +1125,12 @@ void InspectorPageAgent::defaultUserPreferencesDidChange() +@@ -1025,6 +1131,12 @@ void InspectorPageAgent::defaultUserPreferencesDidChange() m_frontendDispatcher->defaultUserPreferencesDidChange(WTFMove(defaultUserPreferences)); } @@ -4330,7 +4339,7 @@ index a88b7eec7ac6de39d55bb5e6045677b2a495299a..e4cb156d0fcf7b3be0953b9f185a0883 #if ENABLE(DARK_MODE_CSS) || HAVE(OS_DARK_MODE_SUPPORT) void InspectorPageAgent::defaultAppearanceDidChange() { -@@ -1027,13 +1140,22 @@ void InspectorPageAgent::defaultAppearanceDidChange() +@@ -1034,13 +1146,22 @@ void InspectorPageAgent::defaultAppearanceDidChange() void InspectorPageAgent::didClearWindowObjectInWorld(Frame& frame, DOMWrapperWorld& world) { @@ -4356,7 +4365,7 @@ index a88b7eec7ac6de39d55bb5e6045677b2a495299a..e4cb156d0fcf7b3be0953b9f185a0883 } void InspectorPageAgent::didPaint(RenderObject& renderer, const LayoutRect& rect) -@@ -1078,6 +1200,51 @@ void InspectorPageAgent::didRecalculateStyle() +@@ -1088,6 +1209,51 @@ void InspectorPageAgent::didRecalculateStyle() m_overlay->update(); } @@ -4408,7 +4417,7 @@ index a88b7eec7ac6de39d55bb5e6045677b2a495299a..e4cb156d0fcf7b3be0953b9f185a0883 Ref InspectorPageAgent::buildObjectForFrame(Frame* frame) { ASSERT_ARG(frame, frame); -@@ -1171,6 +1338,12 @@ void InspectorPageAgent::applyUserAgentOverride(String& userAgent) +@@ -1185,6 +1351,12 @@ void InspectorPageAgent::applyUserAgentOverride(String& userAgent) userAgent = m_userAgentOverride; } @@ -4421,7 +4430,7 @@ index a88b7eec7ac6de39d55bb5e6045677b2a495299a..e4cb156d0fcf7b3be0953b9f185a0883 void InspectorPageAgent::applyEmulatedMedia(AtomString& media) { if (!m_emulatedMedia.isEmpty()) -@@ -1194,11 +1367,13 @@ Protocol::ErrorStringOr InspectorPageAgent::snapshotNode(Protocol::DOM:: +@@ -1212,11 +1384,13 @@ Protocol::ErrorStringOr InspectorPageAgent::snapshotNode(Protocol::DOM:: return snapshot->toDataURL("image/png"_s, std::nullopt, PreserveResolution::Yes); } @@ -4435,8 +4444,8 @@ index a88b7eec7ac6de39d55bb5e6045677b2a495299a..e4cb156d0fcf7b3be0953b9f185a0883 + options.flags.add(SnapshotFlags::OmitDeviceScaleFactor); IntRect rectangle(x, y, width, height); - auto snapshot = snapshotFrameRect(m_inspectedPage.mainFrame(), rectangle, WTFMove(options)); -@@ -1209,6 +1384,43 @@ Protocol::ErrorStringOr InspectorPageAgent::snapshotRect(int x, int y, i + auto* localMainFrame = dynamicDowncast(m_inspectedPage.mainFrame()); +@@ -1230,6 +1404,43 @@ Protocol::ErrorStringOr InspectorPageAgent::snapshotRect(int x, int y, i return snapshot->toDataURL("image/png"_s, std::nullopt, PreserveResolution::Yes); } @@ -4480,7 +4489,7 @@ index a88b7eec7ac6de39d55bb5e6045677b2a495299a..e4cb156d0fcf7b3be0953b9f185a0883 #if ENABLE(WEB_ARCHIVE) && USE(CF) Protocol::ErrorStringOr InspectorPageAgent::archive() { -@@ -1221,7 +1433,6 @@ Protocol::ErrorStringOr InspectorPageAgent::archive() +@@ -1246,7 +1457,6 @@ Protocol::ErrorStringOr InspectorPageAgent::archive() } #endif @@ -4488,8 +4497,8 @@ index a88b7eec7ac6de39d55bb5e6045677b2a495299a..e4cb156d0fcf7b3be0953b9f185a0883 Protocol::ErrorStringOr InspectorPageAgent::setScreenSizeOverride(std::optional&& width, std::optional&& height) { if (width.has_value() != height.has_value()) -@@ -1236,6 +1447,634 @@ Protocol::ErrorStringOr InspectorPageAgent::setScreenSizeOverride(std::opt - m_inspectedPage.mainFrame().setOverrideScreenSize(FloatSize(width.value_or(0), height.value_or(0))); +@@ -1264,6 +1474,641 @@ Protocol::ErrorStringOr InspectorPageAgent::setScreenSizeOverride(std::opt + localMainFrame->setOverrideScreenSize(FloatSize(width.value_or(0), height.value_or(0))); return { }; } + @@ -4849,12 +4858,12 @@ index a88b7eec7ac6de39d55bb5e6045677b2a495299a..e4cb156d0fcf7b3be0953b9f185a0883 + .release(); + auto* liveObject = dynamicDowncast(axObject.get()); + -+ if (!axObject->computedLabel().isEmpty()) -+ axNode->setName(axObject->computedLabel()); ++ if (liveObject && !liveObject->computedLabel().isEmpty()) ++ axNode->setName(liveObject->computedLabel()); + if (!axObject->stringValue().isEmpty()) + axNode->setValue(JSON::Value::create(axObject->stringValue())); -+ if (!axObject->accessibilityDescription().isEmpty()) -+ axNode->setDescription(axObject->accessibilityDescription()); ++ if (liveObject && !liveObject->description().isEmpty()) ++ axNode->setDescription(liveObject->description()); + if (!axObject->keyShortcuts().isEmpty()) + axNode->setKeyshortcuts(axObject->keyShortcuts()); + if (!axObject->valueDescription().isEmpty()) @@ -4960,7 +4969,12 @@ index a88b7eec7ac6de39d55bb5e6045677b2a495299a..e4cb156d0fcf7b3be0953b9f185a0883 +{ + if (!WebCore::AXObjectCache::accessibilityEnabled()) + WebCore::AXObjectCache::enableAccessibility(); -+ RefPtr document = m_inspectedPage.mainFrame().document(); ++ ++ auto* localMainFrame = dynamicDowncast(m_inspectedPage.mainFrame()); ++ if (!localMainFrame) ++ return makeUnexpected("No local main frame"_s); ++ ++ RefPtr document = localMainFrame->document(); + if (!document) + return makeUnexpected("No document for main frame"_s); + @@ -4995,7 +5009,8 @@ index a88b7eec7ac6de39d55bb5e6045677b2a495299a..e4cb156d0fcf7b3be0953b9f185a0883 + +Protocol::ErrorStringOr InspectorPageAgent::setDefaultBackgroundColorOverride(RefPtr&& color) +{ -+ FrameView* view = m_inspectedPage.mainFrame().view(); ++ auto* localFrame = dynamicDowncast(m_inspectedPage.mainFrame()); ++ FrameView* view = localFrame ? localFrame->view() : nullptr; + if (!view) + return makeUnexpected("Internal error: No frame view to set color two"_s); + @@ -5075,7 +5090,8 @@ index a88b7eec7ac6de39d55bb5e6045677b2a495299a..e4cb156d0fcf7b3be0953b9f185a0883 + +Protocol::ErrorStringOr InspectorPageAgent::setVisibleContentRects(RefPtr&& unobscuredContentRect, RefPtr&& contentInsets, RefPtr&& obscuredInsets, RefPtr&& unobscuredInsets) +{ -+ FrameView* view = m_inspectedPage.mainFrame().view(); ++ auto* localFrame = dynamicDowncast(m_inspectedPage.mainFrame()); ++ FrameView* view = localFrame ? localFrame->view() : nullptr; + if (!view) + return makeUnexpected("Internal error: No frame view to set content rects for"_s); + @@ -5283,7 +5299,7 @@ index da15dbfd4576edf4e958435ad4a247250b928245..89fa3c0b21fef5929f4c3db8324dcde6 } // namespace WebCore diff --git a/Source/WebCore/inspector/agents/InspectorWorkerAgent.cpp b/Source/WebCore/inspector/agents/InspectorWorkerAgent.cpp -index e42732004c102fba94b58fb90a52716f111b1179..31fa0e10e9e62c1fcdf1013771b6fb084c44a0bd 100644 +index bbed7e5e9aeab664743b7751ae6c4f1367cc6deb..94c03dc2c3143ab722da685ea7c7bce52881ded1 100644 --- a/Source/WebCore/inspector/agents/InspectorWorkerAgent.cpp +++ b/Source/WebCore/inspector/agents/InspectorWorkerAgent.cpp @@ -168,7 +168,11 @@ void InspectorWorkerAgent::connectToWorkerInspectorProxy(WorkerInspectorProxy& p @@ -5300,7 +5316,7 @@ index e42732004c102fba94b58fb90a52716f111b1179..31fa0e10e9e62c1fcdf1013771b6fb08 void InspectorWorkerAgent::disconnectFromWorkerInspectorProxy(WorkerInspectorProxy& proxy) diff --git a/Source/WebCore/inspector/agents/page/PageDebuggerAgent.cpp b/Source/WebCore/inspector/agents/page/PageDebuggerAgent.cpp -index 6f4e9972a701f81facda14feffa905135f473916..c26d72c6e502ba19076fd5355f0af64a7bdb75f8 100644 +index b1796e14d9b34717a0edb04d2ec359f73bc22da9..171370188c77d6d1d98227ad8c3c20ccfb0daf8b 100644 --- a/Source/WebCore/inspector/agents/page/PageDebuggerAgent.cpp +++ b/Source/WebCore/inspector/agents/page/PageDebuggerAgent.cpp @@ -38,6 +38,7 @@ @@ -5323,7 +5339,7 @@ index 6f4e9972a701f81facda14feffa905135f473916..c26d72c6e502ba19076fd5355f0af64a } diff --git a/Source/WebCore/inspector/agents/page/PageRuntimeAgent.cpp b/Source/WebCore/inspector/agents/page/PageRuntimeAgent.cpp -index 5e7a1214da060ba3a168cf21b22e6c398c0e07f7..d0cabe5df9b3ae42b3e99f02cc4ab9319c78905a 100644 +index 5dd2a6f4da4b01cffe16edb56563ea88723ca6db..6912a5b45f0c27b1fed1c2673c3d5742948fa469 100644 --- a/Source/WebCore/inspector/agents/page/PageRuntimeAgent.cpp +++ b/Source/WebCore/inspector/agents/page/PageRuntimeAgent.cpp @@ -35,6 +35,7 @@ @@ -5434,7 +5450,17 @@ index 5e7a1214da060ba3a168cf21b22e6c398c0e07f7..d0cabe5df9b3ae42b3e99f02cc4ab931 InjectedScript PageRuntimeAgent::injectedScriptForEval(Protocol::ErrorString& errorString, std::optional&& executionContextId) { if (!executionContextId) { -@@ -196,18 +267,24 @@ Protocol::ErrorStringOr, std::op +@@ -139,9 +210,6 @@ void PageRuntimeAgent::reportExecutionContextCreation() + return; + + m_inspectedPage.forEachFrame([&](Frame& frame) { +- if (!frame.script().canExecuteScripts(NotAboutToExecuteScript)) +- return; +- + auto frameId = pageAgent->frameId(&frame); + + // Always send the main world first. +@@ -200,18 +268,24 @@ Protocol::ErrorStringOr, std::op if (injectedScript.hasNoValue()) return makeUnexpected(errorString); @@ -5540,10 +5566,10 @@ index 21e33e46bdb1af8434527747e3c308cbe53f60f0..c17c4de17f439c04d27caa532771934c protected: static SameSiteInfo sameSiteInfo(const Document&, IsForDOMCookieAccess = IsForDOMCookieAccess::No); diff --git a/Source/WebCore/loader/DocumentLoader.cpp b/Source/WebCore/loader/DocumentLoader.cpp -index 6d92fb273a0415f0cfcba433782a6e1386b6afba..a405e03629122c540d4f64affd219448e23d958d 100644 +index bab00d45ddad7073c8848da50ffe21422dcae353..b58c5e25dd4066688c91697951c15c763c981e0f 100644 --- a/Source/WebCore/loader/DocumentLoader.cpp +++ b/Source/WebCore/loader/DocumentLoader.cpp -@@ -733,8 +733,10 @@ void DocumentLoader::willSendRequest(ResourceRequest&& newRequest, const Resourc +@@ -742,8 +742,10 @@ void DocumentLoader::willSendRequest(ResourceRequest&& newRequest, const Resourc if (!didReceiveRedirectResponse) return completionHandler(WTFMove(newRequest)); @@ -5554,7 +5580,7 @@ index 6d92fb273a0415f0cfcba433782a6e1386b6afba..a405e03629122c540d4f64affd219448 switch (navigationPolicyDecision) { case NavigationPolicyDecision::IgnoreLoad: case NavigationPolicyDecision::StopAllLoads: -@@ -1506,8 +1508,6 @@ void DocumentLoader::detachFromFrame() +@@ -1520,8 +1522,6 @@ void DocumentLoader::detachFromFrame() if (!m_frame) return; @@ -5564,10 +5590,10 @@ index 6d92fb273a0415f0cfcba433782a6e1386b6afba..a405e03629122c540d4f64affd219448 } diff --git a/Source/WebCore/loader/DocumentLoader.h b/Source/WebCore/loader/DocumentLoader.h -index b05ba79ecb09b64a5b11a771e8b30e1b7e3e2c20..3f1ae67f0654a66ff54bd7ab0e71d983b0c65833 100644 +index bc32633df9da9b891993553e89e4a0e09a417de6..6fc81c446b91bc5a7170a0868c4abbbe7624d26c 100644 --- a/Source/WebCore/loader/DocumentLoader.h +++ b/Source/WebCore/loader/DocumentLoader.h -@@ -183,9 +183,13 @@ public: +@@ -186,9 +186,13 @@ public: WEBCORE_EXPORT virtual void detachFromFrame(); @@ -5582,10 +5608,10 @@ index b05ba79ecb09b64a5b11a771e8b30e1b7e3e2c20..3f1ae67f0654a66ff54bd7ab0e71d983 DocumentWriter& writer() const { return m_writer; } diff --git a/Source/WebCore/loader/FrameLoader.cpp b/Source/WebCore/loader/FrameLoader.cpp -index f5e7a1a9ba0567dbdf752bec4bdf11e9916c9968..9c9d7fae9e6862fef70db781c42411a3bd04f9da 100644 +index c6fdcf69232d637b5fca6f8f5c6a658660ae5970..25a6d88d69329601fd2c8c2c45fc8e21b4c085f5 100644 --- a/Source/WebCore/loader/FrameLoader.cpp +++ b/Source/WebCore/loader/FrameLoader.cpp -@@ -1196,6 +1196,7 @@ void FrameLoader::loadInSameDocument(URL url, RefPtr stat +@@ -1221,6 +1221,7 @@ void FrameLoader::loadInSameDocument(URL url, RefPtr stat } m_client->dispatchDidNavigateWithinPage(); @@ -5593,7 +5619,7 @@ index f5e7a1a9ba0567dbdf752bec4bdf11e9916c9968..9c9d7fae9e6862fef70db781c42411a3 m_frame.document()->statePopped(stateObject ? stateObject.releaseNonNull() : SerializedScriptValue::nullValue()); m_client->dispatchDidPopStateWithinPage(); -@@ -1649,6 +1650,8 @@ void FrameLoader::loadWithDocumentLoader(DocumentLoader* loader, FrameLoadType t +@@ -1674,6 +1675,8 @@ void FrameLoader::loadWithDocumentLoader(DocumentLoader* loader, FrameLoadType t const String& httpMethod = loader->request().httpMethod(); if (shouldPerformFragmentNavigation(isFormSubmission, httpMethod, policyChecker().loadType(), newURL)) { @@ -5602,7 +5628,7 @@ index f5e7a1a9ba0567dbdf752bec4bdf11e9916c9968..9c9d7fae9e6862fef70db781c42411a3 RefPtr oldDocumentLoader = m_documentLoader; NavigationAction action { *m_frame.document(), loader->request(), InitiatedByMainFrame::Unknown, policyChecker().loadType(), isFormSubmission }; action.setIsRequestFromClientOrUserInput(loader->isRequestFromClientOrUserInput()); -@@ -1681,7 +1684,9 @@ void FrameLoader::loadWithDocumentLoader(DocumentLoader* loader, FrameLoadType t +@@ -1706,7 +1709,9 @@ void FrameLoader::loadWithDocumentLoader(DocumentLoader* loader, FrameLoadType t } RELEASE_ASSERT(!isBackForwardLoadType(policyChecker().loadType()) || history().provisionalItem()); @@ -5612,17 +5638,19 @@ index f5e7a1a9ba0567dbdf752bec4bdf11e9916c9968..9c9d7fae9e6862fef70db781c42411a3 continueLoadAfterNavigationPolicy(request, formState.get(), navigationPolicyDecision, allowNavigationToInvalidURL); completionHandler(); }, PolicyDecisionMode::Asynchronous); -@@ -2876,12 +2881,17 @@ String FrameLoader::userAgent(const URL& url) const +@@ -2933,14 +2938,19 @@ String FrameLoader::userAgent(const URL& url) const String FrameLoader::navigatorPlatform() const { + String platform; + - if (auto* documentLoader = m_frame.mainFrame().loader().activeDocumentLoader()) { - auto& customNavigatorPlatform = documentLoader->customNavigatorPlatform(); - if (!customNavigatorPlatform.isEmpty()) -- return customNavigatorPlatform; -+ platform = customNavigatorPlatform; + if (auto* localFrame = dynamicDowncast(m_frame.mainFrame())) { + if (auto* documentLoader = localFrame->loader().activeDocumentLoader()) { + auto& customNavigatorPlatform = documentLoader->customNavigatorPlatform(); + if (!customNavigatorPlatform.isEmpty()) +- return customNavigatorPlatform; ++ platform = customNavigatorPlatform; + } } - return String(); + @@ -5632,7 +5660,7 @@ index f5e7a1a9ba0567dbdf752bec4bdf11e9916c9968..9c9d7fae9e6862fef70db781c42411a3 } void FrameLoader::dispatchOnloadEvents() -@@ -3293,6 +3303,8 @@ void FrameLoader::receivedMainResourceError(const ResourceError& error) +@@ -3360,6 +3370,8 @@ void FrameLoader::receivedMainResourceError(const ResourceError& error) checkCompleted(); if (m_frame.page()) checkLoadComplete(); @@ -5641,7 +5669,7 @@ index f5e7a1a9ba0567dbdf752bec4bdf11e9916c9968..9c9d7fae9e6862fef70db781c42411a3 } void FrameLoader::continueFragmentScrollAfterNavigationPolicy(const ResourceRequest& request, const SecurityOrigin* requesterOrigin, bool shouldContinue) -@@ -4115,9 +4127,6 @@ String FrameLoader::referrer() const +@@ -4186,9 +4198,6 @@ String FrameLoader::referrer() const void FrameLoader::dispatchDidClearWindowObjectsInAllWorlds() { @@ -5651,7 +5679,7 @@ index f5e7a1a9ba0567dbdf752bec4bdf11e9916c9968..9c9d7fae9e6862fef70db781c42411a3 Vector> worlds; ScriptController::getAllWorlds(worlds); for (auto& world : worlds) -@@ -4126,13 +4135,13 @@ void FrameLoader::dispatchDidClearWindowObjectsInAllWorlds() +@@ -4197,13 +4206,13 @@ void FrameLoader::dispatchDidClearWindowObjectsInAllWorlds() void FrameLoader::dispatchDidClearWindowObjectInWorld(DOMWrapperWorld& world) { @@ -5684,7 +5712,7 @@ index 29d2e3f46140aaa51160e6a28562f370e371eb21..676ddc9369050c19454fbf5faffac2b2 virtual bool shouldPerformSecurityChecks() const { return false; } virtual bool havePerformedSecurityChecks(const ResourceResponse&) const { return false; } diff --git a/Source/WebCore/loader/NavigationScheduler.cpp b/Source/WebCore/loader/NavigationScheduler.cpp -index b7e4eb49213057523d45aefd2e912fc775173756..c74407d6b1309bb9ab5b7e84bd915353b1869872 100644 +index a268a4cc725fd7a7840ef70d147c640bd72179c5..e2a190c2f9154527d928bf18f8a4a2beaae81700 100644 --- a/Source/WebCore/loader/NavigationScheduler.cpp +++ b/Source/WebCore/loader/NavigationScheduler.cpp @@ -640,7 +640,7 @@ void NavigationScheduler::startTimer() @@ -5697,7 +5725,7 @@ index b7e4eb49213057523d45aefd2e912fc775173756..c74407d6b1309bb9ab5b7e84bd915353 } diff --git a/Source/WebCore/loader/PolicyChecker.cpp b/Source/WebCore/loader/PolicyChecker.cpp -index b54a6042e66d2e27bdbbc03bafe929dd59895e5b..144cd06630077baecb78a3e83aa9af2076e2aa21 100644 +index f68dcea8e222afd1c136eaebe49a92ecb3978c06..f60e7863b70ec15dd20b5c00fa39cb24652ae7c7 100644 --- a/Source/WebCore/loader/PolicyChecker.cpp +++ b/Source/WebCore/loader/PolicyChecker.cpp @@ -46,6 +46,7 @@ @@ -5731,10 +5759,10 @@ index 12874da9a80ed235c9a25c5fd05d6c02df62a053..8e0d01703c8d6b2eaa6aa19623f94cc4 void ProgressTracker::incrementProgress(ResourceLoaderIdentifier identifier, const ResourceResponse& response) diff --git a/Source/WebCore/loader/cache/CachedResourceLoader.cpp b/Source/WebCore/loader/cache/CachedResourceLoader.cpp -index 6c21253ea59e005b4a7b8742923347ab54014800..d76c78d0905567192a31ebb9d15310a0fc6fe3c2 100644 +index 77f9612dc13d47fccc95311d46e34b103856c7fb..9beae814f5de87d905623969c8e567625678f7f5 100644 --- a/Source/WebCore/loader/cache/CachedResourceLoader.cpp +++ b/Source/WebCore/loader/cache/CachedResourceLoader.cpp -@@ -1009,8 +1009,11 @@ ResourceErrorOr> CachedResourceLoader::requ +@@ -1010,8 +1010,11 @@ ResourceErrorOr> CachedResourceLoader::requ request.updateReferrerPolicy(document() ? document()->referrerPolicy() : ReferrerPolicy::Default); @@ -5748,7 +5776,7 @@ index 6c21253ea59e005b4a7b8742923347ab54014800..d76c78d0905567192a31ebb9d15310a0 auto& page = *frame.page(); -@@ -1648,8 +1651,9 @@ Vector> CachedResourceLoader::allCachedSVGImages() const +@@ -1650,8 +1653,9 @@ Vector> CachedResourceLoader::allCachedSVGImages() const ResourceErrorOr> CachedResourceLoader::preload(CachedResource::Type type, CachedResourceRequest&& request) { @@ -5761,7 +5789,7 @@ index 6c21253ea59e005b4a7b8742923347ab54014800..d76c78d0905567192a31ebb9d15310a0 if (request.charset().isEmpty() && (type == CachedResource::Type::Script || type == CachedResource::Type::CSSStyleSheet)) request.setCharset(m_document->charset()); diff --git a/Source/WebCore/page/ChromeClient.h b/Source/WebCore/page/ChromeClient.h -index 02d6fb8314b69943a34f3b342d12725b7d1e7385..538b9d953b61ab0f5485e98871904d75a34227f7 100644 +index 08333732a724302cf27fe71e254a97e60a36d633..2a60359ac0fa5ed8e341de9643dcfcad637fb161 100644 --- a/Source/WebCore/page/ChromeClient.h +++ b/Source/WebCore/page/ChromeClient.h @@ -319,7 +319,7 @@ public: @@ -5774,7 +5802,7 @@ index 02d6fb8314b69943a34f3b342d12725b7d1e7385..538b9d953b61ab0f5485e98871904d75 #if ENABLE(INPUT_TYPE_COLOR) diff --git a/Source/WebCore/page/EventHandler.cpp b/Source/WebCore/page/EventHandler.cpp -index 28287fc760b62ec7c60a11b1105484892aa08d0c..4d79711bdfb42db3ff71108e2c5ccd5b00ae31c9 100644 +index 936154b76f8765af4c2db104c80d4ce6e5d7b683..a8616a28bcbcc87b3e9f40ef5c925e1df4464ba6 100644 --- a/Source/WebCore/page/EventHandler.cpp +++ b/Source/WebCore/page/EventHandler.cpp @@ -143,6 +143,7 @@ @@ -5861,7 +5889,7 @@ index 28287fc760b62ec7c60a11b1105484892aa08d0c..4d79711bdfb42db3ff71108e2c5ccd5b && m_frame.selection().isRange() && event.event().button() != RightButton) { VisibleSelection newSelection; -@@ -2090,10 +2092,8 @@ bool EventHandler::handleMouseMoveEvent(const PlatformMouseEvent& platformMouseE +@@ -2099,10 +2101,8 @@ bool EventHandler::handleMouseMoveEvent(const PlatformMouseEvent& platformMouseE swallowEvent = !dispatchMouseEvent(eventNames().mousemoveEvent, mouseEvent.targetNode(), 0, platformMouseEvent, FireMouseOverOut::Yes); @@ -5872,7 +5900,7 @@ index 28287fc760b62ec7c60a11b1105484892aa08d0c..4d79711bdfb42db3ff71108e2c5ccd5b return swallowEvent; } -@@ -4190,7 +4190,14 @@ bool EventHandler::handleDrag(const MouseEventWithHitTestResults& event, CheckDr +@@ -4194,7 +4194,14 @@ bool EventHandler::handleDrag(const MouseEventWithHitTestResults& event, CheckDr if (!m_frame.document()) return false; @@ -5888,7 +5916,7 @@ index 28287fc760b62ec7c60a11b1105484892aa08d0c..4d79711bdfb42db3ff71108e2c5ccd5b auto hasNonDefaultPasteboardData = HasNonDefaultPasteboardData::No; if (dragState().shouldDispatchEvents) { -@@ -4760,7 +4767,8 @@ bool EventHandler::handleTouchEvent(const PlatformTouchEvent& event) +@@ -4764,7 +4771,8 @@ bool EventHandler::handleTouchEvent(const PlatformTouchEvent& event) allTouchReleased = false; } @@ -5898,7 +5926,7 @@ index 28287fc760b62ec7c60a11b1105484892aa08d0c..4d79711bdfb42db3ff71108e2c5ccd5b PlatformTouchPoint::State pointState = point.state(); LayoutPoint pagePoint = documentPointForWindowPoint(m_frame, point.pos()); -@@ -4887,6 +4895,9 @@ bool EventHandler::handleTouchEvent(const PlatformTouchEvent& event) +@@ -4891,6 +4899,9 @@ bool EventHandler::handleTouchEvent(const PlatformTouchEvent& event) changedTouches[pointState].m_touches->append(WTFMove(touch)); changedTouches[pointState].m_targets.add(touchTarget); } @@ -5967,7 +5995,7 @@ index bd65cf54c2ddcd191e0f4944350bbd0c76830e4f..a17d366ba6af75caa569affc05869916 RefPtr m_dragTarget; bool m_mouseDownMayStartDrag { false }; diff --git a/Source/WebCore/page/Frame.cpp b/Source/WebCore/page/Frame.cpp -index a3135c9de5ceacf34eec9a65218dcdeaeb5a3af9..fc62e4b600fadfb2989337732e9b4c325225fab9 100644 +index 8a76efa7aaca2a75e8603e5074926c3b4579bc94..58f0cda256b3b22b3729ad8b5019d077b5ac6c5a 100644 --- a/Source/WebCore/page/Frame.cpp +++ b/Source/WebCore/page/Frame.cpp @@ -40,6 +40,7 @@ @@ -5976,9 +6004,9 @@ index a3135c9de5ceacf34eec9a65218dcdeaeb5a3af9..fc62e4b600fadfb2989337732e9b4c32 #include "ChromeClient.h" +#include "ComposedTreeIterator.h" #include "DOMWindow.h" + #include "DocumentLoader.h" #include "DocumentTimelinesController.h" - #include "DocumentType.h" -@@ -74,6 +75,7 @@ +@@ -75,6 +76,7 @@ #include "NavigationScheduler.h" #include "Navigator.h" #include "NodeList.h" @@ -5986,7 +6014,7 @@ index a3135c9de5ceacf34eec9a65218dcdeaeb5a3af9..fc62e4b600fadfb2989337732e9b4c32 #include "NodeTraversal.h" #include "Page.h" #include "ProcessWarming.h" -@@ -178,6 +180,7 @@ Frame::Frame(Page& page, HTMLFrameOwnerElement* ownerElement, UniqueRef&& frameLoaderClient, Frame void Frame::init() { @@ -5994,7 +6022,7 @@ index a3135c9de5ceacf34eec9a65218dcdeaeb5a3af9..fc62e4b600fadfb2989337732e9b4c32 m_loader->init(); } -@@ -352,7 +355,7 @@ void Frame::orientationChanged() +@@ -372,7 +375,7 @@ void Frame::orientationChanged() int Frame::orientation() const { if (auto* page = this->page()) @@ -6003,7 +6031,7 @@ index a3135c9de5ceacf34eec9a65218dcdeaeb5a3af9..fc62e4b600fadfb2989337732e9b4c32 return 0; } #endif // ENABLE(ORIENTATION_EVENTS) -@@ -1146,6 +1149,362 @@ DataDetectionResultsStorage& Frame::dataDetectionResults() +@@ -1186,6 +1189,362 @@ DataDetectionResultsStorage& Frame::dataDetectionResults() #endif @@ -6367,10 +6395,10 @@ index a3135c9de5ceacf34eec9a65218dcdeaeb5a3af9..fc62e4b600fadfb2989337732e9b4c32 #undef FRAME_RELEASE_LOG_ERROR diff --git a/Source/WebCore/page/Frame.h b/Source/WebCore/page/Frame.h -index 4654d7ee7456850c31c40c291f3a66d5fd0d33ec..bed69305f5ba16fe786de22c33d045a7d55a239e 100644 +index 2ed8e07cc88c6a096b74fb9d0b5a0a76062072a6..fb507a23e53ce79fb0c02ba260a4a676a8d2b76a 100644 --- a/Source/WebCore/page/Frame.h +++ b/Source/WebCore/page/Frame.h -@@ -111,8 +111,8 @@ enum { +@@ -110,8 +110,8 @@ enum { }; enum OverflowScrollAction { DoNotPerformOverflowScroll, PerformOverflowScroll }; @@ -6380,7 +6408,7 @@ index 4654d7ee7456850c31c40c291f3a66d5fd0d33ec..bed69305f5ba16fe786de22c33d045a7 // FIXME: Rename Frame to LocalFrame and AbstractFrame to Frame. class Frame final : public AbstractFrame { -@@ -211,10 +211,6 @@ public: +@@ -207,10 +207,6 @@ public: WEBCORE_EXPORT DataDetectionResultsStorage& dataDetectionResults(); #endif @@ -6391,7 +6419,7 @@ index 4654d7ee7456850c31c40c291f3a66d5fd0d33ec..bed69305f5ba16fe786de22c33d045a7 WEBCORE_EXPORT Node* deepestNodeAtLocation(const FloatPoint& viewportLocation); WEBCORE_EXPORT Node* nodeRespondingToClickEvents(const FloatPoint& viewportLocation, FloatPoint& adjustedViewportLocation, SecurityOrigin* = nullptr); WEBCORE_EXPORT Node* nodeRespondingToDoubleClickEvent(const FloatPoint& viewportLocation, FloatPoint& adjustedViewportLocation); -@@ -222,6 +218,10 @@ public: +@@ -218,6 +214,10 @@ public: WEBCORE_EXPORT Node* nodeRespondingToScrollWheelEvents(const FloatPoint& viewportLocation); WEBCORE_EXPORT Node* approximateNodeAtViewportLocationLegacy(const FloatPoint& viewportLocation, FloatPoint& adjustedViewportLocation); @@ -6402,7 +6430,7 @@ index 4654d7ee7456850c31c40c291f3a66d5fd0d33ec..bed69305f5ba16fe786de22c33d045a7 WEBCORE_EXPORT NSArray *wordsInCurrentParagraph() const; WEBCORE_EXPORT CGRect renderRectForPoint(CGPoint, bool* isReplaced, float* fontSize) const; -@@ -289,6 +289,7 @@ public: +@@ -285,6 +285,7 @@ public: WEBCORE_EXPORT FloatSize screenSize() const; void setOverrideScreenSize(FloatSize&&); @@ -6410,7 +6438,7 @@ index 4654d7ee7456850c31c40c291f3a66d5fd0d33ec..bed69305f5ba16fe786de22c33d045a7 void selfOnlyRef(); void selfOnlyDeref(); -@@ -324,7 +325,6 @@ private: +@@ -319,7 +320,6 @@ private: #if ENABLE(DATA_DETECTION) std::unique_ptr m_dataDetectionResults; #endif @@ -6418,7 +6446,7 @@ index 4654d7ee7456850c31c40c291f3a66d5fd0d33ec..bed69305f5ba16fe786de22c33d045a7 void betterApproximateNode(const IntPoint& testPoint, const NodeQualifier&, Node*& best, Node* failedNode, IntPoint& bestPoint, IntRect& bestRect, const IntRect& testRect); bool hitTestResultAtViewportLocation(const FloatPoint& viewportLocation, HitTestResult&, IntPoint& center); -@@ -332,6 +332,7 @@ private: +@@ -327,6 +327,7 @@ private: enum class ShouldFindRootEditableElement : bool { No, Yes }; Node* qualifyingNodeAtViewportLocation(const FloatPoint& viewportLocation, FloatPoint& adjustedViewportLocation, const NodeQualifier&, ShouldApproximate, ShouldFindRootEditableElement = ShouldFindRootEditableElement::Yes); @@ -6487,7 +6515,7 @@ index bb1bc2ffd02177718a77c5534e66bed55232e660..1eaff1702c30b337d4a8f5a804a9a4b1 struct SnapshotOptions { diff --git a/Source/WebCore/page/History.cpp b/Source/WebCore/page/History.cpp -index 8b29ef05fbe815bc3f7505f624940294bee2c4f7..1a1348144f68982cebcef18418c317dbe8bbc2f1 100644 +index ea02a0741ef8e28b11bf7a5a2b4071e57ae74f3a..7fbe72719c609c54195a6f6d130255d277dcff29 100644 --- a/Source/WebCore/page/History.cpp +++ b/Source/WebCore/page/History.cpp @@ -33,6 +33,7 @@ @@ -6498,7 +6526,7 @@ index 8b29ef05fbe815bc3f7505f624940294bee2c4f7..1a1348144f68982cebcef18418c317db #include "Logging.h" #include "NavigationScheduler.h" #include "Page.h" -@@ -272,6 +273,7 @@ ExceptionOr History::stateObjectAdded(RefPtr&& data +@@ -273,6 +274,7 @@ ExceptionOr History::stateObjectAdded(RefPtr&& data if (!urlString.isEmpty()) frame->document()->updateURLForPushOrReplaceState(fullURL); @@ -6507,16 +6535,20 @@ index 8b29ef05fbe815bc3f7505f624940294bee2c4f7..1a1348144f68982cebcef18418c317db if (stateObjectType == StateObjectType::Push) { frame->loader().history().pushState(WTFMove(data), title, fullURL.string()); diff --git a/Source/WebCore/page/Page.cpp b/Source/WebCore/page/Page.cpp -index 4d846b094462cac9e6bd31e648edb35f06f79398..5edaa5a01221581a9c5205a481a368a7b6d9767a 100644 +index e4785cefc7b6bb54fc6d38303bd6d6614860729e..58293f318ab0cb364c33b0cbd87a47147cff060e 100644 --- a/Source/WebCore/page/Page.cpp +++ b/Source/WebCore/page/Page.cpp -@@ -490,6 +490,37 @@ void Page::setOverrideViewportArguments(const std::optional& +@@ -511,6 +511,45 @@ void Page::setOverrideViewportArguments(const std::optional& document->updateViewportArguments(); } +FloatSize Page::screenSize() +{ -+ return m_overrideScreenSize.value_or(screenRect(mainFrame().view()).size()); ++ auto* localMainFrame = dynamicDowncast(mainFrame()); ++ RefPtr frameView = localMainFrame ? localMainFrame->view() : nullptr; ++ if (!frameView) ++ return { }; ++ return m_overrideScreenSize.value_or(screenRect(frameView.get()).size()); +} + +void Page::setOverrideScreenSize(std::optional size) @@ -6525,7 +6557,8 @@ index 4d846b094462cac9e6bd31e648edb35f06f79398..5edaa5a01221581a9c5205a481a368a7 + return; + + m_overrideScreenSize = size; -+ if (auto* document = mainFrame().document()) ++ auto* localMainFrame = dynamicDowncast(mainFrame()); ++ if (auto* document = localMainFrame ? localMainFrame->document() : nullptr) + document->updateViewportArguments(); +} + @@ -6541,14 +6574,17 @@ index 4d846b094462cac9e6bd31e648edb35f06f79398..5edaa5a01221581a9c5205a481a368a7 + return; + + m_overrideOrientation = orientation; -+ mainFrame().orientationChanged(); ++ ++ auto* localMainFrame = dynamicDowncast(mainFrame()); ++ if (localMainFrame) ++ localMainFrame->orientationChanged(); +} +#endif + ScrollingCoordinator* Page::scrollingCoordinator() { if (!m_scrollingCoordinator && m_settings->scrollingCoordinatorEnabled()) { -@@ -1412,10 +1443,6 @@ void Page::didCommitLoad() +@@ -1460,10 +1499,6 @@ void Page::didCommitLoad() m_isEditableRegionEnabled = false; #endif @@ -6559,7 +6595,7 @@ index 4d846b094462cac9e6bd31e648edb35f06f79398..5edaa5a01221581a9c5205a481a368a7 resetSeenPlugins(); resetSeenMediaEngines(); -@@ -3508,6 +3535,26 @@ void Page::setUseDarkAppearanceOverride(std::optional valueOverride) +@@ -3612,6 +3647,26 @@ void Page::setUseDarkAppearanceOverride(std::optional valueOverride) #endif } @@ -6587,10 +6623,10 @@ index 4d846b094462cac9e6bd31e648edb35f06f79398..5edaa5a01221581a9c5205a481a368a7 { if (insets == m_fullscreenInsets) diff --git a/Source/WebCore/page/Page.h b/Source/WebCore/page/Page.h -index 63f6a2ef6c375c98ace52bdae3225495a1adc6a3..06511fdf1291bc530f6a88dd9041628f6ed133de 100644 +index ff7dbfaea25c619707f9fcb74d50110e8bb43bb9..bafdf8a8763293d7397e081880af4c81a6efaa16 100644 --- a/Source/WebCore/page/Page.h +++ b/Source/WebCore/page/Page.h -@@ -296,6 +296,9 @@ public: +@@ -300,6 +300,9 @@ public: const std::optional& overrideViewportArguments() const { return m_overrideViewportArguments; } WEBCORE_EXPORT void setOverrideViewportArguments(const std::optional&); @@ -6600,7 +6636,7 @@ index 63f6a2ef6c375c98ace52bdae3225495a1adc6a3..06511fdf1291bc530f6a88dd9041628f static void refreshPlugins(bool reload); WEBCORE_EXPORT PluginData& pluginData(); void clearPluginData(); -@@ -350,6 +353,10 @@ public: +@@ -355,6 +358,10 @@ public: DragCaretController& dragCaretController() const { return *m_dragCaretController; } #if ENABLE(DRAG_SUPPORT) DragController& dragController() const { return *m_dragController; } @@ -6611,7 +6647,7 @@ index 63f6a2ef6c375c98ace52bdae3225495a1adc6a3..06511fdf1291bc530f6a88dd9041628f #endif FocusController& focusController() const { return *m_focusController; } #if ENABLE(CONTEXT_MENUS) -@@ -517,6 +524,10 @@ public: +@@ -522,6 +529,10 @@ public: WEBCORE_EXPORT void effectiveAppearanceDidChange(bool useDarkAppearance, bool useElevatedUserInterfaceLevel); bool defaultUseDarkAppearance() const { return m_useDarkAppearance; } void setUseDarkAppearanceOverride(std::optional); @@ -6622,7 +6658,7 @@ index 63f6a2ef6c375c98ace52bdae3225495a1adc6a3..06511fdf1291bc530f6a88dd9041628f #if ENABLE(TEXT_AUTOSIZING) float textAutosizingWidth() const { return m_textAutosizingWidth; } -@@ -939,6 +950,11 @@ public: +@@ -946,6 +957,11 @@ public: WEBCORE_EXPORT void setInteractionRegionsEnabled(bool); #endif @@ -6634,7 +6670,7 @@ index 63f6a2ef6c375c98ace52bdae3225495a1adc6a3..06511fdf1291bc530f6a88dd9041628f #if ENABLE(DEVICE_ORIENTATION) && PLATFORM(IOS_FAMILY) DeviceOrientationUpdateProvider* deviceOrientationUpdateProvider() const { return m_deviceOrientationUpdateProvider.get(); } #endif -@@ -1070,6 +1086,9 @@ private: +@@ -1077,6 +1093,9 @@ private: #if ENABLE(DRAG_SUPPORT) const std::unique_ptr m_dragController; @@ -6644,7 +6680,7 @@ index 63f6a2ef6c375c98ace52bdae3225495a1adc6a3..06511fdf1291bc530f6a88dd9041628f #endif const std::unique_ptr m_focusController; #if ENABLE(CONTEXT_MENUS) -@@ -1149,6 +1168,8 @@ private: +@@ -1156,6 +1175,8 @@ private: bool m_useElevatedUserInterfaceLevel { false }; bool m_useDarkAppearance { false }; std::optional m_useDarkAppearanceOverride; @@ -6653,7 +6689,7 @@ index 63f6a2ef6c375c98ace52bdae3225495a1adc6a3..06511fdf1291bc530f6a88dd9041628f #if ENABLE(TEXT_AUTOSIZING) float m_textAutosizingWidth { 0 }; -@@ -1327,6 +1348,11 @@ private: +@@ -1334,6 +1355,11 @@ private: #endif std::optional m_overrideViewportArguments; @@ -6666,10 +6702,10 @@ index 63f6a2ef6c375c98ace52bdae3225495a1adc6a3..06511fdf1291bc530f6a88dd9041628f #if ENABLE(DEVICE_ORIENTATION) && PLATFORM(IOS_FAMILY) RefPtr m_deviceOrientationUpdateProvider; diff --git a/Source/WebCore/page/PageConsoleClient.cpp b/Source/WebCore/page/PageConsoleClient.cpp -index 9ed53f6f5d0c842b0e38f91bbfca4be1b8b258cd..3b9c8007ab0f49c4522e64e4b840fe1e973eea59 100644 +index b9be2c6da03eae4b1053bc24bdda533c9d57ea6c..294a902bd6ddce97186ae815f71c561269239d82 100644 --- a/Source/WebCore/page/PageConsoleClient.cpp +++ b/Source/WebCore/page/PageConsoleClient.cpp -@@ -442,4 +442,10 @@ void PageConsoleClient::screenshot(JSC::JSGlobalObject* lexicalGlobalObject, Ref +@@ -451,4 +451,10 @@ void PageConsoleClient::screenshot(JSC::JSGlobalObject* lexicalGlobalObject, Ref addMessage(makeUnique(MessageSource::ConsoleAPI, MessageType::Image, MessageLevel::Log, dataURL, WTFMove(arguments), lexicalGlobalObject, 0, timestamp)); } @@ -6693,7 +6729,7 @@ index 9a6549a792bf95f6d5671289bc58be259ec73732..03a6ceb14a18b3b74e8544a98fb85841 Page& m_page; }; diff --git a/Source/WebCore/page/PointerCaptureController.cpp b/Source/WebCore/page/PointerCaptureController.cpp -index 88c3ca9610ca27e2bfa8d548597170b990990897..21de65f197804a31bbc0bf1a1098579c5dc2bfd7 100644 +index e2bf099200da7776255299e3b053d044aaebde3a..1339fcfa621d79b3a3dd488b13a3227de1734286 100644 --- a/Source/WebCore/page/PointerCaptureController.cpp +++ b/Source/WebCore/page/PointerCaptureController.cpp @@ -195,7 +195,7 @@ bool PointerCaptureController::preventsCompatibilityMouseEventsForIdentifier(Poi @@ -6737,47 +6773,51 @@ index 8c911ca663507b61640a4e29245dabe79573c420..08cdd2bfea9f5ac19c8cc39dc80032e1 #endif bool hasAnyElement() const { diff --git a/Source/WebCore/page/Screen.cpp b/Source/WebCore/page/Screen.cpp -index be4736dd6d9a2340d72930d2aef3e3286f3c0131..452c7f0ec042ee95e3d31f2f4f9756471ede63ba 100644 +index 848bd514aeed4cac5428534f89025dd526667ba7..3c9461ad9731c5563e8d61d9a751614429cd0c24 100644 --- a/Source/WebCore/page/Screen.cpp +++ b/Source/WebCore/page/Screen.cpp -@@ -105,6 +105,8 @@ int Screen::availLeft() const +@@ -125,6 +125,9 @@ int Screen::availLeft() const + if (isLoadingInHeadlessMode(*frame)) return 0; - if (frame->settings().webAPIStatisticsEnabled()) - ResourceLoadObserver::shared().logScreenAPIAccessed(*frame->document(), ScreenAPIsAccessed::AvailLeft); + + if (frame->hasScreenSizeOverride()) + return 0; ++ return static_cast(screenAvailableRect(frame->view()).x()); } -@@ -115,6 +117,8 @@ int Screen::availTop() const +@@ -140,6 +143,9 @@ int Screen::availTop() const + if (isLoadingInHeadlessMode(*frame)) return 0; - if (frame->settings().webAPIStatisticsEnabled()) - ResourceLoadObserver::shared().logScreenAPIAccessed(*frame->document(), ScreenAPIsAccessed::AvailTop); + + if (frame->hasScreenSizeOverride()) + return 0; ++ return static_cast(screenAvailableRect(frame->view()).y()); } -@@ -125,6 +129,8 @@ int Screen::availHeight() const - return 0; - if (frame->settings().webAPIStatisticsEnabled()) - ResourceLoadObserver::shared().logScreenAPIAccessed(*frame->document(), ScreenAPIsAccessed::AvailHeight); +@@ -155,6 +161,9 @@ int Screen::availHeight() const + if (isLoadingInHeadlessMode(*frame)) + return static_cast(frame->screenSize().height()); + + if (frame->hasScreenSizeOverride()) + return static_cast(frame->screenSize().height()); ++ return static_cast(screenAvailableRect(frame->view()).height()); } -@@ -135,6 +141,8 @@ int Screen::availWidth() const - return 0; - if (frame->settings().webAPIStatisticsEnabled()) - ResourceLoadObserver::shared().logScreenAPIAccessed(*frame->document(), ScreenAPIsAccessed::AvailWidth); +@@ -170,6 +179,9 @@ int Screen::availWidth() const + if (isLoadingInHeadlessMode(*frame)) + return static_cast(frame->screenSize().width()); + + if (frame->hasScreenSizeOverride()) + return static_cast(frame->screenSize().width()); ++ return static_cast(screenAvailableRect(frame->view()).width()); } diff --git a/Source/WebCore/page/csp/ContentSecurityPolicy.cpp b/Source/WebCore/page/csp/ContentSecurityPolicy.cpp -index c94640eda98ab01b02aba0d763473f25b9001e9b..f8e2f2e8528c92e172bfc4ae929cfc5a5b483124 100644 +index fcbf74effb3128c09e36c26f1ddf1628ffc9b62a..3820ff1faf95ad1ca0b170977e4dd0380f582335 100644 --- a/Source/WebCore/page/csp/ContentSecurityPolicy.cpp +++ b/Source/WebCore/page/csp/ContentSecurityPolicy.cpp @@ -336,6 +336,8 @@ bool ContentSecurityPolicy::allowContentSecurityPolicySourceStarToMatchAnyProtoc @@ -6894,10 +6934,10 @@ index 0000000000000000000000000000000000000000..2549355fc55ca55d2b6917dbfd05999f + +} diff --git a/Source/WebCore/platform/Cairo.cmake b/Source/WebCore/platform/Cairo.cmake -index 1fb0e9d5cee3b3df4ee1e96eb8d75016ad687fc5..497bd34cc97e2d20c9d6982a8d92d852451743cd 100644 +index e5f739288d77ed77c32fc538371637aea8370b7f..bc4c3cb723f733b8fd9683e15c91e13c89c3c426 100644 --- a/Source/WebCore/platform/Cairo.cmake +++ b/Source/WebCore/platform/Cairo.cmake -@@ -16,6 +16,7 @@ list(APPEND WebCore_PRIVATE_FRAMEWORK_HEADERS +@@ -17,6 +17,7 @@ list(APPEND WebCore_PRIVATE_FRAMEWORK_HEADERS platform/graphics/cairo/ImageBufferCairoBackend.h platform/graphics/cairo/ImageBufferCairoImageSurfaceBackend.h platform/graphics/cairo/ImageBufferCairoSurfaceBackend.h @@ -6939,7 +6979,7 @@ index c77ddd17643628a87c0245ee2ea3ba417d40bc23..c5179ff48e57cdcfbe709a10bae517ff bool m_disallowFileAccess { false }; }; diff --git a/Source/WebCore/platform/DragImage.cpp b/Source/WebCore/platform/DragImage.cpp -index 9e97dd5f689e6a1a90c9069445dc3f4b8c45e840..cc3ddc3e6d656a91c5ed58e050483d37e36d015a 100644 +index 9c01aa83e00b7e87d29846069f2a9a394680f6a9..8894cc1401d168d4a2abce8ee72eba0bd6b77fb5 100644 --- a/Source/WebCore/platform/DragImage.cpp +++ b/Source/WebCore/platform/DragImage.cpp @@ -279,7 +279,7 @@ DragImage::~DragImage() @@ -6952,7 +6992,7 @@ index 9e97dd5f689e6a1a90c9069445dc3f4b8c45e840..cc3ddc3e6d656a91c5ed58e050483d37 IntSize dragImageSize(DragImageRef) { diff --git a/Source/WebCore/platform/Pasteboard.h b/Source/WebCore/platform/Pasteboard.h -index 58c51c2bc278d4c228d456f5df9f5f03dd717c66..c74c01a5c3b9b7e82aec0f378cdb36d4b10c45f4 100644 +index f6396fc0d0f2c57393392815a895ade31c09788d..4f76ed28acc0787b6467794dbb41033211d804bf 100644 --- a/Source/WebCore/platform/Pasteboard.h +++ b/Source/WebCore/platform/Pasteboard.h @@ -44,7 +44,7 @@ OBJC_CLASS NSString; @@ -7125,10 +7165,10 @@ index 035f4f4978bd6562d13b2ce68dfb6132f533c697..e7b88b4c345b2dc13245f211461102ec #if PLATFORM(IOS_FAMILY) diff --git a/Source/WebCore/platform/adwaita/ScrollbarThemeAdwaita.cpp b/Source/WebCore/platform/adwaita/ScrollbarThemeAdwaita.cpp -index 47507797466b03841a28934263e90f0e63e73ab3..2c0c62b66e497b6610f732121189dac0ee20f54a 100644 +index 6016d84a982356c6c89d8719158346fd181dc0f6..572be8257134f190aed7befd548120fc6041b37c 100644 --- a/Source/WebCore/platform/adwaita/ScrollbarThemeAdwaita.cpp +++ b/Source/WebCore/platform/adwaita/ScrollbarThemeAdwaita.cpp -@@ -41,7 +41,7 @@ +@@ -43,7 +43,7 @@ namespace WebCore { @@ -7137,22 +7177,8 @@ index 47507797466b03841a28934263e90f0e63e73ab3..2c0c62b66e497b6610f732121189dac0 static const unsigned scrollbarBorderSize = 1; static const unsigned thumbBorderSize = 1; static const unsigned overlayThumbSize = 3; -diff --git a/Source/WebCore/platform/graphics/FontCascade.h b/Source/WebCore/platform/graphics/FontCascade.h -index f4b3f9f8441dfc68018953b326701725c295cb2d..5e403922983e1133ef369df04863a4bc16842cfd 100644 ---- a/Source/WebCore/platform/graphics/FontCascade.h -+++ b/Source/WebCore/platform/graphics/FontCascade.h -@@ -308,7 +308,8 @@ private: - return true; - if (textRenderingMode == TextRenderingMode::OptimizeSpeed) - return false; --#if PLATFORM(COCOA) || USE(FREETYPE) -+ // WIN: quick fix for https://bugs.webkit.org/show_bug.cgi?id=201213 -+#if PLATFORM(COCOA) || USE(FREETYPE) || PLATFORM(WIN) - return true; - #else - return false; diff --git a/Source/WebCore/platform/graphics/cairo/ImageBufferUtilitiesCairo.cpp b/Source/WebCore/platform/graphics/cairo/ImageBufferUtilitiesCairo.cpp -index 97f733ef9af5558ef7375ab2b74c8d4c6e6d8502..cd201b0155a4e12576c2bd1af8b45c4be1101763 100644 +index ba4211130b222abe1cba86e9eedf525940f317a0..f2289378791bc76a5bc82ba89876c3ed6aa645e3 100644 --- a/Source/WebCore/platform/graphics/cairo/ImageBufferUtilitiesCairo.cpp +++ b/Source/WebCore/platform/graphics/cairo/ImageBufferUtilitiesCairo.cpp @@ -48,6 +48,13 @@ @@ -7272,7 +7298,7 @@ index b60f9a64bacc8282860da6de299b75aeb295b9b5..55bd017c03c6478ca334bd5ef164160f namespace WebCore { diff --git a/Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.h b/Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.h -index 07ef77d93ff0258d5447ba8156a9e050794c9f59..94cccd1cc7519f793d77cbec56001e24f31ef044 100644 +index c667f83be29bda95e3856b32139b417e13e1c9ed..b06f077790e3a8c35dd16875ed38725ae3e84002 100644 --- a/Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.h +++ b/Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.h @@ -56,12 +56,18 @@ inline bool webkitGstCheckVersion(guint major, guint minor, guint micro) @@ -7296,7 +7322,7 @@ index 07ef77d93ff0258d5447ba8156a9e050794c9f59..94cccd1cc7519f793d77cbec56001e24 #endif diff --git a/Source/WebCore/platform/graphics/win/ComplexTextControllerUniscribe.cpp b/Source/WebCore/platform/graphics/win/ComplexTextControllerUniscribe.cpp -index 6d6820fc22f9a7102bbdad6c4b5e3e7e9645f66c..f44797b8c197bf1b3daaa9b59dad2a8e250c4791 100644 +index 2a5c4edc93f19897648351181f4187b464ad1a62..32b74aadea83ce7f5ddb6010b45b901d34b0e870 100644 --- a/Source/WebCore/platform/graphics/win/ComplexTextControllerUniscribe.cpp +++ b/Source/WebCore/platform/graphics/win/ComplexTextControllerUniscribe.cpp @@ -170,6 +170,33 @@ static Vector stringIndicesFromClusters(const Vector& clusters, @@ -7605,10 +7631,10 @@ index 23f7caefeb0fdfd47d05b8bbc0f949d0b772dc15..d89d5395c7c5eddeaa3aebae8ae3fcc0 { switch (val) { diff --git a/Source/WebCore/platform/gtk/PlatformScreenGtk.cpp b/Source/WebCore/platform/gtk/PlatformScreenGtk.cpp -index 80958ba565a877224d0ed37e4e4057b4be0dde24..eca42bf5181bc4a95efca9c9c3f5ce0f987fea43 100644 +index 9d425d17e44698949f04ef1c0a84e00013fb8dea..3533cf6c70ba9404c99b56199c7cfcece9704652 100644 --- a/Source/WebCore/platform/gtk/PlatformScreenGtk.cpp +++ b/Source/WebCore/platform/gtk/PlatformScreenGtk.cpp -@@ -224,7 +224,7 @@ bool screenSupportsExtendedColor(Widget*) +@@ -225,7 +225,7 @@ bool screenSupportsExtendedColor(Widget*) } #if ENABLE(TOUCH_EVENTS) @@ -7617,7 +7643,7 @@ index 80958ba565a877224d0ed37e4e4057b4be0dde24..eca42bf5181bc4a95efca9c9c3f5ce0f { auto* display = gdk_display_get_default(); if (!display) -@@ -234,7 +234,7 @@ bool screenHasTouchDevice() +@@ -235,7 +235,7 @@ bool screenHasTouchDevice() return seat ? gdk_seat_get_capabilities(seat) & GDK_SEAT_CAPABILITY_TOUCH : true; } @@ -7834,7 +7860,7 @@ index ae439e30f1fb239d18e1164e8896dfb272c75673..eddcb9bda783fcdcbf9f924d4eaa6cc7 #endif // USE(LIBWPE) diff --git a/Source/WebCore/platform/libwpe/PlatformKeyboardEventLibWPE.cpp b/Source/WebCore/platform/libwpe/PlatformKeyboardEventLibWPE.cpp -index b2c1a92cb400e3a441c1164fb5b723226023df6a..90e9d5e3c9b216a4b61dc297bfa33e115316d511 100644 +index b7ddcc524def62c6be6bdf9cd5c8db3ed7368c99..0206c6adf63952ff843b46cc81203065f5f41e94 100644 --- a/Source/WebCore/platform/libwpe/PlatformKeyboardEventLibWPE.cpp +++ b/Source/WebCore/platform/libwpe/PlatformKeyboardEventLibWPE.cpp @@ -30,8 +30,10 @@ @@ -7848,7 +7874,7 @@ index b2c1a92cb400e3a441c1164fb5b723226023df6a..90e9d5e3c9b216a4b61dc297bfa33e11 namespace WebCore { -@@ -1299,6 +1301,246 @@ int PlatformKeyboardEvent::windowsKeyCodeForWPEKeyCode(unsigned keycode) +@@ -1305,6 +1307,246 @@ int PlatformKeyboardEvent::windowsKeyCodeForWPEKeyCode(unsigned keycode) return 0; } @@ -8230,10 +8256,10 @@ index 35ade40b37f0c476815535541118f9246ed199cd..2bd1444f9a5e9a14ab3d6acbc020434e m_commonHeaders.append(CommonHeader { name, value }); } diff --git a/Source/WebCore/platform/network/NetworkStorageSession.h b/Source/WebCore/platform/network/NetworkStorageSession.h -index d2e64c115e80f6b225ff4c39e0d8306a058ad5ea..aa3b5355ed439f0fd67776789580d9027b144f8b 100644 +index 0bcd59f0c0e50d8e57b0b9818b101f55992d8ad5..250afa2c6483348fb9fe0a3a6e4b65659032d8c2 100644 --- a/Source/WebCore/platform/network/NetworkStorageSession.h +++ b/Source/WebCore/platform/network/NetworkStorageSession.h -@@ -157,6 +157,8 @@ public: +@@ -152,6 +152,8 @@ public: NetworkingContext* context() const; #endif @@ -8263,7 +8289,7 @@ index 1e9280cc7df42d6caa0eab7b8093ea704fab41eb..e12e1a6f9bbe920162e7b2a46f578069 m_httpStatusCode, diff --git a/Source/WebCore/platform/network/ResourceResponseBase.h b/Source/WebCore/platform/network/ResourceResponseBase.h -index 7ae65673112817df642ba634afe441c5fb0090d7..e60f646a0268604d890194ada0318a28b4915100 100644 +index 8f7fc2544206f25c7c6e60ff6305e9fa21461fe3..3d3d23b70c5db484a8ad270031b9dca7d4d0ef4c 100644 --- a/Source/WebCore/platform/network/ResourceResponseBase.h +++ b/Source/WebCore/platform/network/ResourceResponseBase.h @@ -102,6 +102,7 @@ public: @@ -8308,7 +8334,7 @@ index 7ae65673112817df642ba634afe441c5fb0090d7..e60f646a0268604d890194ada0318a28 decoder >> httpStatusCode; if (!httpStatusCode) diff --git a/Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm b/Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm -index 47476515324b3d64d8a17b39a7933b73361ce084..54764589c5e4563b0d5e818665e677cd54225764 100644 +index df4dcc2be66c6a9b5167133e8bcbf40122f38008..70fe07087e8145398c1b38aa3d439c5c7a144e05 100644 --- a/Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm +++ b/Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm @@ -481,6 +481,22 @@ void NetworkStorageSession::setCookiesFromDOM(const URL& firstParty, const SameS @@ -8428,10 +8454,10 @@ index 423a2f825e7c3090fbdab8d2963ad1b45b71af9a..dfa43d953dda13ba9ab6a928bc6c7b27 WEBCORE_EXPORT void send(CurlStreamID, UniqueArray&&, size_t); diff --git a/Source/WebCore/platform/network/curl/NetworkStorageSessionCurl.cpp b/Source/WebCore/platform/network/curl/NetworkStorageSessionCurl.cpp -index 93f996d23372b2aee03f480d31905bddfa0e221a..cfd265e7576d4871c09c67aa3f53423af1fc2f08 100644 +index 846dc505de08da17da8aeee12512eb5b20d1ae8d..a380660f6bc2a7b00e1e5bac5de2910ca5f770e1 100644 --- a/Source/WebCore/platform/network/curl/NetworkStorageSessionCurl.cpp +++ b/Source/WebCore/platform/network/curl/NetworkStorageSessionCurl.cpp -@@ -118,6 +118,12 @@ void NetworkStorageSession::setCookieAcceptPolicy(CookieAcceptPolicy policy) con +@@ -120,6 +120,12 @@ void NetworkStorageSession::setCookieAcceptPolicy(CookieAcceptPolicy policy) con cookieDatabase().setAcceptPolicy(policy); } @@ -8760,7 +8786,7 @@ index 0000000000000000000000000000000000000000..07fb260a5203167fdf94a552949394bb +} diff --git a/Source/WebCore/platform/wpe/DragImageWPE.cpp b/Source/WebCore/platform/wpe/DragImageWPE.cpp new file mode 100644 -index 0000000000000000000000000000000000000000..e77e6db7a93a9dfcaad3866eb445edf4ebfe33b5 +index 0000000000000000000000000000000000000000..3aedd4bdfacd4d66552346bec8211efaeff1993c --- /dev/null +++ b/Source/WebCore/platform/wpe/DragImageWPE.cpp @@ -0,0 +1,73 @@ @@ -8825,7 +8851,7 @@ index 0000000000000000000000000000000000000000..e77e6db7a93a9dfcaad3866eb445edf4 + return nullptr; +} + -+DragImageRef createDragImageForLink(Element&, URL&, const String&, TextIndicatorData&, FontRenderingMode, float) ++DragImageRef createDragImageForLink(Element&, URL&, const String&, TextIndicatorData&, float) +{ + notImplemented(); + return nullptr; @@ -9085,7 +9111,7 @@ index 0000000000000000000000000000000000000000..cf2b51f6f02837a1106f4d999f2f130e + +} // namespace WebCore diff --git a/Source/WebCore/rendering/RenderTextControl.cpp b/Source/WebCore/rendering/RenderTextControl.cpp -index 403cd8fc7b149ba99b2299fd0532362957e29977..fdbf33cb6d0674c4db5a268c03bbfd9b3125cb4b 100644 +index 53c953f10702812a367851356a4b46e269ff0b42..dc910a1c9a7d698099e956dbaf76fe6c85a769ed 100644 --- a/Source/WebCore/rendering/RenderTextControl.cpp +++ b/Source/WebCore/rendering/RenderTextControl.cpp @@ -217,13 +217,13 @@ void RenderTextControl::layoutExcludedChildren(bool relayoutChildren) @@ -9142,7 +9168,7 @@ index 1d8488e0d36288e09cd5662bd7f770ade95dfee3..dee07f87b47d62d4ef8ede45824bdb2f WorkerOrWorkletGlobalScope& m_globalScope; }; diff --git a/Source/WebKit/NetworkProcess/Cookies/WebCookieManager.messages.in b/Source/WebKit/NetworkProcess/Cookies/WebCookieManager.messages.in -index 2081154f90fac8f7b9f7c6061cf5dc6da1af44b5..e7c6071a6f2e05e76e0fd1cb4661ebd32a5bb3fd 100644 +index 54caa5d9afa8d084cef49cfe3d958908a799ad31..a6cc60bd8ea1cea39a085ba05c3e71d221d2028a 100644 --- a/Source/WebKit/NetworkProcess/Cookies/WebCookieManager.messages.in +++ b/Source/WebKit/NetworkProcess/Cookies/WebCookieManager.messages.in @@ -26,13 +26,13 @@ @@ -9159,14 +9185,14 @@ index 2081154f90fac8f7b9f7c6061cf5dc6da1af44b5..e7c6071a6f2e05e76e0fd1cb4661ebd3 + void DeleteAllCookies(PAL::SessionID sessionID) -> () void DeleteAllCookiesModifiedSince(PAL::SessionID sessionID, WallTime time) -> () - void SetHTTPCookieAcceptPolicy(enum:uint8_t WebCore::HTTPCookieAcceptPolicy policy) -> () + void SetHTTPCookieAcceptPolicy(PAL::SessionID sessionID, enum:uint8_t WebCore::HTTPCookieAcceptPolicy policy) -> () diff --git a/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp b/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp -index 3e9ad052e74831d2b4b6172fee5f7ba12c15ad00..2dfc8557852fcfeadf9727bf307b53a4ad2f936d 100644 +index 6ca59278158fd53a5d29ae37298439299c7f294f..8d1b3f7284f78c83e04666f6591d8faeea5f54fe 100644 --- a/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp +++ b/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp -@@ -84,6 +84,11 @@ - #include +@@ -87,6 +87,11 @@ #include + #include +#if PLATFORM(COCOA) +#include "NetworkDataTaskCocoa.h" @@ -9176,7 +9202,7 @@ index 3e9ad052e74831d2b4b6172fee5f7ba12c15ad00..2dfc8557852fcfeadf9727bf307b53a4 #if ENABLE(APPLE_PAY_REMOTE_UI) #include "WebPaymentCoordinatorProxyMessages.h" #endif -@@ -488,6 +493,10 @@ void NetworkConnectionToWebProcess::createSocketStream(URL&& url, String cachePa +@@ -493,6 +498,10 @@ void NetworkConnectionToWebProcess::createSocketStream(URL&& url, String cachePa if (auto* session = networkSession()) acceptInsecureCertificates = session->shouldAcceptInsecureCertificatesForWebSockets(); #endif @@ -9187,7 +9213,7 @@ index 3e9ad052e74831d2b4b6172fee5f7ba12c15ad00..2dfc8557852fcfeadf9727bf307b53a4 m_networkSocketStreams.add(identifier, NetworkSocketStream::create(m_networkProcess.get(), WTFMove(url), m_sessionID, cachePartition, identifier, m_connection, WTFMove(token), acceptInsecureCertificates)); } -@@ -1032,6 +1041,14 @@ void NetworkConnectionToWebProcess::clearPageSpecificData(PageIdentifier pageID) +@@ -1037,6 +1046,14 @@ void NetworkConnectionToWebProcess::clearPageSpecificData(PageIdentifier pageID) #endif } @@ -9203,10 +9229,10 @@ index 3e9ad052e74831d2b4b6172fee5f7ba12c15ad00..2dfc8557852fcfeadf9727bf307b53a4 void NetworkConnectionToWebProcess::removeStorageAccessForFrame(FrameIdentifier frameID, PageIdentifier pageID) { diff --git a/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h b/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h -index f309af72791be7ebcd1d31b2712008dd727e175e..9245272836fa02c0129fb1b19429205933c90003 100644 +index 8de90ddda89e94c0665c026909417b6e6ebe4195..e99798f3d15d48982d34fa919b641539a87ad8fe 100644 --- a/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h +++ b/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h -@@ -309,6 +309,8 @@ private: +@@ -313,6 +313,8 @@ private: void clearPageSpecificData(WebCore::PageIdentifier); @@ -9216,7 +9242,7 @@ index f309af72791be7ebcd1d31b2712008dd727e175e..9245272836fa02c0129fb1b194292059 void removeStorageAccessForFrame(WebCore::FrameIdentifier, WebCore::PageIdentifier); diff --git a/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in b/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in -index 118aff35c592dd4ad9a29568a9139be61da7275b..22260b500fd3ebeb96f796709ecdd3d2d876c65d 100644 +index 058fb0192a382f3e3ef70e6326ae442395f0d191..23c7c91c33fde0a4bba50c747ec7fd7d8caea0c5 100644 --- a/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in +++ b/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in @@ -66,6 +66,8 @@ messages -> NetworkConnectionToWebProcess LegacyReceiver { @@ -9229,10 +9255,10 @@ index 118aff35c592dd4ad9a29568a9139be61da7275b..22260b500fd3ebeb96f796709ecdd3d2 RemoveStorageAccessForFrame(WebCore::FrameIdentifier frameID, WebCore::PageIdentifier pageID); LogUserInteraction(WebCore::RegistrableDomain domain) diff --git a/Source/WebKit/NetworkProcess/NetworkProcess.cpp b/Source/WebKit/NetworkProcess/NetworkProcess.cpp -index 67f86f699cda48e9f9dce2690b0fa83408366110..71308c342f471cc666ad5a1eb7c8d36a571a6fcb 100644 +index ed500c0a594e61d50b638a79ad8a73fe4d91002d..190eb233829f4d66e1979f256f9d3a5f2cce20f7 100644 --- a/Source/WebKit/NetworkProcess/NetworkProcess.cpp +++ b/Source/WebKit/NetworkProcess/NetworkProcess.cpp -@@ -599,6 +599,12 @@ void NetworkProcess::destroySession(PAL::SessionID sessionID) +@@ -596,6 +596,12 @@ void NetworkProcess::destroySession(PAL::SessionID sessionID) m_sessionsControlledByAutomation.remove(sessionID); } @@ -9246,10 +9272,10 @@ index 67f86f699cda48e9f9dce2690b0fa83408366110..71308c342f471cc666ad5a1eb7c8d36a void NetworkProcess::dumpResourceLoadStatistics(PAL::SessionID sessionID, CompletionHandler&& completionHandler) { diff --git a/Source/WebKit/NetworkProcess/NetworkProcess.h b/Source/WebKit/NetworkProcess/NetworkProcess.h -index 4b529d1e4e1ca0d52e908fb202eca93c2396e0d8..2c4f7634cf34d5cb486ffc2830725b524951ec62 100644 +index 7631c53a00d064392a3e96eced38fa4cb09e1a7a..7755fe1a7a1547eb3213c64aed36e7161e6b9c41 100644 --- a/Source/WebKit/NetworkProcess/NetworkProcess.h +++ b/Source/WebKit/NetworkProcess/NetworkProcess.h -@@ -36,6 +36,7 @@ +@@ -37,6 +37,7 @@ #include "QuotaIncreaseRequestIdentifier.h" #include "RTCDataChannelRemoteManagerProxy.h" #include "SandboxExtension.h" @@ -9257,7 +9283,7 @@ index 4b529d1e4e1ca0d52e908fb202eca93c2396e0d8..2c4f7634cf34d5cb486ffc2830725b52 #include "WebPageProxyIdentifier.h" #include "WebResourceLoadStatisticsStore.h" #include "WebsiteData.h" -@@ -82,6 +83,7 @@ class SessionID; +@@ -83,6 +84,7 @@ class SessionID; namespace WebCore { class CertificateInfo; @@ -9265,7 +9291,7 @@ index 4b529d1e4e1ca0d52e908fb202eca93c2396e0d8..2c4f7634cf34d5cb486ffc2830725b52 class CurlProxySettings; class ProtectionSpace; class NetworkStorageSession; -@@ -200,6 +202,8 @@ public: +@@ -202,6 +204,8 @@ public: void addWebsiteDataStore(WebsiteDataStoreParameters&&); @@ -9275,10 +9301,10 @@ index 4b529d1e4e1ca0d52e908fb202eca93c2396e0d8..2c4f7634cf34d5cb486ffc2830725b52 void clearPrevalentResource(PAL::SessionID, RegistrableDomain&&, CompletionHandler&&); void clearUserInteraction(PAL::SessionID, RegistrableDomain&&, CompletionHandler&&); diff --git a/Source/WebKit/NetworkProcess/NetworkProcess.messages.in b/Source/WebKit/NetworkProcess/NetworkProcess.messages.in -index 2a429ff20a6718c879340f0c626caf0a75868fa7..738e96ad11b472baaad069f6139524d02fa50ca5 100644 +index 4f64693c943900509f7144be85c3afc6d4e9d7b1..a8c1a00ab00f71219365ebb2b4f73c58c7de5b76 100644 --- a/Source/WebKit/NetworkProcess/NetworkProcess.messages.in +++ b/Source/WebKit/NetworkProcess/NetworkProcess.messages.in -@@ -81,6 +81,8 @@ messages -> NetworkProcess LegacyReceiver { +@@ -79,6 +79,8 @@ messages -> NetworkProcess LegacyReceiver { PreconnectTo(PAL::SessionID sessionID, WebKit::WebPageProxyIdentifier webPageProxyID, WebCore::PageIdentifier webPageID, URL url, String userAgent, enum:uint8_t WebCore::StoredCredentialsPolicy storedCredentialsPolicy, std::optional isNavigatingToAppBoundDomain, enum:bool WebKit::LastNavigationWasAppInitiated lastNavigationWasAppInitiated); @@ -9288,10 +9314,10 @@ index 2a429ff20a6718c879340f0c626caf0a75868fa7..738e96ad11b472baaad069f6139524d0 ClearPrevalentResource(PAL::SessionID sessionID, WebCore::RegistrableDomain resourceDomain) -> () ClearUserInteraction(PAL::SessionID sessionID, WebCore::RegistrableDomain resourceDomain) -> () diff --git a/Source/WebKit/NetworkProcess/NetworkSession.h b/Source/WebKit/NetworkProcess/NetworkSession.h -index a27a1f04a163ef7d763d132686570ed2d091867c..e9c725bf6fd112ba27d3d7187a16f407c7438c3c 100644 +index 6c1113fc064a56b786cc0368f89dcd3e60d00523..344cc4a5c6bde9d9e517b897514f35334bc0a799 100644 --- a/Source/WebKit/NetworkProcess/NetworkSession.h +++ b/Source/WebKit/NetworkProcess/NetworkSession.h -@@ -197,6 +197,9 @@ public: +@@ -204,6 +204,9 @@ public: void lowMemoryHandler(WTF::Critical); @@ -9299,9 +9325,9 @@ index a27a1f04a163ef7d763d132686570ed2d091867c..e9c725bf6fd112ba27d3d7187a16f407 + bool ignoreCertificateErrors() { return m_ignoreCertificateErrors; } + #if ENABLE(SERVICE_WORKER) - void addSoftUpdateLoader(std::unique_ptr&& loader) { m_softUpdateLoaders.add(WTFMove(loader)); } void removeSoftUpdateLoader(ServiceWorkerSoftUpdateLoader* loader) { m_softUpdateLoaders.remove(loader); } -@@ -289,6 +292,7 @@ protected: + void addNavigationPreloaderTask(ServiceWorkerFetchTask&); +@@ -317,6 +320,7 @@ protected: bool m_privateClickMeasurementDebugModeEnabled { false }; std::optional m_ephemeralMeasurement; bool m_isRunningEphemeralMeasurementTest { false }; @@ -9310,10 +9336,10 @@ index a27a1f04a163ef7d763d132686570ed2d091867c..e9c725bf6fd112ba27d3d7187a16f407 HashSet> m_keptAliveLoads; diff --git a/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm b/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm -index 3c94224bf44f943408c6f33537ec24da8375be1b..2b6bd50d8d0974e633cd91a941645cf51d7042b1 100644 +index 897619af0ea86dec03b7e338e41c60585fb208dd..0e4039609c8986b3d522b604919024951ff1728f 100644 --- a/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm +++ b/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm -@@ -747,7 +747,7 @@ - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didRece +@@ -751,7 +751,7 @@ - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didRece if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]) { sessionCocoa->setClientAuditToken(challenge); @@ -9322,7 +9348,7 @@ index 3c94224bf44f943408c6f33537ec24da8375be1b..2b6bd50d8d0974e633cd91a941645cf5 return completionHandler(NSURLSessionAuthChallengeUseCredential, [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust]); NSURLSessionTaskTransactionMetrics *metrics = task._incompleteTaskMetrics.transactionMetrics.lastObject; -@@ -995,6 +995,13 @@ ALLOW_DEPRECATED_DECLARATIONS_END +@@ -1083,6 +1083,13 @@ ALLOW_DEPRECATED_DECLARATIONS_END resourceResponse.setDeprecatedNetworkLoadMetrics(WebCore::copyTimingData(taskMetrics, networkDataTask->networkLoadMetrics())); @@ -9380,7 +9406,7 @@ index 92a56b944d04850494c27b954ad68ec9ca3324b8..ead9a4c8b7f4b8add8439c02e72cdafe } // namespace WebKit diff --git a/Source/WebKit/NetworkProcess/curl/WebSocketTaskCurl.cpp b/Source/WebKit/NetworkProcess/curl/WebSocketTaskCurl.cpp -index 02d6b15340f62666ac372b13be555c043feed277..fc2e66175600d3c1c196fd3a97306537d13fbda9 100644 +index 908f75f83b9fe887cc26779f1c2babbadb646464..f468d8a15091ffa03ec15299f27ff5237133be40 100644 --- a/Source/WebKit/NetworkProcess/curl/WebSocketTaskCurl.cpp +++ b/Source/WebKit/NetworkProcess/curl/WebSocketTaskCurl.cpp @@ -33,7 +33,7 @@ @@ -9415,7 +9441,7 @@ index 2027a4b929fda90b34f46bf563846ca8d4553829..34bfbb236d5f16c8bb34920a2bb01c04 void sendString(const IPC::DataReference&, CompletionHandler&&); diff --git a/Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp b/Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp -index 0ed3ef8b632b9c0c57aceb413fbf263cbd485e68..45b434cbf1b1a55cf6314ea94f3ae1811cb22cdb 100644 +index 3644f10a9e868a26e2b39549f7498b1f37c1f2bd..80502c65186a65196b9069a6dc290ddbe8981202 100644 --- a/Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp +++ b/Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp @@ -492,6 +492,8 @@ void NetworkDataTaskSoup::didSendRequest(GRefPtr&& inputStream) @@ -9437,7 +9463,7 @@ index 0ed3ef8b632b9c0c57aceb413fbf263cbd485e68..45b434cbf1b1a55cf6314ea94f3ae181 if (!error) return true; diff --git a/Source/WebKit/NetworkProcess/soup/NetworkSessionSoup.cpp b/Source/WebKit/NetworkProcess/soup/NetworkSessionSoup.cpp -index 670ac930d9af9d6b5f05414b8294b3f18124a19a..7d851c0702d9aa16de2870eae3744e93fadb9921 100644 +index 7726f1ad59430f11a11bbec0300fcc86b4654e41..cdccb0f1d72c5350b5eebc197eeae8f55119c932 100644 --- a/Source/WebKit/NetworkProcess/soup/NetworkSessionSoup.cpp +++ b/Source/WebKit/NetworkProcess/soup/NetworkSessionSoup.cpp @@ -109,6 +109,11 @@ static gboolean webSocketAcceptCertificateCallback(GTlsConnection* connection, G @@ -9498,7 +9524,7 @@ index 670ac930d9af9d6b5f05414b8294b3f18124a19a..7d851c0702d9aa16de2870eae3744e93 } return makeUnique(channel, request, soupSession(), soupMessage.get(), protocol); diff --git a/Source/WebKit/Platform/IPC/ArgumentCoders.h b/Source/WebKit/Platform/IPC/ArgumentCoders.h -index 9d2d2c8827689363ee98c8076b79df281b4e7c45..9944e1e300b6a5ce34f7bde3a423ec7e919a8bad 100644 +index ae37b2145fc2737ee1314ef3e5a161570d7b812d..65874cad76a2dff70477ae5952d4cff0ebc6c7a4 100644 --- a/Source/WebKit/Platform/IPC/ArgumentCoders.h +++ b/Source/WebKit/Platform/IPC/ArgumentCoders.h @@ -154,8 +154,11 @@ struct ArgumentCoder> { @@ -9515,10 +9541,10 @@ index 9d2d2c8827689363ee98c8076b79df281b4e7c45..9944e1e300b6a5ce34f7bde3a423ec7e auto data = decoder.template decodeSpan(size); if (!data.data()) diff --git a/Source/WebKit/PlatformGTK.cmake b/Source/WebKit/PlatformGTK.cmake -index 8e20ebf009c97649ecc78abd2bfdaaa74d99e7a8..a3a191911a601dbd5481eafb90e68d5ee815c07d 100644 +index 6252529e8b2e86b5780e25b8a63aae1dea0eccf7..8bc9909fcad4e3a322268bddde7d3c2006d70533 100644 --- a/Source/WebKit/PlatformGTK.cmake +++ b/Source/WebKit/PlatformGTK.cmake -@@ -280,6 +280,9 @@ list(APPEND WebKit_SYSTEM_INCLUDE_DIRECTORIES +@@ -298,6 +298,9 @@ list(APPEND WebKit_SYSTEM_INCLUDE_DIRECTORIES ${GSTREAMER_PBUTILS_INCLUDE_DIRS} ${GTK_INCLUDE_DIRS} ${LIBSOUP_INCLUDE_DIRS} @@ -9528,7 +9554,7 @@ index 8e20ebf009c97649ecc78abd2bfdaaa74d99e7a8..a3a191911a601dbd5481eafb90e68d5e ) if (USE_WPE_RENDERER) -@@ -321,6 +324,9 @@ if (USE_LIBWEBRTC) +@@ -339,6 +342,9 @@ if (USE_LIBWEBRTC) list(APPEND WebKit_SYSTEM_INCLUDE_DIRECTORIES "${THIRDPARTY_DIR}/libwebrtc/Source/" "${THIRDPARTY_DIR}/libwebrtc/Source/webrtc" @@ -9538,7 +9564,7 @@ index 8e20ebf009c97649ecc78abd2bfdaaa74d99e7a8..a3a191911a601dbd5481eafb90e68d5e ) endif () -@@ -364,6 +370,12 @@ else () +@@ -382,6 +388,12 @@ else () set(WebKitGTK_ENUM_HEADER_TEMPLATE ${WEBKIT_DIR}/UIProcess/API/gtk/WebKitEnumTypesGtk3.h.in) endif () @@ -9552,10 +9578,10 @@ index 8e20ebf009c97649ecc78abd2bfdaaa74d99e7a8..a3a191911a601dbd5481eafb90e68d5e set(WebKitGTK_ENUM_GENERATION_HEADERS ${WebKitGTK_INSTALLED_HEADERS}) list(REMOVE_ITEM WebKitGTK_ENUM_GENERATION_HEADERS ${WebKitGTK_DERIVED_SOURCES_DIR}/webkit/WebKitEnumTypes.h) diff --git a/Source/WebKit/PlatformWPE.cmake b/Source/WebKit/PlatformWPE.cmake -index 1ec0ba4a8d80e1a2a7b0fd283b49985d5566667f..c48a2b9b0051f95668afb774c53e1b23e3af1a71 100644 +index 0b03e3913067286018161b4ee5342444fa761185..ffb1886482a324d2d5406afde0c1f0a09b4e56df 100644 --- a/Source/WebKit/PlatformWPE.cmake +++ b/Source/WebKit/PlatformWPE.cmake -@@ -203,6 +203,7 @@ set(WPE_API_INSTALLED_HEADERS +@@ -202,6 +202,7 @@ set(WPE_API_INSTALLED_HEADERS ${DERIVED_SOURCES_WPE_API_DIR}/WebKitEnumTypes.h ${DERIVED_SOURCES_WPE_API_DIR}/WebKitVersion.h ${WEBKIT_DIR}/UIProcess/API/wpe/WebKitColor.h @@ -9563,7 +9589,7 @@ index 1ec0ba4a8d80e1a2a7b0fd283b49985d5566667f..c48a2b9b0051f95668afb774c53e1b23 ${WEBKIT_DIR}/UIProcess/API/wpe/WebKitRectangle.h ${WEBKIT_DIR}/UIProcess/API/wpe/WebKitWebViewBackend.h ) -@@ -342,6 +343,7 @@ list(APPEND WebKit_INCLUDE_DIRECTORIES +@@ -366,6 +367,7 @@ list(APPEND WebKit_INCLUDE_DIRECTORIES "${WEBKIT_DIR}/UIProcess/Launcher/libwpe" "${WEBKIT_DIR}/UIProcess/Notifications/glib/" "${WEBKIT_DIR}/UIProcess/geoclue" @@ -9571,7 +9597,7 @@ index 1ec0ba4a8d80e1a2a7b0fd283b49985d5566667f..c48a2b9b0051f95668afb774c53e1b23 "${WEBKIT_DIR}/UIProcess/gstreamer" "${WEBKIT_DIR}/UIProcess/linux" "${WEBKIT_DIR}/UIProcess/soup" -@@ -361,8 +363,17 @@ list(APPEND WebKit_SYSTEM_INCLUDE_DIRECTORIES +@@ -389,8 +391,17 @@ list(APPEND WebKit_SYSTEM_INCLUDE_DIRECTORIES ${GIO_UNIX_INCLUDE_DIRS} ${GLIB_INCLUDE_DIRS} ${LIBSOUP_INCLUDE_DIRS} @@ -9590,7 +9616,7 @@ index 1ec0ba4a8d80e1a2a7b0fd283b49985d5566667f..c48a2b9b0051f95668afb774c53e1b23 Cairo::Cairo Freetype::Freetype diff --git a/Source/WebKit/PlatformWin.cmake b/Source/WebKit/PlatformWin.cmake -index f78d51303c31e8ad71807f3d6ed64f2148e9e8d1..adfbfff6bf20919c84c229bfd5c64382edd44e32 100644 +index 36458208fbb6dfc50764f9f4a166011f2ab921ca..d00a1b80deb8600d63be99097bde7088dc0ee0ad 100644 --- a/Source/WebKit/PlatformWin.cmake +++ b/Source/WebKit/PlatformWin.cmake @@ -4,6 +4,8 @@ set(NetworkProcess_OUTPUT_NAME WebKitNetworkProcess) @@ -9602,7 +9628,7 @@ index f78d51303c31e8ad71807f3d6ed64f2148e9e8d1..adfbfff6bf20919c84c229bfd5c64382 include(Headers.cmake) list(APPEND WebKit_SOURCES -@@ -62,8 +64,12 @@ list(APPEND WebKit_SOURCES +@@ -89,8 +91,12 @@ list(APPEND WebKit_SOURCES UIProcess/wc/DrawingAreaProxyWC.cpp @@ -9615,18 +9641,21 @@ index f78d51303c31e8ad71807f3d6ed64f2148e9e8d1..adfbfff6bf20919c84c229bfd5c64382 UIProcess/win/WebPageProxyWin.cpp UIProcess/win/WebPopupMenuProxyWin.cpp UIProcess/win/WebProcessPoolWin.cpp -@@ -82,6 +88,7 @@ list(APPEND WebKit_SOURCES - WebProcess/MediaCache/WebMediaKeyStorageManager.cpp +@@ -111,6 +117,7 @@ list(APPEND WebKit_SOURCES + WebProcess/WebCoreSupport/curl/WebFrameNetworkingContext.cpp WebProcess/WebCoreSupport/win/WebPopupMenuWin.cpp + WebProcess/WebCoreSupport/win/WebDragClientWin.cpp WebProcess/WebPage/AcceleratedSurface.cpp -@@ -136,6 +143,72 @@ list(APPEND WebKit_MESSAGES_IN_FILES - GPUProcess/graphics/wc/RemoteWCLayerTreeHost - ) +@@ -171,7 +178,74 @@ list(APPEND WebKit_MESSAGES_IN_FILES + list(APPEND WebKit_PRIVATE_LIBRARIES + comctl32 ++ ${LIBVPX_CUSTOM_LIBRARY} ++) ++ +# Playwright begin +list(APPEND WebKit_SYSTEM_INCLUDE_DIRECTORIES + "${THIRDPARTY_DIR}/libwebrtc/Source/third_party/libyuv/include" @@ -9690,20 +9719,11 @@ index f78d51303c31e8ad71807f3d6ed64f2148e9e8d1..adfbfff6bf20919c84c229bfd5c64382 + "${THIRDPARTY_DIR}/libwebrtc/Source/third_party/libyuv/source/scale_uv.cc" + "${THIRDPARTY_DIR}/libwebrtc/Source/third_party/libyuv/source/scale_win.cc" + "${THIRDPARTY_DIR}/libwebrtc/Source/third_party/libyuv/source/video_common.cc" -+) + ) +# Playwright end -+ - set(WebKitCommonIncludeDirectories ${WebKit_INCLUDE_DIRECTORIES}) - set(WebKitCommonSystemIncludeDirectories ${WebKit_SYSTEM_INCLUDE_DIRECTORIES}) - -@@ -193,6 +266,7 @@ if (${WTF_PLATFORM_WIN_CAIRO}) - - list(APPEND WebKit_PRIVATE_LIBRARIES - comctl32 -+ ${LIBVPX_CUSTOM_LIBRARY} - ) - endif () + list(APPEND WebProcess_SOURCES + WebProcess/EntryPoint/win/WebProcessMain.cpp diff --git a/Source/WebKit/Shared/API/c/wpe/WebKit.h b/Source/WebKit/Shared/API/c/wpe/WebKit.h index caf67e1dece5b727e43eba780e70814f8fdb0f63..740150d2589d6e16a516daa3bf6ef899ac538c99 100644 --- a/Source/WebKit/Shared/API/c/wpe/WebKit.h @@ -9717,7 +9737,7 @@ index caf67e1dece5b727e43eba780e70814f8fdb0f63..740150d2589d6e16a516daa3bf6ef899 #include #include diff --git a/Source/WebKit/Shared/NativeWebKeyboardEvent.h b/Source/WebKit/Shared/NativeWebKeyboardEvent.h -index 81f1e954237a1632cb9481e78a52eeea034ee6a8..d34963331605ea4c89b68016768d66c4961ac2a7 100644 +index 7164af8d347828ba80bcb52fd6ca814401157f2b..9ba0e32717d9b4cb01f3f43898aa402ad0bd6913 100644 --- a/Source/WebKit/Shared/NativeWebKeyboardEvent.h +++ b/Source/WebKit/Shared/NativeWebKeyboardEvent.h @@ -33,6 +33,7 @@ @@ -9738,9 +9758,9 @@ index 81f1e954237a1632cb9481e78a52eeea034ee6a8..d34963331605ea4c89b68016768d66c4 + } #elif PLATFORM(GTK) NativeWebKeyboardEvent(const NativeWebKeyboardEvent&); - NativeWebKeyboardEvent(GdkEvent*, const String&, Vector&& commands); + NativeWebKeyboardEvent(GdkEvent*, const String&, bool isAutoRepeat, Vector&& commands); NativeWebKeyboardEvent(const String&, std::optional>&&, std::optional&&); - NativeWebKeyboardEvent(WebEventType, const String& text, const String& key, const String& code, const String& keyIdentifier, int windowsVirtualKeyCode, int nativeVirtualKeyCode, Vector&& commands, bool isKeypad, OptionSet); + NativeWebKeyboardEvent(WebEventType, const String& text, const String& key, const String& code, const String& keyIdentifier, int windowsVirtualKeyCode, int nativeVirtualKeyCode, Vector&& commands, bool isAutoRepeat, bool isKeypad, OptionSet); + NativeWebKeyboardEvent(WebEventType type, const String& text, const String& unmodifiedText, const String& key, const String& code, const String& keyIdentifier, int windowsVirtualKeyCode, int nativeVirtualKeyCode, bool isAutoRepeat, bool isKeypad, bool isSystemKey, OptionSet modifiers, WallTime timestamp, Vector&& commands) + : WebKeyboardEvent(type, text, unmodifiedText, key, code, keyIdentifier, windowsVirtualKeyCode, nativeVirtualKeyCode, isAutoRepeat, isKeypad, isSystemKey, modifiers, timestamp, WTFMove(commands)) + { @@ -9750,7 +9770,7 @@ index 81f1e954237a1632cb9481e78a52eeea034ee6a8..d34963331605ea4c89b68016768d66c4 NativeWebKeyboardEvent(::WebEvent *, HandledByInputMethod); #elif USE(LIBWPE) enum class HandledByInputMethod : bool { No, Yes }; - NativeWebKeyboardEvent(struct wpe_input_keyboard_event*, const String&, HandledByInputMethod, std::optional>&&, std::optional&&); + NativeWebKeyboardEvent(struct wpe_input_keyboard_event*, const String&, bool isAutoRepeat, HandledByInputMethod, std::optional>&&, std::optional&&); + NativeWebKeyboardEvent(WebEventType type, const String& text, const String& unmodifiedText, const String& key, const String& code, const String& keyIdentifier, int windowsVirtualKeyCode, int nativeVirtualKeyCode, bool isAutoRepeat, bool isKeypad, bool isSystemKey, OptionSet modifiers, WallTime timestamp) + : WebKeyboardEvent(type, text, unmodifiedText, key, code, keyIdentifier, windowsVirtualKeyCode, nativeVirtualKeyCode, isAutoRepeat, isKeypad, isSystemKey, modifiers, timestamp) + { @@ -9795,7 +9815,7 @@ index d294b46e3ca59de0aa5898db488ade26ccc47f2e..5e50be35ac39c22669d589e0a4a7fc15 NSEvent* nativeEvent() const { return m_nativeEvent.get(); } #elif PLATFORM(GTK) diff --git a/Source/WebKit/Shared/Pasteboard.serialization.in b/Source/WebKit/Shared/Pasteboard.serialization.in -index 08167501bf88fdcae7828ff0e81d702b037ef1af..bae42c6065adfc3d318b6f5362286f647c8d945b 100644 +index 72ad2880160a374e8fa663e561d59becf9d2f36d..372ae6953199245fe4fc55a49813c7cae868f8b3 100644 --- a/Source/WebKit/Shared/Pasteboard.serialization.in +++ b/Source/WebKit/Shared/Pasteboard.serialization.in @@ -75,7 +75,7 @@ header: @@ -9820,10 +9840,10 @@ index 8b8223a49829fd2c0a325519881d6878f8c3f2b5..7e1cc65fecf18e0f71166c99f2242941 ALLOW_COMMA_BEGIN diff --git a/Source/WebKit/Shared/WebCoreArgumentCoders.cpp b/Source/WebKit/Shared/WebCoreArgumentCoders.cpp -index 72202c50ab8d40045883ce27bb71daa2afebbcba..27d96ae419eee65018823a72f89bb10d9c5f4fd3 100644 +index a904376ed6288f441a45c2d90dc25ff15fe00b4e..d0c74ea56c4f1a6c161412d763c8d54a4f622c78 100644 --- a/Source/WebKit/Shared/WebCoreArgumentCoders.cpp +++ b/Source/WebKit/Shared/WebCoreArgumentCoders.cpp -@@ -193,6 +193,10 @@ +@@ -192,6 +192,10 @@ #include #endif @@ -9835,10 +9855,10 @@ index 72202c50ab8d40045883ce27bb71daa2afebbcba..27d96ae419eee65018823a72f89bb10d namespace IPC { diff --git a/Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in b/Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in -index 9505c35067b40fe8d034fa64a0ebbec2afb417d8..136d0218285eda2b58dccd821f74bf9606ee69a1 100644 +index c0f05346467f628439fc918875793de4b9e7967f..0a3cbe58b424a8bcd04a742b4d060511b03cf58c 100644 --- a/Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in +++ b/Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in -@@ -1372,6 +1372,10 @@ struct WebCore::WindowFeatures { +@@ -1382,6 +1382,10 @@ struct WebCore::WindowFeatures { bool fullscreen; bool dialog; @@ -9849,7 +9869,7 @@ index 9505c35067b40fe8d034fa64a0ebbec2afb417d8..136d0218285eda2b58dccd821f74bf96 }; [Nested] enum class WebCore::CompositionUnderlineColor : bool -@@ -1828,6 +1832,9 @@ class WebCore::AuthenticationChallenge { +@@ -1833,6 +1837,9 @@ class WebCore::AuthenticationChallenge { class WebCore::DragData { #if PLATFORM(COCOA) String pasteboardName(); @@ -9859,7 +9879,7 @@ index 9505c35067b40fe8d034fa64a0ebbec2afb417d8..136d0218285eda2b58dccd821f74bf96 #endif WebCore::IntPoint clientPosition(); WebCore::IntPoint globalPosition(); -@@ -2325,6 +2332,7 @@ enum class WebCore::ResourceLoadPriority : uint8_t { +@@ -2334,6 +2341,7 @@ enum class WebCore::ResourceLoadPriority : uint8_t { AtomString m_httpStatusText; AtomString m_httpVersion; WebCore::HTTPHeaderMap m_httpHeaderFields; @@ -9868,7 +9888,7 @@ index 9505c35067b40fe8d034fa64a0ebbec2afb417d8..136d0218285eda2b58dccd821f74bf96 short m_httpStatusCode; diff --git a/Source/WebKit/Shared/WebEvent.h b/Source/WebKit/Shared/WebEvent.h -index ed7111a107f658ee48a2f15e8e415856658a35a6..a6ed71b714a471fb363795cfb5f05b72d39706a3 100644 +index f1d40766987ef6c0fb2d880548826b31421ffe12..e6c79718e6730ff88181b4c8b70abe5b63873590 100644 --- a/Source/WebKit/Shared/WebEvent.h +++ b/Source/WebKit/Shared/WebEvent.h @@ -34,6 +34,7 @@ @@ -9876,25 +9896,11 @@ index ed7111a107f658ee48a2f15e8e415856658a35a6..a6ed71b714a471fb363795cfb5f05b72 #include #include +#include + #include #include #include - -diff --git a/Source/WebKit/Shared/WebEvent.serialization.in b/Source/WebKit/Shared/WebEvent.serialization.in -index e9232c2e15929c598f2f9cadd5dc11cb292a3f5d..4fe7dda4a7a2197e4e2b4e43fd4692d9dd4ad474 100644 ---- a/Source/WebKit/Shared/WebEvent.serialization.in -+++ b/Source/WebKit/Shared/WebEvent.serialization.in -@@ -86,9 +86,7 @@ class WebKit::WebKeyboardEvent : WebKit::WebEvent { - #if !USE(APPKIT) && PLATFORM(GTK) - Vector commands(); - #endif --#if !PLATFORM(GTK) && !USE(LIBWPE) - bool isAutoRepeat(); --#endif - bool isKeypad(); - #if !PLATFORM(GTK) && !USE(LIBWPE) - bool isSystemKey(); diff --git a/Source/WebKit/Shared/WebKeyboardEvent.cpp b/Source/WebKit/Shared/WebKeyboardEvent.cpp -index 73cf481519fadb80efc84baaac22c4002a47a429..17d9d5461ae47a122160f10b7fdcb662f06bea7a 100644 +index a80efd294086ea1bd3b1e9dc805491ff5230962f..17d9d5461ae47a122160f10b7fdcb662f06bea7a 100644 --- a/Source/WebKit/Shared/WebKeyboardEvent.cpp +++ b/Source/WebKit/Shared/WebKeyboardEvent.cpp @@ -35,6 +35,7 @@ WebKeyboardEvent::WebKeyboardEvent() @@ -9905,7 +9911,7 @@ index 73cf481519fadb80efc84baaac22c4002a47a429..17d9d5461ae47a122160f10b7fdcb662 #if USE(APPKIT) WebKeyboardEvent::WebKeyboardEvent(WebEvent&& event, const String& text, const String& unmodifiedText, const String& key, const String& code, const String& keyIdentifier, int windowsVirtualKeyCode, int nativeVirtualKeyCode, int macCharCode, bool handledByInputMethod, const Vector& commands, bool isAutoRepeat, bool isKeypad, bool isSystemKey) -@@ -56,9 +57,27 @@ WebKeyboardEvent::WebKeyboardEvent(WebEvent&& event, const String& text, const S +@@ -56,6 +57,24 @@ WebKeyboardEvent::WebKeyboardEvent(WebEvent&& event, const String& text, const S ASSERT(isKeyboardEventType(type())); } @@ -9929,20 +9935,8 @@ index 73cf481519fadb80efc84baaac22c4002a47a429..17d9d5461ae47a122160f10b7fdcb662 + #elif PLATFORM(GTK) --WebKeyboardEvent::WebKeyboardEvent(WebEvent&& event, const String& text, const String& key, const String& code, const String& keyIdentifier, int windowsVirtualKeyCode, int nativeVirtualKeyCode, bool handledByInputMethod, std::optional>&& preeditUnderlines, std::optional&& preeditSelectionRange, Vector&& commands, bool isKeypad) -+WebKeyboardEvent::WebKeyboardEvent(WebEvent&& event, const String& text, const String& key, const String& code, const String& keyIdentifier, int windowsVirtualKeyCode, int nativeVirtualKeyCode, bool handledByInputMethod, std::optional>&& preeditUnderlines, std::optional&& preeditSelectionRange, Vector&& commands, bool isAutoRepeat, bool isKeypad) - : WebEvent(WTFMove(event)) - , m_text(text) - , m_unmodifiedText(text) -@@ -72,13 +91,31 @@ WebKeyboardEvent::WebKeyboardEvent(WebEvent&& event, const String& text, const S - , m_preeditUnderlines(WTFMove(preeditUnderlines)) - , m_preeditSelectionRange(WTFMove(preeditSelectionRange)) - , m_commands(WTFMove(commands)) -- , m_isAutoRepeat(false) -+ , m_isAutoRepeat(isAutoRepeat) - , m_isKeypad(isKeypad) - , m_isSystemKey(false) - { + WebKeyboardEvent::WebKeyboardEvent(WebEvent&& event, const String& text, const String& key, const String& code, const String& keyIdentifier, int windowsVirtualKeyCode, int nativeVirtualKeyCode, bool handledByInputMethod, std::optional>&& preeditUnderlines, std::optional&& preeditSelectionRange, Vector&& commands, bool isAutoRepeat, bool isKeypad) +@@ -79,6 +98,24 @@ WebKeyboardEvent::WebKeyboardEvent(WebEvent&& event, const String& text, const S ASSERT(isKeyboardEventType(type())); } @@ -9967,24 +9961,6 @@ index 73cf481519fadb80efc84baaac22c4002a47a429..17d9d5461ae47a122160f10b7fdcb662 #elif PLATFORM(IOS_FAMILY) WebKeyboardEvent::WebKeyboardEvent(WebEvent&& event, const String& text, const String& unmodifiedText, const String& key, const String& code, const String& keyIdentifier, int windowsVirtualKeyCode, int nativeVirtualKeyCode, int macCharCode, bool handledByInputMethod, bool isAutoRepeat, bool isKeypad, bool isSystemKey) -@@ -101,7 +138,7 @@ WebKeyboardEvent::WebKeyboardEvent(WebEvent&& event, const String& text, const S - - #elif USE(LIBWPE) - --WebKeyboardEvent::WebKeyboardEvent(WebEvent&& event, const String& text, const String& key, const String& code, const String& keyIdentifier, int windowsVirtualKeyCode, int nativeVirtualKeyCode, bool handledByInputMethod, std::optional>&& preeditUnderlines, std::optional&& preeditSelectionRange, bool isKeypad) -+WebKeyboardEvent::WebKeyboardEvent(WebEvent&& event, const String& text, const String& key, const String& code, const String& keyIdentifier, int windowsVirtualKeyCode, int nativeVirtualKeyCode, bool handledByInputMethod, std::optional>&& preeditUnderlines, std::optional&& preeditSelectionRange, bool isAutoRepeat, bool isKeypad) - : WebEvent(WTFMove(event)) - , m_text(text) - , m_unmodifiedText(text) -@@ -114,7 +151,7 @@ WebKeyboardEvent::WebKeyboardEvent(WebEvent&& event, const String& text, const S - , m_handledByInputMethod(handledByInputMethod) - , m_preeditUnderlines(WTFMove(preeditUnderlines)) - , m_preeditSelectionRange(WTFMove(preeditSelectionRange)) -- , m_isAutoRepeat(false) -+ , m_isAutoRepeat(isAutoRepeat) - , m_isKeypad(isKeypad) - , m_isSystemKey(false) - { @@ -142,6 +179,27 @@ WebKeyboardEvent::WebKeyboardEvent(WebEvent&& event, const String& text, const S #endif @@ -10014,7 +9990,7 @@ index 73cf481519fadb80efc84baaac22c4002a47a429..17d9d5461ae47a122160f10b7fdcb662 { } diff --git a/Source/WebKit/Shared/WebKeyboardEvent.h b/Source/WebKit/Shared/WebKeyboardEvent.h -index bafe631e1b4241e88ec184944053be0e6516a6cc..5e46313982ef4f5421a71c0c89faa05318e3436e 100644 +index 7840e34e303873e771150f242f57e621ebbb78a3..c3cea2e0506bcf5c25815b06d35dbdb5dc58edb7 100644 --- a/Source/WebKit/Shared/WebKeyboardEvent.h +++ b/Source/WebKit/Shared/WebKeyboardEvent.h @@ -43,14 +43,18 @@ public: @@ -10023,14 +9999,12 @@ index bafe631e1b4241e88ec184944053be0e6516a6cc..5e46313982ef4f5421a71c0c89faa053 WebKeyboardEvent(WebEvent&&, const String& text, const String& unmodifiedText, const String& key, const String& code, const String& keyIdentifier, int windowsVirtualKeyCode, int nativeVirtualKeyCode, int macCharCode, bool handledByInputMethod, const Vector&, bool isAutoRepeat, bool isKeypad, bool isSystemKey); + WebKeyboardEvent(WebEventType, const String& text, const String& unmodifiedText, const String& key, const String& code, const String& keyIdentifier, int windowsVirtualKeyCode, int nativeVirtualKeyCode, bool isAutoRepeat, bool isKeypad, bool isSystemKey, OptionSet, WallTime timestamp, Vector&& commands); #elif PLATFORM(GTK) -- WebKeyboardEvent(WebEvent&&, const String& text, const String& key, const String& code, const String& keyIdentifier, int windowsVirtualKeyCode, int nativeVirtualKeyCode, bool handledByInputMethod, std::optional>&&, std::optional&&, Vector&& commands, bool isKeypad); -+ WebKeyboardEvent(WebEvent&&, const String& text, const String& key, const String& code, const String& keyIdentifier, int windowsVirtualKeyCode, int nativeVirtualKeyCode, bool handledByInputMethod, std::optional>&&, std::optional&&, Vector&& commands, bool isAutoRepeat, bool isKeypad); + WebKeyboardEvent(WebEvent&&, const String& text, const String& key, const String& code, const String& keyIdentifier, int windowsVirtualKeyCode, int nativeVirtualKeyCode, bool handledByInputMethod, std::optional>&&, std::optional&&, Vector&& commands, bool isAutoRepeat, bool isKeypad); + WebKeyboardEvent(WebEventType, const String& text, const String& unmodifiedText, const String& key, const String& code, const String& keyIdentifier, int windowsVirtualKeyCode, int nativeVirtualKeyCode, bool isAutoRepeat, bool isKeypad, bool isSystemKey, OptionSet, WallTime timestamp, Vector&& commands); #elif PLATFORM(IOS_FAMILY) WebKeyboardEvent(WebEvent&&, const String& text, const String& unmodifiedText, const String& key, const String& code, const String& keyIdentifier, int windowsVirtualKeyCode, int nativeVirtualKeyCode, int macCharCode, bool handledByInputMethod, bool isAutoRepeat, bool isKeypad, bool isSystemKey); #elif USE(LIBWPE) -- WebKeyboardEvent(WebEvent&&, const String& text, const String& key, const String& code, const String& keyIdentifier, int windowsVirtualKeyCode, int nativeVirtualKeyCode, bool handledByInputMethod, std::optional>&&, std::optional&&, bool isKeypad); -+ WebKeyboardEvent(WebEvent&&, const String& text, const String& key, const String& code, const String& keyIdentifier, int windowsVirtualKeyCode, int nativeVirtualKeyCode, bool handledByInputMethod, std::optional>&&, std::optional&&, bool isAutoRepeat, bool isKeypad); + WebKeyboardEvent(WebEvent&&, const String& text, const String& key, const String& code, const String& keyIdentifier, int windowsVirtualKeyCode, int nativeVirtualKeyCode, bool handledByInputMethod, std::optional>&&, std::optional&&, bool isAutoRepeat, bool isKeypad); + WebKeyboardEvent(WebEventType, const String& text, const String& unmodifiedText, const String& key, const String& code, const String& keyIdentifier, int windowsVirtualKeyCode, int nativeVirtualKeyCode, bool isAutoRepeat, bool isKeypad, bool isSystemKey, OptionSet, WallTime timestamp); #else WebKeyboardEvent(WebEvent&&, const String& text, const String& unmodifiedText, const String& key, const String& code, const String& keyIdentifier, int windowsVirtualKeyCode, int nativeVirtualKeyCode, int macCharCode, bool isAutoRepeat, bool isKeypad, bool isSystemKey); @@ -10051,7 +10025,7 @@ index a7862db2df45ac3ab8ba5c7dee7d9d0c5641c27b..149d8cc4ef277ebdfc3bb27be7d52f5c const WebCore::IntPoint& globalPosition() const { return m_globalPosition; } float deltaX() const { return m_deltaX; } diff --git a/Source/WebKit/Shared/WebPageCreationParameters.cpp b/Source/WebKit/Shared/WebPageCreationParameters.cpp -index 1f2dc399c63a1cce7f52fe52bcd92aab5fdb4d77..583fd1e9467790049535614a6fb221f683823746 100644 +index a690d3278b3a21c138ab13a644dcaaf5c482ed90..0b98909a1f722b0373d4962f57d9a88eefae99ce 100644 --- a/Source/WebKit/Shared/WebPageCreationParameters.cpp +++ b/Source/WebKit/Shared/WebPageCreationParameters.cpp @@ -159,6 +159,8 @@ void WebPageCreationParameters::encode(IPC::Encoder& encoder) const @@ -10063,7 +10037,7 @@ index 1f2dc399c63a1cce7f52fe52bcd92aab5fdb4d77..583fd1e9467790049535614a6fb221f6 encoder << shouldCaptureAudioInUIProcess; encoder << shouldCaptureAudioInGPUProcess; encoder << shouldCaptureVideoInUIProcess; -@@ -561,7 +563,10 @@ std::optional WebPageCreationParameters::decode(IPC:: +@@ -563,7 +565,10 @@ std::optional WebPageCreationParameters::decode(IPC:: if (!processDisplayName) return std::nullopt; parameters.processDisplayName = WTFMove(*processDisplayName); @@ -10076,10 +10050,10 @@ index 1f2dc399c63a1cce7f52fe52bcd92aab5fdb4d77..583fd1e9467790049535614a6fb221f6 return std::nullopt; diff --git a/Source/WebKit/Shared/WebPageCreationParameters.h b/Source/WebKit/Shared/WebPageCreationParameters.h -index 26198d569e94de3ebe77339fa19eb5dec4e9a50e..759e5362cbc93add21aa26372f93c15a4d407b6f 100644 +index fa7bcd79595495471f70f9f9fce57ae1ed0125b4..a865a33f033c53ac994de1587d5ad98d0f982fbc 100644 --- a/Source/WebKit/Shared/WebPageCreationParameters.h +++ b/Source/WebKit/Shared/WebPageCreationParameters.h -@@ -268,6 +268,8 @@ struct WebPageCreationParameters { +@@ -270,6 +270,8 @@ struct WebPageCreationParameters { bool httpsUpgradeEnabled { true }; @@ -10089,26 +10063,20 @@ index 26198d569e94de3ebe77339fa19eb5dec4e9a50e..759e5362cbc93add21aa26372f93c15a bool allowsDeprecatedSynchronousXMLHttpRequestDuringUnload { false }; #endif diff --git a/Source/WebKit/Shared/gtk/NativeWebKeyboardEventGtk.cpp b/Source/WebKit/Shared/gtk/NativeWebKeyboardEventGtk.cpp -index 846e5176c314343df27ee8209fb0283f8ce920e9..1d7a93f67a7951890c2385ef1834ffe34d6cf598 100644 +index 8d33ceb065fb3e90372b0c696779189d07838da0..6e3194c3e96e46bfa09f8d706324e6515df1e7f4 100644 --- a/Source/WebKit/Shared/gtk/NativeWebKeyboardEventGtk.cpp +++ b/Source/WebKit/Shared/gtk/NativeWebKeyboardEventGtk.cpp -@@ -46,17 +46,17 @@ NativeWebKeyboardEvent::NativeWebKeyboardEvent(GdkEvent* event, const String& te +@@ -51,12 +51,12 @@ NativeWebKeyboardEvent::NativeWebKeyboardEvent(const String& text, std::optional } - NativeWebKeyboardEvent::NativeWebKeyboardEvent(const String& text, std::optional>&& preeditUnderlines, std::optional&& preeditSelectionRange) -- : WebKeyboardEvent(WebEvent(WebEventType::KeyDown, { }, WallTime::now()), text, "Unidentified"_s, "Unidentified"_s, "U+0000"_s, 229, GDK_KEY_VoidSymbol, true, WTFMove(preeditUnderlines), WTFMove(preeditSelectionRange), { }, false) -+ : WebKeyboardEvent(WebEvent(WebEventType::KeyDown, { }, WallTime::now()), text, "Unidentified"_s, "Unidentified"_s, "U+0000"_s, 229, GDK_KEY_VoidSymbol, true, WTFMove(preeditUnderlines), WTFMove(preeditSelectionRange), { }, false, false) - { - } - - NativeWebKeyboardEvent::NativeWebKeyboardEvent(WebEventType type, const String& text, const String& key, const String& code, const String& keyIdentifier, int windowsVirtualKeyCode, int nativeVirtualKeyCode, Vector&& commands, bool isKeypad, OptionSet modifiers) -- : WebKeyboardEvent(WebEvent(type, modifiers, WallTime::now()), text, key, code, keyIdentifier, windowsVirtualKeyCode, nativeVirtualKeyCode, false, std::nullopt, std::nullopt, WTFMove(commands), isKeypad) + NativeWebKeyboardEvent::NativeWebKeyboardEvent(WebEventType type, const String& text, const String& key, const String& code, const String& keyIdentifier, int windowsVirtualKeyCode, int nativeVirtualKeyCode, Vector&& commands, bool isAutoRepeat, bool isKeypad, OptionSet modifiers) +- : WebKeyboardEvent(WebEvent(type, modifiers, WallTime::now()), text, key, code, keyIdentifier, windowsVirtualKeyCode, nativeVirtualKeyCode, false, std::nullopt, std::nullopt, WTFMove(commands), isAutoRepeat, isKeypad) + : WebKeyboardEvent(WebEvent(type, modifiers, WallTime::now()), text, key, code, keyIdentifier, windowsVirtualKeyCode, nativeVirtualKeyCode, false, std::nullopt, std::nullopt, WTFMove(commands), false, isKeypad) { } NativeWebKeyboardEvent::NativeWebKeyboardEvent(const NativeWebKeyboardEvent& event) -- : WebKeyboardEvent(WebEvent(event.type(), event.modifiers(), event.timestamp()), event.text(), event.key(), event.code(), event.keyIdentifier(), event.windowsVirtualKeyCode(), event.nativeVirtualKeyCode(), event.handledByInputMethod(), std::optional>(event.preeditUnderlines()), std::optional(event.preeditSelectionRange()), Vector(event.commands()), event.isKeypad()) +- : WebKeyboardEvent(WebEvent(event.type(), event.modifiers(), event.timestamp()), event.text(), event.key(), event.code(), event.keyIdentifier(), event.windowsVirtualKeyCode(), event.nativeVirtualKeyCode(), event.handledByInputMethod(), std::optional>(event.preeditUnderlines()), std::optional(event.preeditSelectionRange()), Vector(event.commands()), event.isAutoRepeat(), event.isKeypad()) + : WebKeyboardEvent(event) , m_nativeEvent(event.nativeEvent() ? constructNativeEvent(event.nativeEvent()) : nullptr) { @@ -10126,18 +10094,6 @@ index 9a1c3f09c756ea368ac2d68e183a13e2eb47ead7..01c738376230f83376d80d6d225543a3 , m_nativeEvent(event.nativeEvent() ? constructNativeEvent(const_cast(event.nativeEvent())) : nullptr) { } -diff --git a/Source/WebKit/Shared/gtk/WebEventFactory.cpp b/Source/WebKit/Shared/gtk/WebEventFactory.cpp -index b460609625914ae604de00ca844a503bcdcbef91..196aed25218e33b33a5d6a857aa9f9a9dd96bff0 100644 ---- a/Source/WebKit/Shared/gtk/WebEventFactory.cpp -+++ b/Source/WebKit/Shared/gtk/WebEventFactory.cpp -@@ -369,6 +369,7 @@ WebKeyboardEvent WebEventFactory::createWebKeyboardEvent(const GdkEvent* event, - WTFMove(preeditUnderlines), - WTFMove(preeditSelectionRange), - WTFMove(commands), -+ false, - isGdkKeyCodeFromKeyPad(keyval) - ); - } diff --git a/Source/WebKit/Shared/ios/WebPlatformTouchPointIOS.cpp b/Source/WebKit/Shared/ios/WebPlatformTouchPointIOS.cpp index 03e118154f6bb5b704b4ecb83d3d9543f8c5a5fa..9725caaac6ee65a96ea324ddbb4e1a3785bbc028 100644 --- a/Source/WebKit/Shared/ios/WebPlatformTouchPointIOS.cpp @@ -10381,18 +10337,6 @@ index 0000000000000000000000000000000000000000..789a0d7cf69704c8f665a9ed79348fbc +}; + +} // namespace IPC -diff --git a/Source/WebKit/Shared/libwpe/WebEventFactory.cpp b/Source/WebKit/Shared/libwpe/WebEventFactory.cpp -index 053cc52f28c6b39446a36c2d44f7b5479f5dfb10..8d3960002e245c1786fd4300de502a2f63599b38 100644 ---- a/Source/WebKit/Shared/libwpe/WebEventFactory.cpp -+++ b/Source/WebKit/Shared/libwpe/WebEventFactory.cpp -@@ -125,6 +125,7 @@ WebKeyboardEvent WebEventFactory::createWebKeyboardEvent(struct wpe_input_keyboa - handledByInputMethod, - WTFMove(preeditUnderlines), - WTFMove(preeditSelectionRange), -+ false, - isWPEKeyCodeFromKeyPad(event->key_code) - ); - } diff --git a/Source/WebKit/Shared/win/WebEventFactory.cpp b/Source/WebKit/Shared/win/WebEventFactory.cpp index bb3a9f57582b1d7ebe5829c379cc8b288415937d..ede3dbadb38578bdaecb9caad351b1573c7ac50e 100644 --- a/Source/WebKit/Shared/win/WebEventFactory.cpp @@ -10407,10 +10351,10 @@ index bb3a9f57582b1d7ebe5829c379cc8b288415937d..ede3dbadb38578bdaecb9caad351b157 return WebTouchEvent(); } diff --git a/Source/WebKit/Sources.txt b/Source/WebKit/Sources.txt -index b885199fcee0ff8f3c25c47e0b4622466d2cf87c..09318deaed9d69970e36e20b38b436488ce05862 100644 +index f53bb1dc917334f0b3e77c835e52304e8c6798ee..df0e24dff2aef9d8d747af05032a71e4e52f8135 100644 --- a/Source/WebKit/Sources.txt +++ b/Source/WebKit/Sources.txt -@@ -378,11 +378,14 @@ Shared/XR/XRDeviceProxy.cpp +@@ -382,11 +382,14 @@ Shared/XR/XRDeviceProxy.cpp UIProcess/AuxiliaryProcessProxy.cpp UIProcess/BackgroundProcessResponsivenessTimer.cpp @@ -10425,7 +10369,7 @@ index b885199fcee0ff8f3c25c47e0b4622466d2cf87c..09318deaed9d69970e36e20b38b43648 UIProcess/LegacyGlobalSettings.cpp UIProcess/MediaKeySystemPermissionRequestManagerProxy.cpp UIProcess/MediaKeySystemPermissionRequestProxy.cpp -@@ -393,6 +396,7 @@ UIProcess/ProcessAssertion.cpp +@@ -397,6 +400,7 @@ UIProcess/ProcessAssertion.cpp UIProcess/ProcessThrottler.cpp UIProcess/ProvisionalFrameProxy.cpp UIProcess/ProvisionalPageProxy.cpp @@ -10433,7 +10377,7 @@ index b885199fcee0ff8f3c25c47e0b4622466d2cf87c..09318deaed9d69970e36e20b38b43648 UIProcess/ResponsivenessTimer.cpp UIProcess/SpeechRecognitionRemoteRealtimeMediaSource.cpp UIProcess/SpeechRecognitionRemoteRealtimeMediaSourceManager.cpp -@@ -435,6 +439,8 @@ UIProcess/WebOpenPanelResultListenerProxy.cpp +@@ -439,6 +443,8 @@ UIProcess/WebOpenPanelResultListenerProxy.cpp UIProcess/WebPageDiagnosticLoggingClient.cpp UIProcess/WebPageGroup.cpp UIProcess/WebPageInjectedBundleClient.cpp @@ -10442,7 +10386,7 @@ index b885199fcee0ff8f3c25c47e0b4622466d2cf87c..09318deaed9d69970e36e20b38b43648 UIProcess/WebPageProxy.cpp UIProcess/WebPasteboardProxy.cpp UIProcess/WebPermissionControllerProxy.cpp -@@ -564,7 +570,11 @@ UIProcess/Inspector/WebInspectorUtilities.cpp +@@ -568,7 +574,11 @@ UIProcess/Inspector/WebInspectorUtilities.cpp UIProcess/Inspector/WebPageDebuggable.cpp UIProcess/Inspector/WebPageInspectorController.cpp @@ -10455,10 +10399,10 @@ index b885199fcee0ff8f3c25c47e0b4622466d2cf87c..09318deaed9d69970e36e20b38b43648 UIProcess/Media/AudioSessionRoutingArbitratorProxy.cpp UIProcess/Media/MediaUsageManager.cpp diff --git a/Source/WebKit/SourcesCocoa.txt b/Source/WebKit/SourcesCocoa.txt -index 505f4acc70f1c1dbe53adf24b90cb34757483320..6cbcbb3d4620a007977e840cdffd0d2d9ba2ecab 100644 +index c69f1edc7309544b95ea1d130346f4c4833564de..33bf48713c5bdb6da512f2b0c816edc269939dd0 100644 --- a/Source/WebKit/SourcesCocoa.txt +++ b/Source/WebKit/SourcesCocoa.txt -@@ -259,6 +259,7 @@ UIProcess/API/Cocoa/_WKApplicationManifest.mm +@@ -260,6 +260,7 @@ UIProcess/API/Cocoa/_WKApplicationManifest.mm UIProcess/API/Cocoa/_WKAttachment.mm UIProcess/API/Cocoa/_WKAutomationSession.mm UIProcess/API/Cocoa/_WKAutomationSessionConfiguration.mm @@ -10466,7 +10410,7 @@ index 505f4acc70f1c1dbe53adf24b90cb34757483320..6cbcbb3d4620a007977e840cdffd0d2d UIProcess/API/Cocoa/_WKContentRuleListAction.mm UIProcess/API/Cocoa/_WKContextMenuElementInfo.mm UIProcess/API/Cocoa/_WKCustomHeaderFields.mm @no-unify -@@ -436,6 +437,7 @@ UIProcess/Inspector/ios/WKInspectorHighlightView.mm +@@ -437,6 +438,7 @@ UIProcess/Inspector/ios/WKInspectorHighlightView.mm UIProcess/Inspector/ios/WKInspectorNodeSearchGestureRecognizer.mm UIProcess/Inspector/mac/RemoteWebInspectorUIProxyMac.mm @@ -10475,10 +10419,10 @@ index 505f4acc70f1c1dbe53adf24b90cb34757483320..6cbcbb3d4620a007977e840cdffd0d2d UIProcess/Inspector/mac/WKInspectorResourceURLSchemeHandler.mm UIProcess/Inspector/mac/WKInspectorViewController.mm diff --git a/Source/WebKit/SourcesGTK.txt b/Source/WebKit/SourcesGTK.txt -index 040fb60692b6542f07845849e1b02f3f95d9c45f..182375712ad69f197baa2e6f6e862e4f5d500ef9 100644 +index bc3a817a8540118c9e10e466e4129227e6df169f..9f4ad8400990ea78cdf27957d3e5298b1a6a16b9 100644 --- a/Source/WebKit/SourcesGTK.txt +++ b/Source/WebKit/SourcesGTK.txt -@@ -130,6 +130,7 @@ UIProcess/API/glib/WebKitAuthenticationRequest.cpp @no-unify +@@ -132,6 +132,7 @@ UIProcess/API/glib/WebKitAuthenticationRequest.cpp @no-unify UIProcess/API/glib/WebKitAutomationSession.cpp @no-unify UIProcess/API/glib/WebKitBackForwardList.cpp @no-unify UIProcess/API/glib/WebKitBackForwardListItem.cpp @no-unify @@ -10486,7 +10430,7 @@ index 040fb60692b6542f07845849e1b02f3f95d9c45f..182375712ad69f197baa2e6f6e862e4f UIProcess/API/glib/WebKitContextMenuClient.cpp @no-unify UIProcess/API/glib/WebKitCookieManager.cpp @no-unify UIProcess/API/glib/WebKitCredential.cpp @no-unify -@@ -253,6 +254,7 @@ UIProcess/WebsiteData/unix/WebsiteDataStoreUnix.cpp +@@ -254,6 +255,7 @@ UIProcess/WebsiteData/soup/WebsiteDataStoreSoup.cpp UIProcess/cairo/BackingStoreCairo.cpp @no-unify @@ -10512,7 +10456,7 @@ index 040fb60692b6542f07845849e1b02f3f95d9c45f..182375712ad69f197baa2e6f6e862e4f UIProcess/gtk/WebPasteboardProxyGtk.cpp UIProcess/gtk/WebPopupMenuProxyGtk.cpp diff --git a/Source/WebKit/SourcesWPE.txt b/Source/WebKit/SourcesWPE.txt -index f005ec751b0bea47036500f8275dbcb58e6e2959..a03179043aed122068dcd29fbe266cecb4beae44 100644 +index 237f0919b5bbe1a1cb0b8415dfe3d70a6a848294..736c338e76f10a73fbbe2ee2359a3c8118cbd601 100644 --- a/Source/WebKit/SourcesWPE.txt +++ b/Source/WebKit/SourcesWPE.txt @@ -88,6 +88,7 @@ Shared/glib/ProcessExecutablePathGLib.cpp @@ -10523,7 +10467,7 @@ index f005ec751b0bea47036500f8275dbcb58e6e2959..a03179043aed122068dcd29fbe266cec Shared/libwpe/NativeWebKeyboardEventLibWPE.cpp Shared/libwpe/NativeWebMouseEventLibWPE.cpp Shared/libwpe/NativeWebTouchEventLibWPE.cpp -@@ -122,6 +123,7 @@ UIProcess/API/glib/WebKitAuthenticationRequest.cpp @no-unify +@@ -124,6 +125,7 @@ UIProcess/API/glib/WebKitAuthenticationRequest.cpp @no-unify UIProcess/API/glib/WebKitAutomationSession.cpp @no-unify UIProcess/API/glib/WebKitBackForwardList.cpp @no-unify UIProcess/API/glib/WebKitBackForwardListItem.cpp @no-unify @@ -10531,7 +10475,7 @@ index f005ec751b0bea47036500f8275dbcb58e6e2959..a03179043aed122068dcd29fbe266cec UIProcess/API/glib/WebKitContextMenuClient.cpp @no-unify UIProcess/API/glib/WebKitCookieManager.cpp @no-unify UIProcess/API/glib/WebKitCredential.cpp @no-unify -@@ -155,6 +157,7 @@ UIProcess/API/glib/WebKitOptionMenu.cpp @no-unify +@@ -156,6 +158,7 @@ UIProcess/API/glib/WebKitOptionMenu.cpp @no-unify UIProcess/API/glib/WebKitOptionMenuItem.cpp @no-unify UIProcess/API/glib/WebKitPermissionRequest.cpp @no-unify UIProcess/API/glib/WebKitPermissionStateQuery.cpp @no-unify @@ -10539,7 +10483,7 @@ index f005ec751b0bea47036500f8275dbcb58e6e2959..a03179043aed122068dcd29fbe266cec UIProcess/API/glib/WebKitPolicyDecision.cpp @no-unify UIProcess/API/glib/WebKitPrivate.cpp @no-unify UIProcess/API/glib/WebKitProtocolHandler.cpp @no-unify -@@ -191,6 +194,7 @@ UIProcess/API/soup/HTTPCookieStoreSoup.cpp +@@ -192,6 +195,7 @@ UIProcess/API/soup/HTTPCookieStoreSoup.cpp UIProcess/API/wpe/InputMethodFilterWPE.cpp @no-unify UIProcess/API/wpe/PageClientImpl.cpp @no-unify UIProcess/API/wpe/WebKitColor.cpp @no-unify @@ -10547,7 +10491,7 @@ index f005ec751b0bea47036500f8275dbcb58e6e2959..a03179043aed122068dcd29fbe266cec UIProcess/API/wpe/WebKitInputMethodContextWPE.cpp @no-unify UIProcess/API/wpe/WebKitPopupMenu.cpp @no-unify UIProcess/API/wpe/WebKitRectangle.cpp @no-unify -@@ -211,6 +215,7 @@ UIProcess/Gamepad/libwpe/UIGamepadProviderLibWPE.cpp +@@ -212,6 +216,7 @@ UIProcess/Gamepad/libwpe/UIGamepadProviderLibWPE.cpp UIProcess/geoclue/GeoclueGeolocationProvider.cpp @@ -10567,7 +10511,7 @@ index f005ec751b0bea47036500f8275dbcb58e6e2959..a03179043aed122068dcd29fbe266cec UIProcess/wpe/WebPageProxyWPE.cpp WebProcess/GPU/graphics/gbm/RemoteGraphicsContextGLProxyGBM.cpp -@@ -263,6 +273,8 @@ WebProcess/WebCoreSupport/glib/WebEditorClientGLib.cpp +@@ -262,6 +272,8 @@ WebProcess/WebCoreSupport/glib/WebEditorClientGLib.cpp WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.cpp @@ -10576,8 +10520,20 @@ index f005ec751b0bea47036500f8275dbcb58e6e2959..a03179043aed122068dcd29fbe266cec WebProcess/WebCoreSupport/wpe/WebEditorClientWPE.cpp WebProcess/WebPage/AcceleratedSurface.cpp +diff --git a/Source/WebKit/UIProcess/API/APIAttachment.h b/Source/WebKit/UIProcess/API/APIAttachment.h +index 72b3aa0f4e44e7d9c66582586023decafb36c80b..79e75248be46d50b5126c500de6cc51793326023 100644 +--- a/Source/WebKit/UIProcess/API/APIAttachment.h ++++ b/Source/WebKit/UIProcess/API/APIAttachment.h +@@ -35,6 +35,7 @@ + #include + #include + ++OBJC_CLASS NSData; + OBJC_CLASS NSFileWrapper; + OBJC_CLASS NSString; + diff --git a/Source/WebKit/UIProcess/API/APIProcessPoolConfiguration.cpp b/Source/WebKit/UIProcess/API/APIProcessPoolConfiguration.cpp -index b400b02094eb9ea2863406e9395c02768af2a146..c94b1dfb0be675e740a1179c0aaa5758e30f9ae3 100644 +index 833ec10e3e50da911cd562b05c7b1c2eae56b4ab..088f662a94e799efa359b8017be2c43928bd30c9 100644 --- a/Source/WebKit/UIProcess/API/APIProcessPoolConfiguration.cpp +++ b/Source/WebKit/UIProcess/API/APIProcessPoolConfiguration.cpp @@ -53,6 +53,10 @@ Ref ProcessPoolConfiguration::copy() @@ -10592,7 +10548,7 @@ index b400b02094eb9ea2863406e9395c02768af2a146..c94b1dfb0be675e740a1179c0aaa5758 copy->m_shouldTakeUIBackgroundAssertion = this->m_shouldTakeUIBackgroundAssertion; copy->m_shouldCaptureDisplayInUIProcess = this->m_shouldCaptureDisplayInUIProcess; diff --git a/Source/WebKit/UIProcess/API/APIProcessPoolConfiguration.h b/Source/WebKit/UIProcess/API/APIProcessPoolConfiguration.h -index 57fec1703102930b8d29271d0deccff2b980b086..db0769075e7c07863b051885f445b292bccc709c 100644 +index d0d9fd8fb69f514e1cab4d01a5cefcc415d81f57..ffeb2bc9fbf765feac9256db601a1e299be9c7ab 100644 --- a/Source/WebKit/UIProcess/API/APIProcessPoolConfiguration.h +++ b/Source/WebKit/UIProcess/API/APIProcessPoolConfiguration.h @@ -99,6 +99,16 @@ public: @@ -10612,7 +10568,7 @@ index 57fec1703102930b8d29271d0deccff2b980b086..db0769075e7c07863b051885f445b292 bool alwaysRunsAtBackgroundPriority() const { return m_alwaysRunsAtBackgroundPriority; } void setAlwaysRunsAtBackgroundPriority(bool alwaysRunsAtBackgroundPriority) { m_alwaysRunsAtBackgroundPriority = alwaysRunsAtBackgroundPriority; } -@@ -174,6 +184,10 @@ private: +@@ -177,6 +187,10 @@ private: bool m_ignoreSynchronousMessagingTimeoutsForTesting { false }; bool m_attrStyleEnabled { false }; bool m_shouldThrowExceptionForGlobalConstantRedeclaration { true }; @@ -10624,10 +10580,10 @@ index 57fec1703102930b8d29271d0deccff2b980b086..db0769075e7c07863b051885f445b292 bool m_shouldTakeUIBackgroundAssertion { true }; bool m_shouldCaptureDisplayInUIProcess { DEFAULT_CAPTURE_DISPLAY_IN_UI_PROCESS }; diff --git a/Source/WebKit/UIProcess/API/APIUIClient.h b/Source/WebKit/UIProcess/API/APIUIClient.h -index 77cfe75fc7c5dd16a70d143564e4a4e46d5faa7c..eb209d70294b589bb7ddb7bb3dedcca51ef034dd 100644 +index 43178b087ff4e508a0508ed8b82febaf182ec33a..affc9d1353497daf149ca66bce35cbc95e957052 100644 --- a/Source/WebKit/UIProcess/API/APIUIClient.h +++ b/Source/WebKit/UIProcess/API/APIUIClient.h -@@ -107,6 +107,7 @@ public: +@@ -108,6 +108,7 @@ public: virtual void runJavaScriptAlert(WebKit::WebPageProxy&, const WTF::String&, WebKit::WebFrameProxy*, WebKit::FrameInfoData&&, Function&& completionHandler) { completionHandler(); } virtual void runJavaScriptConfirm(WebKit::WebPageProxy&, const WTF::String&, WebKit::WebFrameProxy*, WebKit::FrameInfoData&&, Function&& completionHandler) { completionHandler(false); } virtual void runJavaScriptPrompt(WebKit::WebPageProxy&, const WTF::String&, const WTF::String&, WebKit::WebFrameProxy*, WebKit::FrameInfoData&&, Function&& completionHandler) { completionHandler(WTF::String()); } @@ -10679,10 +10635,10 @@ index 026121d114c5fcad84c1396be8d692625beaa3bd..edd6e5cae033124c589959a42522fde0 } #endif diff --git a/Source/WebKit/UIProcess/API/C/WKPage.cpp b/Source/WebKit/UIProcess/API/C/WKPage.cpp -index c741ec9e861487f82c2df5c07be1ffb8a811d248..e4ff1a6d98fc47e1483f17d579321aa5ede7211e 100644 +index d4490865e59b4400791bebe67cfa061cdac946b1..0d1a71b09ce83b056d017882bbdb4aa700e7b1b8 100644 --- a/Source/WebKit/UIProcess/API/C/WKPage.cpp +++ b/Source/WebKit/UIProcess/API/C/WKPage.cpp -@@ -1763,6 +1763,13 @@ void WKPageSetPageUIClient(WKPageRef pageRef, const WKPageUIClientBase* wkClient +@@ -1759,6 +1759,13 @@ void WKPageSetPageUIClient(WKPageRef pageRef, const WKPageUIClientBase* wkClient completionHandler(String()); } @@ -10696,7 +10652,7 @@ index c741ec9e861487f82c2df5c07be1ffb8a811d248..e4ff1a6d98fc47e1483f17d579321aa5 void setStatusText(WebPageProxy* page, const String& text) final { if (!m_client.setStatusText) -@@ -1792,6 +1799,8 @@ void WKPageSetPageUIClient(WKPageRef pageRef, const WKPageUIClientBase* wkClient +@@ -1788,6 +1795,8 @@ void WKPageSetPageUIClient(WKPageRef pageRef, const WKPageUIClientBase* wkClient { if (!m_client.didNotHandleKeyEvent) return; @@ -10766,7 +10722,7 @@ index 65d8ab73430840b02682ce879d1db18b9597d6b0..ea89752f4b90018ea1f008e0d89f9a2a // Version 15. WKPageDecidePolicyForSpeechRecognitionPermissionRequestCallback decidePolicyForSpeechRecognitionPermissionRequest; diff --git a/Source/WebKit/UIProcess/API/Cocoa/WKPreferences.mm b/Source/WebKit/UIProcess/API/Cocoa/WKPreferences.mm -index 8c24aeeaa2f8bd9689e23497539bfa372da4985b..5956c040d95dcd94d183181e364a60287948d926 100644 +index 9909bb725a8ff9c42caa40cca3719a22d8a80034..fbb0ea9afc27b15966f1b71d7aa3d9c471e3b01b 100644 --- a/Source/WebKit/UIProcess/API/Cocoa/WKPreferences.mm +++ b/Source/WebKit/UIProcess/API/Cocoa/WKPreferences.mm @@ -691,6 +691,16 @@ - (void)_setMediaCaptureRequiresSecureConnection:(BOOL)requiresSecureConnection @@ -10787,7 +10743,7 @@ index 8c24aeeaa2f8bd9689e23497539bfa372da4985b..5956c040d95dcd94d183181e364a6028 { return _preferences->inactiveMediaCaptureSteamRepromptIntervalInMinutes(); diff --git a/Source/WebKit/UIProcess/API/Cocoa/WKPreferencesPrivate.h b/Source/WebKit/UIProcess/API/Cocoa/WKPreferencesPrivate.h -index f12bc05f2eb46f1fe806b1205075a95f7352d689..0ad87ef2963b803869a3fd31f38ee13faeb2dab6 100644 +index a8cad3e243372193fef5262aa9fc8e5d743a5e7d..7ab43ea66c7264048d36e1142bfec3316900b168 100644 --- a/Source/WebKit/UIProcess/API/Cocoa/WKPreferencesPrivate.h +++ b/Source/WebKit/UIProcess/API/Cocoa/WKPreferencesPrivate.h @@ -122,6 +122,7 @@ typedef NS_ENUM(NSInteger, _WKPitchCorrectionAlgorithm) { @@ -10797,9 +10753,9 @@ index f12bc05f2eb46f1fe806b1205075a95f7352d689..0ad87ef2963b803869a3fd31f38ee13f +@property (nonatomic, setter=_setAlternateWebMPlayerEnabled:) BOOL _alternateWebMPlayerEnabled WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA)); @property (nonatomic, setter=_setEnumeratingAllNetworkInterfacesEnabled:) BOOL _enumeratingAllNetworkInterfacesEnabled WK_API_AVAILABLE(macos(10.13), ios(11.0)); @property (nonatomic, setter=_setICECandidateFilteringEnabled:) BOOL _iceCandidateFilteringEnabled WK_API_AVAILABLE(macos(10.13.4), ios(11.3)); - @property (nonatomic, setter=_setWebRTCLegacyAPIEnabled:) BOOL _webRTCLegacyAPIEnabled WK_API_AVAILABLE(macos(10.13), ios(11.0)); + @property (nonatomic, setter=_setInactiveMediaCaptureSteamRepromptIntervalInMinutes:) double _inactiveMediaCaptureSteamRepromptIntervalInMinutes WK_API_AVAILABLE(macos(10.13.4), ios(11.3)); diff --git a/Source/WebKit/UIProcess/API/Cocoa/WKUIDelegate.h b/Source/WebKit/UIProcess/API/Cocoa/WKUIDelegate.h -index a3c0e6e941ce99bf094362e094d83fe6480568a2..d38b26f79f12a89fa8e14dcaecef64505f2431d8 100644 +index 24b33cf16d46efce11a30032925600b97e64c65d..422355368191b9189b6283338bea2244b2fddd9e 100644 --- a/Source/WebKit/UIProcess/API/Cocoa/WKUIDelegate.h +++ b/Source/WebKit/UIProcess/API/Cocoa/WKUIDelegate.h @@ -148,6 +148,12 @@ typedef NS_ENUM(NSInteger, WKDialogResult) { @@ -10816,7 +10772,7 @@ index a3c0e6e941ce99bf094362e094d83fe6480568a2..d38b26f79f12a89fa8e14dcaecef6450 /*! @abstract A delegate to request permission for microphone audio and camera video access. @param webView The web view invoking the delegate method. diff --git a/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.h b/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.h -index afa925f36c29db9c23921298dead9cce737500d6..42d396342acdb6d39830f611df0ee40ea6ec879e 100644 +index 67da62d607a6cfe180c61776467f95f872312bf0..62a2494b0aaaef0910510dd6a30fcd3b34489ce1 100644 --- a/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.h +++ b/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.h @@ -24,7 +24,6 @@ @@ -10826,10 +10782,10 @@ index afa925f36c29db9c23921298dead9cce737500d6..42d396342acdb6d39830f611df0ee40e - #import - NS_ASSUME_NONNULL_BEGIN -@@ -79,6 +78,8 @@ WK_CLASS_AVAILABLE(macos(10.11), ios(9.0)) - /*! @abstract Returns the cookie store representing HTTP cookies in this website data store. */ - @property (nonatomic, readonly) WKHTTPCookieStore *httpCookieStore WK_API_AVAILABLE(macos(10.13), ios(11.0)); + #if __has_include() +@@ -116,6 +115,8 @@ WK_CLASS_AVAILABLE(macos(10.11), ios(9.0)) + - (void)setProxyConfiguration:(nw_proxy_config_t)proxyConfiguration WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA)); + #endif +- (uint64_t)sessionID; + @@ -10837,10 +10793,10 @@ index afa925f36c29db9c23921298dead9cce737500d6..42d396342acdb6d39830f611df0ee40e NS_ASSUME_NONNULL_END diff --git a/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm b/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm -index a578dba043d47592a7ff7a959a267558dd264b38..3384a4fad6b686d138a28abb15d87be07c79986e 100644 +index ec6c586f4a0d0ffbee0eea0e21d58a2a047a6b7f..5eb4e4ae82db7a45d3fa2ae4c64fddd2ab3d4815 100644 --- a/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm +++ b/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm -@@ -48,6 +48,7 @@ +@@ -50,6 +50,7 @@ #import "_WKResourceLoadStatisticsThirdPartyInternal.h" #import "_WKWebsiteDataStoreConfigurationInternal.h" #import "_WKWebsiteDataStoreDelegate.h" @@ -10848,7 +10804,7 @@ index a578dba043d47592a7ff7a959a267558dd264b38..3384a4fad6b686d138a28abb15d87be0 #import #import #import -@@ -280,6 +281,11 @@ - (void)removeDataOfTypes:(NSSet *)dataTypes modifiedSince:(NSDate *)date comple +@@ -331,6 +332,11 @@ - (void)removeDataOfTypes:(NSSet *)dataTypes modifiedSince:(NSDate *)date comple }); } @@ -11011,25 +10967,13 @@ index b1c6e033c8a86353f96161482d92c227d7946201..64e592705c97d2d78668aa532f271ddf #import "WKObject.h" #import -diff --git a/Source/WebKit/UIProcess/API/Cocoa/_WKInspector.mm b/Source/WebKit/UIProcess/API/Cocoa/_WKInspector.mm -index 26db4814884a690853300bd3b94352f8a03a66e3..5e207208c78060e4a7bcb2f8a78d2d233e6f8d0a 100644 ---- a/Source/WebKit/UIProcess/API/Cocoa/_WKInspector.mm -+++ b/Source/WebKit/UIProcess/API/Cocoa/_WKInspector.mm -@@ -37,6 +37,7 @@ - #import "_WKInspectorPrivateForTesting.h" - #import "_WKRemoteObjectRegistry.h" - #import -+#import - #import - #import - diff --git a/Source/WebKit/UIProcess/API/Cocoa/_WKInspectorInternal.h b/Source/WebKit/UIProcess/API/Cocoa/_WKInspectorInternal.h -index 86bfda0abb73f3857b70ef0d2d9eb9beb97af82c..c94ba0a3944da003f813a501a2127bdf3477295f 100644 +index 8c8c9d77a3071f4093994c27dbe8e448ed1c62d8..dffc5b228d0d7d964954aa4e93e2351948e5657b 100644 --- a/Source/WebKit/UIProcess/API/Cocoa/_WKInspectorInternal.h +++ b/Source/WebKit/UIProcess/API/Cocoa/_WKInspectorInternal.h -@@ -28,6 +28,8 @@ - #import "WKObject.h" +@@ -29,6 +29,8 @@ #import "WebInspectorUIProxy.h" + #import +#import + @@ -11323,7 +11267,7 @@ index 81f7f11584960e18a053964303128efb0e5032f3..6dd253a561cb8c56e874a1283e00ffe3 bool canRunBeforeUnloadConfirmPanel() const final { return true; } diff --git a/Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp b/Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp -index abfbacf1238124bf9ec26f67bc63936bc282ffab..2baf33f17b7beb669c5683bd3e0ffbef98d3c27f 100644 +index 44784336025d2e24aae9936474467b52dcc77708..2ce6d8299fae359b85e906907d26ec581eb17f72 100644 --- a/Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp +++ b/Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp @@ -413,10 +413,19 @@ static void webkitWebContextSetProperty(GObject* object, guint propID, const GVa @@ -11356,7 +11300,7 @@ index abfbacf1238124bf9ec26f67bc63936bc282ffab..2baf33f17b7beb669c5683bd3e0ffbef if (!priv->clientsDetached) { priv->clientsDetached = true; diff --git a/Source/WebKit/UIProcess/API/glib/WebKitWebContextPrivate.h b/Source/WebKit/UIProcess/API/glib/WebKitWebContextPrivate.h -index f6c2d8c4dc4bf5721f15ba375fec3a7222156ccd..4ce2c5c139a47a4f3ae2d858764bdf9c5011c9ea 100644 +index e994309b097c1b140abfa4373fd2fafee46c05ec..6e0cc677a3bf33683ae8c89d12a4819144b3df89 100644 --- a/Source/WebKit/UIProcess/API/glib/WebKitWebContextPrivate.h +++ b/Source/WebKit/UIProcess/API/glib/WebKitWebContextPrivate.h @@ -43,3 +43,4 @@ void webkitWebContextInitializeNotificationPermissions(WebKitWebContext*); @@ -11365,7 +11309,7 @@ index f6c2d8c4dc4bf5721f15ba375fec3a7222156ccd..4ce2c5c139a47a4f3ae2d858764bdf9c #endif +int webkitWebContextExistingCount(); diff --git a/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp b/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp -index b8c57b8cbf324a9130c29ea817fcedb93e49e75a..80a341913152c0e07bf6e6aa619d992d6b39fa5a 100644 +index 837aa061fcabefd01f9637be9baffef588e9ff51..f886e0244c035b74b3581da467701c235c3e0e24 100644 --- a/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp +++ b/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp @@ -32,6 +32,7 @@ @@ -11376,7 +11320,7 @@ index b8c57b8cbf324a9130c29ea817fcedb93e49e75a..80a341913152c0e07bf6e6aa619d992d #include "WebKitAuthenticationRequestPrivate.h" #include "WebKitBackForwardListPrivate.h" #include "WebKitContextMenuClient.h" -@@ -50,6 +51,7 @@ +@@ -49,6 +50,7 @@ #include "WebKitNavigationClient.h" #include "WebKitNotificationPrivate.h" #include "WebKitPermissionStateQueryPrivate.h" @@ -11392,7 +11336,7 @@ index b8c57b8cbf324a9130c29ea817fcedb93e49e75a..80a341913152c0e07bf6e6aa619d992d #include "WebKitPrintOperationPrivate.h" #include "WebKitWebInspectorPrivate.h" #include "WebKitWebViewBasePrivate.h" -@@ -135,6 +136,7 @@ enum { +@@ -138,6 +139,7 @@ enum { CLOSE, SCRIPT_DIALOG, @@ -11400,7 +11344,7 @@ index b8c57b8cbf324a9130c29ea817fcedb93e49e75a..80a341913152c0e07bf6e6aa619d992d DECIDE_POLICY, PERMISSION_REQUEST, -@@ -478,6 +480,9 @@ GRefPtr WebKitWebViewClient::showOptionMenu(WebKitPopupMenu& p +@@ -485,6 +487,9 @@ GRefPtr WebKitWebViewClient::showOptionMenu(WebKitPopupMenu& p void WebKitWebViewClient::frameDisplayed(WKWPE::View&) { @@ -11410,7 +11354,7 @@ index b8c57b8cbf324a9130c29ea817fcedb93e49e75a..80a341913152c0e07bf6e6aa619d992d { SetForScope inFrameDisplayedGuard(m_webView->priv->inFrameDisplayed, true); for (const auto& callback : m_webView->priv->frameDisplayedCallbacks) { -@@ -568,7 +573,7 @@ static gboolean webkitWebViewDecidePolicy(WebKitWebView*, WebKitPolicyDecision* +@@ -575,7 +580,7 @@ static gboolean webkitWebViewDecidePolicy(WebKitWebView*, WebKitPolicyDecision* static gboolean webkitWebViewPermissionRequest(WebKitWebView*, WebKitPermissionRequest* request) { @@ -11419,7 +11363,7 @@ index b8c57b8cbf324a9130c29ea817fcedb93e49e75a..80a341913152c0e07bf6e6aa619d992d if (WEBKIT_IS_POINTER_LOCK_PERMISSION_REQUEST(request)) { webkit_permission_request_allow(request); return TRUE; -@@ -1787,6 +1792,15 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass) +@@ -1822,6 +1827,15 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass) G_TYPE_BOOLEAN, 1, WEBKIT_TYPE_SCRIPT_DIALOG); @@ -11435,7 +11379,7 @@ index b8c57b8cbf324a9130c29ea817fcedb93e49e75a..80a341913152c0e07bf6e6aa619d992d /** * WebKitWebView::decide-policy: * @web_view: the #WebKitWebView on which the signal is emitted -@@ -2585,6 +2599,23 @@ void webkitWebViewRunJavaScriptBeforeUnloadConfirm(WebKitWebView* webView, const +@@ -2620,6 +2634,23 @@ void webkitWebViewRunJavaScriptBeforeUnloadConfirm(WebKitWebView* webView, const webkit_script_dialog_unref(webView->priv->currentScriptDialog); } @@ -11472,10 +11416,10 @@ index b9430167f605a38f31e38679118220d372a33d6a..8462bbdea5cf4047ec027aa47ed6f09d bool webkitWebViewIsScriptDialogRunning(WebKitWebView*, WebKitScriptDialog*); String webkitWebViewGetCurrentScriptDialogMessage(WebKitWebView*); diff --git a/Source/WebKit/UIProcess/API/glib/webkit.h.in b/Source/WebKit/UIProcess/API/glib/webkit.h.in -index 639f083ce1882a34e6b8ac320739b365d0dcf8c7..dfd34e79d2a45e0f36383b99016f941aac5eed7d 100644 +index 5fed4419ef7a7a421777aeff8e6d780da49e1258..b34870bb54ffd3ab7766054a04ca069a6e299900 100644 --- a/Source/WebKit/UIProcess/API/glib/webkit.h.in +++ b/Source/WebKit/UIProcess/API/glib/webkit.h.in -@@ -41,6 +41,7 @@ +@@ -45,6 +45,7 @@ #include <@API_INCLUDE_PREFIX@/WebKitAutomationSession.h> #include <@API_INCLUDE_PREFIX@/WebKitBackForwardList.h> #include <@API_INCLUDE_PREFIX@/WebKitBackForwardListItem.h> @@ -11584,10 +11528,10 @@ index 0000000000000000000000000000000000000000..45221096280941d747ef3f46749b1466 + +#endif diff --git a/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp b/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp -index 3ecc21f37b5cb34592e4bb34b216522d14b58a56..5a98b47dce21b706f183cd6d40bd0374054dcc89 100644 +index 0ec20131969bf50962eecbcb573e676abd1a35f6..0ac8b44b61a2ed4d3f5e91d702e4a48773b8cf94 100644 --- a/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp +++ b/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp -@@ -2673,6 +2673,11 @@ void webkitWebViewBaseResetClickCounter(WebKitWebViewBase* webkitWebViewBase) +@@ -2685,6 +2685,11 @@ void webkitWebViewBaseResetClickCounter(WebKitWebViewBase* webkitWebViewBase) #endif } @@ -11689,7 +11633,7 @@ index 948d0f4a4759afa1533cd84a190f3d56e54a5cb5..fc43ce6cc53636b5e6f9b5af9d6609b6 }; diff --git a/Source/WebKit/UIProcess/API/wpe/WPEView.cpp b/Source/WebKit/UIProcess/API/wpe/WPEView.cpp -index 305dc1f16559c12efafee27f0f446041f71124c0..dfbfa808077045f93e8f668afda001564d50b3e8 100644 +index cf80591763eb13effd889e8493c2db5566e5a8f8..fd6fbd3ddd8f10d9d8496919367042283cc8e9da 100644 --- a/Source/WebKit/UIProcess/API/wpe/WPEView.cpp +++ b/Source/WebKit/UIProcess/API/wpe/WPEView.cpp @@ -76,7 +76,9 @@ View::View(struct wpe_view_backend* backend, const API::PageConfiguration& baseC @@ -12053,7 +11997,7 @@ index e4b92ace1531090ae38a7aec3d3d4febf19aee84..43690f9ef4969a39084501613bfc00a7 + +cairo_surface_t* webkitWebViewBackendTakeScreenshot(WebKitWebViewBackend*); diff --git a/Source/WebKit/UIProcess/AuxiliaryProcessProxy.cpp b/Source/WebKit/UIProcess/AuxiliaryProcessProxy.cpp -index 5345d40ef57869f7a84b6059dc28e146a52b4abe..6e03323b1a13328fcc7df1fc1a5b533649bbb334 100644 +index 7bc7b93a1e449e0d918d538783e8013367a6ae4a..8ed8c6dbb0ab4d5ba5c885c15679313a1f440365 100644 --- a/Source/WebKit/UIProcess/AuxiliaryProcessProxy.cpp +++ b/Source/WebKit/UIProcess/AuxiliaryProcessProxy.cpp @@ -123,7 +123,11 @@ void AuxiliaryProcessProxy::getLaunchOptions(ProcessLauncher::LaunchOptions& lau @@ -12069,10 +12013,10 @@ index 5345d40ef57869f7a84b6059dc28e146a52b4abe..6e03323b1a13328fcc7df1fc1a5b5336 platformGetLaunchOptions(launchOptions); } diff --git a/Source/WebKit/UIProcess/AuxiliaryProcessProxy.h b/Source/WebKit/UIProcess/AuxiliaryProcessProxy.h -index 2d11f78d4dbe5dc4d4098304f9f0c2e45e3ae7f5..6a8bb1e78626a669aa1db00ff07611309a1ae5f6 100644 +index c0eee8c681b6af387496172cd54420777cb21f26..13127cabedfa2be1efea02d6c003064f38192b7c 100644 --- a/Source/WebKit/UIProcess/AuxiliaryProcessProxy.h +++ b/Source/WebKit/UIProcess/AuxiliaryProcessProxy.h -@@ -193,12 +193,15 @@ protected: +@@ -199,12 +199,15 @@ protected: static RefPtr fetchAudioComponentServerRegistrations(); #endif @@ -12262,7 +12206,7 @@ index 957f7f088087169668a9b4f1ba65d9f206a2a836..15e44c8d5b6a3eafb7f1148707366b0c class PopUpSOAuthorizationSession final : public SOAuthorizationSession { public: diff --git a/Source/WebKit/UIProcess/Cocoa/UIDelegate.h b/Source/WebKit/UIProcess/Cocoa/UIDelegate.h -index bb0c358d3e3fc7f889fbb1e21a77d2f9f28d23ca..f061eec78d3f24e195115dd951ef39016531e9d9 100644 +index 11091dca0bc84e5390287f2ce5ea05910eb18550..892f2c01a31d815675536eca99341f76cb3e1e52 100644 --- a/Source/WebKit/UIProcess/Cocoa/UIDelegate.h +++ b/Source/WebKit/UIProcess/Cocoa/UIDelegate.h @@ -95,6 +95,7 @@ private: @@ -12273,7 +12217,7 @@ index bb0c358d3e3fc7f889fbb1e21a77d2f9f28d23ca..f061eec78d3f24e195115dd951ef3901 void presentStorageAccessConfirmDialog(const WTF::String& requestingDomain, const WTF::String& currentDomain, CompletionHandler&&); void requestStorageAccessConfirm(WebPageProxy&, WebFrameProxy*, const WebCore::RegistrableDomain& requestingDomain, const WebCore::RegistrableDomain& currentDomain, CompletionHandler&&) final; void decidePolicyForGeolocationPermissionRequest(WebPageProxy&, WebFrameProxy&, const FrameInfoData&, Function&) final; -@@ -204,6 +205,7 @@ private: +@@ -203,6 +204,7 @@ private: bool webViewRunJavaScriptAlertPanelWithMessageInitiatedByFrameCompletionHandler : 1; bool webViewRunJavaScriptConfirmPanelWithMessageInitiatedByFrameCompletionHandler : 1; bool webViewRunJavaScriptTextInputPanelWithPromptDefaultTextInitiatedByFrameCompletionHandler : 1; @@ -12282,7 +12226,7 @@ index bb0c358d3e3fc7f889fbb1e21a77d2f9f28d23ca..f061eec78d3f24e195115dd951ef3901 bool webViewRunBeforeUnloadConfirmPanelWithMessageInitiatedByFrameCompletionHandler : 1; bool webViewRequestGeolocationPermissionForFrameDecisionHandler : 1; diff --git a/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm b/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm -index f588e06d07cc6c4346ba7bceda3588650fb1afae..03aedc9ea507d23ffa3c014572788d4f75de7b4a 100644 +index b05676183fba02bd2a8e6b58d2cb02edebff01c2..9cb7e8ca5a4cf32b2456197f08b31d80eca3b067 100644 --- a/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm +++ b/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm @@ -112,6 +112,7 @@ void UIDelegate::setDelegate(id delegate) @@ -12310,7 +12254,7 @@ index f588e06d07cc6c4346ba7bceda3588650fb1afae..03aedc9ea507d23ffa3c014572788d4f { if (!m_uiDelegate) diff --git a/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm b/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm -index 51d7f68a1ea6626b5b17bafa458d5f220b6da268..e476ef13742e0442e2578d148e46cbd2fbe206c2 100644 +index b379e63e52cd33784be2aade97eaa980ef368068..f6b7b2e8eebc632dd2280febabc0bcad1017f93a 100644 --- a/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm +++ b/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm @@ -38,6 +38,7 @@ @@ -12389,10 +12333,10 @@ index 51d7f68a1ea6626b5b17bafa458d5f220b6da268..e476ef13742e0442e2578d148e46cbd2 #if PLATFORM(IOS_FAMILY) diff --git a/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm b/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm -index a70f5b60cab18c9321258cbd2a31554381a29f22..1870c0308be27a772c946d47113121337ec594f7 100644 +index 35545a2889043cf0d726f557925c7010127f7d87..7885a50d4c6c4ebf2c40588e1089ba98c1b0c136 100644 --- a/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm +++ b/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm -@@ -474,7 +474,7 @@ void WebProcessPool::platformInitializeWebProcess(const WebProcessProxy& process +@@ -467,7 +467,7 @@ void WebProcessPool::platformInitializeWebProcess(const WebProcessProxy& process auto screenProperties = WebCore::collectScreenProperties(); parameters.screenProperties = WTFMove(screenProperties); #if PLATFORM(MAC) @@ -12401,7 +12345,7 @@ index a70f5b60cab18c9321258cbd2a31554381a29f22..1870c0308be27a772c946d4711312133 #endif #if PLATFORM(IOS) && HAVE(AGX_COMPILER_SERVICE) -@@ -748,8 +748,8 @@ void WebProcessPool::registerNotificationObservers() +@@ -741,8 +741,8 @@ void WebProcessPool::registerNotificationObservers() }]; m_scrollerStyleNotificationObserver = [[NSNotificationCenter defaultCenter] addObserverForName:NSPreferredScrollerStyleDidChangeNotification object:nil queue:[NSOperationQueue currentQueue] usingBlock:^(NSNotification *notification) { @@ -12413,7 +12357,7 @@ index a70f5b60cab18c9321258cbd2a31554381a29f22..1870c0308be27a772c946d4711312133 m_activationObserver = [[NSNotificationCenter defaultCenter] addObserverForName:NSApplicationDidBecomeActiveNotification object:NSApp queue:[NSOperationQueue currentQueue] usingBlock:^(NSNotification *notification) { diff --git a/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp b/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp -index cbdce63844f57918f43c5c1d71dd49bb9918ff5b..829b63cfe3b07f5cd63a77b894d882060b80c7d1 100644 +index 9a08675b5a84f00f19f19605b2a1e1bba9c70203..acc16ad65ac0fabcd97300f98fc9a44a86a01d05 100644 --- a/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp +++ b/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp @@ -32,13 +32,16 @@ @@ -12517,7 +12461,7 @@ index cbdce63844f57918f43c5c1d71dd49bb9918ff5b..829b63cfe3b07f5cd63a77b894d88206 void DrawingAreaProxyCoordinatedGraphics::incorporateUpdate(const UpdateInfo& updateInfo) { diff --git a/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.h b/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.h -index e037e7dff6c877a676292a0b38cf9b54881ef1b9..9d8257825c71687659952249b4558ce7bb0e618e 100644 +index 201e555f28364b72fa2735c269a441188a762059..ff5da2829940ce08d3bb5d703023b4f503f57b3e 100644 --- a/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.h +++ b/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.h @@ -30,6 +30,7 @@ @@ -12661,7 +12605,7 @@ index 42e9c901f866a2892396c83441ecbc5638270b52..42d2f292df2f337e302a8ec281333c70 } // namespace WebKit diff --git a/Source/WebKit/UIProcess/DrawingAreaProxy.h b/Source/WebKit/UIProcess/DrawingAreaProxy.h -index 09f7c720dcf5da78c3591ac303f5bf393fbda120..5e86d821e0cd9a4ee2ed7817a3707d15a3ff5c44 100644 +index 44b79059000992694a448846e7bcd9fb1d80a4c1..ff2413f9d9bf848b4efa20fdab7f37ae34cffb1a 100644 --- a/Source/WebKit/UIProcess/DrawingAreaProxy.h +++ b/Source/WebKit/UIProcess/DrawingAreaProxy.h @@ -85,6 +85,7 @@ public: @@ -12671,8 +12615,8 @@ index 09f7c720dcf5da78c3591ac303f5bf393fbda120..5e86d821e0cd9a4ee2ed7817a3707d15 + void waitForSizeUpdate(Function&&); #if USE(COORDINATED_GRAPHICS) || USE(TEXTURE_MAPPER) - // The timeout we use when waiting for a DidUpdateGeometry message. -@@ -169,6 +170,10 @@ private: + // The timeout we use when waiting for a UpdateGeometry reply. +@@ -163,6 +164,10 @@ private: virtual void didUpdateBackingStoreState(uint64_t /* backingStoreStateID */, const UpdateInfo&, const LayerTreeContext&) { } virtual void exitAcceleratedCompositingMode(uint64_t /* backingStoreStateID */, const UpdateInfo&) { } #endif @@ -12684,10 +12628,10 @@ index 09f7c720dcf5da78c3591ac303f5bf393fbda120..5e86d821e0cd9a4ee2ed7817a3707d15 } // namespace WebKit diff --git a/Source/WebKit/UIProcess/DrawingAreaProxy.messages.in b/Source/WebKit/UIProcess/DrawingAreaProxy.messages.in -index b0722e7da81e56530deb570b82ed7cfece970362..05ec3e3ea97ba49135a27d7f9b91f14c507d9318 100644 +index 8d8898b79532e874b0ea3b506342b3621acc37fd..294cb8ebed6cab59270abbc1773fd082517c0de1 100644 --- a/Source/WebKit/UIProcess/DrawingAreaProxy.messages.in +++ b/Source/WebKit/UIProcess/DrawingAreaProxy.messages.in -@@ -36,4 +36,7 @@ messages -> DrawingAreaProxy NotRefCounted { +@@ -31,4 +31,7 @@ messages -> DrawingAreaProxy NotRefCounted { DidUpdateBackingStoreState(uint64_t backingStoreStateID, WebKit::UpdateInfo updateInfo, WebKit::LayerTreeContext context) ExitAcceleratedCompositingMode(uint64_t backingStoreStateID, WebKit::UpdateInfo updateInfo) #endif @@ -12985,10 +12929,10 @@ index 0000000000000000000000000000000000000000..4ec8b96bbbddf8a7b042f53a8068754a +cairo_status_t cairo_image_surface_write_to_jpeg_mem(cairo_surface_t *sfc, unsigned char **data, size_t *len, int quality); diff --git a/Source/WebKit/UIProcess/Inspector/Agents/InspectorScreencastAgent.cpp b/Source/WebKit/UIProcess/Inspector/Agents/InspectorScreencastAgent.cpp new file mode 100644 -index 0000000000000000000000000000000000000000..01077e377ec3da3518e25ef1dbc969a0b03dcfc2 +index 0000000000000000000000000000000000000000..9e726eaeab1d547b6a0dc4885868a15cc42c4862 --- /dev/null +++ b/Source/WebKit/UIProcess/Inspector/Agents/InspectorScreencastAgent.cpp -@@ -0,0 +1,304 @@ +@@ -0,0 +1,303 @@ +/* + * Copyright (C) 2020 Microsoft Corporation. + * @@ -13017,7 +12961,6 @@ index 0000000000000000000000000000000000000000..01077e377ec3da3518e25ef1dbc969a0 +#include "config.h" +#include "InspectorScreencastAgent.h" + -+#include "GenericCallback.h" +#include "PageClient.h" +#include "ScreencastEncoder.h" +#include "WebPageInspectorController.h" @@ -14657,6 +14600,18 @@ index 0000000000000000000000000000000000000000..6a04ee480bc3a8270a7de20b1cd0da71 +} + +} // namespace WebKit +diff --git a/Source/WebKit/UIProcess/Inspector/mac/WKInspectorViewController.mm b/Source/WebKit/UIProcess/Inspector/mac/WKInspectorViewController.mm +index bbed58d7dadb8759c7bb756c1594ecd15e3bd77d..28bdb4ab833dad7af42f7bf61e32c52142143727 100644 +--- a/Source/WebKit/UIProcess/Inspector/mac/WKInspectorViewController.mm ++++ b/Source/WebKit/UIProcess/Inspector/mac/WKInspectorViewController.mm +@@ -30,6 +30,7 @@ + + #import "APINavigation.h" + #import ++#import "WKContextMenuItemTypes.h" + #import "WKInspectorResourceURLSchemeHandler.h" + #import "WKInspectorWKWebView.h" + #import diff --git a/Source/WebKit/UIProcess/InspectorDialogAgent.cpp b/Source/WebKit/UIProcess/InspectorDialogAgent.cpp new file mode 100644 index 0000000000000000000000000000000000000000..663f92f0df76042cf6385b056f8a917d688259f9 @@ -14829,10 +14784,10 @@ index 0000000000000000000000000000000000000000..d0e11ed81a6257c011df23d5870da740 +} // namespace WebKit diff --git a/Source/WebKit/UIProcess/InspectorPlaywrightAgent.cpp b/Source/WebKit/UIProcess/InspectorPlaywrightAgent.cpp new file mode 100644 -index 0000000000000000000000000000000000000000..58ca8becccbd55b1d2077036086aa9c1579af373 +index 0000000000000000000000000000000000000000..1c62305fc60fd18f672a53e19b2fdaf8d3bf9923 --- /dev/null +++ b/Source/WebKit/UIProcess/InspectorPlaywrightAgent.cpp -@@ -0,0 +1,959 @@ +@@ -0,0 +1,975 @@ +/* + * Copyright (C) 2019 Microsoft Corporation. + * @@ -15764,6 +15719,22 @@ index 0000000000000000000000000000000000000000..58ca8becccbd55b1d2077036086aa9c1 + return { }; +} + ++void InspectorPlaywrightAgent::clearMemoryCache(const String& browserContextID, Ref&& callback) ++{ ++ if (!m_isEnabled) { ++ callback->sendSuccess(); ++ return; ++ } ++ auto browserContext = getExistingBrowserContext(browserContextID); ++ if (!browserContext) { ++ callback->sendSuccess(); ++ return; ++ } ++ browserContext->dataStore->removeData(WebKit::WebsiteDataType::MemoryCache, -WallTime::infinity(), [callback] { ++ callback->sendSuccess(); ++ }); ++} ++ +BrowserContext* InspectorPlaywrightAgent::getExistingBrowserContext(const String& browserContextID) +{ + BrowserContext* browserContext = m_browserContexts.get(browserContextID); @@ -15794,10 +15765,10 @@ index 0000000000000000000000000000000000000000..58ca8becccbd55b1d2077036086aa9c1 +#endif // ENABLE(REMOTE_INSPECTOR) diff --git a/Source/WebKit/UIProcess/InspectorPlaywrightAgent.h b/Source/WebKit/UIProcess/InspectorPlaywrightAgent.h new file mode 100644 -index 0000000000000000000000000000000000000000..8522b4942343d9a6f2473ea9a133d1ff5267e8ed +index 0000000000000000000000000000000000000000..32f72c4128907d544acefa8bbaad10c6ff5a01d2 --- /dev/null +++ b/Source/WebKit/UIProcess/InspectorPlaywrightAgent.h -@@ -0,0 +1,127 @@ +@@ -0,0 +1,128 @@ +/* + * Copyright (C) 2019 Microsoft Corporation. + * @@ -15897,6 +15868,7 @@ index 0000000000000000000000000000000000000000..8522b4942343d9a6f2473ea9a133d1ff + Inspector::Protocol::ErrorStringOr setLanguages(Ref&& languages, const String& browserContextID) override; + Inspector::Protocol::ErrorStringOr setDownloadBehavior(const String& behavior, const String& downloadPath, const String& browserContextID) override; + Inspector::Protocol::ErrorStringOr cancelDownload(const String& uuid) override; ++ void clearMemoryCache(const String& browserContextID, Ref&&) override; + + // DownloadInstrumentation + void downloadCreated(const String& uuid, const WebCore::ResourceRequest&, const FrameInfoData& frameInfoData, WebPageProxy* page, RefPtr download) override; @@ -16018,7 +15990,7 @@ index f2377683234a05a45d6dd4ccbb317bdec47feb30..f70925c506dcf1283d1a9b6663f42ccc BOOL result = ::CreateProcess(0, commandLine.data(), 0, 0, true, 0, 0, 0, &startupInfo, &processInformation); diff --git a/Source/WebKit/UIProcess/PageClient.h b/Source/WebKit/UIProcess/PageClient.h -index d3e41f04696c7ccd969a33c9fd1256f9d4eeef73..c58d77873379cd4f505864650c21d024f95aa4f1 100644 +index 27ec5b9f25de4a3b45a32688286eb642a280aa30..b7dae33ba47f4bbe4e1a3e719361bfe9a3b9e342 100644 --- a/Source/WebKit/UIProcess/PageClient.h +++ b/Source/WebKit/UIProcess/PageClient.h @@ -325,6 +325,11 @@ public: @@ -16335,7 +16307,7 @@ index 0000000000000000000000000000000000000000..6d04f9290135069359ce6bf872654648 + +#endif // ENABLE(REMOTE_INSPECTOR) diff --git a/Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp b/Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp -index b6fb4399f68f70f26f1a0c036c75679234d27010..e71fc5b71fd42a3f0d49096990d2402d1b6ac56d 100644 +index e6ad1c26ee6c4b6d730317eda114ed30179cd887..45353306b4b913593d2ed2e5ebd5a20d95d50f75 100644 --- a/Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp +++ b/Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp @@ -32,6 +32,7 @@ @@ -16346,6 +16318,55 @@ index b6fb4399f68f70f26f1a0c036c75679234d27010..e71fc5b71fd42a3f0d49096990d2402d #include #include #include +diff --git a/Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteLayerTreeEventDispatcher.h b/Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteLayerTreeEventDispatcher.h +index ef3458da101afa56c31fcb41fb935d25db571742..7d17b49c60ee4cead65f4bc720b6a3bfb0d7eab9 100644 +--- a/Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteLayerTreeEventDispatcher.h ++++ b/Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteLayerTreeEventDispatcher.h +@@ -36,6 +36,11 @@ + #include + #include + #include ++#include ++#include ++ ++#include "NativeWebWheelEvent.h" ++#include "WebPage.h" + + namespace WebCore { + class PlatformWheelEvent; +@@ -76,17 +81,17 @@ public: + void windowScreenDidChange(WebCore::PlatformDisplayID, std::optional); + + private: +- OptionSet determineWheelEventProcessing(const WebCore::PlatformWheelEvent&, WebCore::RectEdges rubberBandableEdges); ++ OptionSet determineWheelEventProcessing(const WebCore::PlatformWheelEvent&, WebCore::RectEdges rubberBandableEdges); + + WebCore::WheelEventHandlingResult scrollingThreadHandleWheelEvent(const WebWheelEvent&, WebCore::RectEdges rubberBandableEdges); +- WebCore::WheelEventHandlingResult internalHandleWheelEvent(const WebCore::PlatformWheelEvent&, OptionSet); ++ WebCore::WheelEventHandlingResult internalHandleWheelEvent(const WebCore::PlatformWheelEvent&, OptionSet); + + WebCore::PlatformWheelEvent filteredWheelEvent(const WebCore::PlatformWheelEvent&); + + void wheelEventHysteresisUpdated(PAL::HysteresisState); + + void willHandleWheelEvent(const NativeWebWheelEvent&); +- void wheelEventWasHandledByScrollingThread(WheelEventHandlingResult); ++ void wheelEventWasHandledByScrollingThread(WebCore::WheelEventHandlingResult); + + DisplayLink* displayLink() const; + +diff --git a/Source/WebKit/UIProcess/SpeechRecognitionRemoteRealtimeMediaSource.h b/Source/WebKit/UIProcess/SpeechRecognitionRemoteRealtimeMediaSource.h +index 1064df65b50b1880db0b49a2c0809a4f414f4704..d6f105eb0742b15923b87bcb29095827837cdbfa 100644 +--- a/Source/WebKit/UIProcess/SpeechRecognitionRemoteRealtimeMediaSource.h ++++ b/Source/WebKit/UIProcess/SpeechRecognitionRemoteRealtimeMediaSource.h +@@ -27,6 +27,7 @@ + + #if ENABLE(MEDIA_STREAM) + ++#include + #include + #include + diff --git a/Source/WebKit/UIProcess/WebAuthentication/Mock/MockLocalConnection.h b/Source/WebKit/UIProcess/WebAuthentication/Mock/MockLocalConnection.h index 684b9616573761123fbcc0d94be29de519ecced6..51ff18323ece0ee15c87d63a1d6fd604377ee968 100644 --- a/Source/WebKit/UIProcess/WebAuthentication/Mock/MockLocalConnection.h @@ -16359,7 +16380,7 @@ index 684b9616573761123fbcc0d94be29de519ecced6..51ff18323ece0ee15c87d63a1d6fd604 namespace WebKit { diff --git a/Source/WebKit/UIProcess/WebContextMenuProxy.h b/Source/WebKit/UIProcess/WebContextMenuProxy.h -index be46daa094f16baf6bd52f9cf651c119b1e1b858..bee096090050e87158764f45e1ba128071ba25bb 100644 +index 2071f653d6fd7413dd5336b85d02c6a92cab68b2..af9409c0adfc97a60d4ed789999310a7745a26be 100644 --- a/Source/WebKit/UIProcess/WebContextMenuProxy.h +++ b/Source/WebKit/UIProcess/WebContextMenuProxy.h @@ -46,6 +46,7 @@ public: @@ -16371,18 +16392,18 @@ index be46daa094f16baf6bd52f9cf651c119b1e1b858..bee096090050e87158764f45e1ba1280 WebPageProxy* page() const { return m_page.get(); } diff --git a/Source/WebKit/UIProcess/WebFrameProxy.cpp b/Source/WebKit/UIProcess/WebFrameProxy.cpp -index 0553afc5aae92320370e4ee19ecaee299e6bc774..b96613b7aa929a246cefa3274a5b2e6bdef71d8d 100644 +index 1c60e29803a459509da6d472cac2c82698a67a75..864cdd280a58f25cf3d39d1dd772048d1b9eb113 100644 --- a/Source/WebKit/UIProcess/WebFrameProxy.cpp +++ b/Source/WebKit/UIProcess/WebFrameProxy.cpp -@@ -28,6 +28,7 @@ - - #include "APINavigation.h" +@@ -30,6 +30,7 @@ #include "Connection.h" + #include "DrawingAreaMessages.h" + #include "DrawingAreaProxy.h" +#include "FormDataReference.h" + #include "FrameTreeCreationParameters.h" #include "FrameTreeNodeData.h" #include "ProvisionalFrameProxy.h" - #include "ProvisionalPageProxy.h" -@@ -35,6 +36,7 @@ +@@ -38,6 +39,7 @@ #include "WebFrameMessages.h" #include "WebFramePolicyListenerProxy.h" #include "WebFrameProxyMessages.h" @@ -16392,7 +16413,7 @@ index 0553afc5aae92320370e4ee19ecaee299e6bc774..b96613b7aa929a246cefa3274a5b2e6b #include "WebPasteboardProxy.h" diff --git a/Source/WebKit/UIProcess/WebPageInspectorEmulationAgent.cpp b/Source/WebKit/UIProcess/WebPageInspectorEmulationAgent.cpp new file mode 100644 -index 0000000000000000000000000000000000000000..ae45b4212bdb3f6a004cc80a1d91146b540f86f5 +index 0000000000000000000000000000000000000000..f679253970367597bf4801dc5070edd6b8f4026a --- /dev/null +++ b/Source/WebKit/UIProcess/WebPageInspectorEmulationAgent.cpp @@ -0,0 +1,147 @@ @@ -16498,12 +16519,12 @@ index 0000000000000000000000000000000000000000..ae45b4212bdb3f6a004cc80a1d91146b + return { }; +} + -+Inspector::Protocol::ErrorStringOr WebPageInspectorEmulationAgent::setAuthCredentials(const String& username, const String& password) ++Inspector::Protocol::ErrorStringOr WebPageInspectorEmulationAgent::setAuthCredentials(const String& username, const String& password, const String& origin) +{ + if (!!username && !!password) -+ m_page.setAuthCredentialsForAutomation(WebCore::Credential(username, password, CredentialPersistencePermanent)); ++ m_page.setAuthCredentialsForAutomation(WebCore::Credential(username, password, CredentialPersistencePermanent), URL(origin)); + else -+ m_page.setAuthCredentialsForAutomation(std::optional()); ++ m_page.setAuthCredentialsForAutomation(std::optional(), std::optional()); + return { }; +} + @@ -16545,7 +16566,7 @@ index 0000000000000000000000000000000000000000..ae45b4212bdb3f6a004cc80a1d91146b +} // namespace WebKit diff --git a/Source/WebKit/UIProcess/WebPageInspectorEmulationAgent.h b/Source/WebKit/UIProcess/WebPageInspectorEmulationAgent.h new file mode 100644 -index 0000000000000000000000000000000000000000..b3bb4880a866ee6132b8b26acf8dad81afe14d85 +index 0000000000000000000000000000000000000000..12657f8e7c4b2596707680d299dc8084d48f03c2 --- /dev/null +++ b/Source/WebKit/UIProcess/WebPageInspectorEmulationAgent.h @@ -0,0 +1,75 @@ @@ -16606,7 +16627,7 @@ index 0000000000000000000000000000000000000000..b3bb4880a866ee6132b8b26acf8dad81 + + void setDeviceMetricsOverride(int width, int height, bool fixedlayout, std::optional&& deviceScaleFactor, Ref&&) override; + Inspector::Protocol::ErrorStringOr setJavaScriptEnabled(bool enabled) override; -+ Inspector::Protocol::ErrorStringOr setAuthCredentials(const String&, const String&) override; ++ Inspector::Protocol::ErrorStringOr setAuthCredentials(const String&, const String&, const String&) override; + Inspector::Protocol::ErrorStringOr setActiveAndFocused(std::optional&&) override; + Inspector::Protocol::ErrorStringOr grantPermissions(const String& origin, Ref&& permissions) override; + Inspector::Protocol::ErrorStringOr resetPermissions() override; @@ -17055,10 +17076,10 @@ index 0000000000000000000000000000000000000000..3e87bf40ced2301f4fb145c6cb31f2cf + +} // namespace WebKit diff --git a/Source/WebKit/UIProcess/WebPageProxy.cpp b/Source/WebKit/UIProcess/WebPageProxy.cpp -index e0d41e09cd86f504afe6beb129191cf1f9cd8e08..78908baacef0b114d42775af54767bc195de49ad 100644 +index d0e7a128c2514d2d6f660a7f751c6484ecacda4b..b5a5fad0b3817bd6d695d366a332ff12cc457d08 100644 --- a/Source/WebKit/UIProcess/WebPageProxy.cpp +++ b/Source/WebKit/UIProcess/WebPageProxy.cpp -@@ -153,6 +153,7 @@ +@@ -157,6 +157,7 @@ #include #include #include @@ -17066,7 +17087,7 @@ index e0d41e09cd86f504afe6beb129191cf1f9cd8e08..78908baacef0b114d42775af54767bc1 #include #include #include -@@ -176,15 +177,18 @@ +@@ -180,15 +181,18 @@ #include #include #include @@ -17085,7 +17106,7 @@ index e0d41e09cd86f504afe6beb129191cf1f9cd8e08..78908baacef0b114d42775af54767bc1 #include #include #include -@@ -253,6 +257,9 @@ +@@ -257,6 +261,9 @@ #if PLATFORM(GTK) #include "GtkSettingsManager.h" @@ -17095,7 +17116,7 @@ index e0d41e09cd86f504afe6beb129191cf1f9cd8e08..78908baacef0b114d42775af54767bc1 #include #endif -@@ -353,6 +360,8 @@ using namespace WebCore; +@@ -357,6 +364,8 @@ using namespace WebCore; namespace WebKit { @@ -17104,7 +17125,7 @@ index e0d41e09cd86f504afe6beb129191cf1f9cd8e08..78908baacef0b114d42775af54767bc1 DEFINE_DEBUG_ONLY_GLOBAL(WTF::RefCountedLeakCounter, webPageProxyCounter, ("WebPageProxy")); class StorageRequests { -@@ -620,6 +629,10 @@ WebPageProxy::~WebPageProxy() +@@ -622,6 +631,10 @@ WebPageProxy::~WebPageProxy() if (m_preferences->mediaSessionCoordinatorEnabled()) GroupActivitiesSessionNotifier::sharedNotifier().removeWebPage(*this); #endif @@ -17115,7 +17136,7 @@ index e0d41e09cd86f504afe6beb129191cf1f9cd8e08..78908baacef0b114d42775af54767bc1 } void WebPageProxy::addAllMessageReceivers() -@@ -1045,6 +1058,7 @@ void WebPageProxy::finishAttachingToWebProcess(ProcessLaunchReason reason) +@@ -1050,6 +1063,7 @@ void WebPageProxy::finishAttachingToWebProcess(ProcessLaunchReason reason) m_pageLoadState.didSwapWebProcesses(); if (reason != ProcessLaunchReason::InitialProcess) m_drawingArea->waitForBackingStoreUpdateOnNextPaint(); @@ -17123,7 +17144,7 @@ index e0d41e09cd86f504afe6beb129191cf1f9cd8e08..78908baacef0b114d42775af54767bc1 } void WebPageProxy::didAttachToRunningProcess() -@@ -1427,6 +1441,21 @@ WebProcessProxy& WebPageProxy::ensureRunningProcess() +@@ -1435,6 +1449,21 @@ WebProcessProxy& WebPageProxy::ensureRunningProcess() return m_process; } @@ -17145,13 +17166,14 @@ index e0d41e09cd86f504afe6beb129191cf1f9cd8e08..78908baacef0b114d42775af54767bc1 RefPtr WebPageProxy::loadRequest(ResourceRequest&& request, ShouldOpenExternalURLsPolicy shouldOpenExternalURLsPolicy, API::Object* userData) { if (m_isClosed) -@@ -2001,6 +2030,31 @@ void WebPageProxy::setControlledByAutomation(bool controlled) +@@ -2011,6 +2040,32 @@ void WebPageProxy::setControlledByAutomation(bool controlled) websiteDataStore().networkProcess().send(Messages::NetworkProcess::SetSessionIsControlledByAutomation(m_websiteDataStore->sessionID(), m_controlledByAutomation), 0); } -+void WebPageProxy::setAuthCredentialsForAutomation(std::optional&& credentials) ++void WebPageProxy::setAuthCredentialsForAutomation(std::optional&& credentials, std::optional&& origin) +{ + m_credentialsForAutomation = WTFMove(credentials); ++ m_authOriginForAutomation = WTFMove(origin); +} + +void WebPageProxy::setPermissionsForAutomation(const HashMap>& permissions) @@ -17177,7 +17199,7 @@ index e0d41e09cd86f504afe6beb129191cf1f9cd8e08..78908baacef0b114d42775af54767bc1 void WebPageProxy::createInspectorTarget(const String& targetId, Inspector::InspectorTargetType type) { MESSAGE_CHECK(m_process, !targetId.isEmpty()); -@@ -2195,6 +2249,25 @@ void WebPageProxy::updateActivityState(OptionSet flagsToUpd +@@ -2205,6 +2260,25 @@ void WebPageProxy::updateActivityState(OptionSet flagsToUpd { bool wasVisible = isViewVisible(); m_activityState.remove(flagsToUpdate); @@ -17203,7 +17225,7 @@ index e0d41e09cd86f504afe6beb129191cf1f9cd8e08..78908baacef0b114d42775af54767bc1 if (flagsToUpdate & ActivityState::IsFocused && pageClient().isViewFocused()) m_activityState.add(ActivityState::IsFocused); if (flagsToUpdate & ActivityState::WindowIsActive && pageClient().isViewWindowActive()) -@@ -2833,6 +2906,8 @@ void WebPageProxy::performDragControllerAction(DragControllerAction action, Drag +@@ -2841,6 +2915,8 @@ void WebPageProxy::performDragControllerAction(DragControllerAction action, Drag { if (!hasRunningProcess()) return; @@ -17212,7 +17234,7 @@ index e0d41e09cd86f504afe6beb129191cf1f9cd8e08..78908baacef0b114d42775af54767bc1 #if PLATFORM(GTK) UNUSED_PARAM(dragStorageName); UNUSED_PARAM(sandboxExtensionHandle); -@@ -2843,6 +2918,8 @@ void WebPageProxy::performDragControllerAction(DragControllerAction action, Drag +@@ -2851,6 +2927,8 @@ void WebPageProxy::performDragControllerAction(DragControllerAction action, Drag m_process->assumeReadAccessToBaseURL(*this, url); ASSERT(dragData.platformData()); @@ -17221,7 +17243,7 @@ index e0d41e09cd86f504afe6beb129191cf1f9cd8e08..78908baacef0b114d42775af54767bc1 send(Messages::WebPage::PerformDragControllerAction(action, dragData.clientPosition(), dragData.globalPosition(), dragData.draggingSourceOperationMask(), *dragData.platformData(), dragData.flags())); #else send(Messages::WebPage::PerformDragControllerAction(action, dragData, sandboxExtensionHandle, sandboxExtensionsForUpload)); -@@ -2858,18 +2935,41 @@ void WebPageProxy::didPerformDragControllerAction(std::optional dragOperationMask) { if (!hasRunningProcess()) -@@ -2878,6 +2978,24 @@ void WebPageProxy::dragEnded(const IntPoint& clientPosition, const IntPoint& glo +@@ -2886,6 +2987,24 @@ void WebPageProxy::dragEnded(const IntPoint& clientPosition, const IntPoint& glo setDragCaretRect({ }); } @@ -17291,7 +17313,7 @@ index e0d41e09cd86f504afe6beb129191cf1f9cd8e08..78908baacef0b114d42775af54767bc1 void WebPageProxy::didPerformDragOperation(bool handled) { pageClient().didPerformDragOperation(handled); -@@ -2890,8 +3008,18 @@ void WebPageProxy::didStartDrag() +@@ -2898,8 +3017,18 @@ void WebPageProxy::didStartDrag() discardQueuedMouseEvents(); send(Messages::WebPage::DidStartDrag()); @@ -17311,7 +17333,7 @@ index e0d41e09cd86f504afe6beb129191cf1f9cd8e08..78908baacef0b114d42775af54767bc1 void WebPageProxy::dragCancelled() { if (hasRunningProcess()) -@@ -3000,16 +3128,38 @@ void WebPageProxy::processNextQueuedMouseEvent() +@@ -3008,17 +3137,39 @@ void WebPageProxy::processNextQueuedMouseEvent() m_process->startResponsivenessTimer(); } @@ -17330,6 +17352,7 @@ index e0d41e09cd86f504afe6beb129191cf1f9cd8e08..78908baacef0b114d42775af54767bc1 +#endif + + LOG_WITH_STREAM(MouseHandling, stream << "UIProcess: sent mouse event " << eventType << " (queue size " << m_mouseEventQueue.size() << ")"); ++ m_process->recordUserGestureAuthorizationToken(event.authorizationToken()); + send(Messages::WebPage::MouseEvent(event, sandboxExtensions)); + } else { +#if PLATFORM(WIN) || PLATFORM(COCOA) @@ -17345,6 +17368,7 @@ index e0d41e09cd86f504afe6beb129191cf1f9cd8e08..78908baacef0b114d42775af54767bc1 + Vector sandboxExtensionsForUpload; - LOG_WITH_STREAM(MouseHandling, stream << "UIProcess: sent mouse event " << eventType << " (queue size " << m_mouseEventQueue.size() << ")"); +- m_process->recordUserGestureAuthorizationToken(event.authorizationToken()); - send(Messages::WebPage::MouseEvent(event, sandboxExtensions)); + performDragOperation(dragData, ""_s, WTFMove(sandboxExtensionHandle), WTFMove(sandboxExtensionsForUpload)); + } @@ -17356,7 +17380,7 @@ index e0d41e09cd86f504afe6beb129191cf1f9cd8e08..78908baacef0b114d42775af54767bc1 } void WebPageProxy::doAfterProcessingAllPendingMouseEvents(WTF::Function&& action) -@@ -3181,7 +3331,7 @@ static TrackingType mergeTrackingTypes(TrackingType a, TrackingType b) +@@ -3204,7 +3355,7 @@ static TrackingType mergeTrackingTypes(TrackingType a, TrackingType b) void WebPageProxy::updateTouchEventTracking(const WebTouchEvent& touchStartEvent) { @@ -17365,7 +17389,7 @@ index e0d41e09cd86f504afe6beb129191cf1f9cd8e08..78908baacef0b114d42775af54767bc1 for (auto& touchPoint : touchStartEvent.touchPoints()) { IntPoint location = touchPoint.location(); auto updateTrackingType = [this, location](TrackingType& trackingType, EventTrackingRegions::EventType eventType) { -@@ -3213,7 +3363,7 @@ void WebPageProxy::updateTouchEventTracking(const WebTouchEvent& touchStartEvent +@@ -3236,7 +3387,7 @@ void WebPageProxy::updateTouchEventTracking(const WebTouchEvent& touchStartEvent m_touchAndPointerEventTracking.touchStartTracking = TrackingType::Synchronous; m_touchAndPointerEventTracking.touchMoveTracking = TrackingType::Synchronous; m_touchAndPointerEventTracking.touchEndTracking = TrackingType::Synchronous; @@ -17374,7 +17398,7 @@ index e0d41e09cd86f504afe6beb129191cf1f9cd8e08..78908baacef0b114d42775af54767bc1 } TrackingType WebPageProxy::touchEventTrackingType(const WebTouchEvent& touchStartEvent) const -@@ -3603,6 +3753,8 @@ void WebPageProxy::receivedNavigationPolicyDecision(PolicyAction policyAction, A +@@ -3626,6 +3777,8 @@ void WebPageProxy::receivedNavigationPolicyDecision(PolicyAction policyAction, A if (policyAction != PolicyAction::Use || (!preferences().siteIsolationEnabled() && !frame.isMainFrame()) || !navigation) { @@ -17383,7 +17407,7 @@ index e0d41e09cd86f504afe6beb129191cf1f9cd8e08..78908baacef0b114d42775af54767bc1 receivedPolicyDecision(policyAction, navigation, navigation->websitePolicies(), WTFMove(navigationAction), WTFMove(sender)); return; } -@@ -3673,6 +3825,7 @@ void WebPageProxy::receivedNavigationPolicyDecision(PolicyAction policyAction, A +@@ -3698,6 +3851,7 @@ void WebPageProxy::receivedNavigationPolicyDecision(PolicyAction policyAction, A void WebPageProxy::receivedPolicyDecision(PolicyAction action, API::Navigation* navigation, RefPtr&& websitePolicies, std::variant, Ref>&& navigationActionOrResponse, Ref&& sender, WillContinueLoadInNewProcess willContinueLoadInNewProcess, std::optional sandboxExtensionHandle) { @@ -17391,7 +17415,7 @@ index e0d41e09cd86f504afe6beb129191cf1f9cd8e08..78908baacef0b114d42775af54767bc1 if (!hasRunningProcess()) { sender->send(PolicyDecision { sender->identifier(), isNavigatingToAppBoundDomain(), PolicyAction::Ignore, 0, std::nullopt, std::nullopt }); return; -@@ -4447,6 +4600,11 @@ void WebPageProxy::pageScaleFactorDidChange(double scaleFactor) +@@ -4483,6 +4637,11 @@ void WebPageProxy::pageScaleFactorDidChange(double scaleFactor) m_pageScaleFactor = scaleFactor; } @@ -17403,7 +17427,7 @@ index e0d41e09cd86f504afe6beb129191cf1f9cd8e08..78908baacef0b114d42775af54767bc1 void WebPageProxy::pluginScaleFactorDidChange(double pluginScaleFactor) { m_pluginScaleFactor = pluginScaleFactor; -@@ -4854,6 +5012,7 @@ void WebPageProxy::didDestroyNavigation(uint64_t navigationID) +@@ -4903,6 +5062,7 @@ void WebPageProxy::didDestroyNavigation(uint64_t navigationID) return; m_navigationState->didDestroyNavigation(navigationID); @@ -17411,7 +17435,7 @@ index e0d41e09cd86f504afe6beb129191cf1f9cd8e08..78908baacef0b114d42775af54767bc1 } void WebPageProxy::didStartProvisionalLoadForFrame(FrameIdentifier frameID, FrameInfoData&& frameInfo, ResourceRequest&& request, uint64_t navigationID, URL&& url, URL&& unreachableURL, const UserData& userData) -@@ -5080,6 +5239,8 @@ void WebPageProxy::didFailProvisionalLoadForFrameShared(Ref&& p +@@ -5131,6 +5291,8 @@ void WebPageProxy::didFailProvisionalLoadForFrameShared(Ref&& p m_failingProvisionalLoadURL = { }; @@ -17420,23 +17444,23 @@ index e0d41e09cd86f504afe6beb129191cf1f9cd8e08..78908baacef0b114d42775af54767bc1 // If the provisional page's load fails then we destroy the provisional page. if (m_provisionalPage && m_provisionalPage->mainFrame() == &frame && willContinueLoading == WillContinueLoading::No) m_provisionalPage = nullptr; -@@ -5607,7 +5768,14 @@ void WebPageProxy::decidePolicyForNavigationActionAsync(FrameIdentifier frameID, - NavigationActionData&& navigationActionData, FrameInfoData&& originatingFrameInfo, std::optional originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&& request, - IPC::FormDataReference&& requestBody, WebCore::ResourceResponse&& redirectResponse, uint64_t listenerID) +@@ -5662,7 +5824,14 @@ void WebPageProxy::decidePolicyForNavigationActionAsync(IPC::Connection& connect { -- decidePolicyForNavigationActionAsyncShared(m_process.copyRef(), m_webPageID, frameID, WTFMove(frameInfo), identifier, navigationID, WTFMove(navigationActionData), WTFMove(originatingFrameInfo), originatingPageID, originalRequest, WTFMove(request), WTFMove(requestBody), WTFMove(redirectResponse), listenerID); + RefPtr frame = WebFrameProxy::webFrame(frameID); + MESSAGE_CHECK_BASE(frame, &connection); +- decidePolicyForNavigationActionAsyncShared(Ref { frame->process() }, m_webPageID, frameID, WTFMove(frameInfo), identifier, navigationID, WTFMove(navigationActionData), WTFMove(originatingFrameInfo), originatingPageID, originalRequest, WTFMove(request), WTFMove(requestBody), WTFMove(redirectResponse), listenerID); + if (m_inspectorController->shouldPauseLoading()) { -+ m_inspectorController->setContinueLoadingCallback([this, protectedThis = Ref { *this }, frameID, frameInfo = WTFMove(frameInfo), identifier, navigationID, navigationActionData = WTFMove(navigationActionData), ++ m_inspectorController->setContinueLoadingCallback([this, protectedThis = Ref { *this }, frame, frameID, frameInfo = WTFMove(frameInfo), identifier, navigationID, navigationActionData = WTFMove(navigationActionData), + originatingFrameInfo = WTFMove(originatingFrameInfo), originatingPageID, originalRequest, request = WTFMove(request), requestBody = WTFMove(requestBody), redirectResponse = WTFMove(redirectResponse), listenerID] () mutable { -+ decidePolicyForNavigationActionAsyncShared(m_process.copyRef(), m_webPageID, frameID, WTFMove(frameInfo), identifier, navigationID, WTFMove(navigationActionData), WTFMove(originatingFrameInfo), originatingPageID, originalRequest, WTFMove(request), WTFMove(requestBody), WTFMove(redirectResponse), listenerID); ++ decidePolicyForNavigationActionAsyncShared(Ref { frame->process() }, m_webPageID, frameID, WTFMove(frameInfo), identifier, navigationID, WTFMove(navigationActionData), WTFMove(originatingFrameInfo), originatingPageID, originalRequest, WTFMove(request), WTFMove(requestBody), WTFMove(redirectResponse), listenerID); + }); + } else { -+ decidePolicyForNavigationActionAsyncShared(m_process.copyRef(), m_webPageID, frameID, WTFMove(frameInfo), identifier, navigationID, WTFMove(navigationActionData), WTFMove(originatingFrameInfo), originatingPageID, originalRequest, WTFMove(request), WTFMove(requestBody), WTFMove(redirectResponse), listenerID); ++ decidePolicyForNavigationActionAsyncShared(Ref { frame->process() }, m_webPageID, frameID, WTFMove(frameInfo), identifier, navigationID, WTFMove(navigationActionData), WTFMove(originatingFrameInfo), originatingPageID, originalRequest, WTFMove(request), WTFMove(requestBody), WTFMove(redirectResponse), listenerID); + } } void WebPageProxy::decidePolicyForNavigationActionAsyncShared(Ref&& process, PageIdentifier webPageID, FrameIdentifier frameID, FrameInfoData&& frameInfo, -@@ -6212,6 +6380,7 @@ void WebPageProxy::createNewPage(FrameInfoData&& originatingFrameInfoData, WebPa +@@ -6269,6 +6438,7 @@ void WebPageProxy::createNewPage(FrameInfoData&& originatingFrameInfoData, WebPa if (auto* page = originatingFrameInfo->page()) openerAppInitiatedState = page->lastNavigationWasAppInitiated(); @@ -17444,7 +17468,7 @@ index e0d41e09cd86f504afe6beb129191cf1f9cd8e08..78908baacef0b114d42775af54767bc1 auto completionHandler = [this, protectedThis = Ref { *this }, mainFrameURL, request, reply = WTFMove(reply), privateClickMeasurement = navigationActionData.privateClickMeasurement, openerAppInitiatedState = WTFMove(openerAppInitiatedState)] (RefPtr newPage) mutable { if (!newPage) { reply(std::nullopt, std::nullopt); -@@ -6262,6 +6431,7 @@ void WebPageProxy::createNewPage(FrameInfoData&& originatingFrameInfoData, WebPa +@@ -6322,6 +6492,7 @@ void WebPageProxy::createNewPage(FrameInfoData&& originatingFrameInfoData, WebPa void WebPageProxy::showPage() { m_uiClient->showPage(this); @@ -17452,7 +17476,7 @@ index e0d41e09cd86f504afe6beb129191cf1f9cd8e08..78908baacef0b114d42775af54767bc1 } void WebPageProxy::exitFullscreenImmediately() -@@ -6331,6 +6501,10 @@ void WebPageProxy::closePage() +@@ -6391,6 +6562,10 @@ void WebPageProxy::closePage() if (isClosed()) return; @@ -17463,7 +17487,7 @@ index e0d41e09cd86f504afe6beb129191cf1f9cd8e08..78908baacef0b114d42775af54767bc1 WEBPAGEPROXY_RELEASE_LOG(Process, "closePage:"); pageClient().clearAllEditCommands(); m_uiClient->close(this); -@@ -6367,6 +6541,8 @@ void WebPageProxy::runJavaScriptAlert(FrameIdentifier frameID, FrameInfoData&& f +@@ -6427,6 +6602,8 @@ void WebPageProxy::runJavaScriptAlert(FrameIdentifier frameID, FrameInfoData&& f } runModalJavaScriptDialog(WTFMove(frame), WTFMove(frameInfo), message, [reply = WTFMove(reply)](WebPageProxy& page, WebFrameProxy* frame, FrameInfoData&& frameInfo, const String& message, CompletionHandler&& completion) mutable { @@ -17472,7 +17496,7 @@ index e0d41e09cd86f504afe6beb129191cf1f9cd8e08..78908baacef0b114d42775af54767bc1 page.m_uiClient->runJavaScriptAlert(page, message, frame, WTFMove(frameInfo), [reply = WTFMove(reply), completion = WTFMove(completion)]() mutable { reply(); completion(); -@@ -6388,6 +6564,8 @@ void WebPageProxy::runJavaScriptConfirm(FrameIdentifier frameID, FrameInfoData&& +@@ -6448,6 +6625,8 @@ void WebPageProxy::runJavaScriptConfirm(FrameIdentifier frameID, FrameInfoData&& if (auto* automationSession = process().processPool().automationSession()) automationSession->willShowJavaScriptDialog(*this); } @@ -17481,7 +17505,7 @@ index e0d41e09cd86f504afe6beb129191cf1f9cd8e08..78908baacef0b114d42775af54767bc1 runModalJavaScriptDialog(WTFMove(frame), WTFMove(frameInfo), message, [reply = WTFMove(reply)](WebPageProxy& page, WebFrameProxy* frame, FrameInfoData&& frameInfo, const String& message, CompletionHandler&& completion) mutable { page.m_uiClient->runJavaScriptConfirm(page, message, frame, WTFMove(frameInfo), [reply = WTFMove(reply), completion = WTFMove(completion)](bool result) mutable { -@@ -6411,6 +6589,8 @@ void WebPageProxy::runJavaScriptPrompt(FrameIdentifier frameID, FrameInfoData&& +@@ -6471,6 +6650,8 @@ void WebPageProxy::runJavaScriptPrompt(FrameIdentifier frameID, FrameInfoData&& if (auto* automationSession = process().processPool().automationSession()) automationSession->willShowJavaScriptDialog(*this); } @@ -17490,7 +17514,7 @@ index e0d41e09cd86f504afe6beb129191cf1f9cd8e08..78908baacef0b114d42775af54767bc1 runModalJavaScriptDialog(WTFMove(frame), WTFMove(frameInfo), message, [reply = WTFMove(reply), defaultValue](WebPageProxy& page, WebFrameProxy* frame, FrameInfoData&& frameInfo, const String& message, CompletionHandler&& completion) mutable { page.m_uiClient->runJavaScriptPrompt(page, message, defaultValue, frame, WTFMove(frameInfo), [reply = WTFMove(reply), completion = WTFMove(completion)](auto& result) mutable { -@@ -6526,6 +6706,8 @@ void WebPageProxy::runBeforeUnloadConfirmPanel(FrameIdentifier frameID, FrameInf +@@ -6586,6 +6767,8 @@ void WebPageProxy::runBeforeUnloadConfirmPanel(FrameIdentifier frameID, FrameInf return; } } @@ -17499,7 +17523,7 @@ index e0d41e09cd86f504afe6beb129191cf1f9cd8e08..78908baacef0b114d42775af54767bc1 // Since runBeforeUnloadConfirmPanel() can spin a nested run loop we need to turn off the responsiveness timer and the tryClose timer. m_process->stopResponsivenessTimer(); -@@ -7861,6 +8043,8 @@ void WebPageProxy::didReceiveEvent(WebEventType eventType, bool handled) +@@ -7921,6 +8104,8 @@ void WebPageProxy::didReceiveEvent(WebEventType eventType, bool handled) if (auto* automationSession = process().processPool().automationSession()) automationSession->mouseEventsFlushedForPage(*this); didFinishProcessingAllPendingMouseEvents(); @@ -17508,13 +17532,13 @@ index e0d41e09cd86f504afe6beb129191cf1f9cd8e08..78908baacef0b114d42775af54767bc1 } break; } -@@ -7875,10 +8059,13 @@ void WebPageProxy::didReceiveEvent(WebEventType eventType, bool handled) - pageClient().wheelEventWasNotHandledByWebCore(oldestProcessedEvent); - } +@@ -7933,10 +8118,13 @@ void WebPageProxy::didReceiveEvent(WebEventType eventType, bool handled) + if (!handled) + wheelEventWasNotHandled(oldestProcessedEvent); - if (auto eventToSend = wheelEventCoalescer().nextEventToDispatch()) + if (auto eventToSend = wheelEventCoalescer().nextEventToDispatch()) { - sendWheelEvent(eventToSend->event, eventToSend->processingSteps); + sendWheelEvent(eventToSend->event, eventToSend->processingSteps, rubberBandableEdgesRespectingHistorySwipe()); - else if (auto* automationSession = process().processPool().automationSession()) - automationSession->wheelEventsFlushedForPage(*this); + } else { @@ -17525,7 +17549,7 @@ index e0d41e09cd86f504afe6beb129191cf1f9cd8e08..78908baacef0b114d42775af54767bc1 break; } -@@ -7906,7 +8093,6 @@ void WebPageProxy::didReceiveEvent(WebEventType eventType, bool handled) +@@ -7966,7 +8154,6 @@ void WebPageProxy::didReceiveEvent(WebEventType eventType, bool handled) // The call to doneWithKeyEvent may close this WebPage. // Protect against this being destroyed. Ref protect(*this); @@ -17533,7 +17557,7 @@ index e0d41e09cd86f504afe6beb129191cf1f9cd8e08..78908baacef0b114d42775af54767bc1 pageClient().doneWithKeyEvent(event, handled); if (!handled) m_uiClient->didNotHandleKeyEvent(this, event); -@@ -7915,6 +8101,7 @@ void WebPageProxy::didReceiveEvent(WebEventType eventType, bool handled) +@@ -7975,6 +8162,7 @@ void WebPageProxy::didReceiveEvent(WebEventType eventType, bool handled) if (!canProcessMoreKeyEvents) { if (auto* automationSession = process().processPool().automationSession()) automationSession->keyboardEventsFlushedForPage(*this); @@ -17541,7 +17565,7 @@ index e0d41e09cd86f504afe6beb129191cf1f9cd8e08..78908baacef0b114d42775af54767bc1 } break; } -@@ -8268,7 +8455,10 @@ void WebPageProxy::dispatchProcessDidTerminate(ProcessTerminationReason reason) +@@ -8328,7 +8516,10 @@ void WebPageProxy::dispatchProcessDidTerminate(ProcessTerminationReason reason) { WEBPAGEPROXY_RELEASE_LOG_ERROR(Loading, "dispatchProcessDidTerminate: reason=%" PUBLIC_LOG_STRING, processTerminationReasonToString(reason)); @@ -17553,7 +17577,7 @@ index e0d41e09cd86f504afe6beb129191cf1f9cd8e08..78908baacef0b114d42775af54767bc1 if (m_loaderClient) handledByClient = reason != ProcessTerminationReason::RequestedByClient && m_loaderClient->processDidCrash(*this); else -@@ -8615,6 +8805,7 @@ bool WebPageProxy::useGPUProcessForDOMRenderingEnabled() const +@@ -8676,6 +8867,7 @@ bool WebPageProxy::useGPUProcessForDOMRenderingEnabled() const WebPageCreationParameters WebPageProxy::creationParameters(WebProcessProxy& process, DrawingAreaProxy& drawingArea, RefPtr&& websitePolicies) { @@ -17561,7 +17585,7 @@ index e0d41e09cd86f504afe6beb129191cf1f9cd8e08..78908baacef0b114d42775af54767bc1 WebPageCreationParameters parameters; parameters.processDisplayName = configuration().processDisplayName(); -@@ -8818,6 +9009,8 @@ WebPageCreationParameters WebPageProxy::creationParameters(WebProcessProxy& proc +@@ -8879,6 +9071,8 @@ WebPageCreationParameters WebPageProxy::creationParameters(WebProcessProxy& proc parameters.httpsUpgradeEnabled = preferences().upgradeKnownHostsToHTTPSEnabled() ? m_configuration->httpsUpgradeEnabled() : false; @@ -17570,12 +17594,40 @@ index e0d41e09cd86f504afe6beb129191cf1f9cd8e08..78908baacef0b114d42775af54767bc1 #if PLATFORM(IOS) // FIXME: This is also being passed over the to WebProcess via the PreferencesStore. parameters.allowsDeprecatedSynchronousXMLHttpRequestDuringUnload = allowsDeprecatedSynchronousXMLHttpRequestDuringUnload(); -@@ -8901,6 +9094,14 @@ void WebPageProxy::gamepadActivity(const Vector& gamepadDatas, Even +@@ -8959,8 +9153,42 @@ void WebPageProxy::gamepadActivity(const Vector>& gam + #endif + ++bool WebPageProxy::shouldSendAutomationCredentialsForProtectionSpace(const WebProtectionSpace& protectionSpace) ++{ ++ if (m_authOriginForAutomation.has_value() && !m_authOriginForAutomation.value().isEmpty()) { ++ switch (protectionSpace.serverType()) { ++ case WebCore::ProtectionSpace::ServerType::HTTP: ++ if (m_authOriginForAutomation.value().protocol() != "http"_s) ++ return false; ++ break; ++ case WebCore::ProtectionSpace::ServerType::HTTPS: ++ if (m_authOriginForAutomation.value().protocol() != "https"_s) ++ return false; ++ break; ++ default: ++ return false; ++ } ++ ++ if (protectionSpace.host() != m_authOriginForAutomation.value().host()) ++ return false; ++ ++ if (protectionSpace.port() != m_authOriginForAutomation.value().port().value_or(0)) ++ return false; ++ } ++ return true; ++} ++ void WebPageProxy::didReceiveAuthenticationChallengeProxy(Ref&& authenticationChallenge, NegotiatedLegacyTLS negotiatedLegacyTLS) { + if (m_credentialsForAutomation.has_value()) { -+ if (m_credentialsForAutomation->isEmpty() || authenticationChallenge->core().previousFailureCount()) { ++ if (m_credentialsForAutomation->isEmpty() || authenticationChallenge->core().previousFailureCount() || ++ !shouldSendAutomationCredentialsForProtectionSpace(*authenticationChallenge->protectionSpace())) { + authenticationChallenge->listener().completeChallenge(AuthenticationChallengeDisposition::PerformDefaultHandling); + return; + } @@ -17585,7 +17637,7 @@ index e0d41e09cd86f504afe6beb129191cf1f9cd8e08..78908baacef0b114d42775af54767bc1 if (negotiatedLegacyTLS == NegotiatedLegacyTLS::Yes) { m_navigationClient->shouldAllowLegacyTLS(*this, authenticationChallenge.get(), [this, protectedThis = Ref { *this }, authenticationChallenge] (bool shouldAllowLegacyTLS) { if (shouldAllowLegacyTLS) -@@ -9004,6 +9205,15 @@ void WebPageProxy::requestGeolocationPermissionForFrame(GeolocationIdentifier ge +@@ -9064,6 +9292,15 @@ void WebPageProxy::requestGeolocationPermissionForFrame(GeolocationIdentifier ge request->deny(); }; @@ -17602,7 +17654,7 @@ index e0d41e09cd86f504afe6beb129191cf1f9cd8e08..78908baacef0b114d42775af54767bc1 // and make it one UIClient call that calls the completionHandler with false // if there is no delegate instead of returning the completionHandler diff --git a/Source/WebKit/UIProcess/WebPageProxy.h b/Source/WebKit/UIProcess/WebPageProxy.h -index 250c1cfff0088c5b22a3d2fbebd772e21d9d1e53..e24108e8f7db5f1d7f7c2d97f5bb8757abb38826 100644 +index d684b3cc6f4b5cc7d5f8b92df46653b51a6c14e1..d2f7a814f59db2cbc385928ac7546e01ba034271 100644 --- a/Source/WebKit/UIProcess/WebPageProxy.h +++ b/Source/WebKit/UIProcess/WebPageProxy.h @@ -39,6 +39,7 @@ @@ -17640,7 +17692,7 @@ index 250c1cfff0088c5b22a3d2fbebd772e21d9d1e53..e24108e8f7db5f1d7f7c2d97f5bb8757 #if ENABLE(WIRELESS_PLAYBACK_TARGET) && !PLATFORM(IOS_FAMILY) #include #include -@@ -257,6 +269,7 @@ class CertificateInfo; +@@ -261,6 +273,7 @@ class CertificateInfo; class Cursor; class DataSegment; class DragData; @@ -17648,7 +17700,7 @@ index 250c1cfff0088c5b22a3d2fbebd772e21d9d1e53..e24108e8f7db5f1d7f7c2d97f5bb8757 class FloatRect; class FontAttributeChanges; class FontChanges; -@@ -264,7 +277,6 @@ class GraphicsLayer; +@@ -268,7 +281,6 @@ class GraphicsLayer; class IntSize; class ProtectionSpace; class RunLoopObserver; @@ -17656,7 +17708,7 @@ index 250c1cfff0088c5b22a3d2fbebd772e21d9d1e53..e24108e8f7db5f1d7f7c2d97f5bb8757 class SharedBuffer; class SpeechRecognitionRequest; class TextIndicator; -@@ -555,6 +567,8 @@ public: +@@ -567,6 +579,8 @@ public: void setControlledByAutomation(bool); WebPageInspectorController& inspectorController() { return *m_inspectorController; } @@ -17665,11 +17717,11 @@ index 250c1cfff0088c5b22a3d2fbebd772e21d9d1e53..e24108e8f7db5f1d7f7c2d97f5bb8757 #if PLATFORM(IOS_FAMILY) void showInspectorIndication(); -@@ -667,6 +681,11 @@ public: +@@ -680,6 +694,11 @@ public: void setPageLoadStateObserver(std::unique_ptr&&); -+ void setAuthCredentialsForAutomation(std::optional&&); ++ void setAuthCredentialsForAutomation(std::optional&&, std::optional&&); + void setPermissionsForAutomation(const HashMap>&); + void setActiveForAutomation(std::optional active); + void logToStderr(const String& str); @@ -17677,7 +17729,7 @@ index 250c1cfff0088c5b22a3d2fbebd772e21d9d1e53..e24108e8f7db5f1d7f7c2d97f5bb8757 void initializeWebPage(); void setDrawingArea(std::unique_ptr&&); -@@ -691,6 +710,7 @@ public: +@@ -704,6 +723,7 @@ public: void closePage(); void addPlatformLoadParameters(WebProcessProxy&, LoadParameters&); @@ -17685,7 +17737,7 @@ index 250c1cfff0088c5b22a3d2fbebd772e21d9d1e53..e24108e8f7db5f1d7f7c2d97f5bb8757 RefPtr loadRequest(WebCore::ResourceRequest&&, WebCore::ShouldOpenExternalURLsPolicy = WebCore::ShouldOpenExternalURLsPolicy::ShouldAllowExternalSchemesButNotAppLinks, API::Object* userData = nullptr); RefPtr loadFile(const String& fileURL, const String& resourceDirectoryURL, bool isAppInitiated = true, API::Object* userData = nullptr); RefPtr loadData(const IPC::DataReference&, const String& MIMEType, const String& encoding, const String& baseURL, API::Object* userData = nullptr, WebCore::ShouldOpenExternalURLsPolicy = WebCore::ShouldOpenExternalURLsPolicy::ShouldNotAllow); -@@ -1240,6 +1260,7 @@ public: +@@ -1257,6 +1277,7 @@ public: #endif void pageScaleFactorDidChange(double); @@ -17693,7 +17745,7 @@ index 250c1cfff0088c5b22a3d2fbebd772e21d9d1e53..e24108e8f7db5f1d7f7c2d97f5bb8757 void pluginScaleFactorDidChange(double); void pluginZoomFactorDidChange(double); -@@ -1330,14 +1351,20 @@ public: +@@ -1347,14 +1368,20 @@ public: void didStartDrag(); void dragCancelled(); void setDragCaretRect(const WebCore::IntRect&); @@ -17715,7 +17767,15 @@ index 250c1cfff0088c5b22a3d2fbebd772e21d9d1e53..e24108e8f7db5f1d7f7c2d97f5bb8757 #endif void processDidBecomeUnresponsive(); -@@ -1594,6 +1621,8 @@ public: +@@ -1578,6 +1605,7 @@ public: + void setViewportSizeForCSSViewportUnits(const WebCore::FloatSize&); + WebCore::FloatSize viewportSizeForCSSViewportUnits() const { return valueOrDefault(m_viewportSizeForCSSViewportUnits); } + ++ bool shouldSendAutomationCredentialsForProtectionSpace(const WebProtectionSpace&); + void didReceiveAuthenticationChallengeProxy(Ref&&, NegotiatedLegacyTLS); + void negotiatedLegacyTLS(); + void didNegotiateModernTLS(const URL&); +@@ -1612,6 +1640,8 @@ public: #if PLATFORM(COCOA) || PLATFORM(GTK) RefPtr takeViewSnapshot(std::optional&&); @@ -17724,7 +17784,7 @@ index 250c1cfff0088c5b22a3d2fbebd772e21d9d1e53..e24108e8f7db5f1d7f7c2d97f5bb8757 #endif #if ENABLE(WEB_CRYPTO) -@@ -2838,6 +2867,7 @@ private: +@@ -2862,6 +2892,7 @@ private: String m_overrideContentSecurityPolicy; RefPtr m_inspector; @@ -17732,7 +17792,7 @@ index 250c1cfff0088c5b22a3d2fbebd772e21d9d1e53..e24108e8f7db5f1d7f7c2d97f5bb8757 #if PLATFORM(COCOA) WeakObjCPtr m_cocoaView; -@@ -3115,6 +3145,20 @@ private: +@@ -3138,6 +3169,20 @@ private: unsigned m_currentDragNumberOfFilesToBeAccepted { 0 }; WebCore::IntRect m_currentDragCaretRect; WebCore::IntRect m_currentDragCaretEditableElementRect; @@ -17753,18 +17813,19 @@ index 250c1cfff0088c5b22a3d2fbebd772e21d9d1e53..e24108e8f7db5f1d7f7c2d97f5bb8757 #endif PageLoadState m_pageLoadState; -@@ -3329,6 +3373,9 @@ private: +@@ -3352,6 +3397,10 @@ private: RefPtr messageBody; }; Vector m_pendingInjectedBundleMessages; + std::optional m_credentialsForAutomation; ++ std::optional m_authOriginForAutomation; + HashMap> m_permissionsForAutomation; + std::optional m_activeForAutomation; #if PLATFORM(IOS_FAMILY) && ENABLE(DEVICE_ORIENTATION) std::unique_ptr m_webDeviceOrientationUpdateProviderProxy; diff --git a/Source/WebKit/UIProcess/WebPageProxy.messages.in b/Source/WebKit/UIProcess/WebPageProxy.messages.in -index 2e716ece0a04d989dd39b91247ab1bb2479cecd1..335b5e3a451eb74700bb21f27c0ee070f4c511b3 100644 +index a87e39caa0320485c51e503cb958805dd0bf2dd2..f045c8dbe1e465154c89f1f10f70491e7e360772 100644 --- a/Source/WebKit/UIProcess/WebPageProxy.messages.in +++ b/Source/WebKit/UIProcess/WebPageProxy.messages.in @@ -29,6 +29,7 @@ messages -> WebPageProxy { @@ -17775,7 +17836,7 @@ index 2e716ece0a04d989dd39b91247ab1bb2479cecd1..335b5e3a451eb74700bb21f27c0ee070 DidChangeViewportProperties(struct WebCore::ViewportAttributes attributes) DidReceiveEvent(enum:int8_t WebKit::WebEventType eventType, bool handled) -@@ -175,6 +176,7 @@ messages -> WebPageProxy { +@@ -177,6 +178,7 @@ messages -> WebPageProxy { #endif PageScaleFactorDidChange(double scaleFactor) @@ -17783,7 +17844,7 @@ index 2e716ece0a04d989dd39b91247ab1bb2479cecd1..335b5e3a451eb74700bb21f27c0ee070 PluginScaleFactorDidChange(double zoomFactor) PluginZoomFactorDidChange(double zoomFactor) -@@ -304,10 +306,12 @@ messages -> WebPageProxy { +@@ -306,10 +308,12 @@ messages -> WebPageProxy { StartDrag(struct WebCore::DragItem dragItem, WebKit::ShareableBitmapHandle dragImage) SetPromisedDataForImage(String pasteboardName, WebKit::SharedMemory::Handle imageHandle, String filename, String extension, String title, String url, String visibleURL, WebKit::SharedMemory::Handle archiveHandle, String originIdentifier) #endif @@ -17814,10 +17875,10 @@ index e68471d45366b6f7a609e6a57bcfea2820511e29..d2344e7b428ae19399ded4e37bfbf81c } diff --git a/Source/WebKit/UIProcess/WebProcessPool.cpp b/Source/WebKit/UIProcess/WebProcessPool.cpp -index de0f53203dec2cd468783f65bb1b16c462e592f2..2152abf7cdbf6d9b1462ed9d0651624da322ecb2 100644 +index 314b088a6b877917913dd8281574982c313b05ef..2b6b4fbde5d8b693efd916e88c8f5434f5d9a935 100644 --- a/Source/WebKit/UIProcess/WebProcessPool.cpp +++ b/Source/WebKit/UIProcess/WebProcessPool.cpp -@@ -364,17 +364,19 @@ void WebProcessPool::setCustomWebContentServiceBundleIdentifier(const String& cu +@@ -374,17 +374,19 @@ void WebProcessPool::setCustomWebContentServiceBundleIdentifier(const String& cu m_configuration->setCustomWebContentServiceBundleIdentifier(customWebContentServiceBundleIdentifier); } @@ -17840,7 +17901,7 @@ index de0f53203dec2cd468783f65bb1b16c462e592f2..2152abf7cdbf6d9b1462ed9d0651624d void WebProcessPool::fullKeyboardAccessModeChanged(bool fullKeyboardAccessEnabled) { -@@ -508,6 +510,14 @@ void WebProcessPool::establishRemoteWorkerContextConnectionToNetworkProcess(Remo +@@ -521,6 +523,14 @@ void WebProcessPool::establishRemoteWorkerContextConnectionToNetworkProcess(Remo RefPtr requestingProcess = requestingProcessIdentifier ? WebProcessProxy::processForIdentifier(*requestingProcessIdentifier) : nullptr; WebProcessPool* processPool = requestingProcess ? &requestingProcess->processPool() : processPools()[0]; @@ -17855,7 +17916,7 @@ index de0f53203dec2cd468783f65bb1b16c462e592f2..2152abf7cdbf6d9b1462ed9d0651624d ASSERT(processPool); WebProcessProxy* remoteWorkerProcessProxy { nullptr }; -@@ -805,7 +815,7 @@ void WebProcessPool::initializeNewWebProcess(WebProcessProxy& process, WebsiteDa +@@ -818,7 +828,7 @@ void WebProcessPool::initializeNewWebProcess(WebProcessProxy& process, WebsiteDa #endif parameters.cacheModel = LegacyGlobalSettings::singleton().cacheModel(); @@ -17865,7 +17926,7 @@ index de0f53203dec2cd468783f65bb1b16c462e592f2..2152abf7cdbf6d9b1462ed9d0651624d parameters.urlSchemesRegisteredAsEmptyDocument = copyToVector(m_schemesToRegisterAsEmptyDocument); diff --git a/Source/WebKit/UIProcess/WebProcessProxy.cpp b/Source/WebKit/UIProcess/WebProcessProxy.cpp -index 57eb1990e20b79e98ad64f97e623c5a0856bc7aa..9ea7d71456194842457e3060d116a55fdeeaa05f 100644 +index 5b43953ac5472e3d54f7d2bc3fab92d7fa6fd751..4256d6f2d3291808a694d494bcfe64e40fcdb313 100644 --- a/Source/WebKit/UIProcess/WebProcessProxy.cpp +++ b/Source/WebKit/UIProcess/WebProcessProxy.cpp @@ -162,6 +162,11 @@ Vector> WebProcessProxy::allProcesses() @@ -17908,10 +17969,10 @@ index 57eb1990e20b79e98ad64f97e623c5a0856bc7aa..9ea7d71456194842457e3060d116a55f if (isPrewarmed()) diff --git a/Source/WebKit/UIProcess/WebProcessProxy.h b/Source/WebKit/UIProcess/WebProcessProxy.h -index c21bba5f13042ba33c63a58a926dbd5c3126f75b..f0e30f78ce21ff91b236fff5e48f3c99ff9f69e0 100644 +index 0c60da7c7026566c30707cd19221e4358506b7f1..3bbb794bb9d76ac2b8466bab900f44b2336f2790 100644 --- a/Source/WebKit/UIProcess/WebProcessProxy.h +++ b/Source/WebKit/UIProcess/WebProcessProxy.h -@@ -163,6 +163,7 @@ public: +@@ -165,6 +165,7 @@ public: static void forWebPagesWithOrigin(PAL::SessionID, const WebCore::SecurityOriginData&, const Function&); static Vector> allowedFirstPartiesForCookies(); @@ -17920,11 +17981,11 @@ index c21bba5f13042ba33c63a58a926dbd5c3126f75b..f0e30f78ce21ff91b236fff5e48f3c99 WebConnection* webConnection() const { return m_webConnection.get(); } diff --git a/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp b/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp -index d0b6307fa055ccb7603d9dced8c261550a0f3083..e1427655f0d8b68090d4f267ecf7c5d50e3fa10e 100644 +index be87ba0c28b0ddd68e38f173c7a2b29116b26f80..a9a2024c83d831adda624bd51e4259634528ff62 100644 --- a/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp +++ b/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp -@@ -2021,6 +2021,12 @@ void WebsiteDataStore::originDirectoryForTesting(URL&& origin, URL&& topOrigin, - networkProcess().websiteDataOriginDirectoryForTesting(m_sessionID, WTFMove(origin), WTFMove(topOrigin), type, WTFMove(completionHandler)); +@@ -2172,6 +2172,12 @@ void WebsiteDataStore::originDirectoryForTesting(WebCore::ClientOrigin&& origin, + networkProcess().websiteDataOriginDirectoryForTesting(m_sessionID, WTFMove(origin), type, WTFMove(completionHandler)); } +void WebsiteDataStore::setDownloadForAutomation(std::optional allow, const String& downloadPath) @@ -17937,10 +17998,10 @@ index d0b6307fa055ccb7603d9dced8c261550a0f3083..e1427655f0d8b68090d4f267ecf7c5d5 void WebsiteDataStore::hasAppBoundSession(CompletionHandler&& completionHandler) const { diff --git a/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h b/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h -index 1dc8b10a94c9a7483826db54a92eb83eda8dfcf1..f0069fcfd8cc57d76e51f3b1fc3b909a810b5e65 100644 +index c38e3b1bc5d2d91b038eea9202d3d5e4aa1bf765..a46f122f7ff0306d11500e9ed7707e22dd919a39 100644 --- a/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h +++ b/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h -@@ -94,6 +94,7 @@ class DeviceIdHashSaltStorage; +@@ -95,6 +95,7 @@ class DeviceIdHashSaltStorage; class DownloadProxy; class NetworkProcessProxy; class SOAuthorizationCoordinator; @@ -17948,7 +18009,7 @@ index 1dc8b10a94c9a7483826db54a92eb83eda8dfcf1..f0069fcfd8cc57d76e51f3b1fc3b909a class VirtualAuthenticatorManager; class WebPageProxy; class WebProcessPool; -@@ -105,6 +106,7 @@ enum class UnifiedOriginStorageLevel : uint8_t; +@@ -106,6 +107,7 @@ enum class UnifiedOriginStorageLevel : uint8_t; enum class WebsiteDataFetchOption : uint8_t; enum class WebsiteDataType : uint32_t; @@ -17956,7 +18017,7 @@ index 1dc8b10a94c9a7483826db54a92eb83eda8dfcf1..f0069fcfd8cc57d76e51f3b1fc3b909a struct NetworkProcessConnectionInfo; struct WebsiteDataRecord; struct WebsiteDataStoreParameters; -@@ -115,6 +117,14 @@ enum class StorageAccessStatus : uint8_t; +@@ -116,6 +118,14 @@ enum class StorageAccessStatus : uint8_t; enum class StorageAccessPromptStatus; #endif @@ -17971,7 +18032,7 @@ index 1dc8b10a94c9a7483826db54a92eb83eda8dfcf1..f0069fcfd8cc57d76e51f3b1fc3b909a class WebsiteDataStore : public API::ObjectImpl, public Identified, public CanMakeWeakPtr { public: static Ref defaultDataStore(); -@@ -306,11 +316,13 @@ public: +@@ -311,11 +321,13 @@ public: const WebCore::CurlProxySettings& networkProxySettings() const { return m_proxySettings; } #endif @@ -17986,7 +18047,7 @@ index 1dc8b10a94c9a7483826db54a92eb83eda8dfcf1..f0069fcfd8cc57d76e51f3b1fc3b909a void setNetworkProxySettings(WebCore::SoupNetworkProxySettings&&); const WebCore::SoupNetworkProxySettings& networkProxySettings() const { return m_networkProxySettings; } void setCookiePersistentStorage(const String&, SoupCookiePersistentStorageType); -@@ -385,6 +397,12 @@ public: +@@ -389,6 +401,12 @@ public: static const String& defaultBaseDataDirectory(); #endif @@ -17999,7 +18060,7 @@ index 1dc8b10a94c9a7483826db54a92eb83eda8dfcf1..f0069fcfd8cc57d76e51f3b1fc3b909a void resetQuota(CompletionHandler&&); void resetStoragePersistedState(CompletionHandler&&); #if PLATFORM(IOS_FAMILY) -@@ -518,9 +536,11 @@ private: +@@ -531,9 +549,11 @@ private: WebCore::CurlProxySettings m_proxySettings; #endif @@ -18012,7 +18073,7 @@ index 1dc8b10a94c9a7483826db54a92eb83eda8dfcf1..f0069fcfd8cc57d76e51f3b1fc3b909a WebCore::SoupNetworkProxySettings m_networkProxySettings; String m_cookiePersistentStoragePath; SoupCookiePersistentStorageType m_cookiePersistentStorageType { SoupCookiePersistentStorageType::SQLite }; -@@ -548,6 +568,10 @@ private: +@@ -561,6 +581,10 @@ private: RefPtr m_cookieStore; RefPtr m_networkProcess; @@ -18609,7 +18670,7 @@ index 0000000000000000000000000000000000000000..6a204c5bba8fb95ddb2d1c14cae7a3a7 + +} // namespace WebKit diff --git a/Source/WebKit/UIProcess/ios/PageClientImplIOS.mm b/Source/WebKit/UIProcess/ios/PageClientImplIOS.mm -index a8212baccb7e67657b12bb53c20a422f51735280..8d0614907116f4db1a4d4ee9722b451e848af457 100644 +index 8d3ead887b12f3521048e99ee79408aa3a1416be..909ef8fe617cc5b126f47ce2b093328ff21711d0 100644 --- a/Source/WebKit/UIProcess/ios/PageClientImplIOS.mm +++ b/Source/WebKit/UIProcess/ios/PageClientImplIOS.mm @@ -434,6 +434,8 @@ IntRect PageClientImpl::rootViewToAccessibilityScreen(const IntRect& rect) @@ -18621,6 +18682,19 @@ index a8212baccb7e67657b12bb53c20a422f51735280..8d0614907116f4db1a4d4ee9722b451e [m_contentView _didHandleKeyEvent:event.nativeEvent() eventWasHandled:eventWasHandled]; } +diff --git a/Source/WebKit/UIProcess/mac/DisplayCaptureSessionManager.mm b/Source/WebKit/UIProcess/mac/DisplayCaptureSessionManager.mm +index 727c18932b6cbebc5bc4838446c65ed379fe30bf..d1740cdba438101a35babc0232cd163713785a54 100644 +--- a/Source/WebKit/UIProcess/mac/DisplayCaptureSessionManager.mm ++++ b/Source/WebKit/UIProcess/mac/DisplayCaptureSessionManager.mm +@@ -115,7 +115,7 @@ std::optional DisplayCaptureSessionManager::deviceSelect + + bool DisplayCaptureSessionManager::useMockCaptureDevices() const + { +- return m_indexOfDeviceSelectedForTesting || MockRealtimeMediaSourceCenter::mockRealtimeMediaSourceCenterEnabled(); ++ return m_indexOfDeviceSelectedForTesting || WebCore::MockRealtimeMediaSourceCenter::mockRealtimeMediaSourceCenterEnabled(); + } + + void DisplayCaptureSessionManager::showWindowPicker(const WebCore::SecurityOriginData& origin, CompletionHandler)>&& completionHandler) diff --git a/Source/WebKit/UIProcess/mac/InspectorPlaywrightAgentClientMac.h b/Source/WebKit/UIProcess/mac/InspectorPlaywrightAgentClientMac.h new file mode 100644 index 0000000000000000000000000000000000000000..a16815a6759da61a6a61e3d79058228af887fd7c @@ -18965,7 +19039,7 @@ index bacd760091da8a2954be7aa263fdb5cd2fb33c41..82b3b4d96e64e54ad19f6aaf519639ac } diff --git a/Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.h b/Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.h -index 0ff5b643de021c6c959412fe25c293fac673fb9b..39bd77283931909133ef9834b40aabae5714f948 100644 +index 46aaf12accb35a2e7685d61887e76f0fe14d76c5..37f418197dcc3f6c74fac258ba77d00df0effeb2 100644 --- a/Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.h +++ b/Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.h @@ -68,6 +68,7 @@ private: @@ -18974,10 +19048,10 @@ index 0ff5b643de021c6c959412fe25c293fac673fb9b..39bd77283931909133ef9834b40aabae void useContextMenuItems(Vector>&&) override; + void hide() override; - void getContextMenuItem(const WebContextMenuItemData&, CompletionHandler&&); - void getContextMenuFromItems(const Vector&, CompletionHandler&&); + bool showAfterPostProcessingContextData(); + diff --git a/Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.mm b/Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.mm -index fb8e4a0ca959b3f769f7e9f2f5b61968e6348ca8..17b1b9f681763bbbac190b37befc94aa400199ad 100644 +index f8d2ef1c25fce3c064ff94a1edf0577c52c0dc5d..a005b389f22e14d9f5af525b8e175dc8cf16efe2 100644 --- a/Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.mm +++ b/Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.mm @@ -478,6 +478,12 @@ void WebContextMenuProxyMac::getShareMenuItem(CompletionHandler takeWindowSnapshot(CGSWindowID windowID, bool captu +@@ -4363,6 +4368,18 @@ static RetainPtr takeWindowSnapshot(CGSWindowID windowID, bool captu return adoptCF(CGWindowListCreateImage(CGRectNull, kCGWindowListOptionIncludingWindow, windowID, imageOptions)); } @@ -19228,6 +19302,20 @@ index b76ee7a59fc05e16eb1ae0b8d613d0066289768f..1aefcf3c666ae8b289062f5584780aa2 RefPtr WebViewImpl::takeViewSnapshot() { NSWindow *window = [m_view window]; +@@ -4982,11 +4999,11 @@ static Vector compositionHighlights(NSAttributedS + Vector highlights; + [string enumerateAttributesInRange:NSMakeRange(0, string.length) options:0 usingBlock:[&highlights](NSDictionary *attributes, NSRange range, BOOL *) { + std::optional backgroundHighlightColor; +- if (CocoaColor *backgroundColor = attributes[NSBackgroundColorAttributeName]) ++ if (WebCore::CocoaColor *backgroundColor = attributes[NSBackgroundColorAttributeName]) + backgroundHighlightColor = WebCore::colorFromCocoaColor(backgroundColor); + + std::optional foregroundHighlightColor; +- if (CocoaColor *foregroundColor = attributes[NSForegroundColorAttributeName]) ++ if (WebCore::CocoaColor *foregroundColor = attributes[NSForegroundColorAttributeName]) + foregroundHighlightColor = WebCore::colorFromCocoaColor(foregroundColor); + + highlights.append({ static_cast(range.location), static_cast(NSMaxRange(range)), backgroundHighlightColor, foregroundHighlightColor }); diff --git a/Source/WebKit/UIProcess/win/InspectorPlaywrightAgentClientWin.cpp b/Source/WebKit/UIProcess/win/InspectorPlaywrightAgentClientWin.cpp new file mode 100644 index 0000000000000000000000000000000000000000..dd7fe0604188bb025f361f1c44685e38bbf935ca @@ -19988,10 +20076,10 @@ index 0000000000000000000000000000000000000000..a7d88f8c745f95af21db71dcfce368ba + +} // namespace WebKit diff --git a/Source/WebKit/WebKit.xcodeproj/project.pbxproj b/Source/WebKit/WebKit.xcodeproj/project.pbxproj -index 0c2e74b392aba509cb181c471e4362a9ccbd63ef..547d13c876ddf8dec4424260bbe1bb5713cf6c67 100644 +index ee5d2c89b59bd32b86f9adc494421705c6170021..9f2701c79e524820e46d3a435de7c0d666056f38 100644 --- a/Source/WebKit/WebKit.xcodeproj/project.pbxproj +++ b/Source/WebKit/WebKit.xcodeproj/project.pbxproj -@@ -1331,6 +1331,7 @@ +@@ -1335,6 +1335,7 @@ 5CABDC8722C40FED001EDE8E /* APIMessageListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CABDC8322C40FA7001EDE8E /* APIMessageListener.h */; }; 5CADDE05215046BD0067D309 /* WKWebProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C74300E21500492004BFA17 /* WKWebProcess.h */; settings = {ATTRIBUTES = (Private, ); }; }; 5CAECB6627465AE400AB78D0 /* UnifiedSource115.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5CAECB5E27465AE300AB78D0 /* UnifiedSource115.cpp */; }; @@ -19999,7 +20087,7 @@ index 0c2e74b392aba509cb181c471e4362a9ccbd63ef..547d13c876ddf8dec4424260bbe1bb57 5CAF7AA726F93AB00003F19E /* adattributiond.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5CAF7AA526F93A950003F19E /* adattributiond.cpp */; }; 5CAFDE452130846300B1F7E1 /* _WKInspector.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CAFDE422130843500B1F7E1 /* _WKInspector.h */; settings = {ATTRIBUTES = (Private, ); }; }; 5CAFDE472130846A00B1F7E1 /* _WKInspectorInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CAFDE442130843600B1F7E1 /* _WKInspectorInternal.h */; }; -@@ -2352,6 +2353,18 @@ +@@ -2086,6 +2087,18 @@ DF0C5F28252ECB8E00D921DB /* WKDownload.h in Headers */ = {isa = PBXBuildFile; fileRef = DF0C5F24252ECB8D00D921DB /* WKDownload.h */; settings = {ATTRIBUTES = (Public, ); }; }; DF0C5F2A252ECB8E00D921DB /* WKDownloadDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = DF0C5F26252ECB8E00D921DB /* WKDownloadDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; DF0C5F2B252ED44000D921DB /* WKDownloadInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = DF0C5F25252ECB8E00D921DB /* WKDownloadInternal.h */; }; @@ -20018,7 +20106,7 @@ index 0c2e74b392aba509cb181c471e4362a9ccbd63ef..547d13c876ddf8dec4424260bbe1bb57 DF462E0F23F22F5500EFF35F /* WKHTTPCookieStorePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = DF462E0E23F22F5300EFF35F /* WKHTTPCookieStorePrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; DF462E1223F338BE00EFF35F /* WKContentWorldPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = DF462E1123F338AD00EFF35F /* WKContentWorldPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; DF7A231C291B088D00B98DF3 /* WKSnapshotConfigurationPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = DF7A231B291B088D00B98DF3 /* WKSnapshotConfigurationPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; -@@ -2413,6 +2426,8 @@ +@@ -2147,6 +2160,8 @@ E5BEF6822130C48000F31111 /* WebDataListSuggestionsDropdownIOS.h in Headers */ = {isa = PBXBuildFile; fileRef = E5BEF6802130C47F00F31111 /* WebDataListSuggestionsDropdownIOS.h */; }; E5CB07DC20E1678F0022C183 /* WKFormColorControl.h in Headers */ = {isa = PBXBuildFile; fileRef = E5CB07DA20E1678F0022C183 /* WKFormColorControl.h */; }; E5CBA76427A318E100DF7858 /* UnifiedSource120.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E5CBA75F27A3187800DF7858 /* UnifiedSource120.cpp */; }; @@ -20027,7 +20115,7 @@ index 0c2e74b392aba509cb181c471e4362a9ccbd63ef..547d13c876ddf8dec4424260bbe1bb57 E5CBA76527A318E100DF7858 /* UnifiedSource118.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E5CBA76127A3187900DF7858 /* UnifiedSource118.cpp */; }; E5CBA76627A318E100DF7858 /* UnifiedSource116.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E5CBA76327A3187B00DF7858 /* UnifiedSource116.cpp */; }; E5CBA76727A318E100DF7858 /* UnifiedSource119.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E5CBA76027A3187900DF7858 /* UnifiedSource119.cpp */; }; -@@ -2429,6 +2444,9 @@ +@@ -2165,6 +2180,9 @@ EBA8D3B627A5E33F00CB7900 /* MockPushServiceConnection.mm in Sources */ = {isa = PBXBuildFile; fileRef = EBA8D3B027A5E33F00CB7900 /* MockPushServiceConnection.mm */; }; EBA8D3B727A5E33F00CB7900 /* PushServiceConnection.mm in Sources */ = {isa = PBXBuildFile; fileRef = EBA8D3B127A5E33F00CB7900 /* PushServiceConnection.mm */; }; ED82A7F2128C6FAF004477B3 /* WKBundlePageOverlay.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A22F0FF1289FCD90085E74F /* WKBundlePageOverlay.h */; settings = {ATTRIBUTES = (Private, ); }; }; @@ -20037,7 +20125,7 @@ index 0c2e74b392aba509cb181c471e4362a9ccbd63ef..547d13c876ddf8dec4424260bbe1bb57 F409BA181E6E64BC009DA28E /* WKDragDestinationAction.h in Headers */ = {isa = PBXBuildFile; fileRef = F409BA171E6E64B3009DA28E /* WKDragDestinationAction.h */; settings = {ATTRIBUTES = (Private, ); }; }; F4299507270E234D0032298B /* StreamMessageReceiver.h in Headers */ = {isa = PBXBuildFile; fileRef = F4299506270E234C0032298B /* StreamMessageReceiver.h */; }; F42D634122A0EFDF00D2FB3A /* WebAutocorrectionData.h in Headers */ = {isa = PBXBuildFile; fileRef = F42D633F22A0EFD300D2FB3A /* WebAutocorrectionData.h */; }; -@@ -5623,6 +5641,7 @@ +@@ -5379,6 +5397,7 @@ 5CABDC8522C40FCC001EDE8E /* WKMessageListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKMessageListener.h; sourceTree = ""; }; 5CABE07A28F60E8A00D83FD9 /* WebPushMessage.serialization.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = WebPushMessage.serialization.in; sourceTree = ""; }; 5CADDE0D2151AA010067D309 /* AuthenticationChallengeDisposition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AuthenticationChallengeDisposition.h; sourceTree = ""; }; @@ -20045,7 +20133,7 @@ index 0c2e74b392aba509cb181c471e4362a9ccbd63ef..547d13c876ddf8dec4424260bbe1bb57 5CAECB5E27465AE300AB78D0 /* UnifiedSource115.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = UnifiedSource115.cpp; sourceTree = ""; }; 5CAF7AA426F93A750003F19E /* adattributiond */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = adattributiond; sourceTree = BUILT_PRODUCTS_DIR; }; 5CAF7AA526F93A950003F19E /* adattributiond.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = adattributiond.cpp; sourceTree = ""; }; -@@ -7455,6 +7474,19 @@ +@@ -6964,6 +6983,19 @@ DF0C5F24252ECB8D00D921DB /* WKDownload.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKDownload.h; sourceTree = ""; }; DF0C5F25252ECB8E00D921DB /* WKDownloadInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKDownloadInternal.h; sourceTree = ""; }; DF0C5F26252ECB8E00D921DB /* WKDownloadDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKDownloadDelegate.h; sourceTree = ""; }; @@ -20065,7 +20153,7 @@ index 0c2e74b392aba509cb181c471e4362a9ccbd63ef..547d13c876ddf8dec4424260bbe1bb57 DF462E0E23F22F5300EFF35F /* WKHTTPCookieStorePrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKHTTPCookieStorePrivate.h; sourceTree = ""; }; DF462E1123F338AD00EFF35F /* WKContentWorldPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKContentWorldPrivate.h; sourceTree = ""; }; DF58C6311371AC5800F9A37C /* NativeWebWheelEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NativeWebWheelEvent.h; sourceTree = ""; }; -@@ -7587,6 +7619,8 @@ +@@ -7096,6 +7128,8 @@ E5CBA76127A3187900DF7858 /* UnifiedSource118.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = UnifiedSource118.cpp; sourceTree = ""; }; E5CBA76227A3187900DF7858 /* UnifiedSource117.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = UnifiedSource117.cpp; sourceTree = ""; }; E5CBA76327A3187B00DF7858 /* UnifiedSource116.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = UnifiedSource116.cpp; sourceTree = ""; }; @@ -20074,7 +20162,7 @@ index 0c2e74b392aba509cb181c471e4362a9ccbd63ef..547d13c876ddf8dec4424260bbe1bb57 E5DEFA6726F8F42600AB68DB /* PhotosUISPI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PhotosUISPI.h; sourceTree = ""; }; EB0D312D275AE13300863D8F /* com.apple.webkit.webpushd.mac.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = com.apple.webkit.webpushd.mac.plist; sourceTree = ""; }; EB0D312E275AE13300863D8F /* com.apple.webkit.webpushd.ios.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = com.apple.webkit.webpushd.ios.plist; sourceTree = ""; }; -@@ -7606,6 +7640,14 @@ +@@ -7119,6 +7153,14 @@ ECA680D31E6904B500731D20 /* ExtraPrivateSymbolsForTAPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExtraPrivateSymbolsForTAPI.h; sourceTree = ""; }; ECBFC1DB1E6A4D66000300C7 /* ExtraPublicSymbolsForTAPI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ExtraPublicSymbolsForTAPI.h; sourceTree = ""; }; F036978715F4BF0500C3A80E /* WebColorPicker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebColorPicker.cpp; sourceTree = ""; }; @@ -20089,7 +20177,7 @@ index 0c2e74b392aba509cb181c471e4362a9ccbd63ef..547d13c876ddf8dec4424260bbe1bb57 F409BA171E6E64B3009DA28E /* WKDragDestinationAction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKDragDestinationAction.h; sourceTree = ""; }; F40D1B68220BDC0F00B49A01 /* WebAutocorrectionContext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = WebAutocorrectionContext.h; path = ios/WebAutocorrectionContext.h; sourceTree = ""; }; F41056612130699A0092281D /* APIAttachmentCocoa.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = APIAttachmentCocoa.mm; sourceTree = ""; }; -@@ -7766,6 +7808,7 @@ +@@ -7284,6 +7326,7 @@ 3766F9EE189A1241003CF19B /* JavaScriptCore.framework in Frameworks */, 3766F9F1189A1254003CF19B /* libicucore.dylib in Frameworks */, 7B9FC5BB28A5233B007570E7 /* libWebKitPlatform.a in Frameworks */, @@ -20097,7 +20185,7 @@ index 0c2e74b392aba509cb181c471e4362a9ccbd63ef..547d13c876ddf8dec4424260bbe1bb57 3766F9EF189A1244003CF19B /* QuartzCore.framework in Frameworks */, 37694525184FC6B600CDE21F /* Security.framework in Frameworks */, 37BEC4DD1948FC6A008B4286 /* WebCore.framework in Frameworks */, -@@ -10207,6 +10250,7 @@ +@@ -9755,6 +9798,7 @@ 99788ACA1F421DCA00C08000 /* _WKAutomationSessionConfiguration.mm */, 990D28A81C6404B000986977 /* _WKAutomationSessionDelegate.h */, 990D28AF1C65203900986977 /* _WKAutomationSessionInternal.h */, @@ -20105,7 +20193,7 @@ index 0c2e74b392aba509cb181c471e4362a9ccbd63ef..547d13c876ddf8dec4424260bbe1bb57 5C4609E222430E4C009943C2 /* _WKContentRuleListAction.h */, 5C4609E322430E4D009943C2 /* _WKContentRuleListAction.mm */, 5C4609E422430E4D009943C2 /* _WKContentRuleListActionInternal.h */, -@@ -11343,6 +11387,7 @@ +@@ -10900,6 +10944,7 @@ E34B110C27C46BC6006D2F2E /* libWebCoreTestShim.dylib */, E34B110F27C46D09006D2F2E /* libWebCoreTestSupport.dylib */, DDE992F4278D06D900F60D26 /* libWebKitAdditions.a */, @@ -20113,7 +20201,7 @@ index 0c2e74b392aba509cb181c471e4362a9ccbd63ef..547d13c876ddf8dec4424260bbe1bb57 57A9FF15252C6AEF006A2040 /* libWTF.a */, 5750F32A2032D4E500389347 /* LocalAuthentication.framework */, 570DAAB0230273D200E8FC04 /* NearField.framework */, -@@ -11882,6 +11927,12 @@ +@@ -11444,6 +11489,12 @@ children = ( 9197940423DBC4BB00257892 /* InspectorBrowserAgent.cpp */, 9197940323DBC4BB00257892 /* InspectorBrowserAgent.h */, @@ -20126,7 +20214,7 @@ index 0c2e74b392aba509cb181c471e4362a9ccbd63ef..547d13c876ddf8dec4424260bbe1bb57 ); path = Agents; sourceTree = ""; -@@ -11890,6 +11941,7 @@ +@@ -11452,6 +11503,7 @@ isa = PBXGroup; children = ( A5D3504D1D78F0D2005124A9 /* RemoteWebInspectorUIProxyMac.mm */, @@ -20134,7 +20222,7 @@ index 0c2e74b392aba509cb181c471e4362a9ccbd63ef..547d13c876ddf8dec4424260bbe1bb57 1CA8B935127C774E00576C2B /* WebInspectorUIProxyMac.mm */, 99A7ACE326012919006D57FD /* WKInspectorResourceURLSchemeHandler.h */, 99A7ACE42601291A006D57FD /* WKInspectorResourceURLSchemeHandler.mm */, -@@ -12471,6 +12523,7 @@ +@@ -12037,6 +12089,7 @@ E1513C65166EABB200149FCB /* AuxiliaryProcessProxy.h */, 46A2B6061E5675A200C3DEDA /* BackgroundProcessResponsivenessTimer.cpp */, 46A2B6071E5675A200C3DEDA /* BackgroundProcessResponsivenessTimer.h */, @@ -20142,7 +20230,7 @@ index 0c2e74b392aba509cb181c471e4362a9ccbd63ef..547d13c876ddf8dec4424260bbe1bb57 07297F9C1C1711EA003F0735 /* DeviceIdHashSaltStorage.cpp */, 07297F9D1C17BBEA223F0735 /* DeviceIdHashSaltStorage.h */, BC2652121182608100243E12 /* DrawingAreaProxy.cpp */, -@@ -12487,6 +12540,8 @@ +@@ -12052,6 +12105,8 @@ 2DD5A72A1EBF09A7009BA597 /* HiddenPageThrottlingAutoIncreasesCounter.h */, 839A2F2F1E2067390039057E /* HighPerformanceGraphicsUsageSampler.cpp */, 839A2F301E2067390039057E /* HighPerformanceGraphicsUsageSampler.h */, @@ -20151,7 +20239,7 @@ index 0c2e74b392aba509cb181c471e4362a9ccbd63ef..547d13c876ddf8dec4424260bbe1bb57 5CEABA2B2333251400797797 /* LegacyGlobalSettings.cpp */, 5CEABA2A2333247700797797 /* LegacyGlobalSettings.h */, 31607F3819627002009B87DA /* LegacySessionStateCoding.h */, -@@ -12521,6 +12576,7 @@ +@@ -12086,6 +12141,7 @@ 1A0C227D2451130A00ED614D /* QuickLookThumbnailingSoftLink.mm */, 1AEE57232409F142002005D6 /* QuickLookThumbnailLoader.h */, 1AEE57242409F142002005D6 /* QuickLookThumbnailLoader.mm */, @@ -20159,7 +20247,7 @@ index 0c2e74b392aba509cb181c471e4362a9ccbd63ef..547d13c876ddf8dec4424260bbe1bb57 BC111B08112F5E3C00337BAB /* ResponsivenessTimer.cpp */, 1A30066C1110F4F70031937C /* ResponsivenessTimer.h */, 5CA98549210BEB5A0057EB6B /* SafeBrowsingWarning.h */, -@@ -12624,6 +12680,8 @@ +@@ -12189,6 +12245,8 @@ BC7B6204129A0A6700D174A4 /* WebPageGroup.h */, 2D9EA3101A96D9EB002D2807 /* WebPageInjectedBundleClient.cpp */, 2D9EA30E1A96CBFF002D2807 /* WebPageInjectedBundleClient.h */, @@ -20168,7 +20256,7 @@ index 0c2e74b392aba509cb181c471e4362a9ccbd63ef..547d13c876ddf8dec4424260bbe1bb57 BC111B0B112F5E4F00337BAB /* WebPageProxy.cpp */, BC032DCB10F4389F0058C15A /* WebPageProxy.h */, BCBD38FA125BAB9A00D2C29F /* WebPageProxy.messages.in */, -@@ -12782,6 +12840,7 @@ +@@ -12347,6 +12405,7 @@ BC646C1911DD399F006455B0 /* WKBackForwardListItemRef.h */, BC646C1611DD399F006455B0 /* WKBackForwardListRef.cpp */, BC646C1711DD399F006455B0 /* WKBackForwardListRef.h */, @@ -20176,7 +20264,7 @@ index 0c2e74b392aba509cb181c471e4362a9ccbd63ef..547d13c876ddf8dec4424260bbe1bb57 BCB9E24A1120E15C00A137E0 /* WKContext.cpp */, BCB9E2491120E15C00A137E0 /* WKContext.h */, 1AE52F9319201F6B00A1FA37 /* WKContextConfigurationRef.cpp */, -@@ -13362,6 +13421,9 @@ +@@ -12928,6 +12987,9 @@ 0F49294628FF0F4B00AF8509 /* DisplayLinkProcessProxyClient.h */, 31ABA79C215AF9E000C90E31 /* HighPerformanceGPUManager.h */, 31ABA79D215AF9E000C90E31 /* HighPerformanceGPUManager.mm */, @@ -20186,7 +20274,7 @@ index 0c2e74b392aba509cb181c471e4362a9ccbd63ef..547d13c876ddf8dec4424260bbe1bb57 1AFDE65B1954E8D500C48FFA /* LegacySessionStateCoding.cpp */, 0FCB4E5818BBE3D9000FCFC9 /* PageClientImplMac.h */, 0FCB4E5918BBE3D9000FCFC9 /* PageClientImplMac.mm */, -@@ -13385,6 +13447,8 @@ +@@ -12951,6 +13013,8 @@ E568B92120A3AC6A00E3C856 /* WebDataListSuggestionsDropdownMac.mm */, E55CD20124D09F1F0042DB9C /* WebDateTimePickerMac.h */, E55CD20224D09F1F0042DB9C /* WebDateTimePickerMac.mm */, @@ -20195,7 +20283,7 @@ index 0c2e74b392aba509cb181c471e4362a9ccbd63ef..547d13c876ddf8dec4424260bbe1bb57 BC857E8512B71EBB00EDEB2E /* WebPageProxyMac.mm */, BC5750951268F3C6006F0F12 /* WebPopupMenuProxyMac.h */, BC5750961268F3C6006F0F12 /* WebPopupMenuProxyMac.mm */, -@@ -14566,6 +14630,7 @@ +@@ -13857,6 +13921,7 @@ 99788ACB1F421DDA00C08000 /* _WKAutomationSessionConfiguration.h in Headers */, 990D28AC1C6420CF00986977 /* _WKAutomationSessionDelegate.h in Headers */, 990D28B11C65208D00986977 /* _WKAutomationSessionInternal.h in Headers */, @@ -20203,7 +20291,7 @@ index 0c2e74b392aba509cb181c471e4362a9ccbd63ef..547d13c876ddf8dec4424260bbe1bb57 5C4609E7224317B4009943C2 /* _WKContentRuleListAction.h in Headers */, 5C4609E8224317BB009943C2 /* _WKContentRuleListActionInternal.h in Headers */, 1A5704F81BE01FF400874AF1 /* _WKContextMenuElementInfo.h in Headers */, -@@ -14837,6 +14902,7 @@ +@@ -14127,6 +14192,7 @@ E170876C16D6CA6900F99226 /* BlobRegistryProxy.h in Headers */, 4F601432155C5AA2001FBDE0 /* BlockingResponseMap.h in Headers */, 1A5705111BE410E600874AF1 /* BlockSPI.h in Headers */, @@ -20211,7 +20299,7 @@ index 0c2e74b392aba509cb181c471e4362a9ccbd63ef..547d13c876ddf8dec4424260bbe1bb57 BC3065FA1259344E00E71278 /* CacheModel.h in Headers */, 935BF7FC2936BF1A00B41326 /* CacheStorageCache.h in Headers */, 934CF817294B884C00304F7D /* CacheStorageDiskStore.h in Headers */, -@@ -15115,7 +15181,11 @@ +@@ -14262,7 +14328,11 @@ 2DD45ADE1E5F8972006C355F /* InputViewUpdateDeferrer.h in Headers */, CE550E152283752200D28791 /* InsertTextOptions.h in Headers */, 9197940523DBC4BB00257892 /* InspectorBrowserAgent.h in Headers */, @@ -20223,7 +20311,7 @@ index 0c2e74b392aba509cb181c471e4362a9ccbd63ef..547d13c876ddf8dec4424260bbe1bb57 A5E391FD2183C1F800C8FB31 /* InspectorTargetProxy.h in Headers */, 51E9049C27BCB9D400929E7E /* InstallCoordinationSPI.h in Headers */, C5BCE5DF1C50766A00CDE3FA /* InteractionInformationAtPosition.h in Headers */, -@@ -15338,6 +15408,7 @@ +@@ -14486,6 +14556,7 @@ CDAC20CA23FC2F750021DEE3 /* RemoteCDMInstanceSession.h in Headers */, CDAC20C923FC2F750021DEE3 /* RemoteCDMInstanceSessionIdentifier.h in Headers */, F451C0FE2703B263002BA03B /* RemoteDisplayListRecorderProxy.h in Headers */, @@ -20231,7 +20319,7 @@ index 0c2e74b392aba509cb181c471e4362a9ccbd63ef..547d13c876ddf8dec4424260bbe1bb57 2D47B56D1810714E003A3AEE /* RemoteLayerBackingStore.h in Headers */, 2DDF731518E95060004F5A66 /* RemoteLayerBackingStoreCollection.h in Headers */, 1AB16AEA164B3A8800290D62 /* RemoteLayerTreeContext.h in Headers */, -@@ -15390,6 +15461,7 @@ +@@ -14538,6 +14609,7 @@ E1E552C516AE065F004ED653 /* SandboxInitializationParameters.h in Headers */, E36FF00327F36FBD004BE21A /* SandboxStateVariables.h in Headers */, 7BAB111025DD02B3008FC479 /* ScopedActiveMessageReceiveQueue.h in Headers */, @@ -20239,7 +20327,7 @@ index 0c2e74b392aba509cb181c471e4362a9ccbd63ef..547d13c876ddf8dec4424260bbe1bb57 E4D54D0421F1D72D007E3C36 /* ScrollingTreeFrameScrollingNodeRemoteIOS.h in Headers */, 0F931C1C18C5711900DBA7C3 /* ScrollingTreeOverflowScrollingNodeIOS.h in Headers */, 0F931C1C18C5711900DBB8D4 /* ScrollingTreeScrollingNodeDelegateIOS.h in Headers */, -@@ -15760,6 +15832,8 @@ +@@ -14822,6 +14894,8 @@ 2D9EA30F1A96CBFF002D2807 /* WebPageInjectedBundleClient.h in Headers */, 9197940823DBC4CB00257892 /* WebPageInspectorAgentBase.h in Headers */, A513F5402154A5D700662841 /* WebPageInspectorController.h in Headers */, @@ -20248,7 +20336,7 @@ index 0c2e74b392aba509cb181c471e4362a9ccbd63ef..547d13c876ddf8dec4424260bbe1bb57 A543E30C215C8A8D00279CD9 /* WebPageInspectorTarget.h in Headers */, A543E30D215C8A9000279CD9 /* WebPageInspectorTargetController.h in Headers */, A543E307215AD13700279CD9 /* WebPageInspectorTargetFrontendChannel.h in Headers */, -@@ -17840,6 +17914,8 @@ +@@ -16888,6 +16962,8 @@ 51E9049727BCB3D900929E7E /* ICAppBundle.mm in Sources */, 2749F6442146561B008380BF /* InjectedBundleNodeHandle.cpp in Sources */, 2749F6452146561E008380BF /* InjectedBundleRangeHandle.cpp in Sources */, @@ -20257,7 +20345,7 @@ index 0c2e74b392aba509cb181c471e4362a9ccbd63ef..547d13c876ddf8dec4424260bbe1bb57 B6114A7F29394A1600380B1B /* JSWebExtensionAPIEvent.mm in Sources */, 1C5DC471290B33A20061EC62 /* JSWebExtensionAPIExtension.mm in Sources */, 1C5DC4552908AC900061EC62 /* JSWebExtensionAPINamespace.mm in Sources */, -@@ -18210,6 +18286,8 @@ +@@ -17258,6 +17334,8 @@ E3816B3D27E2463A005EAFC0 /* WebMockContentFilterManager.cpp in Sources */, 31BA924D148831260062EDB5 /* WebNotificationManagerMessageReceiver.cpp in Sources */, 2DF6FE52212E110900469030 /* WebPage.cpp in Sources */, @@ -20267,10 +20355,10 @@ index 0c2e74b392aba509cb181c471e4362a9ccbd63ef..547d13c876ddf8dec4424260bbe1bb57 BCBD3914125BB1A800D2C29F /* WebPageProxyMessageReceiver.cpp in Sources */, 7CE9CE101FA0767A000177DE /* WebPageUpdatePreferences.cpp in Sources */, diff --git a/Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp b/Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp -index 571054e3fe382944f6996d7f8e3da5550bf8c993..19b3612cdccd2544bccb537b952f38a084ec6c60 100644 +index fb5f7c777e1cb127834ac0f5b4003a16033cf635..2c61918379564158cff2a81057b82c2e236b436b 100644 --- a/Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp +++ b/Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp -@@ -234,6 +234,11 @@ void WebLoaderStrategy::scheduleLoad(ResourceLoader& resourceLoader, CachedResou +@@ -236,6 +236,11 @@ void WebLoaderStrategy::scheduleLoad(ResourceLoader& resourceLoader, CachedResou } #endif @@ -20282,8 +20370,8 @@ index 571054e3fe382944f6996d7f8e3da5550bf8c993..19b3612cdccd2544bccb537b952f38a0 #if ENABLE(PDFJS) if (tryLoadingUsingPDFJSHandler(resourceLoader, trackingParameters)) return; -@@ -344,7 +349,8 @@ static void addParametersShared(const Frame* frame, NetworkResourceLoadParameter - parameters.networkConnectionIntegrityPolicy = networkConnectionIntegrityPolicy; +@@ -354,7 +359,8 @@ static void addParametersShared(const Frame* frame, NetworkResourceLoadParameter + parameters.linkPreconnectEarlyHintsEnabled = mainFrame.settings().linkPreconnectEarlyHintsEnabled(); } -void WebLoaderStrategy::scheduleLoadFromNetworkProcess(ResourceLoader& resourceLoader, const ResourceRequest& request, const WebResourceLoader::TrackingParameters& trackingParameters, bool shouldClearReferrerOnHTTPSToHTTPRedirect, Seconds maximumBufferingTime) @@ -20292,7 +20380,7 @@ index 571054e3fe382944f6996d7f8e3da5550bf8c993..19b3612cdccd2544bccb537b952f38a0 { auto identifier = resourceLoader.identifier(); ASSERT(identifier); -@@ -360,7 +366,7 @@ void WebLoaderStrategy::scheduleLoadFromNetworkProcess(ResourceLoader& resourceL +@@ -370,7 +376,7 @@ void WebLoaderStrategy::scheduleLoadFromNetworkProcess(ResourceLoader& resourceL RunLoop::main().dispatch([resourceLoader = Ref { resourceLoader }, error = blockedError(request)] { resourceLoader->didFail(error); }); @@ -20301,7 +20389,7 @@ index 571054e3fe382944f6996d7f8e3da5550bf8c993..19b3612cdccd2544bccb537b952f38a0 } } -@@ -370,7 +376,6 @@ void WebLoaderStrategy::scheduleLoadFromNetworkProcess(ResourceLoader& resourceL +@@ -380,7 +386,6 @@ void WebLoaderStrategy::scheduleLoadFromNetworkProcess(ResourceLoader& resourceL LOG(NetworkScheduling, "(WebProcess) WebLoaderStrategy::scheduleLoad, url '%s' will be scheduled with the NetworkProcess with priority %d, storedCredentialsPolicy %i", resourceLoader.url().string().latin1().data(), static_cast(resourceLoader.request().priority()), (int)storedCredentialsPolicy); @@ -20309,7 +20397,7 @@ index 571054e3fe382944f6996d7f8e3da5550bf8c993..19b3612cdccd2544bccb537b952f38a0 loadParameters.identifier = identifier; loadParameters.webPageProxyID = trackingParameters.webPageProxyID; loadParameters.webPageID = trackingParameters.pageID; -@@ -456,14 +461,11 @@ void WebLoaderStrategy::scheduleLoadFromNetworkProcess(ResourceLoader& resourceL +@@ -469,14 +474,11 @@ void WebLoaderStrategy::scheduleLoadFromNetworkProcess(ResourceLoader& resourceL if (loadParameters.options.mode != FetchOptions::Mode::Navigate) { ASSERT(loadParameters.sourceOrigin); @@ -20327,7 +20415,7 @@ index 571054e3fe382944f6996d7f8e3da5550bf8c993..19b3612cdccd2544bccb537b952f38a0 loadParameters.isMainFrameNavigation = isMainFrameNavigation; if (loadParameters.isMainFrameNavigation && document) -@@ -499,6 +501,17 @@ void WebLoaderStrategy::scheduleLoadFromNetworkProcess(ResourceLoader& resourceL +@@ -512,6 +514,17 @@ void WebLoaderStrategy::scheduleLoadFromNetworkProcess(ResourceLoader& resourceL } ASSERT((loadParameters.webPageID && loadParameters.webFrameID) || loadParameters.clientCredentialPolicy == ClientCredentialPolicy::CannotAskClientForCredentials); @@ -20345,7 +20433,7 @@ index 571054e3fe382944f6996d7f8e3da5550bf8c993..19b3612cdccd2544bccb537b952f38a0 std::optional existingNetworkResourceLoadIdentifierToResume; if (loadParameters.isMainFrameNavigation) -@@ -513,7 +526,7 @@ void WebLoaderStrategy::scheduleLoadFromNetworkProcess(ResourceLoader& resourceL +@@ -526,7 +539,7 @@ void WebLoaderStrategy::scheduleLoadFromNetworkProcess(ResourceLoader& resourceL } auto loader = WebResourceLoader::create(resourceLoader, trackingParameters); @@ -20354,7 +20442,7 @@ index 571054e3fe382944f6996d7f8e3da5550bf8c993..19b3612cdccd2544bccb537b952f38a0 } void WebLoaderStrategy::scheduleInternallyFailedLoad(WebCore::ResourceLoader& resourceLoader) -@@ -928,7 +941,7 @@ void WebLoaderStrategy::didFinishPreconnection(WebCore::ResourceLoaderIdentifier +@@ -942,7 +955,7 @@ void WebLoaderStrategy::didFinishPreconnection(WebCore::ResourceLoaderIdentifier bool WebLoaderStrategy::isOnLine() const { @@ -20363,7 +20451,7 @@ index 571054e3fe382944f6996d7f8e3da5550bf8c993..19b3612cdccd2544bccb537b952f38a0 } void WebLoaderStrategy::addOnlineStateChangeListener(Function&& listener) -@@ -955,6 +968,11 @@ void WebLoaderStrategy::isResourceLoadFinished(CachedResource& resource, Complet +@@ -969,6 +982,11 @@ void WebLoaderStrategy::isResourceLoadFinished(CachedResource& resource, Complet void WebLoaderStrategy::setOnLineState(bool isOnLine) { @@ -20375,7 +20463,7 @@ index 571054e3fe382944f6996d7f8e3da5550bf8c993..19b3612cdccd2544bccb537b952f38a0 if (m_isOnLine == isOnLine) return; -@@ -963,6 +981,12 @@ void WebLoaderStrategy::setOnLineState(bool isOnLine) +@@ -977,6 +995,12 @@ void WebLoaderStrategy::setOnLineState(bool isOnLine) listener(isOnLine); } @@ -20455,10 +20543,10 @@ index f6cbdb00920e43b98b43f153797d60a622f113dc..6d1a6fb19056a6c87d8900c8022efc42 auto permissionHandlers = m_requestsPerOrigin.take(securityOrigin); diff --git a/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp b/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp -index 9fec42eb30f877699590917608eb9f58253817c4..71d595f311eba04db546d24799a175bb8d6f2752 100644 +index 682e93d84835981630b7d8b51719da700b1a74dc..3731d9ae535f234f00d7c40ad8b441e9bd8741c0 100644 --- a/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp +++ b/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp -@@ -442,6 +442,8 @@ void WebChromeClient::setResizable(bool resizable) +@@ -440,6 +440,8 @@ void WebChromeClient::setResizable(bool resizable) void WebChromeClient::addMessageToConsole(MessageSource source, MessageLevel level, const String& message, unsigned lineNumber, unsigned columnNumber, const String& sourceID) { @@ -20495,11 +20583,11 @@ index 2eb0886f13ed035a53b8eaa60605de4dfe53fbe3..c46393209cb4f80704bbc9268fad4371 { } diff --git a/Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp b/Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp -index d42d4ae6249d0a6f20b46cc801167d4c4eb47354..3bee1daeab75b67d682d71c7f7146a3dfde2f644 100644 +index 321fff05e020c06aabd51e6cc770145f4596f533..99b8b7575ffd8502b18c9f84da39b2b3b24f2d86 100644 --- a/Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp +++ b/Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp -@@ -1661,13 +1661,6 @@ void WebFrameLoaderClient::transitionToCommittedForNewPage() - if (webPage->scrollPinningBehavior() != DoNotPin) +@@ -1674,13 +1674,6 @@ void WebFrameLoaderClient::transitionToCommittedForNewPage() + if (webPage->scrollPinningBehavior() != ScrollPinningBehavior::DoNotPin) view->setScrollPinningBehavior(webPage->scrollPinningBehavior()); -#if USE(COORDINATED_GRAPHICS) @@ -20513,10 +20601,10 @@ index d42d4ae6249d0a6f20b46cc801167d4c4eb47354..3bee1daeab75b67d682d71c7f7146a3d void WebFrameLoaderClient::didRestoreFromBackForwardCache() diff --git a/Source/WebKit/WebProcess/WebCoreSupport/mac/WebDragClientMac.mm b/Source/WebKit/WebProcess/WebCoreSupport/mac/WebDragClientMac.mm -index cbe67e1e40ee5be3b778977aef8d00600e09a0d9..7ce8c2958a3adbc7f722ca0b939d6aee598b7f9b 100644 +index 8226f9545ed2283cfe135d93d4e2f047f74a9ef0..4a5139d70449c5116a5406cf685a7e3b089abe7c 100644 --- a/Source/WebKit/WebProcess/WebCoreSupport/mac/WebDragClientMac.mm +++ b/Source/WebKit/WebProcess/WebCoreSupport/mac/WebDragClientMac.mm -@@ -128,7 +128,8 @@ static WebCore::CachedImage* cachedImage(Element& element) +@@ -132,7 +132,8 @@ static WebCore::CachedImage* cachedImage(Element& element) void WebDragClient::declareAndWriteDragImage(const String& pasteboardName, Element& element, const URL& url, const String& label, Frame*) { @@ -20654,10 +20742,10 @@ index 0000000000000000000000000000000000000000..b1fcb0774ce90cfc33f08fd3e74bdedb + +#endif // ENABLE(DRAG_SUPPORT) diff --git a/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp b/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp -index b67281781bf9e6b4144eedb40fd211884ac21563..b39cda0772a37337afe70ceadae0b5daa04c0175 100644 +index c50d98240d1d9dcf7141f3951909d88b00c1997f..3ce9b0604eeb930b7e0c5ce497ddab177abdd50e 100644 --- a/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp +++ b/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp -@@ -38,6 +38,7 @@ +@@ -39,6 +39,7 @@ #include #include #include @@ -20665,7 +20753,7 @@ index b67281781bf9e6b4144eedb40fd211884ac21563..b39cda0772a37337afe70ceadae0b5da #include #include #include -@@ -116,6 +117,16 @@ void DrawingAreaCoordinatedGraphics::scroll(const IntRect& scrollRect, const Int +@@ -117,6 +118,16 @@ void DrawingAreaCoordinatedGraphics::scroll(const IntRect& scrollRect, const Int ASSERT(m_scrollRect.isEmpty()); ASSERT(m_scrollOffset.isEmpty()); ASSERT(m_dirtyRegion.isEmpty()); @@ -20682,7 +20770,7 @@ index b67281781bf9e6b4144eedb40fd211884ac21563..b39cda0772a37337afe70ceadae0b5da m_layerTreeHost->scrollNonCompositedContents(scrollRect); return; } -@@ -248,6 +259,7 @@ void DrawingAreaCoordinatedGraphics::updatePreferences(const WebPreferencesStore +@@ -249,6 +260,7 @@ void DrawingAreaCoordinatedGraphics::updatePreferences(const WebPreferencesStore settings.setAcceleratedCompositingEnabled(false); } #endif @@ -20690,7 +20778,7 @@ index b67281781bf9e6b4144eedb40fd211884ac21563..b39cda0772a37337afe70ceadae0b5da settings.setForceCompositingMode(store.getBoolValueForKey(WebPreferencesKey::forceCompositingModeKey())); // Fixed position elements need to be composited and create stacking contexts // in order to be scrolled by the ScrollingCoordinator. -@@ -670,6 +682,11 @@ void DrawingAreaCoordinatedGraphics::enterAcceleratedCompositingMode(GraphicsLay +@@ -687,6 +699,11 @@ void DrawingAreaCoordinatedGraphics::enterAcceleratedCompositingMode(GraphicsLay m_scrollOffset = IntSize(); m_displayTimer.stop(); m_isWaitingForDidUpdate = false; @@ -20702,7 +20790,7 @@ index b67281781bf9e6b4144eedb40fd211884ac21563..b39cda0772a37337afe70ceadae0b5da } void DrawingAreaCoordinatedGraphics::exitAcceleratedCompositingMode() -@@ -719,6 +736,11 @@ void DrawingAreaCoordinatedGraphics::exitAcceleratedCompositingMode() +@@ -736,6 +753,11 @@ void DrawingAreaCoordinatedGraphics::exitAcceleratedCompositingMode() // UI process, we still need to let it know about the new contents, so send an Update message. send(Messages::DrawingAreaProxy::Update(m_backingStoreStateID, updateInfo)); } @@ -20715,10 +20803,10 @@ index b67281781bf9e6b4144eedb40fd211884ac21563..b39cda0772a37337afe70ceadae0b5da void DrawingAreaCoordinatedGraphics::scheduleDisplay() diff --git a/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp b/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp -index 6a21081b514678d2f36fd190266d3e60754d326c..721c40ba39b09821aa35b9fd7e4682ccdd9b78ab 100644 +index a0b2c1c72238775b31c42283fb2f394d0cc5c64b..f56aba0f1ba6bc10256001ceaa3a697ccd23a0af 100644 --- a/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp +++ b/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp -@@ -184,8 +184,16 @@ void LayerTreeHost::setViewOverlayRootLayer(GraphicsLayer* viewOverlayRootLayer) +@@ -186,8 +186,16 @@ void LayerTreeHost::setViewOverlayRootLayer(GraphicsLayer* viewOverlayRootLayer) void LayerTreeHost::scrollNonCompositedContents(const IntRect& rect) { auto* frameView = m_webPage.mainFrameView(); @@ -20735,7 +20823,7 @@ index 6a21081b514678d2f36fd190266d3e60754d326c..721c40ba39b09821aa35b9fd7e4682cc m_viewportController.didScroll(rect.location()); if (m_isDiscardable) -@@ -319,6 +327,10 @@ void LayerTreeHost::didChangeViewport() +@@ -324,6 +332,10 @@ void LayerTreeHost::didChangeViewport() if (!view->useFixedLayout()) view->notifyScrollPositionChanged(m_lastScrollPosition); @@ -20791,10 +20879,10 @@ index 19870d671df40a96d42ab0f531f34f6421695c07..b823ea19a055278d49091ea3cea80186 { if (m_hasRemovedMessageReceiver) diff --git a/Source/WebKit/WebProcess/WebPage/DrawingArea.h b/Source/WebKit/WebProcess/WebPage/DrawingArea.h -index 1448c01075177b671b84be0c937e5ea39efe2cb2..caa5ad2d88fa6eb841cb8d4b4aa33eab3b86d478 100644 +index c3ecbd1194db3c52e510c1c0250f2bc194f434a7..4c7515b83dfbd300401fe60558c4f1c42383a690 100644 --- a/Source/WebKit/WebProcess/WebPage/DrawingArea.h +++ b/Source/WebKit/WebProcess/WebPage/DrawingArea.h -@@ -156,6 +156,9 @@ public: +@@ -158,6 +158,9 @@ public: virtual void didChangeViewportAttributes(WebCore::ViewportAttributes&&) = 0; virtual void deviceOrPageScaleFactorChanged() = 0; #endif @@ -20875,10 +20963,10 @@ index f127d64d005ab7b93875591b94a5899205e91579..df0de26e4dc449a0fbf93e7037444df4 uint64_t m_navigationID; }; diff --git a/Source/WebKit/WebProcess/WebPage/WebPage.cpp b/Source/WebKit/WebProcess/WebPage/WebPage.cpp -index d3142de521b47ba96b67a6b00b7bc8d44b841002..8925ef6cc0c41484dbeb2da51787457667606de5 100644 +index 717961cc5399ee09337203297fdc6f23851bec79..40846b8524a54c0ea454141af3c0a35cb7bcb869 100644 --- a/Source/WebKit/WebProcess/WebPage/WebPage.cpp +++ b/Source/WebKit/WebProcess/WebPage/WebPage.cpp -@@ -225,6 +225,7 @@ +@@ -226,6 +226,7 @@ #include #include #include @@ -20886,7 +20974,7 @@ index d3142de521b47ba96b67a6b00b7bc8d44b841002..8925ef6cc0c41484dbeb2da517874576 #include #include #include -@@ -971,6 +972,9 @@ WebPage::WebPage(PageIdentifier pageID, WebPageCreationParameters&& parameters) +@@ -977,6 +978,9 @@ WebPage::WebPage(PageIdentifier pageID, WebPageCreationParameters&& parameters) sandbox_enable_state_flag("LockdownModeEnabled", *auditToken); #endif // HAVE(SANDBOX_STATE_FLAGS) @@ -20896,7 +20984,7 @@ index d3142de521b47ba96b67a6b00b7bc8d44b841002..8925ef6cc0c41484dbeb2da517874576 updateThrottleState(); #if ENABLE(ACCESSIBILITY_ANIMATION_CONTROL) updateImageAnimationEnabled(); -@@ -1732,6 +1736,22 @@ void WebPage::platformDidReceiveLoadParameters(const LoadParameters& loadParamet +@@ -1739,6 +1743,22 @@ void WebPage::platformDidReceiveLoadParameters(const LoadParameters& loadParamet } #endif @@ -20919,7 +21007,7 @@ index d3142de521b47ba96b67a6b00b7bc8d44b841002..8925ef6cc0c41484dbeb2da517874576 void WebPage::loadRequest(LoadParameters&& loadParameters) { WEBPAGE_RELEASE_LOG(Loading, "loadRequest: navigationID=%" PRIu64 ", shouldTreatAsContinuingLoad=%u, lastNavigationWasAppInitiated=%d, existingNetworkResourceLoadIdentifierToResume=%" PRIu64, loadParameters.navigationID, static_cast(loadParameters.shouldTreatAsContinuingLoad), loadParameters.request.isAppInitiated(), valueOrDefault(loadParameters.existingNetworkResourceLoadIdentifierToResume).toUInt64()); -@@ -1978,17 +1998,13 @@ void WebPage::setSize(const WebCore::IntSize& viewSize) +@@ -1992,21 +2012,17 @@ void WebPage::setSize(const WebCore::IntSize& viewSize) view->resize(viewSize); m_drawingArea->setNeedsDisplay(); @@ -20932,13 +21020,17 @@ index d3142de521b47ba96b67a6b00b7bc8d44b841002..8925ef6cc0c41484dbeb2da517874576 -#if USE(COORDINATED_GRAPHICS) void WebPage::sendViewportAttributesChanged(const ViewportArguments& viewportArguments) { -- FrameView* view = m_page->mainFrame().view(); + auto* localMainFrame = dynamicDowncast(m_page->mainFrame()); + if (!localMainFrame) + return; + +- FrameView* view = localMainFrame->view(); - ASSERT(view && view->useFixedLayout()); -+ ASSERT(m_page->mainFrame().view() && m_page->mainFrame().view()->useFixedLayout()); ++ ASSERT(localMainFrame->view() && localMainFrame->view()->useFixedLayout()); // Viewport properties have no impact on zero sized fixed viewports. if (m_viewSize.isEmpty()) -@@ -2005,20 +2021,18 @@ void WebPage::sendViewportAttributesChanged(const ViewportArguments& viewportArg +@@ -2023,20 +2039,18 @@ void WebPage::sendViewportAttributesChanged(const ViewportArguments& viewportArg ViewportAttributes attr = computeViewportAttributes(viewportArguments, minimumLayoutFallbackWidth, deviceWidth, deviceHeight, 1, m_viewSize); @@ -20966,7 +21058,7 @@ index d3142de521b47ba96b67a6b00b7bc8d44b841002..8925ef6cc0c41484dbeb2da517874576 #if USE(COORDINATED_GRAPHICS) m_drawingArea->didChangeViewportAttributes(WTFMove(attr)); -@@ -2026,7 +2040,6 @@ void WebPage::sendViewportAttributesChanged(const ViewportArguments& viewportArg +@@ -2044,7 +2058,6 @@ void WebPage::sendViewportAttributesChanged(const ViewportArguments& viewportArg send(Messages::WebPageProxy::DidChangeViewportProperties(attr)); #endif } @@ -20974,7 +21066,7 @@ index d3142de521b47ba96b67a6b00b7bc8d44b841002..8925ef6cc0c41484dbeb2da517874576 void WebPage::scrollMainFrameIfNotAtMaxScrollPosition(const IntSize& scrollOffset) { -@@ -2311,6 +2324,7 @@ void WebPage::scaleView(double scale) +@@ -2336,6 +2349,7 @@ void WebPage::scaleView(double scale) } m_page->setViewScaleFactor(scale); @@ -20982,12 +21074,13 @@ index d3142de521b47ba96b67a6b00b7bc8d44b841002..8925ef6cc0c41484dbeb2da517874576 scalePage(pageScale, scrollPositionAtNewScale); } -@@ -2490,17 +2504,13 @@ void WebPage::viewportPropertiesDidChange(const ViewportArguments& viewportArgum +@@ -2515,18 +2529,14 @@ void WebPage::viewportPropertiesDidChange(const ViewportArguments& viewportArgum viewportConfigurationChanged(); #endif -#if USE(COORDINATED_GRAPHICS) - FrameView* view = m_page->mainFrame().view(); + auto* localMainFrame = dynamicDowncast(m_page->mainFrame()); + FrameView* view = localMainFrame ? localMainFrame->view() : nullptr; if (view && view->useFixedLayout()) sendViewportAttributesChanged(viewportArguments); +#if USE(COORDINATED_GRAPHICS) @@ -21001,7 +21094,7 @@ index d3142de521b47ba96b67a6b00b7bc8d44b841002..8925ef6cc0c41484dbeb2da517874576 } void WebPage::listenForLayoutMilestones(OptionSet milestones) -@@ -3422,6 +3432,92 @@ void WebPage::touchEvent(const WebTouchEvent& touchEvent) +@@ -3474,6 +3484,97 @@ void WebPage::touchEvent(const WebTouchEvent& touchEvent) send(Messages::WebPageProxy::DidReceiveEvent(touchEvent.type(), handled)); } @@ -21044,7 +21137,12 @@ index d3142de521b47ba96b67a6b00b7bc8d44b841002..8925ef6cc0c41484dbeb2da517874576 + } + if (!handled) { + FloatPoint adjustedPoint; -+ Node* nodeRespondingToClick = m_page->mainFrame().nodeRespondingToClickEvents(position, adjustedPoint); ++ ++ auto* localMainFrame = dynamicDowncast(m_page->mainFrame()); ++ if (!localMainFrame) ++ return; ++ ++ Node* nodeRespondingToClick = localMainFrame->nodeRespondingToClickEvents(position, adjustedPoint); + Frame* frameRespondingToClick = nodeRespondingToClick ? nodeRespondingToClick->document().frame() : nullptr; + IntPoint adjustedIntPoint = roundedIntPoint(adjustedPoint); + if (!frameRespondingToClick) { @@ -21055,7 +21153,7 @@ index d3142de521b47ba96b67a6b00b7bc8d44b841002..8925ef6cc0c41484dbeb2da517874576 + SyntheticClickType syntheticClickType = SyntheticClickType::OneFingerTap; + + auto modifiers = PlatformKeyboardEvent::currentStateOfModifierKeys(); -+ m_page->mainFrame().eventHandler().mouseMoved(PlatformMouseEvent( ++ localMainFrame->eventHandler().mouseMoved(PlatformMouseEvent( + adjustedIntPoint, + adjustedIntPoint, + MouseButton::NoButton, @@ -21066,7 +21164,7 @@ index d3142de521b47ba96b67a6b00b7bc8d44b841002..8925ef6cc0c41484dbeb2da517874576 + force, + syntheticClickType + )); -+ m_page->mainFrame().eventHandler().handleMousePressEvent(PlatformMouseEvent( ++ localMainFrame->eventHandler().handleMousePressEvent(PlatformMouseEvent( + adjustedIntPoint, + adjustedIntPoint, + MouseButton::LeftButton, @@ -21077,7 +21175,7 @@ index d3142de521b47ba96b67a6b00b7bc8d44b841002..8925ef6cc0c41484dbeb2da517874576 + force, + syntheticClickType + )); -+ m_page->mainFrame().eventHandler().handleMouseReleaseEvent(PlatformMouseEvent( ++ localMainFrame->eventHandler().handleMouseReleaseEvent(PlatformMouseEvent( + adjustedIntPoint, + adjustedIntPoint, + MouseButton::LeftButton, @@ -21094,7 +21192,7 @@ index d3142de521b47ba96b67a6b00b7bc8d44b841002..8925ef6cc0c41484dbeb2da517874576 #endif void WebPage::cancelPointer(WebCore::PointerID pointerId, const WebCore::IntPoint& documentPoint) -@@ -3498,6 +3594,11 @@ void WebPage::sendMessageToTargetBackend(const String& targetId, const String& m +@@ -3551,6 +3652,11 @@ void WebPage::sendMessageToTargetBackend(const String& targetId, const String& m m_inspectorTargetController->sendMessageToTargetBackend(targetId, message); } @@ -21106,7 +21204,7 @@ index d3142de521b47ba96b67a6b00b7bc8d44b841002..8925ef6cc0c41484dbeb2da517874576 void WebPage::insertNewlineInQuotedContent() { Ref frame = CheckedRef(m_page->focusController())->focusedOrMainFrame(); -@@ -3730,6 +3831,7 @@ void WebPage::didCompletePageTransition() +@@ -3783,6 +3889,7 @@ void WebPage::didCompletePageTransition() void WebPage::show() { send(Messages::WebPageProxy::ShowPage()); @@ -21114,7 +21212,7 @@ index d3142de521b47ba96b67a6b00b7bc8d44b841002..8925ef6cc0c41484dbeb2da517874576 } void WebPage::setIsTakingSnapshotsForApplicationSuspension(bool isTakingSnapshotsForApplicationSuspension) -@@ -4686,7 +4788,7 @@ NotificationPermissionRequestManager* WebPage::notificationPermissionRequestMana +@@ -4751,7 +4858,7 @@ NotificationPermissionRequestManager* WebPage::notificationPermissionRequestMana #if ENABLE(DRAG_SUPPORT) @@ -21123,7 +21221,7 @@ index d3142de521b47ba96b67a6b00b7bc8d44b841002..8925ef6cc0c41484dbeb2da517874576 void WebPage::performDragControllerAction(DragControllerAction action, const IntPoint& clientPosition, const IntPoint& globalPosition, OptionSet draggingSourceOperationMask, SelectionData&& selectionData, OptionSet flags) { if (!m_page) { -@@ -7158,6 +7260,9 @@ Ref WebPage::createDocumentLoader(Frame& frame, const ResourceRe +@@ -7288,6 +7395,9 @@ Ref WebPage::createDocumentLoader(Frame& frame, const ResourceRe WebsitePoliciesData::applyToDocumentLoader(WTFMove(*m_pendingWebsitePolicies), documentLoader); m_pendingWebsitePolicies = std::nullopt; } @@ -21134,7 +21232,7 @@ index d3142de521b47ba96b67a6b00b7bc8d44b841002..8925ef6cc0c41484dbeb2da517874576 return documentLoader; diff --git a/Source/WebKit/WebProcess/WebPage/WebPage.h b/Source/WebKit/WebProcess/WebPage/WebPage.h -index 4f454e2994abeccdea7fbf4f47a650ccaa8199ea..201491952828bcd70352dec04d05686ea372eeca 100644 +index 48b2214d43a81356463b8171f13e6ec0812b6bc1..467f419ac2d4c3f0cc0e65e46aa1ccc9156f6a35 100644 --- a/Source/WebKit/WebProcess/WebPage/WebPage.h +++ b/Source/WebKit/WebProcess/WebPage/WebPage.h @@ -121,6 +121,10 @@ @@ -21148,7 +21246,7 @@ index 4f454e2994abeccdea7fbf4f47a650ccaa8199ea..201491952828bcd70352dec04d05686e #if PLATFORM(GTK) || PLATFORM(WPE) #include "InputMethodState.h" #endif -@@ -1047,11 +1051,11 @@ public: +@@ -1049,11 +1053,11 @@ public: void clearSelection(); void restoreSelectionInFocusedEditableElement(); @@ -21162,7 +21260,7 @@ index 4f454e2994abeccdea7fbf4f47a650ccaa8199ea..201491952828bcd70352dec04d05686e void performDragControllerAction(DragControllerAction, WebCore::DragData&&, SandboxExtension::Handle&&, Vector&&); #endif -@@ -1065,6 +1069,9 @@ public: +@@ -1067,6 +1071,9 @@ public: void didStartDrag(); void dragCancelled(); OptionSet allowedDragSourceActions() const { return m_allowedDragSourceActions; } @@ -21172,7 +21270,7 @@ index 4f454e2994abeccdea7fbf4f47a650ccaa8199ea..201491952828bcd70352dec04d05686e #endif void beginPrinting(WebCore::FrameIdentifier, const PrintInfo&); -@@ -1303,6 +1310,7 @@ public: +@@ -1306,6 +1313,7 @@ public: void connectInspector(const String& targetId, Inspector::FrontendChannel::ConnectionType); void disconnectInspector(const String& targetId); void sendMessageToTargetBackend(const String& targetId, const String& message); @@ -21180,7 +21278,7 @@ index 4f454e2994abeccdea7fbf4f47a650ccaa8199ea..201491952828bcd70352dec04d05686e void insertNewlineInQuotedContent(); -@@ -1722,6 +1730,7 @@ private: +@@ -1729,6 +1737,7 @@ private: // Actions void tryClose(CompletionHandler&&); void platformDidReceiveLoadParameters(const LoadParameters&); @@ -21188,7 +21286,7 @@ index 4f454e2994abeccdea7fbf4f47a650ccaa8199ea..201491952828bcd70352dec04d05686e void loadRequest(LoadParameters&&); [[noreturn]] void loadRequestWaitingForProcessLaunch(LoadParameters&&, URL&&, WebPageProxyIdentifier, bool); void loadData(LoadParameters&&); -@@ -1759,6 +1768,7 @@ private: +@@ -1766,6 +1775,7 @@ private: void updatePotentialTapSecurityOrigin(const WebTouchEvent&, bool wasHandled); #elif ENABLE(TOUCH_EVENTS) void touchEvent(const WebTouchEvent&); @@ -21196,7 +21294,7 @@ index 4f454e2994abeccdea7fbf4f47a650ccaa8199ea..201491952828bcd70352dec04d05686e #endif void cancelPointer(WebCore::PointerID, const WebCore::IntPoint&); -@@ -1904,9 +1914,7 @@ private: +@@ -1911,9 +1921,7 @@ private: void addLayerForFindOverlay(CompletionHandler&&); void removeLayerForFindOverlay(CompletionHandler&&); @@ -21206,7 +21304,7 @@ index 4f454e2994abeccdea7fbf4f47a650ccaa8199ea..201491952828bcd70352dec04d05686e void didChangeSelectedIndexForActivePopupMenu(int32_t newIndex); void setTextForActivePopupMenu(int32_t index); -@@ -2448,6 +2456,7 @@ private: +@@ -2455,6 +2463,7 @@ private: UserActivity m_userActivity; uint64_t m_pendingNavigationID { 0 }; @@ -21215,7 +21313,7 @@ index 4f454e2994abeccdea7fbf4f47a650ccaa8199ea..201491952828bcd70352dec04d05686e bool m_mainFrameProgressCompleted { false }; diff --git a/Source/WebKit/WebProcess/WebPage/WebPage.messages.in b/Source/WebKit/WebProcess/WebPage/WebPage.messages.in -index 2261be7e05aede84ac7b18f67e8dfe08da78f55a..3d788722dace82bc1d34de2a96e13da97217e455 100644 +index 4126fd3a3289dcd00b451680a6baf741fb2598d0..ef68d2ab384334febd08e4f7193e4641b976abe4 100644 --- a/Source/WebKit/WebProcess/WebPage/WebPage.messages.in +++ b/Source/WebKit/WebProcess/WebPage/WebPage.messages.in @@ -146,6 +146,7 @@ GenerateSyntheticEditingCommand(enum:uint8_t WebKit::SyntheticEditingCommandType @@ -21267,7 +21365,7 @@ index 2261be7e05aede84ac7b18f67e8dfe08da78f55a..3d788722dace82bc1d34de2a96e13da9 RequestDragStart(WebCore::IntPoint clientPosition, WebCore::IntPoint globalPosition, OptionSet allowedActionsMask) RequestAdditionalItemsForDragSession(WebCore::IntPoint clientPosition, WebCore::IntPoint globalPosition, OptionSet allowedActionsMask) diff --git a/Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm b/Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm -index f37cdd55c72bab3742cbcdadd8fbc25365a61c92..e8fd9f15cce741d472d6c76aaa8b83e6baa27449 100644 +index 4f693ad3d74212bf898d3bdbf661ebfc5543fcd1..4ce4ec8ec5fd896670a8c43e60b2e9676309e017 100644 --- a/Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm +++ b/Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm @@ -791,21 +791,37 @@ String WebPage::platformUserAgent(const URL&) const @@ -21359,7 +21457,7 @@ index 4d8fbc9ad1ed1f45081608e485a605640dedae34..a0110028fc3651f9370f3904097d0853 } diff --git a/Source/WebKit/WebProcess/WebProcess.cpp b/Source/WebKit/WebProcess/WebProcess.cpp -index 1b0dd53bc4f7b1fc8c9e8dfcb0706997012a973d..769998478c9b6ef1b37a471e140ed1fc7496a9d5 100644 +index 40aa1e285fa7b28fa50cbf608ed3b131f32c070a..4509d545838a8e8d37c55401b702ec57bfcb7fbf 100644 --- a/Source/WebKit/WebProcess/WebProcess.cpp +++ b/Source/WebKit/WebProcess/WebProcess.cpp @@ -94,6 +94,7 @@ @@ -21395,7 +21493,7 @@ index 8987c3964a9308f2454759de7f8972215a3ae416..bcac0afeb94ed8123d1f9fb0b932c849 SetProcessDPIAware(); return true; diff --git a/Source/WebKitLegacy/mac/WebView/WebHTMLView.mm b/Source/WebKitLegacy/mac/WebView/WebHTMLView.mm -index 66ec23e36408d55f8834f5d819eb909d3823f131..14e0aa04e5dca743b41d6ec6560547bbf34ecc17 100644 +index 08c08028b0284abf96b75fc365031157eafac104..14387523cec1b53e39dd093d618c53bf08d6d303 100644 --- a/Source/WebKitLegacy/mac/WebView/WebHTMLView.mm +++ b/Source/WebKitLegacy/mac/WebView/WebHTMLView.mm @@ -4210,7 +4210,7 @@ - (void)mouseDown:(WebEvent *)event @@ -21408,10 +21506,10 @@ index 66ec23e36408d55f8834f5d819eb909d3823f131..14e0aa04e5dca743b41d6ec6560547bb - (void)touch:(WebEvent *)event { diff --git a/Source/WebKitLegacy/mac/WebView/WebView.mm b/Source/WebKitLegacy/mac/WebView/WebView.mm -index fead8163f58b25b8d6e25e019d5b3d0e86ac3c53..38975c82f5a18d6e1fb53a1b9e36e77d02b193e7 100644 +index d4cab0aa73247bfeb6b37f9e9b8927e475359563..29dbff91bcfdcb80a0fc236b36bc126c1ffb871e 100644 --- a/Source/WebKitLegacy/mac/WebView/WebView.mm +++ b/Source/WebKitLegacy/mac/WebView/WebView.mm -@@ -4027,7 +4027,7 @@ + (void)_doNotStartObservingNetworkReachability +@@ -4011,7 +4011,7 @@ + (void)_doNotStartObservingNetworkReachability } #endif // PLATFORM(IOS_FAMILY) @@ -21420,7 +21518,7 @@ index fead8163f58b25b8d6e25e019d5b3d0e86ac3c53..38975c82f5a18d6e1fb53a1b9e36e77d - (NSArray *)_touchEventRegions { -@@ -4069,7 +4069,7 @@ - (NSArray *)_touchEventRegions +@@ -4053,7 +4053,7 @@ - (NSArray *)_touchEventRegions }).autorelease(); } @@ -21461,7 +21559,7 @@ index 0000000000000000000000000000000000000000..dd6a53e2d57318489b7e49dd7373706d + LIBVPX_LIBRARIES +) diff --git a/Source/cmake/OptionsGTK.cmake b/Source/cmake/OptionsGTK.cmake -index e2da8539b4da21628d3f6669bed9ce75f612de80..4e4f350694148eb8765877e8c9993bc11693640b 100644 +index ff2b4af73a9cfaf8ff058ff54a7f5b244a6c047d..a51eb44421b834af3c6a9c4809a57e2cc630cf09 100644 --- a/Source/cmake/OptionsGTK.cmake +++ b/Source/cmake/OptionsGTK.cmake @@ -11,8 +11,13 @@ if (${CMAKE_VERSION} VERSION_LESS "3.20" AND NOT ${CMAKE_GENERATOR} STREQUAL "Ni @@ -21475,9 +21573,9 @@ index e2da8539b4da21628d3f6669bed9ce75f612de80..4e4f350694148eb8765877e8c9993bc1 +set(CMAKE_THREAD_PREFER_PTHREAD TRUE) +set(THREADS_PREFER_PTHREAD_FLAG TRUE) + - find_package(Cairo 1.14.0 REQUIRED) - find_package(Fontconfig 2.8.0 REQUIRED) - find_package(Freetype 2.4.2 REQUIRED) + find_package(Cairo 1.16.0 REQUIRED) + find_package(Fontconfig 2.13.0 REQUIRED) + find_package(Freetype 2.9.0 REQUIRED) @@ -33,6 +38,10 @@ find_package(EGL) find_package(OpenGL) find_package(OpenGLES2) @@ -21489,7 +21587,7 @@ index e2da8539b4da21628d3f6669bed9ce75f612de80..4e4f350694148eb8765877e8c9993bc1 include(GStreamerDefinitions) SET_AND_EXPOSE_TO_BUILD(USE_CAIRO TRUE) -@@ -68,13 +77,13 @@ WEBKIT_OPTION_DEFINE(ENABLE_WAYLAND_TARGET "Whether to enable support for the Wa +@@ -63,13 +72,13 @@ WEBKIT_OPTION_DEFINE(ENABLE_WAYLAND_TARGET "Whether to enable support for the Wa WEBKIT_OPTION_DEFINE(ENABLE_X11_TARGET "Whether to enable support for the X11 windowing target." PUBLIC ON) WEBKIT_OPTION_DEFINE(USE_GBM "Whether to enable usage of GBM and libdrm." PUBLIC ON) WEBKIT_OPTION_DEFINE(USE_GTK4 "Whether to enable usage of GTK4 instead of GTK3." PUBLIC OFF) @@ -21505,7 +21603,7 @@ index e2da8539b4da21628d3f6669bed9ce75f612de80..4e4f350694148eb8765877e8c9993bc1 WEBKIT_OPTION_DEFINE(USE_WOFF2 "Whether to enable support for WOFF2 Web Fonts." PUBLIC ON) WEBKIT_OPTION_DEPEND(ENABLE_DOCUMENTATION ENABLE_INTROSPECTION) -@@ -120,15 +129,15 @@ endif () +@@ -107,15 +116,15 @@ endif () # without approval from a GTK reviewer. There must be strong reason to support # changing the value of the option. WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_DRAG_SUPPORT PUBLIC ON) @@ -21524,7 +21622,7 @@ index e2da8539b4da21628d3f6669bed9ce75f612de80..4e4f350694148eb8765877e8c9993bc1 # Private options shared with other WebKit ports. Add options here when # we need a value different from the default defined in WebKitFeatures.cmake. -@@ -154,7 +163,7 @@ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_INPUT_TYPE_TIME PRIVATE ON) +@@ -141,7 +150,7 @@ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_INPUT_TYPE_TIME PRIVATE ON) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_INPUT_TYPE_WEEK PRIVATE ON) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_TRACKING_PREVENTION PRIVATE ON) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_LAYER_BASED_SVG_ENGINE PRIVATE ON) @@ -21533,7 +21631,7 @@ index e2da8539b4da21628d3f6669bed9ce75f612de80..4e4f350694148eb8765877e8c9993bc1 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MEDIA_SESSION PRIVATE ${ENABLE_EXPERIMENTAL_FEATURES}) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MEDIA_SESSION_PLAYLIST PRIVATE OFF) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MEDIA_STREAM PRIVATE ON) -@@ -167,7 +176,7 @@ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_NETWORK_CACHE_SPECULATIVE_REVALIDATION P +@@ -154,7 +163,7 @@ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_NETWORK_CACHE_SPECULATIVE_REVALIDATION P WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_NETWORK_CACHE_STALE_WHILE_REVALIDATE PRIVATE ON) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_OFFSCREEN_CANVAS PRIVATE ${ENABLE_EXPERIMENTAL_FEATURES}) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_OFFSCREEN_CANVAS_IN_WORKERS PRIVATE ${ENABLE_EXPERIMENTAL_FEATURES}) @@ -21542,7 +21640,7 @@ index e2da8539b4da21628d3f6669bed9ce75f612de80..4e4f350694148eb8765877e8c9993bc1 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_PERIODIC_MEMORY_MONITOR PRIVATE ON) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_POINTER_LOCK PRIVATE ON) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_SERVICE_WORKER PRIVATE ON) -@@ -177,6 +186,15 @@ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_WEB_API_STATISTICS PRIVATE ON) +@@ -165,6 +174,15 @@ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_WEB_API_STATISTICS PRIVATE ON) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_WEB_CODECS PRIVATE ${ENABLE_EXPERIMENTAL_FEATURES}) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_WEB_RTC PRIVATE ${ENABLE_EXPERIMENTAL_FEATURES}) @@ -21558,7 +21656,7 @@ index e2da8539b4da21628d3f6669bed9ce75f612de80..4e4f350694148eb8765877e8c9993bc1 include(GStreamerDependencies) # Finalize the value for all options. Do not attempt to use an option before -@@ -292,6 +310,7 @@ if (NOT EXISTS "${TOOLS_DIR}/glib/apply-build-revision-to-files.py") +@@ -280,6 +298,7 @@ if (NOT EXISTS "${TOOLS_DIR}/glib/apply-build-revision-to-files.py") endif () SET_AND_EXPOSE_TO_BUILD(USE_ATSPI ${ENABLE_ACCESSIBILITY}) @@ -21567,7 +21665,7 @@ index e2da8539b4da21628d3f6669bed9ce75f612de80..4e4f350694148eb8765877e8c9993bc1 SET_AND_EXPOSE_TO_BUILD(HAVE_OS_DARK_MODE_SUPPORT 1) diff --git a/Source/cmake/OptionsWPE.cmake b/Source/cmake/OptionsWPE.cmake -index cf7adc888b962db99862c6ad217993994a7bfa66..a5724fca3c0a5af77084b269a1ad268ab0ed3509 100644 +index 817c7fa402719bd7b7f3e17630014c5a0887c6a0..49fe44540744e204798214815d319133888b6140 100644 --- a/Source/cmake/OptionsWPE.cmake +++ b/Source/cmake/OptionsWPE.cmake @@ -9,8 +9,13 @@ if (${CMAKE_VERSION} VERSION_LESS "3.20" AND NOT ${CMAKE_GENERATOR} STREQUAL "Ni @@ -21581,9 +21679,9 @@ index cf7adc888b962db99862c6ad217993994a7bfa66..a5724fca3c0a5af77084b269a1ad268a +set(CMAKE_THREAD_PREFER_PTHREAD TRUE) +set(THREADS_PREFER_PTHREAD_FLAG TRUE) + - find_package(Cairo 1.14.0 REQUIRED) - find_package(Fontconfig 2.8.0 REQUIRED) - find_package(Freetype 2.4.2 REQUIRED) + find_package(Cairo 1.16.0 REQUIRED) + find_package(Fontconfig 2.13.0 REQUIRED) + find_package(Freetype 2.9.0 REQUIRED) @@ -41,12 +46,12 @@ include(GStreamerDefinitions) # changing the value of the option. WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_ACCESSIBILITY PUBLIC ON) @@ -21615,9 +21713,9 @@ index cf7adc888b962db99862c6ad217993994a7bfa66..a5724fca3c0a5af77084b269a1ad268a -WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_THUNDER PRIVATE ${ENABLE_DEVELOPER_MODE}) +WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_THUNDER PRIVATE OFF) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_TOUCH_EVENTS PRIVATE ON) + WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_VARIATION_FONTS PRIVATE ON) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_WEB_CODECS PRIVATE ${ENABLE_EXPERIMENTAL_FEATURES}) - WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_WEB_RTC PRIVATE ${ENABLE_EXPERIMENTAL_FEATURES}) -@@ -88,18 +93,35 @@ if (WPE_VERSION VERSION_GREATER_EQUAL 1.13.90) +@@ -89,18 +94,35 @@ if (WPE_VERSION VERSION_GREATER_EQUAL 1.13.90) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_GAMEPAD PUBLIC ON) endif () @@ -21657,68 +21755,18 @@ index cf7adc888b962db99862c6ad217993994a7bfa66..a5724fca3c0a5af77084b269a1ad268a # Private options specific to the WPE port. diff --git a/Source/cmake/OptionsWin.cmake b/Source/cmake/OptionsWin.cmake -index cef1f0911788124c8c32c892308f63af11878887..018ad0d0c39503f4b74dc44979e37d6f1e53d665 100644 +index 980bc88be9edc3d688d6c23030bc77302a020665..164ba1d07aa9630e6e993d0d3eb6464c8c0fdf2e 100644 --- a/Source/cmake/OptionsWin.cmake +++ b/Source/cmake/OptionsWin.cmake -@@ -7,8 +7,9 @@ add_definitions(-D_WINDOWS -DWINVER=0x601 -D_WIN32_WINNT=0x601) - add_definitions(-DNOMINMAX) - add_definitions(-DUNICODE -D_UNICODE) - -+set(ENABLE_WEBKIT_LEGACY OFF) -+ - if ((NOT DEFINED ENABLE_WEBKIT_LEGACY) OR ENABLE_WEBKIT_LEGACY) -- set(ENABLE_WEBKIT_LEGACY ON) - set(ENABLE_WEBKIT OFF) - endif () - -@@ -25,11 +26,9 @@ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_CHANNEL_MESSAGING PUBLIC ON) - WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_CSS_BOX_DECORATION_BREAK PUBLIC ON) - WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_CURSOR_VISIBILITY PUBLIC ON) - WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_DATALIST_ELEMENT PUBLIC OFF) --WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_DEVICE_ORIENTATION PUBLIC OFF) - WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_DRAG_SUPPORT PUBLIC ON) - WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_FTL_JIT PUBLIC OFF) - WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_FULLSCREEN_API PUBLIC ON) --WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_GAMEPAD PUBLIC OFF) - WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_GEOLOCATION PUBLIC ON) - WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_INPUT_TYPE_COLOR PUBLIC OFF) - WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_INPUT_TYPE_DATE PUBLIC OFF) -@@ -47,7 +46,6 @@ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MEDIA_SOURCE PUBLIC OFF) - WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MEDIA_STATISTICS PUBLIC ON) - WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MINIBROWSER PUBLIC ON) - WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MOUSE_CURSOR_SCALE PUBLIC ON) --WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_NOTIFICATIONS PUBLIC OFF) - WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_VIDEO PUBLIC ON) - WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_WEBASSEMBLY PRIVATE OFF) - WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_WEB_AUDIO PUBLIC OFF) -@@ -89,6 +87,16 @@ if (${WTF_PLATFORM_WIN_CAIRO}) - # No support planned - WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_FTPDIR PRIVATE OFF) - -+ # Playwright -+ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_CSS_CONIC_GRADIENTS PRIVATE ON) -+ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_DARK_MODE_CSS PRIVATE ON) -+ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_DEVICE_ORIENTATION PRIVATE ON) -+ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_DOWNLOAD_ATTRIBUTE PRIVATE ON) -+ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_GAMEPAD PRIVATE ON) -+ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_NOTIFICATIONS PRIVATE ON) -+ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_POINTER_LOCK PRIVATE ON) -+ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_TOUCH_EVENTS PRIVATE ON) -+ - # FIXME: Implement plugin process on Modern WebKit. https://bugs.webkit.org/show_bug.cgi?id=185313 - WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_NETSCAPE_PLUGIN_API PRIVATE OFF) - else () -diff --git a/Source/cmake/OptionsWinCairo.cmake b/Source/cmake/OptionsWinCairo.cmake -index 8ee72e595446961e3ee47105eaebe99d7d47d0ca..b35401f3dd50d14653502f4392ed990e76cf0753 100644 ---- a/Source/cmake/OptionsWinCairo.cmake -+++ b/Source/cmake/OptionsWinCairo.cmake -@@ -40,19 +40,41 @@ if (OpenJPEG_FOUND) +@@ -98,16 +98,37 @@ if (OpenJPEG_FOUND) endif () find_package(WOFF2 1.0.2 COMPONENTS dec) -if (WOFF2_FOUND) +- find_package(Brotli REQUIRED COMPONENTS dec) - SET_AND_EXPOSE_TO_BUILD(USE_WOFF2 ON) -endif () ++find_package(Brotli REQUIRED COMPONENTS dec) +SET_AND_EXPOSE_TO_BUILD(USE_WOFF2 ON) find_package(WebP COMPONENTS demux) @@ -21749,29 +21797,29 @@ index 8ee72e595446961e3ee47105eaebe99d7d47d0ca..b35401f3dd50d14653502f4392ed990e +message(STATUS "Found LIBVPX_CUSTOM_INCLUDE_DIR = ${LIBVPX_CUSTOM_INCLUDE_DIR}") +# Playwright end + - set(USE_ANGLE_EGL ON) + WEBKIT_OPTION_BEGIN() - SET_AND_EXPOSE_TO_BUILD(USE_ANGLE ON) - SET_AND_EXPOSE_TO_BUILD(USE_CAIRO ON) -+SET_AND_EXPOSE_TO_BUILD(USE_CF ON) - SET_AND_EXPOSE_TO_BUILD(USE_CURL ON) - SET_AND_EXPOSE_TO_BUILD(USE_GRAPHICS_LAYER_TEXTURE_MAPPER ON) - SET_AND_EXPOSE_TO_BUILD(USE_GRAPHICS_LAYER_WC ON) -@@ -76,11 +98,7 @@ set(CMAKE_REQUIRED_LIBRARIES "${OPENSSL_LIBRARIES}") - WEBKIT_CHECK_HAVE_SYMBOL(USE_BORINGSSL OPENSSL_IS_BORINGSSL openssl/ssl.h) - cmake_pop_check_state() + # FIXME: Most of these options should not be public. +@@ -184,6 +205,17 @@ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_WEB_CRYPTO PRIVATE ${ENABLE_EXPERIMENTAL + # No support planned + WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_FTPDIR PRIVATE OFF) --# CoreFoundation is required when building WebKitLegacy --if (ENABLE_WEBKIT_LEGACY) -- SET_AND_EXPOSE_TO_BUILD(USE_CF ON) -- find_package(Apple REQUIRED COMPONENTS CoreFoundation) --endif () -+find_package(Apple REQUIRED COMPONENTS CoreFoundation) ++# Plawright begin ++WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_CSS_CONIC_GRADIENTS PRIVATE ON) ++WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_DARK_MODE_CSS PRIVATE ON) ++WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_DEVICE_ORIENTATION PRIVATE ON) ++WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_DOWNLOAD_ATTRIBUTE PRIVATE ON) ++WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_GAMEPAD PRIVATE ON) ++WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_NOTIFICATIONS PRIVATE ON) ++WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_POINTER_LOCK PRIVATE ON) ++WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_TOUCH_EVENTS PRIVATE ON) ++# Playwright end ++ + # FIXME: Implement plugin process on Modern WebKit. https://bugs.webkit.org/show_bug.cgi?id=185313 + WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_NETSCAPE_PLUGIN_API PRIVATE OFF) - add_definitions(-DWTF_PLATFORM_WIN_CAIRO=1) - add_definitions(-DNOCRYPT) diff --git a/Source/cmake/WebKitCompilerFlags.cmake b/Source/cmake/WebKitCompilerFlags.cmake -index 074fdf58bcbdcf1b11b89de925bd69bdac90ed62..2bf423fa13ab2b48fbc06b2dc2a13d94924da58b 100644 +index 5bb66cd2d9cf9529ab813ed357a3ddb2534f3bc4..bdf1c642c3236305ddd5df65d23220d2ceb4fae2 100644 --- a/Source/cmake/WebKitCompilerFlags.cmake +++ b/Source/cmake/WebKitCompilerFlags.cmake @@ -87,7 +87,7 @@ macro(WEBKIT_ADD_TARGET_CXX_FLAGS _target) @@ -21839,7 +21887,7 @@ index 7a3f10169eb402c5158b37adbf75c27f70e2018a..3a7f919e0ed5a5f36cd57af2c26e8352 } diff --git a/Tools/MiniBrowser/gtk/BrowserWindow.c b/Tools/MiniBrowser/gtk/BrowserWindow.c -index 9a7de085e42e18cbbe52786eda418be8c90a38ba..e8b154bc4ab1b6e6f706ee27505b3e5514c860c7 100644 +index 6f5de63b58f1f01dba1915186daa32f4445178ea..8f44c96f28d58fa2294f05c5598ae2978912c7d5 100644 --- a/Tools/MiniBrowser/gtk/BrowserWindow.c +++ b/Tools/MiniBrowser/gtk/BrowserWindow.c @@ -73,7 +73,7 @@ struct _BrowserWindowClass { @@ -21872,7 +21920,7 @@ index 9a7de085e42e18cbbe52786eda418be8c90a38ba..e8b154bc4ab1b6e6f706ee27505b3e55 gtk_window_set_title(GTK_WINDOW(window), privateTitle ? privateTitle : title); g_free(privateTitle); } -@@ -504,8 +498,12 @@ static gboolean webViewDecidePolicy(WebKitWebView *webView, WebKitPolicyDecision +@@ -508,8 +502,12 @@ static gboolean webViewDecidePolicy(WebKitWebView *webView, WebKitPolicyDecision return FALSE; WebKitNavigationAction *navigationAction = webkit_navigation_policy_decision_get_navigation_action(WEBKIT_NAVIGATION_POLICY_DECISION(decision)); @@ -21887,7 +21935,7 @@ index 9a7de085e42e18cbbe52786eda418be8c90a38ba..e8b154bc4ab1b6e6f706ee27505b3e55 return FALSE; /* Multiple tabs are not allowed in editor mode. */ -@@ -1484,6 +1482,12 @@ static gboolean browserWindowDeleteEvent(GtkWidget *widget, GdkEventAny* event) +@@ -1490,6 +1488,12 @@ static gboolean browserWindowDeleteEvent(GtkWidget *widget, GdkEventAny* event) } #endif @@ -21900,7 +21948,7 @@ index 9a7de085e42e18cbbe52786eda418be8c90a38ba..e8b154bc4ab1b6e6f706ee27505b3e55 static void browser_window_class_init(BrowserWindowClass *klass) { GObjectClass *gobjectClass = G_OBJECT_CLASS(klass); -@@ -1497,6 +1501,14 @@ static void browser_window_class_init(BrowserWindowClass *klass) +@@ -1503,6 +1507,14 @@ static void browser_window_class_init(BrowserWindowClass *klass) GtkWidgetClass *widgetClass = GTK_WIDGET_CLASS(klass); widgetClass->delete_event = browserWindowDeleteEvent; #endif @@ -21929,7 +21977,7 @@ index c58ebc2beec7e722e8b65b3358b278400e9a1232..526ab90cce49d94f263ab48bbb87e997 typedef struct _BrowserWindow BrowserWindow; diff --git a/Tools/MiniBrowser/gtk/main.c b/Tools/MiniBrowser/gtk/main.c -index 5254a76126fb3fd1345a30cd9579ea7fe130b75e..bd425e376792cdc1c54f0a330ab44e4a24e63738 100644 +index 4e5b508bd5ffea600579d5a313c9122d48991c49..4a668738e7c5ffd8a2d8ea90dedd4239e3479ba1 100644 --- a/Tools/MiniBrowser/gtk/main.c +++ b/Tools/MiniBrowser/gtk/main.c @@ -65,7 +65,12 @@ static char* timeZone; @@ -21956,7 +22004,7 @@ index 5254a76126fb3fd1345a30cd9579ea7fe130b75e..bd425e376792cdc1c54f0a330ab44e4a { G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &uriArguments, 0, "[URL…]" }, { 0, 0, 0, 0, 0, 0, 0 } }; -@@ -642,6 +651,57 @@ static void filterSavedCallback(WebKitUserContentFilterStore *store, GAsyncResul +@@ -646,6 +655,57 @@ static void filterSavedCallback(WebKitUserContentFilterStore *store, GAsyncResul g_main_loop_quit(data->mainLoop); } @@ -22014,7 +22062,7 @@ index 5254a76126fb3fd1345a30cd9579ea7fe130b75e..bd425e376792cdc1c54f0a330ab44e4a static void startup(GApplication *application) { const char *actionAccels[] = { -@@ -672,6 +732,14 @@ static void startup(GApplication *application) +@@ -676,6 +736,14 @@ static void startup(GApplication *application) static void activate(GApplication *application, WebKitSettings *webkitSettings) { @@ -22029,7 +22077,7 @@ index 5254a76126fb3fd1345a30cd9579ea7fe130b75e..bd425e376792cdc1c54f0a330ab44e4a #if GTK_CHECK_VERSION(3, 98, 0) WebKitWebContext *webContext = g_object_new(WEBKIT_TYPE_WEB_CONTEXT, "time-zone-override", timeZone, NULL); webkit_web_context_set_automation_allowed(webContext, automationMode); -@@ -719,9 +787,12 @@ static void activate(GApplication *application, WebKitSettings *webkitSettings) +@@ -728,9 +796,12 @@ static void activate(GApplication *application, WebKitSettings *webkitSettings) } #else WebKitWebsiteDataManager *manager; @@ -22044,15 +22092,15 @@ index 5254a76126fb3fd1345a30cd9579ea7fe130b75e..bd425e376792cdc1c54f0a330ab44e4a char *dataDirectory = g_build_filename(g_get_user_data_dir(), "webkitgtk-" WEBKITGTK_API_VERSION, "MiniBrowser", NULL); char *cacheDirectory = g_build_filename(g_get_user_cache_dir(), "webkitgtk-" WEBKITGTK_API_VERSION, "MiniBrowser", NULL); manager = webkit_website_data_manager_new("base-data-directory", dataDirectory, "base-cache-directory", cacheDirectory, NULL); -@@ -772,6 +843,7 @@ static void activate(GApplication *application, WebKitSettings *webkitSettings) - // Enable the favicon database. In GTK4 API they are enabled by default. +@@ -781,6 +852,7 @@ static void activate(GApplication *application, WebKitSettings *webkitSettings) + // Enable the favicon database. webkit_web_context_set_favicon_database_directory(webContext, NULL); #endif + persistentWebContext = webContext; webkit_web_context_register_uri_scheme(webContext, BROWSER_ABOUT_SCHEME, (WebKitURISchemeRequestCallback)aboutURISchemeRequestCallback, NULL, NULL); -@@ -838,9 +910,7 @@ static void activate(GApplication *application, WebKitSettings *webkitSettings) +@@ -851,9 +923,7 @@ static void activate(GApplication *application, WebKitSettings *webkitSettings) if (exitAfterLoad) exitAfterWebViewLoadFinishes(webView, application); } @@ -22063,7 +22111,7 @@ index 5254a76126fb3fd1345a30cd9579ea7fe130b75e..bd425e376792cdc1c54f0a330ab44e4a } } else { WebKitWebView *webView = createBrowserTab(mainWindow, webkitSettings, userContentManager, defaultWebsitePolicies); -@@ -890,7 +960,7 @@ int main(int argc, char *argv[]) +@@ -903,7 +973,7 @@ int main(int argc, char *argv[]) g_option_context_add_group(context, gst_init_get_option_group()); #endif @@ -22072,7 +22120,7 @@ index 5254a76126fb3fd1345a30cd9579ea7fe130b75e..bd425e376792cdc1c54f0a330ab44e4a webkit_settings_set_enable_developer_extras(webkitSettings, TRUE); webkit_settings_set_enable_webgl(webkitSettings, TRUE); webkit_settings_set_enable_media_stream(webkitSettings, TRUE); -@@ -922,9 +992,11 @@ int main(int argc, char *argv[]) +@@ -935,9 +1005,11 @@ int main(int argc, char *argv[]) } GtkApplication *application = gtk_application_new("org.webkitgtk.MiniBrowser", G_APPLICATION_NON_UNIQUE); @@ -22085,7 +22133,7 @@ index 5254a76126fb3fd1345a30cd9579ea7fe130b75e..bd425e376792cdc1c54f0a330ab44e4a return exitAfterLoad && webProcessCrashed ? 1 : 0; diff --git a/Tools/MiniBrowser/wpe/main.cpp b/Tools/MiniBrowser/wpe/main.cpp -index e61e1ec89f3c9c923f712a0e2b12aaeffcc63431..7069b3551b9892a1528dcf117ca6d69f06a51a3b 100644 +index afa01e9caed8075125621df818683aaacd6a97e0..c03f9a0623990c58eb715602b3d516a0f996241d 100644 --- a/Tools/MiniBrowser/wpe/main.cpp +++ b/Tools/MiniBrowser/wpe/main.cpp @@ -45,6 +45,9 @@ static gboolean headlessMode; @@ -22146,12 +22194,16 @@ index e61e1ec89f3c9c923f712a0e2b12aaeffcc63431..7069b3551b9892a1528dcf117ca6d69f { auto backend = createViewBackend(1280, 720); struct wpe_view_backend* wpeBackend = backend->backend(); -@@ -172,20 +201,109 @@ static WebKitWebView* createWebView(WebKitWebView* webView, WebKitNavigationActi +@@ -172,24 +201,112 @@ static WebKitWebView* createWebView(WebKitWebView* webView, WebKitNavigationActi delete static_cast(data); }, backend.release()); -- auto* newWebView = webkit_web_view_new_with_related_view(viewBackend, webView); -- webkit_web_view_set_settings(newWebView, webkit_web_view_get_settings(webView)); +- auto* newWebView = WEBKIT_WEB_VIEW(g_object_new(WEBKIT_TYPE_WEB_VIEW, +- "backend", viewBackend, +- "related-view", webView, +- "settings", webkit_web_view_get_settings(webView), +- "user-content-manager", webkit_web_view_get_user_content_manager(webView), +- nullptr)); +// Playwright begin + if (headlessMode) { + webkit_web_view_backend_set_screenshot_callback(viewBackend, @@ -22162,7 +22214,10 @@ index e61e1ec89f3c9c923f712a0e2b12aaeffcc63431..7069b3551b9892a1528dcf117ca6d69f +// Playwright end + WebKitWebView* newWebView; + if (webView) { -+ newWebView = webkit_web_view_new_with_related_view(viewBackend, webView); ++ newWebView = WEBKIT_WEB_VIEW(g_object_new(WEBKIT_TYPE_WEB_VIEW, ++ "backend", viewBackend, ++ "related-view", webView, ++ nullptr)); + } else { + newWebView = WEBKIT_WEB_VIEW(g_object_new(WEBKIT_TYPE_WEB_VIEW, + "backend", viewBackend, @@ -22258,7 +22313,7 @@ index e61e1ec89f3c9c923f712a0e2b12aaeffcc63431..7069b3551b9892a1528dcf117ca6d69f #if ENABLE_2022_GLIB_API WebKitNetworkSession* networkSession = nullptr; if (!automationMode) { -@@ -216,10 +334,16 @@ static void activate(GApplication* application, WPEToolingBackends::ViewBackend* +@@ -220,10 +337,16 @@ static void activate(GApplication* application, WPEToolingBackends::ViewBackend* webkit_cookie_manager_set_persistent_storage(cookieManager, cookiesFile, storageType); } } @@ -22278,7 +22333,7 @@ index e61e1ec89f3c9c923f712a0e2b12aaeffcc63431..7069b3551b9892a1528dcf117ca6d69f webkit_website_data_manager_set_itp_enabled(manager, enableITP); if (proxy) { -@@ -250,6 +374,7 @@ static void activate(GApplication* application, WPEToolingBackends::ViewBackend* +@@ -254,6 +377,7 @@ static void activate(GApplication* application, WPEToolingBackends::ViewBackend* } #endif @@ -22286,7 +22341,7 @@ index e61e1ec89f3c9c923f712a0e2b12aaeffcc63431..7069b3551b9892a1528dcf117ca6d69f WebKitUserContentManager* userContentManager = nullptr; if (contentFilter) { GFile* contentFilterFile = g_file_new_for_commandline_arg(contentFilter); -@@ -287,6 +412,15 @@ static void activate(GApplication* application, WPEToolingBackends::ViewBackend* +@@ -291,6 +415,15 @@ static void activate(GApplication* application, WPEToolingBackends::ViewBackend* delete static_cast(data); }, backend); @@ -22302,7 +22357,7 @@ index e61e1ec89f3c9c923f712a0e2b12aaeffcc63431..7069b3551b9892a1528dcf117ca6d69f auto* webView = WEBKIT_WEB_VIEW(g_object_new(WEBKIT_TYPE_WEB_VIEW, "backend", viewBackend, "web-context", webContext, -@@ -306,8 +440,6 @@ static void activate(GApplication* application, WPEToolingBackends::ViewBackend* +@@ -310,8 +443,6 @@ static void activate(GApplication* application, WPEToolingBackends::ViewBackend* backend->setAccessibleChild(ATK_OBJECT(accessible)); #endif @@ -22311,7 +22366,7 @@ index e61e1ec89f3c9c923f712a0e2b12aaeffcc63431..7069b3551b9892a1528dcf117ca6d69f webkit_web_context_set_automation_allowed(webContext, automationMode); g_signal_connect(webContext, "automation-started", G_CALLBACK(automationStartedCallback), webView); g_signal_connect(webView, "permission-request", G_CALLBACK(decidePermissionRequest), nullptr); -@@ -320,16 +452,9 @@ static void activate(GApplication* application, WPEToolingBackends::ViewBackend* +@@ -324,16 +455,9 @@ static void activate(GApplication* application, WPEToolingBackends::ViewBackend* webkit_web_view_set_background_color(webView, &color); if (uriArguments) { @@ -22331,7 +22386,7 @@ index e61e1ec89f3c9c923f712a0e2b12aaeffcc63431..7069b3551b9892a1528dcf117ca6d69f webkit_web_view_load_uri(webView, "about:blank"); else webkit_web_view_load_uri(webView, "https://wpewebkit.org"); -@@ -381,8 +506,14 @@ int main(int argc, char *argv[]) +@@ -385,8 +509,14 @@ int main(int argc, char *argv[]) return 1; } @@ -22359,10 +22414,10 @@ index 1067b31bc989748dfcc5502209d36d001b9b239e..7629263fb8bc93dca6dfc01c75eed8d2 + add_subdirectory(Playwright/win) +endif () diff --git a/Tools/Scripts/build-webkit b/Tools/Scripts/build-webkit -index f52a2682fddc7b8502318ff5c57de33c4b7a3e42..121d76da00d467be3b0d1bb329870475f98d2f0e 100755 +index 86a50b077382a3c9aa366d5a999cb5781309806a..950e1af1f6724ff13ccbde6631022c4c70cc5e57 100755 --- a/Tools/Scripts/build-webkit +++ b/Tools/Scripts/build-webkit -@@ -266,7 +266,7 @@ if (isAppleCocoaWebKit()) { +@@ -272,7 +272,7 @@ if (isAppleCocoaWebKit()) { push @projects, ("Source/WebKit"); if (!isEmbeddedWebKit()) { @@ -22387,15 +22442,15 @@ index b8056910b6cde5610c3e8e4c2992723f8cf80cd0..44367cb186bff1fb85e76cf8f0530170 "${WebKitTestRunner_DIR}/InjectedBundle/Bindings/AccessibilityController.idl" "${WebKitTestRunner_DIR}/InjectedBundle/Bindings/AccessibilityTextMarker.idl" diff --git a/Tools/WebKitTestRunner/TestController.cpp b/Tools/WebKitTestRunner/TestController.cpp -index 297d0efba8eb2cca75295ec87fad7018b3d55422..d62c1c1820f725df7c10bf562fa2eedbe994bb80 100644 +index 981ba306292ac9c905df1f4289e5a9f459496765..3d5ab75f8cbfd322961c105936665b39567f6930 100644 --- a/Tools/WebKitTestRunner/TestController.cpp +++ b/Tools/WebKitTestRunner/TestController.cpp -@@ -941,6 +941,7 @@ void TestController::createWebViewWithOptions(const TestOptions& options) +@@ -962,6 +962,7 @@ void TestController::createWebViewWithOptions(const TestOptions& options) 0, // requestStorageAccessConfirm shouldAllowDeviceOrientationAndMotionAccess, runWebAuthenticationPanel, + 0, // handleJavaScriptDialog - decidePolicyForSpeechRecognitionPermissionRequest, + 0, decidePolicyForMediaKeySystemPermissionRequest, nullptr, // requestWebAuthenticationNoGesture diff --git a/Tools/WebKitTestRunner/mac/EventSenderProxy.mm b/Tools/WebKitTestRunner/mac/EventSenderProxy.mm @@ -22498,48 +22553,8 @@ index 92e312b9ce6383eb6b73296e70a3c9e996f55f2c..b3e968773a1919c3edadbb0a543ea056 # These are dependencies necessary for running tests. cups-daemon -diff --git a/Tools/gtk/jhbuild.modules b/Tools/gtk/jhbuild.modules -index af4b52daa5d58af71cc2860f765a2940a69e343a..079de4ed4f9ca640ab04f06e60e020e7c4460684 100644 ---- a/Tools/gtk/jhbuild.modules -+++ b/Tools/gtk/jhbuild.modules -@@ -292,28 +292,28 @@ - - - -- -+ hash="sha256:ac4de2a4ef4bd5665052952fe169657e65e895c5057dffb3c2a810f6191a0c36"/> - - - - - - -- -+ hash="sha256:4beb23270ba6cf7caf20b597354d75194d89afb69d2efcf15f4271688ba6f746"> - - - - - - -- -- -+ -+ hash="sha256:cfa008a5af822b36ae6287f18182c40c91dd699c55faa38605881ed175ca464f"> - - - diff --git a/Tools/jhbuild/jhbuild-minimal.modules b/Tools/jhbuild/jhbuild-minimal.modules -index f88cafefce902e1abe41b4890ab58030bd02f04d..18624763488a34676adaa0e74e7c7ee5f53bf51c 100644 +index c004dfadb3cafe873011d6e003e47a422f8db620..79eed95ac99026518466164505f7daeb72359a27 100644 --- a/Tools/jhbuild/jhbuild-minimal.modules +++ b/Tools/jhbuild/jhbuild-minimal.modules @@ -22,7 +22,6 @@ @@ -22550,147 +22565,34 @@ index f88cafefce902e1abe41b4890ab58030bd02f04d..18624763488a34676adaa0e74e7c7ee5 -@@ -135,13 +134,13 @@ - hash="sha256:4fe0a4bed6b4c3ae7249d341031c27b32f8d9e0ffb5337d71cbcec7160362cf7"/> - +@@ -77,18 +76,18 @@ + -- -+ - - -+ hash="sha256:5e9a0d65c1a51936362b9686d1c5e9e184a6fd245d57e7269750ce50c20f5d9a"/> - + +- ++ hash="a6f00a7d091cbd4db57fe7ee3b4c12c6350921d654ed79812800a26c888481d2"/> + - -@@ -175,21 +174,34 @@ - - - -- -- -- -- -- -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -- -+ hash="sha256:ac4de2a4ef4bd5665052952fe169657e65e895c5057dffb3c2a810f6191a0c36"/> + - + -@@ -197,9 +209,9 @@ - - - -- -+ hash="sha256:4beb23270ba6cf7caf20b597354d75194d89afb69d2efcf15f4271688ba6f746"> +- ++ hash="9652a99c75fe1c6eab0585b6395f4e104b2427e4d1f42969f1f77df29920d253"> - - -@@ -207,10 +219,10 @@ - -- -- -+ -+ hash="sha256:cfa008a5af822b36ae6287f18182c40c91dd699c55faa38605881ed175ca464f"> - - - -diff --git a/Tools/jhbuild/jhbuildrc_common.py b/Tools/jhbuild/jhbuildrc_common.py -index 814abef097120d8f0b99ce7b05a43dc014597248..8dbf674c859c10be5430892e71ceb502a5c6cc16 100644 ---- a/Tools/jhbuild/jhbuildrc_common.py -+++ b/Tools/jhbuild/jhbuildrc_common.py -@@ -19,7 +19,7 @@ import multiprocessing - import sys - import os - import platform -- -+import re - - script_dir = None - -@@ -35,6 +35,25 @@ def top_level_path(*args): - return os.path.join(*((os.path.join(os.path.dirname(__file__), '..', '..'),) + args)) - - -+def gnutls_version(): -+ ret = {} -+ gnutls = "/usr/include/gnutls/gnutls.h" -+ with open(gnutls) as fd: -+ for l in fd.readlines(): -+ m = re.match(r'#define\s+GNUTLS_VERSION_([A-Z]+)\s+(\d+)', l) -+ if m: -+ key, value = m.group(1), m.group(2) -+ ret[key.lower()] = int(value) -+ fd.close() -+ return ret -+ -+ -+def use_openssl_backend(): -+ v = gnutls_version() -+ # Use Open SSL if gnu TLS version is less then 3.6.13 -+ return v["major"] * 100000 + v["minor"] * 1000 + v["patch"] < 3 * 100000 + 6 * 1000 + 13 -+ -+ - def init(jhbuildrc_globals, jhbuild_platform): - - __tools_directory = os.path.join(os.path.dirname(__file__), "../", jhbuild_platform) -@@ -100,3 +119,7 @@ def init(jhbuildrc_globals, jhbuild_platform): - jhbuild_enable_thunder = os.environ['JHBUILD_ENABLE_THUNDER'].lower() - if jhbuild_enable_thunder == 'yes' or jhbuild_enable_thunder == '1' or jhbuild_enable_thunder == 'true': - jhbuildrc_globals['conditions'].add('Thunder') -+ -+ if use_openssl_backend(): -+ jhbuildrc_globals['conditions'].add('use_openssl_backend') -+ diff --git a/Tools/win/DLLLauncher/DLLLauncherMain.cpp b/Tools/win/DLLLauncher/DLLLauncherMain.cpp -index 52605867b9302d1afcc56c5e9b0c54acf0827900..6edf24ab60249241ba2969531ef55f4b495dce9e 100644 +index 879d19af24deecab1d55b97e4141ab1be753d8ce..5b28580d8bde8a346051a82b2c047bead17ec2b0 100644 --- a/Tools/win/DLLLauncher/DLLLauncherMain.cpp +++ b/Tools/win/DLLLauncher/DLLLauncherMain.cpp -@@ -99,11 +99,9 @@ static bool prependPath(const std::wstring& directoryToPrepend) +@@ -48,11 +48,9 @@ static std::wstring copyEnvironmentVariable(const std::wstring& variable) static int fatalError(const std::wstring& programName, const std::wstring& message) { std::wstring caption = programName + L" can't open."; @@ -22768,46 +22670,6 @@ index 4b3d262528d33800ac46e4e9fc342b11f2744979..39d72bd2c04e79b94a5c7634b6abc9b2 static cairo_user_data_key_t bufferKey; cairo_surface_set_user_data(m_snapshot, &bufferKey, buffer, -diff --git a/Tools/wpe/jhbuild.modules b/Tools/wpe/jhbuild.modules -index 0f6f8837619eee7b48b2b1cba0b2d4da513f07c6..8e72dc82e404a2009ff922d1517abf92509267e3 100644 ---- a/Tools/wpe/jhbuild.modules -+++ b/Tools/wpe/jhbuild.modules -@@ -276,28 +276,28 @@ - - - -- -+ hash="sha256:ac4de2a4ef4bd5665052952fe169657e65e895c5057dffb3c2a810f6191a0c36"/> - - - - - - -- -+ hash="sha256:4beb23270ba6cf7caf20b597354d75194d89afb69d2efcf15f4271688ba6f746"> - - - - - - -- -- -+ -+ hash="sha256:cfa008a5af822b36ae6287f18182c40c91dd699c55faa38605881ed175ca464f"> - - - diff --git a/WebKit.xcworkspace/contents.xcworkspacedata b/WebKit.xcworkspace/contents.xcworkspacedata index a0f02e61be7e667c6ba164ca578109af36ac28d9..8f5af2e82c167ba6798fb7fde24a9f641f6554a5 100644 --- a/WebKit.xcworkspace/contents.xcworkspacedata