diff --git a/browser_patches/firefox/UPSTREAM_CONFIG.sh b/browser_patches/firefox/UPSTREAM_CONFIG.sh index e9de343df6..c62a7938ed 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="a1600bbbbc880fa71b9a1b37b9c885c5e2f97542" +BASE_REVISION="2e53a31c9263494236e6ed0fc9707f8650bb9f67" diff --git a/browser_patches/firefox/juggler/Helper.js b/browser_patches/firefox/juggler/Helper.js index f0fa13d563..64286a6322 100644 --- a/browser_patches/firefox/juggler/Helper.js +++ b/browser_patches/firefox/juggler/Helper.js @@ -164,7 +164,10 @@ class Helper { const helper = new Helper(); class EventWatcher { - constructor(receiver, eventNames) { + constructor(receiver, eventNames, pendingEventWatchers = new Set()) { + this._pendingEventWatchers = pendingEventWatchers; + this._pendingEventWatchers.add(this); + this._events = []; this._pendingPromises = []; this._eventListeners = eventNames.map(eventName => @@ -213,6 +216,7 @@ class EventWatcher { } dispose() { + this._pendingEventWatchers.delete(this); for (const promise of this._pendingPromises) promise.reject(new Error('EventWatcher is being disposed')); this._pendingPromises = []; diff --git a/browser_patches/firefox/juggler/TargetRegistry.js b/browser_patches/firefox/juggler/TargetRegistry.js index 1e79a2c167..18be67ac2f 100644 --- a/browser_patches/firefox/juggler/TargetRegistry.js +++ b/browser_patches/firefox/juggler/TargetRegistry.js @@ -492,6 +492,9 @@ class PageTarget { } async updateViewportSize() { + await waitForWindowReady(this._window); + this.updateDPPXOverride(); + // Viewport size is defined by three arguments: // 1. default size. Could be explicit if set as part of `window.open` call, e.g. // `window.open(url, title, 'width=400,height=400')` @@ -502,13 +505,35 @@ class PageTarget { // Otherwise, explicitly set page viewport prevales over browser context // default viewport. const viewportSize = this._viewportSize || this._browserContext.defaultViewportSize; - const actualSize = await setViewportSizeForBrowser(viewportSize, this._linkedBrowser, this._window); - this.updateDPPXOverride(); - await this._channel.connect('').send('awaitViewportDimensions', { - width: actualSize.width, - height: actualSize.height, - deviceSizeIsPageSize: !!this._browserContext.deviceScaleFactor, - }); + if (viewportSize) { + const {width, height} = viewportSize; + this._linkedBrowser.style.setProperty('width', width + 'px'); + this._linkedBrowser.style.setProperty('height', height + 'px'); + this._linkedBrowser.style.setProperty('box-sizing', 'content-box'); + this._linkedBrowser.closest('.browserStack').style.setProperty('overflow', 'auto'); + this._linkedBrowser.closest('.browserStack').style.setProperty('contain', 'size'); + this._linkedBrowser.closest('.browserStack').style.setProperty('scrollbar-width', 'none'); + this._linkedBrowser.browsingContext.inRDMPane = true; + + const rect = this._linkedBrowser.getBoundingClientRect(); + this._window.resizeTo(rect.x + rect.width, rect.y + rect.height); + + await this._channel.connect('').send('awaitViewportDimensions', { width, height }); + } else { + this._linkedBrowser.style.removeProperty('width'); + this._linkedBrowser.style.removeProperty('height'); + this._linkedBrowser.style.removeProperty('box-sizing'); + this._linkedBrowser.closest('.browserStack').style.removeProperty('overflow'); + this._linkedBrowser.closest('.browserStack').style.removeProperty('contain'); + this._linkedBrowser.closest('.browserStack').style.removeProperty('scrollbar-width'); + this._linkedBrowser.browsingContext.inRDMPane = false; + + const actualSize = this._linkedBrowser.getBoundingClientRect(); + await this._channel.connect('').send('awaitViewportDimensions', { + width: actualSize.width, + height: actualSize.height, + }); + } } setEmulatedMedia(mediumOverride) { @@ -1118,26 +1143,6 @@ async function waitForWindowReady(window) { await helper.awaitEvent(window, 'load'); } -async function setViewportSizeForBrowser(viewportSize, browser, window) { - await waitForWindowReady(window); - if (viewportSize) { - const {width, height} = viewportSize; - const rect = browser.getBoundingClientRect(); - window.resizeBy(width - rect.width, height - rect.height); - browser.style.setProperty('min-width', width + 'px'); - browser.style.setProperty('min-height', height + 'px'); - browser.style.setProperty('max-width', width + 'px'); - browser.style.setProperty('max-height', height + 'px'); - } else { - browser.style.removeProperty('min-width'); - browser.style.removeProperty('min-height'); - browser.style.removeProperty('max-width'); - browser.style.removeProperty('max-height'); - } - const rect = browser.getBoundingClientRect(); - return { width: rect.width, height: rect.height }; -} - TargetRegistry.Events = { TargetCreated: Symbol('TargetRegistry.Events.TargetCreated'), TargetDestroyed: Symbol('TargetRegistry.Events.TargetDestroyed'), diff --git a/browser_patches/firefox/juggler/content/FrameTree.js b/browser_patches/firefox/juggler/content/FrameTree.js index f6468df05a..d85f8cd846 100644 --- a/browser_patches/firefox/juggler/content/FrameTree.js +++ b/browser_patches/firefox/juggler/content/FrameTree.js @@ -76,10 +76,14 @@ class FrameTree { helper.addObserver((browsingContext, topic, why) => { this._onBrowsingContextDetached(browsingContext); }, 'browsing-context-discarded'), + helper.addObserver((subject, topic, eventInfo) => { + const [type, jugglerEventId] = eventInfo.split(' '); + this.emit(FrameTree.Events.InputEvent, { type, jugglerEventId: +(jugglerEventId ?? '0') }); + }, 'juggler-mouse-event-hit-renderer'), helper.addProgressListener(webProgress, this, flags), ]; - this._mouseEventListeners = []; + this._dragEventListeners = []; } workers() { @@ -248,14 +252,7 @@ class FrameTree { this._wdm.removeListener(this._wdmListener); this._runtime.dispose(); helper.removeListeners(this._eventListeners); - helper.removeListeners(this._mouseEventListeners); - } - - _onMouseEvent(eventType, eventObject) { - this.emit(FrameTree.Events.MouseEvent, { - type: eventType, - eventObject, - }); + helper.removeListeners(this._dragEventListeners); } onWindowEvent(event) { @@ -274,20 +271,18 @@ class FrameTree { } if (frame === this._mainFrame) { - helper.removeListeners(this._mouseEventListeners); + helper.removeListeners(this._dragEventListeners); const chromeEventHandler = docShell.chromeEventHandler; const options = { mozSystemGroup: true, capture: true, }; - this._mouseEventListeners = [ - helper.addEventListener(chromeEventHandler, 'dragover', this._onMouseEvent.bind(this, 'dragover'), options), - helper.addEventListener(chromeEventHandler, 'dragend', this._onMouseEvent.bind(this, 'dragend'), options), - helper.addEventListener(chromeEventHandler, 'contextmenu', this._onMouseEvent.bind(this, 'contextmenu'), options), - helper.addEventListener(chromeEventHandler, 'mousedown', this._onMouseEvent.bind(this, 'mousedown'), options), - helper.addEventListener(chromeEventHandler, 'mouseup', this._onMouseEvent.bind(this, 'mouseup'), options), - helper.addEventListener(chromeEventHandler, 'mousemove', this._onMouseEvent.bind(this, 'mousemove'), options), - helper.addEventListener(chromeEventHandler, 'dragstart', this._onMouseEvent.bind(this, 'dragstart'), options), + const emitInputEvent = (event) => this.emit(FrameTree.Events.InputEvent, { type: event.type, jugglerEventId: 0 }); + // Drag events are dispatched from content process, so these we don't see in the + // `juggler-mouse-event-hit-renderer` instrumentation. + this._dragEventListeners = [ + helper.addEventListener(chromeEventHandler, 'dragstart', emitInputEvent, options), + helper.addEventListener(chromeEventHandler, 'dragover', emitInputEvent, options), ]; } } @@ -406,7 +401,7 @@ FrameTree.Events = { NavigationAborted: 'navigationaborted', SameDocumentNavigation: 'samedocumentnavigation', PageReady: 'pageready', - MouseEvent: 'mouseevent', + InputEvent: 'inputevent', }; class IsolatedWorld { diff --git a/browser_patches/firefox/juggler/content/PageAgent.js b/browser_patches/firefox/juggler/content/PageAgent.js index dbdc3bebe3..f3a3e745c2 100644 --- a/browser_patches/firefox/juggler/content/PageAgent.js +++ b/browser_patches/firefox/juggler/content/PageAgent.js @@ -116,9 +116,9 @@ class PageAgent { helper.on(this._frameTree, 'websocketframesent', event => this._browserPage.emit('webSocketFrameSent', event)), helper.on(this._frameTree, 'websocketframereceived', event => this._browserPage.emit('webSocketFrameReceived', event)), helper.on(this._frameTree, 'websocketclosed', event => this._browserPage.emit('webSocketClosed', event)), - helper.on(this._frameTree, 'mouseevent', event => { - this._browserPage.emit('pageInputEvent', { type: event.type }); - if (event.type === 'dragstart') { + helper.on(this._frameTree, 'inputevent', inputEvent => { + this._browserPage.emit('pageInputEvent', inputEvent); + if (inputEvent.type === 'dragstart') { // After the dragStart event is dispatched and handled by Web, // it might or might not create a new drag session, depending on its preventing default. setTimeout(() => { @@ -533,7 +533,8 @@ class PageAgent { return; const frame = this._frameTree.mainFrame(); - frame.domWindow().windowUtils.sendMouseEvent( + const winUtils = frame.domWindow().windowUtils; + winUtils.jugglerSendMouseEvent( 'mousemove', x, y, @@ -541,15 +542,16 @@ class PageAgent { 0 /*clickCount*/, modifiers, false /*aIgnoreRootScrollFrame*/, - undefined /*pressure*/, + 0.0 /*pressure*/, 5 /*inputSource*/, - undefined /*isDOMEventSynthesized*/, + true /*isDOMEventSynthesized*/, false /*isWidgetEventSynthesized*/, 0 /*buttons*/, - undefined /*pointerIdentifier*/, - true /*disablePointerEvent*/); + winUtils.DEFAULT_MOUSE_POINTER_ID /* pointerIdentifier */, + true /*disablePointerEvent*/ + ); - frame.domWindow().windowUtils.sendMouseEvent( + winUtils.jugglerSendMouseEvent( 'mousedown', x, y, @@ -557,15 +559,16 @@ class PageAgent { 1 /*clickCount*/, modifiers, false /*aIgnoreRootScrollFrame*/, - undefined /*pressure*/, + 0.0 /*pressure*/, 5 /*inputSource*/, - undefined /*isDOMEventSynthesized*/, + true /*isDOMEventSynthesized*/, false /*isWidgetEventSynthesized*/, 1 /*buttons*/, - undefined /*pointerIdentifier*/, - true /*disablePointerEvent*/); + winUtils.DEFAULT_MOUSE_POINTER_ID /*pointerIdentifier*/, + true /*disablePointerEvent*/, + ); - frame.domWindow().windowUtils.sendMouseEvent( + winUtils.jugglerSendMouseEvent( 'mouseup', x, y, @@ -573,13 +576,14 @@ class PageAgent { 1 /*clickCount*/, modifiers, false /*aIgnoreRootScrollFrame*/, - undefined /*pressure*/, + 0.0 /*pressure*/, 5 /*inputSource*/, - undefined /*isDOMEventSynthesized*/, + true /*isDOMEventSynthesized*/, false /*isWidgetEventSynthesized*/, 0 /*buttons*/, - undefined /*pointerIdentifier*/, - true /*disablePointerEvent*/); + winUtils.DEFAULT_MOUSE_POINTER_ID /*pointerIdentifier*/, + true /*disablePointerEvent*/, + ); } async _dispatchDragEvent({type, x, y, modifiers}) { @@ -588,7 +592,7 @@ class PageAgent { if ((type === 'drop' && dropEffect !== 'none') || type === 'dragover') { const win = this._frameTree.mainFrame().domWindow(); - win.windowUtils.sendMouseEvent( + win.windowUtils.jugglerSendMouseEvent( type, x, y, @@ -596,11 +600,13 @@ class PageAgent { 0, /*clickCount*/ modifiers, false /*aIgnoreRootScrollFrame*/, - undefined /*pressure*/, - undefined /*inputSource*/, - undefined /*isDOMEventSynthesized*/, - undefined /*isWidgetEventSynthesized*/, - 0, /*buttons*/ + 0.0 /*pressure*/, + 0 /*inputSource*/, + true /*isDOMEventSynthesized*/, + false /*isWidgetEventSynthesized*/, + 0 /*buttons*/, + win.windowUtils.DEFAULT_MOUSE_POINTER_ID /* pointerIdentifier */, + false /*disablePointerEvent*/, ); return; } diff --git a/browser_patches/firefox/juggler/content/main.js b/browser_patches/firefox/juggler/content/main.js index b133f63d0a..647238efde 100644 --- a/browser_patches/firefox/juggler/content/main.js +++ b/browser_patches/firefox/juggler/content/main.js @@ -122,8 +122,7 @@ function initialize(browsingContext, docShell, actor) { return data.failedToOverrideTimezone; }, - async awaitViewportDimensions({width, height, deviceSizeIsPageSize}) { - docShell.deviceSizeIsPageSize = deviceSizeIsPageSize; + async awaitViewportDimensions({width, height}) { const win = docShell.domWindow; if (win.innerWidth === width && win.innerHeight === height) return; diff --git a/browser_patches/firefox/juggler/protocol/PageHandler.js b/browser_patches/firefox/juggler/protocol/PageHandler.js index 6ec438f684..8edd35e3bb 100644 --- a/browser_patches/firefox/juggler/protocol/PageHandler.js +++ b/browser_patches/firefox/juggler/protocol/PageHandler.js @@ -99,6 +99,7 @@ class PageHandler { this._pageEventSink = {}; helper.decorateAsEventEmitter(this._pageEventSink); + this._pendingEventWatchers = new Set(); this._eventListeners = [ helper.on(this._pageTarget, PageTarget.Events.DialogOpened, this._onDialogOpened.bind(this)), helper.on(this._pageTarget, PageTarget.Events.DialogClosed, this._onDialogClosed.bind(this)), @@ -154,6 +155,8 @@ class PageHandler { async dispose() { this._contentPage.dispose(); + for (const watcher of this._pendingEventWatchers) + watcher.dispose(); helper.removeListeners(this._eventListeners); } @@ -394,7 +397,7 @@ class PageHandler { const unsubscribe = helper.addObserver((browsingContext, topic, loadIdentifier) => { navigationId = helper.toProtocolNavigationId(loadIdentifier); }, 'juggler-navigation-started-browser'); - browsingContext.loadURI(url, { + browsingContext.loadURI(Services.io.newURI(url), { triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(), loadFlags: Ci.nsIWebNavigation.LOAD_FLAGS_IS_LINK, referrerInfo, @@ -472,14 +475,18 @@ class PageHandler { } async ['Page.dispatchMouseEvent']({type, x, y, button, clickCount, modifiers, buttons}) { - this._pageTarget.ensureContextMenuClosed(); - - const boundingBox = this._pageTarget._linkedBrowser.getBoundingClientRect(); const win = this._pageTarget._window; const sendEvents = async (types) => { + // 1. Scroll element to the desired location first; the coordinates are relative to the element. + this._pageTarget._linkedBrowser.scrollRectIntoViewIfNeeded(x, y, 0, 0); + // 2. Get element's bounding box in the browser after the scroll is completed. + const boundingBox = this._pageTarget._linkedBrowser.getBoundingClientRect(); + + const watcher = new EventWatcher(this._pageEventSink, types, this._pendingEventWatchers); + const promises = []; for (const type of types) { // This dispatches to the renderer synchronously. - win.windowUtils.sendMouseEvent( + const jugglerEventId = win.windowUtils.jugglerSendMouseEvent( type, x + boundingBox.left, y + boundingBox.top, @@ -487,47 +494,52 @@ class PageHandler { clickCount, modifiers, false /* aIgnoreRootScrollFrame */, - undefined /* pressure */, - undefined /* inputSource */, + 0.0 /* pressure */, + 0 /* inputSource */, true /* isDOMEventSynthesized */, - undefined /* isWidgetEventSynthesized */, - buttons); + false /* isWidgetEventSynthesized */, + buttons, + win.windowUtils.DEFAULT_MOUSE_POINTER_ID /* pointerIdentifier */, + false /* disablePointerEvent */ + ); + promises.push(watcher.ensureEvent(type, eventObject => eventObject.jugglerEventId === jugglerEventId)); } + await Promise.all(promises); + await watcher.dispose(); }; // We must switch to proper tab in the tabbed browser so that // 1. Event is dispatched to a proper renderer. // 2. We receive an ack from the renderer for the dispatched event. await this._pageTarget.activateAndRun(async () => { + this._pageTarget.ensureContextMenuClosed(); + if (type === 'mousedown') { if (this._isDragging) return; const eventNames = button === 2 ? ['mousedown', 'contextmenu'] : ['mousedown']; - const watcher = new EventWatcher(this._pageEventSink, eventNames); await sendEvents(eventNames); - await watcher.ensureEventsAndDispose(eventNames); return; } if (type === 'mousemove') { this._lastMousePosition = { x, y }; if (this._isDragging) { - const watcher = new EventWatcher(this._pageEventSink, ['dragover']); + const watcher = new EventWatcher(this._pageEventSink, ['dragover'], this._pendingEventWatchers); await this._contentPage.send('dispatchDragEvent', {type:'dragover', x, y, modifiers}); await watcher.ensureEventsAndDispose(['dragover']); return; } - const watcher = new EventWatcher(this._pageEventSink, ['dragstart', 'mousemove', 'juggler-drag-finalized']); + const watcher = new EventWatcher(this._pageEventSink, ['dragstart', 'juggler-drag-finalized'], this._pendingEventWatchers); await sendEvents(['mousemove']); // The order of events after 'mousemove' is sent: // 1. [dragstart] - might or might NOT be emitted - // 2. [mousemove] - always emitted + // 2. [mousemove] - always emitted. This was awaited as part of `sendEvents` call. // 3. [juggler-drag-finalized] - only emitted if dragstart was emitted. - await watcher.ensureEvent('mousemove'); if (watcher.hasEvent('dragstart')) { const eventObject = await watcher.ensureEvent('juggler-drag-finalized'); this._isDragging = eventObject.dragSessionStarted; @@ -538,7 +550,7 @@ class PageHandler { if (type === 'mouseup') { if (this._isDragging) { - const watcher = new EventWatcher(this._pageEventSink, ['dragover']); + const watcher = new EventWatcher(this._pageEventSink, ['dragover'], this._pendingEventWatchers); await this._contentPage.send('dispatchDragEvent', {type: 'dragover', x, y, modifiers}); await this._contentPage.send('dispatchDragEvent', {type: 'drop', x, y, modifiers}); await this._contentPage.send('dispatchDragEvent', {type: 'dragend', x, y, modifiers}); @@ -549,9 +561,7 @@ class PageHandler { await watcher.ensureEventsAndDispose(['dragover']); this._isDragging = false; } else { - const watcher = new EventWatcher(this._pageEventSink, ['mouseup']); await sendEvents(['mouseup']); - await watcher.ensureEventsAndDispose(['mouseup']); } return; } @@ -559,19 +569,22 @@ class PageHandler { } async ['Page.dispatchWheelEvent']({x, y, button, deltaX, deltaY, deltaZ, modifiers }) { - this._pageTarget.ensureContextMenuClosed(); - const boundingBox = this._pageTarget._linkedBrowser.getBoundingClientRect(); - x += boundingBox.left; - y += boundingBox.top; const deltaMode = 0; // WheelEvent.DOM_DELTA_PIXEL const lineOrPageDeltaX = deltaX > 0 ? Math.floor(deltaX) : Math.ceil(deltaX); const lineOrPageDeltaY = deltaY > 0 ? Math.floor(deltaY) : Math.ceil(deltaY); await this._pageTarget.activateAndRun(() => { + this._pageTarget.ensureContextMenuClosed(); + + // 1. Scroll element to the desired location first; the coordinates are relative to the element. + this._pageTarget._linkedBrowser.scrollRectIntoViewIfNeeded(x, y, 0, 0); + // 2. Get element's bounding box in the browser after the scroll is completed. + const boundingBox = this._pageTarget._linkedBrowser.getBoundingClientRect(); + const win = this._pageTarget._window; win.windowUtils.sendWheelEvent( - x, - y, + x + boundingBox.left, + y + boundingBox.top, deltaX, deltaY, deltaZ, diff --git a/browser_patches/firefox/juggler/screencast/nsScreencastService.cpp b/browser_patches/firefox/juggler/screencast/nsScreencastService.cpp index 2a84221331..25f6171801 100644 --- a/browser_patches/firefox/juggler/screencast/nsScreencastService.cpp +++ b/browser_patches/firefox/juggler/screencast/nsScreencastService.cpp @@ -24,6 +24,8 @@ #include "modules/video_capture/video_capture.h" #include "mozilla/widget/PlatformWidgetTypes.h" #include "video_engine/desktop_capture_impl.h" +#include "VideoEngine.h" + extern "C" { #include "jpeglib.h" } @@ -55,7 +57,7 @@ rtc::scoped_refptr CreateWindowCapturer(nsIWidget* windowId.AppendPrintf("%" PRIuPTR, rawWindowId); bool captureCursor = false; static int moduleId = 0; - return rtc::scoped_refptr(webrtc::DesktopCaptureImpl::Create(++moduleId, windowId.get(), CaptureDeviceType::Window, captureCursor)); + return rtc::scoped_refptr(webrtc::DesktopCaptureImpl::Create(++moduleId, windowId.get(), camera::CaptureDeviceType::Window, captureCursor)); } nsresult generateUid(nsString& uid) { @@ -150,6 +152,7 @@ class nsScreencastService::Session : public rtc::VideoSinkInterfaceDeRegisterCaptureDataCallback(this); else mCaptureModule->DeRegisterRawFrameCallback(this); + mCaptureModule->StopCapture(); if (mEncoder) { mEncoder->finish([this, protect = RefPtr{this}] { NS_DispatchToMainThread(NS_NewRunnableFunction( diff --git a/browser_patches/firefox/patches/bootstrap.diff b/browser_patches/firefox/patches/bootstrap.diff index 4842cde00a..bf4061fac4 100644 --- a/browser_patches/firefox/patches/bootstrap.diff +++ b/browser_patches/firefox/patches/bootstrap.diff @@ -108,10 +108,10 @@ 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 9229a0bd0e041815331aaf2973afda22c007423d..3ce0e453d4124d110e11877f5bbade776d11cfd4 100644 +index 8caff8de9465e44c3535448622386c9a0b8034c2..ea498cce8de6ee099fb36eb640590d0fdace081b 100644 --- a/browser/installer/package-manifest.in +++ b/browser/installer/package-manifest.in -@@ -196,6 +196,9 @@ +@@ -195,6 +195,9 @@ @RESPATH@/chrome/remote.manifest #endif @@ -169,7 +169,7 @@ index a32156978aacd7c8cbe9001250bfa1516dbc360f..ff03ff48b505ef8a9117671bf21e8b0e const transportProvider = { setListener(upgradeListener) { diff --git a/docshell/base/BrowsingContext.cpp b/docshell/base/BrowsingContext.cpp -index e5e8720e90716f96af982d99b4c83ec74715ed26..74c858d6e05081e08a34a98fd517ffd1487dcf12 100644 +index b270badc02ec47c3995fda5c7e6ef2b81fe86150..6027542882ced5ffc55f2cc888cab161774bf90e 100644 --- a/docshell/base/BrowsingContext.cpp +++ b/docshell/base/BrowsingContext.cpp @@ -112,6 +112,20 @@ struct ParamTraits @@ -193,7 +193,7 @@ index e5e8720e90716f96af982d99b4c83ec74715ed26..74c858d6e05081e08a34a98fd517ffd1 template <> struct ParamTraits : public ContiguousEnumSerializer< -@@ -2838,6 +2852,40 @@ void BrowsingContext::DidSet(FieldIndex, +@@ -2857,6 +2871,40 @@ void BrowsingContext::DidSet(FieldIndex, PresContextAffectingFieldChanged(); } @@ -235,7 +235,7 @@ index e5e8720e90716f96af982d99b4c83ec74715ed26..74c858d6e05081e08a34a98fd517ffd1 nsString&& aOldValue) { MOZ_ASSERT(IsTop()); diff --git a/docshell/base/BrowsingContext.h b/docshell/base/BrowsingContext.h -index 8d32d0f5a37396eb18aa217bcac887f131df9fa2..86eca6ab834829283454d1565d1a72116dfb9554 100644 +index 9fc591e0981d587b47f51d9a7c94e3ab8e54d06e..1d05700dc98422e7aed7236e6e5922e0e3501f24 100644 --- a/docshell/base/BrowsingContext.h +++ b/docshell/base/BrowsingContext.h @@ -190,10 +190,10 @@ struct EmbedderColorSchemes { @@ -288,8 +288,8 @@ index 8d32d0f5a37396eb18aa217bcac887f131df9fa2..86eca6ab834829283454d1565d1a7211 bool IsInBFCache() const; bool AllowJavascript() const { return GetAllowJavascript(); } -@@ -1079,6 +1095,23 @@ class BrowsingContext : public nsILoadContext, public nsWrapperCache { - +@@ -1081,6 +1097,23 @@ class BrowsingContext : public nsILoadContext, public nsWrapperCache { + void WalkPresContexts(Callback&&); void PresContextAffectingFieldChanged(); + bool CanSet(FieldIndex, @@ -313,24 +313,24 @@ index 8d32d0f5a37396eb18aa217bcac887f131df9fa2..86eca6ab834829283454d1565d1a7211 bool CanSet(FieldIndex, bool, ContentParent*) { diff --git a/docshell/base/CanonicalBrowsingContext.cpp b/docshell/base/CanonicalBrowsingContext.cpp -index 50863b8b4948166b63ef88eeef640bc27d5489c5..4e73297034a0f6909c4df6ff83d4453ce61f7ae6 100644 +index fef6ea286b5a7c1f7756f1265b74ad27bd8c9917..2697e73023217314fbfaed8f8e5d204232d45cb6 100644 --- a/docshell/base/CanonicalBrowsingContext.cpp +++ b/docshell/base/CanonicalBrowsingContext.cpp -@@ -1435,6 +1435,12 @@ void CanonicalBrowsingContext::LoadURI(const nsAString& aURI, +@@ -1447,6 +1447,12 @@ void CanonicalBrowsingContext::LoadURI(nsIURI* aURI, return; } + { + nsCOMPtr observerService = mozilla::services::GetObserverService(); + if (observerService) { -+ observerService->NotifyObservers(ToSupports(this), "juggler-navigation-started-browser", NS_ConvertASCIItoUTF16(nsPrintfCString("%llu", loadState->GetLoadIdentifier())).get()); ++ observerService->NotifyObservers(ToSupports(this), "juggler-navigation-started-browser", NS_ConvertASCIItoUTF16(nsPrintfCString("%" PRIu64, loadState->GetLoadIdentifier())).get()); + } + } LoadURI(loadState, true); } diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp -index b0f1edf389703f650287ffd7b8320df8835836b5..319291099cca4d77490c429dc8cf4e9735a6fe3c 100644 +index 132ed5c9a9e89cf023a76e7280e2d471475bfc87..7f5a21b0087a823190c2049d165c7fc7dea6c956 100644 --- a/docshell/base/nsDocShell.cpp +++ b/docshell/base/nsDocShell.cpp @@ -15,6 +15,12 @@ @@ -628,7 +628,7 @@ index b0f1edf389703f650287ffd7b8320df8835836b5..319291099cca4d77490c429dc8cf4e97 NS_IMETHODIMP nsDocShell::GetIsNavigating(bool* aOut) { *aOut = mIsNavigating; -@@ -4909,7 +5155,7 @@ nsDocShell::GetVisibility(bool* aVisibility) { +@@ -4945,7 +5191,7 @@ nsDocShell::GetVisibility(bool* aVisibility) { } void nsDocShell::ActivenessMaybeChanged() { @@ -637,7 +637,7 @@ index b0f1edf389703f650287ffd7b8320df8835836b5..319291099cca4d77490c429dc8cf4e97 if (RefPtr presShell = GetPresShell()) { presShell->ActivenessMaybeChanged(); } -@@ -6854,6 +7100,10 @@ bool nsDocShell::CanSavePresentation(uint32_t aLoadType, +@@ -6890,6 +7136,10 @@ bool nsDocShell::CanSavePresentation(uint32_t aLoadType, return false; // no entry to save into } @@ -648,7 +648,7 @@ index b0f1edf389703f650287ffd7b8320df8835836b5..319291099cca4d77490c429dc8cf4e97 MOZ_ASSERT(!mozilla::SessionHistoryInParent(), "mOSHE cannot be non-null with SHIP"); nsCOMPtr viewer = mOSHE->GetContentViewer(); -@@ -8626,6 +8876,12 @@ nsresult nsDocShell::PerformRetargeting(nsDocShellLoadState* aLoadState) { +@@ -8667,6 +8917,12 @@ nsresult nsDocShell::PerformRetargeting(nsDocShellLoadState* aLoadState) { true, // aForceNoOpener getter_AddRefs(newBC)); MOZ_ASSERT(!newBC); @@ -661,7 +661,7 @@ index b0f1edf389703f650287ffd7b8320df8835836b5..319291099cca4d77490c429dc8cf4e97 return rv; } -@@ -9656,6 +9912,16 @@ nsresult nsDocShell::InternalLoad(nsDocShellLoadState* aLoadState, +@@ -9697,6 +9953,16 @@ nsresult nsDocShell::InternalLoad(nsDocShellLoadState* aLoadState, nsINetworkPredictor::PREDICT_LOAD, attrs, nullptr); nsCOMPtr req; @@ -672,13 +672,13 @@ index b0f1edf389703f650287ffd7b8320df8835836b5..319291099cca4d77490c429dc8cf4e97 + nsCOMPtr observerService = + mozilla::services::GetObserverService(); + if (observerService) { -+ observerService->NotifyObservers(GetAsSupports(this), "juggler-navigation-started-renderer", NS_ConvertASCIItoUTF16(nsPrintfCString("%llu", aLoadState->GetLoadIdentifier())).get()); ++ observerService->NotifyObservers(GetAsSupports(this), "juggler-navigation-started-renderer", NS_ConvertASCIItoUTF16(nsPrintfCString("%" PRIu64, aLoadState->GetLoadIdentifier())).get()); + } + } rv = DoURILoad(aLoadState, aCacheKey, getter_AddRefs(req)); if (NS_SUCCEEDED(rv)) { -@@ -12820,6 +13086,9 @@ class OnLinkClickEvent : public Runnable { +@@ -12861,6 +13127,9 @@ class OnLinkClickEvent : public Runnable { mHandler->OnLinkClickSync(mContent, mLoadState, mNoOpenerImplied, mTriggeringPrincipal); } @@ -688,7 +688,7 @@ index b0f1edf389703f650287ffd7b8320df8835836b5..319291099cca4d77490c429dc8cf4e97 return NS_OK; } -@@ -12899,6 +13168,8 @@ nsresult nsDocShell::OnLinkClick( +@@ -12940,6 +13209,8 @@ nsresult nsDocShell::OnLinkClick( nsCOMPtr ev = new OnLinkClickEvent(this, aContent, loadState, noOpenerImplied, aIsTrusted, aTriggeringPrincipal); @@ -698,7 +698,7 @@ index b0f1edf389703f650287ffd7b8320df8835836b5..319291099cca4d77490c429dc8cf4e97 } diff --git a/docshell/base/nsDocShell.h b/docshell/base/nsDocShell.h -index 293bfeee6e0779d15dd6ef60fc06f9969f70f003..a0481717f5f7b5ceb0301b7311c27b5631c258ee 100644 +index 40bc4a21e789e2ee7f241f4adc410e1915105906..31f5574adcace75af6b184a3859e621022671a8a 100644 --- a/docshell/base/nsDocShell.h +++ b/docshell/base/nsDocShell.h @@ -16,6 +16,7 @@ @@ -742,7 +742,7 @@ index 293bfeee6e0779d15dd6ef60fc06f9969f70f003..a0481717f5f7b5ceb0301b7311c27b56 // Handles retrieval of subframe session history for nsDocShell::LoadURI. If a // load is requested in a subframe of the current DocShell, the subframe // loadType may need to reflect the loadType of the parent document, or in -@@ -1313,6 +1326,17 @@ class nsDocShell final : public nsDocLoader, +@@ -1317,6 +1330,17 @@ class nsDocShell final : public nsDocLoader, bool mAllowDNSPrefetch : 1; bool mAllowWindowControl : 1; bool mCSSErrorReportingEnabled : 1; @@ -761,7 +761,7 @@ index 293bfeee6e0779d15dd6ef60fc06f9969f70f003..a0481717f5f7b5ceb0301b7311c27b56 bool mAllowKeywordFixup : 1; bool mDisableMetaRefreshWhenInactive : 1; diff --git a/docshell/base/nsIDocShell.idl b/docshell/base/nsIDocShell.idl -index 6b85ddd842a6d2e29f86047017b78b2007b99867..f530ab61ac26cb7c94c8ccd07d11aa90c5148212 100644 +index cc34ebbe0e8706888e26148f507180a1ebba1326..c0e6a5612beba81c3382839303e3e7a10ded8f05 100644 --- a/docshell/base/nsIDocShell.idl +++ b/docshell/base/nsIDocShell.idl @@ -44,6 +44,7 @@ interface nsIURI; @@ -817,10 +817,10 @@ index 6b85ddd842a6d2e29f86047017b78b2007b99867..f530ab61ac26cb7c94c8ccd07d11aa90 * This attempts to save any applicable layout history state (like * scroll position) in the nsISHEntry. This is normally done diff --git a/dom/base/Document.cpp b/dom/base/Document.cpp -index 6afeefcd0d916c116822e5a5f725403b4577f196..168445a80b3fe05a93e36cd3218a7de3c650d2a3 100644 +index fb54b0ebfb2e910546feb8b4d5b7ab69528c162c..865296d65fed772a5a551935fd3423b7c43f5c5a 100644 --- a/dom/base/Document.cpp +++ b/dom/base/Document.cpp -@@ -3675,6 +3675,9 @@ void Document::SendToConsole(nsCOMArray& aMessages) { +@@ -3645,6 +3645,9 @@ void Document::SendToConsole(nsCOMArray& aMessages) { } void Document::ApplySettingsFromCSP(bool aSpeculative) { @@ -830,7 +830,7 @@ index 6afeefcd0d916c116822e5a5f725403b4577f196..168445a80b3fe05a93e36cd3218a7de3 nsresult rv = NS_OK; if (!aSpeculative) { // 1) apply settings from regular CSP -@@ -3732,6 +3735,11 @@ nsresult Document::InitCSP(nsIChannel* aChannel) { +@@ -3702,6 +3705,11 @@ nsresult Document::InitCSP(nsIChannel* aChannel) { MOZ_ASSERT(!mScriptGlobalObject, "CSP must be initialized before mScriptGlobalObject is set!"); @@ -842,7 +842,7 @@ index 6afeefcd0d916c116822e5a5f725403b4577f196..168445a80b3fe05a93e36cd3218a7de3 // If this is a data document - no need to set CSP. if (mLoadedAsData) { return NS_OK; -@@ -4549,6 +4557,10 @@ bool Document::HasFocus(ErrorResult& rv) const { +@@ -4525,6 +4533,10 @@ bool Document::HasFocus(ErrorResult& rv) const { return false; } @@ -853,7 +853,7 @@ index 6afeefcd0d916c116822e5a5f725403b4577f196..168445a80b3fe05a93e36cd3218a7de3 if (!fm->IsInActiveWindow(bc)) { return false; } -@@ -17926,6 +17938,71 @@ ColorScheme Document::PreferredColorScheme(IgnoreRFP aIgnoreRFP) const { +@@ -18029,6 +18041,71 @@ ColorScheme Document::PreferredColorScheme(IgnoreRFP aIgnoreRFP) const { return LookAndFeel::PreferredColorSchemeForContent(); } @@ -926,10 +926,10 @@ index 6afeefcd0d916c116822e5a5f725403b4577f196..168445a80b3fe05a93e36cd3218a7de3 if (!sLoadingForegroundTopLevelContentDocument) { return false; diff --git a/dom/base/Document.h b/dom/base/Document.h -index 0a6be5aaa858277422fa67656deb8f39152bc24d..0108c385e3e7f34b48bd0992b1779007fc7f49fc 100644 +index 5cee4a31e29a15809e604473e4c80cbbf763b3d9..23a2165b3aefd4b1e84d3035b7ac8ac9edf45535 100644 --- a/dom/base/Document.h +++ b/dom/base/Document.h -@@ -4062,6 +4062,9 @@ class Document : public nsINode, +@@ -4074,6 +4074,9 @@ class Document : public nsINode, // color-scheme meta tag. ColorScheme DefaultColorScheme() const; @@ -1008,20 +1008,20 @@ index 9f6b85ecfac7196cc57c1b1979313403a41d4a6c..0fe045f38c36eb0284bb7c1fb6d33463 dom::MediaCapabilities* MediaCapabilities(); dom::MediaSession* MediaSession(); diff --git a/dom/base/nsContentUtils.cpp b/dom/base/nsContentUtils.cpp -index 66838dc517687e7583dfaa3c06a2dfe62afb4c5f..75f3326be1c4d9d828f548dc22ce8ad969bca2fd 100644 +index 1b5573d5b8508775a4b0f608183b2a6911614e97..a4b7f7e0459b9762848244ce6813e757890bacc1 100644 --- a/dom/base/nsContentUtils.cpp +++ b/dom/base/nsContentUtils.cpp -@@ -8382,7 +8382,8 @@ nsresult nsContentUtils::SendMouseEvent( +@@ -8432,7 +8432,8 @@ nsresult nsContentUtils::SendMouseEvent( bool aIgnoreRootScrollFrame, float aPressure, unsigned short aInputSourceArg, uint32_t aIdentifier, bool aToWindow, PreventDefaultResult* aPreventDefault, bool aIsDOMEventSynthesized, - bool aIsWidgetEventSynthesized) { + bool aIsWidgetEventSynthesized, -+ bool convertToPointer) { ++ bool convertToPointer, uint32_t aJugglerEventId) { nsPoint offset; nsCOMPtr widget = GetWidget(aPresShell, &offset); if (!widget) return NS_ERROR_FAILURE; -@@ -8390,6 +8391,7 @@ nsresult nsContentUtils::SendMouseEvent( +@@ -8440,6 +8441,7 @@ nsresult nsContentUtils::SendMouseEvent( EventMessage msg; Maybe exitFrom; bool contextMenuKey = false; @@ -1029,7 +1029,7 @@ index 66838dc517687e7583dfaa3c06a2dfe62afb4c5f..75f3326be1c4d9d828f548dc22ce8ad9 if (aType.EqualsLiteral("mousedown")) { msg = eMouseDown; } else if (aType.EqualsLiteral("mouseup")) { -@@ -8414,6 +8416,12 @@ nsresult nsContentUtils::SendMouseEvent( +@@ -8464,6 +8466,12 @@ nsresult nsContentUtils::SendMouseEvent( msg = eMouseHitTest; } else if (aType.EqualsLiteral("MozMouseExploreByTouch")) { msg = eMouseExploreByTouch; @@ -1042,7 +1042,7 @@ index 66838dc517687e7583dfaa3c06a2dfe62afb4c5f..75f3326be1c4d9d828f548dc22ce8ad9 } else { return NS_ERROR_FAILURE; } -@@ -8422,12 +8430,21 @@ nsresult nsContentUtils::SendMouseEvent( +@@ -8472,12 +8480,21 @@ nsresult nsContentUtils::SendMouseEvent( aInputSourceArg = MouseEvent_Binding::MOZ_SOURCE_MOUSE; } @@ -1066,8 +1066,11 @@ index 66838dc517687e7583dfaa3c06a2dfe62afb4c5f..75f3326be1c4d9d828f548dc22ce8ad9 event.pointerId = aIdentifier; event.mModifiers = GetWidgetModifiers(aModifiers); event.mButton = aButton; -@@ -8440,6 +8457,7 @@ nsresult nsContentUtils::SendMouseEvent( +@@ -8488,8 +8505,10 @@ nsresult nsContentUtils::SendMouseEvent( + event.mPressure = aPressure; + event.mInputSource = aInputSourceArg; event.mClickCount = aClickCount; ++ event.mJugglerEventId = aJugglerEventId; event.mFlags.mIsSynthesizedForTests = aIsDOMEventSynthesized; event.mExitFrom = exitFrom; + event.convertToPointer = convertToPointer; @@ -1075,7 +1078,7 @@ index 66838dc517687e7583dfaa3c06a2dfe62afb4c5f..75f3326be1c4d9d828f548dc22ce8ad9 nsPresContext* presContext = aPresShell->GetPresContext(); if (!presContext) return NS_ERROR_FAILURE; diff --git a/dom/base/nsContentUtils.h b/dom/base/nsContentUtils.h -index 10bb61f8f0ddba2f8460ccab5e23bea32df32857..b4c4f394cd8a71c57820d3cb562225910e1ba8d1 100644 +index dd455bb3617fce75a94b3312894441ddc7d464d6..2637d4b7c523f90d7df96dc0468d581694852f9c 100644 --- a/dom/base/nsContentUtils.h +++ b/dom/base/nsContentUtils.h @@ -2911,7 +2911,8 @@ class nsContentUtils { @@ -1084,50 +1087,77 @@ index 10bb61f8f0ddba2f8460ccab5e23bea32df32857..b4c4f394cd8a71c57820d3cb56222591 mozilla::PreventDefaultResult* aPreventDefault, - bool aIsDOMEventSynthesized, bool aIsWidgetEventSynthesized); + bool aIsDOMEventSynthesized, bool aIsWidgetEventSynthesized, -+ bool convertToPointer = true); ++ bool convertToPointer = true, uint32_t aJugglerEventId = 0); static void FirePageShowEventForFrameLoaderSwap( nsIDocShellTreeItem* aItem, diff --git a/dom/base/nsDOMWindowUtils.cpp b/dom/base/nsDOMWindowUtils.cpp -index 0997ef3c1092b536d4462d60f81f09425d0537aa..9d4fd3f96e9565c2b824c404654a06d1ad473f1b 100644 +index 007bcf54ca784d49655f1d9d56243dedc8dcafb4..a9ce0d07ffdd362cda194a8485aa8690a3c6ad4a 100644 --- a/dom/base/nsDOMWindowUtils.cpp +++ b/dom/base/nsDOMWindowUtils.cpp -@@ -683,7 +683,7 @@ nsDOMWindowUtils::SendMouseEvent( - int32_t aClickCount, int32_t aModifiers, bool aIgnoreRootScrollFrame, - float aPressure, unsigned short aInputSourceArg, - bool aIsDOMEventSynthesized, bool aIsWidgetEventSynthesized, -- int32_t aButtons, uint32_t aIdentifier, uint8_t aOptionalArgCount, -+ int32_t aButtons, uint32_t aIdentifier, bool aDisablePointerEvent, uint8_t aOptionalArgCount, - bool* aPreventDefault) { - return SendMouseEventCommon( - aType, aX, aY, aButton, aClickCount, aModifiers, aIgnoreRootScrollFrame, -@@ -691,7 +691,7 @@ nsDOMWindowUtils::SendMouseEvent( +@@ -675,6 +675,26 @@ nsDOMWindowUtils::GetPresShellId(uint32_t* aPresShellId) { + return NS_ERROR_FAILURE; + } + ++static uint32_t sJugglerEventId = 1000; ++ ++NS_IMETHODIMP ++nsDOMWindowUtils::JugglerSendMouseEvent( ++ const nsAString& aType, float aX, float aY, int32_t aButton, ++ int32_t aClickCount, int32_t aModifiers, bool aIgnoreRootScrollFrame, ++ float aPressure, unsigned short aInputSourceArg, ++ bool aIsDOMEventSynthesized, bool aIsWidgetEventSynthesized, ++ int32_t aButtons, uint32_t aIdentifier, bool aDisablePointerEvent, ++ uint32_t* aJugglerEventId) { ++ *aJugglerEventId = ++sJugglerEventId; ++ return SendMouseEventCommon( ++ aType, aX, aY, aButton, aClickCount, aModifiers, aIgnoreRootScrollFrame, ++ aPressure, aInputSourceArg, ++ aIdentifier, false, ++ nullptr, aIsDOMEventSynthesized, ++ aIsWidgetEventSynthesized, ++ aButtons, !aDisablePointerEvent, *aJugglerEventId); ++} ++ + NS_IMETHODIMP + nsDOMWindowUtils::SendMouseEvent( + const nsAString& aType, float aX, float aY, int32_t aButton, +@@ -689,7 +709,7 @@ nsDOMWindowUtils::SendMouseEvent( aOptionalArgCount >= 7 ? aIdentifier : DEFAULT_MOUSE_POINTER_ID, false, aPreventDefault, aOptionalArgCount >= 4 ? aIsDOMEventSynthesized : true, aOptionalArgCount >= 5 ? aIsWidgetEventSynthesized : false, - aOptionalArgCount >= 6 ? aButtons : MOUSE_BUTTONS_NOT_SPECIFIED); -+ aOptionalArgCount >= 6 ? aButtons : MOUSE_BUTTONS_NOT_SPECIFIED, !aDisablePointerEvent); ++ aOptionalArgCount >= 6 ? aButtons : MOUSE_BUTTONS_NOT_SPECIFIED, true, 0); } NS_IMETHODIMP -@@ -718,13 +718,13 @@ nsDOMWindowUtils::SendMouseEventCommon( +@@ -707,7 +727,7 @@ nsDOMWindowUtils::SendMouseEventToWindow( + aOptionalArgCount >= 7 ? aIdentifier : DEFAULT_MOUSE_POINTER_ID, true, + nullptr, aOptionalArgCount >= 4 ? aIsDOMEventSynthesized : true, + aOptionalArgCount >= 5 ? aIsWidgetEventSynthesized : false, +- aOptionalArgCount >= 6 ? aButtons : MOUSE_BUTTONS_NOT_SPECIFIED); ++ aOptionalArgCount >= 6 ? aButtons : MOUSE_BUTTONS_NOT_SPECIFIED, 0); + } + + NS_IMETHODIMP +@@ -716,13 +736,13 @@ nsDOMWindowUtils::SendMouseEventCommon( int32_t aClickCount, int32_t aModifiers, bool aIgnoreRootScrollFrame, float aPressure, unsigned short aInputSourceArg, uint32_t aPointerId, bool aToWindow, bool* aPreventDefault, bool aIsDOMEventSynthesized, - bool aIsWidgetEventSynthesized, int32_t aButtons) { -+ bool aIsWidgetEventSynthesized, int32_t aButtons, bool aConvertToPointer) { ++ bool aIsWidgetEventSynthesized, int32_t aButtons, bool aConvertToPointer, uint32_t aJugglerEventId) { RefPtr presShell = GetPresShell(); PreventDefaultResult preventDefaultResult; nsresult rv = nsContentUtils::SendMouseEvent( presShell, aType, aX, aY, aButton, aButtons, aClickCount, aModifiers, aIgnoreRootScrollFrame, aPressure, aInputSourceArg, aPointerId, aToWindow, - &preventDefaultResult, aIsDOMEventSynthesized, aIsWidgetEventSynthesized); -+ &preventDefaultResult, aIsDOMEventSynthesized, aIsWidgetEventSynthesized, aConvertToPointer); ++ &preventDefaultResult, aIsDOMEventSynthesized, aIsWidgetEventSynthesized, aConvertToPointer, aJugglerEventId); if (aPreventDefault) { *aPreventDefault = preventDefaultResult != PreventDefaultResult::No; diff --git a/dom/base/nsDOMWindowUtils.h b/dom/base/nsDOMWindowUtils.h -index 63968c9b7a4e418e4c0de6e7a75fa215a36a9105..4dcec26021e74ada0757b4686bd0782858995a4b 100644 +index 63968c9b7a4e418e4c0de6e7a75fa215a36a9105..decf3ea3833ccdffd49a7aded2d600f9416e8306 100644 --- a/dom/base/nsDOMWindowUtils.h +++ b/dom/base/nsDOMWindowUtils.h @@ -93,7 +93,7 @@ class nsDOMWindowUtils final : public nsIDOMWindowUtils, @@ -1135,15 +1165,15 @@ index 63968c9b7a4e418e4c0de6e7a75fa215a36a9105..4dcec26021e74ada0757b4686bd07828 float aPressure, unsigned short aInputSourceArg, uint32_t aIdentifier, bool aToWindow, bool* aPreventDefault, bool aIsDOMEventSynthesized, - bool aIsWidgetEventSynthesized, int32_t aButtons); -+ bool aIsWidgetEventSynthesized, int32_t aButtons, bool aConvertToPointer = true); ++ bool aIsWidgetEventSynthesized, int32_t aButtons, bool aConvertToPointer = true, uint32_t aJugglerEventId = 0); MOZ_CAN_RUN_SCRIPT nsresult SendTouchEventCommon( diff --git a/dom/base/nsFocusManager.cpp b/dom/base/nsFocusManager.cpp -index 7257629014b442de98176a313e2e51d1633b57a0..c3d647e663786acff4af2a340bb28e17dd4178ed 100644 +index 415e941727187a9ec21aded76857e3d61c32c39b..aad2c96bcba8229b1cda3d578369af62692cf382 100644 --- a/dom/base/nsFocusManager.cpp +++ b/dom/base/nsFocusManager.cpp -@@ -1633,6 +1633,10 @@ void nsFocusManager::SetFocusInner(Element* aNewContent, int32_t aFlags, +@@ -1656,6 +1656,10 @@ Maybe nsFocusManager::SetFocusInner(Element* aNewContent, (GetActiveBrowsingContext() == newRootBrowsingContext); } @@ -1153,8 +1183,8 @@ index 7257629014b442de98176a313e2e51d1633b57a0..c3d647e663786acff4af2a340bb28e17 + // Exit fullscreen if a website focuses another window if (StaticPrefs::full_screen_api_exit_on_windowRaise() && - !isElementInActiveWindow && (aFlags & FLAG_RAISE) && -@@ -2944,7 +2948,9 @@ void nsFocusManager::RaiseWindow(nsPIDOMWindowOuter* aWindow, + !isElementInActiveWindow && (aFlags & FLAG_RAISE)) { +@@ -2935,7 +2939,9 @@ void nsFocusManager::RaiseWindow(nsPIDOMWindowOuter* aWindow, } } @@ -1166,7 +1196,7 @@ index 7257629014b442de98176a313e2e51d1633b57a0..c3d647e663786acff4af2a340bb28e17 // 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 7a5df6943c7652d33f2b4ed773679fd6062023b5..c69fa9ed09ab132187917c4e3cead5647fc5ac68 100644 +index 7a5df6943c7652d33f2b4ed773679fd6062023b5..786d50ddec3456dda59e36959fc9ec814770f6f1 100644 --- a/dom/base/nsGlobalWindowOuter.cpp +++ b/dom/base/nsGlobalWindowOuter.cpp @@ -2481,7 +2481,7 @@ nsresult nsGlobalWindowOuter::SetNewDocument(Document* aDocument, @@ -1219,21 +1249,6 @@ index 7a5df6943c7652d33f2b4ed773679fd6062023b5..c69fa9ed09ab132187917c4e3cead564 void nsGlobalWindowOuter::ClearStatus() { SetStatusOuter(u""_ns); } void nsGlobalWindowOuter::SetDocShell(nsDocShell* aDocShell) { -@@ -3744,6 +3763,14 @@ Maybe nsGlobalWindowOuter::GetRDMDeviceSize( - } - } - } -+ if (topInProcessContentDoc) { -+ nsIDocShell* docShell = topInProcessContentDoc->GetDocShell(); -+ if (docShell && docShell->GetDeviceSizeIsPageSize()) { -+ nsPresContext* presContext = docShell->GetPresContext(); -+ if (presContext) -+ return Some(CSSPixel::FromAppUnitsRounded(presContext->GetVisibleArea().Size())); -+ } -+ } - return Nothing(); - } - diff --git a/dom/base/nsGlobalWindowOuter.h b/dom/base/nsGlobalWindowOuter.h index 5d2a162dce39170b66595de3f99d83afedfae287..a98c01bb6ce1971e41c0398900bf8060542663c9 100644 --- a/dom/base/nsGlobalWindowOuter.h @@ -1247,10 +1262,10 @@ index 5d2a162dce39170b66595de3f99d83afedfae287..a98c01bb6ce1971e41c0398900bf8060 // Outer windows only. virtual void EnsureSizeAndPositionUpToDate() override; diff --git a/dom/base/nsINode.cpp b/dom/base/nsINode.cpp -index 524ae260f708d5d3f6a7582984a57043eff679f2..503f1718527ef677ed9fef3f53e4dcc3f576aa34 100644 +index 6a28c0f314e573373114b9c973f7b9087824cf34..bca53a40f213ba1f7f273ae000609749816f6786 100644 --- a/dom/base/nsINode.cpp +++ b/dom/base/nsINode.cpp -@@ -1331,6 +1331,61 @@ void nsINode::GetBoxQuadsFromWindowOrigin(const BoxQuadOptions& aOptions, +@@ -1340,6 +1340,61 @@ void nsINode::GetBoxQuadsFromWindowOrigin(const BoxQuadOptions& aOptions, mozilla::GetBoxQuadsFromWindowOrigin(this, aOptions, aResult, aRv); } @@ -1298,8 +1313,8 @@ index 524ae260f708d5d3f6a7582984a57043eff679f2..503f1718527ef677ed9fef3f53e4dcc3 + } + presShell->ScrollFrameIntoView( + primaryFrame, Some(rect), -+ ScrollAxis(WhereToScroll::Center, WhenToScroll::Always), -+ ScrollAxis(WhereToScroll::Center, WhenToScroll::Always), ++ ScrollAxis(WhereToScroll::Center, WhenToScroll::IfNotFullyVisible), ++ ScrollAxis(WhereToScroll::Center, WhenToScroll::IfNotFullyVisible), + ScrollFlags::ScrollOverflowHidden); + // If a _visual_ scroll update is pending, cancel it; otherwise, it will + // clobber next scroll (e.g. subsequent window.scrollTo(0, 0) wlll break). @@ -1313,10 +1328,10 @@ index 524ae260f708d5d3f6a7582984a57043eff679f2..503f1718527ef677ed9fef3f53e4dcc3 DOMQuad& aQuad, const GeometryNode& aFrom, const ConvertCoordinateOptions& aOptions, CallerType aCallerType, diff --git a/dom/base/nsINode.h b/dom/base/nsINode.h -index dfce140014c8a1009c3300a9a54871431f260d2e..f5e299613365ee9044ff1c688478172607318886 100644 +index 1245cb9bd967d27cc95ba710999181d90a3531fd..a6c74c4ced45117f97874e0675c43ce04d22212e 100644 --- a/dom/base/nsINode.h +++ b/dom/base/nsINode.h -@@ -2146,6 +2146,10 @@ class nsINode : public mozilla::dom::EventTarget { +@@ -2150,6 +2150,10 @@ class nsINode : public mozilla::dom::EventTarget { nsTArray>& aResult, ErrorResult& aRv); @@ -1356,7 +1371,7 @@ index 85a21e459305f556933f4dc0fa7441d8f9ed95a9..d7cb86479ba2ed06542307349d6d86df static bool DumpEnabled(); diff --git a/dom/chrome-webidl/BrowsingContext.webidl b/dom/chrome-webidl/BrowsingContext.webidl -index 590ad9e2fd6f1457150a39aa2979bebcc991c5ed..e35107c8f5cc64aa97c80cf1a2e11e601deab23d 100644 +index 369da91c6e31dbffe63fcd5044622bb8ca6150d5..aa874d57145261f14fe93e18e398c95eb63b8af5 100644 --- a/dom/chrome-webidl/BrowsingContext.webidl +++ b/dom/chrome-webidl/BrowsingContext.webidl @@ -52,6 +52,24 @@ enum PrefersColorSchemeOverride { @@ -1506,10 +1521,10 @@ index 7e1af00d05fbafa2d828e2c7e4dcc5c82d115f5b..e85af9718d064e4d2865bc944e9d4ba1 ~Geolocation(); diff --git a/dom/html/HTMLInputElement.cpp b/dom/html/HTMLInputElement.cpp -index 84d72bb7c49d8e87e953441c9c842e2ba14016fd..f8cc70d6a5c3932d167627a8c2945113d9c6c31c 100644 +index cb486a7b1270083498be997b31a6e29a206fc320..4387fe0a72463c3759eff30ee9e96e850ed39bc9 100644 --- a/dom/html/HTMLInputElement.cpp +++ b/dom/html/HTMLInputElement.cpp -@@ -57,6 +57,7 @@ +@@ -58,6 +58,7 @@ #include "mozilla/dom/Document.h" #include "mozilla/dom/HTMLDataListElement.h" #include "mozilla/dom/HTMLOptionElement.h" @@ -1517,7 +1532,7 @@ index 84d72bb7c49d8e87e953441c9c842e2ba14016fd..f8cc70d6a5c3932d167627a8c2945113 #include "nsIFormControlFrame.h" #include "nsITextControlFrame.h" #include "nsIFrame.h" -@@ -778,6 +779,12 @@ nsresult HTMLInputElement::InitFilePicker(FilePickerType aType) { +@@ -780,6 +781,12 @@ nsresult HTMLInputElement::InitFilePicker(FilePickerType aType) { return NS_ERROR_FAILURE; } @@ -1531,24 +1546,81 @@ index 84d72bb7c49d8e87e953441c9c842e2ba14016fd..f8cc70d6a5c3932d167627a8c2945113 return NS_OK; } diff --git a/dom/interfaces/base/nsIDOMWindowUtils.idl b/dom/interfaces/base/nsIDOMWindowUtils.idl -index 89338882e70f7954d5f728406302c8bfc88ab3af..30bef01638db72293ea093ecb572b71bb88f9528 100644 +index 25633e4ed848996efb790f4d462d00cbffa13f6d..dc21dcafe7561c3bf226d5190670a1f9b389266b 100644 --- a/dom/interfaces/base/nsIDOMWindowUtils.idl +++ b/dom/interfaces/base/nsIDOMWindowUtils.idl -@@ -372,7 +372,8 @@ interface nsIDOMWindowUtils : nsISupports { - [optional] in boolean aIsDOMEventSynthesized, - [optional] in boolean aIsWidgetEventSynthesized, +@@ -374,6 +374,26 @@ interface nsIDOMWindowUtils : nsISupports { [optional] in long aButtons, -- [optional] in unsigned long aIdentifier); -+ [optional] in unsigned long aIdentifier, -+ [optional] in boolean aDisablePointerEvent); + [optional] in unsigned long aIdentifier); ++ /** ++ * Playwright: a separate method to dispatch mouse event with a ++ * specific `jugglerEventId`. ++ */ ++ [can_run_script] ++ unsigned long jugglerSendMouseEvent(in AString aType, ++ in float aX, ++ in float aY, ++ in long aButton, ++ in long aClickCount, ++ in long aModifiers, ++ in boolean aIgnoreRootScrollFrame, ++ in float aPressure, ++ in unsigned short aInputSourceArg, ++ in boolean aIsDOMEventSynthesized, ++ in boolean aIsWidgetEventSynthesized, ++ in long aButtons, ++ in unsigned long aIdentifier, ++ in boolean aDisablePointerEvent); ++ /** Synthesize a touch event. The event types supported are: * touchstart, touchend, touchmove, and touchcancel + * +diff --git a/dom/ipc/BrowserChild.cpp b/dom/ipc/BrowserChild.cpp +index 4d21d631a523e012acbb15fe6f274db67f462484..9f86f994acb494a49403ef313e48658d9cdd5232 100644 +--- a/dom/ipc/BrowserChild.cpp ++++ b/dom/ipc/BrowserChild.cpp +@@ -1678,6 +1678,21 @@ void BrowserChild::HandleRealMouseButtonEvent(const WidgetMouseEvent& aEvent, + if (postLayerization) { + postLayerization->Register(); + } ++ ++ // Playwright: notify content that mouse event has been received and handled. ++ nsCOMPtr observerService = ++ mozilla::services::GetObserverService(); ++ if (observerService && aEvent.mJugglerEventId) { ++ if (aEvent.mMessage == eMouseUp) { ++ observerService->NotifyObservers(nullptr, "juggler-mouse-event-hit-renderer", NS_ConvertASCIItoUTF16(nsPrintfCString("mouseup %" PRIu32, aEvent.mJugglerEventId)).get()); ++ } else if (aEvent.mMessage == eMouseDown) { ++ observerService->NotifyObservers(nullptr, "juggler-mouse-event-hit-renderer", NS_ConvertASCIItoUTF16(nsPrintfCString("mousedown %" PRIu32, aEvent.mJugglerEventId)).get()); ++ } else if (aEvent.mMessage == eMouseMove) { ++ observerService->NotifyObservers(nullptr, "juggler-mouse-event-hit-renderer", NS_ConvertASCIItoUTF16(nsPrintfCString("mousemove %" PRIu32, aEvent.mJugglerEventId)).get()); ++ } else if (aEvent.mMessage == eContextMenu) { ++ observerService->NotifyObservers(nullptr, "juggler-mouse-event-hit-renderer", NS_ConvertASCIItoUTF16(nsPrintfCString("contextmenu %" PRIu32, aEvent.mJugglerEventId)).get()); ++ } ++ } + } + + mozilla::ipc::IPCResult BrowserChild::RecvNormalPriorityRealMouseButtonEvent( +diff --git a/dom/ipc/CoalescedMouseData.cpp b/dom/ipc/CoalescedMouseData.cpp +index 5aa445d2e0a6169e57c44569974d557b3baf7064..671f71979b407f0ca17c66f13805e851ba30479e 100644 +--- a/dom/ipc/CoalescedMouseData.cpp ++++ b/dom/ipc/CoalescedMouseData.cpp +@@ -67,6 +67,9 @@ bool CoalescedMouseData::CanCoalesce(const WidgetMouseEvent& aEvent, + mCoalescedInputEvent->pointerId == aEvent.pointerId && + mCoalescedInputEvent->mButton == aEvent.mButton && + mCoalescedInputEvent->mButtons == aEvent.mButtons && mGuid == aGuid && ++ // `mJugglerEventId` is 0 for non-juggler events and a unique number for ++ // juggler-emitted events. ++ mCoalescedInputEvent->mJugglerEventId == aEvent.mJugglerEventId && + mInputBlockId == aInputBlockId); + } + diff --git a/dom/media/systemservices/video_engine/desktop_capture_impl.cc b/dom/media/systemservices/video_engine/desktop_capture_impl.cc -index 5eddb4acb3b464e8a743c8b139231c537b364696..b1660d7497cf6b12892200dd8e2b37db745b8941 100644 +index c5fc05f772900dd6d30b252783adb96dfbbde2a1..86d88db3ff9e411adf9fecb114e9ced1af29b610 100644 --- a/dom/media/systemservices/video_engine/desktop_capture_impl.cc +++ b/dom/media/systemservices/video_engine/desktop_capture_impl.cc -@@ -129,11 +129,12 @@ int32_t ScreenDeviceInfoImpl::GetOrientation(const char* aDeviceUniqueIdUTF8, +@@ -132,11 +132,12 @@ int32_t ScreenDeviceInfoImpl::GetOrientation(const char* aDeviceUniqueIdUTF8, return 0; } @@ -1564,7 +1636,7 @@ index 5eddb4acb3b464e8a743c8b139231c537b364696..b1660d7497cf6b12892200dd8e2b37db } int32_t WindowDeviceInfoImpl::Init() { -@@ -429,8 +430,12 @@ int32_t DesktopCaptureImpl::LazyInitDesktopCapturer() { +@@ -436,8 +437,12 @@ int32_t DesktopCaptureImpl::EnsureCapturer() { DesktopCapturer::SourceId sourceId = atoi(mDeviceUniqueId.c_str()); windowCapturer->SelectSource(sourceId); @@ -1579,7 +1651,7 @@ index 5eddb4acb3b464e8a743c8b139231c537b364696..b1660d7497cf6b12892200dd8e2b37db } else if (mDeviceType == CaptureDeviceType::Browser) { // XXX We don't capture cursors, so avoid the extra indirection layer. We // could also pass null for the pMouseCursorMonitor. -@@ -446,7 +451,8 @@ int32_t DesktopCaptureImpl::LazyInitDesktopCapturer() { +@@ -453,7 +458,8 @@ int32_t DesktopCaptureImpl::EnsureCapturer() { } DesktopCaptureImpl::DesktopCaptureImpl(const int32_t aId, const char* aUniqueId, @@ -1589,15 +1661,15 @@ index 5eddb4acb3b464e8a743c8b139231c537b364696..b1660d7497cf6b12892200dd8e2b37db : mModuleId(aId), mTrackingId(mozilla::TrackingId(CaptureEngineToTrackingSourceStr([&] { switch (aType) { -@@ -463,6 +469,7 @@ DesktopCaptureImpl::DesktopCaptureImpl(const int32_t aId, const char* aUniqueId, - aId)), - mDeviceUniqueId(aUniqueId), +@@ -472,6 +478,7 @@ DesktopCaptureImpl::DesktopCaptureImpl(const int32_t aId, const char* aUniqueId, mDeviceType(aType), + mControlThread(mozilla::GetCurrentSerialEventTarget()), + mNextFrameMinimumTime(Timestamp::Zero()), + capture_cursor_(aCaptureCursor), - mTimeEvent(EventWrapper::Create()), - mLastFrameTimeMs(rtc::TimeMillis()), mRunning(false), -@@ -494,6 +501,19 @@ void DesktopCaptureImpl::DeRegisterCaptureDataCallback( + mCallbacks("DesktopCaptureImpl::mCallbacks") {} + +@@ -492,6 +499,19 @@ void DesktopCaptureImpl::DeRegisterCaptureDataCallback( } } @@ -1617,7 +1689,7 @@ index 5eddb4acb3b464e8a743c8b139231c537b364696..b1660d7497cf6b12892200dd8e2b37db int32_t DesktopCaptureImpl::StopCaptureIfAllClientsClose() { { auto callbacks = mCallbacks.Lock(); -@@ -679,6 +699,15 @@ void DesktopCaptureImpl::OnCaptureResult(DesktopCapturer::Result aResult, +@@ -618,6 +638,15 @@ void DesktopCaptureImpl::OnCaptureResult(DesktopCapturer::Result aResult, frameInfo.height = aFrame->size().height(); frameInfo.videoType = VideoType::kARGB; @@ -1632,12 +1704,20 @@ index 5eddb4acb3b464e8a743c8b139231c537b364696..b1660d7497cf6b12892200dd8e2b37db + size_t videoFrameLength = frameInfo.width * frameInfo.height * DesktopFrame::kBytesPerPixel; - IncomingFrame(videoFrame, videoFrameLength, + diff --git a/dom/media/systemservices/video_engine/desktop_capture_impl.h b/dom/media/systemservices/video_engine/desktop_capture_impl.h -index fbbba4b8cd3c4aa93ae4c5f3f34ca78e926a16a7..57a1a7e560e5b862ef0fe18922b25a4b76ec2b88 100644 +index 162589cb0902820afae86f0def2afab7630b96aa..4b95c351d813f5af5e316ea32fc8128ca3e1c8fb 100644 --- a/dom/media/systemservices/video_engine/desktop_capture_impl.h +++ b/dom/media/systemservices/video_engine/desktop_capture_impl.h -@@ -48,6 +48,21 @@ namespace webrtc { +@@ -24,6 +24,7 @@ + #include "api/video/video_sink_interface.h" + #include "modules/desktop_capture/desktop_capturer.h" + #include "modules/video_capture/video_capture.h" ++#include "rtc_base/deprecated/recursive_critical_section.h" + + #include "desktop_device_info.h" + #include "mozilla/DataMutex.h" +@@ -43,6 +44,21 @@ namespace webrtc { class VideoCaptureEncodeInterface; @@ -1659,7 +1739,7 @@ index fbbba4b8cd3c4aa93ae4c5f3f34ca78e926a16a7..57a1a7e560e5b862ef0fe18922b25a4b // simulate deviceInfo interface for video engine, bridge screen/application and // real screen/application device info -@@ -160,13 +175,13 @@ class BrowserDeviceInfoImpl : public VideoCaptureModule::DeviceInfo { +@@ -155,13 +171,13 @@ class BrowserDeviceInfoImpl : public VideoCaptureModule::DeviceInfo { // As with video, DesktopCaptureImpl is a proxy for screen sharing // and follows the video pipeline design class DesktopCaptureImpl : public DesktopCapturer::Callback, @@ -1676,7 +1756,7 @@ index fbbba4b8cd3c4aa93ae4c5f3f34ca78e926a16a7..57a1a7e560e5b862ef0fe18922b25a4b [[nodiscard]] static std::shared_ptr CreateDeviceInfo(const int32_t aId, -@@ -178,6 +193,8 @@ class DesktopCaptureImpl : public DesktopCapturer::Callback, +@@ -173,6 +189,8 @@ class DesktopCaptureImpl : public DesktopCapturer::Callback, void DeRegisterCaptureDataCallback( rtc::VideoSinkInterface* aCallback) override; int32_t StopCaptureIfAllClientsClose() override; @@ -1685,7 +1765,7 @@ index fbbba4b8cd3c4aa93ae4c5f3f34ca78e926a16a7..57a1a7e560e5b862ef0fe18922b25a4b int32_t SetCaptureRotation(VideoRotation aRotation) override; bool SetApplyRotation(bool aEnable) override; -@@ -198,7 +215,8 @@ class DesktopCaptureImpl : public DesktopCapturer::Callback, +@@ -195,7 +213,8 @@ class DesktopCaptureImpl : public DesktopCapturer::Callback, protected: DesktopCaptureImpl(const int32_t aId, const char* aUniqueId, @@ -1693,25 +1773,26 @@ index fbbba4b8cd3c4aa93ae4c5f3f34ca78e926a16a7..57a1a7e560e5b862ef0fe18922b25a4b + const mozilla::camera::CaptureDeviceType aType, + bool aCaptureCusor); virtual ~DesktopCaptureImpl(); - int32_t DeliverCapturedFrame(webrtc::VideoFrame& aCaptureFrame); -@@ -215,6 +233,8 @@ class DesktopCaptureImpl : public DesktopCapturer::Callback, - void LazyInitCaptureThread(); - int32_t LazyInitDesktopCapturer(); - -+ std::set _rawFrameCallbacks; + private: +@@ -204,6 +223,9 @@ class DesktopCaptureImpl : public DesktopCapturer::Callback, + int32_t EnsureCapturer(); + void InitOnThread(int aFramerate); + void ShutdownOnThread(); + ++ rtc::RecursiveCriticalSection mApiCs; ++ std::set _rawFrameCallbacks; // DesktopCapturer::Callback interface. - void OnCaptureResult(DesktopCapturer::Result result, - std::unique_ptr frame) override; -@@ -231,6 +251,7 @@ class DesktopCaptureImpl : public DesktopCapturer::Callback, - std::atomic mMaxFPSNeeded = {0}; - // Set in StartCapture. + 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; + bool capture_cursor_ = true; - // This is created on the main thread and accessed on both the main thread - // and the capturer thread. It is created prior to the capturer thread - // starting and is destroyed after it is stopped. + // 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. diff --git a/dom/script/ScriptSettings.cpp b/dom/script/ScriptSettings.cpp index 1f2d92bcb5d989bf9ecc044f8c51006f991b0007..9cf5dd885e658e0fe5e7ab75e7fc1f97a8d214b8 100644 --- a/dom/script/ScriptSettings.cpp @@ -1796,10 +1877,10 @@ index 2f71b284ee5f7e11f117c447834b48355784448c..2640bd57123c2b03bf4b06a2419cd020 * returned quads are further translated relative to the window * origin -- which is not the layout origin. Further translation diff --git a/dom/workers/RuntimeService.cpp b/dom/workers/RuntimeService.cpp -index 3cc7ccebd23b1136e6360ed40c30353de2f43022..aad9ee4a96ec874fe81f32e131c86c7ebf6c5652 100644 +index ecafc907fa17f16561d6bd43061aacf5eb8c3076..b90c50fdbc7186702959a2f1cc12d82dd11d9ac3 100644 --- a/dom/workers/RuntimeService.cpp +++ b/dom/workers/RuntimeService.cpp -@@ -983,7 +983,7 @@ void PrefLanguagesChanged(const char* /* aPrefName */, void* /* aClosure */) { +@@ -982,7 +982,7 @@ void PrefLanguagesChanged(const char* /* aPrefName */, void* /* aClosure */) { AssertIsOnMainThread(); nsTArray languages; @@ -1808,7 +1889,7 @@ index 3cc7ccebd23b1136e6360ed40c30353de2f43022..aad9ee4a96ec874fe81f32e131c86c7e RuntimeService* runtime = RuntimeService::GetService(); if (runtime) { -@@ -1185,8 +1185,7 @@ bool RuntimeService::RegisterWorker(WorkerPrivate& aWorkerPrivate) { +@@ -1184,8 +1184,7 @@ bool RuntimeService::RegisterWorker(WorkerPrivate& aWorkerPrivate) { } // The navigator overridden properties should have already been read. @@ -1818,7 +1899,7 @@ index 3cc7ccebd23b1136e6360ed40c30353de2f43022..aad9ee4a96ec874fe81f32e131c86c7e mNavigatorPropertiesLoaded = true; } -@@ -1784,6 +1783,13 @@ void RuntimeService::PropagateStorageAccessPermissionGranted( +@@ -1783,6 +1782,13 @@ void RuntimeService::PropagateStorageAccessPermissionGranted( } } @@ -1832,7 +1913,7 @@ index 3cc7ccebd23b1136e6360ed40c30353de2f43022..aad9ee4a96ec874fe81f32e131c86c7e template void RuntimeService::BroadcastAllWorkers(const Func& aFunc) { AssertIsOnMainThread(); -@@ -2211,6 +2217,14 @@ void PropagateStorageAccessPermissionGrantedToWorkers( +@@ -2210,6 +2216,14 @@ void PropagateStorageAccessPermissionGrantedToWorkers( } } @@ -1874,10 +1955,10 @@ index d10dabb5c5ff8e17851edf2bd2efc08e74584d8e..53c4070c5fde43b27fb8fbfdcf4c23d8 bool IsWorkerGlobal(JSObject* global); diff --git a/dom/workers/WorkerPrivate.cpp b/dom/workers/WorkerPrivate.cpp -index 835017a4d681611c4c73d48a04f776ca042b2abc..5f281c8e07e0b53cede0f2f088822c62b1277ddf 100644 +index a5c7f0eb41e83353916819c8c75aec475249356b..706d8501be1f1cb194648950a7e62ea0621febba 100644 --- a/dom/workers/WorkerPrivate.cpp +++ b/dom/workers/WorkerPrivate.cpp -@@ -702,6 +702,18 @@ class UpdateContextOptionsRunnable final : public WorkerControlRunnable { +@@ -703,6 +703,18 @@ class UpdateContextOptionsRunnable final : public WorkerControlRunnable { } }; @@ -1896,7 +1977,7 @@ index 835017a4d681611c4c73d48a04f776ca042b2abc..5f281c8e07e0b53cede0f2f088822c62 class UpdateLanguagesRunnable final : public WorkerRunnable { nsTArray mLanguages; -@@ -1973,6 +1985,16 @@ void WorkerPrivate::UpdateContextOptions( +@@ -1974,6 +1986,16 @@ void WorkerPrivate::UpdateContextOptions( } } @@ -1913,7 +1994,7 @@ index 835017a4d681611c4c73d48a04f776ca042b2abc..5f281c8e07e0b53cede0f2f088822c62 void WorkerPrivate::UpdateLanguages(const nsTArray& aLanguages) { AssertIsOnParentThread(); -@@ -5290,6 +5312,15 @@ void WorkerPrivate::UpdateContextOptionsInternal( +@@ -5287,6 +5309,15 @@ void WorkerPrivate::UpdateContextOptionsInternal( } } @@ -1930,7 +2011,7 @@ index 835017a4d681611c4c73d48a04f776ca042b2abc..5f281c8e07e0b53cede0f2f088822c62 const nsTArray& aLanguages) { WorkerGlobalScope* globalScope = GlobalScope(); diff --git a/dom/workers/WorkerPrivate.h b/dom/workers/WorkerPrivate.h -index a3d28933a02e7d147f7b217cb7753036e8c503cf..a7f081c8869a52d16e91d86ed159310dd7a9fda5 100644 +index bc6e31d0aecf437e22f758cc1b1485712bd507fd..5a6b1213ea1a81205894ccc78571be0978cf6ecc 100644 --- a/dom/workers/WorkerPrivate.h +++ b/dom/workers/WorkerPrivate.h @@ -340,6 +340,8 @@ class WorkerPrivate final @@ -2004,10 +2085,10 @@ index cd641a54d9f968b4f5ac62aff701576e63a29439..27067c68a74a5578b8b5e6bbef3a4b48 inline ClippedTime TimeClip(double time); diff --git a/js/src/debugger/Object.cpp b/js/src/debugger/Object.cpp -index 56c846794236da09f818e123afdcd43cd2956625..e4c543eaa84bc69677c2833f2bc1127f48a20e07 100644 +index 893542410468e2a999d49a826614fcba94576ccd..ff4daddfbbaa239cf12a05907f6f33b8a3be0bab 100644 --- a/js/src/debugger/Object.cpp +++ b/js/src/debugger/Object.cpp -@@ -2382,7 +2382,11 @@ Maybe DebuggerObject::call(JSContext* cx, +@@ -2421,7 +2421,11 @@ Maybe DebuggerObject::call(JSContext* cx, invokeArgs[i].set(args2[i]); } @@ -2169,10 +2250,10 @@ index dac899f7558b26d6848da8b98ed8a93555c8751a..2a07d67fa1c2840b25085566e84dc3b2 // No boxes to return return; diff --git a/layout/base/PresShell.cpp b/layout/base/PresShell.cpp -index 0e38125bc75874f4edbe1916194204ee8845a9bd..96cfa21eed9a4c33ffc7095458268acb263bc75a 100644 +index 4b16430f9d713428c9df5607d3b25b9c2d777647..4f42913c7ecee91921e1f528d0198cf3591eb3a2 100644 --- a/layout/base/PresShell.cpp +++ b/layout/base/PresShell.cpp -@@ -10936,7 +10936,9 @@ auto PresShell::ComputeActiveness() const -> Activeness { +@@ -10901,7 +10901,9 @@ auto PresShell::ComputeActiveness() const -> Activeness { if (!browserChild->IsVisible()) { MOZ_LOG(gLog, LogLevel::Debug, (" > BrowserChild %p is not visible", browserChild)); @@ -2184,10 +2265,10 @@ index 0e38125bc75874f4edbe1916194204ee8845a9bd..96cfa21eed9a4c33ffc7095458268acb // 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 953a040ecf8c99364faa7cbd4d1f212971fe9b47..aa63c02a85cd23303cb4874dbed9425bf4e315ac 100644 +index 171a524cf42b2ca9304a709401f77d12c952c8c4..7b5f0a93c06738927e34de183fa7b28dc5d8e16a 100644 --- a/layout/style/GeckoBindings.h +++ b/layout/style/GeckoBindings.h -@@ -615,6 +615,7 @@ void Gecko_MediaFeatures_GetDeviceSize(const mozilla::dom::Document*, +@@ -630,6 +630,7 @@ void Gecko_MediaFeatures_GetDeviceSize(const mozilla::dom::Document*, float Gecko_MediaFeatures_GetResolution(const mozilla::dom::Document*); bool Gecko_MediaFeatures_PrefersReducedMotion(const mozilla::dom::Document*); @@ -2196,10 +2277,10 @@ index 953a040ecf8c99364faa7cbd4d1f212971fe9b47..aa63c02a85cd23303cb4874dbed9425b const mozilla::dom::Document*); mozilla::StylePrefersColorScheme Gecko_MediaFeatures_PrefersColorScheme( diff --git a/layout/style/nsMediaFeatures.cpp b/layout/style/nsMediaFeatures.cpp -index 5cd90a4ca6cb85808076ece7dbc616c3fecdc352..7fbb6e25a815c4d63919c40beaea89aae62add59 100644 +index 3e1201e8877dd3a2bd1897f8b50732c8579b27f4..d27139a4926c12b9e389f45ad7de8f59fb421f4b 100644 --- a/layout/style/nsMediaFeatures.cpp +++ b/layout/style/nsMediaFeatures.cpp -@@ -276,10 +276,11 @@ bool Gecko_MediaFeatures_MatchesPlatform(StylePlatform aPlatform) { +@@ -277,10 +277,11 @@ bool Gecko_MediaFeatures_MatchesPlatform(StylePlatform aPlatform) { } bool Gecko_MediaFeatures_PrefersReducedMotion(const Document* aDocument) { @@ -2216,10 +2297,10 @@ index 5cd90a4ca6cb85808076ece7dbc616c3fecdc352..7fbb6e25a815c4d63919c40beaea89aa StylePrefersColorScheme Gecko_MediaFeatures_PrefersColorScheme( diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js -index 35dc85223333f510b7dd7b96739738b0f8a1629a..eca736a28ff5a9f75a6e1f19f8f4bc9614a93af0 100644 +index 22a15d306b807902c93dede5855007705237bdbd..65c70243944c87b6894d3e654fd0e4f971cfea70 100644 --- a/modules/libpref/init/all.js +++ b/modules/libpref/init/all.js -@@ -4117,7 +4117,9 @@ pref("devtools.experiment.f12.shortcut_disabled", false); +@@ -4113,7 +4113,9 @@ pref("devtools.experiment.f12.shortcut_disabled", false); // doesn't provide a way to lock the pref pref("dom.postMessage.sharedArrayBuffer.bypassCOOP_COEP.insecure.enabled", false); #else @@ -2382,7 +2463,7 @@ index 94f47133802fd47a8a2bb800bdda8382d7ee82e5..2aa50e24dc1cb39012ed1d2b3b370cce : AppConstants.REMOTE_SETTINGS_SERVER_URL; }, diff --git a/servo/components/style/gecko/media_features.rs b/servo/components/style/gecko/media_features.rs -index 8f56f185d2ab47041a73837fe1b150c305db2893..8282ca4c0aa6d5848642fcfb48e74a90924ca7fe 100644 +index e2ba9f62f0fc8ab83a1d810f74f17d6dd195d6c2..23e268b300475b9372a31e836e52240f5b84852a 100644 --- a/servo/components/style/gecko/media_features.rs +++ b/servo/components/style/gecko/media_features.rs @@ -265,10 +265,15 @@ pub enum ForcedColors { @@ -2560,7 +2641,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 540aaedd7462759740df31a0cb5d228651ba94b7..c0a1119dc4a51e7ff8cbfdbda5f007d9eb958948 100644 +index 43dc9b0614ab007c938dbf66a02ff614524353b7..758dc42b1fcd4f81a1a13ae9e30942489a1b620c 100644 --- a/uriloader/exthandler/nsExternalHelperAppService.cpp +++ b/uriloader/exthandler/nsExternalHelperAppService.cpp @@ -112,6 +112,7 @@ @@ -2679,10 +2760,10 @@ index 540aaedd7462759740df31a0cb5d228651ba94b7..c0a1119dc4a51e7ff8cbfdbda5f007d9 // OnStartRequest) mDialog = nullptr; diff --git a/uriloader/exthandler/nsExternalHelperAppService.h b/uriloader/exthandler/nsExternalHelperAppService.h -index 62f9d60abcd072e4ca23cd44cf52133d29b91dfc..5ebb5c6c305fdbc761641cdf2929787874dad5df 100644 +index 6c8cbc5871d3aa721a3f1a3ff6c0ef8b0044c63e..8e7c9af1a2cfe60c9c543af1ab55f6c229000bd4 100644 --- a/uriloader/exthandler/nsExternalHelperAppService.h +++ b/uriloader/exthandler/nsExternalHelperAppService.h -@@ -253,6 +253,8 @@ class nsExternalHelperAppService : public nsIExternalHelperAppService, +@@ -257,6 +257,8 @@ class nsExternalHelperAppService : public nsIExternalHelperAppService, mozilla::dom::BrowsingContext* aContentContext, bool aForceSave, nsIInterfaceRequestor* aWindowContext, nsIStreamListener** aStreamListener); @@ -2691,7 +2772,7 @@ index 62f9d60abcd072e4ca23cd44cf52133d29b91dfc..5ebb5c6c305fdbc761641cdf29297878 }; /** -@@ -452,6 +454,9 @@ class nsExternalAppHandler final : public nsIStreamListener, +@@ -456,6 +458,9 @@ class nsExternalAppHandler final : public nsIStreamListener, * Upon successful return, both mTempFile and mSaver will be valid. */ nsresult SetUpTempFile(nsIChannel* aChannel); @@ -2768,6 +2849,52 @@ index 1c25e9d9a101233f71e92288a0f93125b81ac1c5..22cf67b0f6e3ddd2b3ed725a314ba6a9 return new InProcessCompositorWidget(aOptions, widget); } #endif +diff --git a/widget/MouseEvents.h b/widget/MouseEvents.h +index 5a19cb4082674ede982a0c66c84bf7c4642abe2b..5fe6ae7b5bf605e5d9130aa164d7cbbb486e54e0 100644 +--- a/widget/MouseEvents.h ++++ b/widget/MouseEvents.h +@@ -203,6 +203,7 @@ class WidgetMouseEvent : public WidgetMouseEventBase, + : mReason(eReal), + mContextMenuTrigger(eNormal), + mClickCount(0), ++ mJugglerEventId(0), + mIgnoreRootScrollFrame(false), + mUseLegacyNonPrimaryDispatch(false), + mClickEventPrevented(false) {} +@@ -213,6 +214,7 @@ class WidgetMouseEvent : public WidgetMouseEventBase, + mReason(aReason), + mContextMenuTrigger(eNormal), + mClickCount(0), ++ mJugglerEventId(0), + mIgnoreRootScrollFrame(false), + mUseLegacyNonPrimaryDispatch(false), + mClickEventPrevented(false) {} +@@ -231,6 +233,7 @@ class WidgetMouseEvent : public WidgetMouseEventBase, + mReason(aReason), + mContextMenuTrigger(aContextMenuTrigger), + mClickCount(0), ++ mJugglerEventId(0), + mIgnoreRootScrollFrame(false), + mUseLegacyNonPrimaryDispatch(false), + mClickEventPrevented(false) { +@@ -280,6 +283,9 @@ class WidgetMouseEvent : public WidgetMouseEventBase, + // Otherwise, this must be 0. + uint32_t mClickCount; + ++ // Unique event ID ++ uint32_t mJugglerEventId; ++ + // Whether the event should ignore scroll frame bounds during dispatch. + bool mIgnoreRootScrollFrame; + +@@ -296,6 +302,7 @@ class WidgetMouseEvent : public WidgetMouseEventBase, + + mExitFrom = aEvent.mExitFrom; + mClickCount = aEvent.mClickCount; ++ mJugglerEventId = aEvent.mJugglerEventId; + mIgnoreRootScrollFrame = aEvent.mIgnoreRootScrollFrame; + mUseLegacyNonPrimaryDispatch = aEvent.mUseLegacyNonPrimaryDispatch; + mClickEventPrevented = aEvent.mClickEventPrevented; diff --git a/widget/cocoa/NativeKeyBindings.mm b/widget/cocoa/NativeKeyBindings.mm index d3e5983259053175584254e7ac01ca9ce024f33a..97f5b851c402fea5477c0ee57af451c62b016eec 100644 --- a/widget/cocoa/NativeKeyBindings.mm @@ -2980,10 +3107,10 @@ index facd2bc65afab8ec1aa322faa20a67464964dfb9..d6dea95472bec6006411753c3dfdab2e } // namespace widget diff --git a/widget/headless/HeadlessWidget.cpp b/widget/headless/HeadlessWidget.cpp -index 0112fab80c463a7d02a1b0397eeb74c075c38501..ba9f27cf9e315b95aebde5338ed5f520df72c779 100644 +index bb369eb0a5e1118d363c5a2fc35984b7d6c2aa28..3e9a6d31558c2720c2c6eef6a8de258bfa422a80 100644 --- a/widget/headless/HeadlessWidget.cpp +++ b/widget/headless/HeadlessWidget.cpp -@@ -109,6 +109,8 @@ void HeadlessWidget::Destroy() { +@@ -110,6 +110,8 @@ void HeadlessWidget::Destroy() { } } @@ -2992,7 +3119,7 @@ index 0112fab80c463a7d02a1b0397eeb74c075c38501..ba9f27cf9e315b95aebde5338ed5f520 nsBaseWidget::OnDestroy(); nsBaseWidget::Destroy(); -@@ -614,5 +616,14 @@ nsresult HeadlessWidget::SynthesizeNativeTouchpadPan( +@@ -621,5 +623,14 @@ nsresult HeadlessWidget::SynthesizeNativeTouchpadPan( return NS_OK; } @@ -3008,7 +3135,7 @@ index 0112fab80c463a7d02a1b0397eeb74c075c38501..ba9f27cf9e315b95aebde5338ed5f520 } // namespace widget } // namespace mozilla diff --git a/widget/headless/HeadlessWidget.h b/widget/headless/HeadlessWidget.h -index f07c929d9228c5dfebf983818213516bc4be5cb6..e560485adefeb1f58efd65c0b6c941ccc4fd4723 100644 +index 9856991ef32f25f51942f8cd664a09bec2192c70..948947a421179e91c51005aeb83ed0d18cfc84ce 100644 --- a/widget/headless/HeadlessWidget.h +++ b/widget/headless/HeadlessWidget.h @@ -141,6 +141,9 @@ class HeadlessWidget : public nsBaseWidget { @@ -3021,6 +3148,26 @@ index f07c929d9228c5dfebf983818213516bc4be5cb6..e560485adefeb1f58efd65c0b6c941cc private: ~HeadlessWidget(); bool mEnabled; +diff --git a/widget/nsGUIEventIPC.h b/widget/nsGUIEventIPC.h +index ad9c1887c6c95447b161b73c8623cef478137c75..c71e9ede72ff69c7e6c2080d804ec47c0051c397 100644 +--- a/widget/nsGUIEventIPC.h ++++ b/widget/nsGUIEventIPC.h +@@ -234,6 +234,7 @@ struct ParamTraits { + aParam.mExitFrom.value())); + } + WriteParam(aWriter, aParam.mClickCount); ++ WriteParam(aWriter, aParam.mJugglerEventId); + } + + static bool Read(MessageReader* aReader, paramType* aResult) { +@@ -258,6 +259,7 @@ struct ParamTraits { + aResult->mExitFrom = Some(static_cast(exitFrom)); + } + rv = rv && ReadParam(aReader, &aResult->mClickCount); ++ rv = rv && ReadParam(aReader, &aResult->mJugglerEventId); + return rv; + } + }; diff --git a/xpcom/reflect/xptinfo/xptinfo.h b/xpcom/reflect/xptinfo/xptinfo.h index 2456c2c2b58b27cd595880b547ed20fb687a1835..e967c089b2331c7cd36d34e511543fbc84320b7d 100644 --- a/xpcom/reflect/xptinfo/xptinfo.h diff --git a/browser_patches/firefox/preferences/playwright.cfg b/browser_patches/firefox/preferences/playwright.cfg index 503f5fe896..6c33bd2545 100644 --- a/browser_patches/firefox/preferences/playwright.cfg +++ b/browser_patches/firefox/preferences/playwright.cfg @@ -78,6 +78,9 @@ pref("geo.provider.testing", true); // THESE ARE NICHE PROPERTIES THAT ARE NICE TO HAVE // ================================================================= +// Enable software-backed webgl. See https://phabricator.services.mozilla.com/D164016 +pref("webgl.forbid-software", false); + // Disable auto-fill for credit cards and addresses. // See https://github.com/microsoft/playwright/issues/21393 pref("extensions.formautofill.creditCards.supported", "off"); diff --git a/browser_patches/webkit/UPSTREAM_CONFIG.sh b/browser_patches/webkit/UPSTREAM_CONFIG.sh index 1e3b17c2f0..98c0d6d63b 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="63cd0995822b54b725b9746dbd3c7e23f2ce81fb" +BASE_REVISION="973843664d25524ba050bd37cabe2e44ffc0c512" diff --git a/browser_patches/webkit/embedder/Playwright/mac/BrowserWindowController.m b/browser_patches/webkit/embedder/Playwright/mac/BrowserWindowController.m index 275d4b85f1..cebb042874 100644 --- a/browser_patches/webkit/embedder/Playwright/mac/BrowserWindowController.m +++ b/browser_patches/webkit/embedder/Playwright/mac/BrowserWindowController.m @@ -211,7 +211,7 @@ static void* keyValueObservingContext = &keyValueObservingContext; | _WKRenderingProgressEventFirstLayoutAfterSuppressedIncrementalRendering | _WKRenderingProgressEventFirstPaintAfterSuppressedIncrementalRendering; - _webView.customUserAgent = @"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.4 Safari/605.1.15"; + _webView.customUserAgent = @"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.4 Safari/605.1.15"; _webView._usePlatformFindUI = NO; diff --git a/browser_patches/webkit/patches/bootstrap.diff b/browser_patches/webkit/patches/bootstrap.diff index 2ee09d8cbb..720015ac07 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 4e0d6e2dcb1950d19d6bdfc99af0dc7331f81eb9..c47e36f0b24cc4698caea257bd6c508dbdee6085 100644 +index b4fe2e7aa8c1b89667c5e52e4320f433e6d15bd0..2c81e6493c7e8aa8fa084ab941546c47c67dc73e 100644 --- a/Source/JavaScriptCore/CMakeLists.txt +++ b/Source/JavaScriptCore/CMakeLists.txt -@@ -1391,22 +1391,27 @@ set(JavaScriptCore_INSPECTOR_DOMAINS +@@ -1393,22 +1393,27 @@ set(JavaScriptCore_INSPECTOR_DOMAINS ${JAVASCRIPTCORE_DIR}/inspector/protocol/CSS.json ${JAVASCRIPTCORE_DIR}/inspector/protocol/Canvas.json ${JAVASCRIPTCORE_DIR}/inspector/protocol/Console.json @@ -168,7 +168,7 @@ index e6b24967273095ae424ac9b3fe5e081ee8999ab7..9f7b72259ab79504b8bfcc24d35abe70 void functionDetails(Protocol::ErrorString&, JSC::JSValue, RefPtr& result); void getPreview(Protocol::ErrorString&, const String& objectId, RefPtr& result); diff --git a/Source/JavaScriptCore/inspector/InjectedScriptSource.js b/Source/JavaScriptCore/inspector/InjectedScriptSource.js -index 1cf725d02a5771cddee1029669eac752efc9bf3e..3d625dec9a281e898f4e3085bbfec8291020848b 100644 +index 26acd0e88787100e12e72bbca29cfeb7a086919c..cab3831dbcfee9bd03d0d9b476b40180ee5ea13d 100644 --- a/Source/JavaScriptCore/inspector/InjectedScriptSource.js +++ b/Source/JavaScriptCore/inspector/InjectedScriptSource.js @@ -172,7 +172,7 @@ let InjectedScript = class InjectedScript extends PrototypelessObjectBase @@ -1644,10 +1644,10 @@ index 0000000000000000000000000000000000000000..7f0cca1ec49681971d7dd81b8f29b50a + ] +} diff --git a/Source/JavaScriptCore/inspector/protocol/Runtime.json b/Source/JavaScriptCore/inspector/protocol/Runtime.json -index 274b01596d490fb81b48cf89bf668e0634e8b423..357aad51bbdc1768efba89b736bb2964ebc4b30e 100644 +index 3abd2c55aed68dc1f27ec93951233a6e1c082000..f922c41a1a71d5657750780f9c69e6140a84ea75 100644 --- a/Source/JavaScriptCore/inspector/protocol/Runtime.json +++ b/Source/JavaScriptCore/inspector/protocol/Runtime.json -@@ -261,12 +261,21 @@ +@@ -263,12 +263,21 @@ { "name": "doNotPauseOnExceptionsAndMuteConsole", "type": "boolean", "optional": true, "description": "Specifies whether function call should stop on exceptions and mute console. Overrides setPauseOnException state." }, { "name": "returnByValue", "type": "boolean", "optional": true, "description": "Whether the result is expected to be a JSON object which should be sent by value." }, { "name": "generatePreview", "type": "boolean", "optional": true, "description": "Whether preview should be generated for the result." }, @@ -1671,7 +1671,7 @@ index 274b01596d490fb81b48cf89bf668e0634e8b423..357aad51bbdc1768efba89b736bb2964 }, { "name": "getPreview", -@@ -404,6 +413,15 @@ +@@ -406,6 +415,15 @@ "parameters": [ { "name": "context", "$ref": "ExecutionContextDescription", "description": "A newly created execution context." } ] @@ -2099,7 +2099,7 @@ index 82eb8252b613cd3fe29530285d4ab2748c7be484..736a3d3a82dc35cf631b5ee9cbb47218 isa = XCConfigurationList; buildConfigurations = ( diff --git a/Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml b/Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml -index 16e9823f87074bae3136c166e4c26bc9610fb218..817edd2527d2f7816ae723bf430aebccebc1d35b 100644 +index 5415b62f60ba865ab836c540678e070eaae0691d..330c152eb4f1cf86c846021f61a318642f44c131 100644 --- a/Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml +++ b/Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml @@ -562,6 +562,7 @@ AspectRatioOfImgFromWidthAndHeightEnabled: @@ -2119,7 +2119,7 @@ index 16e9823f87074bae3136c166e4c26bc9610fb218..817edd2527d2f7816ae723bf430aebcc WebCore: default: false -@@ -1686,6 +1687,7 @@ CrossOriginEmbedderPolicyEnabled: +@@ -1718,6 +1719,7 @@ CrossOriginEmbedderPolicyEnabled: WebCore: default: false @@ -2127,7 +2127,7 @@ index 16e9823f87074bae3136c166e4c26bc9610fb218..817edd2527d2f7816ae723bf430aebcc CrossOriginOpenerPolicyEnabled: type: bool status: stable -@@ -1696,7 +1698,7 @@ CrossOriginOpenerPolicyEnabled: +@@ -1728,7 +1730,7 @@ CrossOriginOpenerPolicyEnabled: WebKitLegacy: default: false WebKit: @@ -2136,7 +2136,7 @@ index 16e9823f87074bae3136c166e4c26bc9610fb218..817edd2527d2f7816ae723bf430aebcc WebCore: default: false -@@ -1726,7 +1728,7 @@ CustomPasteboardDataEnabled: +@@ -1758,7 +1760,7 @@ CustomPasteboardDataEnabled: WebKitLegacy: default: false WebKit: @@ -2145,7 +2145,7 @@ index 16e9823f87074bae3136c166e4c26bc9610fb218..817edd2527d2f7816ae723bf430aebcc default: false DNSPrefetchingEnabled: -@@ -1771,6 +1773,7 @@ DOMAudioSessionFullEnabled: +@@ -1803,6 +1805,7 @@ DOMAudioSessionFullEnabled: WebCore: default: false @@ -2153,7 +2153,7 @@ index 16e9823f87074bae3136c166e4c26bc9610fb218..817edd2527d2f7816ae723bf430aebcc DOMPasteAccessRequestsEnabled: type: bool status: internal -@@ -1782,7 +1785,7 @@ DOMPasteAccessRequestsEnabled: +@@ -1814,7 +1817,7 @@ DOMPasteAccessRequestsEnabled: default: false WebKit: "PLATFORM(IOS) || PLATFORM(MAC) || PLATFORM(GTK)": true @@ -2162,7 +2162,7 @@ index 16e9823f87074bae3136c166e4c26bc9610fb218..817edd2527d2f7816ae723bf430aebcc WebCore: default: false -@@ -3124,6 +3127,7 @@ InspectorAttachmentSide: +@@ -3170,6 +3173,7 @@ InspectorAttachmentSide: WebKit: default: 0 @@ -2170,7 +2170,7 @@ index 16e9823f87074bae3136c166e4c26bc9610fb218..817edd2527d2f7816ae723bf430aebcc InspectorStartsAttached: type: bool status: embedder -@@ -3131,7 +3135,7 @@ InspectorStartsAttached: +@@ -3177,7 +3181,7 @@ InspectorStartsAttached: exposed: [ WebKit ] defaultValue: WebKit: @@ -2179,7 +2179,7 @@ index 16e9823f87074bae3136c166e4c26bc9610fb218..817edd2527d2f7816ae723bf430aebcc InspectorWindowFrame: type: String -@@ -3500,6 +3504,7 @@ LayoutViewportHeightExpansionFactor: +@@ -3546,6 +3550,7 @@ LayoutViewportHeightExpansionFactor: WebCore: default: 0 @@ -2187,7 +2187,7 @@ index 16e9823f87074bae3136c166e4c26bc9610fb218..817edd2527d2f7816ae723bf430aebcc LazyIframeLoadingEnabled: type: bool status: stable -@@ -3510,10 +3515,11 @@ LazyIframeLoadingEnabled: +@@ -3556,10 +3561,11 @@ LazyIframeLoadingEnabled: WebKitLegacy: default: true WebKit: @@ -2201,7 +2201,7 @@ index 16e9823f87074bae3136c166e4c26bc9610fb218..817edd2527d2f7816ae723bf430aebcc LazyImageLoadingEnabled: type: bool status: stable -@@ -3524,7 +3530,7 @@ LazyImageLoadingEnabled: +@@ -3570,7 +3576,7 @@ LazyImageLoadingEnabled: WebKitLegacy: default: false WebKit: @@ -2210,7 +2210,7 @@ index 16e9823f87074bae3136c166e4c26bc9610fb218..817edd2527d2f7816ae723bf430aebcc WebCore: default: false -@@ -4867,6 +4873,19 @@ PluginsEnabled: +@@ -4896,6 +4902,19 @@ PluginsEnabled: WebCore: default: false @@ -2230,24 +2230,24 @@ index 16e9823f87074bae3136c166e4c26bc9610fb218..817edd2527d2f7816ae723bf430aebcc PopoverAttributeEnabled: type: bool status: stable -@@ -6491,6 +6510,7 @@ UseCGDisplayListsForDOMRendering: +@@ -6519,6 +6538,7 @@ UseCGDisplayListsForDOMRendering: WebKit: default: true +# Playwright: force-disable on Windows. UseGPUProcessForCanvasRenderingEnabled: type: bool - status: preview -@@ -6503,7 +6523,7 @@ UseGPUProcessForCanvasRenderingEnabled: + status: stable +@@ -6531,7 +6551,7 @@ UseGPUProcessForCanvasRenderingEnabled: defaultValue: WebKit: "ENABLE(GPU_PROCESS_BY_DEFAULT)": true -- "PLATFORM(WIN)": true -+ "PLATFORM(WIN)": false +- "USE(GRAPHICS_LAYER_WC)": true ++ "USE(GRAPHICS_LAYER_WC)": false default: false UseGPUProcessForDOMRenderingEnabled: -@@ -6547,6 +6567,7 @@ UseGPUProcessForMediaEnabled: +@@ -6575,6 +6595,7 @@ UseGPUProcessForMediaEnabled: "ENABLE(GPU_PROCESS_BY_DEFAULT)": true default: false @@ -2255,17 +2255,17 @@ index 16e9823f87074bae3136c166e4c26bc9610fb218..817edd2527d2f7816ae723bf430aebcc UseGPUProcessForWebGLEnabled: type: bool status: internal -@@ -6558,7 +6579,7 @@ UseGPUProcessForWebGLEnabled: +@@ -6586,7 +6607,7 @@ UseGPUProcessForWebGLEnabled: default: false WebKit: "ENABLE(GPU_PROCESS_BY_DEFAULT) && ENABLE(GPU_PROCESS_WEBGL_BY_DEFAULT)": true -- "PLATFORM(WIN)": true -+ "PLATFORM(WIN)": false +- "USE(GRAPHICS_LAYER_WC)": true ++ "USE(GRAPHICS_LAYER_WC)": false default: false 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 f66b8f935f5f38db8c99277afc3bde93354de555..66e9dfd0ef2a5f9bd0f9a8c540b3f5107cf8e209 100644 +index 3fdacb7ba417ae4df1e10ee3a22a1970309ff506..374625de2805d1b4e2eff00c88377497ee65b869 100644 --- a/Source/WTF/wtf/PlatformEnable.h +++ b/Source/WTF/wtf/PlatformEnable.h @@ -412,7 +412,7 @@ @@ -2287,7 +2287,7 @@ index f66b8f935f5f38db8c99277afc3bde93354de555..66e9dfd0ef2a5f9bd0f9a8c540b3f510 #if !defined(ENABLE_TOUCH_ACTION_REGIONS) diff --git a/Source/WTF/wtf/PlatformEnableCocoa.h b/Source/WTF/wtf/PlatformEnableCocoa.h -index a7dcc97171eba7ee7f48b44bb7deb1615316d06a..30cda0846e83914da67dd67681bbd058e881f4aa 100644 +index c860de841fca370eaeb07bdc95a5f2d80eb86acc..218f860610c18dbd4fab07dc52ab1061c20a58b0 100644 --- a/Source/WTF/wtf/PlatformEnableCocoa.h +++ b/Source/WTF/wtf/PlatformEnableCocoa.h @@ -267,7 +267,7 @@ @@ -2300,10 +2300,10 @@ index a7dcc97171eba7ee7f48b44bb7deb1615316d06a..30cda0846e83914da67dd67681bbd058 #endif diff --git a/Source/WTF/wtf/PlatformHave.h b/Source/WTF/wtf/PlatformHave.h -index a2856e88ec98ffd141a3a44fbe6dabb8c8059735..84d5af7d600a55e66b46dcb947b1e9fcbd700bfc 100644 +index a4d2098b0bd73ab414aa83047257857d5290ceea..0bd10e4823bb64f6dd022eb0bbb5f6bd9040fe98 100644 --- a/Source/WTF/wtf/PlatformHave.h +++ b/Source/WTF/wtf/PlatformHave.h -@@ -426,7 +426,7 @@ +@@ -422,7 +422,7 @@ #define HAVE_FOUNDATION_WITH_SAME_SITE_COOKIE_SUPPORT 1 #endif @@ -2312,7 +2312,7 @@ index a2856e88ec98ffd141a3a44fbe6dabb8c8059735..84d5af7d600a55e66b46dcb947b1e9fc #define HAVE_OS_DARK_MODE_SUPPORT 1 #endif -@@ -1320,7 +1320,8 @@ +@@ -1327,7 +1327,8 @@ #endif #if PLATFORM(MAC) @@ -2323,10 +2323,10 @@ index a2856e88ec98ffd141a3a44fbe6dabb8c8059735..84d5af7d600a55e66b46dcb947b1e9fc #if (!defined(HAVE_LOCKDOWN_MODE_PDF_ADDITIONS) && \ diff --git a/Source/WebCore/DerivedSources.make b/Source/WebCore/DerivedSources.make -index 6dfda4b18b6bc9c3542cbdf1e7b7490cedcce9de..3368d5fe3507b3dd3db0c460df9b34e7a869d37f 100644 +index 0330b0ee15e0f53943bb14ad4cd5186820ee71fa..6fcdb1c18555970c3d06b7299d8c5cfbfa00756a 100644 --- a/Source/WebCore/DerivedSources.make +++ b/Source/WebCore/DerivedSources.make -@@ -1050,6 +1050,10 @@ JS_BINDING_IDLS := \ +@@ -1063,6 +1063,10 @@ JS_BINDING_IDLS := \ $(WebCore)/dom/Slotable.idl \ $(WebCore)/dom/StaticRange.idl \ $(WebCore)/dom/StringCallback.idl \ @@ -2337,7 +2337,7 @@ index 6dfda4b18b6bc9c3542cbdf1e7b7490cedcce9de..3368d5fe3507b3dd3db0c460df9b34e7 $(WebCore)/dom/Text.idl \ $(WebCore)/dom/TextDecoder.idl \ $(WebCore)/dom/TextDecoderStream.idl \ -@@ -1613,9 +1617,6 @@ ADDITIONAL_BINDING_IDLS = \ +@@ -1626,9 +1630,6 @@ ADDITIONAL_BINDING_IDLS = \ GestureEvent.idl \ Internals+Additions.idl \ InternalsAdditions.idl \ @@ -2362,18 +2362,6 @@ index 9dfd25d4160011d576e9c636e4c805bfd486fd26..573edcb686440ea8426e3a59540250a5 return false; } -diff --git a/Source/WebCore/Modules/speech/SpeechSynthesisErrorEventInit.h b/Source/WebCore/Modules/speech/SpeechSynthesisErrorEventInit.h -index 2472c255319384d9f7361130f2db186b82875e9c..c9f8884711ef948a2d426b1afb21d12cf9e47848 100644 ---- a/Source/WebCore/Modules/speech/SpeechSynthesisErrorEventInit.h -+++ b/Source/WebCore/Modules/speech/SpeechSynthesisErrorEventInit.h -@@ -28,6 +28,7 @@ - #if ENABLE(SPEECH_SYNTHESIS) - - #include "SpeechSynthesisEventInit.h" -+#include "SpeechSynthesisErrorCode.h" - - namespace WebCore { - diff --git a/Source/WebCore/Modules/speech/cocoa/WebSpeechRecognizerTask.mm b/Source/WebCore/Modules/speech/cocoa/WebSpeechRecognizerTask.mm index 316aa5b17c5346b2d3e420e7262e7e76e254f427..c2beed6bd1e83257095252146ee3506ce5c92b07 100644 --- a/Source/WebCore/Modules/speech/cocoa/WebSpeechRecognizerTask.mm @@ -2411,7 +2399,7 @@ index 316aa5b17c5346b2d3e420e7262e7e76e254f427..c2beed6bd1e83257095252146ee3506c [self sendSpeechEndIfNeeded]; diff --git a/Source/WebCore/PlatformWPE.cmake b/Source/WebCore/PlatformWPE.cmake -index de4cd23a97fd40d945253632adea239f2c764a71..4b5ce3558c17e0343b79924060cd7f557da95e62 100644 +index e8647e7b05931395f7b497bfb16408331c278ebf..1aceec655433e68c7829c8b1df3c06f1e8b4c90d 100644 --- a/Source/WebCore/PlatformWPE.cmake +++ b/Source/WebCore/PlatformWPE.cmake @@ -48,6 +48,7 @@ list(APPEND WebCore_PRIVATE_FRAMEWORK_HEADERS @@ -2423,10 +2411,10 @@ index de4cd23a97fd40d945253632adea239f2c764a71..4b5ce3558c17e0343b79924060cd7f55 set(CSS_VALUE_PLATFORM_DEFINES "HAVE_OS_DARK_MODE_SUPPORT=1") diff --git a/Source/WebCore/SourcesCocoa.txt b/Source/WebCore/SourcesCocoa.txt -index afc1c38caf505cebd0f65b0266bf03d04784ba84..65e3462ee460ca1d2e8bfbba2b9304ca669cd205 100644 +index 29c478932d3730ea8c07d47209463a40dcc120eb..98833213b5c6ab625ebec259fe228777ffb20091 100644 --- a/Source/WebCore/SourcesCocoa.txt +++ b/Source/WebCore/SourcesCocoa.txt -@@ -690,3 +690,9 @@ platform/graphics/angle/GraphicsContextGLANGLE.cpp @no-unify +@@ -692,3 +692,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 @@ -2437,13 +2425,13 @@ index afc1c38caf505cebd0f65b0266bf03d04784ba84..65e3462ee460ca1d2e8bfbba2b9304ca +JSTouchList.cpp +// Playwright end diff --git a/Source/WebCore/SourcesGTK.txt b/Source/WebCore/SourcesGTK.txt -index 9f915af0d14e7ed3e64753bc024d48a4b2839717..148db724be808a8e0b3908b979c72ee9518b838c 100644 +index 1223ea836df4813f3f4928007473a1a4ad485964..f1eb990ce678d3434201cd0586e8d4a13c108089 100644 --- a/Source/WebCore/SourcesGTK.txt +++ b/Source/WebCore/SourcesGTK.txt -@@ -129,3 +129,10 @@ platform/unix/LoggingUnix.cpp - platform/xdg/MIMETypeRegistryXdg.cpp +@@ -127,3 +127,10 @@ platform/text/hyphen/HyphenationLibHyphen.cpp + platform/unix/LoggingUnix.cpp - rendering/RenderThemeGtk.cpp + platform/xdg/MIMETypeRegistryXdg.cpp + +// Playwright: begin. +JSSpeechSynthesisErrorCode.cpp @@ -2483,10 +2471,10 @@ index c0a24730da1761953388be96319d6691df126b9d..89841bdd23c06f5f8d3223596f15e29e +JSSpeechSynthesisEventInit.cpp +// Playwright: end. diff --git a/Source/WebCore/WebCore.xcodeproj/project.pbxproj b/Source/WebCore/WebCore.xcodeproj/project.pbxproj -index b3c77b6c4142b9e984653245ffc8f0974675ea1d..b00fabc658cebddc75827e409020a6cb3607bdfd 100644 +index a406bd8ad9653fab38976b458a49d400b4b66e30..d08880a50b58e16d0684183b0174a4c41ab4375f 100644 --- a/Source/WebCore/WebCore.xcodeproj/project.pbxproj +++ b/Source/WebCore/WebCore.xcodeproj/project.pbxproj -@@ -5837,6 +5837,13 @@ +@@ -5858,6 +5858,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, ); }; }; @@ -2500,7 +2488,7 @@ index b3c77b6c4142b9e984653245ffc8f0974675ea1d..b00fabc658cebddc75827e409020a6cb 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, ); }; }; -@@ -18919,6 +18926,14 @@ +@@ -19017,6 +19024,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 = ""; }; @@ -2515,7 +2503,7 @@ index b3c77b6c4142b9e984653245ffc8f0974675ea1d..b00fabc658cebddc75827e409020a6cb 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 = ""; }; -@@ -25942,6 +25957,11 @@ +@@ -26143,6 +26158,11 @@ BC4A5324256055590028C592 /* TextDirectionSubmenuInclusionBehavior.h */, 2D4F96F11A1ECC240098BF88 /* TextIndicator.cpp */, 2D4F96F21A1ECC240098BF88 /* TextIndicator.h */, @@ -2527,7 +2515,7 @@ index b3c77b6c4142b9e984653245ffc8f0974675ea1d..b00fabc658cebddc75827e409020a6cb F48570A42644C76D00C05F71 /* TranslationContextMenuInfo.h */, F4E1965F21F26E4E00285078 /* UndoItem.cpp */, 2ECDBAD521D8906300F00ECD /* UndoItem.h */, -@@ -32044,6 +32064,8 @@ +@@ -32251,6 +32271,8 @@ 29E4D8DF16B0940F00C84704 /* PlatformSpeechSynthesizer.h */, 1AD8F81A11CAB9E900E93E54 /* PlatformStrategies.cpp */, 1AD8F81911CAB9E900E93E54 /* PlatformStrategies.h */, @@ -2536,7 +2524,7 @@ index b3c77b6c4142b9e984653245ffc8f0974675ea1d..b00fabc658cebddc75827e409020a6cb 0FD7C21D23CE41E30096D102 /* PlatformWheelEvent.cpp */, 935C476A09AC4D4F00A6AAB4 /* PlatformWheelEvent.h */, BCBB8AB513F1AFB000734DF0 /* PODInterval.h */, -@@ -34547,6 +34569,7 @@ +@@ -34754,6 +34776,7 @@ AD6E71AB1668899D00320C13 /* DocumentSharedObjectPool.h */, 6BDB5DC1227BD3B800919770 /* DocumentStorageAccess.cpp */, 6BDB5DC0227BD3B800919770 /* DocumentStorageAccess.h */, @@ -2544,7 +2532,7 @@ index b3c77b6c4142b9e984653245ffc8f0974675ea1d..b00fabc658cebddc75827e409020a6cb 7CE7FA5B1EF882300060C9D6 /* DocumentTouch.cpp */, 7CE7FA591EF882300060C9D6 /* DocumentTouch.h */, A8185F3209765765005826D9 /* DocumentType.cpp */, -@@ -39015,6 +39038,8 @@ +@@ -39237,6 +39260,8 @@ 1AD8F81B11CAB9E900E93E54 /* PlatformStrategies.h in Headers */, 0F7D07331884C56C00B4AF86 /* PlatformTextTrack.h in Headers */, 074E82BB18A69F0E007EF54C /* PlatformTimeRanges.h in Headers */, @@ -2553,7 +2541,7 @@ index b3c77b6c4142b9e984653245ffc8f0974675ea1d..b00fabc658cebddc75827e409020a6cb CDD08ABD277E542600EA3755 /* PlatformTrackConfiguration.h in Headers */, CD1F9B022700323D00617EB6 /* PlatformVideoColorPrimaries.h in Headers */, CD1F9B01270020B700617EB6 /* PlatformVideoColorSpace.h in Headers */, -@@ -40227,6 +40252,7 @@ +@@ -40452,6 +40477,7 @@ 0F54DD081881D5F5003EEDBB /* Touch.h in Headers */, 71B7EE0D21B5C6870031C1EF /* TouchAction.h in Headers */, 0F54DD091881D5F5003EEDBB /* TouchEvent.h in Headers */, @@ -2561,15 +2549,17 @@ index b3c77b6c4142b9e984653245ffc8f0974675ea1d..b00fabc658cebddc75827e409020a6cb 0F54DD0A1881D5F5003EEDBB /* TouchList.h in Headers */, 070334D71459FFD5008D8D45 /* TrackBase.h in Headers */, BE88E0C21715CE2600658D98 /* TrackListBase.h in Headers */, -@@ -41197,6 +41223,7 @@ +@@ -41424,6 +41450,9 @@ 1ABA76CA11D20E50004C201C /* CSSPropertyNames.cpp in Sources */, 2D22830323A8470700364B7E /* CursorMac.mm in Sources */, 5CBD59592280E926002B22AA /* CustomHeaderFields.cpp in Sources */, + F050E17423AD6A800011CE47 /* DocumentTouch.cpp in Sources */, - 329C0C2528BD96EB00F187D2 /* ElementName.cpp in Sources */, ++ 329C0C2528BD96EB00F187D2 /* ElementName.cpp in Sources */, ++ 329C0C2528BD96EB00F187D2 /* ElementName.cpp in Sources */, 7CE6CBFD187F394900D46BF5 /* FormatConverter.cpp in Sources */, 4667EA3E2968D9DA00BAB1E2 /* GameControllerHapticEffect.mm in Sources */, -@@ -41274,6 +41301,9 @@ + 46FE73D32968E52000B8064C /* GameControllerHapticEngines.mm in Sources */, +@@ -41501,6 +41530,9 @@ CE88EE262414467B007F29C2 /* TextAlternativeWithRange.mm in Sources */, BE39137129B267F500FA5D4F /* TextTransformCocoa.cpp in Sources */, 51DF6D800B92A18E00C2DC85 /* ThreadCheck.mm in Sources */, @@ -2580,10 +2570,10 @@ index b3c77b6c4142b9e984653245ffc8f0974675ea1d..b00fabc658cebddc75827e409020a6cb 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 760f5329f2ae5bc9a7d329516ef4892ba4daece9..36874e795b8d1406894a66b18e5571e6d7c4cfc9 100644 +index 82fbb139ecf1c1f273d1420169910ec437a361a5..50ed86d58da2974e1d8f9e33839656746a9edd08 100644 --- a/Source/WebCore/accessibility/AccessibilityObject.cpp +++ b/Source/WebCore/accessibility/AccessibilityObject.cpp -@@ -63,6 +63,7 @@ +@@ -64,6 +64,7 @@ #include "HTMLParserIdioms.h" #include "HTMLTextAreaElement.h" #include "HitTestResult.h" @@ -2591,7 +2581,7 @@ index 760f5329f2ae5bc9a7d329516ef4892ba4daece9..36874e795b8d1406894a66b18e5571e6 #include "LocalFrame.h" #include "LocalizedStrings.h" #include "MathMLNames.h" -@@ -3707,9 +3708,14 @@ AccessibilityObjectInclusion AccessibilityObject::defaultObjectInclusion() const +@@ -3833,9 +3834,14 @@ AccessibilityObjectInclusion AccessibilityObject::defaultObjectInclusion() const if (roleValue() == AccessibilityRole::ApplicationDialog) return AccessibilityObjectInclusion::IncludeObject; @@ -2608,23 +2598,11 @@ index 760f5329f2ae5bc9a7d329516ef4892ba4daece9..36874e795b8d1406894a66b18e5571e6 bool AccessibilityObject::accessibilityIsIgnored() const { AXComputedObjectAttributeCache* attributeCache = nullptr; -diff --git a/Source/WebCore/accessibility/mac/AccessibilityObjectMac.mm b/Source/WebCore/accessibility/mac/AccessibilityObjectMac.mm -index c2f7d429e8a541883d956a11d10239bf3d32a79b..b0a2b086875645a4141b76a6343b522287582171 100644 ---- a/Source/WebCore/accessibility/mac/AccessibilityObjectMac.mm -+++ b/Source/WebCore/accessibility/mac/AccessibilityObjectMac.mm -@@ -34,6 +34,7 @@ - #import "FrameSelection.h" - #import "HTMLFieldSetElement.h" - #import "HTMLInputElement.h" -+#import "LocalFrame.h" - #import "LocalFrameView.h" - #import "LocalizedStrings.h" - #import "RenderObject.h" diff --git a/Source/WebCore/bindings/js/WebCoreBuiltinNames.h b/Source/WebCore/bindings/js/WebCoreBuiltinNames.h -index 3537d37cfdb9a22dd88950abb3825ea2ba045cf4..60d4a40f9cc65362df875269246dc358f7b87a5e 100644 +index 1fea6ba934a6e4b8ab61ba48ec3cbd6e5773ffba..789fde9658c334993929d35990381a5ffaed165a 100644 --- a/Source/WebCore/bindings/js/WebCoreBuiltinNames.h +++ b/Source/WebCore/bindings/js/WebCoreBuiltinNames.h -@@ -167,6 +167,8 @@ namespace WebCore { +@@ -168,6 +168,8 @@ namespace WebCore { macro(DecompressionStreamTransform) \ macro(DelayNode) \ macro(DeprecationReportBody) \ @@ -2634,7 +2612,7 @@ index 3537d37cfdb9a22dd88950abb3825ea2ba045cf4..60d4a40f9cc65362df875269246dc358 macro(DynamicsCompressorNode) \ macro(ElementInternals) \ diff --git a/Source/WebCore/css/query/MediaQueryFeatures.cpp b/Source/WebCore/css/query/MediaQueryFeatures.cpp -index 2cc61bcafd749944dfe32e98e762beeb6293da8e..f06d5a7fd13b6f5220f83367f86937d2806047cf 100644 +index f2215273a421de9a02e5310d520e7c4249efbe92..21cfcd0aee3655f585faa71c594aa5615216e45e 100644 --- a/Source/WebCore/css/query/MediaQueryFeatures.cpp +++ b/Source/WebCore/css/query/MediaQueryFeatures.cpp @@ -368,7 +368,11 @@ const FeatureSchema& forcedColors() @@ -2693,18 +2671,6 @@ index fb2decfc7dfc6c8a4e5a7dd79c0e23798f6d83b8..ba5f16cf2b443167b8307510f06e9856 static Ref createForDragStartEvent(const Document&); static Ref createForDrop(const Document&, std::unique_ptr&&, OptionSet, bool draggingFiles); static Ref createForUpdatingDropTarget(const Document&, std::unique_ptr&&, OptionSet, bool draggingFiles); -diff --git a/Source/WebCore/dom/DeviceMotionEvent.h b/Source/WebCore/dom/DeviceMotionEvent.h -index 8a3c4fc3c6ed07ecfe53d4c64f4298edc5669ca9..6022cd9eced0b147118d20a4c86e8e6605d00e7d 100644 ---- a/Source/WebCore/dom/DeviceMotionEvent.h -+++ b/Source/WebCore/dom/DeviceMotionEvent.h -@@ -26,6 +26,7 @@ - #pragma once - - #include "DeviceOrientationOrMotionPermissionState.h" -+#include "Document.h" - #include "Event.h" - #include "IDLTypes.h" - diff --git a/Source/WebCore/dom/DeviceMotionEvent.idl b/Source/WebCore/dom/DeviceMotionEvent.idl index ea39a33a6250b4d10b20802f98aa9a5d57e63a7b..300a763508d311fd7b34cb3df3cc93080bb52930 100644 --- a/Source/WebCore/dom/DeviceMotionEvent.idl @@ -3163,7 +3129,7 @@ index 37b3806ccad3419e617cbd3f697105d68f0b2208..581ba5372f44144e68991b242a9561c4 { if (is(context)) diff --git a/Source/WebCore/inspector/InspectorInstrumentation.h b/Source/WebCore/inspector/InspectorInstrumentation.h -index f3c8e64eb096ca889f19bbb79e6ec24a73a4db9f..c64fa7aaa9321dd3f5292561a8ef63c2f658a9aa 100644 +index faefe2007ad1ef81c2181d4553b4c8338e870ab1..47f2a7de873d792a8970a7d9608067f991fcdf6d 100644 --- a/Source/WebCore/inspector/InspectorInstrumentation.h +++ b/Source/WebCore/inspector/InspectorInstrumentation.h @@ -31,6 +31,7 @@ @@ -3428,20 +3394,8 @@ index f3c8e64eb096ca889f19bbb79e6ec24a73a4db9f..c64fa7aaa9321dd3f5292561a8ef63c2 inline InstrumentingAgents* InspectorInstrumentation::instrumentingAgents(ScriptExecutionContext* context) { return context ? instrumentingAgents(*context) : nullptr; -diff --git a/Source/WebCore/inspector/UserGestureEmulationScope.h b/Source/WebCore/inspector/UserGestureEmulationScope.h -index 07103c35e0a9193a010a85cf2ea8017b2ad59212..338d158be5a6f35adc6817dc94d6084b8bc593c5 100644 ---- a/Source/WebCore/inspector/UserGestureEmulationScope.h -+++ b/Source/WebCore/inspector/UserGestureEmulationScope.h -@@ -37,6 +37,7 @@ namespace WebCore { - class ChromeClient; - class Document; - class Page; -+class Document; - - class UserGestureEmulationScope { - WTF_MAKE_NONCOPYABLE(UserGestureEmulationScope); diff --git a/Source/WebCore/inspector/agents/InspectorDOMAgent.cpp b/Source/WebCore/inspector/agents/InspectorDOMAgent.cpp -index 4753ed97f52484a8a207a94daf8d2de4b75177d0..a97456e7f975e3c73e1f30f2cf8b07b6e41a68ce 100644 +index ec49cdff4281d43f28957ccaaa53ed13e8bf2218..feb1332ed98d4f57a96114f5302b34ea137a608b 100644 --- a/Source/WebCore/inspector/agents/InspectorDOMAgent.cpp +++ b/Source/WebCore/inspector/agents/InspectorDOMAgent.cpp @@ -61,10 +61,14 @@ @@ -3458,8 +3412,8 @@ index 4753ed97f52484a8a207a94daf8d2de4b75177d0..a97456e7f975e3c73e1f30f2cf8b07b6 +#include "HTMLInputElement.h" #include "HTMLMediaElement.h" #include "HTMLNames.h" - #include "HTMLParserIdioms.h" -@@ -95,12 +99,14 @@ + #include "HTMLScriptElement.h" +@@ -94,12 +98,14 @@ #include "Pasteboard.h" #include "PseudoElement.h" #include "RenderGrid.h" @@ -3474,7 +3428,7 @@ index 4753ed97f52484a8a207a94daf8d2de4b75177d0..a97456e7f975e3c73e1f30f2cf8b07b6 #include "StaticNodeList.h" #include "StyleProperties.h" #include "StyleResolver.h" -@@ -134,7 +140,8 @@ using namespace HTMLNames; +@@ -133,7 +139,8 @@ using namespace HTMLNames; static const size_t maxTextSize = 10000; static const UChar ellipsisUChar[] = { 0x2026, 0 }; @@ -3484,7 +3438,7 @@ index 4753ed97f52484a8a207a94daf8d2de4b75177d0..a97456e7f975e3c73e1f30f2cf8b07b6 { if (!colorObject) return std::nullopt; -@@ -153,7 +160,7 @@ static std::optional parseColor(RefPtr&& colorObject) +@@ -152,7 +159,7 @@ static std::optional parseColor(RefPtr&& colorObject) static std::optional parseRequiredConfigColor(const String& fieldName, JSON::Object& configObject) { @@ -3493,7 +3447,7 @@ index 4753ed97f52484a8a207a94daf8d2de4b75177d0..a97456e7f975e3c73e1f30f2cf8b07b6 } static Color parseOptionalConfigColor(const String& fieldName, JSON::Object& configObject) -@@ -181,6 +188,20 @@ static bool parseQuad(Ref&& quadArray, FloatQuad* quad) +@@ -180,6 +187,20 @@ static bool parseQuad(Ref&& quadArray, FloatQuad* quad) return true; } @@ -3514,7 +3468,7 @@ index 4753ed97f52484a8a207a94daf8d2de4b75177d0..a97456e7f975e3c73e1f30f2cf8b07b6 class RevalidateStyleAttributeTask { WTF_MAKE_FAST_ALLOCATED; public: -@@ -462,6 +483,20 @@ Node* InspectorDOMAgent::assertNode(Protocol::ErrorString& errorString, Protocol +@@ -461,6 +482,20 @@ Node* InspectorDOMAgent::assertNode(Protocol::ErrorString& errorString, Protocol return node; } @@ -3535,7 +3489,7 @@ index 4753ed97f52484a8a207a94daf8d2de4b75177d0..a97456e7f975e3c73e1f30f2cf8b07b6 Document* InspectorDOMAgent::assertDocument(Protocol::ErrorString& errorString, Protocol::DOM::NodeId nodeId) { Node* node = assertNode(errorString, nodeId); -@@ -1537,16 +1572,7 @@ Protocol::ErrorStringOr InspectorDOMAgent::highlightNode(std::optional InspectorDOMAgent::highlightNode(std::optional InspectorDOMAgent::highlightNode(std::optional&& nodeId, const Protocol::Runtime::RemoteObjectId& objectId, Ref&& highlightInspectorObject, RefPtr&& gridOverlayInspectorObject, RefPtr&& flexOverlayInspectorObject, std::optional&& showRulers) { Protocol::ErrorString errorString; @@ -3553,7 +3507,7 @@ index 4753ed97f52484a8a207a94daf8d2de4b75177d0..a97456e7f975e3c73e1f30f2cf8b07b6 if (!node) return makeUnexpected(errorString); -@@ -1801,15 +1827,155 @@ Protocol::ErrorStringOr InspectorDOMAgent::setInspectedNode(Protocol::DOM: +@@ -1800,15 +1826,155 @@ Protocol::ErrorStringOr InspectorDOMAgent::setInspectedNode(Protocol::DOM: return { }; } @@ -3712,7 +3666,7 @@ index 4753ed97f52484a8a207a94daf8d2de4b75177d0..a97456e7f975e3c73e1f30f2cf8b07b6 if (!object) return makeUnexpected("Missing injected script for given nodeId"_s); -@@ -3064,7 +3230,7 @@ Protocol::ErrorStringOr InspectorDOMAgent::pushNodeByPath +@@ -3063,7 +3229,7 @@ Protocol::ErrorStringOr InspectorDOMAgent::pushNodeByPath return makeUnexpected("Missing node for given path"_s); } @@ -3721,7 +3675,7 @@ index 4753ed97f52484a8a207a94daf8d2de4b75177d0..a97456e7f975e3c73e1f30f2cf8b07b6 { Document* document = &node->document(); if (auto* templateHost = document->templateDocumentHost()) -@@ -3073,12 +3239,18 @@ RefPtr InspectorDOMAgent::resolveNode(Node* nod +@@ -3072,12 +3238,18 @@ RefPtr InspectorDOMAgent::resolveNode(Node* nod if (!frame) return nullptr; @@ -3743,7 +3697,7 @@ index 4753ed97f52484a8a207a94daf8d2de4b75177d0..a97456e7f975e3c73e1f30f2cf8b07b6 } Node* InspectorDOMAgent::scriptValueAsNode(JSC::JSValue value) -@@ -3101,4 +3273,57 @@ Protocol::ErrorStringOr InspectorDOMAgent::setAllowEditingUserAgentShadowT +@@ -3100,4 +3272,57 @@ Protocol::ErrorStringOr InspectorDOMAgent::setAllowEditingUserAgentShadowT return { }; } @@ -5606,10 +5560,10 @@ index cce87a07505d599b48d887b50f00c47369dc49f2..ee95d1632b92e54ed41a726ca14eeb08 DocumentWriter& writer() const { return m_writer; } diff --git a/Source/WebCore/loader/FrameLoader.cpp b/Source/WebCore/loader/FrameLoader.cpp -index f49c16c1be92bd58ed3fabc9f5902b9f5d7985c6..440f1c6db272a626c27a694f41822edcc42b9e61 100644 +index 16787ba6ca7555c97e19ae1b04579e19cd161761..2d36c6923d6db2dde019bc8a7759a02d968f53d1 100644 --- a/Source/WebCore/loader/FrameLoader.cpp +++ b/Source/WebCore/loader/FrameLoader.cpp -@@ -1222,6 +1222,7 @@ void FrameLoader::loadInSameDocument(URL url, RefPtr stat +@@ -1223,6 +1223,7 @@ void FrameLoader::loadInSameDocument(URL url, RefPtr stat } m_client->dispatchDidNavigateWithinPage(); @@ -5617,7 +5571,7 @@ index f49c16c1be92bd58ed3fabc9f5902b9f5d7985c6..440f1c6db272a626c27a694f41822edc m_frame.document()->statePopped(stateObject ? stateObject.releaseNonNull() : SerializedScriptValue::nullValue()); m_client->dispatchDidPopStateWithinPage(); -@@ -1675,6 +1676,8 @@ void FrameLoader::loadWithDocumentLoader(DocumentLoader* loader, FrameLoadType t +@@ -1676,6 +1677,8 @@ void FrameLoader::loadWithDocumentLoader(DocumentLoader* loader, FrameLoadType t const String& httpMethod = loader->request().httpMethod(); if (shouldPerformFragmentNavigation(isFormSubmission, httpMethod, policyChecker().loadType(), newURL)) { @@ -5626,7 +5580,7 @@ index f49c16c1be92bd58ed3fabc9f5902b9f5d7985c6..440f1c6db272a626c27a694f41822edc RefPtr oldDocumentLoader = m_documentLoader; NavigationAction action { *m_frame.document(), loader->request(), InitiatedByMainFrame::Unknown, policyChecker().loadType(), isFormSubmission }; action.setIsRequestFromClientOrUserInput(loader->isRequestFromClientOrUserInput()); -@@ -1707,7 +1710,9 @@ void FrameLoader::loadWithDocumentLoader(DocumentLoader* loader, FrameLoadType t +@@ -1708,7 +1711,9 @@ void FrameLoader::loadWithDocumentLoader(DocumentLoader* loader, FrameLoadType t } RELEASE_ASSERT(!isBackForwardLoadType(policyChecker().loadType()) || history().provisionalItem()); @@ -5636,7 +5590,7 @@ index f49c16c1be92bd58ed3fabc9f5902b9f5d7985c6..440f1c6db272a626c27a694f41822edc continueLoadAfterNavigationPolicy(request, formState.get(), navigationPolicyDecision, allowNavigationToInvalidURL); completionHandler(); }, PolicyDecisionMode::Asynchronous); -@@ -2934,14 +2939,19 @@ String FrameLoader::userAgent(const URL& url) const +@@ -2935,14 +2940,19 @@ String FrameLoader::userAgent(const URL& url) const String FrameLoader::navigatorPlatform() const { @@ -5658,7 +5612,7 @@ index f49c16c1be92bd58ed3fabc9f5902b9f5d7985c6..440f1c6db272a626c27a694f41822edc } void FrameLoader::dispatchOnloadEvents() -@@ -3361,6 +3371,8 @@ void FrameLoader::receivedMainResourceError(const ResourceError& error) +@@ -3362,6 +3372,8 @@ void FrameLoader::receivedMainResourceError(const ResourceError& error) checkCompleted(); if (m_frame.page()) checkLoadComplete(); @@ -5667,7 +5621,7 @@ index f49c16c1be92bd58ed3fabc9f5902b9f5d7985c6..440f1c6db272a626c27a694f41822edc } void FrameLoader::continueFragmentScrollAfterNavigationPolicy(const ResourceRequest& request, const SecurityOrigin* requesterOrigin, bool shouldContinue) -@@ -4188,9 +4200,6 @@ String FrameLoader::referrer() const +@@ -4189,9 +4201,6 @@ String FrameLoader::referrer() const void FrameLoader::dispatchDidClearWindowObjectsInAllWorlds() { @@ -5677,7 +5631,7 @@ index f49c16c1be92bd58ed3fabc9f5902b9f5d7985c6..440f1c6db272a626c27a694f41822edc Vector> worlds; ScriptController::getAllWorlds(worlds); for (auto& world : worlds) -@@ -4199,13 +4208,13 @@ void FrameLoader::dispatchDidClearWindowObjectsInAllWorlds() +@@ -4200,13 +4209,13 @@ void FrameLoader::dispatchDidClearWindowObjectsInAllWorlds() void FrameLoader::dispatchDidClearWindowObjectInWorld(DOMWrapperWorld& world) { @@ -5787,10 +5741,10 @@ index ffe6adcac48603bb48d910e1b033a4bcc14e9c6d..a294cc58805b89e0d886e44780f2d97a if (request.charset().isEmpty() && (type == CachedResource::Type::Script || type == CachedResource::Type::CSSStyleSheet)) request.setCharset(m_document->charset()); diff --git a/Source/WebCore/page/ChromeClient.h b/Source/WebCore/page/ChromeClient.h -index b1536109319d5ea2cedd2d30faae9da462fefa2b..18ea30e5b4efb623edf55c53f88bbaafbed3fa5b 100644 +index 1e9d660b23497ad192ca07873ddc1184545649ee..d9bd9ac4bf909e12a0612101fbb66166cdc76dce 100644 --- a/Source/WebCore/page/ChromeClient.h +++ b/Source/WebCore/page/ChromeClient.h -@@ -318,7 +318,7 @@ public: +@@ -325,7 +325,7 @@ public: #endif #if ENABLE(ORIENTATION_EVENTS) @@ -5800,7 +5754,7 @@ index b1536109319d5ea2cedd2d30faae9da462fefa2b..18ea30e5b4efb623edf55c53f88bbaaf #if ENABLE(INPUT_TYPE_COLOR) diff --git a/Source/WebCore/page/EventHandler.cpp b/Source/WebCore/page/EventHandler.cpp -index e6f726c92fd927e3b030cf48242d8c4e2e58ae3b..d3b938f751b53e5c6994029149dd01e363b7d36f 100644 +index a32eb173eede3c0534ea942d8fc61d2d3a1f0618..29d50f848f8055dbe8b5ed8b94cf12de286f8566 100644 --- a/Source/WebCore/page/EventHandler.cpp +++ b/Source/WebCore/page/EventHandler.cpp @@ -143,6 +143,7 @@ @@ -5898,7 +5852,7 @@ index e6f726c92fd927e3b030cf48242d8c4e2e58ae3b..d3b938f751b53e5c6994029149dd01e3 return swallowEvent; } -@@ -4190,7 +4190,14 @@ bool EventHandler::handleDrag(const MouseEventWithHitTestResults& event, CheckDr +@@ -4189,7 +4189,14 @@ bool EventHandler::handleDrag(const MouseEventWithHitTestResults& event, CheckDr if (!m_frame.document()) return false; @@ -5914,7 +5868,7 @@ index e6f726c92fd927e3b030cf48242d8c4e2e58ae3b..d3b938f751b53e5c6994029149dd01e3 auto hasNonDefaultPasteboardData = HasNonDefaultPasteboardData::No; if (dragState().shouldDispatchEvents) { -@@ -4759,7 +4766,8 @@ bool EventHandler::handleTouchEvent(const PlatformTouchEvent& event) +@@ -4758,7 +4765,8 @@ bool EventHandler::handleTouchEvent(const PlatformTouchEvent& event) allTouchReleased = false; } @@ -5924,7 +5878,7 @@ index e6f726c92fd927e3b030cf48242d8c4e2e58ae3b..d3b938f751b53e5c6994029149dd01e3 PlatformTouchPoint::State pointState = point.state(); LayoutPoint pagePoint = documentPointForWindowPoint(m_frame, point.pos()); -@@ -4886,6 +4894,9 @@ bool EventHandler::handleTouchEvent(const PlatformTouchEvent& event) +@@ -4885,6 +4893,9 @@ bool EventHandler::handleTouchEvent(const PlatformTouchEvent& event) changedTouches[pointState].m_touches->append(WTFMove(touch)); changedTouches[pointState].m_targets.add(touchTarget); } @@ -6560,7 +6514,7 @@ index 85fb23a5c1ead92c0ecdb266434509afb5e61b2d..adfae0130d0d90c74d13d4861a6570f8 ViewportArguments m_viewportArguments; diff --git a/Source/WebCore/page/Page.cpp b/Source/WebCore/page/Page.cpp -index 543fb8f8734e431346a9bfb99b0cc9f2ce492b2d..5a182c20aa3128503b438dc6209081910b45d7b5 100644 +index 15ea4cda28d79a0483c3898ea8d0070e72a75b80..dda3cee2532e56cbc44fe8cdca60c6221d544799 100644 --- a/Source/WebCore/page/Page.cpp +++ b/Source/WebCore/page/Page.cpp @@ -516,6 +516,45 @@ void Page::setOverrideViewportArguments(const std::optional& @@ -6727,7 +6681,7 @@ index ed6ccc749bd7cbad9ed42e14117b54f59246a68b..e5becddfce59dd234bd77bf7ad35e6f8 #if ENABLE(DEVICE_ORIENTATION) && PLATFORM(IOS_FAMILY) RefPtr m_deviceOrientationUpdateProvider; diff --git a/Source/WebCore/page/PageConsoleClient.cpp b/Source/WebCore/page/PageConsoleClient.cpp -index a6d456114693426e589cb5221abb379cda53c354..16c1526bf9798d50eef024e9fea14503a5c13ae5 100644 +index 48c3d57c09fecd971b77dde5a89aef52a8ec59c9..6b9a5ad8da537ba1985341934226b75ab0811c70 100644 --- a/Source/WebCore/page/PageConsoleClient.cpp +++ b/Source/WebCore/page/PageConsoleClient.cpp @@ -429,4 +429,10 @@ void PageConsoleClient::screenshot(JSC::JSGlobalObject* lexicalGlobalObject, Ref @@ -6842,7 +6796,7 @@ index 3161bc20838183906a01e85f0c1feedc82f34ce7..64f5ae86238b2621f5d1895eaae2b607 } diff --git a/Source/WebCore/page/csp/ContentSecurityPolicy.cpp b/Source/WebCore/page/csp/ContentSecurityPolicy.cpp -index fbab07305da2f2a3dd66d00f97ee31bbce0a67bd..50ec55843cd531ee67e4c00e701ec7b8b102daef 100644 +index 0c04ac6dfa139cd18df7535b7eb8f6f362e01b81..fa80e07c899d2ca5572bb7afbef092707897be57 100644 --- a/Source/WebCore/page/csp/ContentSecurityPolicy.cpp +++ b/Source/WebCore/page/csp/ContentSecurityPolicy.cpp @@ -336,6 +336,8 @@ bool ContentSecurityPolicy::allowContentSecurityPolicySourceStarToMatchAnyProtoc @@ -7309,30 +7263,6 @@ index b60f9a64bacc8282860da6de299b75aeb295b9b5..55bd017c03c6478ca334bd5ef164160f namespace WebCore { -diff --git a/Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.h b/Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.h -index c667f83be29bda95e3856b32139b417e13e1c9ed..b06f077790e3a8c35dd16875ed38725ae3e84002 100644 ---- a/Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.h -+++ b/Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.h -@@ -56,12 +56,18 @@ inline bool webkitGstCheckVersion(guint major, guint minor, guint micro) - return true; - } - -+// gst_element_get_current_running_time() is GStreamer 1.18 API, so for older versions we use a local -+// vendored copy of the function. -+#if !GST_CHECK_VERSION(1, 18, 0) -+GstClockTime webkitGstElementGetCurrentRunningTime(GstElement*); -+#define gst_element_get_current_running_time webkitGstElementGetCurrentRunningTime -+#endif -+ - // gst_video_format_info_component() is GStreamer 1.18 API, so for older versions we use a local - // vendored copy of the function. - #if !GST_CHECK_VERSION(1, 18, 0) - #define GST_VIDEO_MAX_COMPONENTS 4 - void webkitGstVideoFormatInfoComponent(const GstVideoFormatInfo*, guint, gint components[GST_VIDEO_MAX_COMPONENTS]); -- - #define gst_video_format_info_component webkitGstVideoFormatInfoComponent - #endif - diff --git a/Source/WebCore/platform/graphics/win/ComplexTextControllerUniscribe.cpp b/Source/WebCore/platform/graphics/win/ComplexTextControllerUniscribe.cpp index 2a5c4edc93f19897648351181f4187b464ad1a62..32b74aadea83ce7f5ddb6010b45b901d34b0e870 100644 --- a/Source/WebCore/platform/graphics/win/ComplexTextControllerUniscribe.cpp @@ -8250,6 +8180,19 @@ index 0552842dbe3f3a2c12a504178f5a8ca977e1c4db..2ef3b1b459d8a9b4e86b4556feeb4f07 namespace WebCore { class WEBCORE_EXPORT LibWebRTCProviderGStreamer : public LibWebRTCProvider { +diff --git a/Source/WebCore/platform/network/DataURLDecoder.h b/Source/WebCore/platform/network/DataURLDecoder.h +index 2ae92bfc0fb33507c6a5f54fe19e97ec9b53ee68..bf67451389b7e5d9d36936cae6c4cec45f7885d3 100644 +--- a/Source/WebCore/platform/network/DataURLDecoder.h ++++ b/Source/WebCore/platform/network/DataURLDecoder.h +@@ -51,7 +51,7 @@ struct ScheduleContext { + #endif + }; + +-void decode(const URL&, const ScheduleContext&, DecodeCompletionHandler&&); ++WEBCORE_EXPORT void decode(const URL&, const ScheduleContext&, DecodeCompletionHandler&&); + WEBCORE_EXPORT std::optional decode(const URL&); + + } diff --git a/Source/WebCore/platform/network/HTTPHeaderMap.cpp b/Source/WebCore/platform/network/HTTPHeaderMap.cpp index 35ade40b37f0c476815535541118f9246ed199cd..2bd1444f9a5e9a14ab3d6acbc020434e1f55ede1 100644 --- a/Source/WebCore/platform/network/HTTPHeaderMap.cpp @@ -8268,10 +8211,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 7e9c164031f26bd8cfc3467f0ed7ef65ba49a02c..1d928190765aaa1e91371e7c3a144b07ae446643 100644 +index 20f53a73e854e739a3289af2ee8fa979b5397460..db0c94f1b37b7930e9c95b5677705eadca595ccc 100644 --- a/Source/WebCore/platform/network/NetworkStorageSession.h +++ b/Source/WebCore/platform/network/NetworkStorageSession.h -@@ -152,6 +152,8 @@ public: +@@ -154,6 +154,8 @@ public: NetworkingContext* context() const; #endif @@ -8466,10 +8409,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 846dc505de08da17da8aeee12512eb5b20d1ae8d..a380660f6bc2a7b00e1e5bac5de2910ca5f770e1 100644 +index 6f4684a843d58cb107030bc461767bc069fea0b9..ff4b6b3a1fbe4c41ba0bfb389d887ecba7af6ebd 100644 --- a/Source/WebCore/platform/network/curl/NetworkStorageSessionCurl.cpp +++ b/Source/WebCore/platform/network/curl/NetworkStorageSessionCurl.cpp -@@ -120,6 +120,12 @@ void NetworkStorageSession::setCookieAcceptPolicy(CookieAcceptPolicy policy) con +@@ -131,6 +131,12 @@ void NetworkStorageSession::setCookieAcceptPolicy(CookieAcceptPolicy policy) con cookieDatabase().setAcceptPolicy(policy); } @@ -9136,7 +9079,7 @@ index 1d8488e0d36288e09cd5662bd7f770ade95dfee3..dee07f87b47d62d4ef8ede45824bdb2f WorkerOrWorkletGlobalScope& m_globalScope; }; diff --git a/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp b/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp -index 6f8572252893523039159a48a08ada463b493a05..6c90ecf3ce3c1baea834739a64724e6b1dfbcd42 100644 +index 89943ed2e6bfcd4609dba2c2a42bcbfc2e9014f8..226ed8eefb258220708102dd9b9a5208e4d17c36 100644 --- a/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp +++ b/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp @@ -87,6 +87,8 @@ @@ -9164,7 +9107,7 @@ index 6f8572252893523039159a48a08ada463b493a05..6c90ecf3ce3c1baea834739a64724e6b void NetworkConnectionToWebProcess::removeStorageAccessForFrame(FrameIdentifier frameID, PageIdentifier pageID) { diff --git a/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h b/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h -index 46b47bf28756e69b66c6b6dfc1baa6772445608b..e80526ff7db8df818c86b5c1b740e63ba4e3ec51 100644 +index 0877e33f2002a719f87a890bb4b7579750542cbb..03f8799967228d195a747738bec8622e5cb37a7d 100644 --- a/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h +++ b/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h @@ -310,6 +310,8 @@ private: @@ -9177,7 +9120,7 @@ index 46b47bf28756e69b66c6b6dfc1baa6772445608b..e80526ff7db8df818c86b5c1b740e63b void removeStorageAccessForFrame(WebCore::FrameIdentifier, WebCore::PageIdentifier); diff --git a/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in b/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in -index 4269d8e4442536a68bcad12b694b2d1fe96cf69f..536004789ac196597d5365f0321f85d20e3906ee 100644 +index 178a5009f929a4a7c0b6d4f6b9ce313fbdf40b9e..812c7288a0efa2c685ed91f1fefaf90997c8de1e 100644 --- a/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in +++ b/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in @@ -65,6 +65,8 @@ messages -> NetworkConnectionToWebProcess LegacyReceiver { @@ -9190,11 +9133,11 @@ index 4269d8e4442536a68bcad12b694b2d1fe96cf69f..536004789ac196597d5365f0321f85d2 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 337c37bc16aa2bc5c30d7a88188b3cc7b23475e3..6cc8e60f19b28b357f62bd09c3843aedba7f5578 100644 +index 0acb06b8f5f8d2ffa9c0054999c51f72ec02716b..451640dd8044a3d9fba14905f9ae8edbcd87fda8 100644 --- a/Source/WebKit/NetworkProcess/NetworkProcess.cpp +++ b/Source/WebKit/NetworkProcess/NetworkProcess.cpp -@@ -599,6 +599,12 @@ void NetworkProcess::destroySession(PAL::SessionID sessionID) - m_sessionsControlledByAutomation.remove(sessionID); +@@ -613,6 +613,12 @@ void NetworkProcess::registrableDomainsWithLastAccessedTime(PAL::SessionID sessi + completionHandler(std::nullopt); } +void NetworkProcess::setIgnoreCertificateErrors(PAL::SessionID sessionID, bool ignore) @@ -9207,7 +9150,7 @@ index 337c37bc16aa2bc5c30d7a88188b3cc7b23475e3..6cc8e60f19b28b357f62bd09c3843aed void NetworkProcess::dumpResourceLoadStatistics(PAL::SessionID sessionID, CompletionHandler&& completionHandler) { diff --git a/Source/WebKit/NetworkProcess/NetworkProcess.h b/Source/WebKit/NetworkProcess/NetworkProcess.h -index 51ec51889da82d3965ad20040545c11f2cbf4de7..58f67bcd94f228839046cc3d70345b6f12d70783 100644 +index 1c7d627bcbe874f53fd3fbe1b87d8ced895cee09..d1b0725bcbc4d711521eb3bf850098abdf54d747 100644 --- a/Source/WebKit/NetworkProcess/NetworkProcess.h +++ b/Source/WebKit/NetworkProcess/NetworkProcess.h @@ -37,6 +37,7 @@ @@ -9226,17 +9169,18 @@ index 51ec51889da82d3965ad20040545c11f2cbf4de7..58f67bcd94f228839046cc3d70345b6f class CurlProxySettings; class ProtectionSpace; class NetworkStorageSession; -@@ -203,6 +205,8 @@ public: - +@@ -204,6 +206,9 @@ public: void addWebsiteDataStore(WebsiteDataStoreParameters&&); + void registrableDomainsWithLastAccessedTime(PAL::SessionID, CompletionHandler>)>&&); ++ + void setIgnoreCertificateErrors(PAL::SessionID, bool); + #if ENABLE(TRACKING_PREVENTION) 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 74b0f2982ef2a829a0c2b55306004da05759adc0..811c6ff52d70c3af87da8ce6b69b0f944b16f947 100644 +index 192d68f37f84b47fa6be3eff15726edaa53becbe..c3266537b33046b16bd0d46ae5388ec8f4abc145 100644 --- a/Source/WebKit/NetworkProcess/NetworkProcess.messages.in +++ b/Source/WebKit/NetworkProcess/NetworkProcess.messages.in @@ -79,6 +79,8 @@ messages -> NetworkProcess LegacyReceiver { @@ -9249,7 +9193,7 @@ index 74b0f2982ef2a829a0c2b55306004da05759adc0..811c6ff52d70c3af87da8ce6b69b0f94 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 86ff8f80fc35c14208a34b3d47f25bdcc59124fa..65c2326838e428ccdbeaf160e3e33690d14b1fe4 100644 +index 9a00082c0327d7aec0b25b08f03f37230dc04a07..c6f0bd01af71f19fe1cdb70104674cb468ee2c0e 100644 --- a/Source/WebKit/NetworkProcess/NetworkSession.h +++ b/Source/WebKit/NetworkProcess/NetworkSession.h @@ -204,6 +204,9 @@ public: @@ -9262,7 +9206,7 @@ index 86ff8f80fc35c14208a34b3d47f25bdcc59124fa..65c2326838e428ccdbeaf160e3e33690 #if ENABLE(SERVICE_WORKER) void removeSoftUpdateLoader(ServiceWorkerSoftUpdateLoader* loader) { m_softUpdateLoaders.remove(loader); } void addNavigationPreloaderTask(ServiceWorkerFetchTask&); -@@ -319,6 +322,7 @@ protected: +@@ -320,6 +323,7 @@ protected: bool m_privateClickMeasurementDebugModeEnabled { false }; std::optional m_ephemeralMeasurement; bool m_isRunningEphemeralMeasurementTest { false }; @@ -9271,7 +9215,7 @@ index 86ff8f80fc35c14208a34b3d47f25bdcc59124fa..65c2326838e428ccdbeaf160e3e33690 HashSet> m_keptAliveLoads; diff --git a/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm b/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm -index a3f79deb9f4fce052cdeebc0d174fd4fd6da4b93..43a893fc9d2b319c0913d92d816f9a7f603aa2c6 100644 +index 627724b887f85af7f05caa9d9b536658a3b306f9..77d424d7bffaea707676ab47ae80dce540f97381 100644 --- a/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm +++ b/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm @@ -751,7 +751,7 @@ - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didRece @@ -9283,7 +9227,7 @@ index a3f79deb9f4fce052cdeebc0d174fd4fd6da4b93..43a893fc9d2b319c0913d92d816f9a7f return completionHandler(NSURLSessionAuthChallengeUseCredential, [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust]); NSURLSessionTaskTransactionMetrics *metrics = task._incompleteTaskMetrics.transactionMetrics.lastObject; -@@ -1083,6 +1083,13 @@ ALLOW_DEPRECATED_DECLARATIONS_END +@@ -1090,6 +1090,13 @@ ALLOW_DEPRECATED_DECLARATIONS_END resourceResponse.setDeprecatedNetworkLoadMetrics(WebCore::copyTimingData(taskMetrics, networkDataTask->networkLoadMetrics())); @@ -9298,19 +9242,36 @@ index a3f79deb9f4fce052cdeebc0d174fd4fd6da4b93..43a893fc9d2b319c0913d92d816f9a7f #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 51b762c507ebb7081acdfc84cab2e29c9f5d3c3f..a1b4c3a3b34d2cf5726e150f6f14d879d08331b2 100644 +index 51b762c507ebb7081acdfc84cab2e29c9f5d3c3f..d81714df9e316218b271cb42bb9e641369810552 100644 --- a/Source/WebKit/NetworkProcess/curl/NetworkDataTaskCurl.cpp +++ b/Source/WebKit/NetworkProcess/curl/NetworkDataTaskCurl.cpp -@@ -89,6 +89,8 @@ NetworkDataTaskCurl::NetworkDataTaskCurl(NetworkSession& session, NetworkDataTas - m_curlRequest->setUserPass(m_initialCredential.user(), m_initialCredential.password()); - m_curlRequest->setAuthenticationScheme(ProtectionSpace::AuthenticationScheme::HTTPBasic); +@@ -84,12 +84,20 @@ NetworkDataTaskCurl::NetworkDataTaskCurl(NetworkSession& session, NetworkDataTas + #endif + restrictRequestReferrerToOriginIfNeeded(request); + +- m_curlRequest = createCurlRequest(WTFMove(request)); +- if (!m_initialCredential.isEmpty()) { +- m_curlRequest->setUserPass(m_initialCredential.user(), m_initialCredential.password()); +- m_curlRequest->setAuthenticationScheme(ProtectionSpace::AuthenticationScheme::HTTPBasic); ++ if (request.url().protocolIsData()) { ++ DataURLDecoder::decode(request.url(), { }, [this, protectedThis = Ref { *this }](auto decodeResult) mutable { ++ didReadDataURL(WTFMove(decodeResult)); ++ }); ++ } else { ++ m_curlRequest = createCurlRequest(WTFMove(request)); ++ if (!m_initialCredential.isEmpty()) { ++ m_curlRequest->setUserPass(m_initialCredential.user(), m_initialCredential.password()); ++ m_curlRequest->setAuthenticationScheme(ProtectionSpace::AuthenticationScheme::HTTPBasic); ++ } ++ if (m_session->ignoreCertificateErrors()) ++ m_curlRequest->disableServerTrustEvaluation(); ++ m_curlRequest->start(); } -+ if (m_session->ignoreCertificateErrors()) -+ m_curlRequest->disableServerTrustEvaluation(); - m_curlRequest->start(); +- m_curlRequest->start(); } -@@ -166,6 +168,7 @@ void NetworkDataTaskCurl::curlDidReceiveResponse(CurlRequest& request, CurlRespo + NetworkDataTaskCurl::~NetworkDataTaskCurl() +@@ -166,6 +174,7 @@ void NetworkDataTaskCurl::curlDidReceiveResponse(CurlRequest& request, CurlRespo updateNetworkLoadMetrics(receivedResponse.networkLoadMetrics); m_response.setDeprecatedNetworkLoadMetrics(Box::create(WTFMove(receivedResponse.networkLoadMetrics))); @@ -9318,7 +9279,53 @@ index 51b762c507ebb7081acdfc84cab2e29c9f5d3c3f..a1b4c3a3b34d2cf5726e150f6f14d879 handleCookieHeaders(request.resourceRequest(), receivedResponse); -@@ -396,6 +399,8 @@ void NetworkDataTaskCurl::willPerformHTTPRedirection() +@@ -283,6 +292,36 @@ bool NetworkDataTaskCurl::shouldRedirectAsGET(const ResourceRequest& request, bo + return false; + } + ++void NetworkDataTaskCurl::didReadDataURL(std::optional&& result) ++{ ++ if (state() == State::Canceling || state() == State::Completed) ++ return; ++ ++ m_dataURLResult = WTFMove(result); ++ m_response = ResourceResponse::dataURLResponse(firstRequest().url(), m_dataURLResult.value()); ++ invokeDidReceiveResponse(); ++} ++ ++void NetworkDataTaskCurl::downloadDataURL(Download& download) ++{ ++ if (!m_dataURLResult) { ++ deleteDownloadFile(); ++ download.didFail(internalError(firstRequest().url()), IPC::DataReference()); ++ return; ++ } ++ ++ if (-1 == FileSystem::writeToFile(m_downloadDestinationFile, static_cast(m_dataURLResult.value().data.data()), m_dataURLResult.value().data.size())) { ++ deleteDownloadFile(); ++ download.didFail(ResourceError(CURLE_WRITE_ERROR, m_response.url()), IPC::DataReference()); ++ return; ++ } ++ ++ download.didReceiveData(m_dataURLResult.value().data.size(), 0, 0); ++ FileSystem::closeFile(m_downloadDestinationFile); ++ m_downloadDestinationFile = FileSystem::invalidPlatformFileHandle; ++ download.didFinish(); ++} ++ + void NetworkDataTaskCurl::invokeDidReceiveResponse() + { + didReceiveResponse(ResourceResponse(m_response), NegotiatedLegacyTLS::No, PrivateRelayed::No, [this, protectedThis = Ref { *this }](PolicyAction policyAction) { +@@ -313,6 +352,8 @@ void NetworkDataTaskCurl::invokeDidReceiveResponse() + downloadPtr->didCreateDestination(m_pendingDownloadLocation); + if (m_curlRequest) + m_curlRequest->completeDidReceiveResponse(); ++ else if (firstRequest().url().protocolIsData()) ++ downloadDataURL(*downloadPtr); + break; + } + default: +@@ -396,6 +437,8 @@ void NetworkDataTaskCurl::willPerformHTTPRedirection() m_curlRequest->setUserPass(m_initialCredential.user(), m_initialCredential.password()); m_curlRequest->setAuthenticationScheme(ProtectionSpace::AuthenticationScheme::HTTPBasic); } @@ -9327,11 +9334,51 @@ index 51b762c507ebb7081acdfc84cab2e29c9f5d3c3f..a1b4c3a3b34d2cf5726e150f6f14d879 m_curlRequest->start(); if (m_state != State::Suspended) { +diff --git a/Source/WebKit/NetworkProcess/curl/NetworkDataTaskCurl.h b/Source/WebKit/NetworkProcess/curl/NetworkDataTaskCurl.h +index 17131dda438f96bf4f9d9702248c5de61c51fc72..247605032eef3dcefe472f6fee413ad332c1e42f 100644 +--- a/Source/WebKit/NetworkProcess/curl/NetworkDataTaskCurl.h ++++ b/Source/WebKit/NetworkProcess/curl/NetworkDataTaskCurl.h +@@ -28,6 +28,7 @@ + #include "NetworkDataTask.h" + #include "NetworkLoadParameters.h" + #include ++#include + #include + #include + #include +@@ -43,6 +44,8 @@ class SharedBuffer; + + namespace WebKit { + ++class Download; ++ + class NetworkDataTaskCurl final : public NetworkDataTask, public WebCore::CurlRequestClient { + public: + static Ref create(NetworkSession& session, NetworkDataTaskClient& client, const NetworkLoadParameters& parameters) +@@ -75,6 +78,9 @@ private: + void curlDidComplete(WebCore::CurlRequest&, WebCore::NetworkLoadMetrics&&) override; + void curlDidFailWithError(WebCore::CurlRequest&, WebCore::ResourceError&&, WebCore::CertificateInfo&&) override; + ++ void didReadDataURL(std::optional&&); ++ void downloadDataURL(Download&); ++ + void invokeDidReceiveResponse(); + + bool shouldRedirectAsGET(const WebCore::ResourceRequest&, bool crossOrigin); +@@ -111,6 +117,8 @@ private: + unsigned m_redirectCount { 0 }; + unsigned m_authFailureCount { 0 }; + ++ std::optional m_dataURLResult; ++ + FileSystem::PlatformFileHandle m_downloadDestinationFile { FileSystem::invalidPlatformFileHandle }; + + bool m_blockingCookies { false }; diff --git a/Source/WebKit/NetworkProcess/curl/NetworkSessionCurl.cpp b/Source/WebKit/NetworkProcess/curl/NetworkSessionCurl.cpp -index 92a56b944d04850494c27b954ad68ec9ca3324b8..ead9a4c8b7f4b8add8439c02e72cdafe6515e643 100644 +index c0e5e8654fac24ea968398bcd8008e35ccea02fd..7b8c41d0ebcef34d7ad5b6004075a219a7db9c22 100644 --- a/Source/WebKit/NetworkProcess/curl/NetworkSessionCurl.cpp +++ b/Source/WebKit/NetworkProcess/curl/NetworkSessionCurl.cpp -@@ -61,7 +61,7 @@ NetworkSessionCurl::~NetworkSessionCurl() +@@ -66,7 +66,7 @@ void NetworkSessionCurl::clearAlternativeServices(WallTime) std::unique_ptr NetworkSessionCurl::createWebSocketTask(WebPageProxyIdentifier, NetworkSocketChannel& channel, const WebCore::ResourceRequest& request, const String& protocol, const WebCore::ClientOrigin&, bool, bool, OptionSet) { @@ -9376,7 +9423,7 @@ index c2e60f5ec6766e485996764bc240c18e8e747d85..20eb908199ea8735d38dfb27985fa2f3 void sendString(const IPC::DataReference&, CompletionHandler&&); diff --git a/Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp b/Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp -index 3644f10a9e868a26e2b39549f7498b1f37c1f2bd..80502c65186a65196b9069a6dc290ddbe8981202 100644 +index 2f40b5465f707be95c29b77eed4b1bd47c0dfaaa..15bd52cb15cde7d214c0c7678d0158f1f02d4c4f 100644 --- a/Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp +++ b/Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp @@ -492,6 +492,8 @@ void NetworkDataTaskSoup::didSendRequest(GRefPtr&& inputStream) @@ -9458,11 +9505,23 @@ index 7726f1ad59430f11a11bbec0300fcc86b4654e41..cdccb0f1d72c5350b5eebc197eeae8f5 #endif } return makeUnique(channel, request, soupSession(), soupMessage.get(), protocol); +diff --git a/Source/WebKit/NetworkProcess/webrtc/NetworkRTCMonitor.cpp b/Source/WebKit/NetworkProcess/webrtc/NetworkRTCMonitor.cpp +index 19abd815d501011a3aeffd7d555e8d8f4f120abe..492591574856d570333b22042ba18b9b6efebcce 100644 +--- a/Source/WebKit/NetworkProcess/webrtc/NetworkRTCMonitor.cpp ++++ b/Source/WebKit/NetworkProcess/webrtc/NetworkRTCMonitor.cpp +@@ -33,6 +33,7 @@ + #include "NetworkRTCProvider.h" + #include "WebRTCMonitorMessages.h" + #include ++#include + #include + + ALLOW_COMMA_BEGIN diff --git a/Source/WebKit/PlatformGTK.cmake b/Source/WebKit/PlatformGTK.cmake -index 6b1211d0a13f7df90932484c6dc2740ef3a19efe..c124dbdf443d1c9745332c692447854122491473 100644 +index 76c0f75c6bfef320a9323dad255521c2e143f173..8b4f6c7409e1108aa97283c72b87448afd396ba5 100644 --- a/Source/WebKit/PlatformGTK.cmake +++ b/Source/WebKit/PlatformGTK.cmake -@@ -301,6 +301,9 @@ list(APPEND WebKit_SYSTEM_INCLUDE_DIRECTORIES +@@ -304,6 +304,9 @@ list(APPEND WebKit_SYSTEM_INCLUDE_DIRECTORIES ${GSTREAMER_PBUTILS_INCLUDE_DIRS} ${GTK_INCLUDE_DIRS} ${LIBSOUP_INCLUDE_DIRS} @@ -9472,7 +9531,7 @@ index 6b1211d0a13f7df90932484c6dc2740ef3a19efe..c124dbdf443d1c9745332c6924478541 ) list(APPEND WebKit_INTERFACE_INCLUDE_DIRECTORIES -@@ -347,6 +350,9 @@ if (USE_LIBWEBRTC) +@@ -350,6 +353,9 @@ if (USE_LIBWEBRTC) list(APPEND WebKit_SYSTEM_INCLUDE_DIRECTORIES "${THIRDPARTY_DIR}/libwebrtc/Source/" "${THIRDPARTY_DIR}/libwebrtc/Source/webrtc" @@ -9482,7 +9541,7 @@ index 6b1211d0a13f7df90932484c6dc2740ef3a19efe..c124dbdf443d1c9745332c6924478541 ) endif () -@@ -390,6 +396,12 @@ else () +@@ -393,6 +399,12 @@ else () set(WebKitGTK_ENUM_HEADER_TEMPLATE ${WEBKIT_DIR}/UIProcess/API/gtk/WebKitEnumTypesGtk3.h.in) endif () @@ -9496,7 +9555,7 @@ index 6b1211d0a13f7df90932484c6dc2740ef3a19efe..c124dbdf443d1c9745332c6924478541 set(WebKitGTK_ENUM_GENERATION_HEADERS ${WebKitGTK_INSTALLED_HEADERS}) list(REMOVE_ITEM WebKitGTK_ENUM_GENERATION_HEADERS ${WebKitGTK_DERIVED_SOURCES_DIR}/webkit/WebKitEnumTypes.h) diff --git a/Source/WebKit/PlatformWPE.cmake b/Source/WebKit/PlatformWPE.cmake -index 3662aacc86a6a86abe77a0706c1097d51f56c738..87145b8902721aa1b15a1ba9f3e55cdd1a3bb864 100644 +index ecf329c734796c779dfe296c1a280c73a1a701f7..ff0dfc87fdddccb0b83f05277f4f09d29e0573a7 100644 --- a/Source/WebKit/PlatformWPE.cmake +++ b/Source/WebKit/PlatformWPE.cmake @@ -202,6 +202,7 @@ set(WPE_API_INSTALLED_HEADERS @@ -9746,20 +9805,8 @@ index 72ad2880160a374e8fa663e561d59becf9d2f36d..372ae6953199245fe4fc55a49813c7ca String markup #endif }; -diff --git a/Source/WebKit/Shared/RTCPacketOptions.h b/Source/WebKit/Shared/RTCPacketOptions.h -index 8b8223a49829fd2c0a325519881d6878f8c3f2b5..7e1cc65fecf18e0f71166c99f224294141fe8f73 100644 ---- a/Source/WebKit/Shared/RTCPacketOptions.h -+++ b/Source/WebKit/Shared/RTCPacketOptions.h -@@ -30,6 +30,7 @@ - #include - #include - #include -+#include - - ALLOW_COMMA_BEGIN - diff --git a/Source/WebKit/Shared/WebCoreArgumentCoders.cpp b/Source/WebKit/Shared/WebCoreArgumentCoders.cpp -index 70010a1a8ffae48ba7544c433905b4c3abb7d071..ec3a853a513188b9d17470003edf41c381893a3c 100644 +index 80330f994d32266c11a0bed96ab1f4c177ddb873..cdba6856e3559d64006bfb8a0ea116b8e6b49c58 100644 --- a/Source/WebKit/Shared/WebCoreArgumentCoders.cpp +++ b/Source/WebKit/Shared/WebCoreArgumentCoders.cpp @@ -193,6 +193,10 @@ @@ -9774,21 +9821,10 @@ index 70010a1a8ffae48ba7544c433905b4c3abb7d071..ec3a853a513188b9d17470003edf41c3 namespace IPC { diff --git a/Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in b/Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in -index 09ff0a84eac17f9621e25320b6735d9bf6aea516..4dc36ba1096ad567546a9e39719dcb9e8f9067a7 100644 +index ab4628838d2b0cb48fb874c76c50c36fc8a804a4..309dfc44eb8cfe8368f856ae6c4b0c3a54149544 100644 --- a/Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in +++ b/Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in -@@ -1417,6 +1417,10 @@ struct WebCore::WindowFeatures { - - bool fullscreen; - bool dialog; -+ -+ bool noopener; -+ bool noreferrer; -+ Vector additionalFeatures; - }; - - [Nested] enum class WebCore::CompositionUnderlineColor : bool -@@ -1872,6 +1876,9 @@ class WebCore::AuthenticationChallenge { +@@ -1887,6 +1887,9 @@ class WebCore::AuthenticationChallenge { class WebCore::DragData { #if PLATFORM(COCOA) String pasteboardName(); @@ -9798,7 +9834,7 @@ index 09ff0a84eac17f9621e25320b6735d9bf6aea516..4dc36ba1096ad567546a9e39719dcb9e #endif WebCore::IntPoint clientPosition(); WebCore::IntPoint globalPosition(); -@@ -2368,6 +2375,7 @@ enum class WebCore::ResourceLoadPriority : uint8_t { +@@ -2385,6 +2388,7 @@ enum class WebCore::ResourceLoadPriority : uint8_t { AtomString m_httpStatusText; AtomString m_httpVersion; WebCore::HTTPHeaderMap m_httpHeaderFields; @@ -9806,18 +9842,6 @@ index 09ff0a84eac17f9621e25320b6735d9bf6aea516..4dc36ba1096ad567546a9e39719dcb9e Box m_networkLoadMetrics; short m_httpStatusCode; -diff --git a/Source/WebKit/Shared/WebEvent.h b/Source/WebKit/Shared/WebEvent.h -index f1d40766987ef6c0fb2d880548826b31421ffe12..e6c79718e6730ff88181b4c8b70abe5b63873590 100644 ---- a/Source/WebKit/Shared/WebEvent.h -+++ b/Source/WebKit/Shared/WebEvent.h -@@ -34,6 +34,7 @@ - - #include - #include -+#include - #include - #include - #include diff --git a/Source/WebKit/Shared/WebKeyboardEvent.cpp b/Source/WebKit/Shared/WebKeyboardEvent.cpp index a80efd294086ea1bd3b1e9dc805491ff5230962f..17d9d5461ae47a122160f10b7fdcb662f06bea7a 100644 --- a/Source/WebKit/Shared/WebKeyboardEvent.cpp @@ -10034,7 +10058,7 @@ index 03e118154f6bb5b704b4ecb83d3d9543f8c5a5fa..9725caaac6ee65a96ea324ddbb4e1a37 +#endif // ENABLE(TOUCH_EVENTS) && PLATFORM(IOS_FAMILY) diff --git a/Source/WebKit/Shared/libwpe/ArgumentCodersWPE.cpp b/Source/WebKit/Shared/libwpe/ArgumentCodersWPE.cpp new file mode 100644 -index 0000000000000000000000000000000000000000..42d4448dc95ece1b2144c5ad5ef3d03ab05f8e5f +index 0000000000000000000000000000000000000000..2f76a4ebb75be613f956c8f0e6f57c4ed57b9f43 --- /dev/null +++ b/Source/WebKit/Shared/libwpe/ArgumentCodersWPE.cpp @@ -0,0 +1,171 @@ @@ -10079,7 +10103,7 @@ index 0000000000000000000000000000000000000000..42d4448dc95ece1b2144c5ad5ef3d03a + +static void encodeImage(Encoder& encoder, Image& image) +{ -+ RefPtr bitmap = ShareableBitmap::create(IntSize(image.size()), { }); ++ RefPtr bitmap = ShareableBitmap::create({ IntSize(image.size()) }); + bitmap->createGraphicsContext()->drawImage(image, IntPoint()); + + encoder << bitmap->createHandle(); @@ -10257,10 +10281,10 @@ index 0000000000000000000000000000000000000000..789a0d7cf69704c8f665a9ed79348fbc + +} // namespace IPC diff --git a/Source/WebKit/Sources.txt b/Source/WebKit/Sources.txt -index eb728f2606494a73748b7f577c83ce540c8da684..ecbd84e088af4a590bab37190340478e28c87c41 100644 +index 3882749372c005ee15878c15b4b94eaf245ca010..25245942e5843ffc3bf01074125fe5c2dc2d3795 100644 --- a/Source/WebKit/Sources.txt +++ b/Source/WebKit/Sources.txt -@@ -382,11 +382,14 @@ Shared/XR/XRDeviceProxy.cpp +@@ -388,11 +388,14 @@ Shared/XR/XRDeviceProxy.cpp UIProcess/AuxiliaryProcessProxy.cpp UIProcess/BackgroundProcessResponsivenessTimer.cpp @@ -10275,7 +10299,7 @@ index eb728f2606494a73748b7f577c83ce540c8da684..ecbd84e088af4a590bab37190340478e UIProcess/LegacyGlobalSettings.cpp UIProcess/MediaKeySystemPermissionRequestManagerProxy.cpp UIProcess/MediaKeySystemPermissionRequestProxy.cpp -@@ -397,6 +400,7 @@ UIProcess/ProcessAssertion.cpp +@@ -403,6 +406,7 @@ UIProcess/ProcessAssertion.cpp UIProcess/ProcessThrottler.cpp UIProcess/ProvisionalFrameProxy.cpp UIProcess/ProvisionalPageProxy.cpp @@ -10283,7 +10307,7 @@ index eb728f2606494a73748b7f577c83ce540c8da684..ecbd84e088af4a590bab37190340478e UIProcess/ResponsivenessTimer.cpp UIProcess/SpeechRecognitionRemoteRealtimeMediaSource.cpp UIProcess/SpeechRecognitionRemoteRealtimeMediaSourceManager.cpp -@@ -439,6 +443,8 @@ UIProcess/WebOpenPanelResultListenerProxy.cpp +@@ -445,6 +449,8 @@ UIProcess/WebOpenPanelResultListenerProxy.cpp UIProcess/WebPageDiagnosticLoggingClient.cpp UIProcess/WebPageGroup.cpp UIProcess/WebPageInjectedBundleClient.cpp @@ -10292,7 +10316,7 @@ index eb728f2606494a73748b7f577c83ce540c8da684..ecbd84e088af4a590bab37190340478e UIProcess/WebPageProxy.cpp UIProcess/WebPasteboardProxy.cpp UIProcess/WebPermissionControllerProxy.cpp -@@ -569,7 +575,11 @@ UIProcess/Inspector/WebInspectorUtilities.cpp +@@ -575,7 +581,11 @@ UIProcess/Inspector/WebInspectorUtilities.cpp UIProcess/Inspector/WebPageDebuggable.cpp UIProcess/Inspector/WebPageInspectorController.cpp @@ -10305,7 +10329,7 @@ index eb728f2606494a73748b7f577c83ce540c8da684..ecbd84e088af4a590bab37190340478e UIProcess/Media/AudioSessionRoutingArbitratorProxy.cpp UIProcess/Media/MediaUsageManager.cpp diff --git a/Source/WebKit/SourcesCocoa.txt b/Source/WebKit/SourcesCocoa.txt -index 429a607f2d778829c9b4a2d9663cc55fb0afc163..b2856e731d6e3537fc531a65c4e0765e25888161 100644 +index 8c37bd3c8c1da8a1308aea6b13aaf9c8ee064fdc..a661a135ccb9ebfb4b7b621fba30991fb4501003 100644 --- a/Source/WebKit/SourcesCocoa.txt +++ b/Source/WebKit/SourcesCocoa.txt @@ -260,6 +260,7 @@ UIProcess/API/Cocoa/_WKApplicationManifest.mm @@ -10325,10 +10349,10 @@ index 429a607f2d778829c9b4a2d9663cc55fb0afc163..b2856e731d6e3537fc531a65c4e0765e UIProcess/Inspector/mac/WKInspectorResourceURLSchemeHandler.mm UIProcess/Inspector/mac/WKInspectorViewController.mm diff --git a/Source/WebKit/SourcesGTK.txt b/Source/WebKit/SourcesGTK.txt -index 6420f55eac43f3fa9c75a07c1a361aa32c1b7289..8c9c50bc4a2200360b53cfbf10de6d0d402bb131 100644 +index 22309c40882a3efdcf6e15f2d917cba2556c4b0c..c16764cac6d5b59a187eb5236afd17b222bb404b 100644 --- a/Source/WebKit/SourcesGTK.txt +++ b/Source/WebKit/SourcesGTK.txt -@@ -133,6 +133,7 @@ UIProcess/API/glib/WebKitAutomationSession.cpp @no-unify +@@ -135,6 +135,7 @@ UIProcess/API/glib/WebKitAutomationSession.cpp @no-unify UIProcess/API/glib/WebKitBackForwardList.cpp @no-unify UIProcess/API/glib/WebKitBackForwardListItem.cpp @no-unify UIProcess/API/glib/WebKitClipboardPermissionRequest.cpp @no-unify @@ -10336,7 +10360,7 @@ index 6420f55eac43f3fa9c75a07c1a361aa32c1b7289..8c9c50bc4a2200360b53cfbf10de6d0d UIProcess/API/glib/WebKitContextMenuClient.cpp @no-unify UIProcess/API/glib/WebKitCookieManager.cpp @no-unify UIProcess/API/glib/WebKitCredential.cpp @no-unify -@@ -255,6 +256,7 @@ UIProcess/WebsiteData/soup/WebsiteDataStoreSoup.cpp +@@ -257,6 +258,7 @@ UIProcess/WebsiteData/soup/WebsiteDataStoreSoup.cpp UIProcess/cairo/BackingStoreCairo.cpp @no-unify @@ -10344,7 +10368,7 @@ index 6420f55eac43f3fa9c75a07c1a361aa32c1b7289..8c9c50bc4a2200360b53cfbf10de6d0d UIProcess/glib/WebPageProxyGLib.cpp UIProcess/glib/WebProcessPoolGLib.cpp UIProcess/glib/WebProcessProxyGLib.cpp -@@ -271,6 +273,7 @@ UIProcess/gtk/ClipboardGtk4.cpp @no-unify +@@ -273,6 +275,7 @@ UIProcess/gtk/ClipboardGtk4.cpp @no-unify UIProcess/gtk/WebDateTimePickerGtk.cpp UIProcess/gtk/GtkSettingsManager.cpp UIProcess/gtk/HardwareAccelerationManager.cpp @@ -10352,7 +10376,7 @@ index 6420f55eac43f3fa9c75a07c1a361aa32c1b7289..8c9c50bc4a2200360b53cfbf10de6d0d UIProcess/gtk/KeyBindingTranslator.cpp UIProcess/gtk/PointerLockManager.cpp @no-unify UIProcess/gtk/PointerLockManagerWayland.cpp @no-unify -@@ -282,6 +285,8 @@ UIProcess/gtk/ViewGestureControllerGtk.cpp +@@ -284,6 +287,8 @@ UIProcess/gtk/ViewGestureControllerGtk.cpp UIProcess/gtk/WebColorPickerGtk.cpp UIProcess/gtk/WebContextMenuProxyGtk.cpp UIProcess/gtk/WebDataListSuggestionsDropdownGtk.cpp @@ -10362,10 +10386,10 @@ index 6420f55eac43f3fa9c75a07c1a361aa32c1b7289..8c9c50bc4a2200360b53cfbf10de6d0d UIProcess/gtk/WebPasteboardProxyGtk.cpp UIProcess/gtk/WebPopupMenuProxyGtk.cpp diff --git a/Source/WebKit/SourcesWPE.txt b/Source/WebKit/SourcesWPE.txt -index 237f0919b5bbe1a1cb0b8415dfe3d70a6a848294..736c338e76f10a73fbbe2ee2359a3c8118cbd601 100644 +index b4f270f8d6899b8c9799f8708bc735fb28ac1188..caa1a06ced302616ed3056c10ed18058d1fb963f 100644 --- a/Source/WebKit/SourcesWPE.txt +++ b/Source/WebKit/SourcesWPE.txt -@@ -88,6 +88,7 @@ Shared/glib/ProcessExecutablePathGLib.cpp +@@ -90,6 +90,7 @@ Shared/glib/ProcessExecutablePathGLib.cpp Shared/glib/UserMessage.cpp Shared/glib/WebContextMenuItemGlib.cpp @@ -10373,7 +10397,7 @@ index 237f0919b5bbe1a1cb0b8415dfe3d70a6a848294..736c338e76f10a73fbbe2ee2359a3c81 Shared/libwpe/NativeWebKeyboardEventLibWPE.cpp Shared/libwpe/NativeWebMouseEventLibWPE.cpp Shared/libwpe/NativeWebTouchEventLibWPE.cpp -@@ -124,6 +125,7 @@ UIProcess/API/glib/WebKitAuthenticationRequest.cpp @no-unify +@@ -126,6 +127,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 @@ -10381,7 +10405,7 @@ index 237f0919b5bbe1a1cb0b8415dfe3d70a6a848294..736c338e76f10a73fbbe2ee2359a3c81 UIProcess/API/glib/WebKitContextMenuClient.cpp @no-unify UIProcess/API/glib/WebKitCookieManager.cpp @no-unify UIProcess/API/glib/WebKitCredential.cpp @no-unify -@@ -156,6 +158,7 @@ UIProcess/API/glib/WebKitOptionMenu.cpp @no-unify +@@ -158,6 +160,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 @@ -10389,7 +10413,7 @@ index 237f0919b5bbe1a1cb0b8415dfe3d70a6a848294..736c338e76f10a73fbbe2ee2359a3c81 UIProcess/API/glib/WebKitPolicyDecision.cpp @no-unify UIProcess/API/glib/WebKitPrivate.cpp @no-unify UIProcess/API/glib/WebKitProtocolHandler.cpp @no-unify -@@ -192,6 +195,7 @@ UIProcess/API/soup/HTTPCookieStoreSoup.cpp +@@ -194,6 +197,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 @@ -10397,7 +10421,7 @@ index 237f0919b5bbe1a1cb0b8415dfe3d70a6a848294..736c338e76f10a73fbbe2ee2359a3c81 UIProcess/API/wpe/WebKitInputMethodContextWPE.cpp @no-unify UIProcess/API/wpe/WebKitPopupMenu.cpp @no-unify UIProcess/API/wpe/WebKitRectangle.cpp @no-unify -@@ -212,6 +216,7 @@ UIProcess/Gamepad/libwpe/UIGamepadProviderLibWPE.cpp +@@ -214,6 +218,7 @@ UIProcess/Gamepad/libwpe/UIGamepadProviderLibWPE.cpp UIProcess/geoclue/GeoclueGeolocationProvider.cpp @@ -10405,7 +10429,7 @@ index 237f0919b5bbe1a1cb0b8415dfe3d70a6a848294..736c338e76f10a73fbbe2ee2359a3c81 UIProcess/glib/WebPageProxyGLib.cpp UIProcess/glib/WebProcessPoolGLib.cpp UIProcess/glib/WebProcessProxyGLib.cpp -@@ -240,6 +245,11 @@ UIProcess/linux/MemoryPressureMonitor.cpp +@@ -242,6 +247,11 @@ UIProcess/linux/MemoryPressureMonitor.cpp UIProcess/soup/WebProcessPoolSoup.cpp @@ -10417,7 +10441,7 @@ index 237f0919b5bbe1a1cb0b8415dfe3d70a6a848294..736c338e76f10a73fbbe2ee2359a3c81 UIProcess/wpe/WebPageProxyWPE.cpp WebProcess/GPU/graphics/gbm/RemoteGraphicsContextGLProxyGBM.cpp -@@ -262,6 +272,8 @@ WebProcess/WebCoreSupport/glib/WebEditorClientGLib.cpp +@@ -264,6 +274,8 @@ WebProcess/WebCoreSupport/glib/WebEditorClientGLib.cpp WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.cpp @@ -10426,30 +10450,6 @@ index 237f0919b5bbe1a1cb0b8415dfe3d70a6a848294..736c338e76f10a73fbbe2ee2359a3c81 WebProcess/WebCoreSupport/wpe/WebEditorClientWPE.cpp WebProcess/WebPage/AcceleratedSurface.cpp -diff --git a/Source/WebKit/UIProcess/API/APIAttachment.cpp b/Source/WebKit/UIProcess/API/APIAttachment.cpp -index 9a7a422ba18e36be0863c25aa77bc7ab4832a42c..1d0b699d1d28e1320a9dc11fc8937a9a2e3eb323 100644 ---- a/Source/WebKit/UIProcess/API/APIAttachment.cpp -+++ b/Source/WebKit/UIProcess/API/APIAttachment.cpp -@@ -30,6 +30,7 @@ - - #include "WebPageProxy.h" - #include -+#include - #include - - namespace API { -diff --git a/Source/WebKit/UIProcess/API/APIAttachment.h b/Source/WebKit/UIProcess/API/APIAttachment.h -index 72b3aa0f4e44e7d9c66582586023decafb36c80b..79e75248be46d50b5126c500de6cc51793326023 100644 ---- a/Source/WebKit/UIProcess/API/APIAttachment.h -+++ b/Source/WebKit/UIProcess/API/APIAttachment.h -@@ -35,6 +35,7 @@ - #include - #include - -+OBJC_CLASS NSData; - OBJC_CLASS NSFileWrapper; - OBJC_CLASS NSString; - diff --git a/Source/WebKit/UIProcess/API/APIProcessPoolConfiguration.cpp b/Source/WebKit/UIProcess/API/APIProcessPoolConfiguration.cpp index 524060060c8953ad7bc30fc6bbda8abee5e8d3b0..86797760ad804c77d26f8ea8fbd5998da66079be 100644 --- a/Source/WebKit/UIProcess/API/APIProcessPoolConfiguration.cpp @@ -10498,7 +10498,7 @@ index 81ae40e623476c4397447d0a5572883dd2abe6cd..bd23ba5fff29eb6bea285ea3b90f3cde 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 87fe6179167eb7712c740ddb3e9129b166e10b09..634b9b19b04fd4ce4ddecb0958faf72a6539fe3a 100644 +index da61f5c3a22f5750c3e8f96703ef0e3e4f075578..1e71afbdc8a1af7a95efc867b4465071c3356f34 100644 --- a/Source/WebKit/UIProcess/API/APIUIClient.h +++ b/Source/WebKit/UIProcess/API/APIUIClient.h @@ -112,6 +112,7 @@ public: @@ -10711,7 +10711,7 @@ index 67da62d607a6cfe180c61776467f95f872312bf0..62a2494b0aaaef0910510dd6a30fcd3b NS_ASSUME_NONNULL_END diff --git a/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm b/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm -index 862ac19f8108e65e2efc5145e6a354d752e6ea6c..89e682ddaab4c5ef39f834370dd145434556287f 100644 +index ca6c2c9c36a6af8e31f2f1c7d9b8b60b439bd8f9..3d05746fd28ea2b029926ecbbc86054b7ff5144b 100644 --- a/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm +++ b/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm @@ -50,6 +50,7 @@ @@ -10720,9 +10720,9 @@ index 862ac19f8108e65e2efc5145e6a354d752e6ea6c..89e682ddaab4c5ef39f834370dd14543 #import "_WKWebsiteDataStoreDelegate.h" +#import #import - #import #import -@@ -331,6 +332,11 @@ - (void)removeDataOfTypes:(NSSet *)dataTypes modifiedSince:(NSDate *)date comple + #import +@@ -337,6 +338,11 @@ - (void)removeDataOfTypes:(NSSet *)dataTypes modifiedSince:(NSDate *)date comple }); } @@ -10861,43 +10861,6 @@ index 0000000000000000000000000000000000000000..e7143513ea2be8e1cdab5c86a28643ff + [super dealloc]; +} +@end -diff --git a/Source/WebKit/UIProcess/API/Cocoa/_WKDownload.mm b/Source/WebKit/UIProcess/API/Cocoa/_WKDownload.mm -index f585618b83609aa3664cc248ee1aa56ed35221a5..96bfd6a709a4ca6bc5a76abc5d98323ef8a5bf07 100644 ---- a/Source/WebKit/UIProcess/API/Cocoa/_WKDownload.mm -+++ b/Source/WebKit/UIProcess/API/Cocoa/_WKDownload.mm -@@ -32,6 +32,7 @@ - #import "WKFrameInfoInternal.h" - #import "WKNSData.h" - #import "WKWebViewInternal.h" -+#import - #import - #import - -diff --git a/Source/WebKit/UIProcess/API/Cocoa/_WKDownloadInternal.h b/Source/WebKit/UIProcess/API/Cocoa/_WKDownloadInternal.h -index b1c6e033c8a86353f96161482d92c227d7946201..64e592705c97d2d78668aa532f271ddf83ed4c9a 100644 ---- a/Source/WebKit/UIProcess/API/Cocoa/_WKDownloadInternal.h -+++ b/Source/WebKit/UIProcess/API/Cocoa/_WKDownloadInternal.h -@@ -24,6 +24,7 @@ - */ - - #import "_WKDownload.h" -+#import "WKObject.h" - - #import "WKObject.h" - #import -diff --git a/Source/WebKit/UIProcess/API/Cocoa/_WKInspectorInternal.h b/Source/WebKit/UIProcess/API/Cocoa/_WKInspectorInternal.h -index 8c8c9d77a3071f4093994c27dbe8e448ed1c62d8..dffc5b228d0d7d964954aa4e93e2351948e5657b 100644 ---- a/Source/WebKit/UIProcess/API/Cocoa/_WKInspectorInternal.h -+++ b/Source/WebKit/UIProcess/API/Cocoa/_WKInspectorInternal.h -@@ -29,6 +29,8 @@ - #import "WebInspectorUIProxy.h" - #import - -+#import -+ - namespace WebKit { - - template<> struct WrapperTraits { diff --git a/Source/WebKit/UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h b/Source/WebKit/UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h index 70b039a44ad29aab69f724a1da9b0917cd1f01cd..09ed375c4a4c748acaaa32c8ec99e5a81895d793 100644 --- a/Source/WebKit/UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h @@ -11227,7 +11190,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 ea08fc61a2164c99ee92e5c8c3cbc63b0b2a8f0f..b000450f7aa63281a54090d71594364cd2e8e77d 100644 +index 1b40bd3a2a777d09e8aaec9d77fb3724fe93531c..d5b742173e7930574076285dab7210faa5ef8437 100644 --- a/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp +++ b/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp @@ -34,6 +34,7 @@ @@ -11480,7 +11443,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 5deb91e3872223142169ae6e16fd6c50b0ceefb9..770d649c54142e4d2f8c972f78a6382a9a92564b 100644 +index d3f6ce5dec7d093caeec4dea133529bf4e28183f..9274579c19aa74f91de88af1e322741c1d3e5761 100644 --- a/Source/WebKit/UIProcess/API/wpe/PageClientImpl.cpp +++ b/Source/WebKit/UIProcess/API/wpe/PageClientImpl.cpp @@ -33,8 +33,11 @@ @@ -11504,7 +11467,7 @@ index 5deb91e3872223142169ae6e16fd6c50b0ceefb9..770d649c54142e4d2f8c972f78a6382a } void PageClientImpl::doneWithKeyEvent(const NativeWebKeyboardEvent&, bool) -@@ -441,4 +444,23 @@ WebKitWebResourceLoadManager* PageClientImpl::webResourceLoadManager() +@@ -433,4 +436,23 @@ WebKitWebResourceLoadManager* PageClientImpl::webResourceLoadManager() return m_view.webResourceLoadManager(); } @@ -11551,7 +11514,7 @@ index 948d0f4a4759afa1533cd84a190f3d56e54a5cb5..fc43ce6cc53636b5e6f9b5af9d6609b6 }; diff --git a/Source/WebKit/UIProcess/API/wpe/WPEView.cpp b/Source/WebKit/UIProcess/API/wpe/WPEView.cpp -index 8cbd950868a296eee8b38d07c8212d93c2790162..dd660f6392f02b366a02aeac1847b6b03f20eadd 100644 +index 39e32588758eebf1a394f00b8d815c1ceba98d20..bcae16a025283ca1005362638b0481f3c356ac92 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 @@ -11931,10 +11894,10 @@ index 38ca49dd6220ead604784d4f1399e2edd0ad1fb5..faed1ded037ca66df850200dfb46bafd platformGetLaunchOptions(launchOptions); } diff --git a/Source/WebKit/UIProcess/AuxiliaryProcessProxy.h b/Source/WebKit/UIProcess/AuxiliaryProcessProxy.h -index 03d81ec4c46f27bb952dbf50b6a7be5e2aa2a82d..36b6a07d03c6f6bf7f26f832f963cb2b55a2d3e3 100644 +index e163de5902e27e4ed226610f09ac9c8dc001c3e8..ee9014287e19758530c20be2c711e0a4aa1ac22a 100644 --- a/Source/WebKit/UIProcess/AuxiliaryProcessProxy.h +++ b/Source/WebKit/UIProcess/AuxiliaryProcessProxy.h -@@ -199,12 +199,15 @@ protected: +@@ -197,12 +197,15 @@ protected: static RefPtr fetchAudioComponentServerRegistrations(); #endif @@ -12074,18 +12037,6 @@ index 0000000000000000000000000000000000000000..cd66887de171cda7d15a8e4dc6dbff63 +} // namespace WebKit + +#endif // ENABLE(REMOTE_INSPECTOR) -diff --git a/Source/WebKit/UIProcess/Cocoa/AutomationClient.mm b/Source/WebKit/UIProcess/Cocoa/AutomationClient.mm -index 30860712f58b2a8d48cef5da4e6f03345f2921ba..e715496c24529689784ba4d481d23441ab68cf1e 100644 ---- a/Source/WebKit/UIProcess/Cocoa/AutomationClient.mm -+++ b/Source/WebKit/UIProcess/Cocoa/AutomationClient.mm -@@ -35,6 +35,7 @@ - #import - #import - #import -+#import - - using namespace Inspector; - diff --git a/Source/WebKit/UIProcess/Cocoa/ModalContainerControlClassifier.mm b/Source/WebKit/UIProcess/Cocoa/ModalContainerControlClassifier.mm index 9edf4e2ca81f85f4cf8827932964e5fc352af99e..2eb7b0a327f517b7975cc0cab100a3818d44635e 100644 --- a/Source/WebKit/UIProcess/Cocoa/ModalContainerControlClassifier.mm @@ -12124,7 +12075,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 11091dca0bc84e5390287f2ce5ea05910eb18550..892f2c01a31d815675536eca99341f76cb3e1e52 100644 +index a390d2da0e58a8edc800dd0a9391e70e367013e3..c997205ecb1ea5a0ba40b242835e3e92df6f63ed 100644 --- a/Source/WebKit/UIProcess/Cocoa/UIDelegate.h +++ b/Source/WebKit/UIProcess/Cocoa/UIDelegate.h @@ -95,6 +95,7 @@ private: @@ -12144,10 +12095,10 @@ index 11091dca0bc84e5390287f2ce5ea05910eb18550..892f2c01a31d815675536eca99341f76 bool webViewRunBeforeUnloadConfirmPanelWithMessageInitiatedByFrameCompletionHandler : 1; bool webViewRequestGeolocationPermissionForFrameDecisionHandler : 1; diff --git a/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm b/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm -index 770ae367af73461bcd838bc6326527e2baae44dd..55e7638a1aea274bbbefd66675f3176f5edd3d4d 100644 +index c735254b89a8507196efdad20903172228e98636..b2cb8eaf439ab625a18363a938b471c10d28a2d6 100644 --- a/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm +++ b/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm -@@ -116,6 +116,7 @@ void UIDelegate::setDelegate(id delegate) +@@ -117,6 +117,7 @@ void UIDelegate::setDelegate(id delegate) m_delegateMethods.webViewRunJavaScriptAlertPanelWithMessageInitiatedByFrameCompletionHandler = [delegate respondsToSelector:@selector(webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:)]; m_delegateMethods.webViewRunJavaScriptConfirmPanelWithMessageInitiatedByFrameCompletionHandler = [delegate respondsToSelector:@selector(webView:runJavaScriptConfirmPanelWithMessage:initiatedByFrame:completionHandler:)]; m_delegateMethods.webViewRunJavaScriptTextInputPanelWithPromptDefaultTextInitiatedByFrameCompletionHandler = [delegate respondsToSelector:@selector(webView:runJavaScriptTextInputPanelWithPrompt:defaultText:initiatedByFrame:completionHandler:)]; @@ -12155,7 +12106,7 @@ index 770ae367af73461bcd838bc6326527e2baae44dd..55e7638a1aea274bbbefd66675f3176f 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:)]; -@@ -423,6 +424,15 @@ void UIDelegate::UIClient::runJavaScriptPrompt(WebPageProxy& page, const WTF::St +@@ -424,6 +425,15 @@ void UIDelegate::UIClient::runJavaScriptPrompt(WebPageProxy& page, const WTF::St }).get()]; } @@ -12172,7 +12123,7 @@ index 770ae367af73461bcd838bc6326527e2baae44dd..55e7638a1aea274bbbefd66675f3176f { if (!m_uiDelegate) diff --git a/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm b/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm -index 348d52ac45c4c4c65addaa8216d66a33fe1d963d..f4847f4f1fcdfbce30dfe3ef5b2a0f01e0892718 100644 +index e225bc2755fc943309262d414400fe60d80f2e1b..d688aba1a1166a1b8e5670854cb5937043c0bbd8 100644 --- a/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm +++ b/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm @@ -39,6 +39,7 @@ @@ -12185,7 +12136,7 @@ index 348d52ac45c4c4c65addaa8216d66a33fe1d963d..f4847f4f1fcdfbce30dfe3ef5b2a0f01 #import "RemoteLayerTreeTransaction.h" @@ -295,10 +296,87 @@ bool WebPageProxy::scrollingUpdatesDisabledForTesting() - void WebPageProxy::startDrag(const DragItem& dragItem, const ShareableBitmapHandle& dragImageHandle) + void WebPageProxy::startDrag(const DragItem& dragItem, const ShareableBitmap::Handle& dragImageHandle) { + if (m_interceptDrags) { + NSPasteboard *pasteboard = [NSPasteboard pasteboardWithName: m_overrideDragPasteboardName]; @@ -12273,10 +12224,10 @@ index 348d52ac45c4c4c65addaa8216d66a33fe1d963d..f4847f4f1fcdfbce30dfe3ef5b2a0f01 #if ENABLE(ATTACHMENT_ELEMENT) diff --git a/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm b/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm -index def2b80112e24a7c494ee9e710ac42981a637607..d1097242848557d8938ee5710d59dd36f27a17b2 100644 +index 8dde7360d66bf4c82953db2dc6c0e0e2a2e73043..82f2a9942938cd7782d484548c8e5c20b92795d6 100644 --- a/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm +++ b/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm -@@ -466,7 +466,7 @@ void WebProcessPool::platformInitializeWebProcess(const WebProcessProxy& process +@@ -466,7 +466,7 @@ ALLOW_DEPRECATED_DECLARATIONS_END auto screenProperties = WebCore::collectScreenProperties(); parameters.screenProperties = WTFMove(screenProperties); #if PLATFORM(MAC) @@ -12285,7 +12236,7 @@ index def2b80112e24a7c494ee9e710ac42981a637607..d1097242848557d8938ee5710d59dd36 #endif #if PLATFORM(IOS) && HAVE(AGX_COMPILER_SERVICE) -@@ -740,8 +740,8 @@ void WebProcessPool::registerNotificationObservers() +@@ -736,8 +736,8 @@ void WebProcessPool::registerNotificationObservers() }]; m_scrollerStyleNotificationObserver = [[NSNotificationCenter defaultCenter] addObserverForName:NSPreferredScrollerStyleDidChangeNotification object:nil queue:[NSOperationQueue currentQueue] usingBlock:^(NSNotification *notification) { @@ -12297,10 +12248,10 @@ index def2b80112e24a7c494ee9e710ac42981a637607..d1097242848557d8938ee5710d59dd36 m_activationObserver = [[NSNotificationCenter defaultCenter] addObserverForName:NSApplicationDidBecomeActiveNotification object:NSApp queue:[NSOperationQueue currentQueue] usingBlock:^(NSNotification *notification) { diff --git a/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp b/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp -index 86f4d20a8a26fcc209ea70445770cf71f7190d6e..8155187eaf80f55cea238c2c5d69d09e8b71759f 100644 +index c849ed5f1cefc33b32101c180a3168be6d9e6a47..913f13361c1a8ebe026f714bb1949a36f1e9cdcb 100644 --- a/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp +++ b/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp -@@ -33,13 +33,16 @@ +@@ -33,12 +33,15 @@ #include "LayerTreeContext.h" #include "MessageSenderInlines.h" #include "UpdateInfo.h" @@ -12308,7 +12259,6 @@ index 86f4d20a8a26fcc209ea70445770cf71f7190d6e..8155187eaf80f55cea238c2c5d69d09e #include "WebPageProxy.h" #include "WebPreferences.h" #include "WebProcessProxy.h" - #include #include +#include @@ -12317,7 +12267,7 @@ index 86f4d20a8a26fcc209ea70445770cf71f7190d6e..8155187eaf80f55cea238c2c5d69d09e #include #endif -@@ -47,6 +50,13 @@ +@@ -46,6 +49,13 @@ #include #endif @@ -12331,19 +12281,8 @@ index 86f4d20a8a26fcc209ea70445770cf71f7190d6e..8155187eaf80f55cea238c2c5d69d09e namespace WebKit { using namespace WebCore; -@@ -115,6 +125,10 @@ void DrawingAreaProxyCoordinatedGraphics::paint(BackingStore::PlatformGraphicsCo - - void DrawingAreaProxyCoordinatedGraphics::sizeDidChange() - { -+ for (auto& value : m_callbacks) -+ value(); -+ m_callbacks.clear(); -+ - backingStoreStateDidChange(RespondImmediately); - } - -@@ -123,6 +137,11 @@ void DrawingAreaProxyCoordinatedGraphics::deviceScaleFactorDidChange() - backingStoreStateDidChange(RespondImmediately); +@@ -101,6 +111,11 @@ void DrawingAreaProxyCoordinatedGraphics::deviceScaleFactorDidChange() + m_webPageProxy.send(Messages::DrawingArea::SetDeviceScaleFactor(m_webPageProxy.deviceScaleFactor()), m_identifier); } +void DrawingAreaProxyCoordinatedGraphics::waitForSizeUpdate(Function&& callback) @@ -12354,7 +12293,7 @@ index 86f4d20a8a26fcc209ea70445770cf71f7190d6e..8155187eaf80f55cea238c2c5d69d09e void DrawingAreaProxyCoordinatedGraphics::waitForBackingStoreUpdateOnNextPaint() { m_hasReceivedFirstUpdate = true; -@@ -245,6 +264,45 @@ void DrawingAreaProxyCoordinatedGraphics::targetRefreshRateDidChange(unsigned ra +@@ -172,6 +187,45 @@ void DrawingAreaProxyCoordinatedGraphics::targetRefreshRateDidChange(unsigned ra m_webPageProxy.send(Messages::DrawingArea::TargetRefreshRateDidChange(rate), m_identifier); } @@ -12372,7 +12311,7 @@ index 86f4d20a8a26fcc209ea70445770cf71f7190d6e..8155187eaf80f55cea238c2c5d69d09e +#if PLATFORM(WIN) + HWndDC dc; + if (m_isInAcceleratedCompositingMode) { -+ dc.setHWnd(m_webPageProxy.viewWidget()); ++ dc.setHWnd(reinterpret_cast(m_webPageProxy.viewWidget())); + surface = adoptRef(cairo_win32_surface_create(dc)); +#else + if (isInAcceleratedCompositingMode()) { @@ -12400,8 +12339,20 @@ index 86f4d20a8a26fcc209ea70445770cf71f7190d6e..8155187eaf80f55cea238c2c5d69d09e #if !PLATFORM(WPE) void DrawingAreaProxyCoordinatedGraphics::incorporateUpdate(const UpdateInfo& updateInfo) { +@@ -249,6 +303,11 @@ void DrawingAreaProxyCoordinatedGraphics::didUpdateGeometry() + // we need to resend the new size here. + if (m_lastSentSize != m_size) + sendUpdateGeometry(); ++ else { ++ for (auto& value : m_callbacks) ++ value(); ++ m_callbacks.clear(); ++ } + } + + #if !PLATFORM(WPE) diff --git a/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.h b/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.h -index 201e555f28364b72fa2735c269a441188a762059..ff5da2829940ce08d3bb5d703023b4f503f57b3e 100644 +index 52c9e263a9b17c7241ea277016f2f7d4c7d47922..61c5d1f4c4353c7852e07c4c3d5b5f0648de77c4 100644 --- a/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.h +++ b/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.h @@ -30,6 +30,7 @@ @@ -12423,7 +12374,7 @@ index 201e555f28364b72fa2735c269a441188a762059..ff5da2829940ce08d3bb5d703023b4f5 private: // DrawingAreaProxy -@@ -69,6 +74,9 @@ private: +@@ -68,6 +73,9 @@ private: void exitAcceleratedCompositingMode(uint64_t backingStoreStateID, const UpdateInfo&) override; void updateAcceleratedCompositingMode(uint64_t backingStoreStateID, const LayerTreeContext&) override; void targetRefreshRateDidChange(unsigned) override; @@ -12433,15 +12384,15 @@ index 201e555f28364b72fa2735c269a441188a762059..ff5da2829940ce08d3bb5d703023b4f5 bool shouldSendWheelEventsToEventDispatcher() const override { return true; } -@@ -135,12 +143,18 @@ private: - // For a new Drawing Area don't draw anything until the WebProcess has sent over the first content. - bool m_hasReceivedFirstUpdate { false }; +@@ -125,6 +133,7 @@ private: + // The last size we sent to the web process. + WebCore::IntSize m_lastSentSize; + Vector> m_callbacks; -+ + #if !PLATFORM(WPE) bool m_isBackingStoreDiscardable { true }; - std::unique_ptr m_backingStore; +@@ -132,6 +141,10 @@ private: RunLoop::Timer m_discardBackingStoreTimer; #endif std::unique_ptr m_drawingMonitor; @@ -12545,7 +12496,7 @@ index 42e9c901f866a2892396c83441ecbc5638270b52..42d2f292df2f337e302a8ec281333c70 } // namespace WebKit diff --git a/Source/WebKit/UIProcess/DrawingAreaProxy.h b/Source/WebKit/UIProcess/DrawingAreaProxy.h -index 06113cdff03f01243e04a62cbf6dd2c2da8552a3..23540238c04242df7f791df288c57b75951efe2f 100644 +index 911d2c8538ea13c9535d1a1025716b045451bcea..bf62c05a86bab92d76eb5adb8adf85020f6ea8ac 100644 --- a/Source/WebKit/UIProcess/DrawingAreaProxy.h +++ b/Source/WebKit/UIProcess/DrawingAreaProxy.h @@ -85,6 +85,7 @@ public: @@ -12555,9 +12506,9 @@ index 06113cdff03f01243e04a62cbf6dd2c2da8552a3..23540238c04242df7f791df288c57b75 + void waitForSizeUpdate(Function&&); #if USE(COORDINATED_GRAPHICS) || USE(TEXTURE_MAPPER) - // The timeout we use when waiting for a UpdateGeometry reply. -@@ -165,6 +166,10 @@ private: - virtual void didUpdateBackingStoreState(uint64_t /* backingStoreStateID */, const UpdateInfo&, const LayerTreeContext&) { } + virtual void targetRefreshRateDidChange(unsigned) { } +@@ -162,6 +163,10 @@ private: + virtual void update(uint64_t /* backingStoreStateID */, const UpdateInfo&) { } virtual void exitAcceleratedCompositingMode(uint64_t /* backingStoreStateID */, const UpdateInfo&) { } #endif + @@ -12568,29 +12519,17 @@ index 06113cdff03f01243e04a62cbf6dd2c2da8552a3..23540238c04242df7f791df288c57b75 } // namespace WebKit diff --git a/Source/WebKit/UIProcess/DrawingAreaProxy.messages.in b/Source/WebKit/UIProcess/DrawingAreaProxy.messages.in -index 8d8898b79532e874b0ea3b506342b3621acc37fd..294cb8ebed6cab59270abbc1773fd082517c0de1 100644 +index e5f6bb902a10b86527766b18549ee442b22d8b87..6b0bc7b7d45f0c5faa65d90c288bc4b5648b63f9 100644 --- a/Source/WebKit/UIProcess/DrawingAreaProxy.messages.in +++ b/Source/WebKit/UIProcess/DrawingAreaProxy.messages.in -@@ -31,4 +31,7 @@ messages -> DrawingAreaProxy NotRefCounted { - DidUpdateBackingStoreState(uint64_t backingStoreStateID, WebKit::UpdateInfo updateInfo, WebKit::LayerTreeContext context) +@@ -30,4 +30,7 @@ messages -> DrawingAreaProxy NotRefCounted { + Update(uint64_t stateID, WebKit::UpdateInfo updateInfo) ExitAcceleratedCompositingMode(uint64_t backingStoreStateID, WebKit::UpdateInfo updateInfo) #endif +#if PLATFORM(WIN) + DidChangeAcceleratedCompositingMode(bool enabled) +#endif } -diff --git a/Source/WebKit/UIProcess/HighPerformanceGraphicsUsageSampler.cpp b/Source/WebKit/UIProcess/HighPerformanceGraphicsUsageSampler.cpp -index 5c00b67736df96d56554c143f5db6aee78a0fb91..a04ceb13d42f7fa3a408b769a752a5c0b9d7cfa3 100644 ---- a/Source/WebKit/UIProcess/HighPerformanceGraphicsUsageSampler.cpp -+++ b/Source/WebKit/UIProcess/HighPerformanceGraphicsUsageSampler.cpp -@@ -29,6 +29,7 @@ - #include "WebPageProxy.h" - #include "WebProcessPool.h" - #include -+#include - - namespace WebKit { - using namespace WebCore; diff --git a/Source/WebKit/UIProcess/Inspector/Agents/CairoJpegEncoder.cpp b/Source/WebKit/UIProcess/Inspector/Agents/CairoJpegEncoder.cpp new file mode 100644 index 0000000000000000000000000000000000000000..f9af359a8b81babaf855132ec168feb22ef5799b @@ -13908,18 +13847,6 @@ index 0000000000000000000000000000000000000000..e2ce910f3fd7f587add552275b7e7176 +}; + +} // namespace WebKit -diff --git a/Source/WebKit/UIProcess/Inspector/Cocoa/InspectorExtensionDelegate.h b/Source/WebKit/UIProcess/Inspector/Cocoa/InspectorExtensionDelegate.h -index 0f83f41855bf996b5846e677934a202851941d54..cf4afbd2cccf4607dd8d6e6d7983b03c1c044d42 100644 ---- a/Source/WebKit/UIProcess/Inspector/Cocoa/InspectorExtensionDelegate.h -+++ b/Source/WebKit/UIProcess/Inspector/Cocoa/InspectorExtensionDelegate.h -@@ -29,6 +29,7 @@ - - #import "APIInspectorExtensionClient.h" - #import "WKFoundation.h" -+#import - #import - - @class _WKInspectorExtension; diff --git a/Source/WebKit/UIProcess/Inspector/InspectorTargetProxy.cpp b/Source/WebKit/UIProcess/Inspector/InspectorTargetProxy.cpp index 4a945dd8063cd7cd90174f6d4cd4197bcb98a101..16e73d6a724dd80487b7b140aaaccfec253eb7aa 100644 --- a/Source/WebKit/UIProcess/Inspector/InspectorTargetProxy.cpp @@ -14552,18 +14479,6 @@ index 0000000000000000000000000000000000000000..6a04ee480bc3a8270a7de20b1cd0da71 +} + +} // namespace WebKit -diff --git a/Source/WebKit/UIProcess/Inspector/mac/WKInspectorViewController.mm b/Source/WebKit/UIProcess/Inspector/mac/WKInspectorViewController.mm -index bbed58d7dadb8759c7bb756c1594ecd15e3bd77d..28bdb4ab833dad7af42f7bf61e32c52142143727 100644 ---- a/Source/WebKit/UIProcess/Inspector/mac/WKInspectorViewController.mm -+++ b/Source/WebKit/UIProcess/Inspector/mac/WKInspectorViewController.mm -@@ -30,6 +30,7 @@ - - #import "APINavigation.h" - #import -+#import "WKContextMenuItemTypes.h" - #import "WKInspectorResourceURLSchemeHandler.h" - #import "WKInspectorWKWebView.h" - #import diff --git a/Source/WebKit/UIProcess/InspectorDialogAgent.cpp b/Source/WebKit/UIProcess/InspectorDialogAgent.cpp new file mode 100644 index 0000000000000000000000000000000000000000..663f92f0df76042cf6385b056f8a917d688259f9 @@ -14736,7 +14651,7 @@ 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..e71832c2e6ec5d44ada8817b18588da8084af2ad +index 0000000000000000000000000000000000000000..5cd91870e2e46369b057ad6d9f921a7d05aeea2b --- /dev/null +++ b/Source/WebKit/UIProcess/InspectorPlaywrightAgent.cpp @@ -0,0 +1,976 @@ @@ -15374,7 +15289,7 @@ index 0000000000000000000000000000000000000000..e71832c2e6ec5d44ada8817b18588da8 + + String processIDString = frameID.left(dotPos); + uint64_t pid = strtoull(processIDString.ascii().data(), 0, 10); -+ auto processID = makeObjectIdentifier(pid); ++ auto processID = ObjectIdentifier(pid); + auto process = WebProcessProxy::processForIdentifier(processID); + if (!process) { + error = "Cannot find web process for the frame id"_s; @@ -15384,7 +15299,7 @@ index 0000000000000000000000000000000000000000..e71832c2e6ec5d44ada8817b18588da8 + String frameIDString = frameID.substring(dotPos + 1); + uint64_t frameIDNumber = strtoull(frameIDString.ascii().data(), 0, 10); + auto frameIdentifier = WebCore::FrameIdentifier { -+ makeObjectIdentifier(frameIDNumber), ++ ObjectIdentifier(frameIDNumber), + processID + }; + WebFrameProxy* frame = WebFrameProxy::webFrame(frameIdentifier); @@ -15943,7 +15858,7 @@ index f2377683234a05a45d6dd4ccbb317bdec47feb30..f70925c506dcf1283d1a9b6663f42ccc BOOL result = ::CreateProcess(0, commandLine.data(), 0, 0, true, 0, 0, 0, &startupInfo, &processInformation); diff --git a/Source/WebKit/UIProcess/PageClient.h b/Source/WebKit/UIProcess/PageClient.h -index df02b948812a8cbf337a40a5384c5642da9e9ae9..f99f2c2de7b3c52c5e1df47b77c373562258209a 100644 +index cf194f6f355d50771876b222c2f66276c6d7a603..99429d67173baeb283020909de5157ff550c6f8d 100644 --- a/Source/WebKit/UIProcess/PageClient.h +++ b/Source/WebKit/UIProcess/PageClient.h @@ -332,6 +332,11 @@ public: @@ -15958,18 +15873,6 @@ index df02b948812a8cbf337a40a5384c5642da9e9ae9..f99f2c2de7b3c52c5e1df47b77c37356 #if PLATFORM(COCOA) || PLATFORM(GTK) virtual RefPtr takeViewSnapshot(std::optional&&) = 0; #endif -diff --git a/Source/WebKit/UIProcess/ProvisionalFrameProxy.cpp b/Source/WebKit/UIProcess/ProvisionalFrameProxy.cpp -index 144a678186fb97bee038882e158b2d2617cbb8bb..fa1ebd37207dabb30472629a21adaa114e34b379 100644 ---- a/Source/WebKit/UIProcess/ProvisionalFrameProxy.cpp -+++ b/Source/WebKit/UIProcess/ProvisionalFrameProxy.cpp -@@ -37,6 +37,7 @@ - #include "WebFrameProxy.h" - #include "WebFrameProxyMessages.h" - #include "WebPageMessages.h" -+#include "WebPageProxy.h" - #include "WebPageProxyMessages.h" - #include "WebProcessMessages.h" - #include "WebProcessProxy.h" diff --git a/Source/WebKit/UIProcess/RemoteInspectorPipe.cpp b/Source/WebKit/UIProcess/RemoteInspectorPipe.cpp new file mode 100644 index 0000000000000000000000000000000000000000..dd8b28e692dca4078eb710b2a97e61716126a4cb @@ -16271,38 +16174,14 @@ index 0000000000000000000000000000000000000000..6d04f9290135069359ce6bf872654648 +} // namespace WebKit + +#endif // ENABLE(REMOTE_INSPECTOR) -diff --git a/Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm b/Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm -index 2239966ba2a82ca3d9909ff6338919504bede651..8c0d221484cc9345eefdb63365d5897423c82810 100644 ---- a/Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm -+++ b/Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm -@@ -35,6 +35,7 @@ - #import "WKAnimationDelegate.h" - #import "WebPageProxy.h" - #import "WebProcessProxy.h" -+#import "WindowKind.h" - #import - #import - #import -diff --git a/Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp b/Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp -index c0241ac40e2cadd2d49ea7155e43b8a7dc6f6507..83ed82637b588c97516582ac63bff8ba5429b6ec 100644 ---- a/Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp -+++ b/Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp -@@ -32,6 +32,7 @@ - #include "RemoteScrollingCoordinatorProxy.h" - #include - #include -+#include - #include - #include - #include diff --git a/Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteLayerTreeEventDispatcher.h b/Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteLayerTreeEventDispatcher.h -index aaa3cd9eaf75a6d7c757b36a0e95f340f11149c7..114bd31141f8b1431883622e596cb169ec58b3bd 100644 +index fe119261ff5442b6dbaa889637d9c42db26778b4..0126e4ab4916a260f7e65028d05575e7b47e4570 100644 --- a/Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteLayerTreeEventDispatcher.h +++ b/Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteLayerTreeEventDispatcher.h -@@ -36,6 +36,11 @@ - #include - #include +@@ -39,6 +39,11 @@ + #include #include + #include +#include +#include + @@ -16311,8 +16190,8 @@ index aaa3cd9eaf75a6d7c757b36a0e95f340f11149c7..114bd31141f8b1431883622e596cb169 namespace WebCore { class PlatformWheelEvent; -@@ -79,18 +84,18 @@ public: - void windowScreenDidChange(WebCore::PlatformDisplayID, std::optional); +@@ -84,18 +89,18 @@ public: + void renderingUpdateComplete(); private: - OptionSet determineWheelEventProcessing(const WebCore::PlatformWheelEvent&, WebCore::RectEdges rubberBandableEdges); @@ -16335,47 +16214,11 @@ index aaa3cd9eaf75a6d7c757b36a0e95f340f11149c7..114bd31141f8b1431883622e596cb169 DisplayLink* displayLink() const; -diff --git a/Source/WebKit/UIProcess/SpeechRecognitionRemoteRealtimeMediaSource.h b/Source/WebKit/UIProcess/SpeechRecognitionRemoteRealtimeMediaSource.h -index 1064df65b50b1880db0b49a2c0809a4f414f4704..d6f105eb0742b15923b87bcb29095827837cdbfa 100644 ---- a/Source/WebKit/UIProcess/SpeechRecognitionRemoteRealtimeMediaSource.h -+++ b/Source/WebKit/UIProcess/SpeechRecognitionRemoteRealtimeMediaSource.h -@@ -27,6 +27,7 @@ - - #if ENABLE(MEDIA_STREAM) - -+#include - #include - #include - -diff --git a/Source/WebKit/UIProcess/SpeechRecognitionRemoteRealtimeMediaSourceManager.cpp b/Source/WebKit/UIProcess/SpeechRecognitionRemoteRealtimeMediaSourceManager.cpp -index d1e64c8027013f63d530416dba0e4c3ff09f80ef..26d65aa3a1d92f0e2bac0e9ea47bd43646813545 100644 ---- a/Source/WebKit/UIProcess/SpeechRecognitionRemoteRealtimeMediaSourceManager.cpp -+++ b/Source/WebKit/UIProcess/SpeechRecognitionRemoteRealtimeMediaSourceManager.cpp -@@ -25,6 +25,7 @@ - - #include "config.h" - #include "SpeechRecognitionRemoteRealtimeMediaSourceManager.h" -+#include "MessageSenderInlines.h" - - #if ENABLE(MEDIA_STREAM) - -diff --git a/Source/WebKit/UIProcess/WebAuthentication/Mock/MockLocalConnection.h b/Source/WebKit/UIProcess/WebAuthentication/Mock/MockLocalConnection.h -index 684b9616573761123fbcc0d94be29de519ecced6..51ff18323ece0ee15c87d63a1d6fd604377ee968 100644 ---- a/Source/WebKit/UIProcess/WebAuthentication/Mock/MockLocalConnection.h -+++ b/Source/WebKit/UIProcess/WebAuthentication/Mock/MockLocalConnection.h -@@ -28,6 +28,7 @@ - #if ENABLE(WEB_AUTHN) - - #include "LocalConnection.h" -+#include - #include - - namespace WebKit { diff --git a/Source/WebKit/UIProcess/WebContextMenuProxy.cpp b/Source/WebKit/UIProcess/WebContextMenuProxy.cpp -index 4190e7620e6e9822446026242ed634102279b4ff..31e3e0776bc90f1ea7c60065e0ee54d455c5189f 100644 +index a57f299ce89dbef91ccb41f890cc29a29323e9e4..b0ed73516ea728c2a1e9eb7d39161e665b21204d 100644 --- a/Source/WebKit/UIProcess/WebContextMenuProxy.cpp +++ b/Source/WebKit/UIProcess/WebContextMenuProxy.cpp -@@ -32,6 +32,7 @@ +@@ -33,6 +33,7 @@ #include "WebPageMessages.h" #include "WebPageProxy.h" #include "WebProcessProxy.h" @@ -16396,7 +16239,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 6dab458b3ca1836a949433da81f93b49b0bb2a82..f08156ca2962bacb8100f6128276e85c421aaea2 100644 +index b5173b03be201a33e057fe1b7d52a55346010a0c..9d7c695662d0208c5b41939a3e857dd0fc0e1154 100644 --- a/Source/WebKit/UIProcess/WebFrameProxy.cpp +++ b/Source/WebKit/UIProcess/WebFrameProxy.cpp @@ -30,6 +30,7 @@ @@ -16407,10 +16250,10 @@ index 6dab458b3ca1836a949433da81f93b49b0bb2a82..f08156ca2962bacb8100f6128276e85c #include "FrameTreeCreationParameters.h" #include "FrameTreeNodeData.h" #include "MessageSenderInlines.h" -@@ -39,6 +40,7 @@ - #include "WebFrameMessages.h" +@@ -40,6 +41,7 @@ #include "WebFramePolicyListenerProxy.h" #include "WebFrameProxyMessages.h" + #include "WebNavigationState.h" +#include "WebPageInspectorController.h" #include "WebPageMessages.h" #include "WebPageProxy.h" @@ -17082,10 +16925,10 @@ index 0000000000000000000000000000000000000000..3e87bf40ced2301f4fb145c6cb31f2cf + +} // namespace WebKit diff --git a/Source/WebKit/UIProcess/WebPageProxy.cpp b/Source/WebKit/UIProcess/WebPageProxy.cpp -index 49d45dad29af78417cf7c6fd2072bdc1de5a027f..1cdcd9eccdbb03a97a22f5466316c62ff0bd3815 100644 +index 530c55ba1f0e3c7abb0e62873147975b69a8cc62..be3063eaf99f7747abfea0786f22d355fff79797 100644 --- a/Source/WebKit/UIProcess/WebPageProxy.cpp +++ b/Source/WebKit/UIProcess/WebPageProxy.cpp -@@ -164,12 +164,14 @@ +@@ -168,12 +168,14 @@ #include #include #include @@ -17100,7 +16943,7 @@ index 49d45dad29af78417cf7c6fd2072bdc1de5a027f..1cdcd9eccdbb03a97a22f5466316c62f #include #include #include -@@ -188,16 +190,19 @@ +@@ -192,16 +194,19 @@ #include #include #include @@ -17120,7 +16963,7 @@ index 49d45dad29af78417cf7c6fd2072bdc1de5a027f..1cdcd9eccdbb03a97a22f5466316c62f #include #include #include -@@ -267,6 +272,9 @@ +@@ -271,6 +276,9 @@ #if PLATFORM(GTK) #include "GtkSettingsManager.h" @@ -17130,7 +16973,7 @@ index 49d45dad29af78417cf7c6fd2072bdc1de5a027f..1cdcd9eccdbb03a97a22f5466316c62f #include #endif -@@ -372,6 +380,8 @@ static constexpr Seconds tryCloseTimeoutDelay = 50_ms; +@@ -376,6 +384,8 @@ static constexpr Seconds tryCloseTimeoutDelay = 50_ms; static constexpr Seconds audibleActivityClearDelay = 10_s; #endif @@ -17139,7 +16982,7 @@ index 49d45dad29af78417cf7c6fd2072bdc1de5a027f..1cdcd9eccdbb03a97a22f5466316c62f DEFINE_DEBUG_ONLY_GLOBAL(WTF::RefCountedLeakCounter, webPageProxyCounter, ("WebPageProxy")); class StorageRequests { -@@ -643,6 +653,10 @@ WebPageProxy::~WebPageProxy() +@@ -736,6 +746,10 @@ WebPageProxy::~WebPageProxy() if (m_preferences->mediaSessionCoordinatorEnabled()) GroupActivitiesSessionNotifier::sharedNotifier().removeWebPage(*this); #endif @@ -17150,7 +16993,7 @@ index 49d45dad29af78417cf7c6fd2072bdc1de5a027f..1cdcd9eccdbb03a97a22f5466316c62f } void WebPageProxy::addAllMessageReceivers() -@@ -1073,6 +1087,7 @@ void WebPageProxy::finishAttachingToWebProcess(ProcessLaunchReason reason) +@@ -1166,6 +1180,7 @@ void WebPageProxy::finishAttachingToWebProcess(ProcessLaunchReason reason) internals().pageLoadState.didSwapWebProcesses(); if (reason != ProcessLaunchReason::InitialProcess) m_drawingArea->waitForBackingStoreUpdateOnNextPaint(); @@ -17158,7 +17001,7 @@ index 49d45dad29af78417cf7c6fd2072bdc1de5a027f..1cdcd9eccdbb03a97a22f5466316c62f } void WebPageProxy::didAttachToRunningProcess() -@@ -1458,6 +1473,21 @@ WebProcessProxy& WebPageProxy::ensureRunningProcess() +@@ -1548,6 +1563,21 @@ WebProcessProxy& WebPageProxy::ensureRunningProcess() return m_process; } @@ -17180,7 +17023,7 @@ index 49d45dad29af78417cf7c6fd2072bdc1de5a027f..1cdcd9eccdbb03a97a22f5466316c62f RefPtr WebPageProxy::loadRequest(ResourceRequest&& request, ShouldOpenExternalURLsPolicy shouldOpenExternalURLsPolicy, API::Object* userData) { if (m_isClosed) -@@ -2014,6 +2044,32 @@ void WebPageProxy::setControlledByAutomation(bool controlled) +@@ -2104,6 +2134,32 @@ void WebPageProxy::setControlledByAutomation(bool controlled) websiteDataStore().networkProcess().send(Messages::NetworkProcess::SetSessionIsControlledByAutomation(m_websiteDataStore->sessionID(), m_controlledByAutomation), 0); } @@ -17213,7 +17056,7 @@ index 49d45dad29af78417cf7c6fd2072bdc1de5a027f..1cdcd9eccdbb03a97a22f5466316c62f void WebPageProxy::createInspectorTarget(const String& targetId, Inspector::InspectorTargetType type) { MESSAGE_CHECK(m_process, !targetId.isEmpty()); -@@ -2247,6 +2303,25 @@ void WebPageProxy::updateActivityState(OptionSet flagsToUpdate) +@@ -2337,6 +2393,25 @@ void WebPageProxy::updateActivityState(OptionSet flagsToUpdate) { bool wasVisible = isViewVisible(); internals().activityState.remove(flagsToUpdate); @@ -17239,7 +17082,7 @@ index 49d45dad29af78417cf7c6fd2072bdc1de5a027f..1cdcd9eccdbb03a97a22f5466316c62f if (flagsToUpdate & ActivityState::IsFocused && pageClient().isViewFocused()) internals().activityState.add(ActivityState::IsFocused); if (flagsToUpdate & ActivityState::WindowIsActive && pageClient().isViewWindowActive()) -@@ -2932,6 +3007,8 @@ void WebPageProxy::performDragControllerAction(DragControllerAction action, Drag +@@ -3022,6 +3097,8 @@ void WebPageProxy::performDragControllerAction(DragControllerAction action, Drag { if (!hasRunningProcess()) return; @@ -17248,7 +17091,7 @@ index 49d45dad29af78417cf7c6fd2072bdc1de5a027f..1cdcd9eccdbb03a97a22f5466316c62f #if PLATFORM(GTK) UNUSED_PARAM(dragStorageName); UNUSED_PARAM(sandboxExtensionHandle); -@@ -2942,6 +3019,8 @@ void WebPageProxy::performDragControllerAction(DragControllerAction action, Drag +@@ -3032,6 +3109,8 @@ void WebPageProxy::performDragControllerAction(DragControllerAction action, Drag m_process->assumeReadAccessToBaseURL(*this, url); ASSERT(dragData.platformData()); @@ -17257,7 +17100,7 @@ index 49d45dad29af78417cf7c6fd2072bdc1de5a027f..1cdcd9eccdbb03a97a22f5466316c62f send(Messages::WebPage::PerformDragControllerAction(action, dragData.clientPosition(), dragData.globalPosition(), dragData.draggingSourceOperationMask(), *dragData.platformData(), dragData.flags())); #else send(Messages::WebPage::PerformDragControllerAction(action, dragData, sandboxExtensionHandle, sandboxExtensionsForUpload)); -@@ -2957,18 +3036,41 @@ void WebPageProxy::didPerformDragControllerAction(std::optional dragOperationMask, const ShareableBitmapHandle& dragImageHandle, IntPoint&& dragImageHotspot) + void WebPageProxy::startDrag(SelectionData&& selectionData, OptionSet dragOperationMask, const ShareableBitmap::Handle& dragImageHandle, IntPoint&& dragImageHotspot) { - RefPtr dragImage = !dragImageHandle.isNull() ? ShareableBitmap::create(dragImageHandle) : nullptr; - pageClient().startDrag(WTFMove(selectionData), dragOperationMask, WTFMove(dragImage), WTFMove(dragImageHotspot)); @@ -17302,7 +17145,7 @@ index 49d45dad29af78417cf7c6fd2072bdc1de5a027f..1cdcd9eccdbb03a97a22f5466316c62f void WebPageProxy::dragEnded(const IntPoint& clientPosition, const IntPoint& globalPosition, OptionSet dragOperationMask) { if (!hasRunningProcess()) -@@ -2977,6 +3079,24 @@ void WebPageProxy::dragEnded(const IntPoint& clientPosition, const IntPoint& glo +@@ -3067,6 +3169,24 @@ void WebPageProxy::dragEnded(const IntPoint& clientPosition, const IntPoint& glo setDragCaretRect({ }); } @@ -17327,7 +17170,7 @@ index 49d45dad29af78417cf7c6fd2072bdc1de5a027f..1cdcd9eccdbb03a97a22f5466316c62f void WebPageProxy::didPerformDragOperation(bool handled) { pageClient().didPerformDragOperation(handled); -@@ -2989,6 +3109,16 @@ void WebPageProxy::didStartDrag() +@@ -3079,6 +3199,16 @@ void WebPageProxy::didStartDrag() discardQueuedMouseEvents(); send(Messages::WebPage::DidStartDrag()); @@ -17344,7 +17187,7 @@ index 49d45dad29af78417cf7c6fd2072bdc1de5a027f..1cdcd9eccdbb03a97a22f5466316c62f } void WebPageProxy::dragCancelled() -@@ -3100,17 +3230,39 @@ void WebPageProxy::processNextQueuedMouseEvent() +@@ -3190,17 +3320,39 @@ void WebPageProxy::processNextQueuedMouseEvent() m_process->startResponsivenessTimer(); } @@ -17391,7 +17234,7 @@ index 49d45dad29af78417cf7c6fd2072bdc1de5a027f..1cdcd9eccdbb03a97a22f5466316c62f } void WebPageProxy::doAfterProcessingAllPendingMouseEvents(WTF::Function&& action) -@@ -3244,6 +3396,8 @@ void WebPageProxy::wheelEventHandlingCompleted(bool wasHandled) +@@ -3334,6 +3486,8 @@ void WebPageProxy::wheelEventHandlingCompleted(bool wasHandled) if (auto* automationSession = process().processPool().automationSession()) automationSession->wheelEventsFlushedForPage(*this); @@ -17400,7 +17243,7 @@ index 49d45dad29af78417cf7c6fd2072bdc1de5a027f..1cdcd9eccdbb03a97a22f5466316c62f } void WebPageProxy::cacheWheelEventScrollingAccelerationCurve(const NativeWebWheelEvent& nativeWheelEvent) -@@ -3367,7 +3521,7 @@ static TrackingType mergeTrackingTypes(TrackingType a, TrackingType b) +@@ -3457,7 +3611,7 @@ static TrackingType mergeTrackingTypes(TrackingType a, TrackingType b) void WebPageProxy::updateTouchEventTracking(const WebTouchEvent& touchStartEvent) { @@ -17409,7 +17252,7 @@ index 49d45dad29af78417cf7c6fd2072bdc1de5a027f..1cdcd9eccdbb03a97a22f5466316c62f for (auto& touchPoint : touchStartEvent.touchPoints()) { auto location = touchPoint.location(); auto update = [this, location](TrackingType& trackingType, EventTrackingRegions::EventType eventType) { -@@ -3788,6 +3942,8 @@ void WebPageProxy::receivedNavigationPolicyDecision(PolicyAction policyAction, A +@@ -3878,6 +4032,8 @@ void WebPageProxy::receivedNavigationPolicyDecision(PolicyAction policyAction, A if (policyAction != PolicyAction::Use || (!preferences().siteIsolationEnabled() && !frame.isMainFrame()) || !navigation) { @@ -17418,7 +17261,7 @@ index 49d45dad29af78417cf7c6fd2072bdc1de5a027f..1cdcd9eccdbb03a97a22f5466316c62f receivedPolicyDecision(policyAction, navigation, navigation->websitePolicies(), WTFMove(navigationAction), WTFMove(sender), WillContinueLoadInNewProcess::No, std::nullopt); return; } -@@ -3860,6 +4016,7 @@ void WebPageProxy::receivedNavigationPolicyDecision(PolicyAction policyAction, A +@@ -3950,6 +4106,7 @@ void WebPageProxy::receivedNavigationPolicyDecision(PolicyAction policyAction, A void WebPageProxy::receivedPolicyDecision(PolicyAction action, API::Navigation* navigation, RefPtr&& websitePolicies, std::variant, Ref>&& navigationActionOrResponse, Ref&& sender, WillContinueLoadInNewProcess willContinueLoadInNewProcess, std::optional sandboxExtensionHandle) { @@ -17426,7 +17269,7 @@ index 49d45dad29af78417cf7c6fd2072bdc1de5a027f..1cdcd9eccdbb03a97a22f5466316c62f if (!hasRunningProcess()) { sender->send(PolicyDecision { sender->identifier(), isNavigatingToAppBoundDomain() }); return; -@@ -4690,6 +4847,11 @@ void WebPageProxy::pageScaleFactorDidChange(double scaleFactor) +@@ -4796,6 +4953,11 @@ void WebPageProxy::pageScaleFactorDidChange(double scaleFactor) m_pageScaleFactor = scaleFactor; } @@ -17438,7 +17281,7 @@ index 49d45dad29af78417cf7c6fd2072bdc1de5a027f..1cdcd9eccdbb03a97a22f5466316c62f void WebPageProxy::pluginScaleFactorDidChange(double pluginScaleFactor) { MESSAGE_CHECK(m_process, scaleFactorIsValid(pluginScaleFactor)); -@@ -5117,6 +5279,7 @@ void WebPageProxy::didDestroyNavigation(uint64_t navigationID) +@@ -5227,6 +5389,7 @@ void WebPageProxy::didDestroyNavigation(uint64_t navigationID) return; m_navigationState->didDestroyNavigation(navigationID); @@ -17446,7 +17289,7 @@ index 49d45dad29af78417cf7c6fd2072bdc1de5a027f..1cdcd9eccdbb03a97a22f5466316c62f } void WebPageProxy::didStartProvisionalLoadForFrame(FrameIdentifier frameID, FrameInfoData&& frameInfo, ResourceRequest&& request, uint64_t navigationID, URL&& url, URL&& unreachableURL, const UserData& userData) -@@ -5345,6 +5508,8 @@ void WebPageProxy::didFailProvisionalLoadForFrameShared(Ref&& p +@@ -5455,6 +5618,8 @@ void WebPageProxy::didFailProvisionalLoadForFrameShared(Ref&& p m_failingProvisionalLoadURL = { }; @@ -17455,7 +17298,7 @@ index 49d45dad29af78417cf7c6fd2072bdc1de5a027f..1cdcd9eccdbb03a97a22f5466316c62f // 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; -@@ -5882,7 +6047,14 @@ void WebPageProxy::decidePolicyForNavigationActionAsync(IPC::Connection& connect +@@ -6005,7 +6170,14 @@ void WebPageProxy::decidePolicyForNavigationActionAsync(IPC::Connection& connect { RefPtr frame = WebFrameProxy::webFrame(frameID); MESSAGE_CHECK_BASE(frame, &connection); @@ -17471,7 +17314,7 @@ index 49d45dad29af78417cf7c6fd2072bdc1de5a027f..1cdcd9eccdbb03a97a22f5466316c62f } 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) -@@ -6478,6 +6650,7 @@ void WebPageProxy::createNewPage(FrameInfoData&& originatingFrameInfoData, WebPa +@@ -6601,6 +6773,7 @@ void WebPageProxy::createNewPage(FrameInfoData&& originatingFrameInfoData, WebPa if (auto* page = originatingFrameInfo->page()) openerAppInitiatedState = page->lastNavigationWasAppInitiated(); @@ -17479,7 +17322,7 @@ index 49d45dad29af78417cf7c6fd2072bdc1de5a027f..1cdcd9eccdbb03a97a22f5466316c62f auto completionHandler = [this, protectedThis = Ref { *this }, mainFrameURL, request, reply = WTFMove(reply), privateClickMeasurement = navigationActionData.privateClickMeasurement, openerAppInitiatedState = WTFMove(openerAppInitiatedState)] (RefPtr newPage) mutable { if (!newPage) { reply(std::nullopt, std::nullopt); -@@ -6531,6 +6704,7 @@ void WebPageProxy::createNewPage(FrameInfoData&& originatingFrameInfoData, WebPa +@@ -6654,6 +6827,7 @@ void WebPageProxy::createNewPage(FrameInfoData&& originatingFrameInfoData, WebPa void WebPageProxy::showPage() { m_uiClient->showPage(this); @@ -17487,7 +17330,7 @@ index 49d45dad29af78417cf7c6fd2072bdc1de5a027f..1cdcd9eccdbb03a97a22f5466316c62f } void WebPageProxy::exitFullscreenImmediately() -@@ -6600,6 +6774,10 @@ void WebPageProxy::closePage() +@@ -6723,6 +6897,10 @@ void WebPageProxy::closePage() if (isClosed()) return; @@ -17498,7 +17341,7 @@ index 49d45dad29af78417cf7c6fd2072bdc1de5a027f..1cdcd9eccdbb03a97a22f5466316c62f WEBPAGEPROXY_RELEASE_LOG(Process, "closePage:"); pageClient().clearAllEditCommands(); m_uiClient->close(this); -@@ -6636,6 +6814,8 @@ void WebPageProxy::runJavaScriptAlert(FrameIdentifier frameID, FrameInfoData&& f +@@ -6759,6 +6937,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 { @@ -17507,7 +17350,7 @@ index 49d45dad29af78417cf7c6fd2072bdc1de5a027f..1cdcd9eccdbb03a97a22f5466316c62f page.m_uiClient->runJavaScriptAlert(page, message, frame, WTFMove(frameInfo), [reply = WTFMove(reply), completion = WTFMove(completion)]() mutable { reply(); completion(); -@@ -6657,6 +6837,8 @@ void WebPageProxy::runJavaScriptConfirm(FrameIdentifier frameID, FrameInfoData&& +@@ -6780,6 +6960,8 @@ void WebPageProxy::runJavaScriptConfirm(FrameIdentifier frameID, FrameInfoData&& if (auto* automationSession = process().processPool().automationSession()) automationSession->willShowJavaScriptDialog(*this); } @@ -17516,7 +17359,7 @@ index 49d45dad29af78417cf7c6fd2072bdc1de5a027f..1cdcd9eccdbb03a97a22f5466316c62f 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 { -@@ -6680,6 +6862,8 @@ void WebPageProxy::runJavaScriptPrompt(FrameIdentifier frameID, FrameInfoData&& +@@ -6803,6 +6985,8 @@ void WebPageProxy::runJavaScriptPrompt(FrameIdentifier frameID, FrameInfoData&& if (auto* automationSession = process().processPool().automationSession()) automationSession->willShowJavaScriptDialog(*this); } @@ -17525,7 +17368,7 @@ index 49d45dad29af78417cf7c6fd2072bdc1de5a027f..1cdcd9eccdbb03a97a22f5466316c62f 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 { -@@ -6795,6 +6979,8 @@ void WebPageProxy::runBeforeUnloadConfirmPanel(FrameIdentifier frameID, FrameInf +@@ -6918,6 +7102,8 @@ void WebPageProxy::runBeforeUnloadConfirmPanel(FrameIdentifier frameID, FrameInf return; } } @@ -17534,7 +17377,7 @@ index 49d45dad29af78417cf7c6fd2072bdc1de5a027f..1cdcd9eccdbb03a97a22f5466316c62f // Since runBeforeUnloadConfirmPanel() can spin a nested run loop we need to turn off the responsiveness timer and the tryClose timer. m_process->stopResponsivenessTimer(); -@@ -8149,6 +8335,8 @@ void WebPageProxy::didReceiveEvent(WebEventType eventType, bool handled) +@@ -8279,6 +8465,8 @@ void WebPageProxy::didReceiveEvent(WebEventType eventType, bool handled) if (auto* automationSession = process().processPool().automationSession()) automationSession->mouseEventsFlushedForPage(*this); didFinishProcessingAllPendingMouseEvents(); @@ -17543,7 +17386,7 @@ index 49d45dad29af78417cf7c6fd2072bdc1de5a027f..1cdcd9eccdbb03a97a22f5466316c62f } break; } -@@ -8185,7 +8373,6 @@ void WebPageProxy::didReceiveEvent(WebEventType eventType, bool handled) +@@ -8315,7 +8503,6 @@ void WebPageProxy::didReceiveEvent(WebEventType eventType, bool handled) // The call to doneWithKeyEvent may close this WebPage. // Protect against this being destroyed. Ref protect(*this); @@ -17551,7 +17394,7 @@ index 49d45dad29af78417cf7c6fd2072bdc1de5a027f..1cdcd9eccdbb03a97a22f5466316c62f pageClient().doneWithKeyEvent(event, handled); if (!handled) m_uiClient->didNotHandleKeyEvent(this, event); -@@ -8194,6 +8381,7 @@ void WebPageProxy::didReceiveEvent(WebEventType eventType, bool handled) +@@ -8324,6 +8511,7 @@ void WebPageProxy::didReceiveEvent(WebEventType eventType, bool handled) if (!canProcessMoreKeyEvents) { if (auto* automationSession = process().processPool().automationSession()) automationSession->keyboardEventsFlushedForPage(*this); @@ -17559,7 +17402,7 @@ index 49d45dad29af78417cf7c6fd2072bdc1de5a027f..1cdcd9eccdbb03a97a22f5466316c62f } break; } -@@ -8547,7 +8735,10 @@ void WebPageProxy::dispatchProcessDidTerminate(ProcessTerminationReason reason) +@@ -8677,7 +8865,10 @@ void WebPageProxy::dispatchProcessDidTerminate(ProcessTerminationReason reason) { WEBPAGEPROXY_RELEASE_LOG_ERROR(Loading, "dispatchProcessDidTerminate: reason=%" PUBLIC_LOG_STRING, processTerminationReasonToString(reason)); @@ -17571,7 +17414,7 @@ index 49d45dad29af78417cf7c6fd2072bdc1de5a027f..1cdcd9eccdbb03a97a22f5466316c62f if (m_loaderClient) handledByClient = reason != ProcessTerminationReason::RequestedByClient && m_loaderClient->processDidCrash(*this); else -@@ -8915,6 +9106,7 @@ bool WebPageProxy::useGPUProcessForDOMRenderingEnabled() const +@@ -9044,6 +9235,7 @@ bool WebPageProxy::useGPUProcessForDOMRenderingEnabled() const WebPageCreationParameters WebPageProxy::creationParameters(WebProcessProxy& process, DrawingAreaProxy& drawingArea, RefPtr&& websitePolicies) { @@ -17579,7 +17422,7 @@ index 49d45dad29af78417cf7c6fd2072bdc1de5a027f..1cdcd9eccdbb03a97a22f5466316c62f WebPageCreationParameters parameters; parameters.processDisplayName = configuration().processDisplayName(); -@@ -9115,6 +9307,8 @@ WebPageCreationParameters WebPageProxy::creationParameters(WebProcessProxy& proc +@@ -9244,6 +9436,8 @@ WebPageCreationParameters WebPageProxy::creationParameters(WebProcessProxy& proc parameters.httpsUpgradeEnabled = preferences().upgradeKnownHostsToHTTPSEnabled() ? m_configuration->httpsUpgradeEnabled() : false; @@ -17588,7 +17431,7 @@ index 49d45dad29af78417cf7c6fd2072bdc1de5a027f..1cdcd9eccdbb03a97a22f5466316c62f #if PLATFORM(IOS) // FIXME: This is also being passed over the to WebProcess via the PreferencesStore. parameters.allowsDeprecatedSynchronousXMLHttpRequestDuringUnload = allowsDeprecatedSynchronousXMLHttpRequestDuringUnload(); -@@ -9201,8 +9395,42 @@ void WebPageProxy::gamepadActivity(const Vector>& gam +@@ -9330,8 +9524,42 @@ void WebPageProxy::gamepadActivity(const Vector>& gam #endif @@ -17631,7 +17474,7 @@ index 49d45dad29af78417cf7c6fd2072bdc1de5a027f..1cdcd9eccdbb03a97a22f5466316c62f if (negotiatedLegacyTLS == NegotiatedLegacyTLS::Yes) { m_navigationClient->shouldAllowLegacyTLS(*this, authenticationChallenge.get(), [this, protectedThis = Ref { *this }, authenticationChallenge] (bool shouldAllowLegacyTLS) { if (shouldAllowLegacyTLS) -@@ -9306,6 +9534,15 @@ void WebPageProxy::requestGeolocationPermissionForFrame(GeolocationIdentifier ge +@@ -9435,6 +9663,15 @@ void WebPageProxy::requestGeolocationPermissionForFrame(GeolocationIdentifier ge request->deny(); }; @@ -17648,11 +17491,11 @@ index 49d45dad29af78417cf7c6fd2072bdc1de5a027f..1cdcd9eccdbb03a97a22f5466316c62f // 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 07d67c9b74345984d6453391deffa7e0e00b1ee3..1b438d7622845d7b430f0e85e1567a8f809d0663 100644 +index f38bc5381c5c252edf42a4825cd535b93ad50c80..3d5280f6d65cd05359ca244519d51e9e08024e49 100644 --- a/Source/WebKit/UIProcess/WebPageProxy.h +++ b/Source/WebKit/UIProcess/WebPageProxy.h -@@ -30,6 +30,24 @@ - #include "MessageSender.h" +@@ -31,6 +31,24 @@ + #include #include #include +#include "InspectorDialogAgent.h" @@ -17676,7 +17519,7 @@ index 07d67c9b74345984d6453391deffa7e0e00b1ee3..1b438d7622845d7b430f0e85e1567a8f namespace API { class Attachment; -@@ -90,6 +108,7 @@ class DestinationColorSpace; +@@ -91,6 +109,7 @@ class DestinationColorSpace; class DragData; class FloatPoint; class FloatQuad; @@ -17684,7 +17527,7 @@ index 07d67c9b74345984d6453391deffa7e0e00b1ee3..1b438d7622845d7b430f0e85e1567a8f class FloatRect; class FloatSize; class FontAttributeChanges; -@@ -562,6 +581,8 @@ public: +@@ -566,6 +585,8 @@ public: void setControlledByAutomation(bool); WebPageInspectorController& inspectorController() { return *m_inspectorController; } @@ -17693,7 +17536,7 @@ index 07d67c9b74345984d6453391deffa7e0e00b1ee3..1b438d7622845d7b430f0e85e1567a8f #if PLATFORM(IOS_FAMILY) void showInspectorIndication(); -@@ -677,6 +698,11 @@ public: +@@ -681,6 +702,11 @@ public: void setPageLoadStateObserver(std::unique_ptr&&); @@ -17705,7 +17548,7 @@ index 07d67c9b74345984d6453391deffa7e0e00b1ee3..1b438d7622845d7b430f0e85e1567a8f void initializeWebPage(); void setDrawingArea(std::unique_ptr&&); -@@ -703,6 +729,7 @@ public: +@@ -707,6 +733,7 @@ public: void addPlatformLoadParameters(WebProcessProxy&, LoadParameters&); RefPtr loadRequest(WebCore::ResourceRequest&&); RefPtr loadRequest(WebCore::ResourceRequest&&, WebCore::ShouldOpenExternalURLsPolicy, API::Object* userData = nullptr); @@ -17713,7 +17556,7 @@ index 07d67c9b74345984d6453391deffa7e0e00b1ee3..1b438d7622845d7b430f0e85e1567a8f 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); -@@ -1268,6 +1295,7 @@ public: +@@ -1273,6 +1300,7 @@ public: #endif void pageScaleFactorDidChange(double); @@ -17721,7 +17564,7 @@ index 07d67c9b74345984d6453391deffa7e0e00b1ee3..1b438d7622845d7b430f0e85e1567a8f void pluginScaleFactorDidChange(double); void pluginZoomFactorDidChange(double); -@@ -1358,14 +1386,20 @@ public: +@@ -1363,14 +1391,20 @@ public: void didStartDrag(); void dragCancelled(); void setDragCaretRect(const WebCore::IntRect&); @@ -17743,7 +17586,7 @@ index 07d67c9b74345984d6453391deffa7e0e00b1ee3..1b438d7622845d7b430f0e85e1567a8f #endif void processDidBecomeUnresponsive(); -@@ -1588,6 +1622,7 @@ public: +@@ -1587,6 +1621,7 @@ public: void setViewportSizeForCSSViewportUnits(const WebCore::FloatSize&); WebCore::FloatSize viewportSizeForCSSViewportUnits() const; @@ -17751,7 +17594,7 @@ index 07d67c9b74345984d6453391deffa7e0e00b1ee3..1b438d7622845d7b430f0e85e1567a8f void didReceiveAuthenticationChallengeProxy(Ref&&, NegotiatedLegacyTLS); void negotiatedLegacyTLS(); void didNegotiateModernTLS(const URL&); -@@ -1622,6 +1657,8 @@ public: +@@ -1621,6 +1656,8 @@ public: #if PLATFORM(COCOA) || PLATFORM(GTK) RefPtr takeViewSnapshot(std::optional&&); @@ -17760,7 +17603,7 @@ index 07d67c9b74345984d6453391deffa7e0e00b1ee3..1b438d7622845d7b430f0e85e1567a8f #endif #if ENABLE(WEB_CRYPTO) -@@ -2838,6 +2875,7 @@ private: +@@ -2877,6 +2914,7 @@ private: String m_overrideContentSecurityPolicy; RefPtr m_inspector; @@ -17768,7 +17611,7 @@ index 07d67c9b74345984d6453391deffa7e0e00b1ee3..1b438d7622845d7b430f0e85e1567a8f #if ENABLE(FULLSCREEN_API) std::unique_ptr m_fullScreenManager; -@@ -3023,6 +3061,22 @@ private: +@@ -3060,6 +3098,22 @@ private: std::optional m_currentDragOperation; bool m_currentDragIsOverFileInput { false }; unsigned m_currentDragNumberOfFilesToBeAccepted { 0 }; @@ -17791,7 +17634,7 @@ index 07d67c9b74345984d6453391deffa7e0e00b1ee3..1b438d7622845d7b430f0e85e1567a8f #endif bool m_mainFrameHasHorizontalScrollbar { false }; -@@ -3190,6 +3244,10 @@ private: +@@ -3227,6 +3281,10 @@ private: RefPtr messageBody; }; Vector m_pendingInjectedBundleMessages; @@ -17803,7 +17646,7 @@ index 07d67c9b74345984d6453391deffa7e0e00b1ee3..1b438d7622845d7b430f0e85e1567a8f #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 a2f5460e8f236379edfe221405cf776f573d63be..ea03c4b49e6ad13cf252f1d5a1a31322e98592df 100644 +index 90902fe48311e844c1f65bde2c49dcd84eb56e16..553ac2a1d73cc7edd63b81dae4f0a1826ae7f810 100644 --- a/Source/WebKit/UIProcess/WebPageProxy.messages.in +++ b/Source/WebKit/UIProcess/WebPageProxy.messages.in @@ -29,6 +29,7 @@ messages -> WebPageProxy { @@ -17823,12 +17666,12 @@ index a2f5460e8f236379edfe221405cf776f573d63be..ea03c4b49e6ad13cf252f1d5a1a31322 PluginZoomFactorDidChange(double zoomFactor) @@ -307,10 +309,12 @@ messages -> WebPageProxy { - StartDrag(struct WebCore::DragItem dragItem, WebKit::ShareableBitmapHandle dragImage) + StartDrag(struct WebCore::DragItem dragItem, WebKit::ShareableBitmap::Handle dragImage) SetPromisedDataForImage(String pasteboardName, WebKit::SharedMemory::Handle imageHandle, String filename, String extension, String title, String url, String visibleURL, WebKit::SharedMemory::Handle archiveHandle, String originIdentifier) #endif -#if PLATFORM(GTK) && ENABLE(DRAG_SUPPORT) +#if (PLATFORM(GTK) || PLATFORM(WPE)) && ENABLE(DRAG_SUPPORT) - StartDrag(WebCore::SelectionData selectionData, OptionSet dragOperationMask, WebKit::ShareableBitmapHandle dragImage, WebCore::IntPoint dragImageHotspot) + StartDrag(WebCore::SelectionData selectionData, OptionSet dragOperationMask, WebKit::ShareableBitmap::Handle dragImage, WebCore::IntPoint dragImageHotspot) #endif - +#if PLATFORM(WIN) && ENABLE(DRAG_SUPPORT) @@ -17853,7 +17696,7 @@ index e68471d45366b6f7a609e6a57bcfea2820511e29..d2344e7b428ae19399ded4e37bfbf81c } diff --git a/Source/WebKit/UIProcess/WebProcessPool.cpp b/Source/WebKit/UIProcess/WebProcessPool.cpp -index 794caa155f914a8e7c3745087b0893c762f3aece..91d56b5b45b64cf8e79103698262450970cf14e8 100644 +index b268082e4bd3d6133038fb0f103d030007e77e8c..8fdb85737c8a2a637ffec4d8c4fbaa346d202491 100644 --- a/Source/WebKit/UIProcess/WebProcessPool.cpp +++ b/Source/WebKit/UIProcess/WebProcessPool.cpp @@ -371,15 +371,16 @@ void WebProcessPool::setAutomationClient(std::unique_ptr& @@ -17901,10 +17744,10 @@ index 794caa155f914a8e7c3745087b0893c762f3aece..91d56b5b45b64cf8e791036982624509 parameters.urlSchemesRegisteredAsEmptyDocument = copyToVector(m_schemesToRegisterAsEmptyDocument); diff --git a/Source/WebKit/UIProcess/WebProcessProxy.cpp b/Source/WebKit/UIProcess/WebProcessProxy.cpp -index 8dbfe2e5f0865c154f626dafff0bface635eeda3..112c2fd0f6c0be13559fafdd9db43977ef563fbd 100644 +index 58c9ede0e2d7fec74490f7f61688c9b4480f92fa..fae725ffbfa4cdc22ce934cce7126ec00d1c9970 100644 --- a/Source/WebKit/UIProcess/WebProcessProxy.cpp +++ b/Source/WebKit/UIProcess/WebProcessProxy.cpp -@@ -166,6 +166,11 @@ Vector> WebProcessProxy::allProcesses() +@@ -168,6 +168,11 @@ Vector> WebProcessProxy::allProcesses() }); } @@ -17916,7 +17759,7 @@ index 8dbfe2e5f0865c154f626dafff0bface635eeda3..112c2fd0f6c0be13559fafdd9db43977 RefPtr WebProcessProxy::processForIdentifier(ProcessIdentifier identifier) { return allProcessMap().get(identifier).get(); -@@ -493,6 +498,26 @@ void WebProcessProxy::getLaunchOptions(ProcessLauncher::LaunchOptions& launchOpt +@@ -495,6 +500,26 @@ void WebProcessProxy::getLaunchOptions(ProcessLauncher::LaunchOptions& launchOpt if (WebKit::isInspectorProcessPool(processPool())) launchOptions.extraInitializationData.add("inspector-process"_s, "1"_s); @@ -17955,23 +17798,11 @@ index d4fa06e4d9c3a4ad378055e8120d4465105327da..808b526f60c23bcdab69414900657003 WebConnection* webConnection() const { return m_webConnection.get(); } -diff --git a/Source/WebKit/UIProcess/WebScreenOrientationManagerProxy.cpp b/Source/WebKit/UIProcess/WebScreenOrientationManagerProxy.cpp -index cc2b267138cbe32d971cb80ef07f9735d7eeb189..f943f73124819e36617c131b1e13c4ee9abf343b 100644 ---- a/Source/WebKit/UIProcess/WebScreenOrientationManagerProxy.cpp -+++ b/Source/WebKit/UIProcess/WebScreenOrientationManagerProxy.cpp -@@ -28,6 +28,7 @@ - - #include "APIUIClient.h" - #include "MessageSenderInlines.h" -+#include "WebCoreArgumentCoders.h" - #include "WebFullScreenManagerProxy.h" - #include "WebPageProxy.h" - #include "WebProcessProxy.h" diff --git a/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp b/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp -index 52ee22c91b408557e6dea711bbc2adfb1f5ce236..fa13a5522b1f67ad144a864c0ec6cdebf949426c 100644 +index ad7fe7f78255b00b42de67627a9f4ca0f1ad1e64..c7d582b35e5218c5db92d64424522fae7a7a252a 100644 --- a/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp +++ b/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp -@@ -2187,6 +2187,12 @@ void WebsiteDataStore::originDirectoryForTesting(WebCore::ClientOrigin&& origin, +@@ -2195,6 +2195,12 @@ void WebsiteDataStore::originDirectoryForTesting(WebCore::ClientOrigin&& origin, networkProcess().websiteDataOriginDirectoryForTesting(m_sessionID, WTFMove(origin), type, WTFMove(completionHandler)); } @@ -17985,7 +17816,7 @@ index 52ee22c91b408557e6dea711bbc2adfb1f5ce236..fa13a5522b1f67ad144a864c0ec6cdeb void WebsiteDataStore::hasAppBoundSession(CompletionHandler&& completionHandler) const { diff --git a/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h b/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h -index 05a50bcc992c6a0a21134765e0a84256d258bdbe..5fafe11da7c541fe57b73cffc1447abea03586e3 100644 +index be3eea51d440d372d18bf73d7868fd000024e29d..6251d013ceb237c44cd45ac18902e1e192fabf09 100644 --- a/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h +++ b/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h @@ -95,6 +95,7 @@ class DeviceIdHashSaltStorage; @@ -18034,7 +17865,7 @@ index 05a50bcc992c6a0a21134765e0a84256d258bdbe..5fafe11da7c541fe57b73cffc1447abe void setNetworkProxySettings(WebCore::SoupNetworkProxySettings&&); const WebCore::SoupNetworkProxySettings& networkProxySettings() const { return m_networkProxySettings; } void setCookiePersistentStorage(const String&, SoupCookiePersistentStorageType); -@@ -392,6 +404,12 @@ public: +@@ -394,6 +406,12 @@ public: static const String& defaultBaseDataDirectory(); #endif @@ -18047,7 +17878,7 @@ index 05a50bcc992c6a0a21134765e0a84256d258bdbe..5fafe11da7c541fe57b73cffc1447abe void resetQuota(CompletionHandler&&); void resetStoragePersistedState(CompletionHandler&&); #if PLATFORM(IOS_FAMILY) -@@ -534,9 +552,11 @@ private: +@@ -537,9 +555,11 @@ private: WebCore::CurlProxySettings m_proxySettings; #endif @@ -18060,7 +17891,7 @@ index 05a50bcc992c6a0a21134765e0a84256d258bdbe..5fafe11da7c541fe57b73cffc1447abe WebCore::SoupNetworkProxySettings m_networkProxySettings; String m_cookiePersistentStoragePath; SoupCookiePersistentStorageType m_cookiePersistentStorageType { SoupCookiePersistentStorageType::SQLite }; -@@ -564,6 +584,10 @@ private: +@@ -567,6 +587,10 @@ private: RefPtr m_cookieStore; RefPtr m_networkProcess; @@ -18395,6 +18226,96 @@ index 39aeff71fe05354cf63d3b3701d363642d63aca4..32e96cdd0bdbd8c5dcde43fdf60052ac virtual void realize() { }; 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 830cff278d37a6c2c5e262ed1eaf5c032f0209ec..aed8ff154cc9ab8d7bd5bf39fc56e6c4e02e0cec 100644 +--- a/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreDMABuf.cpp ++++ b/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreDMABuf.cpp +@@ -337,6 +337,25 @@ void AcceleratedBackingStoreDMABuf::Surface::paint(GtkWidget*, cairo_t* cr, cons + } + #endif + ++cairo_surface_t* AcceleratedBackingStoreDMABuf::Surface::surfaceForScreencast() ++{ ++ if (!m_surface) ++ return nullptr; ++ ++ // The original surface is upside down, so we flip it to match orientation in other accelerated backing stores. ++ m_flippedSurface = adoptRef(cairo_image_surface_create(CAIRO_FORMAT_ARGB32, cairo_image_surface_get_width(m_surface.get()), cairo_image_surface_get_height(m_surface.get()))); ++ { ++ RefPtr cr = adoptRef(cairo_create(m_flippedSurface.get())); ++ cairo_matrix_t transform; ++ cairo_matrix_init(&transform, 1, 0, 0, -1, 0, cairo_image_surface_get_height(m_surface.get()) / m_deviceScaleFactor); ++ cairo_transform(cr.get(), &transform); ++ cairo_set_source_surface(cr.get(), m_surface.get(), 0, 0); ++ cairo_paint(cr.get()); ++ } ++ cairo_surface_flush(m_flippedSurface.get()); ++ return m_flippedSurface.get(); ++} ++ + void AcceleratedBackingStoreDMABuf::configure(UnixFileDescriptor&& backFD, UnixFileDescriptor&& frontFD, const WebCore::IntSize& size, uint32_t format, uint32_t offset, uint32_t stride, uint64_t modifier) + { + m_isSoftwareRast = false; +@@ -492,6 +511,15 @@ bool AcceleratedBackingStoreDMABuf::paint(cairo_t* cr, const WebCore::IntRect& c + } + #endif + ++cairo_surface_t* AcceleratedBackingStoreDMABuf::surface() ++{ ++ if (m_committedSource) ++ return m_committedSource->surfaceForScreencast(); ++ ++ return nullptr; ++} ++ ++ + } // namespace WebKit + + #endif // USE(GBM) +diff --git a/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreDMABuf.h b/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreDMABuf.h +index 83a043c9495741eff1d2466ef2842bbb7b5ffa39..6d94b4cbfb64b7eb3b845fdbd171c948856ce28a 100644 +--- a/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreDMABuf.h ++++ b/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreDMABuf.h +@@ -75,6 +75,7 @@ private: + #else + bool paint(cairo_t*, const WebCore::IntRect&) override; + #endif ++ cairo_surface_t* surface() override; + void realize() override; + void unrealize() override; + bool makeContextCurrent() override; +@@ -90,6 +91,7 @@ private: + #else + virtual void paint(GtkWidget*, cairo_t*, const WebCore::IntRect&) const = 0; + #endif ++ virtual cairo_surface_t* surfaceForScreencast() = 0; + + const WebCore::IntSize size() const { return m_size; } + +@@ -114,6 +116,7 @@ private: + #else + void paint(GtkWidget*, cairo_t*, const WebCore::IntRect&) const override; + #endif ++ cairo_surface_t* surfaceForScreencast() override { return nullptr; } + + GRefPtr m_context; + unsigned m_textureID { 0 }; +@@ -140,6 +143,7 @@ private: + #else + void paint(GtkWidget*, cairo_t*, const WebCore::IntRect&) const override; + #endif ++ cairo_surface_t* surfaceForScreencast() override; + + RefPtr map(struct gbm_bo*) const; + RefPtr map(RefPtr&) const; +@@ -150,6 +154,7 @@ private: + RefPtr m_frontBitmap; + RefPtr m_surface; + RefPtr m_backSurface; ++ RefPtr m_flippedSurface; + }; + + std::unique_ptr createSource(); diff --git a/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreX11.h b/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreX11.h index 054e80bd900cf16d69801e8102ca989ff0563e1d..8245d7ed58008dbb6152e55e619e4331d30ae674 100644 --- a/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreX11.h @@ -18657,10 +18578,10 @@ index 0000000000000000000000000000000000000000..6a204c5bba8fb95ddb2d1c14cae7a3a7 + +} // namespace WebKit diff --git a/Source/WebKit/UIProcess/ios/PageClientImplIOS.mm b/Source/WebKit/UIProcess/ios/PageClientImplIOS.mm -index 4d3604799a920a728322826d994fd723442f1612..5c3bdaeab381d2c5c3f020253cbc4fa41e75483b 100644 +index f7553422318ad1ec5812bfacbe416063f4ac4094..5f2536c8f5443c2885778b962c0da550e26da720 100644 --- a/Source/WebKit/UIProcess/ios/PageClientImplIOS.mm +++ b/Source/WebKit/UIProcess/ios/PageClientImplIOS.mm -@@ -446,6 +446,8 @@ IntRect PageClientImpl::rootViewToAccessibilityScreen(const IntRect& rect) +@@ -447,6 +447,8 @@ IntRect PageClientImpl::rootViewToAccessibilityScreen(const IntRect& rect) void PageClientImpl::doneWithKeyEvent(const NativeWebKeyboardEvent& event, bool eventWasHandled) { @@ -18670,18 +18591,18 @@ index 4d3604799a920a728322826d994fd723442f1612..5c3bdaeab381d2c5c3f020253cbc4fa4 } diff --git a/Source/WebKit/UIProcess/mac/DisplayCaptureSessionManager.mm b/Source/WebKit/UIProcess/mac/DisplayCaptureSessionManager.mm -index fda048d2388ff8d694274361abe9d9d38268f51f..e325ac426faa1c8bf443df12ba041a44e3bf9786 100644 +index e325ac426faa1c8bf443df12ba041a44e3bf9786..5a986315779adb9e8a76423b505cc110f93571bd 100644 --- a/Source/WebKit/UIProcess/mac/DisplayCaptureSessionManager.mm +++ b/Source/WebKit/UIProcess/mac/DisplayCaptureSessionManager.mm -@@ -116,7 +116,7 @@ std::optional DisplayCaptureSessionManager::deviceSelect +@@ -245,7 +245,7 @@ void DisplayCaptureSessionManager::promptForGetDisplayMedia(UserMediaPermissionR + #elif PLATFORM(MAC) - bool DisplayCaptureSessionManager::useMockCaptureDevices() const - { -- return m_indexOfDeviceSelectedForTesting || MockRealtimeMediaSourceCenter::mockRealtimeMediaSourceCenterEnabled(); -+ return m_indexOfDeviceSelectedForTesting || WebCore::MockRealtimeMediaSourceCenter::mockRealtimeMediaSourceCenterEnabled(); + // There is no picker on systems without ScreenCaptureKit, so share the main screen. +- completionHandler(CGDisplayStreamScreenCaptureSource::screenCaptureDeviceForMainDisplay()); ++ completionHandler(WebCore::CGDisplayStreamScreenCaptureSource::screenCaptureDeviceForMainDisplay()); + + #endif } - - void DisplayCaptureSessionManager::showWindowPicker(const WebCore::SecurityOriginData& origin, CompletionHandler)>&& completionHandler) diff --git a/Source/WebKit/UIProcess/mac/InspectorPlaywrightAgentClientMac.h b/Source/WebKit/UIProcess/mac/InspectorPlaywrightAgentClientMac.h new file mode 100644 index 0000000000000000000000000000000000000000..a16815a6759da61a6a61e3d79058228af887fd7c @@ -18871,7 +18792,7 @@ index 0000000000000000000000000000000000000000..721826c8c98fc85b68a4f45deaee69c1 + +#endif diff --git a/Source/WebKit/UIProcess/mac/PageClientImplMac.h b/Source/WebKit/UIProcess/mac/PageClientImplMac.h -index d1237e42fffb6e34f95f856cee8e8f250a0c43ed..374b375919ee72936cf3a4556f180fb0472acef4 100644 +index 147a174ce9ca5c26bbc76035c190029a0c8d831f..5f6cc5e8f1847c0d5652ec96fc242166f0f28a43 100644 --- a/Source/WebKit/UIProcess/mac/PageClientImplMac.h +++ b/Source/WebKit/UIProcess/mac/PageClientImplMac.h @@ -54,6 +54,8 @@ class PageClientImpl final : public PageClientImplCocoa @@ -18893,7 +18814,7 @@ index d1237e42fffb6e34f95f856cee8e8f250a0c43ed..374b375919ee72936cf3a4556f180fb0 RefPtr takeViewSnapshot(std::optional&&) override; void wheelEventWasNotHandledByWebCore(const NativeWebWheelEvent&) override; #if ENABLE(MAC_GESTURE_EVENTS) -@@ -228,6 +233,10 @@ private: +@@ -226,6 +231,10 @@ private: void beganExitFullScreen(const WebCore::IntRect& initialFrame, const WebCore::IntRect& finalFrame) override; #endif @@ -18905,7 +18826,7 @@ index d1237e42fffb6e34f95f856cee8e8f250a0c43ed..374b375919ee72936cf3a4556f180fb0 void navigationGestureWillEnd(bool willNavigate, WebBackForwardListItem&) override; void navigationGestureDidEnd(bool willNavigate, WebBackForwardListItem&) override; diff --git a/Source/WebKit/UIProcess/mac/PageClientImplMac.mm b/Source/WebKit/UIProcess/mac/PageClientImplMac.mm -index 08be9afe1c3aeea5c9775c3f0b8d8a1fd0686bb7..058279f40676664da1c36a9911e5270e566f1fb4 100644 +index c58c102008f4db2023ca1a87e605f0e12b802db8..3e04fa5e3f198ce9dc39a0c7f1c677de645a9ae1 100644 --- a/Source/WebKit/UIProcess/mac/PageClientImplMac.mm +++ b/Source/WebKit/UIProcess/mac/PageClientImplMac.mm @@ -81,6 +81,7 @@ @@ -18970,7 +18891,7 @@ index 08be9afe1c3aeea5c9775c3f0b8d8a1fd0686bb7..058279f40676664da1c36a9911e5270e } void PageClientImpl::toolTipChanged(const String& oldToolTip, const String& newToolTip) -@@ -480,6 +498,8 @@ IntRect PageClientImpl::rootViewToAccessibilityScreen(const IntRect& rect) +@@ -476,6 +494,8 @@ IntRect PageClientImpl::rootViewToAccessibilityScreen(const IntRect& rect) void PageClientImpl::doneWithKeyEvent(const NativeWebKeyboardEvent& event, bool eventWasHandled) { @@ -18979,7 +18900,7 @@ index 08be9afe1c3aeea5c9775c3f0b8d8a1fd0686bb7..058279f40676664da1c36a9911e5270e m_impl->doneWithKeyEvent(event.nativeEvent(), eventWasHandled); } -@@ -499,6 +519,8 @@ void PageClientImpl::computeHasVisualSearchResults(const URL& imageURL, Shareabl +@@ -495,6 +515,8 @@ void PageClientImpl::computeHasVisualSearchResults(const URL& imageURL, Shareabl RefPtr PageClientImpl::createPopupMenuProxy(WebPageProxy& page) { @@ -18988,7 +18909,7 @@ index 08be9afe1c3aeea5c9775c3f0b8d8a1fd0686bb7..058279f40676664da1c36a9911e5270e return WebPopupMenuProxyMac::create(m_view, page.popupMenuClient()); } -@@ -640,6 +662,12 @@ CALayer *PageClientImpl::footerBannerLayer() const +@@ -636,6 +658,12 @@ CALayer *PageClientImpl::footerBannerLayer() const return m_impl->footerBannerLayer(); } @@ -19001,7 +18922,7 @@ index 08be9afe1c3aeea5c9775c3f0b8d8a1fd0686bb7..058279f40676664da1c36a9911e5270e RefPtr PageClientImpl::takeViewSnapshot(std::optional&&) { return m_impl->takeViewSnapshot(); -@@ -820,6 +848,13 @@ void PageClientImpl::beganExitFullScreen(const IntRect& initialFrame, const IntR +@@ -816,6 +844,13 @@ void PageClientImpl::beganExitFullScreen(const IntRect& initialFrame, const IntR #endif // ENABLE(FULLSCREEN_API) @@ -19015,7 +18936,7 @@ index 08be9afe1c3aeea5c9775c3f0b8d8a1fd0686bb7..058279f40676664da1c36a9911e5270e void PageClientImpl::navigationGestureDidBegin() { m_impl->dismissContentRelativeChildWindowsWithAnimation(true); -@@ -997,6 +1032,9 @@ void PageClientImpl::requestScrollToRect(const WebCore::FloatRect& targetRect, c +@@ -993,6 +1028,9 @@ void PageClientImpl::requestScrollToRect(const WebCore::FloatRect& targetRect, c bool PageClientImpl::windowIsFrontWindowUnderMouse(const NativeWebMouseEvent& event) { @@ -19025,18 +18946,6 @@ index 08be9afe1c3aeea5c9775c3f0b8d8a1fd0686bb7..058279f40676664da1c36a9911e5270e return m_impl->windowIsFrontWindowUnderMouse(event.nativeEvent()); } -diff --git a/Source/WebKit/UIProcess/mac/WKFullScreenWindowController.mm b/Source/WebKit/UIProcess/mac/WKFullScreenWindowController.mm -index dafa15efb5b35d3b4c0180b9bde35de0d8f95d20..b484abaa8a0ac223452629fc6ef985070f8db729 100644 ---- a/Source/WebKit/UIProcess/mac/WKFullScreenWindowController.mm -+++ b/Source/WebKit/UIProcess/mac/WKFullScreenWindowController.mm -@@ -42,6 +42,7 @@ - #import - #import - #import -+#import - #import - #import - #import diff --git a/Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.h b/Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.h index 46aaf12accb35a2e7685d61887e76f0fe14d76c5..37f418197dcc3f6c74fac258ba77d00df0effeb2 100644 --- a/Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.h @@ -19050,7 +18959,7 @@ index 46aaf12accb35a2e7685d61887e76f0fe14d76c5..37f418197dcc3f6c74fac258ba77d00d bool showAfterPostProcessingContextData(); diff --git a/Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.mm b/Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.mm -index 81628ead7d128fd819e6d5b4cfae0e00535077f6..5ebd244402a8ad61d8c80fc4384f607e830d6715 100644 +index ea4b42b221a3e25726c48f87be5e0f3153f77cd2..9c69a2c73f6c12e1c2e527dcc95b86d19d1eccd1 100644 --- a/Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.mm +++ b/Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.mm @@ -479,6 +479,12 @@ void WebContextMenuProxyMac::getShareMenuItem(CompletionHandler takeWindowSnapshot(CGSWindowID windowID, bool captu - ALLOW_DEPRECATED_DECLARATIONS_END +@@ -4416,6 +4421,18 @@ ALLOW_DEPRECATED_DECLARATIONS_BEGIN + ALLOW_DEPRECATED_DECLARATIONS_END } +// Paywright begin @@ -19301,7 +19210,7 @@ index 0a9b8f442b872bdce6fe56314f986e7dd05122bd..1e80accf933681439948c09385f6273d RefPtr WebViewImpl::takeViewSnapshot() { NSWindow *window = [m_view window]; -@@ -5019,11 +5036,11 @@ static Vector compositionHighlights(NSAttributedS +@@ -5036,11 +5053,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; @@ -19520,7 +19429,7 @@ index 0000000000000000000000000000000000000000..135a60361fa8fbf907382625e7c8dd4e + +} // namespace WebKit diff --git a/Source/WebKit/UIProcess/win/WebContextMenuProxyWin.cpp b/Source/WebKit/UIProcess/win/WebContextMenuProxyWin.cpp -index 3dcd0ec35c92e37239208a8f5d4f461fbeaac3ce..84ba07c57f2abac1bd0ca5d0af2e7366ad036892 100644 +index d1d89af6a239b4c567bf7f7ea05713801f8ce564..88b2f750c1995425afe32a7a66e0998be9e9f2bc 100644 --- a/Source/WebKit/UIProcess/win/WebContextMenuProxyWin.cpp +++ b/Source/WebKit/UIProcess/win/WebContextMenuProxyWin.cpp @@ -112,5 +112,11 @@ WebContextMenuProxyWin::~WebContextMenuProxyWin() @@ -19549,7 +19458,7 @@ index 0c80d970c3f9a987faf620081c909f6c7021970d..1467e5481f7417913c0d12a1cb492d02 }; diff --git a/Source/WebKit/UIProcess/win/WebPageInspectorEmulationAgentWin.cpp b/Source/WebKit/UIProcess/win/WebPageInspectorEmulationAgentWin.cpp new file mode 100644 -index 0000000000000000000000000000000000000000..0f95bc9549b3a00f9b976b4fe9140ea8e61a3513 +index 0000000000000000000000000000000000000000..df55ee613ec085cb85ed12b45deff3a1b046861c --- /dev/null +++ b/Source/WebKit/UIProcess/win/WebPageInspectorEmulationAgentWin.cpp @@ -0,0 +1,58 @@ @@ -19586,7 +19495,7 @@ index 0000000000000000000000000000000000000000..0f95bc9549b3a00f9b976b4fe9140ea8 + +void WebPageInspectorEmulationAgent::platformSetSize(int width, int height, Function&& callback) +{ -+ HWND viewHwnd = m_page.viewWidget(); ++ HWND viewHwnd = reinterpret_cast(m_page.viewWidget()); + HWND windowHwnd = GetAncestor(viewHwnd, GA_ROOT); + RECT viewRect; + RECT windowRect; @@ -20075,10 +19984,10 @@ index 0000000000000000000000000000000000000000..a7d88f8c745f95af21db71dcfce368ba + +} // namespace WebKit diff --git a/Source/WebKit/WebKit.xcodeproj/project.pbxproj b/Source/WebKit/WebKit.xcodeproj/project.pbxproj -index c63d566cf0c6c6280b9c7070e94507fdfeeda7a6..1d4b4b26854bedbd0ab1fb303ba1b7bd6483cd52 100644 +index 632bd59ed2bfc097c2496fcab91e8d2d27c46840..eb0130cd6088bc1ac15dce60392e03fb1056b659 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 */; }; @@ -20124,7 +20033,7 @@ index c63d566cf0c6c6280b9c7070e94507fdfeeda7a6..1d4b4b26854bedbd0ab1fb303ba1b7bd 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 */; }; -@@ -5391,6 +5409,7 @@ +@@ -5418,6 +5436,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 = ""; }; @@ -20132,7 +20041,7 @@ index c63d566cf0c6c6280b9c7070e94507fdfeeda7a6..1d4b4b26854bedbd0ab1fb303ba1b7bd 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 = ""; }; -@@ -6984,6 +7003,19 @@ +@@ -7009,6 +7028,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 = ""; }; @@ -20152,7 +20061,7 @@ index c63d566cf0c6c6280b9c7070e94507fdfeeda7a6..1d4b4b26854bedbd0ab1fb303ba1b7bd 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 = ""; }; -@@ -7118,6 +7150,8 @@ +@@ -7143,6 +7175,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 = ""; }; @@ -20161,7 +20070,7 @@ index c63d566cf0c6c6280b9c7070e94507fdfeeda7a6..1d4b4b26854bedbd0ab1fb303ba1b7bd 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 = ""; }; -@@ -7141,6 +7175,14 @@ +@@ -7166,6 +7200,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 = ""; }; @@ -20176,7 +20085,7 @@ index c63d566cf0c6c6280b9c7070e94507fdfeeda7a6..1d4b4b26854bedbd0ab1fb303ba1b7bd 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 = ""; }; -@@ -7307,6 +7349,7 @@ +@@ -7332,6 +7374,7 @@ 3766F9EE189A1241003CF19B /* JavaScriptCore.framework in Frameworks */, 3766F9F1189A1254003CF19B /* libicucore.dylib in Frameworks */, 7B9FC5BB28A5233B007570E7 /* libWebKitPlatform.a in Frameworks */, @@ -20184,7 +20093,7 @@ index c63d566cf0c6c6280b9c7070e94507fdfeeda7a6..1d4b4b26854bedbd0ab1fb303ba1b7bd 3766F9EF189A1244003CF19B /* QuartzCore.framework in Frameworks */, 37694525184FC6B600CDE21F /* Security.framework in Frameworks */, 37BEC4DD1948FC6A008B4286 /* WebCore.framework in Frameworks */, -@@ -9780,6 +9823,7 @@ +@@ -9843,6 +9886,7 @@ 99788ACA1F421DCA00C08000 /* _WKAutomationSessionConfiguration.mm */, 990D28A81C6404B000986977 /* _WKAutomationSessionDelegate.h */, 990D28AF1C65203900986977 /* _WKAutomationSessionInternal.h */, @@ -20192,7 +20101,7 @@ index c63d566cf0c6c6280b9c7070e94507fdfeeda7a6..1d4b4b26854bedbd0ab1fb303ba1b7bd 5C4609E222430E4C009943C2 /* _WKContentRuleListAction.h */, 5C4609E322430E4D009943C2 /* _WKContentRuleListAction.mm */, 5C4609E422430E4D009943C2 /* _WKContentRuleListActionInternal.h */, -@@ -10928,6 +10972,7 @@ +@@ -10990,6 +11034,7 @@ E34B110C27C46BC6006D2F2E /* libWebCoreTestShim.dylib */, E34B110F27C46D09006D2F2E /* libWebCoreTestSupport.dylib */, DDE992F4278D06D900F60D26 /* libWebKitAdditions.a */, @@ -20200,7 +20109,7 @@ index c63d566cf0c6c6280b9c7070e94507fdfeeda7a6..1d4b4b26854bedbd0ab1fb303ba1b7bd 57A9FF15252C6AEF006A2040 /* libWTF.a */, 5750F32A2032D4E500389347 /* LocalAuthentication.framework */, 570DAAB0230273D200E8FC04 /* NearField.framework */, -@@ -11476,6 +11521,12 @@ +@@ -11538,6 +11583,12 @@ children = ( 9197940423DBC4BB00257892 /* InspectorBrowserAgent.cpp */, 9197940323DBC4BB00257892 /* InspectorBrowserAgent.h */, @@ -20213,7 +20122,7 @@ index c63d566cf0c6c6280b9c7070e94507fdfeeda7a6..1d4b4b26854bedbd0ab1fb303ba1b7bd ); path = Agents; sourceTree = ""; -@@ -11484,6 +11535,7 @@ +@@ -11546,6 +11597,7 @@ isa = PBXGroup; children = ( A5D3504D1D78F0D2005124A9 /* RemoteWebInspectorUIProxyMac.mm */, @@ -20221,7 +20130,7 @@ index c63d566cf0c6c6280b9c7070e94507fdfeeda7a6..1d4b4b26854bedbd0ab1fb303ba1b7bd 1CA8B935127C774E00576C2B /* WebInspectorUIProxyMac.mm */, 99A7ACE326012919006D57FD /* WKInspectorResourceURLSchemeHandler.h */, 99A7ACE42601291A006D57FD /* WKInspectorResourceURLSchemeHandler.mm */, -@@ -12074,6 +12126,7 @@ +@@ -12139,6 +12191,7 @@ E1513C65166EABB200149FCB /* AuxiliaryProcessProxy.h */, 46A2B6061E5675A200C3DEDA /* BackgroundProcessResponsivenessTimer.cpp */, 46A2B6071E5675A200C3DEDA /* BackgroundProcessResponsivenessTimer.h */, @@ -20229,7 +20138,7 @@ index c63d566cf0c6c6280b9c7070e94507fdfeeda7a6..1d4b4b26854bedbd0ab1fb303ba1b7bd 07297F9C1C1711EA003F0735 /* DeviceIdHashSaltStorage.cpp */, 07297F9D1C17BBEA223F0735 /* DeviceIdHashSaltStorage.h */, BC2652121182608100243E12 /* DrawingAreaProxy.cpp */, -@@ -12089,6 +12142,8 @@ +@@ -12154,6 +12207,8 @@ 2DD5A72A1EBF09A7009BA597 /* HiddenPageThrottlingAutoIncreasesCounter.h */, 839A2F2F1E2067390039057E /* HighPerformanceGraphicsUsageSampler.cpp */, 839A2F301E2067390039057E /* HighPerformanceGraphicsUsageSampler.h */, @@ -20238,7 +20147,7 @@ index c63d566cf0c6c6280b9c7070e94507fdfeeda7a6..1d4b4b26854bedbd0ab1fb303ba1b7bd 5CEABA2B2333251400797797 /* LegacyGlobalSettings.cpp */, 5CEABA2A2333247700797797 /* LegacyGlobalSettings.h */, 31607F3819627002009B87DA /* LegacySessionStateCoding.h */, -@@ -12123,6 +12178,7 @@ +@@ -12188,6 +12243,7 @@ 1A0C227D2451130A00ED614D /* QuickLookThumbnailingSoftLink.mm */, 1AEE57232409F142002005D6 /* QuickLookThumbnailLoader.h */, 1AEE57242409F142002005D6 /* QuickLookThumbnailLoader.mm */, @@ -20246,7 +20155,7 @@ index c63d566cf0c6c6280b9c7070e94507fdfeeda7a6..1d4b4b26854bedbd0ab1fb303ba1b7bd BC111B08112F5E3C00337BAB /* ResponsivenessTimer.cpp */, 1A30066C1110F4F70031937C /* ResponsivenessTimer.h */, 5CA98549210BEB5A0057EB6B /* SafeBrowsingWarning.h */, -@@ -12226,6 +12282,8 @@ +@@ -12291,6 +12347,8 @@ BC7B6204129A0A6700D174A4 /* WebPageGroup.h */, 2D9EA3101A96D9EB002D2807 /* WebPageInjectedBundleClient.cpp */, 2D9EA30E1A96CBFF002D2807 /* WebPageInjectedBundleClient.h */, @@ -20255,7 +20164,7 @@ index c63d566cf0c6c6280b9c7070e94507fdfeeda7a6..1d4b4b26854bedbd0ab1fb303ba1b7bd BC111B0B112F5E4F00337BAB /* WebPageProxy.cpp */, BC032DCB10F4389F0058C15A /* WebPageProxy.h */, BCBD38FA125BAB9A00D2C29F /* WebPageProxy.messages.in */, -@@ -12386,6 +12444,7 @@ +@@ -12451,6 +12509,7 @@ BC646C1911DD399F006455B0 /* WKBackForwardListItemRef.h */, BC646C1611DD399F006455B0 /* WKBackForwardListRef.cpp */, BC646C1711DD399F006455B0 /* WKBackForwardListRef.h */, @@ -20263,7 +20172,7 @@ index c63d566cf0c6c6280b9c7070e94507fdfeeda7a6..1d4b4b26854bedbd0ab1fb303ba1b7bd BCB9E24A1120E15C00A137E0 /* WKContext.cpp */, BCB9E2491120E15C00A137E0 /* WKContext.h */, 1AE52F9319201F6B00A1FA37 /* WKContextConfigurationRef.cpp */, -@@ -12967,6 +13026,9 @@ +@@ -13032,6 +13091,9 @@ 0F49294628FF0F4B00AF8509 /* DisplayLinkProcessProxyClient.h */, 31ABA79C215AF9E000C90E31 /* HighPerformanceGPUManager.h */, 31ABA79D215AF9E000C90E31 /* HighPerformanceGPUManager.mm */, @@ -20273,7 +20182,7 @@ index c63d566cf0c6c6280b9c7070e94507fdfeeda7a6..1d4b4b26854bedbd0ab1fb303ba1b7bd 1AFDE65B1954E8D500C48FFA /* LegacySessionStateCoding.cpp */, 0FCB4E5818BBE3D9000FCFC9 /* PageClientImplMac.h */, 0FCB4E5918BBE3D9000FCFC9 /* PageClientImplMac.mm */, -@@ -12990,6 +13052,8 @@ +@@ -13055,6 +13117,8 @@ E568B92120A3AC6A00E3C856 /* WebDataListSuggestionsDropdownMac.mm */, E55CD20124D09F1F0042DB9C /* WebDateTimePickerMac.h */, E55CD20224D09F1F0042DB9C /* WebDateTimePickerMac.mm */, @@ -20282,7 +20191,7 @@ index c63d566cf0c6c6280b9c7070e94507fdfeeda7a6..1d4b4b26854bedbd0ab1fb303ba1b7bd BC857E8512B71EBB00EDEB2E /* WebPageProxyMac.mm */, BC5750951268F3C6006F0F12 /* WebPopupMenuProxyMac.h */, BC5750961268F3C6006F0F12 /* WebPopupMenuProxyMac.mm */, -@@ -13893,6 +13957,7 @@ +@@ -13958,6 +14022,7 @@ 99788ACB1F421DDA00C08000 /* _WKAutomationSessionConfiguration.h in Headers */, 990D28AC1C6420CF00986977 /* _WKAutomationSessionDelegate.h in Headers */, 990D28B11C65208D00986977 /* _WKAutomationSessionInternal.h in Headers */, @@ -20290,7 +20199,7 @@ index c63d566cf0c6c6280b9c7070e94507fdfeeda7a6..1d4b4b26854bedbd0ab1fb303ba1b7bd 5C4609E7224317B4009943C2 /* _WKContentRuleListAction.h in Headers */, 5C4609E8224317BB009943C2 /* _WKContentRuleListActionInternal.h in Headers */, 1A5704F81BE01FF400874AF1 /* _WKContextMenuElementInfo.h in Headers */, -@@ -14163,6 +14228,7 @@ +@@ -14228,6 +14293,7 @@ E170876C16D6CA6900F99226 /* BlobRegistryProxy.h in Headers */, 4F601432155C5AA2001FBDE0 /* BlockingResponseMap.h in Headers */, 1A5705111BE410E600874AF1 /* BlockSPI.h in Headers */, @@ -20298,7 +20207,7 @@ index c63d566cf0c6c6280b9c7070e94507fdfeeda7a6..1d4b4b26854bedbd0ab1fb303ba1b7bd BC3065FA1259344E00E71278 /* CacheModel.h in Headers */, 935BF7FC2936BF1A00B41326 /* CacheStorageCache.h in Headers */, 934CF817294B884C00304F7D /* CacheStorageDiskStore.h in Headers */, -@@ -14297,7 +14363,11 @@ +@@ -14362,7 +14428,11 @@ BC14DF77120B5B7900826C0C /* InjectedBundleScriptWorld.h in Headers */, CE550E152283752200D28791 /* InsertTextOptions.h in Headers */, 9197940523DBC4BB00257892 /* InspectorBrowserAgent.h in Headers */, @@ -20310,7 +20219,7 @@ index c63d566cf0c6c6280b9c7070e94507fdfeeda7a6..1d4b4b26854bedbd0ab1fb303ba1b7bd A5E391FD2183C1F800C8FB31 /* InspectorTargetProxy.h in Headers */, 51E9049C27BCB9D400929E7E /* InstallCoordinationSPI.h in Headers */, C5BCE5DF1C50766A00CDE3FA /* InteractionInformationAtPosition.h in Headers */, -@@ -14524,6 +14594,7 @@ +@@ -14589,6 +14659,7 @@ CDAC20CA23FC2F750021DEE3 /* RemoteCDMInstanceSession.h in Headers */, CDAC20C923FC2F750021DEE3 /* RemoteCDMInstanceSessionIdentifier.h in Headers */, F451C0FE2703B263002BA03B /* RemoteDisplayListRecorderProxy.h in Headers */, @@ -20318,7 +20227,7 @@ index c63d566cf0c6c6280b9c7070e94507fdfeeda7a6..1d4b4b26854bedbd0ab1fb303ba1b7bd 2D47B56D1810714E003A3AEE /* RemoteLayerBackingStore.h in Headers */, 2DDF731518E95060004F5A66 /* RemoteLayerBackingStoreCollection.h in Headers */, 1AB16AEA164B3A8800290D62 /* RemoteLayerTreeContext.h in Headers */, -@@ -14576,6 +14647,7 @@ +@@ -14641,6 +14712,7 @@ E1E552C516AE065F004ED653 /* SandboxInitializationParameters.h in Headers */, E36FF00327F36FBD004BE21A /* SandboxStateVariables.h in Headers */, 7BAB111025DD02B3008FC479 /* ScopedActiveMessageReceiveQueue.h in Headers */, @@ -20326,7 +20235,7 @@ index c63d566cf0c6c6280b9c7070e94507fdfeeda7a6..1d4b4b26854bedbd0ab1fb303ba1b7bd E4D54D0421F1D72D007E3C36 /* ScrollingTreeFrameScrollingNodeRemoteIOS.h in Headers */, 0F931C1C18C5711900DBA7C3 /* ScrollingTreeOverflowScrollingNodeIOS.h in Headers */, 0F931C1C18C5711900DBB8D4 /* ScrollingTreeScrollingNodeDelegateIOS.h in Headers */, -@@ -14862,6 +14934,8 @@ +@@ -14928,6 +15000,8 @@ 939EF87029D112EE00F23AEE /* WebPageInlines.h in Headers */, 9197940823DBC4CB00257892 /* WebPageInspectorAgentBase.h in Headers */, A513F5402154A5D700662841 /* WebPageInspectorController.h in Headers */, @@ -20335,7 +20244,7 @@ index c63d566cf0c6c6280b9c7070e94507fdfeeda7a6..1d4b4b26854bedbd0ab1fb303ba1b7bd A543E30C215C8A8D00279CD9 /* WebPageInspectorTarget.h in Headers */, A543E30D215C8A9000279CD9 /* WebPageInspectorTargetController.h in Headers */, A543E307215AD13700279CD9 /* WebPageInspectorTargetFrontendChannel.h in Headers */, -@@ -16912,6 +16986,8 @@ +@@ -16977,6 +17051,8 @@ 51E9049727BCB3D900929E7E /* ICAppBundle.mm in Sources */, 2749F6442146561B008380BF /* InjectedBundleNodeHandle.cpp in Sources */, 2749F6452146561E008380BF /* InjectedBundleRangeHandle.cpp in Sources */, @@ -20344,7 +20253,7 @@ index c63d566cf0c6c6280b9c7070e94507fdfeeda7a6..1d4b4b26854bedbd0ab1fb303ba1b7bd B6114A7F29394A1600380B1B /* JSWebExtensionAPIEvent.mm in Sources */, 1C5DC471290B33A20061EC62 /* JSWebExtensionAPIExtension.mm in Sources */, 1C5DC4552908AC900061EC62 /* JSWebExtensionAPINamespace.mm in Sources */, -@@ -17284,6 +17360,8 @@ +@@ -17349,6 +17425,8 @@ E3816B3D27E2463A005EAFC0 /* WebMockContentFilterManager.cpp in Sources */, 31BA924D148831260062EDB5 /* WebNotificationManagerMessageReceiver.cpp in Sources */, 2DF6FE52212E110900469030 /* WebPage.cpp in Sources */, @@ -20354,7 +20263,7 @@ index c63d566cf0c6c6280b9c7070e94507fdfeeda7a6..1d4b4b26854bedbd0ab1fb303ba1b7bd 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 1ddf46cca6e5070080832b31687b4a193f589b71..8cf77815dc265512db07bf3e0c9c42492cb4315e 100644 +index 76b3ae5a774fa3c571f5694ca7ebf281b925dae4..8b48aa452347d36bc30ba769c5c045a9a4fa07a1 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 @@ -20441,7 +20350,7 @@ index 1ddf46cca6e5070080832b31687b4a193f589b71..8cf77815dc265512db07bf3e0c9c4249 } void WebLoaderStrategy::scheduleInternallyFailedLoad(WebCore::ResourceLoader& resourceLoader) -@@ -943,7 +956,7 @@ void WebLoaderStrategy::didFinishPreconnection(WebCore::ResourceLoaderIdentifier +@@ -939,7 +952,7 @@ void WebLoaderStrategy::didFinishPreconnection(WebCore::ResourceLoaderIdentifier bool WebLoaderStrategy::isOnLine() const { @@ -20450,7 +20359,7 @@ index 1ddf46cca6e5070080832b31687b4a193f589b71..8cf77815dc265512db07bf3e0c9c4249 } void WebLoaderStrategy::addOnlineStateChangeListener(Function&& listener) -@@ -970,6 +983,11 @@ void WebLoaderStrategy::isResourceLoadFinished(CachedResource& resource, Complet +@@ -966,6 +979,11 @@ void WebLoaderStrategy::isResourceLoadFinished(CachedResource& resource, Complet void WebLoaderStrategy::setOnLineState(bool isOnLine) { @@ -20462,7 +20371,7 @@ index 1ddf46cca6e5070080832b31687b4a193f589b71..8cf77815dc265512db07bf3e0c9c4249 if (m_isOnLine == isOnLine) return; -@@ -978,6 +996,12 @@ void WebLoaderStrategy::setOnLineState(bool isOnLine) +@@ -974,6 +992,12 @@ void WebLoaderStrategy::setOnLineState(bool isOnLine) listener(isOnLine); } @@ -20541,23 +20450,11 @@ index 777d8c44883adc46d0bb782dc411dedc8c2b2213..1e3611ffedbf6c57f73a99df3d4122bf WebProcess::singleton().supplement()->didUpdateNotificationDecision(securityOrigin.toString(), allowed); auto permissionHandlers = m_requestsPerOrigin.take(securityOrigin); -diff --git a/Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm b/Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm -index ca92cdf17488fb0e136422c1d172f0a3a9f95f02..8bfbcec0273fc12a8daf9e65491314cd9487e2ad 100644 ---- a/Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm -+++ b/Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm -@@ -32,6 +32,7 @@ - #import "DataReference.h" - #import "FrameInfoData.h" - #import "Logging.h" -+#import "MessageSenderInlines.h" - #import "PDFAnnotationTextWidgetDetails.h" - #import "PDFContextMenu.h" - #import "PDFLayerControllerSPI.h" diff --git a/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp b/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp -index cc3a238360d27df2518a47167be2ae579f9ec0fb..6bbab298a05e1c4e8d40e15248c97de0d299ca4a 100644 +index 92e24ada89a4e100c1c6008aa185af5a0997f2d1..7c881f197b7116b5779f2d737ab91966b7d53630 100644 --- a/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp +++ b/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp -@@ -449,6 +449,8 @@ void WebChromeClient::setResizable(bool resizable) +@@ -458,6 +458,8 @@ void WebChromeClient::setResizable(bool resizable) void WebChromeClient::addMessageToConsole(MessageSource source, MessageLevel level, const String& message, unsigned lineNumber, unsigned columnNumber, const String& sourceID) { @@ -20594,10 +20491,10 @@ index 87121e8b57e5ad7ef74857685f0db65e164a5bf8..580dca6ca0709a2d620d3999beb69856 { } diff --git a/Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp b/Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp -index b0593edec485dc99628e0214733de9ea41dc38da..b057c4e725f9374212364ab981ee79928b3acf8a 100644 +index 8acc97d77120cb3af2fb93e2217a99b2ab3648a5..4618f8346c87dbd016ac01c37f84ae6766db7cc0 100644 --- a/Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp +++ b/Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp -@@ -1678,13 +1678,6 @@ void WebFrameLoaderClient::transitionToCommittedForNewPage() +@@ -1679,13 +1679,6 @@ void WebFrameLoaderClient::transitionToCommittedForNewPage() if (webPage->scrollPinningBehavior() != ScrollPinningBehavior::DoNotPin) view->setScrollPinningBehavior(webPage->scrollPinningBehavior()); @@ -20612,7 +20509,7 @@ index b0593edec485dc99628e0214733de9ea41dc38da..b057c4e725f9374212364ab981ee7992 void WebFrameLoaderClient::didRestoreFromBackForwardCache() diff --git a/Source/WebKit/WebProcess/WebCoreSupport/mac/WebDragClientMac.mm b/Source/WebKit/WebProcess/WebCoreSupport/mac/WebDragClientMac.mm -index 234a7c2c4cfb78f7a4961e4e10026e63d12f1562..071f41bed2e12baed839804d0dc91412b76cebfd 100644 +index 83c0d037b71d19692d60b0e3dbeff5e356f56520..892ec3140edd288c7de5345404ff12e08f114892 100644 --- a/Source/WebKit/WebProcess/WebCoreSupport/mac/WebDragClientMac.mm +++ b/Source/WebKit/WebProcess/WebCoreSupport/mac/WebDragClientMac.mm @@ -133,7 +133,8 @@ static WebCore::CachedImage* cachedImage(Element& element) @@ -20755,7 +20652,7 @@ index 0000000000000000000000000000000000000000..8e44922ab13ed645532b549342553367 + +#endif // ENABLE(DRAG_SUPPORT) diff --git a/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp b/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp -index 63caeccf06fa08b437a306333c64d8f5cee3d294..8a1c029568d19646a086b9d6b4b4cb1cb3f57764 100644 +index 7f71f9c9d67bb78bccf9a734b5bc6049f6c3b782..1ece4d12fbb0a0ecfeafee6033053d7452ccedb6 100644 --- a/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp +++ b/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp @@ -39,6 +39,7 @@ @@ -20766,7 +20663,7 @@ index 63caeccf06fa08b437a306333c64d8f5cee3d294..8a1c029568d19646a086b9d6b4b4cb1c #include #include #include -@@ -119,6 +120,16 @@ void DrawingAreaCoordinatedGraphics::scroll(const IntRect& scrollRect, const Int +@@ -113,6 +114,16 @@ void DrawingAreaCoordinatedGraphics::scroll(const IntRect& scrollRect, const Int ASSERT(m_scrollRect.isEmpty()); ASSERT(m_scrollOffset.isEmpty()); ASSERT(m_dirtyRegion.isEmpty()); @@ -20783,7 +20680,7 @@ index 63caeccf06fa08b437a306333c64d8f5cee3d294..8a1c029568d19646a086b9d6b4b4cb1c m_layerTreeHost->scrollNonCompositedContents(scrollRect); return; } -@@ -251,6 +262,7 @@ void DrawingAreaCoordinatedGraphics::updatePreferences(const WebPreferencesStore +@@ -237,6 +248,7 @@ void DrawingAreaCoordinatedGraphics::updatePreferences(const WebPreferencesStore settings.setAcceleratedCompositingEnabled(false); } #endif @@ -20791,7 +20688,7 @@ index 63caeccf06fa08b437a306333c64d8f5cee3d294..8a1c029568d19646a086b9d6b4b4cb1c settings.setForceCompositingMode(store.getBoolValueForKey(WebPreferencesKey::forceCompositingModeKey())); // Fixed position elements need to be composited and create stacking contexts // in order to be scrolled by the ScrollingCoordinator. -@@ -692,6 +704,11 @@ void DrawingAreaCoordinatedGraphics::enterAcceleratedCompositingMode(GraphicsLay +@@ -606,6 +618,11 @@ void DrawingAreaCoordinatedGraphics::enterAcceleratedCompositingMode(GraphicsLay m_scrollOffset = IntSize(); m_displayTimer.stop(); m_isWaitingForDidUpdate = false; @@ -20802,10 +20699,10 @@ index 63caeccf06fa08b437a306333c64d8f5cee3d294..8a1c029568d19646a086b9d6b4b4cb1c +// Playwright end } - void DrawingAreaCoordinatedGraphics::exitAcceleratedCompositingMode() -@@ -741,6 +758,11 @@ void DrawingAreaCoordinatedGraphics::exitAcceleratedCompositingMode() + void DrawingAreaCoordinatedGraphics::sendEnterAcceleratedCompositingModeIfNeeded() +@@ -664,6 +681,11 @@ void DrawingAreaCoordinatedGraphics::exitAcceleratedCompositingMode() // UI process, we still need to let it know about the new contents, so send an Update message. - send(Messages::DrawingAreaProxy::Update(m_backingStoreStateID, updateInfo)); + send(Messages::DrawingAreaProxy::Update(0, updateInfo)); } +// Playwright begin +#if PLATFORM(WIN) @@ -20816,10 +20713,10 @@ index 63caeccf06fa08b437a306333c64d8f5cee3d294..8a1c029568d19646a086b9d6b4b4cb1c void DrawingAreaCoordinatedGraphics::scheduleDisplay() diff --git a/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp b/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp -index 0e8172a6d93e1351ae583e0ca508b1d06a3ed44e..9f4381ec30045013f10304f764fbf246f95eb1da 100644 +index e585558cb6d4e57c197389296818318a5966cc9d..849add4143a4bb38a205ffefd3eeeabcaa6648dc 100644 --- a/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp +++ b/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp -@@ -186,8 +186,16 @@ void LayerTreeHost::setViewOverlayRootLayer(GraphicsLayer* viewOverlayRootLayer) +@@ -185,8 +185,16 @@ void LayerTreeHost::setViewOverlayRootLayer(GraphicsLayer* viewOverlayRootLayer) void LayerTreeHost::scrollNonCompositedContents(const IntRect& rect) { auto* frameView = m_webPage.mainFrameView(); @@ -20836,7 +20733,7 @@ index 0e8172a6d93e1351ae583e0ca508b1d06a3ed44e..9f4381ec30045013f10304f764fbf246 m_viewportController.didScroll(rect.location()); if (m_isDiscardable) -@@ -324,6 +332,10 @@ void LayerTreeHost::didChangeViewport() +@@ -323,6 +331,10 @@ void LayerTreeHost::didChangeViewport() if (!view->useFixedLayout()) view->notifyScrollPositionChanged(m_lastScrollPosition); @@ -20848,7 +20745,7 @@ index 0e8172a6d93e1351ae583e0ca508b1d06a3ed44e..9f4381ec30045013f10304f764fbf246 if (m_lastPageScaleFactor != pageScale) { diff --git a/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h b/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h -index bd26f86559b253ef7651f0e4993742d6675119eb..8992abdd8716363d7b74441c52d5d5802118a9b7 100644 +index 6ec180a5da3daa88e626be068d36d3d2679bf8e4..c9ac3df9d232ac8da9b38972b9b0904ae51e9db8 100644 --- a/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h +++ b/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h @@ -103,6 +103,13 @@ public: @@ -20892,7 +20789,7 @@ index 4eff97ae17b6c1b56181a4ae2b7e1b74c6c007a2..9bbeb368f89d71a2968d93b305dd1ffc { if (m_hasRemovedMessageReceiver) diff --git a/Source/WebKit/WebProcess/WebPage/DrawingArea.h b/Source/WebKit/WebProcess/WebPage/DrawingArea.h -index 85c74632635ab5c697b4435063154026101ab4e4..8320d19e3638ac6d1b2238cffbfaa9f91ec7f78c 100644 +index 4862c3045b6ac40f0d868e553b0944250361df6b..00bd0039ab5c183a525004d533d4d269124b7765 100644 --- a/Source/WebKit/WebProcess/WebPage/DrawingArea.h +++ b/Source/WebKit/WebProcess/WebPage/DrawingArea.h @@ -161,6 +161,9 @@ public: @@ -20984,10 +20881,10 @@ index f127d64d005ab7b93875591b94a5899205e91579..ebb981d69b2d73f234612275bbf9c613 uint64_t m_navigationID; }; diff --git a/Source/WebKit/WebProcess/WebPage/WebPage.cpp b/Source/WebKit/WebProcess/WebPage/WebPage.cpp -index 47a01cb008e61bfa563c707499a3f10a654025de..f0f2e63dd7a5c115fa2be8328403aecf0f119465 100644 +index 6fb105a3653e73ba2562aad28269d3ba69145713..37109ed78a04837561769ebc075ecb2bd27bc803 100644 --- a/Source/WebKit/WebProcess/WebPage/WebPage.cpp +++ b/Source/WebKit/WebProcess/WebPage/WebPage.cpp -@@ -233,6 +233,7 @@ +@@ -234,6 +234,7 @@ #include #include #include @@ -20995,7 +20892,7 @@ index 47a01cb008e61bfa563c707499a3f10a654025de..f0f2e63dd7a5c115fa2be8328403aecf #include #include #include -@@ -1003,6 +1004,9 @@ WebPage::WebPage(PageIdentifier pageID, WebPageCreationParameters&& parameters) +@@ -1005,6 +1006,9 @@ WebPage::WebPage(PageIdentifier pageID, WebPageCreationParameters&& parameters) sandbox_enable_state_flag("LockdownModeEnabled", *auditToken); #endif // HAVE(SANDBOX_STATE_FLAGS) @@ -21005,9 +20902,9 @@ index 47a01cb008e61bfa563c707499a3f10a654025de..f0f2e63dd7a5c115fa2be8328403aecf updateThrottleState(); #if ENABLE(ACCESSIBILITY_ANIMATION_CONTROL) updateImageAnimationEnabled(); -@@ -1779,6 +1783,22 @@ void WebPage::platformDidReceiveLoadParameters(const LoadParameters& loadParamet +@@ -1823,6 +1827,22 @@ void WebPage::loadRequestByCreatingNewLocalFrameOrConvertingRemoteFrame(LocalFra + loadRequest(WTFMove(loadParameters)); } - #endif +void WebPage::loadRequestInFrameForInspector(LoadParameters&& loadParameters, WebCore::FrameIdentifier frameID) +{ @@ -21028,7 +20925,7 @@ index 47a01cb008e61bfa563c707499a3f10a654025de..f0f2e63dd7a5c115fa2be8328403aecf 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()); -@@ -2043,21 +2063,17 @@ void WebPage::setSize(const WebCore::IntSize& viewSize) +@@ -2087,21 +2107,17 @@ void WebPage::setSize(const WebCore::IntSize& viewSize) view->resize(viewSize); m_drawingArea->setNeedsDisplay(); @@ -21051,7 +20948,7 @@ index 47a01cb008e61bfa563c707499a3f10a654025de..f0f2e63dd7a5c115fa2be8328403aecf // Viewport properties have no impact on zero sized fixed viewports. if (m_viewSize.isEmpty()) -@@ -2074,20 +2090,18 @@ void WebPage::sendViewportAttributesChanged(const ViewportArguments& viewportArg +@@ -2118,20 +2134,18 @@ void WebPage::sendViewportAttributesChanged(const ViewportArguments& viewportArg ViewportAttributes attr = computeViewportAttributes(viewportArguments, minimumLayoutFallbackWidth, deviceWidth, deviceHeight, 1, m_viewSize); @@ -21079,7 +20976,7 @@ index 47a01cb008e61bfa563c707499a3f10a654025de..f0f2e63dd7a5c115fa2be8328403aecf #if USE(COORDINATED_GRAPHICS) m_drawingArea->didChangeViewportAttributes(WTFMove(attr)); -@@ -2095,7 +2109,6 @@ void WebPage::sendViewportAttributesChanged(const ViewportArguments& viewportArg +@@ -2139,7 +2153,6 @@ void WebPage::sendViewportAttributesChanged(const ViewportArguments& viewportArg send(Messages::WebPageProxy::DidChangeViewportProperties(attr)); #endif } @@ -21087,7 +20984,7 @@ index 47a01cb008e61bfa563c707499a3f10a654025de..f0f2e63dd7a5c115fa2be8328403aecf void WebPage::scrollMainFrameIfNotAtMaxScrollPosition(const IntSize& scrollOffset) { -@@ -2387,6 +2400,7 @@ void WebPage::scaleView(double scale) +@@ -2431,6 +2444,7 @@ void WebPage::scaleView(double scale) } m_page->setViewScaleFactor(scale); @@ -21095,7 +20992,7 @@ index 47a01cb008e61bfa563c707499a3f10a654025de..f0f2e63dd7a5c115fa2be8328403aecf scalePage(pageScale, scrollPositionAtNewScale); } -@@ -2566,18 +2580,14 @@ void WebPage::viewportPropertiesDidChange(const ViewportArguments& viewportArgum +@@ -2610,18 +2624,14 @@ void WebPage::viewportPropertiesDidChange(const ViewportArguments& viewportArgum viewportConfigurationChanged(); #endif @@ -21115,7 +21012,7 @@ index 47a01cb008e61bfa563c707499a3f10a654025de..f0f2e63dd7a5c115fa2be8328403aecf } void WebPage::listenForLayoutMilestones(OptionSet milestones) -@@ -3566,6 +3576,97 @@ void WebPage::touchEvent(const WebTouchEvent& touchEvent) +@@ -3610,6 +3620,97 @@ void WebPage::touchEvent(const WebTouchEvent& touchEvent) send(Messages::WebPageProxy::DidReceiveEvent(touchEvent.type(), handled)); } @@ -21213,7 +21110,7 @@ index 47a01cb008e61bfa563c707499a3f10a654025de..f0f2e63dd7a5c115fa2be8328403aecf #endif void WebPage::cancelPointer(WebCore::PointerID pointerId, const WebCore::IntPoint& documentPoint) -@@ -3643,6 +3744,11 @@ void WebPage::sendMessageToTargetBackend(const String& targetId, const String& m +@@ -3687,6 +3788,11 @@ void WebPage::sendMessageToTargetBackend(const String& targetId, const String& m m_inspectorTargetController->sendMessageToTargetBackend(targetId, message); } @@ -21225,7 +21122,7 @@ index 47a01cb008e61bfa563c707499a3f10a654025de..f0f2e63dd7a5c115fa2be8328403aecf void WebPage::insertNewlineInQuotedContent() { Ref frame = CheckedRef(m_page->focusController())->focusedOrMainFrame(); -@@ -3875,6 +3981,7 @@ void WebPage::didCompletePageTransition() +@@ -3919,6 +4025,7 @@ void WebPage::didCompletePageTransition() void WebPage::show() { send(Messages::WebPageProxy::ShowPage()); @@ -21233,7 +21130,7 @@ index 47a01cb008e61bfa563c707499a3f10a654025de..f0f2e63dd7a5c115fa2be8328403aecf } void WebPage::setIsTakingSnapshotsForApplicationSuspension(bool isTakingSnapshotsForApplicationSuspension) -@@ -4846,7 +4953,7 @@ NotificationPermissionRequestManager* WebPage::notificationPermissionRequestMana +@@ -4905,7 +5012,7 @@ NotificationPermissionRequestManager* WebPage::notificationPermissionRequestMana #if ENABLE(DRAG_SUPPORT) @@ -21242,7 +21139,7 @@ index 47a01cb008e61bfa563c707499a3f10a654025de..f0f2e63dd7a5c115fa2be8328403aecf void WebPage::performDragControllerAction(DragControllerAction action, const IntPoint& clientPosition, const IntPoint& globalPosition, OptionSet draggingSourceOperationMask, SelectionData&& selectionData, OptionSet flags) { if (!m_page) { -@@ -7378,6 +7485,9 @@ Ref WebPage::createDocumentLoader(LocalFrame& frame, const Resou +@@ -7431,6 +7538,9 @@ Ref WebPage::createDocumentLoader(LocalFrame& frame, const Resou WebsitePoliciesData::applyToDocumentLoader(WTFMove(*m_pendingWebsitePolicies), documentLoader); m_pendingWebsitePolicies = std::nullopt; } @@ -21253,7 +21150,7 @@ index 47a01cb008e61bfa563c707499a3f10a654025de..f0f2e63dd7a5c115fa2be8328403aecf return documentLoader; diff --git a/Source/WebKit/WebProcess/WebPage/WebPage.h b/Source/WebKit/WebProcess/WebPage/WebPage.h -index 5d3b2e1c2d3c4f9e26e1241fc67fd51b702fac48..69d90cadb21b26b17dfead1cfe88e1eb57848674 100644 +index 6d455f99a4621438baab0ffb5fe311d9f38107c1..0d04fd5611f44058410161c150abe541bc860f61 100644 --- a/Source/WebKit/WebProcess/WebPage/WebPage.h +++ b/Source/WebKit/WebProcess/WebPage/WebPage.h @@ -122,6 +122,10 @@ @@ -21291,7 +21188,7 @@ index 5d3b2e1c2d3c4f9e26e1241fc67fd51b702fac48..69d90cadb21b26b17dfead1cfe88e1eb #endif void beginPrinting(WebCore::FrameIdentifier, const PrintInfo&); -@@ -1320,6 +1327,7 @@ public: +@@ -1315,6 +1322,7 @@ public: void connectInspector(const String& targetId, Inspector::FrontendChannel::ConnectionType); void disconnectInspector(const String& targetId); void sendMessageToTargetBackend(const String& targetId, const String& message); @@ -21299,15 +21196,15 @@ index 5d3b2e1c2d3c4f9e26e1241fc67fd51b702fac48..69d90cadb21b26b17dfead1cfe88e1eb void insertNewlineInQuotedContent(); -@@ -1745,6 +1753,7 @@ private: - // Actions +@@ -1741,6 +1749,7 @@ private: void tryClose(CompletionHandler&&); void platformDidReceiveLoadParameters(const LoadParameters&); + void loadRequestByCreatingNewLocalFrameOrConvertingRemoteFrame(LocalFrameCreationParameters&&, LoadParameters&&); + void loadRequestInFrameForInspector(LoadParameters&&, WebCore::FrameIdentifier); void loadRequest(LoadParameters&&); [[noreturn]] void loadRequestWaitingForProcessLaunch(LoadParameters&&, URL&&, WebPageProxyIdentifier, bool); void loadData(LoadParameters&&); -@@ -1782,6 +1791,7 @@ private: +@@ -1778,6 +1787,7 @@ private: void updatePotentialTapSecurityOrigin(const WebTouchEvent&, bool wasHandled); #elif ENABLE(TOUCH_EVENTS) void touchEvent(const WebTouchEvent&); @@ -21315,7 +21212,7 @@ index 5d3b2e1c2d3c4f9e26e1241fc67fd51b702fac48..69d90cadb21b26b17dfead1cfe88e1eb #endif void cancelPointer(WebCore::PointerID, const WebCore::IntPoint&); -@@ -1927,9 +1937,7 @@ private: +@@ -1923,9 +1933,7 @@ private: void addLayerForFindOverlay(CompletionHandler&&); void removeLayerForFindOverlay(CompletionHandler&&); @@ -21325,7 +21222,7 @@ index 5d3b2e1c2d3c4f9e26e1241fc67fd51b702fac48..69d90cadb21b26b17dfead1cfe88e1eb void didChangeSelectedIndexForActivePopupMenu(int32_t newIndex); void setTextForActivePopupMenu(int32_t index); -@@ -2471,6 +2479,7 @@ private: +@@ -2467,6 +2475,7 @@ private: UserActivity m_userActivity; uint64_t m_pendingNavigationID { 0 }; @@ -21334,7 +21231,7 @@ index 5d3b2e1c2d3c4f9e26e1241fc67fd51b702fac48..69d90cadb21b26b17dfead1cfe88e1eb bool m_mainFrameProgressCompleted { false }; diff --git a/Source/WebKit/WebProcess/WebPage/WebPage.messages.in b/Source/WebKit/WebProcess/WebPage/WebPage.messages.in -index 417c48f9495d3020c2200a5c4a55942f97b85bcf..853547fb4066acf15edbeb960204e22677b01284 100644 +index a60f326bce754593ff3d42b141f04cc4f88f8bb2..763942ecb9836247e8bc0b0bc30903c10ea4cebf 100644 --- a/Source/WebKit/WebProcess/WebPage/WebPage.messages.in +++ b/Source/WebKit/WebProcess/WebPage/WebPage.messages.in @@ -146,6 +146,7 @@ GenerateSyntheticEditingCommand(enum:uint8_t WebKit::SyntheticEditingCommandType @@ -21353,15 +21250,15 @@ index 417c48f9495d3020c2200a5c4a55942f97b85bcf..853547fb4066acf15edbeb960204e226 #endif CancelPointer(WebCore::PointerID pointerId, WebCore::IntPoint documentPoint) -@@ -185,6 +187,7 @@ GenerateSyntheticEditingCommand(enum:uint8_t WebKit::SyntheticEditingCommandType - LoadURLInFrame(URL url, String referrer, WebCore::FrameIdentifier frameID) +@@ -186,6 +188,7 @@ GenerateSyntheticEditingCommand(enum:uint8_t WebKit::SyntheticEditingCommandType LoadDataInFrame(IPC::DataReference data, String MIMEType, String encodingName, URL baseURL, WebCore::FrameIdentifier frameID) LoadRequest(struct WebKit::LoadParameters loadParameters) + LoadRequestByCreatingNewLocalFrameOrConvertingRemoteFrame(struct WebKit::LocalFrameCreationParameters localFrameCreationParameters, struct WebKit::LoadParameters loadParameters) + LoadRequestInFrameForInspector(struct WebKit::LoadParameters loadParameters, WebCore::FrameIdentifier frameID) 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) -@@ -346,10 +349,10 @@ GenerateSyntheticEditingCommand(enum:uint8_t WebKit::SyntheticEditingCommandType +@@ -347,10 +350,10 @@ GenerateSyntheticEditingCommand(enum:uint8_t WebKit::SyntheticEditingCommandType AddMIMETypeWithCustomContentProvider(String mimeType) # Drag and drop. @@ -21374,7 +21271,7 @@ index 417c48f9495d3020c2200a5c4a55942f97b85bcf..853547fb4066acf15edbeb960204e226 PerformDragControllerAction(enum:uint8_t WebKit::DragControllerAction action, WebCore::DragData dragData, WebKit::SandboxExtension::Handle sandboxExtensionHandle, Vector sandboxExtensionsForUpload) #endif #if ENABLE(DRAG_SUPPORT) -@@ -358,6 +361,10 @@ GenerateSyntheticEditingCommand(enum:uint8_t WebKit::SyntheticEditingCommandType +@@ -359,6 +362,10 @@ GenerateSyntheticEditingCommand(enum:uint8_t WebKit::SyntheticEditingCommandType DragCancelled() #endif @@ -21386,10 +21283,10 @@ index 417c48f9495d3020c2200a5c4a55942f97b85bcf..853547fb4066acf15edbeb960204e226 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 a66872c21ed4922a2ac150a3c8377c80a546b720..b749a41b0339c446ebfeda6e2bb46daebdebb9bb 100644 +index b560b3526ea7990592c1fde9f86a75cf18dea920..e9cb9f7b7ab3c1672bf3f99515904abd47b7e083 100644 --- a/Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm +++ b/Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm -@@ -794,21 +794,37 @@ String WebPage::platformUserAgent(const URL&) const +@@ -795,21 +795,37 @@ String WebPage::platformUserAgent(const URL&) const bool WebPage::hoverSupportedByPrimaryPointingDevice() const { @@ -21478,7 +21375,7 @@ index f17f5d719d892309ed9c7093384945866b5117b9..1dba47bbf0dbd0362548423a74b38034 } diff --git a/Source/WebKit/WebProcess/WebProcess.cpp b/Source/WebKit/WebProcess/WebProcess.cpp -index c4c4115505a462291b413ff402d3d24771216f4c..66b4798d311a5b1d3a114aaf379d30c286dde5c1 100644 +index 9b0a0265941817b3fc80e944958d1534f97b58f1..af18cb41d4bf3fafed6f60915d927060bc66002d 100644 --- a/Source/WebKit/WebProcess/WebProcess.cpp +++ b/Source/WebKit/WebProcess/WebProcess.cpp @@ -94,6 +94,7 @@ @@ -21489,7 +21386,7 @@ index c4c4115505a462291b413ff402d3d24771216f4c..66b4798d311a5b1d3a114aaf379d30c2 #include #include #include -@@ -378,6 +379,8 @@ void WebProcess::initializeProcess(const AuxiliaryProcessInitializationParameter +@@ -373,6 +374,8 @@ void WebProcess::initializeProcess(const AuxiliaryProcessInitializationParameter platformInitializeProcess(parameters); updateCPULimit(); @@ -21499,10 +21396,10 @@ index c4c4115505a462291b413ff402d3d24771216f4c..66b4798d311a5b1d3a114aaf379d30c2 void WebProcess::initializeConnection(IPC::Connection* connection) diff --git a/Source/WebKit/WebProcess/WebProcess.h b/Source/WebKit/WebProcess/WebProcess.h -index 33768f58a77485553492a5e076a471bebc948c11..3ce7c975e561cb6864b277770b1747da4314dec5 100644 +index 99cc5d377d3d55e68315cceae16cd5b5c5e9a7a3..d481b508c090f6892253b4793d5b534004d49557 100644 --- a/Source/WebKit/WebProcess/WebProcess.h +++ b/Source/WebKit/WebProcess/WebProcess.h -@@ -711,7 +711,7 @@ private: +@@ -720,7 +720,7 @@ private: WeakHashMap m_userGestureTokens; @@ -21527,10 +21424,10 @@ index 8987c3964a9308f2454759de7f8972215a3ae416..bcac0afeb94ed8123d1f9fb0b932c849 SetProcessDPIAware(); return true; diff --git a/Source/WebKitLegacy/mac/WebView/WebHTMLView.mm b/Source/WebKitLegacy/mac/WebView/WebHTMLView.mm -index 60b591e67af468492a1b6db69602f0a5ff89d5dd..5ec155f32739f748480b2113f88a8d105021d80a 100644 +index af93f303b2968d6298d0e096fd259bc34621bf9f..c90ff8aa82883f9555fe4d7e7d890442b61fa26f 100644 --- a/Source/WebKitLegacy/mac/WebView/WebHTMLView.mm +++ b/Source/WebKitLegacy/mac/WebView/WebHTMLView.mm -@@ -4210,7 +4210,7 @@ - (void)mouseDown:(WebEvent *)event +@@ -4210,7 +4210,7 @@ ALLOW_DEPRECATED_DECLARATIONS_END _private->handlingMouseDownEvent = NO; } @@ -21540,10 +21437,10 @@ index 60b591e67af468492a1b6db69602f0a5ff89d5dd..5ec155f32739f748480b2113f88a8d10 - (void)touch:(WebEvent *)event { diff --git a/Source/WebKitLegacy/mac/WebView/WebView.mm b/Source/WebKitLegacy/mac/WebView/WebView.mm -index f8996e00b734296c405ec94640f808b1e48d37ff..a612683d1b32293966ff4c3b3cdbd83b5ce6a917 100644 +index ecfc91f11398cc5c1a7426162453419c0e452fef..2438158736e1a91d9cdaedf02cc13abeb58f727a 100644 --- a/Source/WebKitLegacy/mac/WebView/WebView.mm +++ b/Source/WebKitLegacy/mac/WebView/WebView.mm -@@ -3984,7 +3984,7 @@ + (void)_doNotStartObservingNetworkReachability +@@ -3960,7 +3960,7 @@ + (void)_doNotStartObservingNetworkReachability } #endif // PLATFORM(IOS_FAMILY) @@ -21552,7 +21449,7 @@ index f8996e00b734296c405ec94640f808b1e48d37ff..a612683d1b32293966ff4c3b3cdbd83b - (NSArray *)_touchEventRegions { -@@ -4026,7 +4026,7 @@ - (NSArray *)_touchEventRegions +@@ -4002,7 +4002,7 @@ - (NSArray *)_touchEventRegions }).autorelease(); } @@ -21593,7 +21490,7 @@ index 0000000000000000000000000000000000000000..dd6a53e2d57318489b7e49dd7373706d + LIBVPX_LIBRARIES +) diff --git a/Source/cmake/OptionsGTK.cmake b/Source/cmake/OptionsGTK.cmake -index fd8f191bab6d6b6413d1914e31c54eee86d65cb7..05db3f89babd88eaf3c360dba39cd2ed76bf8a66 100644 +index 09d3e6badf162ad75517386d7db0bcd3ee46a69b..9a85350d0b8538dc817da77cbdb5bafaa6e592ef 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 @@ -21699,7 +21596,7 @@ index fd8f191bab6d6b6413d1914e31c54eee86d65cb7..05db3f89babd88eaf3c360dba39cd2ed SET_AND_EXPOSE_TO_BUILD(HAVE_OS_DARK_MODE_SUPPORT 1) diff --git a/Source/cmake/OptionsWPE.cmake b/Source/cmake/OptionsWPE.cmake -index 7974d2c1a072ac0c9ba747652c2b04227b6de459..590a576d20f3d1a1950ad6d77ab7ba951ad6e044 100644 +index b755b0150beb8614c8ca97f654a4e2b8fc5f8645..8b4d8589c35c6c73ad69ac3d2e0b3ba0dd0b6275 100644 --- a/Source/cmake/OptionsWPE.cmake +++ b/Source/cmake/OptionsWPE.cmake @@ -9,8 +9,13 @@ if (${CMAKE_VERSION} VERSION_LESS "3.20" AND NOT ${CMAKE_GENERATOR} STREQUAL "Ni @@ -22476,10 +22373,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 4350cf03169d8533c1e45e460cbe5e68747cce09..43d83bf4def8f970fc7cc9c5b34aa6ca708b2f41 100644 +index 26e188329801f1181b5e67955a79e27fcfabdce5..c332968530027587087b0fa84b658e712668e48f 100644 --- a/Tools/WebKitTestRunner/TestController.cpp +++ b/Tools/WebKitTestRunner/TestController.cpp -@@ -962,6 +962,7 @@ void TestController::createWebViewWithOptions(const TestOptions& options) +@@ -969,6 +969,7 @@ void TestController::createWebViewWithOptions(const TestOptions& options) 0, // requestStorageAccessConfirm shouldAllowDeviceOrientationAndMotionAccess, runWebAuthenticationPanel, @@ -22488,10 +22385,10 @@ index 4350cf03169d8533c1e45e460cbe5e68747cce09..43d83bf4def8f970fc7cc9c5b34aa6ca decidePolicyForMediaKeySystemPermissionRequest, nullptr, // requestWebAuthenticationNoGesture diff --git a/Tools/WebKitTestRunner/mac/EventSenderProxy.mm b/Tools/WebKitTestRunner/mac/EventSenderProxy.mm -index f55daaf5b3e5ee62c40ab0f68059e9da826d7b05..cb1350f95f204a7e90217850d7d5bc82302f61a4 100644 +index fd94bd470a356591a88212836717113864184127..2a04ca6026fd23222fdf00517e564576fb250f79 100644 --- a/Tools/WebKitTestRunner/mac/EventSenderProxy.mm +++ b/Tools/WebKitTestRunner/mac/EventSenderProxy.mm -@@ -897,4 +897,51 @@ void EventSenderProxy::scaleGestureEnd(double scale) +@@ -906,4 +906,51 @@ void EventSenderProxy::scaleGestureEnd(double scale) #endif // ENABLE(MAC_GESTURE_EVENTS) @@ -22588,10 +22485,10 @@ index 92e312b9ce6383eb6b73296e70a3c9e996f55f2c..b3e968773a1919c3edadbb0a543ea056 # These are dependencies necessary for running tests. cups-daemon diff --git a/Tools/jhbuild/jhbuild-minimal.modules b/Tools/jhbuild/jhbuild-minimal.modules -index c004dfadb3cafe873011d6e003e47a422f8db620..35594ed226377c96a7e18cdfb38ea17261ba65af 100644 +index 53d0d024d0f7af63b29234063584724eac89aa03..6d9a2b939679de7748b790e0b79939240c8c9295 100644 --- a/Tools/jhbuild/jhbuild-minimal.modules +++ b/Tools/jhbuild/jhbuild-minimal.modules -@@ -22,7 +22,6 @@ +@@ -25,7 +25,6 @@ @@ -22617,15 +22514,6 @@ index 879d19af24deecab1d55b97e4141ab1be753d8ce..5b28580d8bde8a346051a82b2c047bea return 1; } -diff --git a/Tools/wpe/backends/HeadlessViewBackend.cpp b/Tools/wpe/backends/HeadlessViewBackend.cpp -index f648e718b51dcc4afe433c812956ea8960232b3c..b849dd178d0d463c0a8afff9bfe0b7aacb74fa67 100644 ---- a/Tools/wpe/backends/HeadlessViewBackend.cpp -+++ b/Tools/wpe/backends/HeadlessViewBackend.cpp -@@ -52,3 +52,4 @@ void HeadlessViewBackend::dispatchFullscreenEvent() - #endif - - } // namespace WPEToolingBackends -+ 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