diff --git a/browser_patches/firefox/UPSTREAM_CONFIG.sh b/browser_patches/firefox/UPSTREAM_CONFIG.sh index 1d78bf2ccc..6a586f9dc0 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="2be4fd198990dc742793fd1ba611888fb640e7f7" +BASE_REVISION="fdbb85992450ee14d23efe08c0dd655eedab0e1d" diff --git a/browser_patches/firefox/juggler/NetworkObserver.js b/browser_patches/firefox/juggler/NetworkObserver.js index 9553b69050..c21c9effbe 100644 --- a/browser_patches/firefox/juggler/NetworkObserver.js +++ b/browser_patches/firefox/juggler/NetworkObserver.js @@ -112,7 +112,7 @@ class NetworkRequest { this._frameId = helper.browsingContextToFrameId(browsingContext); this.requestId = httpChannel.channelId + ''; - this.navigationId = httpChannel.isMainDocumentChannel ? helper.toProtocolNavigationId(browsingContext.jugglerCurrentLoadIdentifier) : undefined; + this.navigationId = httpChannel.isMainDocumentChannel && loadInfo ? helper.toProtocolNavigationId(loadInfo.jugglerLoadIdentifier) : undefined; this._redirectedIndex = 0; if (redirectedFrom) { @@ -727,6 +727,7 @@ function readRequestPostData(httpChannel) { if (!iStream) return undefined; const isSeekableStream = iStream instanceof Ci.nsISeekableStream; + const isTellableStream = iStream instanceof Ci.nsITellableStream; // For some reason, we cannot rewind back big streams, // so instead we should clone them. @@ -735,7 +736,9 @@ function readRequestPostData(httpChannel) { iStream = iStream.clone(); let prevOffset; - if (isSeekableStream) { + // Surprisingly, stream might implement `nsITellableStream` without + // implementing the `tell` method. + if (isSeekableStream && isTellableStream && iStream.tell) { prevOffset = iStream.tell(); iStream.seek(Ci.nsISeekableStream.NS_SEEK_SET, 0); } diff --git a/browser_patches/firefox/juggler/SimpleChannel.js b/browser_patches/firefox/juggler/SimpleChannel.js index 9abe2146fc..a4e1b19df4 100644 --- a/browser_patches/firefox/juggler/SimpleChannel.js +++ b/browser_patches/firefox/juggler/SimpleChannel.js @@ -9,29 +9,7 @@ const SIMPLE_CHANNEL_MESSAGE_NAME = 'juggler:simplechannel'; class SimpleChannel { - static createForActor(actor) { - const channel = new SimpleChannel(''); - channel.bindToActor(actor); - return channel; - } - - static createForMessageManager(name, mm) { - const channel = new SimpleChannel(name); - - const messageListener = { - receiveMessage: message => channel._onMessage(message.data) - }; - mm.addMessageListener(SIMPLE_CHANNEL_MESSAGE_NAME, messageListener); - - channel.setTransport({ - sendMessage: obj => mm.sendAsyncMessage(SIMPLE_CHANNEL_MESSAGE_NAME, obj), - dispose: () => mm.removeMessageListener(SIMPLE_CHANNEL_MESSAGE_NAME, messageListener), - }); - - return channel; - } - - constructor(name) { + constructor(name, uid) { this._name = name; this._messageId = 0; this._connectorId = 0; @@ -45,6 +23,13 @@ class SimpleChannel { this._ready = false; this._paused = false; this._disposed = false; + + this._bufferedResponses = new Map(); + // This is a "unique" identifier of this end of the channel. Two SimpleChannel instances + // on the same end of the channel (e.g. two content processes) must not have the same id. + // This way, the other end can distinguish between the old peer with a new transport and a new peer. + this._uid = uid; + this._connectedToUID = undefined; } bindToActor(actor) { @@ -73,12 +58,12 @@ class SimpleChannel { // 1. There are two channel ends in different processes. // 2. Both ends start in the `ready = false` state, meaning that they will // not send any messages over transport. - // 3. Once channel end is created, it sends `READY` message to the other end. - // 4. Eventually, at least one of the ends receives `READY` message and responds with - // `READY_ACK`. We assume at least one of the ends will receive "READY" event from the other, since + // 3. Once channel end is created, it sends { ack: `READY` } message to the other end. + // 4. Eventually, at least one of the ends receives { ack: `READY` } message and responds with + // { ack: `READY_ACK` }. We assume at least one of the ends will receive { ack: "READY" } event from the other, since // channel ends have a "parent-child" relation, i.e. one end is always created before the other one. - // 5. Once channel end receives either `READY` or `READY_ACK`, it transitions to `ready` state. - this.transport.sendMessage('READY'); + // 5. Once channel end receives either { ack: `READY` } or { ack: `READY_ACK` }, it transitions to `ready` state. + this.transport.sendMessage({ ack: 'READY', uid: this._uid }); } pause() { @@ -176,15 +161,33 @@ class SimpleChannel { } _onMessage(data) { - if (data === 'READY') { - this.transport.sendMessage('READY_ACK'); + if (data?.ack === 'READY') { + // The "READY" and "READY_ACK" messages are a part of initialization sequence. + // This sequence happens when: + // 1. A new SimpleChannel instance is getting initialized on the other end. + // In this case, it will have a different UID and we must clear + // `this._bufferedResponses` since they are no longer relevant. + // 2. A new transport is assigned to communicate between 2 SimpleChannel instances. + // In this case, we MUST NOT clear `this._bufferedResponses` since they are used + // to address the double-dispatch issue. + if (this._connectedToUID !== data.uid) + this._bufferedResponses.clear(); + this._connectedToUID = data.uid; + this.transport.sendMessage({ ack: 'READY_ACK', uid: this._uid }); this._markAsReady(); return; } - if (data === 'READY_ACK') { + if (data?.ack === 'READY_ACK') { + if (this._connectedToUID !== data.uid) + this._bufferedResponses.clear(); + this._connectedToUID = data.uid; this._markAsReady(); return; } + if (data?.ack === 'RESPONSE_ACK') { + this._bufferedResponses.delete(data.responseId); + return; + } if (this._paused) this._bufferedIncomingMessages.push(data); else @@ -193,12 +196,11 @@ class SimpleChannel { async _onMessageInternal(data) { if (data.responseId) { + this.transport.sendMessage({ ack: 'RESPONSE_ACK', responseId: data.responseId }); const message = this._pendingMessages.get(data.responseId); if (!message) { - // During corss-process navigation, we might receive a response for + // During cross-process navigation, we might receive a response for // the message sent by another process. - // TODO: consider events that are marked as "no-response" to avoid - // unneeded responses altogether. return; } this._pendingMessages.delete(data.responseId); @@ -207,6 +209,17 @@ class SimpleChannel { else message.resolve(data.result); } else if (data.requestId) { + // When the underlying transport gets replaced, some responses might + // not get delivered. As a result, sender will repeat the same request once + // a new transport gets set. + // + // If this request was already processed, we can fulfill it with the cached response + // and fast-return. + if (this._bufferedResponses.has(data.requestId)) { + this.transport.sendMessage(this._bufferedResponses.get(data.requestId)); + return; + } + const namespace = data.namespace; const handler = this._handlers.get(namespace); if (!handler) { @@ -218,12 +231,20 @@ class SimpleChannel { this.transport.sendMessage({responseId: data.requestId, error: `error in channel "${this._name}": No method "${data.methodName}" in namespace "${namespace}"`}); return; } + let response; + const connectedToUID = this._connectedToUID; try { const result = await method.call(handler, ...data.params); - this.transport.sendMessage({responseId: data.requestId, result}); + response = {responseId: data.requestId, result}; } catch (error) { - this.transport.sendMessage({responseId: data.requestId, error: `error in channel "${this._name}": exception while running method "${data.methodName}" in namespace "${namespace}": ${error.message} ${error.stack}`}); - return; + response = {responseId: data.requestId, error: `error in channel "${this._name}": exception while running method "${data.methodName}" in namespace "${namespace}": ${error.message} ${error.stack}`}; + } + // The connection might have changed during the ASYNCHRONOUS handler execution. + // We only need to buffer & send response if we are connected to the same + // end. + if (connectedToUID === this._connectedToUID) { + this._bufferedResponses.set(data.requestId, response); + this.transport.sendMessage(response); } } else { dump(`WARNING: unknown message in channel "${this._name}": ${JSON.stringify(data)}\n`); diff --git a/browser_patches/firefox/juggler/TargetRegistry.js b/browser_patches/firefox/juggler/TargetRegistry.js index c739c0d306..34e7bd940b 100644 --- a/browser_patches/firefox/juggler/TargetRegistry.js +++ b/browser_patches/firefox/juggler/TargetRegistry.js @@ -9,7 +9,6 @@ const {Preferences} = ChromeUtils.import("resource://gre/modules/Preferences.jsm const {ContextualIdentityService} = ChromeUtils.import("resource://gre/modules/ContextualIdentityService.jsm"); const {NetUtil} = ChromeUtils.import('resource://gre/modules/NetUtil.jsm'); const {AppConstants} = ChromeUtils.import("resource://gre/modules/AppConstants.jsm"); -const {OS} = ChromeUtils.import("resource://gre/modules/osfile.jsm"); const Cr = Components.results; @@ -350,7 +349,7 @@ class PageTarget { this._openerId = opener ? opener.id() : undefined; this._actor = undefined; this._actorSequenceNumber = 0; - this._channel = new SimpleChannel(`browser::page[${this._targetId}]`); + this._channel = new SimpleChannel(`browser::page[${this._targetId}]`, 'target-' + this._targetId); this._videoRecordingInfo = undefined; this._screencastRecordingInfo = undefined; this._dialogs = new Map(); @@ -381,7 +380,7 @@ class PageTarget { this._registry.emit(TargetRegistry.Events.TargetCreated, this); } - async activateAndRun(callback = () => {}) { + async activateAndRun(callback = () => {}, { muteNotificationsPopup = false } = {}) { const ownerWindow = this._tab.linkedBrowser.ownerGlobal; const tabBrowser = ownerWindow.gBrowser; // Serialize all tab-switching commands per tabbed browser @@ -393,7 +392,13 @@ class PageTarget { tabBrowser.selectedTab = this._tab; await promise; } - await callback(); + const notificationsPopup = muteNotificationsPopup ? this._linkedBrowser?.ownerDocument.getElementById('notification-popup') : null; + notificationsPopup?.style.setProperty('pointer-events', 'none'); + try { + await callback(); + } finally { + notificationsPopup?.style.removeProperty('pointer-events'); + } }); tabBrowser.__serializedChain = result.catch(error => { /* swallow errors to keep chain running */ }); return result; @@ -650,7 +655,7 @@ class PageTarget { // NSWindow.windowNumber may be -1, so we wait until the window is known // to be initialized and visible. await this.windowReady(); - const file = OS.Path.join(dir, helper.generateId() + '.webm'); + const file = PathUtils.join(dir, helper.generateId() + '.webm'); if (width < 10 || width > 10000 || height < 10 || height > 10000) throw new Error("Invalid size"); @@ -733,12 +738,15 @@ class PageTarget { // 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"); + const contextMenu = doc.getElementById('contentAreaContextMenu'); if (contextMenu) contextMenu.hidePopup(); - const autocompletePopup = doc.getElementById("PopupAutoComplete"); + const autocompletePopup = doc.getElementById('PopupAutoComplete'); if (autocompletePopup) autocompletePopup.hidePopup(); + const selectPopup = doc.getElementById('ContentSelectDropdown')?.menupopup; + if (selectPopup) + selectPopup.hidePopup() } dispose() { diff --git a/browser_patches/firefox/juggler/content/FrameTree.js b/browser_patches/firefox/juggler/content/FrameTree.js index 0d35854a53..2d59b3c43a 100644 --- a/browser_patches/firefox/juggler/content/FrameTree.js +++ b/browser_patches/firefox/juggler/content/FrameTree.js @@ -657,7 +657,7 @@ class Worker { workerDebugger.initialize('chrome://juggler/content/content/WorkerMain.js'); - this._channel = new SimpleChannel(`content::worker[${this._workerId}]`); + this._channel = new SimpleChannel(`content::worker[${this._workerId}]`, 'worker-' + this._workerId); this._channel.setTransport({ sendMessage: obj => workerDebugger.postMessage(JSON.stringify(obj)), dispose: () => {}, diff --git a/browser_patches/firefox/juggler/content/WorkerMain.js b/browser_patches/firefox/juggler/content/WorkerMain.js index 3d0c1168cb..9be68851c5 100644 --- a/browser_patches/firefox/juggler/content/WorkerMain.js +++ b/browser_patches/firefox/juggler/content/WorkerMain.js @@ -6,7 +6,9 @@ loadSubScript('chrome://juggler/content/content/Runtime.js'); loadSubScript('chrome://juggler/content/SimpleChannel.js'); -const channel = new SimpleChannel('worker::worker'); +// SimpleChannel in worker is never replaced: its lifetime matches the lifetime +// of the worker itself, so anything would work as a unique identifier. +const channel = new SimpleChannel('worker::content', 'unique_identifier'); const eventListener = event => channel._onMessage(JSON.parse(event.data)); this.addEventListener('message', eventListener); channel.setTransport({ diff --git a/browser_patches/firefox/juggler/content/main.js b/browser_patches/firefox/juggler/content/main.js index 647238efde..eb971b5d4d 100644 --- a/browser_patches/firefox/juggler/content/main.js +++ b/browser_patches/firefox/juggler/content/main.js @@ -93,7 +93,8 @@ function initialize(browsingContext, docShell, actor) { for (const { worldName, name, script } of [...contextCrossProcessCookie.bindings, ...pageCrossProcessCookie.bindings]) data.frameTree.addBinding(worldName, name, script); data.frameTree.setInitScripts([...contextCrossProcessCookie.initScripts, ...pageCrossProcessCookie.initScripts]); - data.channel = SimpleChannel.createForActor(actor); + data.channel = new SimpleChannel('', 'process-' + Services.appinfo.processID); + data.channel.bindToActor(actor); data.pageAgent = new PageAgent(data.channel, data.frameTree); docShell.fileInputInterceptionEnabled = !!pageCrossProcessCookie.interceptFileChooserDialog; diff --git a/browser_patches/firefox/juggler/protocol/PageHandler.js b/browser_patches/firefox/juggler/protocol/PageHandler.js index 407ad8c6c7..7d148fa113 100644 --- a/browser_patches/firefox/juggler/protocol/PageHandler.js +++ b/browser_patches/firefox/juggler/protocol/PageHandler.js @@ -601,7 +601,7 @@ class PageHandler { } return; } - }); + }, { muteNotificationsPopup: true }); } async ['Page.dispatchWheelEvent']({x, y, button, deltaX, deltaY, deltaZ, modifiers }) { @@ -629,7 +629,7 @@ class PageHandler { lineOrPageDeltaX, lineOrPageDeltaY, 0 /* options */); - }); + }, { muteNotificationsPopup: true }); } async ['Page.insertText'](options) { diff --git a/browser_patches/firefox/juggler/screencast/HeadlessWindowCapturer.cpp b/browser_patches/firefox/juggler/screencast/HeadlessWindowCapturer.cpp index d8aaae8443..75200db359 100644 --- a/browser_patches/firefox/juggler/screencast/HeadlessWindowCapturer.cpp +++ b/browser_patches/firefox/juggler/screencast/HeadlessWindowCapturer.cpp @@ -36,6 +36,10 @@ void HeadlessWindowCapturer::RegisterCaptureDataCallback(rtc::VideoSinkInterface rtc::CritScope lock2(&_callBackCs); _dataCallBacks.insert(dataCallback); } + +void HeadlessWindowCapturer::RegisterCaptureDataCallback(webrtc::RawVideoSinkInterface* dataCallback) { +} + void HeadlessWindowCapturer::DeRegisterCaptureDataCallback(rtc::VideoSinkInterface* dataCallback) { rtc::CritScope lock2(&_callBackCs); auto it = _dataCallBacks.find(dataCallback); diff --git a/browser_patches/firefox/juggler/screencast/HeadlessWindowCapturer.h b/browser_patches/firefox/juggler/screencast/HeadlessWindowCapturer.h index 9f67565c04..cb1bcbbfd7 100644 --- a/browser_patches/firefox/juggler/screencast/HeadlessWindowCapturer.h +++ b/browser_patches/firefox/juggler/screencast/HeadlessWindowCapturer.h @@ -31,6 +31,7 @@ class HeadlessWindowCapturer : public webrtc::VideoCaptureModuleEx { int32_t StopCaptureIfAllClientsClose() override; void RegisterRawFrameCallback(webrtc::RawFrameCallback* rawFrameCallback) override; + void RegisterCaptureDataCallback(webrtc::RawVideoSinkInterface* dataCallback) override; void DeRegisterRawFrameCallback(webrtc::RawFrameCallback* rawFrameCallback) override; int32_t SetCaptureRotation(webrtc::VideoRotation) override { return -1; } diff --git a/browser_patches/firefox/patches/bootstrap.diff b/browser_patches/firefox/patches/bootstrap.diff index c9d5d653e1..5d225569e4 100644 --- a/browser_patches/firefox/patches/bootstrap.diff +++ b/browser_patches/firefox/patches/bootstrap.diff @@ -26,7 +26,7 @@ index a91df31c96afda66f478a5a38eaa4352039c2a0b..ee777c1746284027fb3aa2f1686f8082 + readonly attribute boolean isUpdatePendingForJugglerAccessibility; }; diff --git a/accessible/xpcom/xpcAccessibleDocument.cpp b/accessible/xpcom/xpcAccessibleDocument.cpp -index 1ddd5c8372c2742a8dc4e7a8156c084aaf2442fc..7e3aa30c20d8b2fcae5c12d293ca7772ecd28657 100644 +index 2f9e191c7765194d540a7ab067ea10ec4c3d9553..2ac814f079cdfc8dc0741c2f0bd9606ff229748f 100644 --- a/accessible/xpcom/xpcAccessibleDocument.cpp +++ b/accessible/xpcom/xpcAccessibleDocument.cpp @@ -143,6 +143,15 @@ xpcAccessibleDocument::GetVirtualCursor(nsIAccessiblePivot** aVirtualCursor) { @@ -108,7 +108,7 @@ index 6ab29ba31e937e1c5bb1208a9a2508ff0496fd02..7989da51c5368fa80cc66cccdfc018a9 gmp-clearkey/0.1/manifest.json i686/gmp-clearkey/0.1/manifest.json diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in -index 143384ddc9946280f8341c05147c6a01bf3d9192..3dd10d0ab1fac19f50615f80b368eefcc707ef58 100644 +index 34b9bf7d6595226983f696b94f90694970564e92..1110fef252bc68d73d5c3dc71deac98fb41700f0 100644 --- a/browser/installer/package-manifest.in +++ b/browser/installer/package-manifest.in @@ -197,6 +197,9 @@ @@ -122,7 +122,7 @@ index 143384ddc9946280f8341c05147c6a01bf3d9192..3dd10d0ab1fac19f50615f80b368eefc @RESPATH@/components/extensions-toolkit.manifest @RESPATH@/browser/components/extensions-browser.manifest diff --git a/devtools/server/socket/websocket-server.js b/devtools/server/socket/websocket-server.js -index a32156978aacd7c8cbe9001250bfa1516dbc360f..ff03ff48b505ef8a9117671bf21e8b0e8214ec1f 100644 +index 4236ec2921bd57c58cfffdf1cdcf509d76fca3db..23d0cb1f06bb8c7a1cac8fcec94a99fba5bfe3f2 100644 --- a/devtools/server/socket/websocket-server.js +++ b/devtools/server/socket/websocket-server.js @@ -134,13 +134,12 @@ function writeHttpResponse(output, response) { @@ -145,8 +145,8 @@ index a32156978aacd7c8cbe9001250bfa1516dbc360f..ff03ff48b505ef8a9117671bf21e8b0e /** * Perform the server part of a WebSocket opening handshake on an incoming connection. */ --const serverHandshake = async function(input, output) { -+const serverHandshake = async function(input, output, expectedPath) { +-const serverHandshake = async function (input, output) { ++const serverHandshake = async function (input, output, expectedPath) { // Read the request const request = await readHttpRequest(input); @@ -157,22 +157,22 @@ index a32156978aacd7c8cbe9001250bfa1516dbc360f..ff03ff48b505ef8a9117671bf21e8b0e // Send response headers await writeHttpResponse(output, [ -@@ -218,8 +217,8 @@ const serverHandshake = async function(input, output) { +@@ -218,8 +217,8 @@ const serverHandshake = async function (input, output) { * Performs the WebSocket handshake and waits for the WebSocket to open. * Returns Promise with a WebSocket ready to send and receive messages. */ --const accept = async function(transport, input, output) { +-const accept = async function (transport, input, output) { - await serverHandshake(input, output); -+const accept = async function(transport, input, output, expectedPath) { ++const accept = async function (transport, input, output, expectedPath) { + await serverHandshake(input, output, expectedPath || "/"); const transportProvider = { setListener(upgradeListener) { diff --git a/docshell/base/BrowsingContext.cpp b/docshell/base/BrowsingContext.cpp -index 70191dfea28fb10c9f663f88b8cb9ce1ed240baf..b8eb68fca242e4cbe760545456e957cade24fbcb 100644 +index 695621bb786289198ec4db5679b7ac5a11f18bce..acdc0aae6db9f452964bcfdddace261b1ef8a1cf 100644 --- a/docshell/base/BrowsingContext.cpp +++ b/docshell/base/BrowsingContext.cpp -@@ -112,6 +112,20 @@ struct ParamTraits +@@ -114,6 +114,20 @@ struct ParamTraits mozilla::dom::PrefersColorSchemeOverride::None, mozilla::dom::PrefersColorSchemeOverride::EndGuard_> {}; @@ -193,7 +193,7 @@ index 70191dfea28fb10c9f663f88b8cb9ce1ed240baf..b8eb68fca242e4cbe760545456e957ca template <> struct ParamTraits : public ContiguousEnumSerializer< -@@ -2728,6 +2742,40 @@ void BrowsingContext::DidSet(FieldIndex, +@@ -2747,6 +2761,40 @@ void BrowsingContext::DidSet(FieldIndex, PresContextAffectingFieldChanged(); } @@ -235,10 +235,10 @@ index 70191dfea28fb10c9f663f88b8cb9ce1ed240baf..b8eb68fca242e4cbe760545456e957ca nsString&& aOldValue) { MOZ_ASSERT(IsTop()); diff --git a/docshell/base/BrowsingContext.h b/docshell/base/BrowsingContext.h -index 9fd16974c089f6ad6eedc19c95a8a7d7af65cdf2..ed5296df0c78e57e5f00e0d339e9376c140c6ab0 100644 +index 4c245337b7db24f94011ad75fa2a3b32c9a3574c..946b4592794499455b7e2d7d208b7ca43242a414 100644 --- a/docshell/base/BrowsingContext.h +++ b/docshell/base/BrowsingContext.h -@@ -198,10 +198,10 @@ struct EmbedderColorSchemes { +@@ -199,10 +199,10 @@ struct EmbedderColorSchemes { FIELD(GVInaudibleAutoplayRequestStatus, GVAutoplayRequestStatus) \ /* ScreenOrientation-related APIs */ \ FIELD(CurrentOrientationAngle, float) \ @@ -251,7 +251,7 @@ index 9fd16974c089f6ad6eedc19c95a8a7d7af65cdf2..ed5296df0c78e57e5f00e0d339e9376c FIELD(EmbedderElementType, Maybe) \ FIELD(MessageManagerGroup, nsString) \ FIELD(MaxTouchPointsOverride, uint8_t) \ -@@ -239,6 +239,10 @@ struct EmbedderColorSchemes { +@@ -240,6 +240,10 @@ struct EmbedderColorSchemes { * embedder element. */ \ FIELD(EmbedderColorSchemes, EmbedderColorSchemes) \ FIELD(DisplayMode, dom::DisplayMode) \ @@ -262,18 +262,7 @@ index 9fd16974c089f6ad6eedc19c95a8a7d7af65cdf2..ed5296df0c78e57e5f00e0d339e9376c /* The number of entries added to the session history because of this \ * browsing context. */ \ FIELD(HistoryEntryCount, uint32_t) \ -@@ -351,6 +355,10 @@ class BrowsingContext : public nsILoadContext, public nsWrapperCache { - - bool IsOwnedByProcess() const; - -+ uint64_t JugglerCurrentLoadIdentifier() const { -+ return GetCurrentLoadIdentifier() ? GetCurrentLoadIdentifier().value() : 0; -+ } -+ - bool CanHaveRemoteOuterProxies() const { - return !mIsInProcess || mDanglingRemoteOuterProxies; - } -@@ -921,6 +929,14 @@ class BrowsingContext : public nsILoadContext, public nsWrapperCache { +@@ -924,6 +928,14 @@ class BrowsingContext : public nsILoadContext, public nsWrapperCache { return GetPrefersColorSchemeOverride(); } @@ -288,7 +277,7 @@ index 9fd16974c089f6ad6eedc19c95a8a7d7af65cdf2..ed5296df0c78e57e5f00e0d339e9376c bool IsInBFCache() const; bool AllowJavascript() const { return GetAllowJavascript(); } -@@ -1078,6 +1094,23 @@ class BrowsingContext : public nsILoadContext, public nsWrapperCache { +@@ -1085,6 +1097,23 @@ class BrowsingContext : public nsILoadContext, public nsWrapperCache { void WalkPresContexts(Callback&&); void PresContextAffectingFieldChanged(); @@ -313,10 +302,10 @@ index 9fd16974c089f6ad6eedc19c95a8a7d7af65cdf2..ed5296df0c78e57e5f00e0d339e9376c bool CanSet(FieldIndex, bool, ContentParent*) { diff --git a/docshell/base/CanonicalBrowsingContext.cpp b/docshell/base/CanonicalBrowsingContext.cpp -index 7edd7e2c712bfef6e9eadadc10c01f6bc506387f..2576f80462fa740b3081588eea3995542c797309 100644 +index 37f047c7e062d5441be022da97f34012134826ae..a26c71264c0e175361e43464600bea049b7cee56 100644 --- a/docshell/base/CanonicalBrowsingContext.cpp +++ b/docshell/base/CanonicalBrowsingContext.cpp -@@ -1452,6 +1452,12 @@ void CanonicalBrowsingContext::LoadURI(nsIURI* aURI, +@@ -1454,6 +1454,12 @@ void CanonicalBrowsingContext::LoadURI(nsIURI* aURI, return; } @@ -330,7 +319,7 @@ index 7edd7e2c712bfef6e9eadadc10c01f6bc506387f..2576f80462fa740b3081588eea399554 } diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp -index 5942c74302b9f33872daaece99623b102c0e06e8..07105b139057c1e7ca1bed6458da99436837e85f 100644 +index 02641049b7303c280ebe04034fd0a927e7389711..3ace412e8cc4277c1984b9d68f23d1889cb9b9da 100644 --- a/docshell/base/nsDocShell.cpp +++ b/docshell/base/nsDocShell.cpp @@ -15,6 +15,12 @@ @@ -678,7 +667,7 @@ index 5942c74302b9f33872daaece99623b102c0e06e8..07105b139057c1e7ca1bed6458da9943 rv = DoURILoad(aLoadState, aCacheKey, getter_AddRefs(req)); if (NS_SUCCEEDED(rv)) { -@@ -12797,6 +13063,9 @@ class OnLinkClickEvent : public Runnable { +@@ -12793,6 +13059,9 @@ class OnLinkClickEvent : public Runnable { mHandler->OnLinkClickSync(mContent, mLoadState, mNoOpenerImplied, mTriggeringPrincipal); } @@ -688,7 +677,7 @@ index 5942c74302b9f33872daaece99623b102c0e06e8..07105b139057c1e7ca1bed6458da9943 return NS_OK; } -@@ -12876,6 +13145,8 @@ nsresult nsDocShell::OnLinkClick( +@@ -12877,6 +13146,8 @@ nsresult nsDocShell::OnLinkClick( nsCOMPtr ev = new OnLinkClickEvent(this, aContent, loadState, noOpenerImplied, aIsTrusted, aTriggeringPrincipal); @@ -817,10 +806,10 @@ index 68f32e968c7e1bc1d0b2b2894320a177a9ae44d2..9e61465ffad927d7b3e972f753940196 * 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 11abf65f2739365c60f17c7a2791fa71c31d5650..6f00997aed7a4613d9fbf11d6dce444c268b4f5b 100644 +index f8153eef91c40a0947bc7ce8d42f8f550b95b701..ca8f1b88ae2cafde557644e2863c564dfe8fc9c3 100644 --- a/dom/base/Document.cpp +++ b/dom/base/Document.cpp -@@ -3666,6 +3666,9 @@ void Document::SendToConsole(nsCOMArray& aMessages) { +@@ -3675,6 +3675,9 @@ void Document::SendToConsole(nsCOMArray& aMessages) { } void Document::ApplySettingsFromCSP(bool aSpeculative) { @@ -830,7 +819,7 @@ index 11abf65f2739365c60f17c7a2791fa71c31d5650..6f00997aed7a4613d9fbf11d6dce444c nsresult rv = NS_OK; if (!aSpeculative) { // 1) apply settings from regular CSP -@@ -3723,6 +3726,11 @@ nsresult Document::InitCSP(nsIChannel* aChannel) { +@@ -3732,6 +3735,11 @@ nsresult Document::InitCSP(nsIChannel* aChannel) { MOZ_ASSERT(!mScriptGlobalObject, "CSP must be initialized before mScriptGlobalObject is set!"); @@ -842,7 +831,7 @@ index 11abf65f2739365c60f17c7a2791fa71c31d5650..6f00997aed7a4613d9fbf11d6dce444c // If this is a data document - no need to set CSP. if (mLoadedAsData) { return NS_OK; -@@ -4556,6 +4564,10 @@ bool Document::HasFocus(ErrorResult& rv) const { +@@ -4572,6 +4580,10 @@ bool Document::HasFocus(ErrorResult& rv) const { return false; } @@ -853,7 +842,7 @@ index 11abf65f2739365c60f17c7a2791fa71c31d5650..6f00997aed7a4613d9fbf11d6dce444c if (!fm->IsInActiveWindow(bc)) { return false; } -@@ -18371,6 +18383,71 @@ ColorScheme Document::PreferredColorScheme(IgnoreRFP aIgnoreRFP) const { +@@ -18436,6 +18448,68 @@ ColorScheme Document::PreferredColorScheme(IgnoreRFP aIgnoreRFP) const { return LookAndFeel::PreferredColorSchemeForContent(); } @@ -884,9 +873,6 @@ index 11abf65f2739365c60f17c7a2791fa71c31d5650..6f00997aed7a4613d9fbf11d6dce444c + } + } + -+ if (ShouldResistFingerprinting()) { -+ return false; -+ } + return LookAndFeel::GetInt(LookAndFeel::IntID::PrefersReducedMotion, 0) == 1; +} + @@ -926,10 +912,10 @@ index 11abf65f2739365c60f17c7a2791fa71c31d5650..6f00997aed7a4613d9fbf11d6dce444c if (!sLoadingForegroundTopLevelContentDocument) { return false; diff --git a/dom/base/Document.h b/dom/base/Document.h -index 5580f926e003e1764d1bfe36a4208cd2317c88d7..8efccc9f17e8113fec44f1e72a82893d327b3627 100644 +index 3b12b31b65408500e081527662edc77f3fd64207..4fb7d831123b9f1754675ae8fd7a2ec25b4e12c5 100644 --- a/dom/base/Document.h +++ b/dom/base/Document.h -@@ -4119,6 +4119,9 @@ class Document : public nsINode, +@@ -4127,6 +4127,9 @@ class Document : public nsINode, // color-scheme meta tag. ColorScheme DefaultColorScheme() const; @@ -940,7 +926,7 @@ index 5580f926e003e1764d1bfe36a4208cd2317c88d7..8efccc9f17e8113fec44f1e72a82893d static bool AutomaticStorageAccessPermissionCanBeGranted( diff --git a/dom/base/Navigator.cpp b/dom/base/Navigator.cpp -index 85340db5dc4e444d4d37972fe655ec5292030736..cae3d7e2803ef64bff3dc1e4eefe6bc958301b5f 100644 +index 151d992d6fdca956a8925d47c49adde2d545e950..8d6db71233e30f95fc04c20100ac6b7bd998258b 100644 --- a/dom/base/Navigator.cpp +++ b/dom/base/Navigator.cpp @@ -330,14 +330,18 @@ void Navigator::GetAppName(nsAString& aAppName, CallerType aCallerType) const { @@ -979,7 +965,7 @@ index 85340db5dc4e444d4d37972fe655ec5292030736..cae3d7e2803ef64bff3dc1e4eefe6bc9 // 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 -@@ -568,7 +578,13 @@ bool Navigator::CookieEnabled() { +@@ -570,7 +580,13 @@ bool Navigator::CookieEnabled() { return granted; } @@ -1008,10 +994,10 @@ index cbe8d6bb27eb75b1c0eb920c69eccc99fd6133b2..49da35b1f9ec2a81c5886f277fd52ec4 dom::MediaCapabilities* MediaCapabilities(); dom::MediaSession* MediaSession(); diff --git a/dom/base/nsContentUtils.cpp b/dom/base/nsContentUtils.cpp -index ce2b625a7271aad9a4faba042ff440b789248e25..5ff85d14b12cee71061094924a22a61ae21fc97c 100644 +index 75a685ec441eb8b7a4b7e456885564746dec43db..baf363b6e9b6f47db5c186ddd18c38c913a1b7f5 100644 --- a/dom/base/nsContentUtils.cpp +++ b/dom/base/nsContentUtils.cpp -@@ -8450,7 +8450,8 @@ nsresult nsContentUtils::SendMouseEvent( +@@ -8469,7 +8469,8 @@ nsresult nsContentUtils::SendMouseEvent( bool aIgnoreRootScrollFrame, float aPressure, unsigned short aInputSourceArg, uint32_t aIdentifier, bool aToWindow, PreventDefaultResult* aPreventDefault, bool aIsDOMEventSynthesized, @@ -1021,7 +1007,7 @@ index ce2b625a7271aad9a4faba042ff440b789248e25..5ff85d14b12cee71061094924a22a61a nsPoint offset; nsCOMPtr widget = GetWidget(aPresShell, &offset); if (!widget) return NS_ERROR_FAILURE; -@@ -8458,6 +8459,7 @@ nsresult nsContentUtils::SendMouseEvent( +@@ -8477,6 +8478,7 @@ nsresult nsContentUtils::SendMouseEvent( EventMessage msg; Maybe exitFrom; bool contextMenuKey = false; @@ -1029,7 +1015,7 @@ index ce2b625a7271aad9a4faba042ff440b789248e25..5ff85d14b12cee71061094924a22a61a if (aType.EqualsLiteral("mousedown")) { msg = eMouseDown; } else if (aType.EqualsLiteral("mouseup")) { -@@ -8482,6 +8484,12 @@ nsresult nsContentUtils::SendMouseEvent( +@@ -8501,6 +8503,12 @@ nsresult nsContentUtils::SendMouseEvent( msg = eMouseHitTest; } else if (aType.EqualsLiteral("MozMouseExploreByTouch")) { msg = eMouseExploreByTouch; @@ -1042,7 +1028,7 @@ index ce2b625a7271aad9a4faba042ff440b789248e25..5ff85d14b12cee71061094924a22a61a } else { return NS_ERROR_FAILURE; } -@@ -8490,12 +8498,21 @@ nsresult nsContentUtils::SendMouseEvent( +@@ -8509,12 +8517,21 @@ nsresult nsContentUtils::SendMouseEvent( aInputSourceArg = MouseEvent_Binding::MOZ_SOURCE_MOUSE; } @@ -1066,7 +1052,7 @@ index ce2b625a7271aad9a4faba042ff440b789248e25..5ff85d14b12cee71061094924a22a61a event.pointerId = aIdentifier; event.mModifiers = GetWidgetModifiers(aModifiers); event.mButton = aButton; -@@ -8506,8 +8523,10 @@ nsresult nsContentUtils::SendMouseEvent( +@@ -8525,8 +8542,10 @@ nsresult nsContentUtils::SendMouseEvent( event.mPressure = aPressure; event.mInputSource = aInputSourceArg; event.mClickCount = aClickCount; @@ -1078,10 +1064,10 @@ index ce2b625a7271aad9a4faba042ff440b789248e25..5ff85d14b12cee71061094924a22a61a nsPresContext* presContext = aPresShell->GetPresContext(); if (!presContext) return NS_ERROR_FAILURE; diff --git a/dom/base/nsContentUtils.h b/dom/base/nsContentUtils.h -index 76ef4fed4b2e8499f620dd4d4ee5b5732cea593b..d64430bef5014427ba05e5c028befc93bbbf3f6c 100644 +index 79e68e8acd16d60e69420429e69cad2afa3947b0..7deae8eabaf03178480d697a701c2171e0ededa1 100644 --- a/dom/base/nsContentUtils.h +++ b/dom/base/nsContentUtils.h -@@ -2918,7 +2918,8 @@ class nsContentUtils { +@@ -2926,7 +2926,8 @@ class nsContentUtils { int32_t aModifiers, bool aIgnoreRootScrollFrame, float aPressure, unsigned short aInputSourceArg, uint32_t aIdentifier, bool aToWindow, mozilla::PreventDefaultResult* aPreventDefault, @@ -1092,7 +1078,7 @@ index 76ef4fed4b2e8499f620dd4d4ee5b5732cea593b..d64430bef5014427ba05e5c028befc93 static void FirePageShowEventForFrameLoaderSwap( nsIDocShellTreeItem* aItem, diff --git a/dom/base/nsDOMWindowUtils.cpp b/dom/base/nsDOMWindowUtils.cpp -index c264bf511caac7bbead07fcb812a02fd9655ca92..ecf712e959332f844b78c07b234952f4fbf5ea2b 100644 +index fb1cfe4f93585d6dbadfc85af83a4457a605d8a0..2a6dea015cc949b7ba8a7fcab9983d5236c7c72b 100644 --- a/dom/base/nsDOMWindowUtils.cpp +++ b/dom/base/nsDOMWindowUtils.cpp @@ -684,6 +684,26 @@ nsDOMWindowUtils::GetPresShellId(uint32_t* aPresShellId) { @@ -1196,10 +1182,10 @@ index ead05d9103a378bf6a4d5a18589a450c2a81108b..50a8bfd2cb6a94b24c85ab1199f12287 // 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 0b631087ea8b6ae6c971bbf5a3ea4d46c24f909f..7072558d4b795d7110b9e7d467dcff5e2dcb0b82 100644 +index 6fbfe015177c9600b2dadf613717c47a3efc9e17..3e8c659206eea2c6a4015ea59141b978e7f8ac47 100644 --- a/dom/base/nsGlobalWindowOuter.cpp +++ b/dom/base/nsGlobalWindowOuter.cpp -@@ -2482,7 +2482,7 @@ nsresult nsGlobalWindowOuter::SetNewDocument(Document* aDocument, +@@ -2484,7 +2484,7 @@ nsresult nsGlobalWindowOuter::SetNewDocument(Document* aDocument, &nsGlobalWindowInner::FireOnNewGlobalObject)); } @@ -1208,7 +1194,7 @@ index 0b631087ea8b6ae6c971bbf5a3ea4d46c24f909f..7072558d4b795d7110b9e7d467dcff5e // 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 -@@ -2501,10 +2501,16 @@ nsresult nsGlobalWindowOuter::SetNewDocument(Document* aDocument, +@@ -2503,10 +2503,16 @@ nsresult nsGlobalWindowOuter::SetNewDocument(Document* aDocument, }(); if (!isContentAboutBlankInChromeDocshell) { @@ -1229,7 +1215,7 @@ index 0b631087ea8b6ae6c971bbf5a3ea4d46c24f909f..7072558d4b795d7110b9e7d467dcff5e } } -@@ -2625,6 +2631,19 @@ void nsGlobalWindowOuter::DispatchDOMWindowCreated() { +@@ -2627,6 +2633,19 @@ void nsGlobalWindowOuter::DispatchDOMWindowCreated() { } } @@ -1250,7 +1236,7 @@ index 0b631087ea8b6ae6c971bbf5a3ea4d46c24f909f..7072558d4b795d7110b9e7d467dcff5e void nsGlobalWindowOuter::SetDocShell(nsDocShell* aDocShell) { diff --git a/dom/base/nsGlobalWindowOuter.h b/dom/base/nsGlobalWindowOuter.h -index d74c8c066a6005583f06821de8be1e96f94edc04..357bbc5b34ee7c6868f8e5f8e8367623f3868bd1 100644 +index f0e9ec469ab74f889ebd1f3a642de3a6a295f7c2..8d93bc1cb714ff5add6fb9920c8db8a5098cf92d 100644 --- a/dom/base/nsGlobalWindowOuter.h +++ b/dom/base/nsGlobalWindowOuter.h @@ -334,6 +334,7 @@ class nsGlobalWindowOuter final : public mozilla::dom::EventTarget, @@ -1262,7 +1248,7 @@ index d74c8c066a6005583f06821de8be1e96f94edc04..357bbc5b34ee7c6868f8e5f8e8367623 // Outer windows only. virtual void EnsureSizeAndPositionUpToDate() override; diff --git a/dom/base/nsINode.cpp b/dom/base/nsINode.cpp -index 126ca77ce46134fc6572ea2a3b6cfea86ca1ea88..c176ee4e66ccf13663f89be70343458a9f05f8f7 100644 +index 1f18279ece1e55dd9527f67ea4c5262249a5a64c..dd11bfb65baccb7021ec6673ca9a6b0d76c9ed09 100644 --- a/dom/base/nsINode.cpp +++ b/dom/base/nsINode.cpp @@ -1357,6 +1357,61 @@ void nsINode::GetBoxQuadsFromWindowOrigin(const BoxQuadOptions& aOptions, @@ -1328,10 +1314,10 @@ index 126ca77ce46134fc6572ea2a3b6cfea86ca1ea88..c176ee4e66ccf13663f89be70343458a DOMQuad& aQuad, const GeometryNode& aFrom, const ConvertCoordinateOptions& aOptions, CallerType aCallerType, diff --git a/dom/base/nsINode.h b/dom/base/nsINode.h -index 982ad4dfff2804950a53f1b05b7dc3b3bcfe2e42..d1db8dd4fca30b4507ea32055013af13cdc19694 100644 +index be77a5e084b1037e27896f608e80c1c569ae09d2..313035157ff4abb1d6c3b9a1a07d0c1d9512772d 100644 --- a/dom/base/nsINode.h +++ b/dom/base/nsINode.h -@@ -2190,6 +2190,10 @@ class nsINode : public mozilla::dom::EventTarget { +@@ -2196,6 +2196,10 @@ class nsINode : public mozilla::dom::EventTarget { nsTArray>& aResult, ErrorResult& aRv); @@ -1371,7 +1357,7 @@ index 67682173f45c6a83cbad176c2922263d4f7dece9..7dd97f27bdf07673289fce62aaebe3b9 static bool DumpEnabled(); diff --git a/dom/chrome-webidl/BrowsingContext.webidl b/dom/chrome-webidl/BrowsingContext.webidl -index e287b7b9770b65e7a9ebe17fa62045b04f63d098..053ce70eabc09844a7e0e403dd5807ea2156ee19 100644 +index db60c475931caa32110d12ba63bb56980a2b36cc..5d1d8fdceec7a73541799cbac367b173454ae6e8 100644 --- a/dom/chrome-webidl/BrowsingContext.webidl +++ b/dom/chrome-webidl/BrowsingContext.webidl @@ -53,6 +53,24 @@ enum PrefersColorSchemeOverride { @@ -1412,15 +1398,6 @@ index e287b7b9770b65e7a9ebe17fa62045b04f63d098..053ce70eabc09844a7e0e403dd5807ea /** * A unique identifier for the browser element that is hosting this * BrowsingContext tree. Every BrowsingContext in the element's tree will -@@ -257,6 +281,8 @@ interface BrowsingContext { - undefined resetLocationChangeRateLimit(); - - readonly attribute long childOffset; -+ -+ readonly attribute unsigned long long jugglerCurrentLoadIdentifier; - }; - - BrowsingContext includes LoadContextMixin; diff --git a/dom/geolocation/Geolocation.cpp b/dom/geolocation/Geolocation.cpp index ff6fe276e3f5a19e3e22d98c4a38222880797d99..96157d17485534f97a4e39675ee77808ac495bfe 100644 --- a/dom/geolocation/Geolocation.cpp @@ -1521,7 +1498,7 @@ index 7e1af00d05fbafa2d828e2c7e4dcc5c82d115f5b..e85af9718d064e4d2865bc944e9d4ba1 ~Geolocation(); diff --git a/dom/html/HTMLInputElement.cpp b/dom/html/HTMLInputElement.cpp -index b152ff19667a05e715385dc64cd8906411c0d9e5..9de43dc1a1f4227bf340c2a9d80bcef617f99deb 100644 +index 913a9d4c46dac9936e0e8d5b4b174f8edb86a3a4..efc3e66b97223a3bc0e32b26fdf71f81d779fe6d 100644 --- a/dom/html/HTMLInputElement.cpp +++ b/dom/html/HTMLInputElement.cpp @@ -58,6 +58,7 @@ @@ -1577,10 +1554,10 @@ index 82f7d4d206c7274858a945d5db61aa02c366e472..a23386a5749c4af48b9bb86c8c48928d * touchstart, touchend, touchmove, and touchcancel * diff --git a/dom/ipc/BrowserChild.cpp b/dom/ipc/BrowserChild.cpp -index eb4f168c4e47913a032364f8d8b3546a23869d02..09ac18a00bbcf269b1a1c49c75f6b68cbb18d211 100644 +index 978cd197de694b297ab3c603e5b0f715a7ea6eb5..4216c056cf71e7d10bcd4a6be11633c3ee283570 100644 --- a/dom/ipc/BrowserChild.cpp +++ b/dom/ipc/BrowserChild.cpp -@@ -1680,6 +1680,21 @@ void BrowserChild::HandleRealMouseButtonEvent(const WidgetMouseEvent& aEvent, +@@ -1672,6 +1672,21 @@ void BrowserChild::HandleRealMouseButtonEvent(const WidgetMouseEvent& aEvent, if (postLayerization) { postLayerization->Register(); } @@ -1617,10 +1594,10 @@ index 5aa445d2e0a6169e57c44569974d557b3baf7064..671f71979b407f0ca17c66f13805e851 } diff --git a/dom/media/systemservices/video_engine/desktop_capture_impl.cc b/dom/media/systemservices/video_engine/desktop_capture_impl.cc -index c5fc05f772900dd6d30b252783adb96dfbbde2a1..7eb74f174c196f98854e4729d456956a77a063a8 100644 +index 2274a21e8a287932342bb4fb58af728d13b89224..367466efc8457f99c87af1d285131f7b6c71c8ef 100644 --- a/dom/media/systemservices/video_engine/desktop_capture_impl.cc +++ b/dom/media/systemservices/video_engine/desktop_capture_impl.cc -@@ -132,11 +132,12 @@ int32_t ScreenDeviceInfoImpl::GetOrientation(const char* aDeviceUniqueIdUTF8, +@@ -135,11 +135,12 @@ int32_t ScreenDeviceInfoImpl::GetOrientation(const char* aDeviceUniqueIdUTF8, return 0; } @@ -1636,22 +1613,29 @@ index c5fc05f772900dd6d30b252783adb96dfbbde2a1..7eb74f174c196f98854e4729d456956a } int32_t WindowDeviceInfoImpl::Init() { -@@ -436,8 +437,12 @@ int32_t DesktopCaptureImpl::EnsureCapturer() { - DesktopCapturer::SourceId sourceId = atoi(mDeviceUniqueId.c_str()); - windowCapturer->SelectSource(sourceId); +@@ -408,7 +409,7 @@ static bool UsePipewire() { -- mCapturer = std::make_unique( -- std::move(windowCapturer), options); -+ if (capture_cursor_) { -+ mCapturer = std::make_unique( -+ std::move(windowCapturer), options); -+ } else { -+ mCapturer = std::move(windowCapturer); + static std::unique_ptr CreateDesktopCapturerAndThread( + CaptureDeviceType aDeviceType, DesktopCapturer::SourceId aSourceId, +- nsIThread** aOutThread) { ++ nsIThread** aOutThread, bool aCaptureCursor) { + DesktopCaptureOptions options = CreateDesktopCaptureOptions(); + std::unique_ptr capturer; + +@@ -458,8 +459,10 @@ static std::unique_ptr CreateDesktopCapturerAndThread( + + capturer->SelectSource(aSourceId); + +- capturer = std::make_unique(std::move(capturer), +- options); ++ if (aCaptureCursor) { ++ capturer = std::make_unique( ++ std::move(capturer), options); + } - } else if (mDeviceType == CaptureDeviceType::Browser) { + } else if (aDeviceType == CaptureDeviceType::Browser) { // XXX We don't capture cursors, so avoid the extra indirection layer. We // could also pass null for the pMouseCursorMonitor. -@@ -453,7 +458,8 @@ int32_t DesktopCaptureImpl::EnsureCapturer() { +@@ -476,7 +479,8 @@ static std::unique_ptr CreateDesktopCapturerAndThread( } DesktopCaptureImpl::DesktopCaptureImpl(const int32_t aId, const char* aUniqueId, @@ -1661,15 +1645,15 @@ index c5fc05f772900dd6d30b252783adb96dfbbde2a1..7eb74f174c196f98854e4729d456956a : mModuleId(aId), mTrackingId(mozilla::TrackingId(CaptureEngineToTrackingSourceStr([&] { switch (aType) { -@@ -471,6 +477,7 @@ DesktopCaptureImpl::DesktopCaptureImpl(const int32_t aId, const char* aUniqueId, +@@ -493,6 +497,7 @@ DesktopCaptureImpl::DesktopCaptureImpl(const int32_t aId, const char* aUniqueId, + aId)), mDeviceUniqueId(aUniqueId), mDeviceType(aType), - mControlThread(mozilla::GetCurrentSerialEventTarget()), + capture_cursor_(aCaptureCursor), + mControlThread(mozilla::GetCurrentSerialEventTarget()), mNextFrameMinimumTime(Timestamp::Zero()), - mRunning(false), mCallbacks("DesktopCaptureImpl::mCallbacks") {} -@@ -492,6 +499,19 @@ void DesktopCaptureImpl::DeRegisterCaptureDataCallback( +@@ -517,6 +522,19 @@ void DesktopCaptureImpl::DeRegisterCaptureDataCallback( } } @@ -1689,7 +1673,16 @@ index c5fc05f772900dd6d30b252783adb96dfbbde2a1..7eb74f174c196f98854e4729d456956a int32_t DesktopCaptureImpl::StopCaptureIfAllClientsClose() { { auto callbacks = mCallbacks.Lock(); -@@ -618,6 +638,15 @@ void DesktopCaptureImpl::OnCaptureResult(DesktopCapturer::Result aResult, +@@ -549,7 +567,7 @@ int32_t DesktopCaptureImpl::StartCapture( + + DesktopCapturer::SourceId sourceId = std::stoi(mDeviceUniqueId); + std::unique_ptr capturer = CreateDesktopCapturerAndThread( +- mDeviceType, sourceId, getter_AddRefs(mCaptureThread)); ++ mDeviceType, sourceId, getter_AddRefs(mCaptureThread), capture_cursor_); + + MOZ_ASSERT(!capturer == !mCaptureThread); + if (!capturer) { +@@ -650,6 +668,15 @@ void DesktopCaptureImpl::OnCaptureResult(DesktopCapturer::Result aResult, frameInfo.height = aFrame->size().height(); frameInfo.videoType = VideoType::kARGB; @@ -1706,7 +1699,7 @@ index c5fc05f772900dd6d30b252783adb96dfbbde2a1..7eb74f174c196f98854e4729d456956a frameInfo.width * frameInfo.height * DesktopFrame::kBytesPerPixel; diff --git a/dom/media/systemservices/video_engine/desktop_capture_impl.h b/dom/media/systemservices/video_engine/desktop_capture_impl.h -index 162589cb0902820afae86f0def2afab7630b96aa..4b95c351d813f5af5e316ea32fc8128ca3e1c8fb 100644 +index 64eadb140131ea807db8b55431630523342a88ce..371e093fef6e225302da6aaf6e1ede05b93efd74 100644 --- a/dom/media/systemservices/video_engine/desktop_capture_impl.h +++ b/dom/media/systemservices/video_engine/desktop_capture_impl.h @@ -24,6 +24,7 @@ @@ -1756,7 +1749,7 @@ index 162589cb0902820afae86f0def2afab7630b96aa..4b95c351d813f5af5e316ea32fc8128c [[nodiscard]] static std::shared_ptr CreateDeviceInfo(const int32_t aId, -@@ -173,6 +189,8 @@ class DesktopCaptureImpl : public DesktopCapturer::Callback, +@@ -175,6 +191,8 @@ class DesktopCaptureImpl : public DesktopCapturer::Callback, void DeRegisterCaptureDataCallback( rtc::VideoSinkInterface* aCallback) override; int32_t StopCaptureIfAllClientsClose() override; @@ -1765,7 +1758,7 @@ index 162589cb0902820afae86f0def2afab7630b96aa..4b95c351d813f5af5e316ea32fc8128c int32_t SetCaptureRotation(VideoRotation aRotation) override; bool SetApplyRotation(bool aEnable) override; -@@ -195,7 +213,8 @@ class DesktopCaptureImpl : public DesktopCapturer::Callback, +@@ -197,7 +215,8 @@ class DesktopCaptureImpl : public DesktopCapturer::Callback, protected: DesktopCaptureImpl(const int32_t aId, const char* aUniqueId, @@ -1775,9 +1768,9 @@ index 162589cb0902820afae86f0def2afab7630b96aa..4b95c351d813f5af5e316ea32fc8128c virtual ~DesktopCaptureImpl(); private: -@@ -204,6 +223,9 @@ class DesktopCaptureImpl : public DesktopCapturer::Callback, - int32_t EnsureCapturer(); - void InitOnThread(int aFramerate); +@@ -205,6 +224,9 @@ class DesktopCaptureImpl : public DesktopCapturer::Callback, + static constexpr uint32_t kMaxDesktopCaptureCpuUsage = 50; + void InitOnThread(std::unique_ptr aCapturer, int aFramerate); void ShutdownOnThread(); + + rtc::RecursiveCriticalSection mApiCs; @@ -1785,14 +1778,15 @@ index 162589cb0902820afae86f0def2afab7630b96aa..4b95c351d813f5af5e316ea32fc8128c // DesktopCapturer::Callback interface. void OnCaptureResult(DesktopCapturer::Result aResult, std::unique_ptr aFrame) override; -@@ -215,6 +237,7 @@ class DesktopCaptureImpl : public DesktopCapturer::Callback, - const nsCOMPtr mControlThread; - // Set in StartCapture. mControlThread only. - VideoCaptureCapability mRequestedCapability; +@@ -212,6 +234,8 @@ class DesktopCaptureImpl : public DesktopCapturer::Callback, + // Notifies all mCallbacks of OnFrame(). mCaptureThread only. + void NotifyOnFrame(const VideoFrame& aFrame); + + bool capture_cursor_ = true; - // This is created on mControlThread and accessed on both mControlThread and - // mCaptureThread. It is created prior to mCaptureThread starting and is - // destroyed after it is stopped. ++ + // Control thread on which the public API is called. + const nsCOMPtr mControlThread; + // Set in StartCapture. diff --git a/dom/script/ScriptSettings.cpp b/dom/script/ScriptSettings.cpp index 1f2d92bcb5d989bf9ecc044f8c51006f991b0007..9cf5dd885e658e0fe5e7ab75e7fc1f97a8d214b8 100644 --- a/dom/script/ScriptSettings.cpp @@ -1838,7 +1832,7 @@ index 1f2d92bcb5d989bf9ecc044f8c51006f991b0007..9cf5dd885e658e0fe5e7ab75e7fc1f97 return aGlobalOrNull; diff --git a/dom/security/nsCSPUtils.cpp b/dom/security/nsCSPUtils.cpp -index dbc59ea35470d1d4d3ee3c7167a5c03ea1a24515..801bbc17a452664a74acd0fe3245e255f178b3de 100644 +index e52802d367e206f3903c0ab50c3fe6e6fb9088ca..865b810e245c519be34d0a646443fdc897742621 100644 --- a/dom/security/nsCSPUtils.cpp +++ b/dom/security/nsCSPUtils.cpp @@ -127,6 +127,11 @@ void CSP_ApplyMetaCSPToDoc(mozilla::dom::Document& aDoc, @@ -1955,7 +1949,7 @@ index d10dabb5c5ff8e17851edf2bd2efc08e74584d8e..53c4070c5fde43b27fb8fbfdcf4c23d8 bool IsWorkerGlobal(JSObject* global); diff --git a/dom/workers/WorkerPrivate.cpp b/dom/workers/WorkerPrivate.cpp -index ae126423945030c0f8d4f78cd44d0543240e08e5..c1224d779961eca0c3f9795dae10880961df1a0b 100644 +index a0deeb5d02c9df63a801275808b244475d0583fe..8b190bb49c017d78ace2554188286ceb2cf1eacb 100644 --- a/dom/workers/WorkerPrivate.cpp +++ b/dom/workers/WorkerPrivate.cpp @@ -704,6 +704,18 @@ class UpdateContextOptionsRunnable final : public WorkerControlRunnable { @@ -1994,7 +1988,7 @@ index ae126423945030c0f8d4f78cd44d0543240e08e5..c1224d779961eca0c3f9795dae108809 void WorkerPrivate::UpdateLanguages(const nsTArray& aLanguages) { AssertIsOnParentThread(); -@@ -5293,6 +5315,15 @@ void WorkerPrivate::UpdateContextOptionsInternal( +@@ -5296,6 +5318,15 @@ void WorkerPrivate::UpdateContextOptionsInternal( } } @@ -2011,7 +2005,7 @@ index ae126423945030c0f8d4f78cd44d0543240e08e5..c1224d779961eca0c3f9795dae108809 const nsTArray& aLanguages) { WorkerGlobalScope* globalScope = GlobalScope(); diff --git a/dom/workers/WorkerPrivate.h b/dom/workers/WorkerPrivate.h -index fa39dc65d23f963937d88d8abdcd57b2cabd1972..fe0f478451a6a021eb3b735f90f4902340f93f77 100644 +index 84b4f6d89e5d6fa3e622b95f395930993373f76f..b945587f4d6488a6a8191caa06340d4d5074f4c3 100644 --- a/dom/workers/WorkerPrivate.h +++ b/dom/workers/WorkerPrivate.h @@ -414,6 +414,8 @@ class WorkerPrivate final @@ -2085,10 +2079,10 @@ index 45c6a88602e078cb872d49a2f50b30a994f76d8e..90989ff259ef19af094bc6ddfabe7552 inline ClippedTime TimeClip(double time); diff --git a/js/src/debugger/Object.cpp b/js/src/debugger/Object.cpp -index 2ffac9f9d5fd369d5b66e7ae84da7085acd0c540..d531bd62f2599411b9395e1dd2b4f2a147e255ee 100644 +index 9c3a652b60e09013f77b9a7f7da03d376d21cb6a..091daaee4a3402a0c572a21142517e4f9e706257 100644 --- a/js/src/debugger/Object.cpp +++ b/js/src/debugger/Object.cpp -@@ -2431,7 +2431,11 @@ Maybe DebuggerObject::call(JSContext* cx, +@@ -2426,7 +2426,11 @@ Maybe DebuggerObject::call(JSContext* cx, invokeArgs[i].set(args2[i]); } @@ -2255,10 +2249,10 @@ index dac899f7558b26d6848da8b98ed8a93555c8751a..2a07d67fa1c2840b25085566e84dc3b2 // No boxes to return return; diff --git a/layout/base/PresShell.cpp b/layout/base/PresShell.cpp -index 940b07bbdb8d972d0fb30ac720f2c573e765e78b..fd6e10c65724d8cbb914c4e5e139b1b36f5aa5f9 100644 +index f984d2e9bdecf0729f53e011032536fce44e317e..f2f27b01735a6785b4ecf98cea2c34221fbd08a4 100644 --- a/layout/base/PresShell.cpp +++ b/layout/base/PresShell.cpp -@@ -10914,7 +10914,9 @@ auto PresShell::ComputeActiveness() const -> Activeness { +@@ -10896,7 +10896,9 @@ auto PresShell::ComputeActiveness() const -> Activeness { if (!browserChild->IsVisible()) { MOZ_LOG(gLog, LogLevel::Debug, (" > BrowserChild %p is not visible", browserChild)); @@ -2270,10 +2264,10 @@ index 940b07bbdb8d972d0fb30ac720f2c573e765e78b..fd6e10c65724d8cbb914c4e5e139b1b3 // 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 574cb1c65d119ebc647d6b88c13e06cc4541da6f..22b5897f9d61c0fc7ceaad62268d55cd041a2b1a 100644 +index ba52d5ab105d898305a06044aac13c60127c4838..19a78564af2cf467caa0c10f1a1e2220e57b3b79 100644 --- a/layout/style/GeckoBindings.h +++ b/layout/style/GeckoBindings.h -@@ -632,6 +632,7 @@ float Gecko_MediaFeatures_GetResolution(const mozilla::dom::Document*); +@@ -634,6 +634,7 @@ float Gecko_MediaFeatures_GetResolution(const mozilla::dom::Document*); bool Gecko_MediaFeatures_PrefersReducedMotion(const mozilla::dom::Document*); bool Gecko_MediaFeatures_PrefersReducedTransparency( const mozilla::dom::Document*); @@ -2282,7 +2276,7 @@ index 574cb1c65d119ebc647d6b88c13e06cc4541da6f..22b5897f9d61c0fc7ceaad62268d55cd const mozilla::dom::Document*); mozilla::StylePrefersColorScheme Gecko_MediaFeatures_PrefersColorScheme( diff --git a/layout/style/nsMediaFeatures.cpp b/layout/style/nsMediaFeatures.cpp -index f560791fae1732c18b9b2bed4fb1e2343738522e..c45399b5d8b58fb4cb41bec4105a457426332542 100644 +index 229a43854e8e5c14b751aad9f143b41cc212fd3f..0cfb5b1ad1e34155eb67659beb867d89d1e06538 100644 --- a/layout/style/nsMediaFeatures.cpp +++ b/layout/style/nsMediaFeatures.cpp @@ -277,11 +277,11 @@ bool Gecko_MediaFeatures_MatchesPlatform(StylePlatform aPlatform) { @@ -2303,10 +2297,10 @@ index f560791fae1732c18b9b2bed4fb1e2343738522e..c45399b5d8b58fb4cb41bec4105a4574 bool Gecko_MediaFeatures_PrefersReducedTransparency(const Document* aDocument) { diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js -index 5ed82da10be3d97ef1d6c27a77c7d39992410489..a4788f5aebc54943e5657f0b0e694103d3bdf2ee 100644 +index c7c6f0ca825a4db6aa9223d3c096e26a2b005c99..88515dcfed1aa1b29194e17bacc960932d30ab89 100644 --- a/modules/libpref/init/all.js +++ b/modules/libpref/init/all.js -@@ -4120,7 +4120,9 @@ pref("devtools.experiment.f12.shortcut_disabled", false); +@@ -4117,7 +4117,9 @@ pref("devtools.f12_enabled", true); // doesn't provide a way to lock the pref pref("dom.postMessage.sharedArrayBuffer.bypassCOOP_COEP.insecure.enabled", false); #else @@ -2317,6 +2311,82 @@ index 5ed82da10be3d97ef1d6c27a77c7d39992410489..a4788f5aebc54943e5657f0b0e694103 #endif // Whether sites require the open-protocol-handler permission to open a +diff --git a/netwerk/base/LoadInfo.cpp b/netwerk/base/LoadInfo.cpp +index ad390f81cebf25511562323261a3174e641deee9..ba1fd4e2089d37ce1851287edac23c754254d33f 100644 +--- a/netwerk/base/LoadInfo.cpp ++++ b/netwerk/base/LoadInfo.cpp +@@ -630,7 +630,8 @@ LoadInfo::LoadInfo(const LoadInfo& rhs) + mUnstrippedURI(rhs.mUnstrippedURI), + mInterceptionInfo(rhs.mInterceptionInfo), + mHasInjectedCookieForCookieBannerHandling( +- rhs.mHasInjectedCookieForCookieBannerHandling) {} ++ rhs.mHasInjectedCookieForCookieBannerHandling), ++ mJugglerLoadIdentifier(rhs.mJugglerLoadIdentifier) {} + + LoadInfo::LoadInfo( + nsIPrincipal* aLoadingPrincipal, nsIPrincipal* aTriggeringPrincipal, +@@ -2266,4 +2267,16 @@ LoadInfo::SetHasInjectedCookieForCookieBannerHandling( + return NS_OK; + } + ++NS_IMETHODIMP ++LoadInfo::GetJugglerLoadIdentifier(uint64_t* aResult) { ++ *aResult = mJugglerLoadIdentifier; ++ return NS_OK; ++} ++ ++NS_IMETHODIMP ++LoadInfo::SetJugglerLoadIdentifier(uint64_t aID) { ++ mJugglerLoadIdentifier = aID; ++ return NS_OK; ++} ++ + } // namespace mozilla::net +diff --git a/netwerk/base/LoadInfo.h b/netwerk/base/LoadInfo.h +index 8e9424a2d2be667aeae53fe322c74e18e879eac4..2be64b8a19ed6f016ece98ca181325765de514fc 100644 +--- a/netwerk/base/LoadInfo.h ++++ b/netwerk/base/LoadInfo.h +@@ -380,6 +380,8 @@ class LoadInfo final : public nsILoadInfo { + nsCOMPtr mInterceptionInfo; + + bool mHasInjectedCookieForCookieBannerHandling = false; ++ ++ uint64_t mJugglerLoadIdentifier = 0; + }; + + // This is exposed solely for testing purposes and should not be used outside of +diff --git a/netwerk/base/TRRLoadInfo.cpp b/netwerk/base/TRRLoadInfo.cpp +index e5cbe5e21370218b2bceae79538a95a2b42ddd30..fe8b08cf746084c7b8e1da88bbdd73016f23e2fe 100644 +--- a/netwerk/base/TRRLoadInfo.cpp ++++ b/netwerk/base/TRRLoadInfo.cpp +@@ -817,5 +817,16 @@ TRRLoadInfo::SetHasInjectedCookieForCookieBannerHandling( + return NS_ERROR_NOT_IMPLEMENTED; + } + ++NS_IMETHODIMP ++TRRLoadInfo::GetJugglerLoadIdentifier(uint64_t* aResult) { ++ return NS_ERROR_NOT_IMPLEMENTED; ++} ++ ++NS_IMETHODIMP ++TRRLoadInfo::SetJugglerLoadIdentifier(uint64_t aResult) { ++ return NS_ERROR_NOT_IMPLEMENTED; ++} ++ ++ + } // namespace net + } // namespace mozilla +diff --git a/netwerk/base/nsILoadInfo.idl b/netwerk/base/nsILoadInfo.idl +index 79fdcc5e4da3e86eb0ce7dfe1deb863241fc58ce..72dc81203ea0bed29469a3963dc78d94e2d18cc7 100644 +--- a/netwerk/base/nsILoadInfo.idl ++++ b/netwerk/base/nsILoadInfo.idl +@@ -1485,4 +1485,6 @@ interface nsILoadInfo : nsISupports + * handle a cookie banner. This is only done for top-level requests. + */ + [infallible] attribute boolean hasInjectedCookieForCookieBannerHandling; ++ ++ [infallible] attribute unsigned long long jugglerLoadIdentifier; + }; diff --git a/netwerk/base/nsINetworkInterceptController.idl b/netwerk/base/nsINetworkInterceptController.idl index d72dc570dc82ff9d576942b9e7c23d8a74d68049..a5fcddc4b0e53a862e5a77120b4ccff8a27cfbab 100644 --- a/netwerk/base/nsINetworkInterceptController.idl @@ -2329,11 +2399,23 @@ index d72dc570dc82ff9d576942b9e7c23d8a74d68049..a5fcddc4b0e53a862e5a77120b4ccff8 /** * Set the status and reason for the forthcoming synthesized response. +diff --git a/netwerk/ipc/DocumentLoadListener.cpp b/netwerk/ipc/DocumentLoadListener.cpp +index 60ffce52504bf65b09ad0c8f0012b2b042ea1d42..bfe7616377bc1feff997aa140819a9ce28683c1f 100644 +--- a/netwerk/ipc/DocumentLoadListener.cpp ++++ b/netwerk/ipc/DocumentLoadListener.cpp +@@ -163,6 +163,7 @@ static auto CreateDocumentLoadInfo(CanonicalBrowsingContext* aBrowsingContext, + loadInfo->SetHasValidUserGestureActivation( + aLoadState->HasValidUserGestureActivation()); + loadInfo->SetIsMetaRefresh(aLoadState->IsMetaRefresh()); ++ loadInfo->SetJugglerLoadIdentifier(aLoadState->GetLoadIdentifier()); + + return loadInfo.forget(); + } diff --git a/netwerk/protocol/http/InterceptedHttpChannel.cpp b/netwerk/protocol/http/InterceptedHttpChannel.cpp -index 735b3a134a8c7104909ff9424eff74eab80c4830..a31e8b68e201dbf238d80ab32d46d4657f9b8cd7 100644 +index c493259905d8b4e6b3a860cd6436c2606e8e8d29..7060deb04d3b3deb3e1cd90b75848229cf2252f2 100644 --- a/netwerk/protocol/http/InterceptedHttpChannel.cpp +++ b/netwerk/protocol/http/InterceptedHttpChannel.cpp -@@ -728,6 +728,14 @@ NS_IMPL_ISUPPORTS(ResetInterceptionHeaderVisitor, nsIHttpHeaderVisitor) +@@ -729,6 +729,14 @@ NS_IMPL_ISUPPORTS(ResetInterceptionHeaderVisitor, nsIHttpHeaderVisitor) } // anonymous namespace @@ -2348,7 +2430,7 @@ index 735b3a134a8c7104909ff9424eff74eab80c4830..a31e8b68e201dbf238d80ab32d46d465 NS_IMETHODIMP InterceptedHttpChannel::ResetInterception(bool aBypass) { INTERCEPTED_LOG(("InterceptedHttpChannel::ResetInterception [%p] bypass: %s", -@@ -1070,11 +1078,18 @@ InterceptedHttpChannel::OnStartRequest(nsIRequest* aRequest) { +@@ -1071,11 +1079,18 @@ InterceptedHttpChannel::OnStartRequest(nsIRequest* aRequest) { GetCallback(mProgressSink); } @@ -2383,10 +2465,10 @@ index 0908642956b66e867be59c5777f26e4c9f95d5ec..3d7677c454c5a0d2169686c2abad7b33 nsCOMPtr preloadCsp = mDocument->GetPreloadCsp(); if (!preloadCsp) { diff --git a/security/manager/ssl/nsCertOverrideService.cpp b/security/manager/ssl/nsCertOverrideService.cpp -index 4ccd48215ea8500de02fbe54d79962b4d6bcfc57..57ca7a8bb78a680362f0b3b05cb10219494fcdf8 100644 +index b8d0bbc3a12f74c19284b26eadada361abeb7946..a50379c57158748684e2ea5065550af81c1e9b86 100644 --- a/security/manager/ssl/nsCertOverrideService.cpp +++ b/security/manager/ssl/nsCertOverrideService.cpp -@@ -473,7 +473,12 @@ nsCertOverrideService::HasMatchingOverride( +@@ -438,7 +438,12 @@ nsCertOverrideService::HasMatchingOverride( bool disableAllSecurityCheck = false; { MutexAutoLock lock(mMutex); @@ -2400,7 +2482,7 @@ index 4ccd48215ea8500de02fbe54d79962b4d6bcfc57..57ca7a8bb78a680362f0b3b05cb10219 } if (disableAllSecurityCheck) { *aIsTemporary = false; -@@ -690,14 +695,24 @@ static bool IsDebugger() { +@@ -650,14 +655,24 @@ static bool IsDebugger() { NS_IMETHODIMP nsCertOverrideService:: @@ -2429,10 +2511,10 @@ index 4ccd48215ea8500de02fbe54d79962b4d6bcfc57..57ca7a8bb78a680362f0b3b05cb10219 nsCOMPtr nss(do_GetService(PSM_COMPONENT_CONTRACTID)); diff --git a/security/manager/ssl/nsCertOverrideService.h b/security/manager/ssl/nsCertOverrideService.h -index f9d81c962aec06ccb7681d124d826f83eca743ec..aa85277808a150d766faa2130f8546cd1d6223c3 100644 +index 21cff56300db6490cf9649aa62099cb5525749b3..ce9a7fc16c2d5980be166e0f4ab9a25df300ca2f 100644 --- a/security/manager/ssl/nsCertOverrideService.h +++ b/security/manager/ssl/nsCertOverrideService.h -@@ -120,6 +120,7 @@ class nsCertOverrideService final : public nsICertOverrideService, +@@ -118,6 +118,7 @@ class nsCertOverrideService final : public nsICertOverrideService, mozilla::Mutex mMutex; bool mDisableAllSecurityCheck MOZ_GUARDED_BY(mMutex); @@ -2441,10 +2523,10 @@ index f9d81c962aec06ccb7681d124d826f83eca743ec..aa85277808a150d766faa2130f8546cd nsTHashtable mSettingsTable MOZ_GUARDED_BY(mMutex); diff --git a/security/manager/ssl/nsICertOverrideService.idl b/security/manager/ssl/nsICertOverrideService.idl -index e31cf158dcac3540b0c721cbd677b8522d7549b3..029fc67df81911e3abf3724e8ed99e4bde010f4b 100644 +index 6dfd07d6b676a99993408921de8dea9d561f201d..e3c6794363cd6336effbeac83a179f3796dd71b0 100644 --- a/security/manager/ssl/nsICertOverrideService.idl +++ b/security/manager/ssl/nsICertOverrideService.idl -@@ -143,7 +143,9 @@ interface nsICertOverrideService : nsISupports { +@@ -137,7 +137,9 @@ interface nsICertOverrideService : nsISupports { * @param aDisable If true, disable all security check and make * hasMatchingOverride always return true. */ @@ -2456,7 +2538,7 @@ index e31cf158dcac3540b0c721cbd677b8522d7549b3..029fc67df81911e3abf3724e8ed99e4b readonly attribute boolean securityCheckDisabled; }; diff --git a/services/settings/Utils.sys.mjs b/services/settings/Utils.sys.mjs -index 0144fad99c9d813782fd7e2350841be6c2b538c9..538ea1a8d010a20595e926267c7a00864a4bbda3 100644 +index 7d16f4063ab289eaefbcdf1c4cc9d16d6dba587d..56f40b53f32ffb9b16f7cc19121d8af109565287 100644 --- a/services/settings/Utils.sys.mjs +++ b/services/settings/Utils.sys.mjs @@ -95,7 +95,7 @@ function _isUndefined(value) { @@ -2469,10 +2551,10 @@ index 0144fad99c9d813782fd7e2350841be6c2b538c9..538ea1a8d010a20595e926267c7a0086 : AppConstants.REMOTE_SETTINGS_SERVER_URL; }, diff --git a/servo/components/style/gecko/media_features.rs b/servo/components/style/gecko/media_features.rs -index 70e03dc297cf313c8626e79495e55fdff97a164f..b89945b78430320010b3f4f2b544c107d0e99787 100644 +index 4ca746ea84d917b95dfb66953660ca0a4572e647..bafeb667f3dbc7fa66d4baf811bf5cd5eb728c60 100644 --- a/servo/components/style/gecko/media_features.rs +++ b/servo/components/style/gecko/media_features.rs -@@ -290,10 +290,15 @@ pub enum ForcedColors { +@@ -291,10 +291,15 @@ pub enum ForcedColors { /// https://drafts.csswg.org/mediaqueries-5/#forced-colors fn eval_forced_colors(context: &Context, query_value: Option) -> bool { @@ -2506,7 +2588,7 @@ index 54de3abab5757dd706e3d909ccef6a0bed5deacc..f5c5480cd052ede0c76e5eec733dbb92 // ignored for Linux. const unsigned long CHROME_SUPPRESS_ANIMATION = 0x01000000; diff --git a/toolkit/components/enterprisepolicies/EnterprisePoliciesParent.sys.mjs b/toolkit/components/enterprisepolicies/EnterprisePoliciesParent.sys.mjs -index 94ddeb07c303eea743472761a0427e7f5a68a769..5477cd21da222955e3f512e5f5d0a0cadf00b601 100644 +index f2e7dcf9b3267de0c6b0837fcb5f407f72ea561b..bcbaee5b6218be4101237e48db64ee51971ebf96 100644 --- a/toolkit/components/enterprisepolicies/EnterprisePoliciesParent.sys.mjs +++ b/toolkit/components/enterprisepolicies/EnterprisePoliciesParent.sys.mjs @@ -110,6 +110,12 @@ EnterprisePoliciesManager.prototype = { @@ -2551,10 +2633,10 @@ index 654903fadb709be976b72f36f155e23bc0622152..815b3dc24c9fda6b1db6c4666ac68904 int32_t aMaxSelfProgress, int32_t aCurTotalProgress, diff --git a/toolkit/components/windowwatcher/nsWindowWatcher.cpp b/toolkit/components/windowwatcher/nsWindowWatcher.cpp -index d21b1fa97755260f09d92c0cac10e1d5233c65dd..948e4ce62d4d03ed29ecac48e04bd13eea80f8b3 100644 +index 9496efd6688a34905794b9812b6c7a139dfe4171..058417afb5b459247a17da6d44c7ad62a0d79264 100644 --- a/toolkit/components/windowwatcher/nsWindowWatcher.cpp +++ b/toolkit/components/windowwatcher/nsWindowWatcher.cpp -@@ -1877,7 +1877,11 @@ uint32_t nsWindowWatcher::CalculateChromeFlagsForContent( +@@ -1876,7 +1876,11 @@ uint32_t nsWindowWatcher::CalculateChromeFlagsForContent( // Open a minimal popup. *aIsPopupRequested = true; @@ -2568,10 +2650,10 @@ index d21b1fa97755260f09d92c0cac10e1d5233c65dd..948e4ce62d4d03ed29ecac48e04bd13e /** diff --git a/toolkit/mozapps/update/UpdateService.sys.mjs b/toolkit/mozapps/update/UpdateService.sys.mjs -index 1a646d3fc533928fe43416aaac316d29b52671cc..8b154b1281b09a8e009ba58dfc3e45865e89baa1 100644 +index 23fca6cbe6cf1b3e625baf6e94e0c36112986ff2..07e040f75ac1a0ff7150213c7ef26804056e5f9c 100644 --- a/toolkit/mozapps/update/UpdateService.sys.mjs +++ b/toolkit/mozapps/update/UpdateService.sys.mjs -@@ -3855,6 +3855,8 @@ UpdateService.prototype = { +@@ -3848,6 +3848,8 @@ UpdateService.prototype = { }, get disabledForTesting() { @@ -2647,7 +2729,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 2343c086d9f776f3a75afe1ae121a40757cada39..95141227a7dfefc3d25c7ca28711287aeccce716 100644 +index ee210396f0e7265180f07f6f034c9389a87a02ce..6c0997ecb153547558ad1a0c146b0ca4e8ffbc46 100644 --- a/uriloader/exthandler/nsExternalHelperAppService.cpp +++ b/uriloader/exthandler/nsExternalHelperAppService.cpp @@ -112,6 +112,7 @@ @@ -2732,7 +2814,7 @@ index 2343c086d9f776f3a75afe1ae121a40757cada39..95141227a7dfefc3d25c7ca28711287a if (alwaysAsk) { // But we *don't* ask if this mimeInfo didn't come from // our user configuration datastore and the user has said -@@ -2197,6 +2241,16 @@ nsExternalAppHandler::OnSaveComplete(nsIBackgroundFileSaver* aSaver, +@@ -2193,6 +2237,16 @@ nsExternalAppHandler::OnSaveComplete(nsIBackgroundFileSaver* aSaver, NotifyTransfer(aStatus); } @@ -2749,7 +2831,7 @@ index 2343c086d9f776f3a75afe1ae121a40757cada39..95141227a7dfefc3d25c7ca28711287a return NS_OK; } -@@ -2682,6 +2736,15 @@ NS_IMETHODIMP nsExternalAppHandler::Cancel(nsresult aReason) { +@@ -2674,6 +2728,15 @@ NS_IMETHODIMP nsExternalAppHandler::Cancel(nsresult aReason) { } } @@ -3156,7 +3238,7 @@ index 9856991ef32f25f51942f8cd664a09bec2192c70..948947a421179e91c51005aeb83ed0d1 ~HeadlessWidget(); bool mEnabled; diff --git a/widget/nsGUIEventIPC.h b/widget/nsGUIEventIPC.h -index ad9c1887c6c95447b161b73c8623cef478137c75..c71e9ede72ff69c7e6c2080d804ec47c0051c397 100644 +index 53653511f8d08fd25421a60f9d0df138076b29ff..e8ec8c5df247d56e9dcd235f34c789fb13c4133c 100644 --- a/widget/nsGUIEventIPC.h +++ b/widget/nsGUIEventIPC.h @@ -234,6 +234,7 @@ struct ParamTraits { diff --git a/browser_patches/webkit/UPSTREAM_CONFIG.sh b/browser_patches/webkit/UPSTREAM_CONFIG.sh index fb8ded1682..1ba01abe16 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="3f4f70663d6e5255db11dc794a86522336a07a23" +BASE_REVISION="e50b54c0585e5846b51d94711b75515282bc3bd8" diff --git a/browser_patches/webkit/embedder/Playwright/win/CMakeLists.txt b/browser_patches/webkit/embedder/Playwright/win/CMakeLists.txt index e2ee2cd772..5be95046e4 100644 --- a/browser_patches/webkit/embedder/Playwright/win/CMakeLists.txt +++ b/browser_patches/webkit/embedder/Playwright/win/CMakeLists.txt @@ -29,10 +29,6 @@ list(APPEND Playwright_PRIVATE_LIBRARIES ) WEBKIT_EXECUTABLE_DECLARE(Playwright) -WEBKIT_WRAP_EXECUTABLE(Playwright - SOURCES ${TOOLS_DIR}/win/DLLLauncher/DLLLauncherMain.cpp Playwright.rc - LIBRARIES shlwapi -) WEBKIT_EXECUTABLE(Playwright) set_target_properties(Playwright PROPERTIES WIN32_EXECUTABLE ON) diff --git a/browser_patches/webkit/embedder/Playwright/win/Common.cpp b/browser_patches/webkit/embedder/Playwright/win/Common.cpp index 692028186c..66dee5b68b 100644 --- a/browser_patches/webkit/embedder/Playwright/win/Common.cpp +++ b/browser_patches/webkit/embedder/Playwright/win/Common.cpp @@ -62,14 +62,6 @@ void computeFullDesktopFrame() s_windowSize.cy = scaleFactor * (desktop.bottom - desktop.top); } -BOOL WINAPI DllMain(HINSTANCE dllInstance, DWORD reason, LPVOID) -{ - if (reason == DLL_PROCESS_ATTACH) - hInst = dllInstance; - - return TRUE; -} - bool getAppDataFolder(_bstr_t& directory) { wchar_t appDataDirectory[MAX_PATH]; diff --git a/browser_patches/webkit/embedder/Playwright/win/Playwright.rc b/browser_patches/webkit/embedder/Playwright/win/Playwright.rc deleted file mode 100644 index 8d71276512..0000000000 --- a/browser_patches/webkit/embedder/Playwright/win/Playwright.rc +++ /dev/null @@ -1,76 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "PlaywrightResource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#define APSTUDIO_HIDDEN_SYMBOLS -#include "windows.h" -#undef APSTUDIO_HIDDEN_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (U.S.) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) -#endif //_WIN32 - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -IDI_PLAYWRIGHT ICON "Playwright.ico" - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "PlaywrightResource.\0" -END - -2 TEXTINCLUDE -BEGIN - "#define APSTUDIO_HIDDEN_SYMBOLS\r\n" - "#include ""windows.h""\r\n" - "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/browser_patches/webkit/embedder/Playwright/win/WinMain.cpp b/browser_patches/webkit/embedder/Playwright/win/WinMain.cpp index 4f6cbbbca9..d80ba9f7bd 100644 --- a/browser_patches/webkit/embedder/Playwright/win/WinMain.cpp +++ b/browser_patches/webkit/embedder/Playwright/win/WinMain.cpp @@ -70,6 +70,7 @@ static void configureDataStore(WKWebsiteDataStoreRef dataStore) { int WINAPI wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lpstrCmdLine, _In_ int nCmdShow) { + hInst = hInstance; #ifdef _CRTDBG_MAP_ALLOC _CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDERR); _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE); @@ -165,8 +166,3 @@ exit: return static_cast(msg.wParam); } - -extern "C" __declspec(dllexport) int WINAPI dllLauncherEntryPoint(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpstrCmdLine, int nCmdShow) -{ - return wWinMain(hInstance, hPrevInstance, lpstrCmdLine, nCmdShow); -} diff --git a/browser_patches/webkit/patches/bootstrap.diff b/browser_patches/webkit/patches/bootstrap.diff index a056285c55..6e974aef06 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 4b7b06fc865528b8081e81848a4ea7ef30633ab8..44936c5c538b2cdec6aed8874c159b6d6ab78dc0 100644 +index 24a1fceec610e774bcbdfa769ff4c4667091d74c..1eef686731ede3631be75e35ca846ab6c0954562 100644 --- a/Source/JavaScriptCore/CMakeLists.txt +++ b/Source/JavaScriptCore/CMakeLists.txt -@@ -1394,22 +1394,27 @@ set(JavaScriptCore_INSPECTOR_DOMAINS +@@ -1412,22 +1412,27 @@ set(JavaScriptCore_INSPECTOR_DOMAINS ${JAVASCRIPTCORE_DIR}/inspector/protocol/CSS.json ${JAVASCRIPTCORE_DIR}/inspector/protocol/Canvas.json ${JAVASCRIPTCORE_DIR}/inspector/protocol/Console.json @@ -31,10 +31,10 @@ index 4b7b06fc865528b8081e81848a4ea7ef30633ab8..44936c5c538b2cdec6aed8874c159b6d ${JAVASCRIPTCORE_DIR}/inspector/protocol/ServiceWorker.json ${JAVASCRIPTCORE_DIR}/inspector/protocol/Target.json diff --git a/Source/JavaScriptCore/DerivedSources.make b/Source/JavaScriptCore/DerivedSources.make -index e3f99308f7066a980fe75d717bd90a0a5b354b98..d7cd13f5f2a33e9d0fd3bce673244bd05388ccc4 100644 +index f8168a51e02b8845dc636eb91047c3541164c74d..5ced8b2f59afb903c3bdd17b413d87fb10c4334b 100644 --- a/Source/JavaScriptCore/DerivedSources.make +++ b/Source/JavaScriptCore/DerivedSources.make -@@ -297,22 +297,27 @@ INSPECTOR_DOMAINS := \ +@@ -299,22 +299,27 @@ INSPECTOR_DOMAINS := \ $(JavaScriptCore)/inspector/protocol/CSS.json \ $(JavaScriptCore)/inspector/protocol/Canvas.json \ $(JavaScriptCore)/inspector/protocol/Console.json \ @@ -1826,6 +1826,18 @@ index 638612413466efc87b737e8a81042ed07ca12703..6f9e518ff0bfa2a6228675d25b6b785f ] }, { +diff --git a/Source/JavaScriptCore/profiler/ProfilerBytecodeSequence.cpp b/Source/JavaScriptCore/profiler/ProfilerBytecodeSequence.cpp +index 4fccf72d231285ff2c3f250990b86506303c9ec8..8472ba00fcada5c80fa0356c15b6683c4c6ceb5d 100644 +--- a/Source/JavaScriptCore/profiler/ProfilerBytecodeSequence.cpp ++++ b/Source/JavaScriptCore/profiler/ProfilerBytecodeSequence.cpp +@@ -28,7 +28,6 @@ + + #include "CodeBlock.h" + #include "JSCInlines.h" +-#include "ProfilerDumper.h" + #include + + namespace JSC { namespace Profiler { diff --git a/Source/JavaScriptCore/runtime/ConsoleClient.h b/Source/JavaScriptCore/runtime/ConsoleClient.h index 72c81757450ad5ebacd5fd20d2a16095514802ec..b7d8ab1e04d3850180079870468b28eff504626a 100644 --- a/Source/JavaScriptCore/runtime/ConsoleClient.h @@ -1839,7 +1851,7 @@ index 72c81757450ad5ebacd5fd20d2a16095514802ec..b7d8ab1e04d3850180079870468b28ef private: enum ArgumentRequirement { ArgumentRequired, ArgumentNotRequired }; diff --git a/Source/ThirdParty/libwebrtc/CMakeLists.txt b/Source/ThirdParty/libwebrtc/CMakeLists.txt -index 3ccd5bd78637151c20e2a49eee2ed6b79e479da5..1dd6cf800e2d61d3f11c641c2fb233aded1576d9 100644 +index 133380fe13fcd59d324d5b1c53bfebf855a04750..5f3fad8408d75dc1b5fb6725569badca6617cf49 100644 --- a/Source/ThirdParty/libwebrtc/CMakeLists.txt +++ b/Source/ThirdParty/libwebrtc/CMakeLists.txt @@ -529,6 +529,11 @@ set(webrtc_SOURCES @@ -1854,28 +1866,7 @@ index 3ccd5bd78637151c20e2a49eee2ed6b79e479da5..1dd6cf800e2d61d3f11c641c2fb233ad Source/third_party/libyuv/source/compare.cc Source/third_party/libyuv/source/compare_common.cc Source/third_party/libyuv/source/compare_gcc.cc -@@ -1780,20 +1785,6 @@ if (WTF_CPU_X86_64 OR WTF_CPU_X86) - ) - endif() - --if (WTF_CPU_X86_64) -- list(APPEND webrtc_SOURCES -- Source/webrtc/common_audio/fir_filter_avx2.cc -- Source/webrtc/common_audio/resampler/sinc_resampler_avx2.cc -- Source/webrtc/modules/audio_processing/aec3/adaptive_fir_filter_avx2.cc -- Source/webrtc/modules/audio_processing/aec3/adaptive_fir_filter_erl_avx2.cc -- Source/webrtc/modules/audio_processing/aec3/fft_data_avx2.cc -- Source/webrtc/modules/audio_processing/aec3/matched_filter_avx2.cc -- Source/webrtc/modules/audio_processing/aec3/vector_math_avx2.cc -- Source/webrtc/modules/audio_processing/agc2/rnn_vad/vector_math_avx2.cc -- ) -- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native") --endif() -- - if (WTF_CPU_ARM64) - list(APPEND webrtc_SOURCES - Source/webrtc/common_audio/fir_filter_neon.cc -@@ -2122,6 +2113,10 @@ set(webrtc_INCLUDE_DIRECTORIES PRIVATE +@@ -2124,6 +2129,10 @@ set(webrtc_INCLUDE_DIRECTORIES PRIVATE Source/third_party/libsrtp/config Source/third_party/libsrtp/crypto/include Source/third_party/libsrtp/include @@ -1887,10 +1878,10 @@ index 3ccd5bd78637151c20e2a49eee2ed6b79e479da5..1dd6cf800e2d61d3f11c641c2fb233ad Source/third_party/opus/src/celt Source/third_party/opus/src/include diff --git a/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.exp b/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.exp -index 09125e75d6cb58396e2106611550f47542c3a5d3..9cc6e974009bcfe234f3434951b7e33f5272c62a 100644 +index c3ba9e19caff72011010471c8c46c91b53a22498..d47a93e1f7fe9f4d52376dcc4dcc924231fdd108 100644 --- a/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.exp +++ b/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.exp -@@ -388,3 +388,24 @@ __ZN3rtc7NetworkC1ENSt3__117basic_string_viewIcNS1_11char_traitsIcEEEES5_RKNS_9I +@@ -389,3 +389,24 @@ __ZN3rtc7NetworkC1ENSt3__117basic_string_viewIcNS1_11char_traitsIcEEEES5_RKNS_9I __ZN6webrtc18callback_list_impl21CallbackListReceiversC1Ev __ZNK6webrtc32webrtc_sequence_checker_internal19SequenceCheckerImpl19ExpectationToStringEv __ZN3rtc16InterfaceAddressaSERKS0_ @@ -2141,7 +2132,7 @@ index 479aa7c73a659f7b04645e6a76af472e0b1ff8db..498ea23119710ffc4386ece3c9209135 isa = XCConfigurationList; buildConfigurations = ( diff --git a/Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml b/Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml -index 78d994a233b61b04792e61d7fc7c1846caf5b47c..c559998f7ffe2a033e02e635d5eb3621a5a11166 100644 +index ad64fabbc177d6c2ca59e51dd8dffb6c1652a2c3..41e55cc26d9ff0b5b524e6ea130a7dda8f267dd9 100644 --- a/Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml +++ b/Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml @@ -576,6 +576,7 @@ AspectRatioOfImgFromWidthAndHeightEnabled: @@ -2161,7 +2152,7 @@ index 78d994a233b61b04792e61d7fc7c1846caf5b47c..c559998f7ffe2a033e02e635d5eb3621 WebCore: default: false -@@ -1789,6 +1790,7 @@ CrossOriginEmbedderPolicyEnabled: +@@ -1832,6 +1833,7 @@ CrossOriginEmbedderPolicyEnabled: WebCore: default: false @@ -2169,7 +2160,7 @@ index 78d994a233b61b04792e61d7fc7c1846caf5b47c..c559998f7ffe2a033e02e635d5eb3621 CrossOriginOpenerPolicyEnabled: type: bool status: stable -@@ -1799,7 +1801,7 @@ CrossOriginOpenerPolicyEnabled: +@@ -1842,7 +1844,7 @@ CrossOriginOpenerPolicyEnabled: WebKitLegacy: default: false WebKit: @@ -2178,7 +2169,7 @@ index 78d994a233b61b04792e61d7fc7c1846caf5b47c..c559998f7ffe2a033e02e635d5eb3621 WebCore: default: false -@@ -1829,7 +1831,7 @@ CustomPasteboardDataEnabled: +@@ -1872,7 +1874,7 @@ CustomPasteboardDataEnabled: WebKitLegacy: default: false WebKit: @@ -2187,7 +2178,7 @@ index 78d994a233b61b04792e61d7fc7c1846caf5b47c..c559998f7ffe2a033e02e635d5eb3621 default: false DNSPrefetchingEnabled: -@@ -1874,6 +1876,7 @@ DOMAudioSessionFullEnabled: +@@ -1917,6 +1919,7 @@ DOMAudioSessionFullEnabled: WebCore: default: false @@ -2195,7 +2186,7 @@ index 78d994a233b61b04792e61d7fc7c1846caf5b47c..c559998f7ffe2a033e02e635d5eb3621 DOMPasteAccessRequestsEnabled: type: bool status: internal -@@ -1885,7 +1888,7 @@ DOMPasteAccessRequestsEnabled: +@@ -1928,7 +1931,7 @@ DOMPasteAccessRequestsEnabled: default: false WebKit: "PLATFORM(IOS) || PLATFORM(MAC) || PLATFORM(GTK) || PLATFORM(VISION)": true @@ -2204,7 +2195,7 @@ index 78d994a233b61b04792e61d7fc7c1846caf5b47c..c559998f7ffe2a033e02e635d5eb3621 WebCore: default: false -@@ -3264,6 +3267,7 @@ InspectorAttachmentSide: +@@ -3337,6 +3340,7 @@ InspectorAttachmentSide: WebKit: default: 0 @@ -2212,7 +2203,7 @@ index 78d994a233b61b04792e61d7fc7c1846caf5b47c..c559998f7ffe2a033e02e635d5eb3621 InspectorStartsAttached: type: bool status: embedder -@@ -3271,7 +3275,7 @@ InspectorStartsAttached: +@@ -3344,7 +3348,7 @@ InspectorStartsAttached: exposed: [ WebKit ] defaultValue: WebKit: @@ -2221,7 +2212,7 @@ index 78d994a233b61b04792e61d7fc7c1846caf5b47c..c559998f7ffe2a033e02e635d5eb3621 InspectorWindowFrame: type: String -@@ -3640,6 +3644,7 @@ LayoutViewportHeightExpansionFactor: +@@ -3712,6 +3716,7 @@ LayoutViewportHeightExpansionFactor: WebCore: default: 0 @@ -2229,7 +2220,7 @@ index 78d994a233b61b04792e61d7fc7c1846caf5b47c..c559998f7ffe2a033e02e635d5eb3621 LazyIframeLoadingEnabled: type: bool status: stable -@@ -3650,9 +3655,9 @@ LazyIframeLoadingEnabled: +@@ -3722,9 +3727,9 @@ LazyIframeLoadingEnabled: WebKitLegacy: default: true WebKit: @@ -2241,7 +2232,7 @@ index 78d994a233b61b04792e61d7fc7c1846caf5b47c..c559998f7ffe2a033e02e635d5eb3621 LazyImageLoadingEnabled: type: bool -@@ -5009,6 +5014,19 @@ PluginsEnabled: +@@ -5081,6 +5086,19 @@ PluginsEnabled: WebCore: default: false @@ -2261,7 +2252,7 @@ index 78d994a233b61b04792e61d7fc7c1846caf5b47c..c559998f7ffe2a033e02e635d5eb3621 PopoverAttributeEnabled: type: bool status: stable -@@ -6660,6 +6678,7 @@ UseCGDisplayListsForDOMRendering: +@@ -6746,6 +6764,7 @@ UseCGDisplayListsForDOMRendering: WebKit: default: true @@ -2269,7 +2260,7 @@ index 78d994a233b61b04792e61d7fc7c1846caf5b47c..c559998f7ffe2a033e02e635d5eb3621 UseGPUProcessForCanvasRenderingEnabled: type: bool status: stable -@@ -6672,7 +6691,7 @@ UseGPUProcessForCanvasRenderingEnabled: +@@ -6758,7 +6777,7 @@ UseGPUProcessForCanvasRenderingEnabled: defaultValue: WebKit: "ENABLE(GPU_PROCESS_BY_DEFAULT)": true @@ -2278,7 +2269,7 @@ index 78d994a233b61b04792e61d7fc7c1846caf5b47c..c559998f7ffe2a033e02e635d5eb3621 default: false UseGPUProcessForDOMRenderingEnabled: -@@ -6714,6 +6733,7 @@ UseGPUProcessForMediaEnabled: +@@ -6800,6 +6819,7 @@ UseGPUProcessForMediaEnabled: "ENABLE(GPU_PROCESS_BY_DEFAULT)": true default: false @@ -2286,7 +2277,7 @@ index 78d994a233b61b04792e61d7fc7c1846caf5b47c..c559998f7ffe2a033e02e635d5eb3621 UseGPUProcessForWebGLEnabled: type: bool status: internal -@@ -6725,7 +6745,7 @@ UseGPUProcessForWebGLEnabled: +@@ -6811,7 +6831,7 @@ UseGPUProcessForWebGLEnabled: default: false WebKit: "ENABLE(GPU_PROCESS_BY_DEFAULT) && ENABLE(GPU_PROCESS_WEBGL_BY_DEFAULT)": true @@ -2296,7 +2287,7 @@ index 78d994a233b61b04792e61d7fc7c1846caf5b47c..c559998f7ffe2a033e02e635d5eb3621 WebCore: "ENABLE(GPU_PROCESS_BY_DEFAULT) && ENABLE(GPU_PROCESS_WEBGL_BY_DEFAULT)": true diff --git a/Source/WTF/wtf/PlatformEnable.h b/Source/WTF/wtf/PlatformEnable.h -index e1cf4777796ac60c761e4678440aae3e1e1dec8a..fcc78d5cfeb86f3cb073c85491e40737542d3c6c 100644 +index eea248ca9ab06ddbc55a1ed17bdd334e2ea848ec..f0686b9c4f0a489d78e63c35a612379cdfb01f8a 100644 --- a/Source/WTF/wtf/PlatformEnable.h +++ b/Source/WTF/wtf/PlatformEnable.h @@ -408,7 +408,7 @@ @@ -2318,10 +2309,10 @@ index e1cf4777796ac60c761e4678440aae3e1e1dec8a..fcc78d5cfeb86f3cb073c85491e40737 #if !defined(ENABLE_TOUCH_ACTION_REGIONS) diff --git a/Source/WTF/wtf/PlatformHave.h b/Source/WTF/wtf/PlatformHave.h -index 8eb65c40459cd428badb809b65e9294fa50f664f..01a3718bf7e7976fd9e99a28c0ed314b35b83fb3 100644 +index 529cba6b3087740c7389111b249bd90d4c661126..88f18b1596079569a9b642b86e7b2aaecf11f1ba 100644 --- a/Source/WTF/wtf/PlatformHave.h +++ b/Source/WTF/wtf/PlatformHave.h -@@ -404,7 +404,7 @@ +@@ -414,7 +414,7 @@ #define HAVE_FOUNDATION_WITH_SAME_SITE_COOKIE_SUPPORT 1 #endif @@ -2330,7 +2321,7 @@ index 8eb65c40459cd428badb809b65e9294fa50f664f..01a3718bf7e7976fd9e99a28c0ed314b #define HAVE_OS_DARK_MODE_SUPPORT 1 #endif -@@ -1236,7 +1236,8 @@ +@@ -1246,7 +1246,8 @@ #endif #if PLATFORM(MAC) @@ -2341,10 +2332,10 @@ index 8eb65c40459cd428badb809b65e9294fa50f664f..01a3718bf7e7976fd9e99a28c0ed314b #if !defined(HAVE_LOCKDOWN_MODE_PDF_ADDITIONS) && \ diff --git a/Source/WebCore/DerivedSources.make b/Source/WebCore/DerivedSources.make -index 34f78f329a999e2a6ebe64ccb4809c658299b68c..2563469d0bb895d875330206f940544afbcf93eb 100644 +index 3563e8ec8c2e3a0b06860c10d98ee966d262e1fb..4c786aaa56f99a96f092a8d837a17f8d0e3df3c3 100644 --- a/Source/WebCore/DerivedSources.make +++ b/Source/WebCore/DerivedSources.make -@@ -1063,6 +1063,10 @@ JS_BINDING_IDLS := \ +@@ -1071,6 +1071,10 @@ JS_BINDING_IDLS := \ $(WebCore)/dom/Slotable.idl \ $(WebCore)/dom/StaticRange.idl \ $(WebCore)/dom/StringCallback.idl \ @@ -2355,7 +2346,7 @@ index 34f78f329a999e2a6ebe64ccb4809c658299b68c..2563469d0bb895d875330206f940544a $(WebCore)/dom/Text.idl \ $(WebCore)/dom/TextDecoder.idl \ $(WebCore)/dom/TextDecoderStream.idl \ -@@ -1626,9 +1630,6 @@ ADDITIONAL_BINDING_IDLS = \ +@@ -1634,9 +1638,6 @@ ADDITIONAL_BINDING_IDLS = \ GestureEvent.idl \ Internals+Additions.idl \ InternalsAdditions.idl \ @@ -2429,10 +2420,10 @@ index 99db9b2a0693bddab0b783b47746460cd0b7ffd9..74cbf2811a6f8dbcf631c8a218ad4a13 set(CSS_VALUE_PLATFORM_DEFINES "HAVE_OS_DARK_MODE_SUPPORT=1") diff --git a/Source/WebCore/SourcesCocoa.txt b/Source/WebCore/SourcesCocoa.txt -index 538f32e8691440a9fd0f389832f46c871aeb3886..9cad31980f01334bcfaac7b25edb4414f454afc5 100644 +index bf513f34fba15a98554914d2e79e07ff68da8f7e..582a65bb7829e91c54f195d6eb921a3aef72ddab 100644 --- a/Source/WebCore/SourcesCocoa.txt +++ b/Source/WebCore/SourcesCocoa.txt -@@ -692,3 +692,9 @@ platform/graphics/angle/GraphicsContextGLANGLE.cpp @no-unify +@@ -689,3 +689,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 @@ -2489,10 +2480,10 @@ index b22d8835c52f1f5584c96d68c70cd62164ee39d4..28b3c9511b773a095bea324886b515c0 +JSSpeechSynthesisEventInit.cpp +// Playwright: end. diff --git a/Source/WebCore/WebCore.xcodeproj/project.pbxproj b/Source/WebCore/WebCore.xcodeproj/project.pbxproj -index 4db4dcef222780b50ed52dee26bb83683082c940..bcfa44066b6616248913c71dae44b87562e740b7 100644 +index fd4ef7a651b0eeca1f2508c0910487113497330b..781d22217c143a0227d29e149198dec45044d7a4 100644 --- a/Source/WebCore/WebCore.xcodeproj/project.pbxproj +++ b/Source/WebCore/WebCore.xcodeproj/project.pbxproj -@@ -5894,6 +5894,13 @@ +@@ -6042,6 +6042,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, ); }; }; @@ -2506,7 +2497,7 @@ index 4db4dcef222780b50ed52dee26bb83683082c940..bcfa44066b6616248913c71dae44b875 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, ); }; }; -@@ -19114,6 +19121,14 @@ +@@ -19476,6 +19483,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 = ""; }; @@ -2521,7 +2512,7 @@ index 4db4dcef222780b50ed52dee26bb83683082c940..bcfa44066b6616248913c71dae44b875 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 = ""; }; -@@ -26259,6 +26274,11 @@ +@@ -26817,6 +26832,11 @@ BC4A5324256055590028C592 /* TextDirectionSubmenuInclusionBehavior.h */, 2D4F96F11A1ECC240098BF88 /* TextIndicator.cpp */, 2D4F96F21A1ECC240098BF88 /* TextIndicator.h */, @@ -2533,7 +2524,7 @@ index 4db4dcef222780b50ed52dee26bb83683082c940..bcfa44066b6616248913c71dae44b875 F48570A42644C76D00C05F71 /* TranslationContextMenuInfo.h */, F4E1965F21F26E4E00285078 /* UndoItem.cpp */, 2ECDBAD521D8906300F00ECD /* UndoItem.h */, -@@ -32394,6 +32414,8 @@ +@@ -32990,6 +33010,8 @@ 29E4D8DF16B0940F00C84704 /* PlatformSpeechSynthesizer.h */, 1AD8F81A11CAB9E900E93E54 /* PlatformStrategies.cpp */, 1AD8F81911CAB9E900E93E54 /* PlatformStrategies.h */, @@ -2542,7 +2533,7 @@ index 4db4dcef222780b50ed52dee26bb83683082c940..bcfa44066b6616248913c71dae44b875 0FD7C21D23CE41E30096D102 /* PlatformWheelEvent.cpp */, 935C476A09AC4D4F00A6AAB4 /* PlatformWheelEvent.h */, BCBB8AB513F1AFB000734DF0 /* PODInterval.h */, -@@ -34923,6 +34945,7 @@ +@@ -35522,6 +35544,7 @@ AD6E71AB1668899D00320C13 /* DocumentSharedObjectPool.h */, 6BDB5DC1227BD3B800919770 /* DocumentStorageAccess.cpp */, 6BDB5DC0227BD3B800919770 /* DocumentStorageAccess.h */, @@ -2550,7 +2541,7 @@ index 4db4dcef222780b50ed52dee26bb83683082c940..bcfa44066b6616248913c71dae44b875 7CE7FA5B1EF882300060C9D6 /* DocumentTouch.cpp */, 7CE7FA591EF882300060C9D6 /* DocumentTouch.h */, A8185F3209765765005826D9 /* DocumentType.cpp */, -@@ -39428,6 +39451,8 @@ +@@ -40041,6 +40064,8 @@ 1AD8F81B11CAB9E900E93E54 /* PlatformStrategies.h in Headers */, 0F7D07331884C56C00B4AF86 /* PlatformTextTrack.h in Headers */, 074E82BB18A69F0E007EF54C /* PlatformTimeRanges.h in Headers */, @@ -2559,7 +2550,7 @@ index 4db4dcef222780b50ed52dee26bb83683082c940..bcfa44066b6616248913c71dae44b875 CDD08ABD277E542600EA3755 /* PlatformTrackConfiguration.h in Headers */, CD1F9B022700323D00617EB6 /* PlatformVideoColorPrimaries.h in Headers */, CD1F9B01270020B700617EB6 /* PlatformVideoColorSpace.h in Headers */, -@@ -40659,6 +40684,7 @@ +@@ -41273,6 +41298,7 @@ 0F54DD081881D5F5003EEDBB /* Touch.h in Headers */, 71B7EE0D21B5C6870031C1EF /* TouchAction.h in Headers */, 0F54DD091881D5F5003EEDBB /* TouchEvent.h in Headers */, @@ -2567,7 +2558,7 @@ index 4db4dcef222780b50ed52dee26bb83683082c940..bcfa44066b6616248913c71dae44b875 0F54DD0A1881D5F5003EEDBB /* TouchList.h in Headers */, 070334D71459FFD5008D8D45 /* TrackBase.h in Headers */, BE88E0C21715CE2600658D98 /* TrackListBase.h in Headers */, -@@ -41617,6 +41643,8 @@ +@@ -42363,6 +42389,8 @@ 2D22830323A8470700364B7E /* CursorMac.mm in Sources */, 5CBD59592280E926002B22AA /* CustomHeaderFields.cpp in Sources */, 07E4BDBF2A3A5FAB000D5509 /* DictationCaretAnimator.cpp in Sources */, @@ -2576,7 +2567,7 @@ index 4db4dcef222780b50ed52dee26bb83683082c940..bcfa44066b6616248913c71dae44b875 7CE6CBFD187F394900D46BF5 /* FormatConverter.cpp in Sources */, 4667EA3E2968D9DA00BAB1E2 /* GameControllerHapticEffect.mm in Sources */, 46FE73D32968E52000B8064C /* GameControllerHapticEngines.mm in Sources */, -@@ -41696,6 +41724,9 @@ +@@ -42442,6 +42470,9 @@ CE88EE262414467B007F29C2 /* TextAlternativeWithRange.mm in Sources */, BE39137129B267F500FA5D4F /* TextTransformCocoa.cpp in Sources */, 51DF6D800B92A18E00C2DC85 /* ThreadCheck.mm in Sources */, @@ -2587,7 +2578,7 @@ index 4db4dcef222780b50ed52dee26bb83683082c940..bcfa44066b6616248913c71dae44b875 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 2a6bfd7d28b50388dde9695f30e8c7ee70f22194..45756c413fd77c35de2dab383f59b17f8846ea21 100644 +index 1436d85fe55e51ea22fef1fcd76a8b8c1eb49d7b..106cd04cc949e84ff2fd22b027e1cc82b80d7b62 100644 --- a/Source/WebCore/accessibility/AccessibilityObject.cpp +++ b/Source/WebCore/accessibility/AccessibilityObject.cpp @@ -64,6 +64,7 @@ @@ -2598,7 +2589,7 @@ index 2a6bfd7d28b50388dde9695f30e8c7ee70f22194..45756c413fd77c35de2dab383f59b17f #include "LocalFrame.h" #include "LocalizedStrings.h" #include "MathMLNames.h" -@@ -3903,9 +3904,14 @@ AccessibilityObjectInclusion AccessibilityObject::defaultObjectInclusion() const +@@ -3954,9 +3955,14 @@ AccessibilityObjectInclusion AccessibilityObject::defaultObjectInclusion() const if (roleValue() == AccessibilityRole::ApplicationDialog) return AccessibilityObjectInclusion::IncludeObject; @@ -2616,10 +2607,10 @@ index 2a6bfd7d28b50388dde9695f30e8c7ee70f22194..45756c413fd77c35de2dab383f59b17f { AXComputedObjectAttributeCache* attributeCache = nullptr; diff --git a/Source/WebCore/bindings/js/WebCoreBuiltinNames.h b/Source/WebCore/bindings/js/WebCoreBuiltinNames.h -index 2db24fbae41f43e8f31e0560e9aaf422f7e45997..cd033ed79b1049302cc180ff105733b3a859b285 100644 +index f70459a8d2e96bc0a54f62f8e3a07001b3d5ced0..32efd121362c11d50fca136ebaa9caf35ae110a8 100644 --- a/Source/WebCore/bindings/js/WebCoreBuiltinNames.h +++ b/Source/WebCore/bindings/js/WebCoreBuiltinNames.h -@@ -169,6 +169,8 @@ namespace WebCore { +@@ -170,6 +170,8 @@ namespace WebCore { macro(DecompressionStreamTransform) \ macro(DelayNode) \ macro(DeprecationReportBody) \ @@ -2749,18 +2740,20 @@ index f27718c1e2b8cd0a8075e556d4cdba7d9ae8fc54..2b61721594e5435845f3151e0de345e9 ] partial interface Element { undefined requestPointerLock(); diff --git a/Source/WebCore/dom/PointerEvent.cpp b/Source/WebCore/dom/PointerEvent.cpp -index 936f9913c28269fa1a425b87f8458328e1a7d715..c979965716db643209daae81d14b334a94c2523d 100644 +index 37ef194cdc90fecbf8733161ff7b538fc566dece..835e442a762d570b48037c1c9190e6d296f4b266 100644 --- a/Source/WebCore/dom/PointerEvent.cpp +++ b/Source/WebCore/dom/PointerEvent.cpp -@@ -28,6 +28,7 @@ +@@ -27,7 +27,9 @@ + #include "PointerEvent.h" #include "EventNames.h" ++#include "MouseEvent.h" #include "Node.h" +#include "PlatformTouchEvent.h" #include namespace WebCore { -@@ -116,4 +117,63 @@ EventInterface PointerEvent::eventInterface() const +@@ -116,4 +118,63 @@ EventInterface PointerEvent::eventInterface() const return PointerEventInterfaceType; } @@ -2811,7 +2804,7 @@ index 936f9913c28269fa1a425b87f8458328e1a7d715..c979965716db643209daae81d14b334a + +PointerEvent::PointerEvent(const AtomString& type, const PlatformTouchEvent& event, IsCancelable isCancelable, unsigned index, bool isPrimary, Ref&& view, const IntPoint& touchDelta) + : MouseEvent(type, typeCanBubble(type), isCancelable, typeIsComposed(type), event.timestamp().approximateMonotonicTime(), WTFMove(view), 0, -+ event.touchPoints().at(index).pos(), event.touchPoints().at(index).pos(), touchDelta.x(), touchDelta.y(), event.modifiers(), buttonForType(type), buttonsForType(type), nullptr, 0, 0, IsSimulated::No, IsTrusted::Yes) ++ event.touchPoints().at(index).pos(), event.touchPoints().at(index).pos(), touchDelta.x(), touchDelta.y(), event.modifiers(), buttonForType(type), buttonsForType(type), nullptr, 0, SyntheticClickType::NoTap, IsSimulated::No, IsTrusted::Yes) + , m_pointerId(event.touchPoints().at(index).id()) + , m_width(2 * event.touchPoints().at(index).radiusX()) + , m_height(2 * event.touchPoints().at(index).radiusY()) @@ -5513,10 +5506,10 @@ index fe3de3ee1ff4b61f66cc92bc0b9c2136c05769a3..3206e3ae64611c02abcfd6cc2e2a7b6f } // namespace WebCore diff --git a/Source/WebCore/loader/CookieJar.h b/Source/WebCore/loader/CookieJar.h -index 21e33e46bdb1af8434527747e3c308cbe53f60f0..c17c4de17f439c04d27caa532771934cb2f62abd 100644 +index 141be33c172d7323a95e99f4fb1e5de75cfa667c..e587ab60d5b3839f43f0139cc8c227422a855275 100644 --- a/Source/WebCore/loader/CookieJar.h +++ b/Source/WebCore/loader/CookieJar.h -@@ -43,6 +43,7 @@ struct CookieRequestHeaderFieldProxy; +@@ -45,6 +45,7 @@ struct CookieStoreGetOptions; class NetworkStorageSession; class StorageSessionProvider; struct SameSiteInfo; @@ -5524,7 +5517,7 @@ index 21e33e46bdb1af8434527747e3c308cbe53f60f0..c17c4de17f439c04d27caa532771934c class WEBCORE_EXPORT CookieJar : public RefCounted { public: -@@ -66,6 +67,9 @@ public: +@@ -71,6 +72,9 @@ public: virtual void clearCache() { } virtual void clearCacheForHost(const String&) { } @@ -5535,10 +5528,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 5fc154663300e0d1d0a342dea23a9d0e275b57fa..87ce081bfcd8a1d4bf065273378c611a2a9a975f 100644 +index 49b4ea4d4ec481066d4630036ca8f1ec500ea1df..b61def9309c5bf47c216f77e39cc9ba7317f31ab 100644 --- a/Source/WebCore/loader/DocumentLoader.cpp +++ b/Source/WebCore/loader/DocumentLoader.cpp -@@ -733,8 +733,10 @@ void DocumentLoader::willSendRequest(ResourceRequest&& newRequest, const Resourc +@@ -750,8 +750,10 @@ void DocumentLoader::willSendRequest(ResourceRequest&& newRequest, const Resourc if (!didReceiveRedirectResponse) return completionHandler(WTFMove(newRequest)); @@ -5549,7 +5542,7 @@ index 5fc154663300e0d1d0a342dea23a9d0e275b57fa..87ce081bfcd8a1d4bf065273378c611a switch (navigationPolicyDecision) { case NavigationPolicyDecision::IgnoreLoad: case NavigationPolicyDecision::StopAllLoads: -@@ -1511,8 +1513,6 @@ void DocumentLoader::detachFromFrame() +@@ -1534,8 +1536,6 @@ void DocumentLoader::detachFromFrame() if (!m_frame) return; @@ -5559,7 +5552,7 @@ index 5fc154663300e0d1d0a342dea23a9d0e275b57fa..87ce081bfcd8a1d4bf065273378c611a } diff --git a/Source/WebCore/loader/DocumentLoader.h b/Source/WebCore/loader/DocumentLoader.h -index 1db3877934eaaa75010bd16cb33af95d32d94595..3634bd4e972688394ab6274041a3e378ca71d0c2 100644 +index 8fc09af3f1e35e4d35db94940c3be6cee801cc2d..2f6d64f64857191b0bbdbba9531acd0eebbc780d 100644 --- a/Source/WebCore/loader/DocumentLoader.h +++ b/Source/WebCore/loader/DocumentLoader.h @@ -187,9 +187,13 @@ public: @@ -5728,7 +5721,7 @@ index 258b45354b3f4c1854373c3cd2679d379fa60302..79c7abd308276ffec67686b145edc422 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 d1569e3d301e25226c27bb9f9bc79d4570786814..ccebb47ab65f1859338d0269955c1067e6d80e58 100644 +index 3497de3aab88b96893895e6c7b6baff9ca499d47..6787a76f4bbfb845175407f9558f907bde91b44c 100644 --- a/Source/WebCore/loader/cache/CachedResourceLoader.cpp +++ b/Source/WebCore/loader/cache/CachedResourceLoader.cpp @@ -1033,8 +1033,11 @@ ResourceErrorOr> CachedResourceLoader::requ @@ -5745,7 +5738,7 @@ index d1569e3d301e25226c27bb9f9bc79d4570786814..ccebb47ab65f1859338d0269955c1067 auto& page = *frame.page(); -@@ -1681,8 +1684,9 @@ Vector> CachedResourceLoader::allCachedSVGImages() const +@@ -1688,8 +1691,9 @@ Vector> CachedResourceLoader::allCachedSVGImages() const ResourceErrorOr> CachedResourceLoader::preload(CachedResource::Type type, CachedResourceRequest&& request) { @@ -5758,7 +5751,7 @@ index d1569e3d301e25226c27bb9f9bc79d4570786814..ccebb47ab65f1859338d0269955c1067 ASSERT(m_document); if (request.charset().isEmpty() && m_document && (type == CachedResource::Type::Script || type == CachedResource::Type::CSSStyleSheet)) diff --git a/Source/WebCore/page/ChromeClient.h b/Source/WebCore/page/ChromeClient.h -index 646b0bc5523becda57dc9e9f89048c8b4b84dd50..ec7940e80688e2519cc3b7b85dcd55070525859f 100644 +index 4dae0fda41f9a8de7917b031f3d2943355f934d3..6ee544226cbc1448623fc7cc9553edb7f83d5bbc 100644 --- a/Source/WebCore/page/ChromeClient.h +++ b/Source/WebCore/page/ChromeClient.h @@ -325,7 +325,7 @@ public: @@ -5771,10 +5764,10 @@ index 646b0bc5523becda57dc9e9f89048c8b4b84dd50..ec7940e80688e2519cc3b7b85dcd5507 #if ENABLE(INPUT_TYPE_COLOR) diff --git a/Source/WebCore/page/EventHandler.cpp b/Source/WebCore/page/EventHandler.cpp -index 9288d530a995287d0c13a11a7bb34f51872513e9..069f11cefa8eaa12f4ec85f82bf2158ee69d9021 100644 +index be034224c6a9fc224433f87c8de76327b1d4718c..d10edcf00a8256410dcf74e65e6e93ded9ca434b 100644 --- a/Source/WebCore/page/EventHandler.cpp +++ b/Source/WebCore/page/EventHandler.cpp -@@ -144,6 +144,7 @@ +@@ -145,6 +145,7 @@ #if ENABLE(TOUCH_EVENTS) && !ENABLE(IOS_TOUCH_EVENTS) #include "PlatformTouchEvent.h" @@ -5782,7 +5775,7 @@ index 9288d530a995287d0c13a11a7bb34f51872513e9..069f11cefa8eaa12f4ec85f82bf2158e #endif #if ENABLE(MAC_GESTURE_EVENTS) -@@ -819,9 +820,7 @@ bool EventHandler::handleMousePressEvent(const MouseEventWithHitTestResults& eve +@@ -856,9 +857,7 @@ bool EventHandler::handleMousePressEvent(const MouseEventWithHitTestResults& eve m_mousePressNode = event.targetNode(); m_frame.document()->setFocusNavigationStartingNode(event.targetNode()); @@ -5792,7 +5785,7 @@ index 9288d530a995287d0c13a11a7bb34f51872513e9..069f11cefa8eaa12f4ec85f82bf2158e m_mousePressed = true; m_selectionInitiationState = HaveNotStartedSelection; -@@ -861,8 +860,6 @@ VisiblePosition EventHandler::selectionExtentRespectingEditingBoundary(const Vis +@@ -898,8 +897,6 @@ VisiblePosition EventHandler::selectionExtentRespectingEditingBoundary(const Vis return adjustedTarget->renderer()->positionForPoint(LayoutPoint(selectionEndPoint), nullptr); } @@ -5801,7 +5794,7 @@ index 9288d530a995287d0c13a11a7bb34f51872513e9..069f11cefa8eaa12f4ec85f82bf2158e #if !PLATFORM(IOS_FAMILY) bool EventHandler::supportsSelectionUpdatesOnMouseDrag() const -@@ -884,8 +881,10 @@ bool EventHandler::handleMouseDraggedEvent(const MouseEventWithHitTestResults& e +@@ -921,8 +918,10 @@ bool EventHandler::handleMouseDraggedEvent(const MouseEventWithHitTestResults& e Ref protectedFrame(m_frame); @@ -5812,7 +5805,7 @@ index 9288d530a995287d0c13a11a7bb34f51872513e9..069f11cefa8eaa12f4ec85f82bf2158e RefPtr targetNode = event.targetNode(); if (event.event().button() != LeftButton || !targetNode) -@@ -906,7 +905,9 @@ bool EventHandler::handleMouseDraggedEvent(const MouseEventWithHitTestResults& e +@@ -943,7 +942,9 @@ bool EventHandler::handleMouseDraggedEvent(const MouseEventWithHitTestResults& e ASSERT(mouseDownMayStartSelect() || m_mouseDownMayStartAutoscroll); #endif @@ -5822,7 +5815,7 @@ index 9288d530a995287d0c13a11a7bb34f51872513e9..069f11cefa8eaa12f4ec85f82bf2158e if (m_mouseDownMayStartAutoscroll && !panScrollInProgress()) { m_autoscrollController->startAutoscrollForSelection(renderer); -@@ -923,6 +924,8 @@ bool EventHandler::handleMouseDraggedEvent(const MouseEventWithHitTestResults& e +@@ -960,6 +961,8 @@ bool EventHandler::handleMouseDraggedEvent(const MouseEventWithHitTestResults& e return true; } @@ -5831,7 +5824,7 @@ index 9288d530a995287d0c13a11a7bb34f51872513e9..069f11cefa8eaa12f4ec85f82bf2158e bool EventHandler::eventMayStartDrag(const PlatformMouseEvent& event) const { // This is a pre-flight check of whether the event might lead to a drag being started. Be careful -@@ -954,6 +957,8 @@ bool EventHandler::eventMayStartDrag(const PlatformMouseEvent& event) const +@@ -991,6 +994,8 @@ bool EventHandler::eventMayStartDrag(const PlatformMouseEvent& event) const return targetElement && page->dragController().draggableElement(&m_frame, targetElement.get(), result.roundedPointInInnerNodeFrame(), state); } @@ -5840,7 +5833,7 @@ index 9288d530a995287d0c13a11a7bb34f51872513e9..069f11cefa8eaa12f4ec85f82bf2158e void EventHandler::updateSelectionForMouseDrag() { if (!supportsSelectionUpdatesOnMouseDrag()) -@@ -1062,7 +1067,6 @@ void EventHandler::updateSelectionForMouseDrag(const HitTestResult& hitTestResul +@@ -1099,7 +1104,6 @@ void EventHandler::updateSelectionForMouseDrag(const HitTestResult& hitTestResul if (oldSelection != newSelection && ImageOverlay::isOverlayText(newSelection.start().containerNode()) && ImageOverlay::isOverlayText(newSelection.end().containerNode())) invalidateClick(); } @@ -5848,7 +5841,7 @@ index 9288d530a995287d0c13a11a7bb34f51872513e9..069f11cefa8eaa12f4ec85f82bf2158e void EventHandler::lostMouseCapture() { -@@ -1110,9 +1114,7 @@ bool EventHandler::handleMouseReleaseEvent(const MouseEventWithHitTestResults& e +@@ -1147,9 +1151,7 @@ bool EventHandler::handleMouseReleaseEvent(const MouseEventWithHitTestResults& e // on the selection, the selection goes away. However, if we are // editing, place the caret. if (m_mouseDownWasSingleClickInSelection && m_selectionInitiationState != ExtendedSelection @@ -5858,7 +5851,7 @@ index 9288d530a995287d0c13a11a7bb34f51872513e9..069f11cefa8eaa12f4ec85f82bf2158e && m_frame.selection().isRange() && event.event().button() != RightButton) { VisibleSelection newSelection; -@@ -2111,10 +2113,8 @@ bool EventHandler::handleMouseMoveEvent(const PlatformMouseEvent& platformMouseE +@@ -2148,10 +2150,8 @@ bool EventHandler::handleMouseMoveEvent(const PlatformMouseEvent& platformMouseE swallowEvent = !dispatchMouseEvent(eventNames().mousemoveEvent, mouseEvent.targetNode(), 0, platformMouseEvent, FireMouseOverOut::Yes); @@ -5869,7 +5862,7 @@ index 9288d530a995287d0c13a11a7bb34f51872513e9..069f11cefa8eaa12f4ec85f82bf2158e return swallowEvent; } -@@ -4207,7 +4207,14 @@ bool EventHandler::handleDrag(const MouseEventWithHitTestResults& event, CheckDr +@@ -4242,7 +4242,14 @@ bool EventHandler::handleDrag(const MouseEventWithHitTestResults& event, CheckDr if (!m_frame.document()) return false; @@ -5885,7 +5878,7 @@ index 9288d530a995287d0c13a11a7bb34f51872513e9..069f11cefa8eaa12f4ec85f82bf2158e auto hasNonDefaultPasteboardData = HasNonDefaultPasteboardData::No; if (dragState().shouldDispatchEvents) { -@@ -4892,11 +4899,6 @@ bool EventHandler::handleTouchEvent(const PlatformTouchEvent& event) +@@ -4927,11 +4934,6 @@ bool EventHandler::handleTouchEvent(const PlatformTouchEvent& event) document.page()->pointerCaptureController().dispatchEventForTouchAtIndex( *touchTarget, cancelEvent, index, !index, *document.windowProxy(), { 0, 0 }); } @@ -5897,7 +5890,7 @@ index 9288d530a995287d0c13a11a7bb34f51872513e9..069f11cefa8eaa12f4ec85f82bf2158e #endif if (&m_frame != targetFrame) { -@@ -4938,6 +4940,9 @@ bool EventHandler::handleTouchEvent(const PlatformTouchEvent& event) +@@ -4973,6 +4975,9 @@ bool EventHandler::handleTouchEvent(const PlatformTouchEvent& event) changedTouches[pointState].m_touches->append(WTFMove(touch)); changedTouches[pointState].m_targets.add(touchTarget); } @@ -6026,7 +6019,7 @@ index 5f85bb24166b1c1805323fcbb34144be3191643b..09d2782e3961d70b9483a77e0c12923b struct SnapshotOptions { diff --git a/Source/WebCore/page/History.cpp b/Source/WebCore/page/History.cpp -index 72b201f2990b6c03a4e18ce9f43292b1503752b6..66ba2df4a49153078273106d666410f2116a3c52 100644 +index a6537109eeecdeb6d541fff3469c3c8f3a061ca2..d8fa86589e6d0ddcb3f84f2d6afed722c7454fd0 100644 --- a/Source/WebCore/page/History.cpp +++ b/Source/WebCore/page/History.cpp @@ -31,6 +31,7 @@ @@ -6037,7 +6030,7 @@ index 72b201f2990b6c03a4e18ce9f43292b1503752b6..66ba2df4a49153078273106d666410f2 #include "LocalFrame.h" #include "LocalFrameLoaderClient.h" #include "Logging.h" -@@ -274,6 +275,7 @@ ExceptionOr History::stateObjectAdded(RefPtr&& data +@@ -276,6 +277,7 @@ ExceptionOr History::stateObjectAdded(RefPtr&& data if (!urlString.isEmpty()) frame->document()->updateURLForPushOrReplaceState(fullURL); @@ -6046,7 +6039,7 @@ index 72b201f2990b6c03a4e18ce9f43292b1503752b6..66ba2df4a49153078273106d666410f2 if (stateObjectType == StateObjectType::Push) { frame->loader().history().pushState(WTFMove(data), title, fullURL.string()); diff --git a/Source/WebCore/page/LocalFrame.cpp b/Source/WebCore/page/LocalFrame.cpp -index c5694ec27a902572f12524605c9f523f0669e4d9..781ed5c29712cc4bcbabd6907435ba91c3e0ad5f 100644 +index 7812be88553edb2a6764694f12954bc9cb78b8f4..db7c1de434cb119e14cc52bcb822a8513c3fdbe3 100644 --- a/Source/WebCore/page/LocalFrame.cpp +++ b/Source/WebCore/page/LocalFrame.cpp @@ -40,6 +40,7 @@ @@ -6081,7 +6074,7 @@ index c5694ec27a902572f12524605c9f523f0669e4d9..781ed5c29712cc4bcbabd6907435ba91 m_loader->init(); } -@@ -374,7 +378,7 @@ void LocalFrame::orientationChanged() +@@ -379,7 +383,7 @@ void LocalFrame::orientationChanged() IntDegrees LocalFrame::orientation() const { if (auto* page = this->page()) @@ -6090,7 +6083,7 @@ index c5694ec27a902572f12524605c9f523f0669e4d9..781ed5c29712cc4bcbabd6907435ba91 return 0; } #endif // ENABLE(ORIENTATION_EVENTS) -@@ -1176,6 +1180,362 @@ DataDetectionResultsStorage& LocalFrame::dataDetectionResults() +@@ -1181,6 +1185,362 @@ DataDetectionResultsStorage& LocalFrame::dataDetectionResults() #endif @@ -6454,7 +6447,7 @@ index c5694ec27a902572f12524605c9f523f0669e4d9..781ed5c29712cc4bcbabd6907435ba91 #undef FRAME_RELEASE_LOG_ERROR diff --git a/Source/WebCore/page/LocalFrame.h b/Source/WebCore/page/LocalFrame.h -index dcb779a5605d9cff6e0fb195a5e0c9e3b7bd4269..6ecb28dc92137845d112ac59d58df36c386f5712 100644 +index 7b01d4a4d92ed03bc0f14a2a638ba49499d05440..de7ff66522be6957efd605e7fdb4046607273aa9 100644 --- a/Source/WebCore/page/LocalFrame.h +++ b/Source/WebCore/page/LocalFrame.h @@ -28,8 +28,10 @@ @@ -6516,7 +6509,7 @@ index dcb779a5605d9cff6e0fb195a5e0c9e3b7bd4269..6ecb28dc92137845d112ac59d58df36c void selfOnlyRef(); void selfOnlyDeref(); -@@ -313,7 +315,6 @@ private: +@@ -314,7 +316,6 @@ private: #if ENABLE(DATA_DETECTION) std::unique_ptr m_dataDetectionResults; #endif @@ -6524,7 +6517,7 @@ index dcb779a5605d9cff6e0fb195a5e0c9e3b7bd4269..6ecb28dc92137845d112ac59d58df36c 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); -@@ -321,6 +322,7 @@ private: +@@ -322,6 +323,7 @@ private: enum class ShouldFindRootEditableElement : bool { No, Yes }; Node* qualifyingNodeAtViewportLocation(const FloatPoint& viewportLocation, FloatPoint& adjustedViewportLocation, const NodeQualifier&, ShouldApproximate, ShouldFindRootEditableElement = ShouldFindRootEditableElement::Yes); @@ -6533,7 +6526,7 @@ index dcb779a5605d9cff6e0fb195a5e0c9e3b7bd4269..6ecb28dc92137845d112ac59d58df36c ViewportArguments m_viewportArguments; diff --git a/Source/WebCore/page/Page.cpp b/Source/WebCore/page/Page.cpp -index 985a4517c725d4e07825c44dcee5116d461d42f9..cf72d447ecfa3846f11f87bb74b35e2225e7fb71 100644 +index e2974d0f1eed92b889b136fd1b0983c4cfa71c9e..caec5653de0fff9d0f85ab814524cb3868458e54 100644 --- a/Source/WebCore/page/Page.cpp +++ b/Source/WebCore/page/Page.cpp @@ -519,6 +519,45 @@ void Page::setOverrideViewportArguments(const std::optional& @@ -6582,7 +6575,7 @@ index 985a4517c725d4e07825c44dcee5116d461d42f9..cf72d447ecfa3846f11f87bb74b35e22 ScrollingCoordinator* Page::scrollingCoordinator() { if (!m_scrollingCoordinator && m_settings->scrollingCoordinatorEnabled()) { -@@ -3713,6 +3752,26 @@ void Page::setUseDarkAppearanceOverride(std::optional valueOverride) +@@ -3718,6 +3757,26 @@ void Page::setUseDarkAppearanceOverride(std::optional valueOverride) #endif } @@ -6610,10 +6603,10 @@ index 985a4517c725d4e07825c44dcee5116d461d42f9..cf72d447ecfa3846f11f87bb74b35e22 { if (insets == m_fullscreenInsets) diff --git a/Source/WebCore/page/Page.h b/Source/WebCore/page/Page.h -index 824020d9cf17b09db8a58466b9bc32e7da9734f5..dde1cb78d02c19691ddfe02d07d8045f12b982b8 100644 +index 1956781b21ddb0ceab3d5d46120e6b99ec93a5a5..9a340b30628ff4b3fb4a6bae12d24838d58da2e6 100644 --- a/Source/WebCore/page/Page.h +++ b/Source/WebCore/page/Page.h -@@ -312,6 +312,9 @@ public: +@@ -314,6 +314,9 @@ public: const std::optional& overrideViewportArguments() const { return m_overrideViewportArguments; } WEBCORE_EXPORT void setOverrideViewportArguments(const std::optional&); @@ -6623,7 +6616,7 @@ index 824020d9cf17b09db8a58466b9bc32e7da9734f5..dde1cb78d02c19691ddfe02d07d8045f static void refreshPlugins(bool reload); WEBCORE_EXPORT PluginData& pluginData(); void clearPluginData(); -@@ -373,6 +376,10 @@ public: +@@ -375,6 +378,10 @@ public: #if ENABLE(DRAG_SUPPORT) DragController& dragController() { return m_dragController.get(); } const DragController& dragController() const { return m_dragController.get(); } @@ -6634,7 +6627,7 @@ index 824020d9cf17b09db8a58466b9bc32e7da9734f5..dde1cb78d02c19691ddfe02d07d8045f #endif FocusController& focusController() const { return *m_focusController; } #if ENABLE(CONTEXT_MENUS) -@@ -543,6 +550,10 @@ public: +@@ -545,6 +552,10 @@ public: WEBCORE_EXPORT void effectiveAppearanceDidChange(bool useDarkAppearance, bool useElevatedUserInterfaceLevel); bool defaultUseDarkAppearance() const { return m_useDarkAppearance; } void setUseDarkAppearanceOverride(std::optional); @@ -6645,7 +6638,7 @@ index 824020d9cf17b09db8a58466b9bc32e7da9734f5..dde1cb78d02c19691ddfe02d07d8045f #if ENABLE(TEXT_AUTOSIZING) float textAutosizingWidth() const { return m_textAutosizingWidth; } -@@ -979,6 +990,11 @@ public: +@@ -981,6 +992,11 @@ public: WEBCORE_EXPORT void setInteractionRegionsEnabled(bool); #endif @@ -6657,7 +6650,7 @@ index 824020d9cf17b09db8a58466b9bc32e7da9734f5..dde1cb78d02c19691ddfe02d07d8045f #if ENABLE(DEVICE_ORIENTATION) && PLATFORM(IOS_FAMILY) DeviceOrientationUpdateProvider* deviceOrientationUpdateProvider() const { return m_deviceOrientationUpdateProvider.get(); } #endif -@@ -1115,6 +1131,9 @@ private: +@@ -1118,6 +1134,9 @@ private: #if ENABLE(DRAG_SUPPORT) UniqueRef m_dragController; @@ -6667,7 +6660,7 @@ index 824020d9cf17b09db8a58466b9bc32e7da9734f5..dde1cb78d02c19691ddfe02d07d8045f #endif std::unique_ptr m_focusController; #if ENABLE(CONTEXT_MENUS) -@@ -1196,6 +1215,8 @@ private: +@@ -1199,6 +1218,8 @@ private: bool m_useElevatedUserInterfaceLevel { false }; bool m_useDarkAppearance { false }; std::optional m_useDarkAppearanceOverride; @@ -6676,7 +6669,7 @@ index 824020d9cf17b09db8a58466b9bc32e7da9734f5..dde1cb78d02c19691ddfe02d07d8045f #if ENABLE(TEXT_AUTOSIZING) float m_textAutosizingWidth { 0 }; -@@ -1370,6 +1391,11 @@ private: +@@ -1373,6 +1394,11 @@ private: #endif std::optional m_overrideViewportArguments; @@ -6810,7 +6803,7 @@ index 11af362d3018851cb8258419f3e0d3e01ea369c0..9ec64d3c88bf37ad423aa613bae557d7 } diff --git a/Source/WebCore/page/csp/ContentSecurityPolicy.cpp b/Source/WebCore/page/csp/ContentSecurityPolicy.cpp -index bec95675125dc0993e1481871edb046d82dfbd98..7c0bc1cf3a9d9ec0378cc5e05089acd4009b58cd 100644 +index cce7a25b8c69999670a38a05a7ce4fbf94132634..0ad60e920e5bdb6c5de7518bfd4d3076d5a70e38 100644 --- a/Source/WebCore/page/csp/ContentSecurityPolicy.cpp +++ b/Source/WebCore/page/csp/ContentSecurityPolicy.cpp @@ -336,6 +336,8 @@ bool ContentSecurityPolicy::allowContentSecurityPolicySourceStarToMatchAnyProtoc @@ -7059,7 +7052,7 @@ index 39f37fc92f9be35cd3164b8a10b063fe270610ea..13523a3ca41e8ae264ba4b0d823a7220 }; diff --git a/Source/WebCore/platform/PlatformKeyboardEvent.h b/Source/WebCore/platform/PlatformKeyboardEvent.h -index deef18898ade8424c670fd809d04c448f5ab4558..52302ec6ebb1e760b5c87f1c344c17af81055699 100644 +index 4aa768e1c2a8da63004f34ccbf0d347b2484c37b..515c99ed21cde6c157bb9a1378a783727cffc6e7 100644 --- a/Source/WebCore/platform/PlatformKeyboardEvent.h +++ b/Source/WebCore/platform/PlatformKeyboardEvent.h @@ -134,6 +134,7 @@ namespace WebCore { @@ -7068,9 +7061,9 @@ index deef18898ade8424c670fd809d04c448f5ab4558..52302ec6ebb1e760b5c87f1c344c17af static int windowsKeyCodeForGdkKeyCode(unsigned); + static unsigned gdkKeyCodeForWindowsKeyCode(int); static String singleCharacterString(unsigned); - static bool modifiersContainCapsLock(unsigned); #endif -@@ -143,6 +144,7 @@ namespace WebCore { + +@@ -142,6 +143,7 @@ namespace WebCore { static String keyCodeForHardwareKeyCode(unsigned); static String keyIdentifierForWPEKeyCode(unsigned); static int windowsKeyCodeForWPEKeyCode(unsigned); @@ -7278,10 +7271,10 @@ index b60f9a64bacc8282860da6de299b75aeb295b9b5..55bd017c03c6478ca334bd5ef164160f namespace WebCore { diff --git a/Source/WebCore/platform/graphics/win/ComplexTextControllerUniscribe.cpp b/Source/WebCore/platform/graphics/win/ComplexTextControllerUniscribe.cpp -index 2a5c4edc93f19897648351181f4187b464ad1a62..32b74aadea83ce7f5ddb6010b45b901d34b0e870 100644 +index b6849ae2de8f035240920a3575d79b03d23f5ea9..6b62177a2789bc0e9cdb0f8421e0fb28e17e9a6f 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, +@@ -169,6 +169,33 @@ static Vector stringIndicesFromClusters(const Vector& clusters, return stringIndices; } @@ -7315,7 +7308,7 @@ index 2a5c4edc93f19897648351181f4187b464ad1a62..32b74aadea83ce7f5ddb6010b45b901d void ComplexTextController::collectComplexTextRunsForCharacters(const UChar* cp, unsigned stringLength, unsigned stringLocation, const Font* font) { if (!font) { -@@ -199,6 +226,8 @@ void ComplexTextController::collectComplexTextRunsForCharacters(const UChar* cp, +@@ -198,6 +225,8 @@ void ComplexTextController::collectComplexTextRunsForCharacters(const UChar* cp, } items.resize(numItems + 1); @@ -7325,21 +7318,20 @@ index 2a5c4edc93f19897648351181f4187b464ad1a62..32b74aadea83ce7f5ddb6010b45b901d // Determine the string for this item. const UChar* str = cp + items[i].iCharPos; diff --git a/Source/WebCore/platform/gtk/PlatformKeyboardEventGtk.cpp b/Source/WebCore/platform/gtk/PlatformKeyboardEventGtk.cpp -index 23f7caefeb0fdfd47d05b8bbc0f949d0b772dc15..d89d5395c7c5eddeaa3aebae8ae3fcc07964856e 100644 +index 62ff097c43f0fcf0ad4f25376da113de2f1754c6..49923d505d6d41c38520431a92dc905b2e608708 100644 --- a/Source/WebCore/platform/gtk/PlatformKeyboardEventGtk.cpp +++ b/Source/WebCore/platform/gtk/PlatformKeyboardEventGtk.cpp -@@ -37,8 +37,10 @@ +@@ -37,7 +37,9 @@ #include #include #include +#include #include - #include +#include namespace WebCore { -@@ -1302,6 +1304,246 @@ int PlatformKeyboardEvent::windowsKeyCodeForGdkKeyCode(unsigned keycode) +@@ -1301,6 +1303,246 @@ int PlatformKeyboardEvent::windowsKeyCodeForGdkKeyCode(unsigned keycode) } @@ -8212,10 +8204,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 20f53a73e854e739a3289af2ee8fa979b5397460..db0c94f1b37b7930e9c95b5677705eadca595ccc 100644 +index ba0203910f4fa63f5424f121d5ed9b77d5788565..3d9fb4367c482f3d15e18dfb70c3f477bb2b9232 100644 --- a/Source/WebCore/platform/network/NetworkStorageSession.h +++ b/Source/WebCore/platform/network/NetworkStorageSession.h -@@ -154,6 +154,8 @@ public: +@@ -158,6 +158,8 @@ public: NetworkingContext* context() const; #endif @@ -8225,7 +8217,7 @@ index 20f53a73e854e739a3289af2ee8fa979b5397460..db0c94f1b37b7930e9c95b5677705ead WEBCORE_EXPORT void setCookie(const Cookie&); WEBCORE_EXPORT void setCookies(const Vector&, const URL&, const URL& mainDocumentURL); diff --git a/Source/WebCore/platform/network/ResourceResponseBase.cpp b/Source/WebCore/platform/network/ResourceResponseBase.cpp -index 833d331c5d7f780dd4be21fa000ab19d196566e5..1c7269554100544db2b8754bcb8e41f591dddeec 100644 +index c5e76b6cbb06657e033af97f2d96cf80731bb499..564dd39db77cf22624996c46ea6ae96c67670e7f 100644 --- a/Source/WebCore/platform/network/ResourceResponseBase.cpp +++ b/Source/WebCore/platform/network/ResourceResponseBase.cpp @@ -74,6 +74,7 @@ ResourceResponseBase::ResourceResponseBase(std::optional> httpStatusCode; if (!httpStatusCode) diff --git a/Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm b/Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm -index 0143ce4b5cbccc652b8858f6611ef099a7bfee2c..14db22fab473f2926f9b23e0e4c119c69be82539 100644 +index fa98150c2de166d8637a931dba34218ea40fe582..dcfc225a2b224ca873e2ee4fcf334c0b3dc59e2c 100644 --- a/Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm +++ b/Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm -@@ -476,6 +476,22 @@ void NetworkStorageSession::setCookiesFromDOM(const URL& firstParty, const SameS - END_BLOCK_OBJC_EXCEPTIONS +@@ -539,6 +539,22 @@ bool NetworkStorageSession::setCookieFromDOM(const URL& firstParty, const SameSi + return false; } +void NetworkStorageSession::setCookiesFromResponse(const URL& firstParty, const SameSiteInfo& sameSiteInfo, const URL& url, const String& setCookieValue) @@ -8410,10 +8402,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 6f4684a843d58cb107030bc461767bc069fea0b9..ff4b6b3a1fbe4c41ba0bfb389d887ecba7af6ebd 100644 +index b96b847f80d6600830697ab5f334f657aab79a30..1b89eed6c572a04041354af3deabc3954482161d 100644 --- a/Source/WebCore/platform/network/curl/NetworkStorageSessionCurl.cpp +++ b/Source/WebCore/platform/network/curl/NetworkStorageSessionCurl.cpp -@@ -131,6 +131,12 @@ void NetworkStorageSession::setCookieAcceptPolicy(CookieAcceptPolicy policy) con +@@ -141,6 +141,12 @@ void NetworkStorageSession::setCookieAcceptPolicy(CookieAcceptPolicy policy) con cookieDatabase().setAcceptPolicy(policy); } @@ -8427,11 +8419,11 @@ index 6f4684a843d58cb107030bc461767bc069fea0b9..ff4b6b3a1fbe4c41ba0bfb389d887ecb { switch (cookieDatabase().acceptPolicy()) { diff --git a/Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp b/Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp -index 5b846eb656172e452909d1cb2766b93cabd431b0..235969dae4d2c605cb6883b57eb4977f83caaf52 100644 +index 7464b0fcd35df363dda1ade33d519cb3d5f17e46..442c65151fa3581e9f216af4a93cd8a88e078478 100644 --- a/Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp +++ b/Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp -@@ -409,6 +409,30 @@ void NetworkStorageSession::setCookie(const Cookie& cookie) - soup_cookie_jar_add_cookie(cookieStorage(), cookie.toSoupCookie()); +@@ -438,6 +438,30 @@ void NetworkStorageSession::replaceCookies(const Vector& cookies) + g_signal_emit(jar, signalId, 0); } +void NetworkStorageSession::setCookiesFromResponse(const URL& firstParty, const SameSiteInfo&, const URL& url, const String& setCookieValue) @@ -8528,7 +8520,7 @@ index 7bdb180c89bf3fe9d48098318d3b7503b8fd6279..296a3b2b82733b27272acb51ab4f883d if (!m_dragDataMap.isEmpty() || !m_platformDragData) return m_dragDataMap; diff --git a/Source/WebCore/platform/win/KeyEventWin.cpp b/Source/WebCore/platform/win/KeyEventWin.cpp -index 6350161d8c2cd0832f68883b98615e7c52630c75..f20f5c90459ec160e990eccf902cb0281a7e4526 100644 +index f997a64f68deca632435450869c1abc9c3c35ac2..79da1d419799e359c60f2346e1d3ac8a8be4e654 100644 --- a/Source/WebCore/platform/win/KeyEventWin.cpp +++ b/Source/WebCore/platform/win/KeyEventWin.cpp @@ -242,10 +242,16 @@ PlatformKeyboardEvent::PlatformKeyboardEvent(HWND, WPARAM code, LPARAM keyData, @@ -9080,10 +9072,10 @@ index 1d8488e0d36288e09cd5662bd7f770ade95dfee3..dee07f87b47d62d4ef8ede45824bdb2f WorkerOrWorkletGlobalScope& m_globalScope; }; diff --git a/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp b/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp -index 7d486b2de793d21d30f321d420a29f89baec6f44..633281c669a04ea82ec38498b6473e1b2b4b0a2a 100644 +index 2feb2c86099e21d95b9ceacc98c1f24047ae96a1..f025f529625e254db85fa6444f5a45e56c636bc0 100644 --- a/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp +++ b/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp -@@ -88,6 +88,8 @@ +@@ -93,6 +93,8 @@ #if PLATFORM(COCOA) #include @@ -9092,7 +9084,7 @@ index 7d486b2de793d21d30f321d420a29f89baec6f44..633281c669a04ea82ec38498b6473e1b #endif #if ENABLE(APPLE_PAY_REMOTE_UI) -@@ -1023,6 +1025,14 @@ void NetworkConnectionToWebProcess::clearPageSpecificData(PageIdentifier pageID) +@@ -1074,6 +1076,14 @@ void NetworkConnectionToWebProcess::clearPageSpecificData(PageIdentifier pageID) #endif } @@ -9108,10 +9100,10 @@ index 7d486b2de793d21d30f321d420a29f89baec6f44..633281c669a04ea82ec38498b6473e1b void NetworkConnectionToWebProcess::removeStorageAccessForFrame(FrameIdentifier frameID, PageIdentifier pageID) { diff --git a/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h b/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h -index 8f8404e972d83f10e7056e7e565444fa61525da6..b364a2d80ed81d690a6e290158e109fbaf20eff3 100644 +index 6cdb62c688cfa4b236532bf67e170589e5aafb44..fe833d3b25341ad55d31bb0ad9c884b8c0468d20 100644 --- a/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h +++ b/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h -@@ -315,6 +315,8 @@ private: +@@ -326,6 +326,8 @@ private: void clearPageSpecificData(WebCore::PageIdentifier); @@ -9121,10 +9113,10 @@ index 8f8404e972d83f10e7056e7e565444fa61525da6..b364a2d80ed81d690a6e290158e109fb void removeStorageAccessForFrame(WebCore::FrameIdentifier, WebCore::PageIdentifier); diff --git a/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in b/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in -index 86598367c83e5bf26908c356d40136bd10223e60..0b688299bbddee2839c5f8f2dea0222f13768603 100644 +index b2a9a1c442c28d46d1d5eb232e723be9d1ed5f97..64d1adee2004b879c07139e5540e5a483145f25b 100644 --- a/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in +++ b/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in -@@ -65,6 +65,8 @@ messages -> NetworkConnectionToWebProcess LegacyReceiver { +@@ -70,6 +70,8 @@ messages -> NetworkConnectionToWebProcess LegacyReceiver { ClearPageSpecificData(WebCore::PageIdentifier pageID); @@ -9134,10 +9126,10 @@ index 86598367c83e5bf26908c356d40136bd10223e60..0b688299bbddee2839c5f8f2dea0222f 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 8252b34563c547e9a5c3cb051b40944df4b34fcc..37a61cfde8908156ac743056ef40b8633a215014 100644 +index c5746d6c9453e77056944dd59236a9b061dc230e..8555f74f19b04d43f6a6a97bc2ba9ec7cfb9871b 100644 --- a/Source/WebKit/NetworkProcess/NetworkProcess.cpp +++ b/Source/WebKit/NetworkProcess/NetworkProcess.cpp -@@ -619,6 +619,12 @@ void NetworkProcess::registrableDomainsExemptFromWebsiteDataDeletion(PAL::Sessio +@@ -621,6 +621,12 @@ void NetworkProcess::registrableDomainsExemptFromWebsiteDataDeletion(PAL::Sessio completionHandler({ }); } @@ -9151,7 +9143,7 @@ index 8252b34563c547e9a5c3cb051b40944df4b34fcc..37a61cfde8908156ac743056ef40b863 void NetworkProcess::dumpResourceLoadStatistics(PAL::SessionID sessionID, CompletionHandler&& completionHandler) { diff --git a/Source/WebKit/NetworkProcess/NetworkProcess.h b/Source/WebKit/NetworkProcess/NetworkProcess.h -index 1012b158f53e77ab80b6a921290fb8c7bb976391..82bbe98a551f934faaf4cd665b898cfc1ebda480 100644 +index 4daaf8300203a6815d98ee24340cc6ebc9c03fa8..01e3f20ff8b1a37bfbce9942002fd4c7100672c8 100644 --- a/Source/WebKit/NetworkProcess/NetworkProcess.h +++ b/Source/WebKit/NetworkProcess/NetworkProcess.h @@ -37,6 +37,7 @@ @@ -9181,10 +9173,10 @@ index 1012b158f53e77ab80b6a921290fb8c7bb976391..82bbe98a551f934faaf4cd665b898cfc 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 1590992ea4d62ac5dd49ef2e29a980a3c028b343..ede7220f254538a870281b07e1673cd04dd44817 100644 +index 21a59cf46b16c6cd7f5a06476ddea0a28e052673..854c87669925ef9d2e572562df1f2ca19a1feb7f 100644 --- a/Source/WebKit/NetworkProcess/NetworkProcess.messages.in +++ b/Source/WebKit/NetworkProcess/NetworkProcess.messages.in -@@ -79,6 +79,8 @@ messages -> NetworkProcess LegacyReceiver { +@@ -77,6 +77,8 @@ messages -> NetworkProcess LegacyReceiver { PreconnectTo(PAL::SessionID sessionID, WebKit::WebPageProxyIdentifier webPageProxyID, WebCore::PageIdentifier webPageID, WebCore::ResourceRequest request, enum:uint8_t WebCore::StoredCredentialsPolicy storedCredentialsPolicy, std::optional isNavigatingToAppBoundDomain); @@ -9194,7 +9186,7 @@ index 1590992ea4d62ac5dd49ef2e29a980a3c028b343..ede7220f254538a870281b07e1673cd0 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 f25fbd4279dd7a331a2fd1c91154110e196684f3..f174ca2fe43edaa875b18a5d5b77942b9d468767 100644 +index 088ae72ade1ba0fd98b9e4c78e4489a58535983d..03b82d729d3ed9b15e008cd173c7020c9c99c369 100644 --- a/Source/WebKit/NetworkProcess/NetworkSession.h +++ b/Source/WebKit/NetworkProcess/NetworkSession.h @@ -204,6 +204,9 @@ public: @@ -9216,10 +9208,10 @@ index f25fbd4279dd7a331a2fd1c91154110e196684f3..f174ca2fe43edaa875b18a5d5b77942b HashSet> m_keptAliveLoads; diff --git a/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm b/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm -index 9ae812cfd5da2f6b6a6712c78e67a8a1c303633a..ff5119d65ed8f369b2c0f0763367697d3f8c1a07 100644 +index 5c915e87872f0b40924ee4032d532e00728d47f6..d221102880ea9cc7f1ef85e530ef89e39301a74b 100644 --- a/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm +++ b/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm -@@ -761,7 +761,7 @@ - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didRece +@@ -766,7 +766,7 @@ - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didRece if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]) { sessionCocoa->setClientAuditToken(challenge); @@ -9228,7 +9220,7 @@ index 9ae812cfd5da2f6b6a6712c78e67a8a1c303633a..ff5119d65ed8f369b2c0f0763367697d return completionHandler(NSURLSessionAuthChallengeUseCredential, [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust]); NSURLSessionTaskTransactionMetrics *metrics = task._incompleteTaskMetrics.transactionMetrics.lastObject; -@@ -1102,6 +1102,13 @@ ALLOW_DEPRECATED_DECLARATIONS_END +@@ -1107,6 +1107,13 @@ ALLOW_DEPRECATED_DECLARATIONS_END resourceResponse.setDeprecatedNetworkLoadMetrics(WebCore::copyTimingData(taskMetrics, networkDataTask->networkLoadMetrics())); @@ -9243,7 +9235,7 @@ index 9ae812cfd5da2f6b6a6712c78e67a8a1c303633a..ff5119d65ed8f369b2c0f0763367697d #if !LOG_DISABLED LOG(NetworkSession, "%llu didReceiveResponse completionHandler (%d)", taskIdentifier, policyAction); diff --git a/Source/WebKit/NetworkProcess/curl/NetworkDataTaskCurl.cpp b/Source/WebKit/NetworkProcess/curl/NetworkDataTaskCurl.cpp -index 784680cd200ebfa8b74e05aa02b25f71788b411c..dcf9a9d5a08bebe63e19beb801c8353c06c97184 100644 +index f9c7627a36bef332c19d102a6f88f11bdf9c6e3b..ac4a3a80f2dd4a3596b40d2c8dc40a264edfa29f 100644 --- a/Source/WebKit/NetworkProcess/curl/NetworkDataTaskCurl.cpp +++ b/Source/WebKit/NetworkProcess/curl/NetworkDataTaskCurl.cpp @@ -84,10 +84,18 @@ NetworkDataTaskCurl::NetworkDataTaskCurl(NetworkSession& session, NetworkDataTas @@ -9277,7 +9269,7 @@ index 784680cd200ebfa8b74e05aa02b25f71788b411c..dcf9a9d5a08bebe63e19beb801c8353c handleCookieHeaders(request.resourceRequest(), receivedResponse); -@@ -282,6 +291,36 @@ bool NetworkDataTaskCurl::shouldRedirectAsGET(const ResourceRequest& request, bo +@@ -289,6 +298,36 @@ bool NetworkDataTaskCurl::shouldRedirectAsGET(const ResourceRequest& request, bo return false; } @@ -9314,7 +9306,7 @@ index 784680cd200ebfa8b74e05aa02b25f71788b411c..dcf9a9d5a08bebe63e19beb801c8353c void NetworkDataTaskCurl::invokeDidReceiveResponse() { didReceiveResponse(ResourceResponse(m_response), NegotiatedLegacyTLS::No, PrivateRelayed::No, [this, protectedThis = Ref { *this }](PolicyAction policyAction) { -@@ -312,6 +351,8 @@ void NetworkDataTaskCurl::invokeDidReceiveResponse() +@@ -319,6 +358,8 @@ void NetworkDataTaskCurl::invokeDidReceiveResponse() downloadPtr->didCreateDestination(m_pendingDownloadLocation); if (m_curlRequest) m_curlRequest->completeDidReceiveResponse(); @@ -9323,7 +9315,7 @@ index 784680cd200ebfa8b74e05aa02b25f71788b411c..dcf9a9d5a08bebe63e19beb801c8353c break; } default: -@@ -395,6 +436,8 @@ void NetworkDataTaskCurl::willPerformHTTPRedirection() +@@ -402,6 +443,8 @@ void NetworkDataTaskCurl::willPerformHTTPRedirection() m_curlRequest->setUserPass(m_initialCredential.user(), m_initialCredential.password()); m_curlRequest->setAuthenticationScheme(ProtectionSpace::AuthenticationScheme::HTTPBasic); } @@ -9333,7 +9325,7 @@ index 784680cd200ebfa8b74e05aa02b25f71788b411c..dcf9a9d5a08bebe63e19beb801c8353c if (m_state != State::Suspended) { m_state = State::Suspended; diff --git a/Source/WebKit/NetworkProcess/curl/NetworkDataTaskCurl.h b/Source/WebKit/NetworkProcess/curl/NetworkDataTaskCurl.h -index 17131dda438f96bf4f9d9702248c5de61c51fc72..247605032eef3dcefe472f6fee413ad332c1e42f 100644 +index 04680300ab3122646a861b3f23276339e2fba170..27a3b0d27a2700fabbf36bac4972774baf069d92 100644 --- a/Source/WebKit/NetworkProcess/curl/NetworkDataTaskCurl.h +++ b/Source/WebKit/NetworkProcess/curl/NetworkDataTaskCurl.h @@ -28,6 +28,7 @@ @@ -9362,11 +9354,12 @@ index 17131dda438f96bf4f9d9702248c5de61c51fc72..247605032eef3dcefe472f6fee413ad3 + void invokeDidReceiveResponse(); - bool shouldRedirectAsGET(const WebCore::ResourceRequest&, bool crossOrigin); -@@ -111,6 +117,8 @@ private: - unsigned m_redirectCount { 0 }; + bool shouldStartHTTPRedirection(); +@@ -113,6 +119,9 @@ private: unsigned m_authFailureCount { 0 }; + bool m_allowOverwriteDownload { false }; ++ + std::optional m_dataURLResult; + FileSystem::PlatformFileHandle m_downloadDestinationFile { FileSystem::invalidPlatformFileHandle }; @@ -9408,7 +9401,7 @@ index 40e466a49926c304695e0e86c57fbfeef80ceec1..3210765c6a8327b17849530cf13808c1 } diff --git a/Source/WebKit/NetworkProcess/curl/WebSocketTaskCurl.h b/Source/WebKit/NetworkProcess/curl/WebSocketTaskCurl.h -index c2e60f5ec6766e485996764bc240c18e8e747d85..20eb908199ea8735d38dfb27985fa2f3f8136181 100644 +index c74bf9aec3de138ca91699b822e09a6243e3f229..df1a8367585e3f43c490880ebe08b95c892a3006 100644 --- a/Source/WebKit/NetworkProcess/curl/WebSocketTaskCurl.h +++ b/Source/WebKit/NetworkProcess/curl/WebSocketTaskCurl.h @@ -47,7 +47,7 @@ struct SessionSet; @@ -9417,7 +9410,7 @@ index c2e60f5ec6766e485996764bc240c18e8e747d85..20eb908199ea8735d38dfb27985fa2f3 public: - WebSocketTask(NetworkSocketChannel&, const WebCore::ResourceRequest&, const String& protocol); + WebSocketTask(NetworkSocketChannel&, const WebCore::ResourceRequest&, const String& protocol, bool ignoreCertificateErrors); - ~WebSocketTask(); + virtual ~WebSocketTask(); void sendString(const IPC::DataReference&, CompletionHandler&&); diff --git a/Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp b/Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp @@ -9792,10 +9785,10 @@ index 72ad2880160a374e8fa663e561d59becf9d2f36d..372ae6953199245fe4fc55a49813c7ca #endif }; diff --git a/Source/WebKit/Shared/WebCoreArgumentCoders.cpp b/Source/WebKit/Shared/WebCoreArgumentCoders.cpp -index fc2b1151f0f3ecc13d5baa9bb72e8401fd2193bf..891aeedde29470ce9c1289b1afc90e08e7929d6b 100644 +index 0bf360afe2dce36935f0f69f535962eb8f523410..6bfcddd278085cc24150af70852ee2140b5d67f4 100644 --- a/Source/WebKit/Shared/WebCoreArgumentCoders.cpp +++ b/Source/WebKit/Shared/WebCoreArgumentCoders.cpp -@@ -192,6 +192,10 @@ +@@ -193,6 +193,10 @@ #include #endif @@ -9807,10 +9800,10 @@ index fc2b1151f0f3ecc13d5baa9bb72e8401fd2193bf..891aeedde29470ce9c1289b1afc90e08 namespace IPC { diff --git a/Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in b/Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in -index 6cae10eef0c249e2f2bf4f5407d047b71c81a5fe..4a71dfdd2af716646f0ba2ccba6ee57b9c098fe2 100644 +index 41b78b16f26f9f41ef65697a14751a5503ebfafa..92690b48fa0ba61974fdc72976f0be4b884eef2a 100644 --- a/Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in +++ b/Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in -@@ -1929,6 +1929,9 @@ class WebCore::AuthenticationChallenge { +@@ -2320,6 +2320,9 @@ class WebCore::AuthenticationChallenge { class WebCore::DragData { #if PLATFORM(COCOA) String pasteboardName(); @@ -9820,7 +9813,7 @@ index 6cae10eef0c249e2f2bf4f5407d047b71c81a5fe..4a71dfdd2af716646f0ba2ccba6ee57b #endif WebCore::IntPoint clientPosition(); WebCore::IntPoint globalPosition(); -@@ -2427,6 +2430,7 @@ enum class WebCore::ResourceLoadPriority : uint8_t { +@@ -2826,6 +2829,7 @@ enum class WebCore::ResourceLoadPriority : uint8_t { AtomString m_httpStatusText; AtomString m_httpVersion; WebCore::HTTPHeaderMap m_httpHeaderFields; @@ -9942,7 +9935,7 @@ index 7840e34e303873e771150f242f57e621ebbb78a3..c3cea2e0506bcf5c25815b06d35dbdb5 const String& text() const { return m_text; } diff --git a/Source/WebKit/Shared/WebMouseEvent.h b/Source/WebKit/Shared/WebMouseEvent.h -index a7862db2df45ac3ab8ba5c7dee7d9d0c5641c27b..149d8cc4ef277ebdfc3bb27be7d52f5cd2baffa7 100644 +index d5f411e74ca6db9cdd9fcb6712f9ef7294dfde0e..a002b61520e52afb88bc3d2340e2010196860406 100644 --- a/Source/WebKit/Shared/WebMouseEvent.h +++ b/Source/WebKit/Shared/WebMouseEvent.h @@ -73,6 +73,7 @@ public: @@ -10236,7 +10229,7 @@ index 0000000000000000000000000000000000000000..789a0d7cf69704c8f665a9ed79348fbc + +} // namespace IPC diff --git a/Source/WebKit/Sources.txt b/Source/WebKit/Sources.txt -index b359f10f856e072ebeb2fe7f6f96c48400d77af3..f80cebede1fd176ba91879584b3b1dda2e004f62 100644 +index 2f1071128424ddcfe2ab04596f1cba63574b4ddf..00547e02e8b7cfadbb60947647dcb1ec0e2081ee 100644 --- a/Source/WebKit/Sources.txt +++ b/Source/WebKit/Sources.txt @@ -387,21 +387,26 @@ Shared/XR/XRDeviceProxy.cpp @@ -10263,19 +10256,19 @@ index b359f10f856e072ebeb2fe7f6f96c48400d77af3..f80cebede1fd176ba91879584b3b1dda UIProcess/ProvisionalFrameProxy.cpp UIProcess/ProvisionalPageProxy.cpp +UIProcess/RemoteInspectorPipe.cpp + UIProcess/RemotePageDrawingAreaProxy.cpp UIProcess/RemotePageProxy.cpp UIProcess/ResponsivenessTimer.cpp - UIProcess/SpeechRecognitionRemoteRealtimeMediaSource.cpp -@@ -444,6 +449,8 @@ UIProcess/WebOpenPanelResultListenerProxy.cpp +@@ -445,6 +450,8 @@ UIProcess/WebOpenPanelResultListenerProxy.cpp UIProcess/WebPageDiagnosticLoggingClient.cpp UIProcess/WebPageGroup.cpp UIProcess/WebPageInjectedBundleClient.cpp +UIProcess/WebPageInspectorEmulationAgent.cpp +UIProcess/WebPageInspectorInputAgent.cpp UIProcess/WebPageProxy.cpp + UIProcess/WebPageProxyMessageReceiverRegistration.cpp UIProcess/WebPasteboardProxy.cpp - UIProcess/WebPermissionControllerProxy.cpp -@@ -574,7 +581,11 @@ UIProcess/Inspector/WebInspectorUtilities.cpp +@@ -576,7 +583,11 @@ UIProcess/Inspector/WebInspectorUtilities.cpp UIProcess/Inspector/WebPageDebuggable.cpp UIProcess/Inspector/WebPageInspectorController.cpp @@ -10288,7 +10281,7 @@ index b359f10f856e072ebeb2fe7f6f96c48400d77af3..f80cebede1fd176ba91879584b3b1dda UIProcess/Media/AudioSessionRoutingArbitratorProxy.cpp UIProcess/Media/MediaUsageManager.cpp diff --git a/Source/WebKit/SourcesCocoa.txt b/Source/WebKit/SourcesCocoa.txt -index 0c05f4f5721c20da4e85d4bdf9dc7da98ae4686d..89218721d97cd8f62d85e7236923d1e3ec6c1a41 100644 +index 93c543428097c0f72625fe8dd0944220b7d63d21..cf38bb242c292f1d1e79db234941c0fbd3cbb046 100644 --- a/Source/WebKit/SourcesCocoa.txt +++ b/Source/WebKit/SourcesCocoa.txt @@ -258,6 +258,7 @@ UIProcess/API/Cocoa/_WKApplicationManifest.mm @@ -10299,7 +10292,7 @@ index 0c05f4f5721c20da4e85d4bdf9dc7da98ae4686d..89218721d97cd8f62d85e7236923d1e3 UIProcess/API/Cocoa/_WKContentRuleListAction.mm UIProcess/API/Cocoa/_WKContextMenuElementInfo.mm UIProcess/API/Cocoa/_WKCustomHeaderFields.mm @no-unify -@@ -434,6 +435,7 @@ UIProcess/Inspector/ios/WKInspectorHighlightView.mm +@@ -433,6 +434,7 @@ UIProcess/Inspector/ios/WKInspectorHighlightView.mm UIProcess/Inspector/ios/WKInspectorNodeSearchGestureRecognizer.mm UIProcess/Inspector/mac/RemoteWebInspectorUIProxyMac.mm @@ -10345,7 +10338,7 @@ index 31560deabc825bf5554a8f1fa913c225d35c349f..107736f9c12438af23b81e2208c90cdc UIProcess/gtk/WebPasteboardProxyGtk.cpp UIProcess/gtk/WebPopupMenuProxyGtk.cpp diff --git a/Source/WebKit/SourcesWPE.txt b/Source/WebKit/SourcesWPE.txt -index 44523cf874e1b24a6ccb988b0718ddc64c8e4216..12a48b0e3a952ed2f4767d659a02757765cfd9da 100644 +index dff682afe7c62277b2a93fca6d42a33faf104d43..78035018705d3a0e7ece7691561fb39d874c1ec1 100644 --- a/Source/WebKit/SourcesWPE.txt +++ b/Source/WebKit/SourcesWPE.txt @@ -92,6 +92,7 @@ Shared/glib/ProcessExecutablePathGLib.cpp @@ -10356,7 +10349,7 @@ index 44523cf874e1b24a6ccb988b0718ddc64c8e4216..12a48b0e3a952ed2f4767d659a027577 Shared/libwpe/NativeWebKeyboardEventLibWPE.cpp Shared/libwpe/NativeWebMouseEventLibWPE.cpp Shared/libwpe/NativeWebTouchEventLibWPE.cpp -@@ -128,6 +129,7 @@ UIProcess/API/glib/WebKitAuthenticationRequest.cpp @no-unify +@@ -131,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 @@ -10364,7 +10357,7 @@ index 44523cf874e1b24a6ccb988b0718ddc64c8e4216..12a48b0e3a952ed2f4767d659a027577 UIProcess/API/glib/WebKitContextMenuClient.cpp @no-unify UIProcess/API/glib/WebKitCookieManager.cpp @no-unify UIProcess/API/glib/WebKitCredential.cpp @no-unify -@@ -161,6 +163,7 @@ UIProcess/API/glib/WebKitOptionMenu.cpp @no-unify +@@ -164,6 +166,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 @@ -10372,7 +10365,7 @@ index 44523cf874e1b24a6ccb988b0718ddc64c8e4216..12a48b0e3a952ed2f4767d659a027577 UIProcess/API/glib/WebKitPolicyDecision.cpp @no-unify UIProcess/API/glib/WebKitPrivate.cpp @no-unify UIProcess/API/glib/WebKitProtocolHandler.cpp @no-unify -@@ -197,6 +200,7 @@ UIProcess/API/soup/HTTPCookieStoreSoup.cpp +@@ -200,6 +203,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 @@ -10380,7 +10373,7 @@ index 44523cf874e1b24a6ccb988b0718ddc64c8e4216..12a48b0e3a952ed2f4767d659a027577 UIProcess/API/wpe/WebKitInputMethodContextWPE.cpp @no-unify UIProcess/API/wpe/WebKitPopupMenu.cpp @no-unify UIProcess/API/wpe/WebKitRectangle.cpp @no-unify -@@ -217,6 +221,7 @@ UIProcess/Gamepad/libwpe/UIGamepadProviderLibWPE.cpp +@@ -220,6 +224,7 @@ UIProcess/Gamepad/libwpe/UIGamepadProviderLibWPE.cpp UIProcess/geoclue/GeoclueGeolocationProvider.cpp @@ -10388,7 +10381,7 @@ index 44523cf874e1b24a6ccb988b0718ddc64c8e4216..12a48b0e3a952ed2f4767d659a027577 UIProcess/glib/WebPageProxyGLib.cpp UIProcess/glib/WebProcessPoolGLib.cpp UIProcess/glib/WebProcessProxyGLib.cpp -@@ -245,6 +250,11 @@ UIProcess/linux/MemoryPressureMonitor.cpp +@@ -248,6 +253,11 @@ UIProcess/linux/MemoryPressureMonitor.cpp UIProcess/soup/WebProcessPoolSoup.cpp @@ -10400,7 +10393,7 @@ index 44523cf874e1b24a6ccb988b0718ddc64c8e4216..12a48b0e3a952ed2f4767d659a027577 UIProcess/wpe/WebPageProxyWPE.cpp WebProcess/GPU/graphics/gbm/RemoteGraphicsContextGLProxyGBM.cpp -@@ -267,6 +277,8 @@ WebProcess/WebCoreSupport/glib/WebEditorClientGLib.cpp +@@ -270,6 +280,8 @@ WebProcess/WebCoreSupport/glib/WebEditorClientGLib.cpp WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.cpp @@ -10457,7 +10450,7 @@ index dbbfea6be4b6f1ae3bd2070dc9b8e79fdbf28ff3..b7dd65cb00d64f67805597ba7a66f1a6 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 26d7b29d9feeaafee3523494549fb6bb42982de6..b2426464fabb164f1e758a9785752933cad2f123 100644 +index f3e3b7ef340958b5a46c9252ff63a140afc24e2c..4b516ac0840608638209705250d8bf7ed6509f09 100644 --- a/Source/WebKit/UIProcess/API/APIUIClient.h +++ b/Source/WebKit/UIProcess/API/APIUIClient.h @@ -112,6 +112,7 @@ public: @@ -10512,7 +10505,7 @@ index 026121d114c5fcad84c1396be8d692625beaa3bd..edd6e5cae033124c589959a42522fde0 } #endif diff --git a/Source/WebKit/UIProcess/API/C/WKPage.cpp b/Source/WebKit/UIProcess/API/C/WKPage.cpp -index e4e5c8bb40b1a0ce616e333dc1d7a8648e8e54a9..f9fb966b12cf518644b4fc68337de2978e208271 100644 +index d2190dbd578451401793938e1f875fce325cd870..6b96b50351d82e3de08c059ed48dc12bffc65a10 100644 --- a/Source/WebKit/UIProcess/API/C/WKPage.cpp +++ b/Source/WebKit/UIProcess/API/C/WKPage.cpp @@ -1764,6 +1764,13 @@ void WKPageSetPageUIClient(WKPageRef pageRef, const WKPageUIClientBase* wkClient @@ -10649,7 +10642,7 @@ index 24b33cf16d46efce11a30032925600b97e64c65d..422355368191b9189b6283338bea2244 /*! @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 be218806e63fe7d983576887ade68c139ffd5c17..85d2d3dc688a2d599b7319ef1d41648f3d0c677a 100644 +index 68b33e071dd563f5c87d85c356a120d96e595bcc..f83ec16472519cd3d0d0700ca395627533e7e70d 100644 --- a/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.h +++ b/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.h @@ -24,7 +24,6 @@ @@ -10660,7 +10653,7 @@ index be218806e63fe7d983576887ade68c139ffd5c17..85d2d3dc688a2d599b7319ef1d41648f #import #if __has_include() -@@ -117,6 +116,8 @@ WK_CLASS_AVAILABLE(macos(10.11), ios(9.0)) +@@ -120,6 +119,8 @@ WK_CLASS_AVAILABLE(macos(10.11), ios(9.0)) @property (nullable, nonatomic, copy) NSArray *proxyConfigurations NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(14.0), ios(17.0)); #endif @@ -10670,7 +10663,7 @@ index be218806e63fe7d983576887ade68c139ffd5c17..85d2d3dc688a2d599b7319ef1d41648f NS_ASSUME_NONNULL_END diff --git a/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm b/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm -index 3ef8f5dd6e42d6f21f5316aab17531f3f01e103a..661ed4f676dc4f6ff0f02aaa3fc67bc34583c4b4 100644 +index 4ff41ea6ecca17413404dda7e5a229019e3ea430..bbef2980091abd200ef8770075a5e03382ca3c44 100644 --- a/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm +++ b/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm @@ -50,6 +50,7 @@ @@ -11149,7 +11142,7 @@ index e994309b097c1b140abfa4373fd2fafee46c05ec..6e0cc677a3bf33683ae8c89d12a48191 #endif +int webkitWebContextExistingCount(); diff --git a/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp b/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp -index 170ae37cca09beccd488ba068bc124180eff089a..8aeb078de58606c10d814c6babe781f3f316ee47 100644 +index 755caa084856e52e2cbbfe02d3e438688b5097a4..6090f3f98e4d1e8f355e0a4eaf99c51c4ae4a8c9 100644 --- a/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp +++ b/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp @@ -34,6 +34,7 @@ @@ -11194,7 +11187,7 @@ index 170ae37cca09beccd488ba068bc124180eff089a..8aeb078de58606c10d814c6babe781f3 { SetForScope inFrameDisplayedGuard(m_webView->priv->inFrameDisplayed, true); for (const auto& callback : m_webView->priv->frameDisplayedCallbacks) { -@@ -579,7 +584,7 @@ static gboolean webkitWebViewDecidePolicy(WebKitWebView*, WebKitPolicyDecision* +@@ -591,7 +596,7 @@ static gboolean webkitWebViewDecidePolicy(WebKitWebView*, WebKitPolicyDecision* static gboolean webkitWebViewPermissionRequest(WebKitWebView*, WebKitPermissionRequest* request) { @@ -11203,7 +11196,7 @@ index 170ae37cca09beccd488ba068bc124180eff089a..8aeb078de58606c10d814c6babe781f3 if (WEBKIT_IS_POINTER_LOCK_PERMISSION_REQUEST(request)) { webkit_permission_request_allow(request); return TRUE; -@@ -1826,6 +1831,15 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass) +@@ -1838,6 +1843,15 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass) G_TYPE_BOOLEAN, 1, WEBKIT_TYPE_SCRIPT_DIALOG); @@ -11219,7 +11212,7 @@ index 170ae37cca09beccd488ba068bc124180eff089a..8aeb078de58606c10d814c6babe781f3 /** * WebKitWebView::decide-policy: * @web_view: the #WebKitWebView on which the signal is emitted -@@ -2624,6 +2638,23 @@ void webkitWebViewRunJavaScriptBeforeUnloadConfirm(WebKitWebView* webView, const +@@ -2636,6 +2650,23 @@ void webkitWebViewRunJavaScriptBeforeUnloadConfirm(WebKitWebView* webView, const webkit_script_dialog_unref(webView->priv->currentScriptDialog); } @@ -11381,10 +11374,10 @@ index 496079da90993ac37689b060b69ecd4a67c2b6a8..af30181ca922f16c0f6e245c70e5ce7d G_BEGIN_DECLS diff --git a/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp b/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp -index a5addd5fbd56aed81d24debddc19349562e44da2..b739b8ca0a383f103ba45dd68798d890d714e200 100644 +index 0c844b6d97e161bf0a5540814ff5eb52ad1ecff5..0290f997b83364bd93fa55ac4dafc9185aac1de5 100644 --- a/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp +++ b/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp -@@ -2776,6 +2776,11 @@ void webkitWebViewBaseResetClickCounter(WebKitWebViewBase* webkitWebViewBase) +@@ -2801,6 +2801,11 @@ void webkitWebViewBaseResetClickCounter(WebKitWebViewBase* webkitWebViewBase) #endif } @@ -11415,7 +11408,7 @@ index 1204b4342c1cf8d38d215c1c8628bd7eb1fbd415..8534e582f54a343dc3bf6e01b8e43270 + +WebKit::AcceleratedBackingStore* webkitWebViewBaseGetAcceleratedBackingStore(WebKitWebViewBase*); diff --git a/Source/WebKit/UIProcess/API/wpe/PageClientImpl.cpp b/Source/WebKit/UIProcess/API/wpe/PageClientImpl.cpp -index 6590c31e55d62eb3d4d042ac5178d914cd69b566..a89657ec499e5828de848b24be4298e7a8adac18 100644 +index 7a1548fcbe2667f71602bfa69cdd0b25fc7a6056..4d9927e2f1a4205c778ee3fb9d3e93dd98fc1db1 100644 --- a/Source/WebKit/UIProcess/API/wpe/PageClientImpl.cpp +++ b/Source/WebKit/UIProcess/API/wpe/PageClientImpl.cpp @@ -33,8 +33,11 @@ @@ -11439,7 +11432,7 @@ index 6590c31e55d62eb3d4d042ac5178d914cd69b566..a89657ec499e5828de848b24be4298e7 } void PageClientImpl::doneWithKeyEvent(const NativeWebKeyboardEvent&, bool) -@@ -433,4 +436,23 @@ WebKitWebResourceLoadManager* PageClientImpl::webResourceLoadManager() +@@ -432,4 +435,23 @@ WebKitWebResourceLoadManager* PageClientImpl::webResourceLoadManager() return m_view.webResourceLoadManager(); } @@ -11486,7 +11479,7 @@ index d14abff9ca046b2c3a1423c4a47341210b7198d1..842d95fa1ee1a65e4d5b01cb98f2dda9 }; diff --git a/Source/WebKit/UIProcess/API/wpe/WPEView.cpp b/Source/WebKit/UIProcess/API/wpe/WPEView.cpp -index 39e32588758eebf1a394f00b8d815c1ceba98d20..bcae16a025283ca1005362638b0481f3c356ac92 100644 +index d6f4b65c9dd7249d89d0ee56c556c8bd26b5a55a..e77f1530c94584fa260670e99b33cf91fc25bfa0 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 @@ -11780,10 +11773,10 @@ index e4b92ace1531090ae38a7aec3d3d4febf19aee84..43690f9ef4969a39084501613bfc00a7 + +cairo_surface_t* webkitWebViewBackendTakeScreenshot(WebKitWebViewBackend*); diff --git a/Source/WebKit/UIProcess/AuxiliaryProcessProxy.cpp b/Source/WebKit/UIProcess/AuxiliaryProcessProxy.cpp -index 51bfad7ce09b6f9c4f8920289192643fe6d0b1d5..c2689a013261b003e117e4a13350d8f1280cad99 100644 +index afae4930cd2c1b3deed49663bc9ac90b001f5275..e74252ef7a34f660ecd5089673e27b71633564dd 100644 --- a/Source/WebKit/UIProcess/AuxiliaryProcessProxy.cpp +++ b/Source/WebKit/UIProcess/AuxiliaryProcessProxy.cpp -@@ -126,7 +126,11 @@ void AuxiliaryProcessProxy::getLaunchOptions(ProcessLauncher::LaunchOptions& lau +@@ -127,7 +127,11 @@ void AuxiliaryProcessProxy::getLaunchOptions(ProcessLauncher::LaunchOptions& lau launchOptions.processCmdPrefix = String::fromUTF8(processCmdPrefix); #endif // ENABLE(DEVELOPER_MODE) && (PLATFORM(GTK) || PLATFORM(WPE)) @@ -11796,10 +11789,10 @@ index 51bfad7ce09b6f9c4f8920289192643fe6d0b1d5..c2689a013261b003e117e4a13350d8f1 platformGetLaunchOptions(launchOptions); } diff --git a/Source/WebKit/UIProcess/AuxiliaryProcessProxy.h b/Source/WebKit/UIProcess/AuxiliaryProcessProxy.h -index f0940730134daf39077279aaeaf280a24d7f5d72..3da3dc553d047a7db12533f9e98806151e373a27 100644 +index fd2864f487a76e38508c272ef78dcb6056ec034c..5d794b358a04cd21ee042c32ba53f6fded46c38e 100644 --- a/Source/WebKit/UIProcess/AuxiliaryProcessProxy.h +++ b/Source/WebKit/UIProcess/AuxiliaryProcessProxy.h -@@ -201,13 +201,16 @@ protected: +@@ -206,13 +206,16 @@ protected: static RefPtr fetchAudioComponentServerRegistrations(); #endif @@ -11962,7 +11955,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 4926c6695127a99ae1e7336f5ef2d58994657dff..21460d30906c41b04bc6e2c34af6b7761a50c485 100644 +index 7b4841ee8a15252d24fa7378a2005efb2db96f6f..d3eb7886316c7c1b45fb4673df15b7438249c65c 100644 --- a/Source/WebKit/UIProcess/Cocoa/UIDelegate.h +++ b/Source/WebKit/UIProcess/Cocoa/UIDelegate.h @@ -95,6 +95,7 @@ private: @@ -11982,7 +11975,7 @@ index 4926c6695127a99ae1e7336f5ef2d58994657dff..21460d30906c41b04bc6e2c34af6b776 bool webViewRunBeforeUnloadConfirmPanelWithMessageInitiatedByFrameCompletionHandler : 1; bool webViewRequestGeolocationPermissionForFrameDecisionHandler : 1; diff --git a/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm b/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm -index c078f11ea116bfff19a618171cb226df4882aeb9..84f8e7ab4d481ca4a9da29645aab1cec93ead92c 100644 +index 797397d5cba83e028502b875fa18564c79a472b9..d246954031787a4bcfb8edd1b76badbd2cce5b75 100644 --- a/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm +++ b/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm @@ -117,6 +117,7 @@ void UIDelegate::setDelegate(id delegate) @@ -11993,7 +11986,7 @@ index c078f11ea116bfff19a618171cb226df4882aeb9..84f8e7ab4d481ca4a9da29645aab1cec m_delegateMethods.webViewRequestStorageAccessPanelUnderFirstPartyCompletionHandler = [delegate respondsToSelector:@selector(_webView:requestStorageAccessPanelForDomain:underCurrentDomain:completionHandler:)]; m_delegateMethods.webViewRunBeforeUnloadConfirmPanelWithMessageInitiatedByFrameCompletionHandler = [delegate respondsToSelector:@selector(_webView:runBeforeUnloadConfirmPanelWithMessage:initiatedByFrame:completionHandler:)]; m_delegateMethods.webViewRequestGeolocationPermissionForOriginDecisionHandler = [delegate respondsToSelector:@selector(_webView:requestGeolocationPermissionForOrigin:initiatedByFrame:decisionHandler:)]; -@@ -424,6 +425,15 @@ void UIDelegate::UIClient::runJavaScriptPrompt(WebPageProxy& page, const WTF::St +@@ -427,6 +428,15 @@ void UIDelegate::UIClient::runJavaScriptPrompt(WebPageProxy& page, const WTF::St }).get()]; } @@ -12111,10 +12104,10 @@ index 71829d0d1b8d463a400fbbd158f0d24e87295d17..97edc0aa92e408470204cccc3d0f4ede #if ENABLE(ATTACHMENT_ELEMENT) diff --git a/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm b/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm -index fc6df7242ed1448978f646223ac63f8c6f9ade98..c9725c8238ab1f42dd52461903097add86b3f1cd 100644 +index f00d74b233277111e582e2f8a34123e3a75412f0..8c8e7e99372f671be9696e8673cec8c1576feffd 100644 --- a/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm +++ b/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm -@@ -455,7 +455,7 @@ ALLOW_DEPRECATED_DECLARATIONS_END +@@ -456,7 +456,7 @@ ALLOW_DEPRECATED_DECLARATIONS_END auto screenProperties = WebCore::collectScreenProperties(); parameters.screenProperties = WTFMove(screenProperties); #if PLATFORM(MAC) @@ -12123,7 +12116,7 @@ index fc6df7242ed1448978f646223ac63f8c6f9ade98..c9725c8238ab1f42dd52461903097add #endif #if (PLATFORM(IOS) || PLATFORM(VISION)) && HAVE(AGX_COMPILER_SERVICE) -@@ -727,8 +727,8 @@ void WebProcessPool::registerNotificationObservers() +@@ -737,8 +737,8 @@ void WebProcessPool::registerNotificationObservers() }]; m_scrollerStyleNotificationObserver = [[NSNotificationCenter defaultCenter] addObserverForName:NSPreferredScrollerStyleDidChangeNotification object:nil queue:[NSOperationQueue currentQueue] usingBlock:^(NSNotification *notification) { @@ -12291,7 +12284,7 @@ index d2b7ea6ee7c62ceba39098aad864b7c96e03e44c..3241006dee9b3e7d2ba9b4a6d15eabd2 } // namespace WebKit diff --git a/Source/WebKit/UIProcess/Downloads/DownloadProxy.cpp b/Source/WebKit/UIProcess/Downloads/DownloadProxy.cpp -index c92e9cc718afaab95d306c28ece0848dfc6e7155..8672527119c01b6f54e0fdf23fc95387d6f12231 100644 +index f7678d26a5576db91363b229df216f619895b4e5..9a74d7b9795819723a8ac45602435dc4ef9e3641 100644 --- a/Source/WebKit/UIProcess/Downloads/DownloadProxy.cpp +++ b/Source/WebKit/UIProcess/Downloads/DownloadProxy.cpp @@ -41,8 +41,10 @@ @@ -12330,7 +12323,7 @@ index c92e9cc718afaab95d306c28ece0848dfc6e7155..8672527119c01b6f54e0fdf23fc95387 m_downloadProxyMap.downloadFinished(*this); }); } else -@@ -166,6 +174,21 @@ void DownloadProxy::decideDestinationWithSuggestedFilename(const WebCore::Resour +@@ -163,6 +171,21 @@ void DownloadProxy::decideDestinationWithSuggestedFilename(const WebCore::Resour suggestedFilename = m_suggestedFilename; suggestedFilename = MIMETypeRegistry::appendFileExtensionIfNecessary(suggestedFilename, response.mimeType()); @@ -12352,7 +12345,7 @@ index c92e9cc718afaab95d306c28ece0848dfc6e7155..8672527119c01b6f54e0fdf23fc95387 m_client->decideDestinationWithSuggestedFilename(*this, response, ResourceResponseBase::sanitizeSuggestedFilename(suggestedFilename), [this, protectedThis = Ref { *this }, completionHandler = WTFMove(completionHandler)] (AllowOverwrite allowOverwrite, String destination) mutable { SandboxExtension::Handle sandboxExtensionHandle; if (!destination.isNull()) { -@@ -214,6 +237,8 @@ void DownloadProxy::didFinish() +@@ -211,6 +234,8 @@ void DownloadProxy::didFinish() updateQuarantinePropertiesIfPossible(); #endif m_client->didFinish(*this); @@ -12361,7 +12354,7 @@ index c92e9cc718afaab95d306c28ece0848dfc6e7155..8672527119c01b6f54e0fdf23fc95387 // This can cause the DownloadProxy object to be deleted. m_downloadProxyMap.downloadFinished(*this); -@@ -224,6 +249,8 @@ void DownloadProxy::didFail(const ResourceError& error, const IPC::DataReference +@@ -221,6 +246,8 @@ void DownloadProxy::didFail(const ResourceError& error, const IPC::DataReference m_legacyResumeData = createData(resumeData); m_client->didFail(*this, error, m_legacyResumeData.get()); @@ -12371,7 +12364,7 @@ index c92e9cc718afaab95d306c28ece0848dfc6e7155..8672527119c01b6f54e0fdf23fc95387 // This can cause the DownloadProxy object to be deleted. m_downloadProxyMap.downloadFinished(*this); diff --git a/Source/WebKit/UIProcess/Downloads/DownloadProxy.h b/Source/WebKit/UIProcess/Downloads/DownloadProxy.h -index 9b69cad753b5b2e3844caac57b44c067507e68e7..1e898d7311a2cb8cb6d9a4042f91f41c552dcea3 100644 +index 6ec99825d6c232c391986aed9099d0595857ce75..818341cf6549ffb68209c1472cc648395873dd6c 100644 --- a/Source/WebKit/UIProcess/Downloads/DownloadProxy.h +++ b/Source/WebKit/UIProcess/Downloads/DownloadProxy.h @@ -144,6 +144,7 @@ private: @@ -12383,10 +12376,10 @@ index 9b69cad753b5b2e3844caac57b44c067507e68e7..1e898d7311a2cb8cb6d9a4042f91f41c } // namespace WebKit diff --git a/Source/WebKit/UIProcess/DrawingAreaProxy.h b/Source/WebKit/UIProcess/DrawingAreaProxy.h -index 4c9a2f1e548f58da7a31f88f26fb9501d07c2282..cf853afd8a4b4ceaa19199c355231940ab893b54 100644 +index de6f4d3453e1e1625bad616a4def94c108afde41..71311fbefdf8ca10d145f79d0a4432f6a5acb765 100644 --- a/Source/WebKit/UIProcess/DrawingAreaProxy.h +++ b/Source/WebKit/UIProcess/DrawingAreaProxy.h -@@ -86,6 +86,7 @@ public: +@@ -87,6 +87,7 @@ public: const WebCore::IntSize& size() const { return m_size; } bool setSize(const WebCore::IntSize&, const WebCore::IntSize& scrollOffset = { }); @@ -12394,7 +12387,7 @@ index 4c9a2f1e548f58da7a31f88f26fb9501d07c2282..cf853afd8a4b4ceaa19199c355231940 #if USE(COORDINATED_GRAPHICS) || USE(TEXTURE_MAPPER) virtual void targetRefreshRateDidChange(unsigned) { } -@@ -160,6 +161,10 @@ private: +@@ -161,6 +162,10 @@ private: virtual void update(uint64_t /* backingStoreStateID */, UpdateInfo&&) { } virtual void exitAcceleratedCompositingMode(uint64_t /* backingStoreStateID */, UpdateInfo&&) { } #endif @@ -14538,10 +14531,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..1ce2f2699ff1fc01feda180db2071f75425e15ac +index 0000000000000000000000000000000000000000..db8531d153be488a63a4f261ab4d29b4da33b8eb --- /dev/null +++ b/Source/WebKit/UIProcess/InspectorPlaywrightAgent.cpp -@@ -0,0 +1,978 @@ +@@ -0,0 +1,984 @@ +/* + * Copyright (C) 2019 Microsoft Corporation. + * @@ -15294,7 +15287,13 @@ index 0000000000000000000000000000000000000000..1ce2f2699ff1fc01feda180db2071f75 + if (!callback->isActive()) + return; + auto cookies = JSON::ArrayOf::create(); ++ ++// Soup returns cookies in the reverse order. ++#if USE(SOUP) ++ for (const auto& cookie : makeReversedRange(allCookies)) ++#else + for (const auto& cookie : allCookies) ++#endif + cookies->addItem(buildObjectForCookie(cookie)); + callback->sendSuccess(WTFMove(cookies)); + }); @@ -15899,12 +15898,24 @@ index 0000000000000000000000000000000000000000..3c8fd0549f1847515d35092f0f49b060 +} // namespace WebKit + +#endif // ENABLE(FULLSCREEN_API) +diff --git a/Source/WebKit/UIProcess/ProvisionalFrameProxy.cpp b/Source/WebKit/UIProcess/ProvisionalFrameProxy.cpp +index c3e89b97b75df7a5d8cddd917035236b166ac067..595880ec060679d876a556b2d39875ae18185ba3 100644 +--- a/Source/WebKit/UIProcess/ProvisionalFrameProxy.cpp ++++ b/Source/WebKit/UIProcess/ProvisionalFrameProxy.cpp +@@ -25,6 +25,7 @@ + + #include "config.h" + #include "ProvisionalFrameProxy.h" ++#include "WebFrameProxy.h" + + #include "VisitedLinkStore.h" + #include "WebFrameProxy.h" diff --git a/Source/WebKit/UIProcess/RemoteInspectorPipe.cpp b/Source/WebKit/UIProcess/RemoteInspectorPipe.cpp new file mode 100644 -index 0000000000000000000000000000000000000000..dd8b28e692dca4078eb710b2a97e61716126a4cb +index 0000000000000000000000000000000000000000..967d6e05836be7e46c8aecfd4c3243bb9f422b96 --- /dev/null +++ b/Source/WebKit/UIProcess/RemoteInspectorPipe.cpp -@@ -0,0 +1,224 @@ +@@ -0,0 +1,225 @@ +/* + * Copyright (C) 2019 Microsoft Corporation. + * @@ -16034,7 +16045,8 @@ index 0000000000000000000000000000000000000000..dd8b28e692dca4078eb710b2a97e6171 + void sendMessageToFrontend(const String& message) override + { + m_senderQueue->dispatch([message = message.isolatedCopy()]() { -+ WriteBytes(message.ascii().data(), message.length()); ++ auto utf8 = message.utf8(); ++ WriteBytes(utf8.data(), utf8.length()); + WriteBytes("\0", 1); + }); + } @@ -16201,7 +16213,7 @@ index 0000000000000000000000000000000000000000..6d04f9290135069359ce6bf872654648 + +#endif // ENABLE(REMOTE_INSPECTOR) diff --git a/Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteLayerTreeEventDispatcher.h b/Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteLayerTreeEventDispatcher.h -index 37cced36ddb5c388ab8096938688355f00d8a4cf..77406c2aa896638a1ee0cb4a3e6f3ee0463eebd6 100644 +index f8c06bc779b6be310018840147a044b7c34fed3c..0c35907c6d0e0d2c3bba1f40b2ef59fb52f9761f 100644 --- a/Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteLayerTreeEventDispatcher.h +++ b/Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteLayerTreeEventDispatcher.h @@ -39,6 +39,11 @@ @@ -16216,36 +16228,11 @@ index 37cced36ddb5c388ab8096938688355f00d8a4cf..77406c2aa896638a1ee0cb4a3e6f3ee0 namespace WebCore { class PlatformWheelEvent; -@@ -84,10 +89,10 @@ public: - void renderingUpdateComplete(); - - private: -- OptionSet determineWheelEventProcessing(const WebCore::PlatformWheelEvent&, WebCore::RectEdges rubberBandableEdges); -+ OptionSet determineWheelEventProcessing(const WebCore::PlatformWheelEvent&, WebCore::RectEdges rubberBandableEdges); - -- void scrollingThreadHandleWheelEvent(const WebWheelEvent&, RectEdges rubberBandableEdges); -- WebCore::WheelEventHandlingResult internalHandleWheelEvent(const WebCore::PlatformWheelEvent&, OptionSet); -+ void scrollingThreadHandleWheelEvent(const WebWheelEvent&, WebCore::RectEdges rubberBandableEdges); -+ WebCore::WheelEventHandlingResult internalHandleWheelEvent(const WebCore::PlatformWheelEvent&, OptionSet); - - WebCore::PlatformWheelEvent filteredWheelEvent(const WebCore::PlatformWheelEvent&); - -@@ -96,8 +101,8 @@ private: - void wheelEventHysteresisUpdated(PAL::HysteresisState); - - void willHandleWheelEvent(const WebWheelEvent&); -- void continueWheelEventHandling(WheelEventHandlingResult); -- void wheelEventWasHandledByScrollingThread(WheelEventHandlingResult); -+ void continueWheelEventHandling(WebCore::WheelEventHandlingResult); -+ void wheelEventWasHandledByScrollingThread(WebCore::WheelEventHandlingResult); - - DisplayLink* displayLink() const; - diff --git a/Source/WebKit/UIProcess/RemotePageProxy.cpp b/Source/WebKit/UIProcess/RemotePageProxy.cpp -index 78dda50156ac88126d886ff004042ac7233ba88c..518f78cfdecd6148ba834c1164e7f47e21f580e8 100644 +index 9d2b760c27a34ca42526011df5ab2fbfb52245d2..cb8b85279f558c8a7957de7f5422dcc8261643c9 100644 --- a/Source/WebKit/UIProcess/RemotePageProxy.cpp +++ b/Source/WebKit/UIProcess/RemotePageProxy.cpp -@@ -35,6 +35,7 @@ +@@ -37,6 +37,7 @@ #include "WebPageProxyMessages.h" #include "WebProcessMessages.h" #include "WebProcessProxy.h" @@ -16254,7 +16241,7 @@ index 78dda50156ac88126d886ff004042ac7233ba88c..518f78cfdecd6148ba834c1164e7f47e namespace WebKit { diff --git a/Source/WebKit/UIProcess/WebContextMenuProxy.cpp b/Source/WebKit/UIProcess/WebContextMenuProxy.cpp -index a57f299ce89dbef91ccb41f890cc29a29323e9e4..b0ed73516ea728c2a1e9eb7d39161e665b21204d 100644 +index 2c36e80c79519b09f1969701dbd8c712b50089de..b6a2e3dd03496a57238e7381880ad2f78d8f4b72 100644 --- a/Source/WebKit/UIProcess/WebContextMenuProxy.cpp +++ b/Source/WebKit/UIProcess/WebContextMenuProxy.cpp @@ -33,6 +33,7 @@ @@ -16278,7 +16265,7 @@ index 2071f653d6fd7413dd5336b85d02c6a92cab68b2..af9409c0adfc97a60d4ed789999310a7 WebPageProxy* page() const { return m_page.get(); } diff --git a/Source/WebKit/UIProcess/WebFrameProxy.cpp b/Source/WebKit/UIProcess/WebFrameProxy.cpp -index 3fc982f847914dc86ad74be5ccd8015d8737e942..5a3c75d2a2ef3bb66b313ceb014eec8b71a15f9c 100644 +index 0b8c3ebdb972da482164cea082dd79b0878feed7..85e913d14c44a2cdcdc5b4834d1523026b2c60d0 100644 --- a/Source/WebKit/UIProcess/WebFrameProxy.cpp +++ b/Source/WebKit/UIProcess/WebFrameProxy.cpp @@ -30,6 +30,7 @@ @@ -16288,8 +16275,8 @@ index 3fc982f847914dc86ad74be5ccd8015d8737e942..5a3c75d2a2ef3bb66b313ceb014eec8b +#include "FormDataReference.h" #include "FrameTreeCreationParameters.h" #include "FrameTreeNodeData.h" - #include "MessageSenderInlines.h" -@@ -38,6 +39,7 @@ + #include "LoadedWebArchive.h" +@@ -41,6 +42,7 @@ #include "RemotePageProxy.h" #include "WebFramePolicyListenerProxy.h" #include "WebNavigationState.h" @@ -16297,6 +16284,26 @@ index 3fc982f847914dc86ad74be5ccd8015d8737e942..5a3c75d2a2ef3bb66b313ceb014eec8b #include "WebPageMessages.h" #include "WebPageProxy.h" #include "WebPageProxyMessages.h" +diff --git a/Source/WebKit/UIProcess/WebNavigationState.h b/Source/WebKit/UIProcess/WebNavigationState.h +index 74fd2c3075956a4c05ae4c3c4b7c1c2505b27c19..5a7009ad97c1694b9129c21f9086d4c937b422fa 100644 +--- a/Source/WebKit/UIProcess/WebNavigationState.h ++++ b/Source/WebKit/UIProcess/WebNavigationState.h +@@ -29,6 +29,7 @@ + #include + #include + #include ++#include "WebPageProxy.h" + + namespace API { + class Navigation; +@@ -43,7 +44,6 @@ enum class FrameLoadType : uint8_t; + + namespace WebKit { + +-class WebPageProxy; + class WebBackForwardListItem; + + class WebNavigationState : public CanMakeWeakPtr { diff --git a/Source/WebKit/UIProcess/WebPageInspectorEmulationAgent.cpp b/Source/WebKit/UIProcess/WebPageInspectorEmulationAgent.cpp new file mode 100644 index 0000000000000000000000000000000000000000..e83fdca27ddeeb90df68f96a23f992d7d7602dff @@ -16964,7 +16971,7 @@ index 0000000000000000000000000000000000000000..3e87bf40ced2301f4fb145c6cb31f2cf + +} // namespace WebKit diff --git a/Source/WebKit/UIProcess/WebPageProxy.cpp b/Source/WebKit/UIProcess/WebPageProxy.cpp -index 2c6fb389f7d540c25ad8bed506d96a300b3945de..b4a9f39026fcf60ece174751c21888f99cc01906 100644 +index ce864e1c97baa224614649b21702ef7e6fc5a96e..03b2367cd95bd4e4631d4239f9787c77a18e158d 100644 --- a/Source/WebKit/UIProcess/WebPageProxy.cpp +++ b/Source/WebKit/UIProcess/WebPageProxy.cpp @@ -169,12 +169,14 @@ @@ -17021,10 +17028,10 @@ index 2c6fb389f7d540c25ad8bed506d96a300b3945de..b4a9f39026fcf60ece174751c21888f9 DEFINE_DEBUG_ONLY_GLOBAL(WTF::RefCountedLeakCounter, webPageProxyCounter, ("WebPageProxy")); class StorageRequests { -@@ -746,6 +756,10 @@ WebPageProxy::~WebPageProxy() - if (m_preferences->mediaSessionCoordinatorEnabled()) - GroupActivitiesSessionNotifier::sharedNotifier().removeWebPage(*this); - #endif +@@ -749,6 +759,10 @@ WebPageProxy::~WebPageProxy() + + internals().remotePageProxyInOpenerProcess = nullptr; + internals().openedRemotePageProxies.clear(); + +#if PLATFORM(COCOA) + releaseInspectorDragPasteboard(); @@ -17032,7 +17039,7 @@ index 2c6fb389f7d540c25ad8bed506d96a300b3945de..b4a9f39026fcf60ece174751c21888f9 } void WebPageProxy::addAllMessageReceivers() -@@ -1185,6 +1199,7 @@ void WebPageProxy::finishAttachingToWebProcess(ProcessLaunchReason reason) +@@ -1198,6 +1212,7 @@ void WebPageProxy::finishAttachingToWebProcess(ProcessLaunchReason reason) internals().pageLoadState.didSwapWebProcesses(); if (reason != ProcessLaunchReason::InitialProcess) m_drawingArea->waitForBackingStoreUpdateOnNextPaint(); @@ -17040,7 +17047,7 @@ index 2c6fb389f7d540c25ad8bed506d96a300b3945de..b4a9f39026fcf60ece174751c21888f9 } void WebPageProxy::didAttachToRunningProcess() -@@ -1193,7 +1208,7 @@ void WebPageProxy::didAttachToRunningProcess() +@@ -1206,7 +1221,7 @@ void WebPageProxy::didAttachToRunningProcess() #if ENABLE(FULLSCREEN_API) ASSERT(!m_fullScreenManager); @@ -17049,7 +17056,7 @@ index 2c6fb389f7d540c25ad8bed506d96a300b3945de..b4a9f39026fcf60ece174751c21888f9 #endif #if ENABLE(VIDEO_PRESENTATION_MODE) ASSERT(!m_playbackSessionManager); -@@ -1577,6 +1592,21 @@ WebProcessProxy& WebPageProxy::ensureRunningProcess() +@@ -1590,6 +1605,21 @@ WebProcessProxy& WebPageProxy::ensureRunningProcess() return m_process; } @@ -17071,7 +17078,7 @@ index 2c6fb389f7d540c25ad8bed506d96a300b3945de..b4a9f39026fcf60ece174751c21888f9 RefPtr WebPageProxy::loadRequest(ResourceRequest&& request, ShouldOpenExternalURLsPolicy shouldOpenExternalURLsPolicy, API::Object* userData) { if (m_isClosed) -@@ -2137,6 +2167,32 @@ void WebPageProxy::setControlledByAutomation(bool controlled) +@@ -2150,6 +2180,32 @@ void WebPageProxy::setControlledByAutomation(bool controlled) websiteDataStore().networkProcess().send(Messages::NetworkProcess::SetSessionIsControlledByAutomation(m_websiteDataStore->sessionID(), m_controlledByAutomation), 0); } @@ -17104,7 +17111,7 @@ index 2c6fb389f7d540c25ad8bed506d96a300b3945de..b4a9f39026fcf60ece174751c21888f9 void WebPageProxy::createInspectorTarget(const String& targetId, Inspector::InspectorTargetType type) { MESSAGE_CHECK(m_process, !targetId.isEmpty()); -@@ -2373,6 +2429,25 @@ void WebPageProxy::updateActivityState(OptionSet flagsToUpdate) +@@ -2386,6 +2442,25 @@ void WebPageProxy::updateActivityState(OptionSet flagsToUpdate) { bool wasVisible = isViewVisible(); internals().activityState.remove(flagsToUpdate); @@ -17130,7 +17137,7 @@ index 2c6fb389f7d540c25ad8bed506d96a300b3945de..b4a9f39026fcf60ece174751c21888f9 if (flagsToUpdate & ActivityState::IsFocused && pageClient().isViewFocused()) internals().activityState.add(ActivityState::IsFocused); if (flagsToUpdate & ActivityState::WindowIsActive && pageClient().isViewWindowActive()) -@@ -3058,6 +3133,8 @@ void WebPageProxy::performDragControllerAction(DragControllerAction action, Drag +@@ -3071,6 +3146,8 @@ void WebPageProxy::performDragControllerAction(DragControllerAction action, Drag { if (!hasRunningProcess()) return; @@ -17139,7 +17146,7 @@ index 2c6fb389f7d540c25ad8bed506d96a300b3945de..b4a9f39026fcf60ece174751c21888f9 #if PLATFORM(GTK) UNUSED_PARAM(dragStorageName); UNUSED_PARAM(sandboxExtensionHandle); -@@ -3068,6 +3145,8 @@ void WebPageProxy::performDragControllerAction(DragControllerAction action, Drag +@@ -3081,6 +3158,8 @@ void WebPageProxy::performDragControllerAction(DragControllerAction action, Drag m_process->assumeReadAccessToBaseURL(*this, url); ASSERT(dragData.platformData()); @@ -17148,7 +17155,7 @@ index 2c6fb389f7d540c25ad8bed506d96a300b3945de..b4a9f39026fcf60ece174751c21888f9 send(Messages::WebPage::PerformDragControllerAction(action, dragData.clientPosition(), dragData.globalPosition(), dragData.draggingSourceOperationMask(), *dragData.platformData(), dragData.flags())); #else send(Messages::WebPage::PerformDragControllerAction(action, dragData, sandboxExtensionHandle, sandboxExtensionsForUpload)); -@@ -3083,18 +3162,41 @@ void WebPageProxy::didPerformDragControllerAction(std::optional dragOperationMask) { if (!hasRunningProcess()) -@@ -3103,6 +3205,24 @@ void WebPageProxy::dragEnded(const IntPoint& clientPosition, const IntPoint& glo +@@ -3116,6 +3218,24 @@ void WebPageProxy::dragEnded(const IntPoint& clientPosition, const IntPoint& glo setDragCaretRect({ }); } @@ -17218,7 +17225,7 @@ index 2c6fb389f7d540c25ad8bed506d96a300b3945de..b4a9f39026fcf60ece174751c21888f9 void WebPageProxy::didPerformDragOperation(bool handled) { pageClient().didPerformDragOperation(handled); -@@ -3115,6 +3235,16 @@ void WebPageProxy::didStartDrag() +@@ -3128,6 +3248,16 @@ void WebPageProxy::didStartDrag() discardQueuedMouseEvents(); send(Messages::WebPage::DidStartDrag()); @@ -17235,7 +17242,7 @@ index 2c6fb389f7d540c25ad8bed506d96a300b3945de..b4a9f39026fcf60ece174751c21888f9 } void WebPageProxy::dragCancelled() -@@ -3229,17 +3359,39 @@ void WebPageProxy::processNextQueuedMouseEvent() +@@ -3245,17 +3375,39 @@ void WebPageProxy::processNextQueuedMouseEvent() m_process->startResponsivenessTimer(); } @@ -17282,7 +17289,7 @@ index 2c6fb389f7d540c25ad8bed506d96a300b3945de..b4a9f39026fcf60ece174751c21888f9 } void WebPageProxy::doAfterProcessingAllPendingMouseEvents(WTF::Function&& action) -@@ -3387,6 +3539,8 @@ void WebPageProxy::wheelEventHandlingCompleted(bool wasHandled) +@@ -3408,6 +3560,8 @@ void WebPageProxy::wheelEventHandlingCompleted(bool wasHandled) if (auto* automationSession = process().processPool().automationSession()) automationSession->wheelEventsFlushedForPage(*this); @@ -17291,7 +17298,7 @@ index 2c6fb389f7d540c25ad8bed506d96a300b3945de..b4a9f39026fcf60ece174751c21888f9 } void WebPageProxy::cacheWheelEventScrollingAccelerationCurve(const NativeWebWheelEvent& nativeWheelEvent) -@@ -3510,7 +3664,7 @@ static TrackingType mergeTrackingTypes(TrackingType a, TrackingType b) +@@ -3531,7 +3685,7 @@ static TrackingType mergeTrackingTypes(TrackingType a, TrackingType b) void WebPageProxy::updateTouchEventTracking(const WebTouchEvent& touchStartEvent) { @@ -17300,7 +17307,7 @@ index 2c6fb389f7d540c25ad8bed506d96a300b3945de..b4a9f39026fcf60ece174751c21888f9 for (auto& touchPoint : touchStartEvent.touchPoints()) { auto location = touchPoint.location(); auto update = [this, location](TrackingType& trackingType, EventTrackingRegions::EventType eventType) { -@@ -3931,6 +4085,8 @@ void WebPageProxy::receivedNavigationPolicyDecision(WebProcessProxy& sourceProce +@@ -3952,6 +4106,8 @@ void WebPageProxy::receivedNavigationPolicyDecision(WebProcessProxy& processNavi if (policyAction != PolicyAction::Use || (!preferences().siteIsolationEnabled() && !frame.isMainFrame()) || !navigation) { @@ -17309,7 +17316,7 @@ index 2c6fb389f7d540c25ad8bed506d96a300b3945de..b4a9f39026fcf60ece174751c21888f9 receivedPolicyDecision(policyAction, navigation, navigation->websitePolicies(), WTFMove(navigationAction), WTFMove(sender), WillContinueLoadInNewProcess::No, std::nullopt); return; } -@@ -4003,6 +4159,7 @@ void WebPageProxy::receivedNavigationPolicyDecision(WebProcessProxy& sourceProce +@@ -4044,6 +4200,7 @@ void WebPageProxy::receivedNavigationPolicyDecision(WebProcessProxy& processNavi void WebPageProxy::receivedPolicyDecision(PolicyAction action, API::Navigation* navigation, RefPtr&& websitePolicies, std::variant, Ref>&& navigationActionOrResponse, Ref&& sender, WillContinueLoadInNewProcess willContinueLoadInNewProcess, std::optional sandboxExtensionHandle) { @@ -17317,7 +17324,7 @@ index 2c6fb389f7d540c25ad8bed506d96a300b3945de..b4a9f39026fcf60ece174751c21888f9 if (!hasRunningProcess()) { sender->send(PolicyDecision { sender->identifier(), isNavigatingToAppBoundDomain() }); return; -@@ -4860,6 +5017,11 @@ void WebPageProxy::pageScaleFactorDidChange(double scaleFactor) +@@ -4896,6 +5053,11 @@ void WebPageProxy::pageScaleFactorDidChange(double scaleFactor) m_pageScaleFactor = scaleFactor; } @@ -17329,7 +17336,7 @@ index 2c6fb389f7d540c25ad8bed506d96a300b3945de..b4a9f39026fcf60ece174751c21888f9 void WebPageProxy::pluginScaleFactorDidChange(double pluginScaleFactor) { MESSAGE_CHECK(m_process, scaleFactorIsValid(pluginScaleFactor)); -@@ -5345,6 +5507,7 @@ void WebPageProxy::didDestroyNavigationShared(Ref&& process, ui +@@ -5383,6 +5545,7 @@ void WebPageProxy::didDestroyNavigationShared(Ref&& process, ui PageClientProtector protector(pageClient()); m_navigationState->didDestroyNavigation(process->coreProcessIdentifier(), navigationID); @@ -17337,7 +17344,7 @@ index 2c6fb389f7d540c25ad8bed506d96a300b3945de..b4a9f39026fcf60ece174751c21888f9 } void WebPageProxy::didStartProvisionalLoadForFrame(FrameIdentifier frameID, FrameInfoData&& frameInfo, ResourceRequest&& request, uint64_t navigationID, URL&& url, URL&& unreachableURL, const UserData& userData) -@@ -5573,6 +5736,8 @@ void WebPageProxy::didFailProvisionalLoadForFrameShared(Ref&& p +@@ -5615,6 +5778,8 @@ void WebPageProxy::didFailProvisionalLoadForFrameShared(Ref&& p m_failingProvisionalLoadURL = { }; @@ -17346,23 +17353,23 @@ index 2c6fb389f7d540c25ad8bed506d96a300b3945de..b4a9f39026fcf60ece174751c21888f9 // 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; -@@ -6165,7 +6330,14 @@ void WebPageProxy::decidePolicyForNavigationActionAsync(IPC::Connection& connect +@@ -6215,7 +6380,14 @@ void WebPageProxy::decidePolicyForNavigationActionAsync(IPC::Connection& connect { RefPtr frame = WebFrameProxy::webFrame(frameID); MESSAGE_CHECK_BASE(frame, &connection); -- decidePolicyForNavigationActionAsyncShared(Ref { frame->process() }, internals().webPageID, frameID, WTFMove(frameInfo), identifier, navigationID, WTFMove(navigationActionData), WTFMove(originatingFrameInfo), originatingPageID, originalRequest, WTFMove(request), WTFMove(requestBody), WTFMove(redirectResponse), listenerID); +- decidePolicyForNavigationActionAsyncShared(Ref { process() }, internals().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 }, 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(Ref { frame->process() }, internals().webPageID, frameID, WTFMove(frameInfo), identifier, navigationID, WTFMove(navigationActionData), WTFMove(originatingFrameInfo), originatingPageID, originalRequest, WTFMove(request), WTFMove(requestBody), WTFMove(redirectResponse), listenerID); ++ decidePolicyForNavigationActionAsyncShared(Ref { process() }, internals().webPageID, frameID, WTFMove(frameInfo), identifier, navigationID, WTFMove(navigationActionData), WTFMove(originatingFrameInfo), originatingPageID, originalRequest, WTFMove(request), WTFMove(requestBody), WTFMove(redirectResponse), listenerID); + }); + } else { -+ decidePolicyForNavigationActionAsyncShared(Ref { frame->process() }, internals().webPageID, frameID, WTFMove(frameInfo), identifier, navigationID, WTFMove(navigationActionData), WTFMove(originatingFrameInfo), originatingPageID, originalRequest, WTFMove(request), WTFMove(requestBody), WTFMove(redirectResponse), listenerID); ++ decidePolicyForNavigationActionAsyncShared(Ref { process() }, internals().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, WebCore::PolicyCheckIdentifier identifier, uint64_t navigationID, NavigationActionData&& navigationActionData, FrameInfoData&& originatingFrameInfo, std::optional originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&& request, IPC::FormDataReference&& requestBody, WebCore::ResourceResponse&& redirectResponse, uint64_t listenerID) -@@ -6763,6 +6935,7 @@ void WebPageProxy::createNewPage(FrameInfoData&& originatingFrameInfoData, WebPa +@@ -6813,6 +6985,7 @@ void WebPageProxy::createNewPage(FrameInfoData&& originatingFrameInfoData, WebPa if (auto* page = originatingFrameInfo->page()) openerAppInitiatedState = page->lastNavigationWasAppInitiated(); @@ -17370,15 +17377,15 @@ index 2c6fb389f7d540c25ad8bed506d96a300b3945de..b4a9f39026fcf60ece174751c21888f9 auto completionHandler = [this, protectedThis = Ref { *this }, mainFrameURL, request, reply = WTFMove(reply), privateClickMeasurement = navigationActionData.privateClickMeasurement, openerAppInitiatedState = WTFMove(openerAppInitiatedState), openerFrameID = originatingFrameInfoData.frameID] (RefPtr newPage) mutable { if (!newPage) { reply(std::nullopt, std::nullopt); -@@ -6820,6 +6993,7 @@ void WebPageProxy::createNewPage(FrameInfoData&& originatingFrameInfoData, WebPa +@@ -6873,6 +7046,7 @@ void WebPageProxy::createNewPage(FrameInfoData&& originatingFrameInfoData, WebPa void WebPageProxy::showPage() { m_uiClient->showPage(this); + m_inspectorController->didShowPage(); } - void WebPageProxy::exitFullscreenImmediately() -@@ -6889,6 +7063,10 @@ void WebPageProxy::closePage() + bool WebPageProxy::hasOpenedPage() const +@@ -6952,6 +7126,10 @@ void WebPageProxy::closePage() if (isClosed()) return; @@ -17389,7 +17396,7 @@ index 2c6fb389f7d540c25ad8bed506d96a300b3945de..b4a9f39026fcf60ece174751c21888f9 WEBPAGEPROXY_RELEASE_LOG(Process, "closePage:"); pageClient().clearAllEditCommands(); m_uiClient->close(this); -@@ -6925,6 +7103,8 @@ void WebPageProxy::runJavaScriptAlert(FrameIdentifier frameID, FrameInfoData&& f +@@ -6988,6 +7166,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 { @@ -17398,7 +17405,7 @@ index 2c6fb389f7d540c25ad8bed506d96a300b3945de..b4a9f39026fcf60ece174751c21888f9 page.m_uiClient->runJavaScriptAlert(page, message, frame, WTFMove(frameInfo), [reply = WTFMove(reply), completion = WTFMove(completion)]() mutable { reply(); completion(); -@@ -6946,6 +7126,8 @@ void WebPageProxy::runJavaScriptConfirm(FrameIdentifier frameID, FrameInfoData&& +@@ -7009,6 +7189,8 @@ void WebPageProxy::runJavaScriptConfirm(FrameIdentifier frameID, FrameInfoData&& if (auto* automationSession = process().processPool().automationSession()) automationSession->willShowJavaScriptDialog(*this); } @@ -17407,7 +17414,7 @@ index 2c6fb389f7d540c25ad8bed506d96a300b3945de..b4a9f39026fcf60ece174751c21888f9 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 { -@@ -6969,6 +7151,8 @@ void WebPageProxy::runJavaScriptPrompt(FrameIdentifier frameID, FrameInfoData&& +@@ -7032,6 +7214,8 @@ void WebPageProxy::runJavaScriptPrompt(FrameIdentifier frameID, FrameInfoData&& if (auto* automationSession = process().processPool().automationSession()) automationSession->willShowJavaScriptDialog(*this); } @@ -17416,7 +17423,7 @@ index 2c6fb389f7d540c25ad8bed506d96a300b3945de..b4a9f39026fcf60ece174751c21888f9 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 { -@@ -7083,6 +7267,8 @@ void WebPageProxy::runBeforeUnloadConfirmPanel(FrameIdentifier frameID, FrameInf +@@ -7146,6 +7330,8 @@ void WebPageProxy::runBeforeUnloadConfirmPanel(FrameIdentifier frameID, FrameInf return; } } @@ -17425,7 +17432,7 @@ index 2c6fb389f7d540c25ad8bed506d96a300b3945de..b4a9f39026fcf60ece174751c21888f9 // Since runBeforeUnloadConfirmPanel() can spin a nested run loop we need to turn off the responsiveness timer and the tryClose timer. m_process->stopResponsivenessTimer(); -@@ -7528,6 +7714,11 @@ void WebPageProxy::resourceLoadDidCompleteWithError(ResourceLoadInfo&& loadInfo, +@@ -7591,6 +7777,11 @@ void WebPageProxy::resourceLoadDidCompleteWithError(ResourceLoadInfo&& loadInfo, } #if ENABLE(FULLSCREEN_API) @@ -17437,7 +17444,7 @@ index 2c6fb389f7d540c25ad8bed506d96a300b3945de..b4a9f39026fcf60ece174751c21888f9 WebFullScreenManagerProxy* WebPageProxy::fullScreenManager() { return m_fullScreenManager.get(); -@@ -8444,6 +8635,8 @@ void WebPageProxy::didReceiveEvent(WebEventType eventType, bool handled) +@@ -8511,6 +8702,8 @@ void WebPageProxy::didReceiveEvent(WebEventType eventType, bool handled) if (auto* automationSession = process().processPool().automationSession()) automationSession->mouseEventsFlushedForPage(*this); didFinishProcessingAllPendingMouseEvents(); @@ -17446,7 +17453,7 @@ index 2c6fb389f7d540c25ad8bed506d96a300b3945de..b4a9f39026fcf60ece174751c21888f9 } break; } -@@ -8482,7 +8675,6 @@ void WebPageProxy::didReceiveEvent(WebEventType eventType, bool handled) +@@ -8549,7 +8742,6 @@ void WebPageProxy::didReceiveEvent(WebEventType eventType, bool handled) // The call to doneWithKeyEvent may close this WebPage. // Protect against this being destroyed. Ref protect(*this); @@ -17454,7 +17461,7 @@ index 2c6fb389f7d540c25ad8bed506d96a300b3945de..b4a9f39026fcf60ece174751c21888f9 pageClient().doneWithKeyEvent(event, handled); if (!handled) m_uiClient->didNotHandleKeyEvent(this, event); -@@ -8491,6 +8683,7 @@ void WebPageProxy::didReceiveEvent(WebEventType eventType, bool handled) +@@ -8558,6 +8750,7 @@ void WebPageProxy::didReceiveEvent(WebEventType eventType, bool handled) if (!canProcessMoreKeyEvents) { if (auto* automationSession = process().processPool().automationSession()) automationSession->keyboardEventsFlushedForPage(*this); @@ -17462,7 +17469,7 @@ index 2c6fb389f7d540c25ad8bed506d96a300b3945de..b4a9f39026fcf60ece174751c21888f9 } break; } -@@ -8844,7 +9037,10 @@ void WebPageProxy::dispatchProcessDidTerminate(ProcessTerminationReason reason) +@@ -8911,7 +9104,10 @@ void WebPageProxy::dispatchProcessDidTerminate(ProcessTerminationReason reason) { WEBPAGEPROXY_RELEASE_LOG_ERROR(Loading, "dispatchProcessDidTerminate: reason=%" PUBLIC_LOG_STRING, processTerminationReasonToString(reason)); @@ -17474,7 +17481,7 @@ index 2c6fb389f7d540c25ad8bed506d96a300b3945de..b4a9f39026fcf60ece174751c21888f9 if (m_loaderClient) handledByClient = reason != ProcessTerminationReason::RequestedByClient && m_loaderClient->processDidCrash(*this); else -@@ -9217,6 +9413,7 @@ bool WebPageProxy::useGPUProcessForDOMRenderingEnabled() const +@@ -9284,6 +9480,7 @@ bool WebPageProxy::useGPUProcessForDOMRenderingEnabled() const WebPageCreationParameters WebPageProxy::creationParameters(WebProcessProxy& process, DrawingAreaProxy& drawingArea, RefPtr&& websitePolicies) { @@ -17482,7 +17489,7 @@ index 2c6fb389f7d540c25ad8bed506d96a300b3945de..b4a9f39026fcf60ece174751c21888f9 WebPageCreationParameters parameters; parameters.processDisplayName = configuration().processDisplayName(); -@@ -9418,6 +9615,8 @@ WebPageCreationParameters WebPageProxy::creationParameters(WebProcessProxy& proc +@@ -9485,6 +9682,8 @@ WebPageCreationParameters WebPageProxy::creationParameters(WebProcessProxy& proc parameters.httpsUpgradeEnabled = preferences().upgradeKnownHostsToHTTPSEnabled() ? m_configuration->httpsUpgradeEnabled() : false; @@ -17491,7 +17498,7 @@ index 2c6fb389f7d540c25ad8bed506d96a300b3945de..b4a9f39026fcf60ece174751c21888f9 #if PLATFORM(IOS) || PLATFORM(VISION) // FIXME: This is also being passed over the to WebProcess via the PreferencesStore. parameters.allowsDeprecatedSynchronousXMLHttpRequestDuringUnload = allowsDeprecatedSynchronousXMLHttpRequestDuringUnload(); -@@ -9502,8 +9701,42 @@ void WebPageProxy::gamepadActivity(const Vector>& gam +@@ -9569,8 +9768,42 @@ void WebPageProxy::gamepadActivity(const Vector>& gam #endif @@ -17534,7 +17541,7 @@ index 2c6fb389f7d540c25ad8bed506d96a300b3945de..b4a9f39026fcf60ece174751c21888f9 if (negotiatedLegacyTLS == NegotiatedLegacyTLS::Yes) { m_navigationClient->shouldAllowLegacyTLS(*this, authenticationChallenge.get(), [this, protectedThis = Ref { *this }, authenticationChallenge] (bool shouldAllowLegacyTLS) { if (shouldAllowLegacyTLS) -@@ -9607,6 +9840,15 @@ void WebPageProxy::requestGeolocationPermissionForFrame(GeolocationIdentifier ge +@@ -9674,6 +9907,15 @@ void WebPageProxy::requestGeolocationPermissionForFrame(GeolocationIdentifier ge request->deny(); }; @@ -17551,7 +17558,7 @@ index 2c6fb389f7d540c25ad8bed506d96a300b3945de..b4a9f39026fcf60ece174751c21888f9 // 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 5494893112a6081ea9ad1d466fa192b81a06fea7..af4d1480774674a5ca30e68fd234f5a5bc1cdde9 100644 +index d2b7db056aeb206ba15da70eedb82e079665522b..d9a2e14cbfae43fd0142903acdb4945afefe759c 100644 --- a/Source/WebKit/UIProcess/WebPageProxy.h +++ b/Source/WebKit/UIProcess/WebPageProxy.h @@ -26,12 +26,31 @@ @@ -17594,7 +17601,7 @@ index 5494893112a6081ea9ad1d466fa192b81a06fea7..af4d1480774674a5ca30e68fd234f5a5 class FloatRect; class FloatSize; class FontAttributeChanges; -@@ -378,6 +398,7 @@ class WebExtensionController; +@@ -380,6 +400,7 @@ class WebExtensionController; class WebFramePolicyListenerProxy; class WebFrameProxy; class WebFullScreenManagerProxy; @@ -17602,7 +17609,7 @@ index 5494893112a6081ea9ad1d466fa192b81a06fea7..af4d1480774674a5ca30e68fd234f5a5 class WebInspectorUIProxy; class WebKeyboardEvent; class WebMouseEvent; -@@ -574,6 +595,8 @@ public: +@@ -577,6 +598,8 @@ public: void setControlledByAutomation(bool); WebPageInspectorController& inspectorController() { return *m_inspectorController; } @@ -17611,7 +17618,7 @@ index 5494893112a6081ea9ad1d466fa192b81a06fea7..af4d1480774674a5ca30e68fd234f5a5 #if PLATFORM(IOS_FAMILY) void showInspectorIndication(); -@@ -604,6 +627,7 @@ public: +@@ -607,6 +630,7 @@ public: bool hasSleepDisabler() const; #if ENABLE(FULLSCREEN_API) @@ -17619,7 +17626,7 @@ index 5494893112a6081ea9ad1d466fa192b81a06fea7..af4d1480774674a5ca30e68fd234f5a5 WebFullScreenManagerProxy* fullScreenManager(); API::FullscreenClient& fullscreenClient() const { return *m_fullscreenClient; } -@@ -692,6 +716,11 @@ public: +@@ -695,6 +719,11 @@ public: void setPageLoadStateObserver(std::unique_ptr&&); @@ -17631,7 +17638,7 @@ index 5494893112a6081ea9ad1d466fa192b81a06fea7..af4d1480774674a5ca30e68fd234f5a5 void initializeWebPage(); void setDrawingArea(std::unique_ptr&&); -@@ -718,6 +747,7 @@ public: +@@ -721,6 +750,7 @@ public: void addPlatformLoadParameters(WebProcessProxy&, LoadParameters&); RefPtr loadRequest(WebCore::ResourceRequest&&); RefPtr loadRequest(WebCore::ResourceRequest&&, WebCore::ShouldOpenExternalURLsPolicy, API::Object* userData = nullptr); @@ -17639,7 +17646,7 @@ index 5494893112a6081ea9ad1d466fa192b81a06fea7..af4d1480774674a5ca30e68fd234f5a5 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); RefPtr loadData(const IPC::DataReference&, const String& MIMEType, const String& encoding, const String& baseURL, API::Object* userData, WebCore::ShouldOpenExternalURLsPolicy); -@@ -1290,6 +1320,7 @@ public: +@@ -1293,6 +1323,7 @@ public: #endif void pageScaleFactorDidChange(double); @@ -17647,7 +17654,7 @@ index 5494893112a6081ea9ad1d466fa192b81a06fea7..af4d1480774674a5ca30e68fd234f5a5 void pluginScaleFactorDidChange(double); void pluginZoomFactorDidChange(double); -@@ -1380,14 +1411,20 @@ public: +@@ -1383,14 +1414,20 @@ public: void didStartDrag(); void dragCancelled(); void setDragCaretRect(const WebCore::IntRect&); @@ -17669,7 +17676,7 @@ index 5494893112a6081ea9ad1d466fa192b81a06fea7..af4d1480774674a5ca30e68fd234f5a5 #endif void processDidBecomeUnresponsive(); -@@ -1604,6 +1641,7 @@ public: +@@ -1607,6 +1644,7 @@ public: void setViewportSizeForCSSViewportUnits(const WebCore::FloatSize&); WebCore::FloatSize viewportSizeForCSSViewportUnits() const; @@ -17677,7 +17684,7 @@ index 5494893112a6081ea9ad1d466fa192b81a06fea7..af4d1480774674a5ca30e68fd234f5a5 void didReceiveAuthenticationChallengeProxy(Ref&&, NegotiatedLegacyTLS); void negotiatedLegacyTLS(); void didNegotiateModernTLS(const URL&); -@@ -1638,6 +1676,8 @@ public: +@@ -1641,6 +1679,8 @@ public: #if PLATFORM(COCOA) || PLATFORM(GTK) RefPtr takeViewSnapshot(std::optional&&); @@ -17686,7 +17693,7 @@ index 5494893112a6081ea9ad1d466fa192b81a06fea7..af4d1480774674a5ca30e68fd234f5a5 #endif #if ENABLE(WEB_CRYPTO) -@@ -2912,8 +2952,10 @@ private: +@@ -2927,8 +2967,10 @@ private: String m_overrideContentSecurityPolicy; RefPtr m_inspector; @@ -17697,7 +17704,7 @@ index 5494893112a6081ea9ad1d466fa192b81a06fea7..af4d1480774674a5ca30e68fd234f5a5 std::unique_ptr m_fullScreenManager; std::unique_ptr m_fullscreenClient; #endif -@@ -3095,6 +3137,22 @@ private: +@@ -3110,6 +3152,22 @@ private: std::optional m_currentDragOperation; bool m_currentDragIsOverFileInput { false }; unsigned m_currentDragNumberOfFilesToBeAccepted { 0 }; @@ -17720,7 +17727,7 @@ index 5494893112a6081ea9ad1d466fa192b81a06fea7..af4d1480774674a5ca30e68fd234f5a5 #endif bool m_mainFrameHasHorizontalScrollbar { false }; -@@ -3262,6 +3320,10 @@ private: +@@ -3277,6 +3335,10 @@ private: RefPtr messageBody; }; Vector m_pendingInjectedBundleMessages; @@ -17732,7 +17739,7 @@ index 5494893112a6081ea9ad1d466fa192b81a06fea7..af4d1480774674a5ca30e68fd234f5a5 #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 30799130db49f5b129c51c4908315e2fc21abaf8..6a7bc2b5cb6a7f9785674c402e69458a5499245d 100644 +index 983a8a5d3e7393b5b32f65e01b16a343def8aaa5..2dd587845bc076ca575032100da10fdf84c419a4 100644 --- a/Source/WebKit/UIProcess/WebPageProxy.messages.in +++ b/Source/WebKit/UIProcess/WebPageProxy.messages.in @@ -29,6 +29,7 @@ messages -> WebPageProxy { @@ -17767,7 +17774,7 @@ index 30799130db49f5b129c51c4908315e2fc21abaf8..6a7bc2b5cb6a7f9785674c402e69458a DidPerformDragOperation(bool handled) #endif diff --git a/Source/WebKit/UIProcess/WebProcessCache.cpp b/Source/WebKit/UIProcess/WebProcessCache.cpp -index a61dcbbd9478156f0feb3d4f27379c4cc72bf949..01fcd8891ab9280471ecf6d61da51890b9574bca 100644 +index 58e39fd6df029efb3801ad914dfc96f4e6a8d8dc..7b47e3f1e08d6f974889def778fcee35b3b8ee09 100644 --- a/Source/WebKit/UIProcess/WebProcessCache.cpp +++ b/Source/WebKit/UIProcess/WebProcessCache.cpp @@ -81,6 +81,10 @@ bool WebProcessCache::canCacheProcess(WebProcessProxy& process) const @@ -17782,10 +17789,10 @@ index a61dcbbd9478156f0feb3d4f27379c4cc72bf949..01fcd8891ab9280471ecf6d61da51890 } diff --git a/Source/WebKit/UIProcess/WebProcessPool.cpp b/Source/WebKit/UIProcess/WebProcessPool.cpp -index 5cb94c965011c2fd9306939c1099c1b4bf562d34..3fadf8d8d3815aa0428f231bbc629c825ec08ac6 100644 +index c116ecd626f03556678c50a617c7806cd750ff86..f516ffdd657e213d491c5847d6513df5ece79d56 100644 --- a/Source/WebKit/UIProcess/WebProcessPool.cpp +++ b/Source/WebKit/UIProcess/WebProcessPool.cpp -@@ -381,10 +381,10 @@ void WebProcessPool::setAutomationClient(std::unique_ptr& +@@ -384,10 +384,10 @@ void WebProcessPool::setAutomationClient(std::unique_ptr& void WebProcessPool::setOverrideLanguages(Vector&& languages) { @@ -17798,7 +17805,7 @@ index 5cb94c965011c2fd9306939c1099c1b4bf562d34..3fadf8d8d3815aa0428f231bbc629c82 #if ENABLE(GPU_PROCESS) if (auto* gpuProcess = GPUProcessProxy::singletonIfCreated()) -@@ -392,9 +392,10 @@ void WebProcessPool::setOverrideLanguages(Vector&& languages) +@@ -395,9 +395,10 @@ void WebProcessPool::setOverrideLanguages(Vector&& languages) #endif #if USE(SOUP) for (auto networkProcess : NetworkProcessProxy::allNetworkProcesses()) @@ -17810,7 +17817,7 @@ index 5cb94c965011c2fd9306939c1099c1b4bf562d34..3fadf8d8d3815aa0428f231bbc629c82 void WebProcessPool::fullKeyboardAccessModeChanged(bool fullKeyboardAccessEnabled) { -@@ -533,6 +534,14 @@ void WebProcessPool::establishRemoteWorkerContextConnectionToNetworkProcess(Remo +@@ -539,6 +540,14 @@ void WebProcessPool::establishRemoteWorkerContextConnectionToNetworkProcess(Remo RefPtr requestingProcess = requestingProcessIdentifier ? WebProcessProxy::processForIdentifier(*requestingProcessIdentifier) : nullptr; WebProcessPool* processPool = requestingProcess ? &requestingProcess->processPool() : processPools()[0]; @@ -17825,7 +17832,7 @@ index 5cb94c965011c2fd9306939c1099c1b4bf562d34..3fadf8d8d3815aa0428f231bbc629c82 ASSERT(processPool); WebProcessProxy* remoteWorkerProcessProxy { nullptr }; -@@ -837,7 +846,7 @@ void WebProcessPool::initializeNewWebProcess(WebProcessProxy& process, WebsiteDa +@@ -843,7 +852,7 @@ void WebProcessPool::initializeNewWebProcess(WebProcessProxy& process, WebsiteDa #endif parameters.cacheModel = LegacyGlobalSettings::singleton().cacheModel(); @@ -17835,7 +17842,7 @@ index 5cb94c965011c2fd9306939c1099c1b4bf562d34..3fadf8d8d3815aa0428f231bbc629c82 parameters.urlSchemesRegisteredAsEmptyDocument = copyToVector(m_schemesToRegisterAsEmptyDocument); diff --git a/Source/WebKit/UIProcess/WebProcessProxy.cpp b/Source/WebKit/UIProcess/WebProcessProxy.cpp -index 5ba63007ccbbc23049e8f5afada0653ed7eb1cc7..398b477c59928d6ef454b89a61883c487046ac9e 100644 +index c2c5398d3c0ef7573b6dfa4125c3f0a4cea0302d..3852e40c086ba698169203ddfc14770305379bd7 100644 --- a/Source/WebKit/UIProcess/WebProcessProxy.cpp +++ b/Source/WebKit/UIProcess/WebProcessProxy.cpp @@ -169,6 +169,11 @@ Vector> WebProcessProxy::allProcesses() @@ -17878,7 +17885,7 @@ index 5ba63007ccbbc23049e8f5afada0653ed7eb1cc7..398b477c59928d6ef454b89a61883c48 if (isPrewarmed()) diff --git a/Source/WebKit/UIProcess/WebProcessProxy.h b/Source/WebKit/UIProcess/WebProcessProxy.h -index cc16168ea0259bcf2d60949b5eed9795d69130c6..537b1c3beb29ca89e14e5b30d3833e0c36841c10 100644 +index f041968f2b0efec8cd146e1add58053f28207c83..20d5777ae9861d515c34b4b316a4e5036ae57ab0 100644 --- a/Source/WebKit/UIProcess/WebProcessProxy.h +++ b/Source/WebKit/UIProcess/WebProcessProxy.h @@ -163,6 +163,7 @@ public: @@ -17890,7 +17897,7 @@ index cc16168ea0259bcf2d60949b5eed9795d69130c6..537b1c3beb29ca89e14e5b30d3833e0c WebConnection* webConnection() const { return m_webConnection.get(); } diff --git a/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp b/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp -index 30c4a06a937f6018e619f952c35262742473b942..8ba95c4d29660691db90572a42f45ac554c31639 100644 +index 44f4f2cba70da6d9f1ecb9dc86f9aaf41db1efe0..fd4a98ebb13bef1979756a50ff27590b2b98cd0d 100644 --- a/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp +++ b/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp @@ -2204,6 +2204,12 @@ void WebsiteDataStore::originDirectoryForTesting(WebCore::ClientOrigin&& origin, @@ -17907,7 +17914,7 @@ index 30c4a06a937f6018e619f952c35262742473b942..8ba95c4d29660691db90572a42f45ac5 void WebsiteDataStore::hasAppBoundSession(CompletionHandler&& completionHandler) const { diff --git a/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h b/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h -index e04145796d0868967b0b91c36ff43faf5ab6e17e..a041ec5834f2599d9833346958dd0dadfb25c5e0 100644 +index 8dab7e885ee7647e814c1a2ab286b5c575473627..afac4c91d83913fd536f76234fc842a7e369ef88 100644 --- a/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h +++ b/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h @@ -95,6 +95,7 @@ class DeviceIdHashSaltStorage; @@ -18318,10 +18325,10 @@ index 39aeff71fe05354cf63d3b3701d363642d63aca4..32e96cdd0bdbd8c5dcde43fdf60052ac virtual void unrealize() { }; virtual bool makeContextCurrent() { return false; } diff --git a/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreDMABuf.cpp b/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreDMABuf.cpp -index 5a5d2fc4ceacb19c9279ead0eb6d9928463a8e55..d973c307f2af2e2a83412868bf4c15e1acffbbea 100644 +index 1a208de31a054b630448d0e6d4799fdf05ae5d21..d8cd1d26962394cf6dc643f5f571d11adf4b46cb 100644 --- a/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreDMABuf.cpp +++ b/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreDMABuf.cpp -@@ -376,6 +376,25 @@ void AcceleratedBackingStoreDMABuf::Surface::paint(GtkWidget*, cairo_t* cr, cons +@@ -386,6 +386,25 @@ void AcceleratedBackingStoreDMABuf::Surface::paint(GtkWidget*, cairo_t* cr, cons } #endif @@ -18347,7 +18354,7 @@ index 5a5d2fc4ceacb19c9279ead0eb6d9928463a8e55..d973c307f2af2e2a83412868bf4c15e1 void AcceleratedBackingStoreDMABuf::configure(UnixFileDescriptor&& backFD, UnixFileDescriptor&& frontFD, UnixFileDescriptor&& displayFD, const WebCore::IntSize& size, uint32_t format, uint32_t offset, uint32_t stride, uint64_t modifier) { m_isSoftwareRast = false; -@@ -566,4 +585,13 @@ bool AcceleratedBackingStoreDMABuf::paint(cairo_t* cr, const WebCore::IntRect& c +@@ -576,4 +595,13 @@ bool AcceleratedBackingStoreDMABuf::paint(cairo_t* cr, const WebCore::IntRect& c } #endif @@ -18362,10 +18369,10 @@ index 5a5d2fc4ceacb19c9279ead0eb6d9928463a8e55..d973c307f2af2e2a83412868bf4c15e1 + } // namespace WebKit diff --git a/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreDMABuf.h b/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreDMABuf.h -index bd52cafbcec61c19c2d44630193a507934f6dab4..87ab1217cdd56b4598d6a68ddefabb075c9fb259 100644 +index 1bc769ada3135a19f13851c8099ad008fcac8a04..1604833f958746b993dea0b50f16758b867ed071 100644 --- a/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreDMABuf.h +++ b/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreDMABuf.h -@@ -79,6 +79,7 @@ private: +@@ -82,6 +82,7 @@ private: #else bool paint(cairo_t*, const WebCore::IntRect&) override; #endif @@ -18373,7 +18380,7 @@ index bd52cafbcec61c19c2d44630193a507934f6dab4..87ab1217cdd56b4598d6a68ddefabb07 void realize() override; void unrealize() override; bool makeContextCurrent() override; -@@ -96,6 +97,7 @@ private: +@@ -99,6 +100,7 @@ private: #else virtual void paint(GtkWidget*, cairo_t*, const WebCore::IntRect&) const = 0; #endif @@ -18381,7 +18388,7 @@ index bd52cafbcec61c19c2d44630193a507934f6dab4..87ab1217cdd56b4598d6a68ddefabb07 const WebCore::IntSize size() const { return m_size; } -@@ -122,6 +124,7 @@ private: +@@ -125,6 +127,7 @@ private: #else void paint(GtkWidget*, cairo_t*, const WebCore::IntRect&) const override; #endif @@ -18389,7 +18396,7 @@ index bd52cafbcec61c19c2d44630193a507934f6dab4..87ab1217cdd56b4598d6a68ddefabb07 GRefPtr m_context; unsigned m_textureID { 0 }; -@@ -153,6 +156,7 @@ private: +@@ -156,6 +159,7 @@ private: #else void paint(GtkWidget*, cairo_t*, const WebCore::IntRect&) const override; #endif @@ -18397,7 +18404,7 @@ index bd52cafbcec61c19c2d44630193a507934f6dab4..87ab1217cdd56b4598d6a68ddefabb07 #if USE(GBM) RefPtr map(struct gbm_bo*) const; -@@ -170,6 +174,7 @@ private: +@@ -173,6 +177,7 @@ private: RefPtr m_surface; RefPtr m_backSurface; RefPtr m_displaySurface; @@ -18667,7 +18674,7 @@ index 0000000000000000000000000000000000000000..6a204c5bba8fb95ddb2d1c14cae7a3a7 + +} // namespace WebKit diff --git a/Source/WebKit/UIProcess/ios/PageClientImplIOS.mm b/Source/WebKit/UIProcess/ios/PageClientImplIOS.mm -index b8bfbb6b5876a2dc4815866bcf5570681b7c8764..fd2842664ef5d134e2af17913ff3ceb66fdcc0b2 100644 +index a5d22fb2ded1af0b22d3633e2c0f27390883679f..3a5672f959161ed6c8c6e159bb0373791d6963a2 100644 --- a/Source/WebKit/UIProcess/ios/PageClientImplIOS.mm +++ b/Source/WebKit/UIProcess/ios/PageClientImplIOS.mm @@ -465,6 +465,8 @@ IntRect PageClientImpl::rootViewToAccessibilityScreen(const IntRect& rect) @@ -19048,10 +19055,10 @@ index 46aaf12accb35a2e7685d61887e76f0fe14d76c5..37f418197dcc3f6c74fac258ba77d00d bool showAfterPostProcessingContextData(); diff --git a/Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.mm b/Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.mm -index ea4b42b221a3e25726c48f87be5e0f3153f77cd2..9c69a2c73f6c12e1c2e527dcc95b86d19d1eccd1 100644 +index 24b96cf7d9881c7f90759b0493f44183373ec61a..88ac06a09e4375e2ca12451d351a31606e133fb3 100644 --- a/Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.mm +++ b/Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.mm -@@ -479,6 +479,12 @@ void WebContextMenuProxyMac::getShareMenuItem(CompletionHandler + #import + #import ++#import + #import + #import + #import +@@ -104,6 +105,7 @@ + #import + #import + #import ++#import + #import + #import + #import +@@ -2369,6 +2371,11 @@ WebCore::DestinationColorSpace WebViewImpl::colorSpace() if (!m_colorSpace) m_colorSpace = [NSColorSpace sRGBColorSpace]; } @@ -19280,7 +19303,7 @@ index 9478bb96185452165ddd0c353b950166b4e75c89..c72ccc58df96e0f432dfb53c66f5f94b ASSERT(m_colorSpace); return WebCore::DestinationColorSpace { [m_colorSpace CGColorSpace] }; -@@ -4409,6 +4414,18 @@ ALLOW_DEPRECATED_DECLARATIONS_BEGIN +@@ -4435,6 +4442,18 @@ ALLOW_DEPRECATED_DECLARATIONS_BEGIN ALLOW_DEPRECATED_DECLARATIONS_END } @@ -19299,7 +19322,7 @@ index 9478bb96185452165ddd0c353b950166b4e75c89..c72ccc58df96e0f432dfb53c66f5f94b RefPtr WebViewImpl::takeViewSnapshot() { NSWindow *window = [m_view window]; -@@ -5005,11 +5022,11 @@ static Vector compositionHighlights(NSAttributedS +@@ -5031,11 +5050,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; @@ -19313,6 +19336,51 @@ index 9478bb96185452165ddd0c353b950166b4e75c89..c72ccc58df96e0f432dfb53c66f5f94b foregroundHighlightColor = WebCore::colorFromCocoaColor(foregroundColor); highlights.append({ static_cast(range.location), static_cast(NSMaxRange(range)), backgroundHighlightColor, foregroundHighlightColor }); +@@ -5127,7 +5146,7 @@ static Vector compositionUnderlines(NSAttributedS + return mergedUnderlines; + } + +-static HashMap> compositionAnnotations(NSAttributedString *string) ++static HashMap> compositionAnnotations(NSAttributedString *string) + { + if (!string.length) + return { }; +@@ -5140,7 +5159,7 @@ static HashMap> compositionAnnotations(NSAttribut + }); + #endif + +- HashMap> annotations; ++ HashMap> annotations; + [string enumerateAttributesInRange:NSMakeRange(0, string.length) options:0 usingBlock:[&annotations](NSDictionary *attributes, NSRange range, BOOL *) { + [attributes enumerateKeysAndObjectsUsingBlock:[&annotations, &range](NSAttributedStringKey key, id value, BOOL *) { + +@@ -5149,7 +5168,7 @@ static HashMap> compositionAnnotations(NSAttribut + + auto it = annotations.find(key); + if (it == annotations.end()) +- it = annotations.add(key, Vector { }).iterator; ++ it = annotations.add(key, Vector { }).iterator; + auto& vector = it->value; + + // Coalesce this range into the previous one if possible +@@ -5176,7 +5195,7 @@ void WebViewImpl::setMarkedText(id string, NSRange selectedRange, NSRange replac + + Vector underlines; + Vector highlights; +- HashMap> annotations; ++ HashMap> annotations; + NSString *text; + + if (isAttributedString) { +@@ -6040,7 +6059,7 @@ void WebViewImpl::updateMediaPlaybackControlsManager() + [m_playbackControlsManager setCanTogglePictureInPicture:NO]; + } + +- if (PlatformPlaybackSessionInterface* interface = m_page->playbackSessionManager()->controlsManagerInterface()) { ++ if (WebCore::PlatformPlaybackSessionInterface* interface = m_page->playbackSessionManager()->controlsManagerInterface()) { + [m_playbackControlsManager setPlaybackSessionInterfaceMac:interface]; + interface->updatePlaybackControlsManagerCanTogglePictureInPicture(); + } diff --git a/Source/WebKit/UIProcess/win/InspectorPlaywrightAgentClientWin.cpp b/Source/WebKit/UIProcess/win/InspectorPlaywrightAgentClientWin.cpp new file mode 100644 index 0000000000000000000000000000000000000000..dd7fe0604188bb025f361f1c44685e38bbf935ca @@ -20073,10 +20141,10 @@ index 0000000000000000000000000000000000000000..a7d88f8c745f95af21db71dcfce368ba + +} // namespace WebKit diff --git a/Source/WebKit/WebKit.xcodeproj/project.pbxproj b/Source/WebKit/WebKit.xcodeproj/project.pbxproj -index 878451c5d13c75a94fdda9f65e6808c75e80e130..5ecaea0628959591117ab4a09fb3fd86dcf06b58 100644 +index 454ceb27dc6295a8ed80bbdcff790180f5360d98..d10391b6b13ed6ec79bafef99173542a8ae222cd 100644 --- a/Source/WebKit/WebKit.xcodeproj/project.pbxproj +++ b/Source/WebKit/WebKit.xcodeproj/project.pbxproj -@@ -1335,6 +1335,7 @@ +@@ -1336,6 +1336,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 */; }; @@ -20084,7 +20152,7 @@ index 878451c5d13c75a94fdda9f65e6808c75e80e130..5ecaea0628959591117ab4a09fb3fd86 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 */; }; -@@ -2093,6 +2094,18 @@ +@@ -2092,6 +2093,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 */; }; @@ -20103,7 +20171,7 @@ index 878451c5d13c75a94fdda9f65e6808c75e80e130..5ecaea0628959591117ab4a09fb3fd86 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, ); }; }; -@@ -2159,6 +2172,8 @@ +@@ -2158,6 +2171,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 */; }; @@ -20112,7 +20180,7 @@ index 878451c5d13c75a94fdda9f65e6808c75e80e130..5ecaea0628959591117ab4a09fb3fd86 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 */; }; -@@ -2177,6 +2192,9 @@ +@@ -2176,6 +2191,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, ); }; }; @@ -20122,7 +20190,7 @@ index 878451c5d13c75a94fdda9f65e6808c75e80e130..5ecaea0628959591117ab4a09fb3fd86 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 */; }; -@@ -5422,6 +5440,7 @@ +@@ -5426,6 +5444,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 = ""; }; @@ -20130,7 +20198,7 @@ index 878451c5d13c75a94fdda9f65e6808c75e80e130..5ecaea0628959591117ab4a09fb3fd86 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 = ""; }; -@@ -7016,6 +7035,19 @@ +@@ -7022,6 +7041,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 = ""; }; @@ -20150,7 +20218,7 @@ index 878451c5d13c75a94fdda9f65e6808c75e80e130..5ecaea0628959591117ab4a09fb3fd86 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 = ""; }; -@@ -7153,6 +7185,8 @@ +@@ -7159,6 +7191,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 = ""; }; @@ -20159,7 +20227,7 @@ index 878451c5d13c75a94fdda9f65e6808c75e80e130..5ecaea0628959591117ab4a09fb3fd86 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 = ""; }; -@@ -7176,6 +7210,14 @@ +@@ -7182,6 +7216,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 = ""; }; @@ -20174,7 +20242,7 @@ index 878451c5d13c75a94fdda9f65e6808c75e80e130..5ecaea0628959591117ab4a09fb3fd86 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 = ""; }; -@@ -7344,6 +7386,7 @@ +@@ -7354,6 +7396,7 @@ 3766F9EE189A1241003CF19B /* JavaScriptCore.framework in Frameworks */, 3766F9F1189A1254003CF19B /* libicucore.dylib in Frameworks */, 7B9FC5BB28A5233B007570E7 /* libWebKitPlatform.a in Frameworks */, @@ -20182,7 +20250,7 @@ index 878451c5d13c75a94fdda9f65e6808c75e80e130..5ecaea0628959591117ab4a09fb3fd86 3766F9EF189A1244003CF19B /* QuartzCore.framework in Frameworks */, 37694525184FC6B600CDE21F /* Security.framework in Frameworks */, 37BEC4DD1948FC6A008B4286 /* WebCore.framework in Frameworks */, -@@ -9853,6 +9896,7 @@ +@@ -9865,6 +9908,7 @@ 99788ACA1F421DCA00C08000 /* _WKAutomationSessionConfiguration.mm */, 990D28A81C6404B000986977 /* _WKAutomationSessionDelegate.h */, 990D28AF1C65203900986977 /* _WKAutomationSessionInternal.h */, @@ -20190,7 +20258,7 @@ index 878451c5d13c75a94fdda9f65e6808c75e80e130..5ecaea0628959591117ab4a09fb3fd86 5C4609E222430E4C009943C2 /* _WKContentRuleListAction.h */, 5C4609E322430E4D009943C2 /* _WKContentRuleListAction.mm */, 5C4609E422430E4D009943C2 /* _WKContentRuleListActionInternal.h */, -@@ -10999,6 +11043,7 @@ +@@ -11012,6 +11056,7 @@ E34B110C27C46BC6006D2F2E /* libWebCoreTestShim.dylib */, E34B110F27C46D09006D2F2E /* libWebCoreTestSupport.dylib */, DDE992F4278D06D900F60D26 /* libWebKitAdditions.a */, @@ -20198,7 +20266,7 @@ index 878451c5d13c75a94fdda9f65e6808c75e80e130..5ecaea0628959591117ab4a09fb3fd86 57A9FF15252C6AEF006A2040 /* libWTF.a */, 5750F32A2032D4E500389347 /* LocalAuthentication.framework */, 570DAAB0230273D200E8FC04 /* NearField.framework */, -@@ -11551,6 +11596,12 @@ +@@ -11564,6 +11609,12 @@ children = ( 9197940423DBC4BB00257892 /* InspectorBrowserAgent.cpp */, 9197940323DBC4BB00257892 /* InspectorBrowserAgent.h */, @@ -20211,7 +20279,7 @@ index 878451c5d13c75a94fdda9f65e6808c75e80e130..5ecaea0628959591117ab4a09fb3fd86 ); path = Agents; sourceTree = ""; -@@ -11559,6 +11610,7 @@ +@@ -11572,6 +11623,7 @@ isa = PBXGroup; children = ( A5D3504D1D78F0D2005124A9 /* RemoteWebInspectorUIProxyMac.mm */, @@ -20219,7 +20287,7 @@ index 878451c5d13c75a94fdda9f65e6808c75e80e130..5ecaea0628959591117ab4a09fb3fd86 1CA8B935127C774E00576C2B /* WebInspectorUIProxyMac.mm */, 99A7ACE326012919006D57FD /* WKInspectorResourceURLSchemeHandler.h */, 99A7ACE42601291A006D57FD /* WKInspectorResourceURLSchemeHandler.mm */, -@@ -12153,6 +12205,7 @@ +@@ -12166,6 +12218,7 @@ E1513C65166EABB200149FCB /* AuxiliaryProcessProxy.h */, 46A2B6061E5675A200C3DEDA /* BackgroundProcessResponsivenessTimer.cpp */, 46A2B6071E5675A200C3DEDA /* BackgroundProcessResponsivenessTimer.h */, @@ -20227,7 +20295,7 @@ index 878451c5d13c75a94fdda9f65e6808c75e80e130..5ecaea0628959591117ab4a09fb3fd86 07297F9C1C1711EA003F0735 /* DeviceIdHashSaltStorage.cpp */, 07297F9D1C17BBEA223F0735 /* DeviceIdHashSaltStorage.h */, BC2652121182608100243E12 /* DrawingAreaProxy.cpp */, -@@ -12168,6 +12221,8 @@ +@@ -12181,6 +12234,8 @@ 2DD5A72A1EBF09A7009BA597 /* HiddenPageThrottlingAutoIncreasesCounter.h */, 839A2F2F1E2067390039057E /* HighPerformanceGraphicsUsageSampler.cpp */, 839A2F301E2067390039057E /* HighPerformanceGraphicsUsageSampler.h */, @@ -20236,15 +20304,15 @@ index 878451c5d13c75a94fdda9f65e6808c75e80e130..5ecaea0628959591117ab4a09fb3fd86 5CEABA2B2333251400797797 /* LegacyGlobalSettings.cpp */, 5CEABA2A2333247700797797 /* LegacyGlobalSettings.h */, 31607F3819627002009B87DA /* LegacySessionStateCoding.h */, -@@ -12202,6 +12257,7 @@ +@@ -12215,6 +12270,7 @@ 1A0C227D2451130A00ED614D /* QuickLookThumbnailingSoftLink.mm */, 1AEE57232409F142002005D6 /* QuickLookThumbnailLoader.h */, 1AEE57242409F142002005D6 /* QuickLookThumbnailLoader.mm */, + D71A94392370F060002C4D9E /* RemoteInspectorPipe.h */, + 5CCB54DC2A4FEA6A0005FAA8 /* RemotePageDrawingAreaProxy.cpp */, + 5CCB54DB2A4FEA6A0005FAA8 /* RemotePageDrawingAreaProxy.h */, 5C907E9A294D507100B3402D /* RemotePageProxy.cpp */, - 5C907E99294D507100B3402D /* RemotePageProxy.h */, - BC111B08112F5E3C00337BAB /* ResponsivenessTimer.cpp */, -@@ -12304,6 +12360,8 @@ +@@ -12320,6 +12376,8 @@ BC7B6204129A0A6700D174A4 /* WebPageGroup.h */, 2D9EA3101A96D9EB002D2807 /* WebPageInjectedBundleClient.cpp */, 2D9EA30E1A96CBFF002D2807 /* WebPageInjectedBundleClient.h */, @@ -20253,7 +20321,7 @@ index 878451c5d13c75a94fdda9f65e6808c75e80e130..5ecaea0628959591117ab4a09fb3fd86 BC111B0B112F5E4F00337BAB /* WebPageProxy.cpp */, BC032DCB10F4389F0058C15A /* WebPageProxy.h */, BCBD38FA125BAB9A00D2C29F /* WebPageProxy.messages.in */, -@@ -12464,6 +12522,7 @@ +@@ -12482,6 +12540,7 @@ BC646C1911DD399F006455B0 /* WKBackForwardListItemRef.h */, BC646C1611DD399F006455B0 /* WKBackForwardListRef.cpp */, BC646C1711DD399F006455B0 /* WKBackForwardListRef.h */, @@ -20261,7 +20329,7 @@ index 878451c5d13c75a94fdda9f65e6808c75e80e130..5ecaea0628959591117ab4a09fb3fd86 BCB9E24A1120E15C00A137E0 /* WKContext.cpp */, BCB9E2491120E15C00A137E0 /* WKContext.h */, 1AE52F9319201F6B00A1FA37 /* WKContextConfigurationRef.cpp */, -@@ -13045,6 +13104,9 @@ +@@ -13063,6 +13122,9 @@ 0F49294628FF0F4B00AF8509 /* DisplayLinkProcessProxyClient.h */, 31ABA79C215AF9E000C90E31 /* HighPerformanceGPUManager.h */, 31ABA79D215AF9E000C90E31 /* HighPerformanceGPUManager.mm */, @@ -20271,7 +20339,7 @@ index 878451c5d13c75a94fdda9f65e6808c75e80e130..5ecaea0628959591117ab4a09fb3fd86 1AFDE65B1954E8D500C48FFA /* LegacySessionStateCoding.cpp */, 0FCB4E5818BBE3D9000FCFC9 /* PageClientImplMac.h */, 0FCB4E5918BBE3D9000FCFC9 /* PageClientImplMac.mm */, -@@ -13068,6 +13130,8 @@ +@@ -13086,6 +13148,8 @@ E568B92120A3AC6A00E3C856 /* WebDataListSuggestionsDropdownMac.mm */, E55CD20124D09F1F0042DB9C /* WebDateTimePickerMac.h */, E55CD20224D09F1F0042DB9C /* WebDateTimePickerMac.mm */, @@ -20280,7 +20348,7 @@ index 878451c5d13c75a94fdda9f65e6808c75e80e130..5ecaea0628959591117ab4a09fb3fd86 BC857E8512B71EBB00EDEB2E /* WebPageProxyMac.mm */, BC5750951268F3C6006F0F12 /* WebPopupMenuProxyMac.h */, BC5750961268F3C6006F0F12 /* WebPopupMenuProxyMac.mm */, -@@ -13984,6 +14048,7 @@ +@@ -14002,6 +14066,7 @@ 99788ACB1F421DDA00C08000 /* _WKAutomationSessionConfiguration.h in Headers */, 990D28AC1C6420CF00986977 /* _WKAutomationSessionDelegate.h in Headers */, 990D28B11C65208D00986977 /* _WKAutomationSessionInternal.h in Headers */, @@ -20288,7 +20356,7 @@ index 878451c5d13c75a94fdda9f65e6808c75e80e130..5ecaea0628959591117ab4a09fb3fd86 5C4609E7224317B4009943C2 /* _WKContentRuleListAction.h in Headers */, 5C4609E8224317BB009943C2 /* _WKContentRuleListActionInternal.h in Headers */, 1A5704F81BE01FF400874AF1 /* _WKContextMenuElementInfo.h in Headers */, -@@ -14255,6 +14320,7 @@ +@@ -14273,6 +14338,7 @@ E170876C16D6CA6900F99226 /* BlobRegistryProxy.h in Headers */, 4F601432155C5AA2001FBDE0 /* BlockingResponseMap.h in Headers */, 1A5705111BE410E600874AF1 /* BlockSPI.h in Headers */, @@ -20296,7 +20364,7 @@ index 878451c5d13c75a94fdda9f65e6808c75e80e130..5ecaea0628959591117ab4a09fb3fd86 BC3065FA1259344E00E71278 /* CacheModel.h in Headers */, 935BF7FC2936BF1A00B41326 /* CacheStorageCache.h in Headers */, 934CF817294B884C00304F7D /* CacheStorageDiskStore.h in Headers */, -@@ -14389,7 +14455,11 @@ +@@ -14407,7 +14473,11 @@ BC14DF77120B5B7900826C0C /* InjectedBundleScriptWorld.h in Headers */, CE550E152283752200D28791 /* InsertTextOptions.h in Headers */, 9197940523DBC4BB00257892 /* InspectorBrowserAgent.h in Headers */, @@ -20308,7 +20376,7 @@ index 878451c5d13c75a94fdda9f65e6808c75e80e130..5ecaea0628959591117ab4a09fb3fd86 A5E391FD2183C1F800C8FB31 /* InspectorTargetProxy.h in Headers */, 51E9049C27BCB9D400929E7E /* InstallCoordinationSPI.h in Headers */, C5BCE5DF1C50766A00CDE3FA /* InteractionInformationAtPosition.h in Headers */, -@@ -14619,6 +14689,7 @@ +@@ -14637,6 +14707,7 @@ CDAC20CA23FC2F750021DEE3 /* RemoteCDMInstanceSession.h in Headers */, CDAC20C923FC2F750021DEE3 /* RemoteCDMInstanceSessionIdentifier.h in Headers */, F451C0FE2703B263002BA03B /* RemoteDisplayListRecorderProxy.h in Headers */, @@ -20316,7 +20384,7 @@ index 878451c5d13c75a94fdda9f65e6808c75e80e130..5ecaea0628959591117ab4a09fb3fd86 2D47B56D1810714E003A3AEE /* RemoteLayerBackingStore.h in Headers */, 2DDF731518E95060004F5A66 /* RemoteLayerBackingStoreCollection.h in Headers */, 1AB16AEA164B3A8800290D62 /* RemoteLayerTreeContext.h in Headers */, -@@ -14670,6 +14741,7 @@ +@@ -14688,6 +14759,7 @@ E1E552C516AE065F004ED653 /* SandboxInitializationParameters.h in Headers */, E36FF00327F36FBD004BE21A /* SandboxStateVariables.h in Headers */, 7BAB111025DD02B3008FC479 /* ScopedActiveMessageReceiveQueue.h in Headers */, @@ -20324,7 +20392,7 @@ index 878451c5d13c75a94fdda9f65e6808c75e80e130..5ecaea0628959591117ab4a09fb3fd86 E4D54D0421F1D72D007E3C36 /* ScrollingTreeFrameScrollingNodeRemoteIOS.h in Headers */, 0F931C1C18C5711900DBA7C3 /* ScrollingTreeOverflowScrollingNodeIOS.h in Headers */, 0F931C1C18C5711900DBB8D4 /* ScrollingTreeScrollingNodeDelegateIOS.h in Headers */, -@@ -14958,6 +15030,8 @@ +@@ -14977,6 +15049,8 @@ 939EF87029D112EE00F23AEE /* WebPageInlines.h in Headers */, 9197940823DBC4CB00257892 /* WebPageInspectorAgentBase.h in Headers */, A513F5402154A5D700662841 /* WebPageInspectorController.h in Headers */, @@ -20333,7 +20401,7 @@ index 878451c5d13c75a94fdda9f65e6808c75e80e130..5ecaea0628959591117ab4a09fb3fd86 A543E30C215C8A8D00279CD9 /* WebPageInspectorTarget.h in Headers */, A543E30D215C8A9000279CD9 /* WebPageInspectorTargetController.h in Headers */, A543E307215AD13700279CD9 /* WebPageInspectorTargetFrontendChannel.h in Headers */, -@@ -17013,6 +17087,8 @@ +@@ -17031,6 +17105,8 @@ 51E9049727BCB3D900929E7E /* ICAppBundle.mm in Sources */, 2749F6442146561B008380BF /* InjectedBundleNodeHandle.cpp in Sources */, 2749F6452146561E008380BF /* InjectedBundleRangeHandle.cpp in Sources */, @@ -20342,7 +20410,7 @@ index 878451c5d13c75a94fdda9f65e6808c75e80e130..5ecaea0628959591117ab4a09fb3fd86 B6114A7F29394A1600380B1B /* JSWebExtensionAPIEvent.mm in Sources */, 1C5DC471290B33A20061EC62 /* JSWebExtensionAPIExtension.mm in Sources */, 1C5DC4552908AC900061EC62 /* JSWebExtensionAPINamespace.mm in Sources */, -@@ -17383,6 +17459,8 @@ +@@ -17401,6 +17477,8 @@ E3816B3D27E2463A005EAFC0 /* WebMockContentFilterManager.cpp in Sources */, 31BA924D148831260062EDB5 /* WebNotificationManagerMessageReceiver.cpp in Sources */, 2DF6FE52212E110900469030 /* WebPage.cpp in Sources */, @@ -20352,7 +20420,7 @@ index 878451c5d13c75a94fdda9f65e6808c75e80e130..5ecaea0628959591117ab4a09fb3fd86 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 feae866e7120521e6b651ddf759ab341b609bb1c..e7b94e6299b72eb9ee0b7955e86eaf3ddd8c7e89 100644 +index db04dda4a0e2b1de5268956616b11d1210327803..c609d1b71a3fe45cecf58fb6dc88457f53bfabfd 100644 --- a/Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp +++ b/Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp @@ -237,6 +237,11 @@ void WebLoaderStrategy::scheduleLoad(ResourceLoader& resourceLoader, CachedResou @@ -20434,7 +20502,7 @@ index feae866e7120521e6b651ddf759ab341b609bb1c..e7b94e6299b72eb9ee0b7955e86eaf3d WEBLOADERSTRATEGY_RELEASE_LOG("scheduleLoad: Resource is being scheduled with the NetworkProcess (priority=%d, existingNetworkResourceLoadIdentifierToResume=%" PRIu64 ")", static_cast(resourceLoader.request().priority()), valueOrDefault(existingNetworkResourceLoadIdentifierToResume).toUInt64()); + auto* frame = resourceLoader.frame(); - if (frame && !frame->settings().siteIsolationEnabled() && !WebProcess::singleton().allowsFirstPartyForCookies(loadParameters.request.firstPartyForCookies())) + if (frame && !frame->settings().siteIsolationEnabled() && loadParameters.request.allowCookies() && !WebProcess::singleton().allowsFirstPartyForCookies(loadParameters.request.firstPartyForCookies())) RELEASE_LOG_FAULT(IPC, "scheduleLoad: Process will terminate due to failed allowsFirstPartyForCookies check"); @@ -542,7 +556,7 @@ void WebLoaderStrategy::scheduleLoadFromNetworkProcess(ResourceLoader& resourceL @@ -20511,7 +20579,7 @@ index 3a3e596fa167fadaf36cfafdf8fd91dd0d7c8a8e..a6a305585706f9a407375fd2e365c52b } // namespace WebKit diff --git a/Source/WebKit/WebProcess/Network/WebResourceLoader.cpp b/Source/WebKit/WebProcess/Network/WebResourceLoader.cpp -index 6ce9cf4bbc41eed5f3b49fbcf3979bc6018990cb..99ba2921412b9b9230f637e1cb2d2d9d7ab1cb86 100644 +index 8b0cc12f3f0a953e8a24a0f3f9bea6756f508aba..ce35f7a4cf33908649d00ab2ca3a41b1d5f8c9d0 100644 --- a/Source/WebKit/WebProcess/Network/WebResourceLoader.cpp +++ b/Source/WebKit/WebProcess/Network/WebResourceLoader.cpp @@ -198,9 +198,6 @@ void WebResourceLoader::didReceiveResponse(ResourceResponse&& response, PrivateR @@ -20547,10 +20615,10 @@ index 777d8c44883adc46d0bb782dc411dedc8c2b2213..1e3611ffedbf6c57f73a99df3d4122bf auto permissionHandlers = m_requestsPerOrigin.take(securityOrigin); diff --git a/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp b/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp -index 99ce51bc8d7ec90bb7ecb7affde6236caa6f7008..4865fddeef4a1120cd592c010c1a9b83e41e8af9 100644 +index 83fa6434db76f329c4f92f62de030ba10a7fac2c..e5bf2a62d857b593ad73004131e3c9912bfa2680 100644 --- a/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp +++ b/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp -@@ -442,6 +442,8 @@ void WebChromeClient::setResizable(bool resizable) +@@ -443,6 +443,8 @@ void WebChromeClient::setResizable(bool resizable) void WebChromeClient::addMessageToConsole(MessageSource source, MessageLevel level, const String& message, unsigned lineNumber, unsigned columnNumber, const String& sourceID) { @@ -20587,10 +20655,10 @@ index 87121e8b57e5ad7ef74857685f0db65e164a5bf8..580dca6ca0709a2d620d3999beb69856 { } diff --git a/Source/WebKit/WebProcess/WebCoreSupport/WebLocalFrameLoaderClient.cpp b/Source/WebKit/WebProcess/WebCoreSupport/WebLocalFrameLoaderClient.cpp -index bc3b7869ac8749dde5e3cbc6115461ad30045025..060045ef2dd7bd40f01188d3aa9d4a49b06fcf28 100644 +index f7ac066d15020bf3ec90e742b4c6c125888caa47..91b862d76d930fec7478e65277af03bbd19fb8e0 100644 --- a/Source/WebKit/WebProcess/WebCoreSupport/WebLocalFrameLoaderClient.cpp +++ b/Source/WebKit/WebProcess/WebCoreSupport/WebLocalFrameLoaderClient.cpp -@@ -1542,14 +1542,6 @@ void WebLocalFrameLoaderClient::transitionToCommittedForNewPage() +@@ -1543,14 +1543,6 @@ void WebLocalFrameLoaderClient::transitionToCommittedForNewPage() if (webPage->scrollPinningBehavior() != ScrollPinningBehavior::DoNotPin) view->setScrollPinningBehavior(webPage->scrollPinningBehavior()); @@ -20810,7 +20878,7 @@ index b5e509dd8cc747cd0a0ebaebea0d68cef950c625..474753a3ac9298ee09afc94c2afd6c2e void DrawingAreaCoordinatedGraphics::scheduleDisplay() diff --git a/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp b/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp -index 1e9851cd558280b9463813d9a069d1a2f31bca32..6eddecdb1d0ddce10501308aeb896491a78ba510 100644 +index 6acdee1b52497142573449fbc0158feb47d0e056..c3289afb9bb064e55e7d610b09405b0e85b2a8b6 100644 --- a/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp +++ b/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp @@ -187,8 +187,16 @@ void LayerTreeHost::setViewOverlayRootLayer(GraphicsLayer* viewOverlayRootLayer) @@ -20900,19 +20968,19 @@ index 9f42cd506c17777dc6436faed41b476320155241..b7979270c71d36d5098a47e44227362f virtual void adoptLayersFromDrawingArea(DrawingArea&) { } virtual void adoptDisplayRefreshMonitorsFromDrawingArea(DrawingArea&) { } diff --git a/Source/WebKit/WebProcess/WebPage/WebCookieJar.cpp b/Source/WebKit/WebProcess/WebPage/WebCookieJar.cpp -index 04bcaa28cfd31e55b1513b258b6cd708e3df33db..5d452dc0f93d7b036f57a6ea35deeb7e0bea1a46 100644 +index a7d1c201c99de0f287089f3fd8d43be7fc2ca585..0db71c43d67dc01b9fff79bf9541f8eead31e32a 100644 --- a/Source/WebKit/WebProcess/WebPage/WebCookieJar.cpp +++ b/Source/WebKit/WebProcess/WebPage/WebCookieJar.cpp -@@ -39,6 +39,7 @@ +@@ -41,6 +41,7 @@ #include #include #include +#include #include #include - -@@ -259,4 +260,10 @@ void WebCookieJar::deleteCookie(const WebCore::Document& document, const URL& ur - WebProcess::singleton().ensureNetworkProcessConnection().connection().sendWithAsyncReply(Messages::NetworkConnectionToWebProcess::DeleteCookie(url, cookieName), WTFMove(completionHandler)); + #include +@@ -310,4 +311,10 @@ void WebCookieJar::setCookieAsync(WebCore::Document& document, const URL& url, c + WebProcess::singleton().ensureNetworkProcessConnection().connection().sendWithAsyncReply(Messages::NetworkConnectionToWebProcess::SetCookieFromDOMAsync(document.firstPartyForCookies(), sameSiteInfo, url, frameID, pageID, applyTrackingPreventionInNetworkProcess, shouldRelaxThirdPartyCookieBlocking(webFrame), cookie), WTFMove(completionHandler)); } +void WebCookieJar::setCookieFromResponse(ResourceLoader& loader, const String& setCookieValue) @@ -20923,10 +20991,10 @@ index 04bcaa28cfd31e55b1513b258b6cd708e3df33db..5d452dc0f93d7b036f57a6ea35deeb7e + } // namespace WebKit diff --git a/Source/WebKit/WebProcess/WebPage/WebCookieJar.h b/Source/WebKit/WebProcess/WebPage/WebCookieJar.h -index 83df17e2137dc7664e9240ddfa7a03feb473aeab..9426d55f31beeaf6f6875ab33fa5a46bbd3a6228 100644 +index 29ec1a12eed6accdb3d952c2d590255f349656b8..838f8a971d35ae04d49a3be79fd71305c1b52ee7 100644 --- a/Source/WebKit/WebProcess/WebPage/WebCookieJar.h +++ b/Source/WebKit/WebProcess/WebPage/WebCookieJar.h -@@ -54,6 +54,8 @@ public: +@@ -60,6 +60,8 @@ public: void clearCache() final; @@ -20978,18 +21046,10 @@ index c3248e8505d0e446ea0e1c1886bf1ed0a628b45b..49381c222e255ebc94229d2a0aae1f38 uint64_t m_navigationID { 0 }; }; diff --git a/Source/WebKit/WebProcess/WebPage/WebPage.cpp b/Source/WebKit/WebProcess/WebPage/WebPage.cpp -index f8043e7bd971205dc2ce57d674f6a0d125e34b7a..954cb91d2ac33f5a1c272c6e1370578e5fd1b7d7 100644 +index edc4716cce55be27879a89c19e11d14da0daee88..7971b24d6bea9f48a11e3ec1816e76f5fb1e637b 100644 --- a/Source/WebKit/WebProcess/WebPage/WebPage.cpp +++ b/Source/WebKit/WebProcess/WebPage/WebPage.cpp -@@ -236,6 +236,7 @@ - #include - #include - #include -+#include - #include - #include - #include -@@ -1025,6 +1026,9 @@ WebPage::WebPage(PageIdentifier pageID, WebPageCreationParameters&& parameters) +@@ -1035,6 +1035,9 @@ WebPage::WebPage(PageIdentifier pageID, WebPageCreationParameters&& parameters) #endif #endif // HAVE(SANDBOX_STATE_FLAGS) @@ -20999,7 +21059,7 @@ index f8043e7bd971205dc2ce57d674f6a0d125e34b7a..954cb91d2ac33f5a1c272c6e1370578e updateThrottleState(); #if ENABLE(ACCESSIBILITY_ANIMATION_CONTROL) updateImageAnimationEnabled(); -@@ -1861,6 +1865,22 @@ void WebPage::transitionFrameToLocal(LocalFrameCreationParameters&& creationPara +@@ -1885,6 +1888,22 @@ void WebPage::transitionFrameToLocal(LocalFrameCreationParameters&& creationPara frame->transitionToLocal(creationParameters.layerHostingContextIdentifier); } @@ -21022,7 +21082,7 @@ index f8043e7bd971205dc2ce57d674f6a0d125e34b7a..954cb91d2ac33f5a1c272c6e1370578e 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()); -@@ -2130,25 +2150,21 @@ void WebPage::setSize(const WebCore::IntSize& viewSize) +@@ -2154,25 +2173,21 @@ void WebPage::setSize(const WebCore::IntSize& viewSize) view->resize(viewSize); m_drawingArea->setNeedsDisplay(); @@ -21049,7 +21109,7 @@ index f8043e7bd971205dc2ce57d674f6a0d125e34b7a..954cb91d2ac33f5a1c272c6e1370578e // Viewport properties have no impact on zero sized fixed viewports. if (m_viewSize.isEmpty()) -@@ -2165,20 +2181,18 @@ void WebPage::sendViewportAttributesChanged(const ViewportArguments& viewportArg +@@ -2189,20 +2204,18 @@ void WebPage::sendViewportAttributesChanged(const ViewportArguments& viewportArg ViewportAttributes attr = computeViewportAttributes(viewportArguments, minimumLayoutFallbackWidth, deviceWidth, deviceHeight, 1, m_viewSize); @@ -21077,7 +21137,7 @@ index f8043e7bd971205dc2ce57d674f6a0d125e34b7a..954cb91d2ac33f5a1c272c6e1370578e #if USE(COORDINATED_GRAPHICS) m_drawingArea->didChangeViewportAttributes(WTFMove(attr)); -@@ -2186,7 +2200,6 @@ void WebPage::sendViewportAttributesChanged(const ViewportArguments& viewportArg +@@ -2210,7 +2223,6 @@ void WebPage::sendViewportAttributesChanged(const ViewportArguments& viewportArg send(Messages::WebPageProxy::DidChangeViewportProperties(attr)); #endif } @@ -21085,7 +21145,7 @@ index f8043e7bd971205dc2ce57d674f6a0d125e34b7a..954cb91d2ac33f5a1c272c6e1370578e void WebPage::scrollMainFrameIfNotAtMaxScrollPosition(const IntSize& scrollOffset) { -@@ -2478,6 +2491,7 @@ void WebPage::scaleView(double scale) +@@ -2502,6 +2514,7 @@ void WebPage::scaleView(double scale) } m_page->setViewScaleFactor(scale); @@ -21093,7 +21153,7 @@ index f8043e7bd971205dc2ce57d674f6a0d125e34b7a..954cb91d2ac33f5a1c272c6e1370578e scalePage(pageScale, scrollPositionAtNewScale); } -@@ -2657,18 +2671,14 @@ void WebPage::viewportPropertiesDidChange(const ViewportArguments& viewportArgum +@@ -2681,18 +2694,14 @@ void WebPage::viewportPropertiesDidChange(const ViewportArguments& viewportArgum viewportConfigurationChanged(); #endif @@ -21113,7 +21173,7 @@ index f8043e7bd971205dc2ce57d674f6a0d125e34b7a..954cb91d2ac33f5a1c272c6e1370578e } #if !PLATFORM(IOS_FAMILY) -@@ -3686,6 +3696,97 @@ void WebPage::touchEvent(const WebTouchEvent& touchEvent) +@@ -3745,6 +3754,97 @@ void WebPage::touchEvent(const WebTouchEvent& touchEvent) send(Messages::WebPageProxy::DidReceiveEvent(touchEvent.type(), handled)); } @@ -21211,7 +21271,7 @@ index f8043e7bd971205dc2ce57d674f6a0d125e34b7a..954cb91d2ac33f5a1c272c6e1370578e #endif void WebPage::cancelPointer(WebCore::PointerID pointerId, const WebCore::IntPoint& documentPoint) -@@ -3763,6 +3864,11 @@ void WebPage::sendMessageToTargetBackend(const String& targetId, const String& m +@@ -3822,6 +3922,11 @@ void WebPage::sendMessageToTargetBackend(const String& targetId, const String& m m_inspectorTargetController->sendMessageToTargetBackend(targetId, message); } @@ -21223,7 +21283,7 @@ index f8043e7bd971205dc2ce57d674f6a0d125e34b7a..954cb91d2ac33f5a1c272c6e1370578e void WebPage::insertNewlineInQuotedContent() { Ref frame = CheckedRef(m_page->focusController())->focusedOrMainFrame(); -@@ -3995,6 +4101,7 @@ void WebPage::didCompletePageTransition() +@@ -4054,6 +4159,7 @@ void WebPage::didCompletePageTransition() void WebPage::show() { send(Messages::WebPageProxy::ShowPage()); @@ -21231,7 +21291,7 @@ index f8043e7bd971205dc2ce57d674f6a0d125e34b7a..954cb91d2ac33f5a1c272c6e1370578e } void WebPage::setIsTakingSnapshotsForApplicationSuspension(bool isTakingSnapshotsForApplicationSuspension) -@@ -4982,7 +5089,7 @@ NotificationPermissionRequestManager* WebPage::notificationPermissionRequestMana +@@ -5042,7 +5148,7 @@ NotificationPermissionRequestManager* WebPage::notificationPermissionRequestMana #if ENABLE(DRAG_SUPPORT) @@ -21240,7 +21300,7 @@ index f8043e7bd971205dc2ce57d674f6a0d125e34b7a..954cb91d2ac33f5a1c272c6e1370578e void WebPage::performDragControllerAction(DragControllerAction action, const IntPoint& clientPosition, const IntPoint& globalPosition, OptionSet draggingSourceOperationMask, SelectionData&& selectionData, OptionSet flags) { if (!m_page) { -@@ -7503,6 +7610,9 @@ Ref WebPage::createDocumentLoader(LocalFrame& frame, const Resou +@@ -7579,6 +7685,9 @@ Ref WebPage::createDocumentLoader(LocalFrame& frame, const Resou WebsitePoliciesData::applyToDocumentLoader(WTFMove(*m_pendingWebsitePolicies), documentLoader); m_pendingWebsitePolicies = std::nullopt; } @@ -21251,10 +21311,10 @@ index f8043e7bd971205dc2ce57d674f6a0d125e34b7a..954cb91d2ac33f5a1c272c6e1370578e return documentLoader; diff --git a/Source/WebKit/WebProcess/WebPage/WebPage.h b/Source/WebKit/WebProcess/WebPage/WebPage.h -index 011ab95fa32651e75bb294d00653d8467ca19ca9..c9e8b9952f69e56ee4e085d6a5c31c9e8cfc0e77 100644 +index ef32381609f28e7edbe241c389f0b2ad8d19e88c..203fd209834c3be962a4ced7815c420b8eccd94a 100644 --- a/Source/WebKit/WebProcess/WebPage/WebPage.h +++ b/Source/WebKit/WebProcess/WebPage/WebPage.h -@@ -122,6 +122,10 @@ +@@ -123,6 +123,10 @@ #include "WebPrintOperationGtk.h" #endif @@ -21265,7 +21325,7 @@ index 011ab95fa32651e75bb294d00653d8467ca19ca9..c9e8b9952f69e56ee4e085d6a5c31c9e #if PLATFORM(GTK) || PLATFORM(WPE) #include "InputMethodState.h" #endif -@@ -1079,11 +1083,11 @@ public: +@@ -1082,11 +1086,11 @@ public: void clearSelection(); void restoreSelectionInFocusedEditableElement(); @@ -21279,7 +21339,7 @@ index 011ab95fa32651e75bb294d00653d8467ca19ca9..c9e8b9952f69e56ee4e085d6a5c31c9e void performDragControllerAction(DragControllerAction, WebCore::DragData&&, SandboxExtension::Handle&&, Vector&&); #endif -@@ -1097,6 +1101,9 @@ public: +@@ -1100,6 +1104,9 @@ public: void didStartDrag(); void dragCancelled(); OptionSet allowedDragSourceActions() const { return m_allowedDragSourceActions; } @@ -21289,7 +21349,7 @@ index 011ab95fa32651e75bb294d00653d8467ca19ca9..c9e8b9952f69e56ee4e085d6a5c31c9e #endif void beginPrinting(WebCore::FrameIdentifier, const PrintInfo&); -@@ -1331,6 +1338,7 @@ public: +@@ -1334,6 +1341,7 @@ public: void connectInspector(const String& targetId, Inspector::FrontendChannel::ConnectionType); void disconnectInspector(const String& targetId); void sendMessageToTargetBackend(const String& targetId, const String& message); @@ -21297,7 +21357,7 @@ index 011ab95fa32651e75bb294d00653d8467ca19ca9..c9e8b9952f69e56ee4e085d6a5c31c9e void insertNewlineInQuotedContent(); -@@ -1766,6 +1774,7 @@ private: +@@ -1771,6 +1779,7 @@ private: void tryClose(CompletionHandler&&); void platformDidReceiveLoadParameters(const LoadParameters&); void transitionFrameToLocal(LocalFrameCreationParameters&&, WebCore::FrameIdentifier); @@ -21305,7 +21365,7 @@ index 011ab95fa32651e75bb294d00653d8467ca19ca9..c9e8b9952f69e56ee4e085d6a5c31c9e void loadRequest(LoadParameters&&); [[noreturn]] void loadRequestWaitingForProcessLaunch(LoadParameters&&, URL&&, WebPageProxyIdentifier, bool); void loadData(LoadParameters&&); -@@ -1803,6 +1812,7 @@ private: +@@ -1808,6 +1817,7 @@ private: void updatePotentialTapSecurityOrigin(const WebTouchEvent&, bool wasHandled); #elif ENABLE(TOUCH_EVENTS) void touchEvent(const WebTouchEvent&); @@ -21313,7 +21373,7 @@ index 011ab95fa32651e75bb294d00653d8467ca19ca9..c9e8b9952f69e56ee4e085d6a5c31c9e #endif void cancelPointer(WebCore::PointerID, const WebCore::IntPoint&); -@@ -1948,9 +1958,7 @@ private: +@@ -1953,9 +1963,7 @@ private: void addLayerForFindOverlay(CompletionHandler&&); void removeLayerForFindOverlay(CompletionHandler&&); @@ -21323,7 +21383,7 @@ index 011ab95fa32651e75bb294d00653d8467ca19ca9..c9e8b9952f69e56ee4e085d6a5c31c9e void didChangeSelectedIndexForActivePopupMenu(int32_t newIndex); void setTextForActivePopupMenu(int32_t index); -@@ -2494,6 +2502,7 @@ private: +@@ -2507,6 +2515,7 @@ private: UserActivity m_userActivity; uint64_t m_pendingNavigationID { 0 }; @@ -21332,7 +21392,7 @@ index 011ab95fa32651e75bb294d00653d8467ca19ca9..c9e8b9952f69e56ee4e085d6a5c31c9e bool m_mainFrameProgressCompleted { false }; diff --git a/Source/WebKit/WebProcess/WebPage/WebPage.messages.in b/Source/WebKit/WebProcess/WebPage/WebPage.messages.in -index ff6fe382652733f6aa0eec8dd722f8838eeb0345..38a502e4747a5ba9d360e24ac574f68b0699b999 100644 +index c19f2eb9314e832886f6f8b82e0c2fbd526f90da..b7b96fa5529bbae4ed548b5ecdc45eb7bff56dd3 100644 --- a/Source/WebKit/WebProcess/WebPage/WebPage.messages.in +++ b/Source/WebKit/WebProcess/WebPage/WebPage.messages.in @@ -149,6 +149,7 @@ GenerateSyntheticEditingCommand(enum:uint8_t WebKit::SyntheticEditingCommandType @@ -21359,7 +21419,7 @@ index ff6fe382652733f6aa0eec8dd722f8838eeb0345..38a502e4747a5ba9d360e24ac574f68b LoadRequestWaitingForProcessLaunch(struct WebKit::LoadParameters loadParameters, URL resourceDirectoryURL, WebKit::WebPageProxyIdentifier pageID, bool checkAssumedReadAccessToResourceURL) LoadData(struct WebKit::LoadParameters loadParameters) LoadSimulatedRequestAndResponse(struct WebKit::LoadParameters loadParameters, WebCore::ResourceResponse simulatedResponse) -@@ -357,10 +360,10 @@ GenerateSyntheticEditingCommand(enum:uint8_t WebKit::SyntheticEditingCommandType +@@ -358,10 +361,10 @@ GenerateSyntheticEditingCommand(enum:uint8_t WebKit::SyntheticEditingCommandType AddMIMETypeWithCustomContentProvider(String mimeType) # Drag and drop. @@ -21372,7 +21432,7 @@ index ff6fe382652733f6aa0eec8dd722f8838eeb0345..38a502e4747a5ba9d360e24ac574f68b PerformDragControllerAction(enum:uint8_t WebKit::DragControllerAction action, WebCore::DragData dragData, WebKit::SandboxExtension::Handle sandboxExtensionHandle, Vector sandboxExtensionsForUpload) #endif #if ENABLE(DRAG_SUPPORT) -@@ -369,6 +372,10 @@ GenerateSyntheticEditingCommand(enum:uint8_t WebKit::SyntheticEditingCommandType +@@ -370,6 +373,10 @@ GenerateSyntheticEditingCommand(enum:uint8_t WebKit::SyntheticEditingCommandType DragCancelled() #endif @@ -21384,10 +21444,10 @@ index ff6fe382652733f6aa0eec8dd722f8838eeb0345..38a502e4747a5ba9d360e24ac574f68b 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 941662c67c7f17ba3299d3f47ab42478767700f7..34849f8c2e406058e6ed6bfa988c8e3872390b17 100644 +index b8b292cda067efddcd384a97db869043ee336342..22509c81abe5c7e19e23f4f79290dcb1b59ccd0f 100644 --- a/Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm +++ b/Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm -@@ -826,21 +826,37 @@ String WebPage::platformUserAgent(const URL&) const +@@ -824,21 +824,37 @@ String WebPage::platformUserAgent(const URL&) const bool WebPage::hoverSupportedByPrimaryPointingDevice() const { @@ -21476,7 +21536,7 @@ index f17f5d719d892309ed9c7093384945866b5117b9..1dba47bbf0dbd0362548423a74b38034 } diff --git a/Source/WebKit/WebProcess/WebProcess.cpp b/Source/WebKit/WebProcess/WebProcess.cpp -index db7ed6c8888187dbb57a21d42ca3f8ad811148a8..be6a506c90fa85547de73913b88e9b83f012f808 100644 +index 069839f13c48f7376a0f741b104c73afb2c2646c..13f02ee144eea5afc63c613ab34bd023c3b2665e 100644 --- a/Source/WebKit/WebProcess/WebProcess.cpp +++ b/Source/WebKit/WebProcess/WebProcess.cpp @@ -94,6 +94,7 @@ @@ -21497,18 +21557,18 @@ index db7ed6c8888187dbb57a21d42ca3f8ad811148a8..be6a506c90fa85547de73913b88e9b83 void WebProcess::initializeConnection(IPC::Connection* connection) diff --git a/Source/WebKit/WebProcess/WebProcess.h b/Source/WebKit/WebProcess/WebProcess.h -index 95b1cf2959fee5b4681874ef499067f065fbe599..783ba488fbdd8c9a925aff7bba503e24f24fb26a 100644 +index 14c298a0f41bf415316ce8755d60822b9fa19e25..ce91de223e7db97ea241df35894352b61cd4e995 100644 --- a/Source/WebKit/WebProcess/WebProcess.h +++ b/Source/WebKit/WebProcess/WebProcess.h -@@ -739,7 +739,7 @@ private: +@@ -743,7 +743,7 @@ private: WeakHashMap m_userGestureTokens; --#if PLATFORM(GTK) && USE(EGL) -+#if PLATFORM(WAYLAND) || (PLATFORM(GTK) && USE(EGL)) +-#if PLATFORM(GTK) ++#if PLATFORM(WAYLAND) || PLATFORM(GTK) std::unique_ptr m_displayForCompositing; + OptionSet m_dmaBufRendererBufferMode; #endif - diff --git a/Source/WebKit/WebProcess/win/WebProcessMainWin.cpp b/Source/WebKit/WebProcess/win/WebProcessMainWin.cpp index 8987c3964a9308f2454759de7f8972215a3ae416..bcac0afeb94ed8123d1f9fb0b932c8497d157b49 100644 --- a/Source/WebKit/WebProcess/win/WebProcessMainWin.cpp @@ -21538,7 +21598,7 @@ index 22c698f09790446fb2c80400b55ba6b4ead49658..885104f89f84c7d82490c7c1ca646e74 - (void)touch:(WebEvent *)event { diff --git a/Source/WebKitLegacy/mac/WebView/WebView.mm b/Source/WebKitLegacy/mac/WebView/WebView.mm -index 6f19b9cbf3f9f87add243017e6977f14e690d676..a1241a0049c116c0a6a5578773b37709ef2bd068 100644 +index 35090def553d2ab580ae58db94cb562af4234635..ac67108431eaed4286234f3944480028a7ab9fef 100644 --- a/Source/WebKitLegacy/mac/WebView/WebView.mm +++ b/Source/WebKitLegacy/mac/WebView/WebView.mm @@ -3961,7 +3961,7 @@ + (void)_doNotStartObservingNetworkReachability @@ -21591,7 +21651,7 @@ index 0000000000000000000000000000000000000000..dd6a53e2d57318489b7e49dd7373706d + LIBVPX_LIBRARIES +) diff --git a/Source/cmake/OptionsGTK.cmake b/Source/cmake/OptionsGTK.cmake -index 3bec67a4ce602476764cb55ebb252786b481ba7e..e5fd22ce46d24ee42745c9c0664bad947943a414 100644 +index 5914e61449953f48a0b6c7a8c0c96e6abe22fd20..f4c5dcca111b7c53f44f790e1897370112687cc7 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 @@ -22443,10 +22503,10 @@ index 1067b31bc989748dfcc5502209d36d001b9b239e..7629263fb8bc93dca6dfc01c75eed8d2 + add_subdirectory(Playwright/win) +endif () diff --git a/Tools/Scripts/build-webkit b/Tools/Scripts/build-webkit -index 1644b982d96fb8ed1075d5394fdb8b844dd11069..cda76ceae6656edc9f4607f56b0dff78930fa7f8 100755 +index d9f1afca539b01fcd9e32e4a5182a9b8101e5a92..4c6022fcd7fde326000dade4788f869167707912 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()) { @@ -22471,10 +22531,10 @@ 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 823fd25b6993939914384f282ebb257b44c278cf..9f611ac678b56cf07c335f9d11f2076a29cf0e03 100644 +index 803ed948db90890d47aedf97a3b53a7c60fb79cf..5718011d8c4b7e4d103bb1c33392c2b065192f13 100644 --- a/Tools/WebKitTestRunner/TestController.cpp +++ b/Tools/WebKitTestRunner/TestController.cpp -@@ -966,6 +966,7 @@ void TestController::createWebViewWithOptions(const TestOptions& options) +@@ -964,6 +964,7 @@ void TestController::createWebViewWithOptions(const TestOptions& options) 0, // requestStorageAccessConfirm shouldAllowDeviceOrientationAndMotionAccess, runWebAuthenticationPanel, @@ -22539,7 +22599,7 @@ index fd94bd470a356591a88212836717113864184127..2a04ca6026fd23222fdf00517e564576 + } // namespace WTR diff --git a/Tools/glib/dependencies/apt b/Tools/glib/dependencies/apt -index 7519e73487877b69ded95a7df201ba50b3fac6a5..2ef591c00f92a033538282b0a5e4f619f0e04148 100644 +index 4c2cca7f30f8ecaf8a22e28e515686794b86b87f..1d8ccc075f43a4d9d3724526faa9666290c0aff3 100644 --- a/Tools/glib/dependencies/apt +++ b/Tools/glib/dependencies/apt @@ -1,11 +1,11 @@ @@ -22583,7 +22643,7 @@ index 6af7a5608ff76205702e659d1c2393897c56eaad..401436dddf714e2616b44f61ed1b3330 # These are dependencies necessary for running tests. cups-daemon diff --git a/Tools/jhbuild/jhbuild-minimal.modules b/Tools/jhbuild/jhbuild-minimal.modules -index 57e506c8b68d19aab72a0d5ef363edef6341b97e..f2912ed607475cb985c32c64371f7613a1306e3b 100644 +index 57e506c8b68d19aab72a0d5ef363edef6341b97e..f6eff2f5b667469d4abe574355360c5f8071b96c 100644 --- a/Tools/jhbuild/jhbuild-minimal.modules +++ b/Tools/jhbuild/jhbuild-minimal.modules @@ -26,7 +26,6 @@ @@ -22594,24 +22654,19 @@ index 57e506c8b68d19aab72a0d5ef363edef6341b97e..f2912ed607475cb985c32c64371f7613 -diff --git a/Tools/win/DLLLauncher/DLLLauncherMain.cpp b/Tools/win/DLLLauncher/DLLLauncherMain.cpp -index 879d19af24deecab1d55b97e4141ab1be753d8ce..5b28580d8bde8a346051a82b2c047bead17ec2b0 100644 ---- a/Tools/win/DLLLauncher/DLLLauncherMain.cpp -+++ b/Tools/win/DLLLauncher/DLLLauncherMain.cpp -@@ -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."; --#if USE_CONSOLE_ENTRY_POINT -+// Playwright begin - fwprintf(stderr, L"%s\n%s\n", caption.c_str(), message.c_str()); --#else -- ::MessageBoxW(0, message.c_str(), caption.c_str(), MB_ICONERROR); --#endif -+// Playwright end - return 1; - } - +@@ -247,9 +246,9 @@ + -DJPEGXL_ENABLE_SKCMS=ON"> + libjxl.pc + + + diff --git a/Tools/wpe/backends/fdo/HeadlessViewBackendFdo.cpp b/Tools/wpe/backends/fdo/HeadlessViewBackendFdo.cpp index 4b3d262528d33800ac46e4e9fc342b11f2744979..39d72bd2c04e79b94a5c7634b6abc9b227d5c148 100644 --- a/Tools/wpe/backends/fdo/HeadlessViewBackendFdo.cpp diff --git a/browser_patches/webkit/pw_run.sh b/browser_patches/webkit/pw_run.sh index d14466490a..1d2d6e516b 100755 --- a/browser_patches/webkit/pw_run.sh +++ b/browser_patches/webkit/pw_run.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash function runOSX() { # if script is run as-is diff --git a/browser_patches/winldd/archive.sh b/browser_patches/winldd/archive.sh index 46f1d62a34..02fd1ab8bb 100755 --- a/browser_patches/winldd/archive.sh +++ b/browser_patches/winldd/archive.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -e set +x diff --git a/browser_patches/winldd/build.sh b/browser_patches/winldd/build.sh index 790cd84f27..764762acb0 100755 --- a/browser_patches/winldd/build.sh +++ b/browser_patches/winldd/build.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -e set +x diff --git a/browser_patches/winldd/clean.sh b/browser_patches/winldd/clean.sh index 5c4cb59ee4..61a2ba12e3 100755 --- a/browser_patches/winldd/clean.sh +++ b/browser_patches/winldd/clean.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -e set +x