diff --git a/.github/actions/run-test/action.yml b/.github/actions/run-test/action.yml index 83d0ef901b..c193515c45 100644 --- a/.github/actions/run-test/action.yml +++ b/.github/actions/run-test/action.yml @@ -36,14 +36,23 @@ runs: with: node-version: ${{ inputs.node-version }} - uses: ./.github/actions/enable-microphone-access - - run: npm ci + - run: | + echo "::group::npm ci" + npm ci + echo "::endgroup::" shell: bash env: DEBUG: pw:install PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: '1' - - run: npm run build + - run: | + echo "::group::npm run build" + npm run build + echo "::endgroup::" shell: bash - - run: npx playwright install --with-deps ${{ inputs.browsers-to-install }} + - run: | + echo "::group::npx playwright install --with-deps" + npx playwright install --with-deps ${{ inputs.browsers-to-install }} + echo "::endgroup::" shell: bash - name: Run tests if: inputs.shell == 'bash' @@ -69,11 +78,15 @@ runs: client-id: ${{ inputs.flakiness-client-id }} tenant-id: ${{ inputs.flakiness-tenant-id }} subscription-id: ${{ inputs.flakiness-subscription-id }} - - run: ./utils/upload_flakiness_dashboard.sh ./test-results/report.json + - run: | + echo "::group::./utils/upload_flakiness_dashboard.sh" + ./utils/upload_flakiness_dashboard.sh ./test-results/report.json + echo "::endgroup::" if: ${{ !cancelled() }} shell: bash - name: Upload blob report - if: ${{ !cancelled() }} + # We only merge reports for PRs as per .github/workflows/create_test_report.yml. + if: ${{ !cancelled() && github.event_name == 'pull_request' }} uses: ./.github/actions/upload-blob-report with: report_dir: blob-report diff --git a/.github/workflows/create_test_report.yml b/.github/workflows/create_test_report.yml index 8ae54609e4..9d382f1ee6 100644 --- a/.github/workflows/create_test_report.yml +++ b/.github/workflows/create_test_report.yml @@ -1,7 +1,7 @@ name: Publish Test Results on: workflow_run: - workflows: ["tests 1", "tests 2"] + workflows: ["tests 1", "tests 2", "tests others"] types: - completed jobs: diff --git a/.github/workflows/tests_electron.yml b/.github/workflows/tests_electron.yml deleted file mode 100644 index 604c2e0e2c..0000000000 --- a/.github/workflows/tests_electron.yml +++ /dev/null @@ -1,42 +0,0 @@ -name: "electron" - -on: - push: - branches: - - main - - release-* - pull_request: - paths-ignore: - - 'browser_patches/**' - - 'docs/**' - types: [ labeled ] - branches: - - main - - release-* - -env: - # Force terminal colors. @see https://www.npmjs.com/package/colors - FORCE_COLOR: 1 - -jobs: - test_electron: - name: ${{ matrix.os }} - environment: ${{ github.event_name == 'push' && 'allow-uploading-flakiness-results' || null }} - strategy: - fail-fast: false - matrix: - os: [ubuntu-latest, macos-latest, windows-latest] - permissions: - id-token: write # This is required for OIDC login (azure/login) to succeed - contents: read # This is required for actions/checkout to succeed - runs-on: ${{ matrix.os }} - steps: - - uses: actions/checkout@v4 - - uses: ./.github/actions/run-test - with: - browsers-to-install: chromium - command: npm run etest - bot-name: "electron-${{ matrix.os }}" - flakiness-client-id: ${{ secrets.AZURE_FLAKINESS_DASHBOARD_CLIENT_ID }} - flakiness-tenant-id: ${{ secrets.AZURE_FLAKINESS_DASHBOARD_TENANT_ID }} - flakiness-subscription-id: ${{ secrets.AZURE_FLAKINESS_DASHBOARD_SUBSCRIPTION_ID }} diff --git a/.github/workflows/tests_others.yml b/.github/workflows/tests_others.yml new file mode 100644 index 0000000000..783f3fe2ff --- /dev/null +++ b/.github/workflows/tests_others.yml @@ -0,0 +1,161 @@ +name: tests others + +on: + push: + branches: + - main + - release-* + pull_request: + paths-ignore: + - 'browser_patches/**' + - 'docs/**' + types: [ labeled ] + branches: + - main + - release-* + +env: + FORCE_COLOR: 1 + ELECTRON_SKIP_BINARY_DOWNLOAD: 1 + +jobs: + test_stress: + name: Stress - ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + # Stick with macos-latest-large for now which is Intel-based until + # https://github.com/microsoft/playwright/issues/30705 is fixed. + os: [ubuntu-latest, macos-latest-large, windows-latest] + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: 20 + - run: npm ci + - run: npm run build + - run: npx playwright install --with-deps + - run: npm run stest contexts -- --project=chromium + if: ${{ !cancelled() }} + - run: npm run stest browsers -- --project=chromium + if: ${{ !cancelled() }} + - run: npm run stest frames -- --project=chromium + if: ${{ !cancelled() }} + - run: npm run stest contexts -- --project=webkit + if: ${{ !cancelled() }} + - run: npm run stest browsers -- --project=webkit + if: ${{ !cancelled() }} + - run: npm run stest frames -- --project=webkit + if: ${{ !cancelled() }} + - run: npm run stest contexts -- --project=firefox + if: ${{ !cancelled() }} + - run: npm run stest browsers -- --project=firefox + if: ${{ !cancelled() }} + - run: npm run stest frames -- --project=firefox + if: ${{ !cancelled() }} + - run: npm run stest heap -- --project=chromium + if: ${{ !cancelled() }} + + test_webview2: + name: WebView2 + environment: ${{ github.event_name == 'push' && 'allow-uploading-flakiness-results' || null }} + runs-on: windows-2022 + permissions: + id-token: write # This is required for OIDC login (azure/login) to succeed + contents: read # This is required for actions/checkout to succeed + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-dotnet@v3 + with: + dotnet-version: '8.0.x' + - run: dotnet build + working-directory: tests/webview2/webview2-app/ + - name: Update to Evergreen WebView2 Runtime + shell: pwsh + run: | + # See here: https://developer.microsoft.com/en-us/microsoft-edge/webview2/ + Invoke-WebRequest -Uri 'https://go.microsoft.com/fwlink/p/?LinkId=2124703' -OutFile 'setup.exe' + Start-Process -FilePath setup.exe -Verb RunAs -Wait + - uses: ./.github/actions/run-test + with: + node-version: 20 + browsers-to-install: chromium + command: npm run webview2test + bot-name: "webview2-chromium-windows" + flakiness-client-id: ${{ secrets.AZURE_FLAKINESS_DASHBOARD_CLIENT_ID }} + flakiness-tenant-id: ${{ secrets.AZURE_FLAKINESS_DASHBOARD_TENANT_ID }} + flakiness-subscription-id: ${{ secrets.AZURE_FLAKINESS_DASHBOARD_SUBSCRIPTION_ID }} + + test_clock_frozen_time_linux: + name: time library - ${{ matrix.clock }} + environment: ${{ github.event_name == 'push' && 'allow-uploading-flakiness-results' || null }} + permissions: + id-token: write # This is required for OIDC login (azure/login) to succeed + contents: read # This is required for actions/checkout to succeed + strategy: + fail-fast: false + matrix: + clock: [frozen, realtime] + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@v4 + - uses: ./.github/actions/run-test + with: + node-version: 20 + browsers-to-install: chromium + command: npm run test -- --project=chromium-* + bot-name: "${{ matrix.clock }}-time-library-chromium-linux" + flakiness-client-id: ${{ secrets.AZURE_FLAKINESS_DASHBOARD_CLIENT_ID }} + flakiness-tenant-id: ${{ secrets.AZURE_FLAKINESS_DASHBOARD_TENANT_ID }} + flakiness-subscription-id: ${{ secrets.AZURE_FLAKINESS_DASHBOARD_SUBSCRIPTION_ID }} + env: + PW_CLOCK: ${{ matrix.clock }} + + test_clock_frozen_time_test_runner: + name: time test runner - ${{ matrix.clock }} + environment: ${{ github.event_name == 'push' && 'allow-uploading-flakiness-results' || null }} + runs-on: ubuntu-22.04 + permissions: + id-token: write # This is required for OIDC login (azure/login) to succeed + contents: read # This is required for actions/checkout to succeed + strategy: + fail-fast: false + matrix: + clock: [frozen, realtime] + steps: + - uses: actions/checkout@v4 + - uses: ./.github/actions/run-test + with: + node-version: 20 + command: npm run ttest + bot-name: "${{ matrix.clock }}-time-runner-chromium-linux" + flakiness-client-id: ${{ secrets.AZURE_FLAKINESS_DASHBOARD_CLIENT_ID }} + flakiness-tenant-id: ${{ secrets.AZURE_FLAKINESS_DASHBOARD_TENANT_ID }} + flakiness-subscription-id: ${{ secrets.AZURE_FLAKINESS_DASHBOARD_SUBSCRIPTION_ID }} + env: + PW_CLOCK: ${{ matrix.clock }} + + test_electron: + name: Electron - ${{ matrix.os }} + environment: ${{ github.event_name == 'push' && 'allow-uploading-flakiness-results' || null }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + permissions: + id-token: write # This is required for OIDC login (azure/login) to succeed + contents: read # This is required for actions/checkout to succeed + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v4 + - uses: ./.github/actions/run-test + with: + browsers-to-install: chromium + command: npm run etest + bot-name: "electron-${{ matrix.os }}" + flakiness-client-id: ${{ secrets.AZURE_FLAKINESS_DASHBOARD_CLIENT_ID }} + flakiness-tenant-id: ${{ secrets.AZURE_FLAKINESS_DASHBOARD_TENANT_ID }} + flakiness-subscription-id: ${{ secrets.AZURE_FLAKINESS_DASHBOARD_SUBSCRIPTION_ID }} + env: + ELECTRON_SKIP_BINARY_DOWNLOAD: diff --git a/.github/workflows/tests_secondary.yml b/.github/workflows/tests_secondary.yml index 9fd407d4dc..fd5458fb89 100644 --- a/.github/workflows/tests_secondary.yml +++ b/.github/workflows/tests_secondary.yml @@ -31,7 +31,7 @@ jobs: fail-fast: false matrix: browser: [chromium, firefox, webkit] - os: [ubuntu-20.04] + os: [ubuntu-20.04, ubuntu-24.04] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 @@ -116,7 +116,7 @@ jobs: fail-fast: false matrix: browser: [chromium, firefox, webkit] - os: [ubuntu-20.04, ubuntu-22.04, macos-14, windows-latest] + os: [ubuntu-20.04, ubuntu-22.04, ubuntu-24.04, macos-14, windows-latest] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 @@ -307,7 +307,9 @@ jobs: firefox_beta_mac: name: "Firefox Beta (Mac)" environment: ${{ github.event_name == 'push' && 'allow-uploading-flakiness-results' || null }} - runs-on: macos-latest + # Stick with macos-latest-large for now which is Intel-based until + # https://github.com/microsoft/playwright/issues/30705 is fixed. + runs-on: macos-latest-large steps: - uses: actions/checkout@v4 - uses: ./.github/actions/run-test diff --git a/.github/workflows/tests_stress.yml b/.github/workflows/tests_stress.yml deleted file mode 100644 index 6001f04567..0000000000 --- a/.github/workflows/tests_stress.yml +++ /dev/null @@ -1,56 +0,0 @@ -name: "stress" - -on: - push: - branches: - - main - - release-* - pull_request: - paths-ignore: - - 'browser_patches/**' - - 'docs/**' - types: [ labeled ] - branches: - - main - - release-* - -env: - FORCE_COLOR: 1 - ELECTRON_SKIP_BINARY_DOWNLOAD: 1 - -jobs: - test_components: - name: ${{ matrix.os }} - strategy: - fail-fast: false - matrix: - os: [ubuntu-latest, macos-latest, windows-latest] - runs-on: ${{ matrix.os }} - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: 20 - - run: npm ci - - run: npm run build - - run: npx playwright install --with-deps - - run: npm run stest contexts -- --project=chromium - if: ${{ !cancelled() }} - - run: npm run stest browsers -- --project=chromium - if: ${{ !cancelled() }} - - run: npm run stest frames -- --project=chromium - if: ${{ !cancelled() }} - - run: npm run stest contexts -- --project=webkit - if: ${{ !cancelled() }} - - run: npm run stest browsers -- --project=webkit - if: ${{ !cancelled() }} - - run: npm run stest frames -- --project=webkit - if: ${{ !cancelled() }} - - run: npm run stest contexts -- --project=firefox - if: ${{ !cancelled() }} - - run: npm run stest browsers -- --project=firefox - if: ${{ !cancelled() }} - - run: npm run stest frames -- --project=firefox - if: ${{ !cancelled() }} - - run: npm run stest heap -- --project=chromium - if: ${{ !cancelled() }} diff --git a/.github/workflows/tests_webview2.yml b/.github/workflows/tests_webview2.yml deleted file mode 100644 index e894c2dc78..0000000000 --- a/.github/workflows/tests_webview2.yml +++ /dev/null @@ -1,60 +0,0 @@ -name: "WebView2 Tests" - -on: - push: - branches: - - main - - release-* - pull_request: - paths-ignore: - - 'browser_patches/**' - - 'docs/**' - types: [ labeled ] - branches: - - main - - release-* - -env: - # Force terminal colors. @see https://www.npmjs.com/package/colors - FORCE_COLOR: 1 - ELECTRON_SKIP_BINARY_DOWNLOAD: 1 - -jobs: - test_webview2: - name: WebView2 - environment: ${{ github.event_name == 'push' && 'allow-uploading-flakiness-results' || null }} - runs-on: windows-2022 - permissions: - id-token: write # This is required for OIDC login (azure/login) to succeed - contents: read # This is required for actions/checkout to succeed - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: 18 - - uses: actions/setup-dotnet@v3 - with: - dotnet-version: '8.0.x' - - run: npm ci - env: - PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1 - - run: npm run build - - run: dotnet build - working-directory: tests/webview2/webview2-app/ - - name: Update to Evergreen WebView2 Runtime - shell: pwsh - run: | - # See here: https://developer.microsoft.com/en-us/microsoft-edge/webview2/ - Invoke-WebRequest -Uri 'https://go.microsoft.com/fwlink/p/?LinkId=2124703' -OutFile 'setup.exe' - Start-Process -FilePath setup.exe -Verb RunAs -Wait - - run: npm run webview2test - - name: Azure Login - uses: azure/login@v2 - if: ${{ !cancelled() && github.event_name == 'push' && github.repository == 'microsoft/playwright' }} - with: - client-id: ${{ secrets.AZURE_FLAKINESS_DASHBOARD_CLIENT_ID }} - tenant-id: ${{ secrets.AZURE_FLAKINESS_DASHBOARD_TENANT_ID }} - subscription-id: ${{ secrets.AZURE_FLAKINESS_DASHBOARD_SUBSCRIPTION_ID }} - - run: ./utils/upload_flakiness_dashboard.sh ./test-results/report.json - if: ${{ !cancelled() }} - shell: bash diff --git a/README.md b/README.md index 740f3a7055..e225e4a9ce 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # 🎭 Playwright -[![npm version](https://img.shields.io/npm/v/playwright.svg)](https://www.npmjs.com/package/playwright) [![Chromium version](https://img.shields.io/badge/chromium-126.0.6478.26-blue.svg?logo=google-chrome)](https://www.chromium.org/Home) [![Firefox version](https://img.shields.io/badge/firefox-126.0-blue.svg?logo=firefoxbrowser)](https://www.mozilla.org/en-US/firefox/new/) [![WebKit version](https://img.shields.io/badge/webkit-17.4-blue.svg?logo=safari)](https://webkit.org/) +[![npm version](https://img.shields.io/npm/v/playwright.svg)](https://www.npmjs.com/package/playwright) [![Chromium version](https://img.shields.io/badge/chromium-127.0.6533.26-blue.svg?logo=google-chrome)](https://www.chromium.org/Home) [![Firefox version](https://img.shields.io/badge/firefox-127.0-blue.svg?logo=firefoxbrowser)](https://www.mozilla.org/en-US/firefox/new/) [![WebKit version](https://img.shields.io/badge/webkit-17.4-blue.svg?logo=safari)](https://webkit.org/) ## [Documentation](https://playwright.dev) | [API reference](https://playwright.dev/docs/api/class-playwright) @@ -8,9 +8,9 @@ Playwright is a framework for Web Testing and Automation. It allows testing [Chr | | Linux | macOS | Windows | | :--- | :---: | :---: | :---: | -| Chromium 126.0.6478.26 | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| Chromium 127.0.6533.26 | :white_check_mark: | :white_check_mark: | :white_check_mark: | | WebKit 17.4 | :white_check_mark: | :white_check_mark: | :white_check_mark: | -| Firefox 126.0 | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| Firefox 127.0 | :white_check_mark: | :white_check_mark: | :white_check_mark: | Headless execution is supported for all browsers on all platforms. Check out [system requirements](https://playwright.dev/docs/intro#system-requirements) for details. diff --git a/browser_patches/firefox/UPSTREAM_CONFIG.sh b/browser_patches/firefox/UPSTREAM_CONFIG.sh index b13f5e0fa7..10889141a7 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="f8704c84a751716bad093b9bdc482db53fe5b3ea" +BASE_REVISION="bd7e0ac24a6fb1cddde3e45ea191b7abcc90cf56" diff --git a/browser_patches/firefox/juggler/NetworkObserver.js b/browser_patches/firefox/juggler/NetworkObserver.js index 0ac5064909..8eb69d8133 100644 --- a/browser_patches/firefox/juggler/NetworkObserver.js +++ b/browser_patches/firefox/juggler/NetworkObserver.js @@ -146,6 +146,7 @@ class NetworkRequest { this._expectingInterception = false; this._expectingResumedRequest = undefined; // { method, headers, postData } this._sentOnResponse = false; + this._fulfilled = false; if (this._pageNetwork) appendExtraHTTPHeaders(httpChannel, this._pageNetwork.combinedExtraHTTPHeaders()); @@ -194,6 +195,7 @@ class NetworkRequest { // Public interception API. fulfill(status, statusText, headers, base64body) { + this._fulfilled = true; this._interceptedChannel.synthesizeStatus(status, statusText); for (const header of headers) { this._interceptedChannel.synthesizeHeader(header.name, header.value); @@ -801,7 +803,8 @@ class ResponseStorage { return; } let encodings = []; - if ((request.httpChannel instanceof Ci.nsIEncodedChannel) && request.httpChannel.contentEncodings && !request.httpChannel.applyConversion) { + // Note: fulfilled request comes with decoded body right away. + if ((request.httpChannel instanceof Ci.nsIEncodedChannel) && request.httpChannel.contentEncodings && !request.httpChannel.applyConversion && !request._fulfilled) { const encodingHeader = request.httpChannel.getResponseHeader("Content-Encoding"); encodings = encodingHeader.split(/\s*\t*,\s*\t*/); } diff --git a/browser_patches/firefox/juggler/TargetRegistry.js b/browser_patches/firefox/juggler/TargetRegistry.js index 25c5eb562e..ea7b2afa4d 100644 --- a/browser_patches/firefox/juggler/TargetRegistry.js +++ b/browser_patches/firefox/juggler/TargetRegistry.js @@ -355,6 +355,7 @@ class PageTarget { this._screencastRecordingInfo = undefined; this._dialogs = new Map(); this.forcedColors = 'no-override'; + this.disableCache = false; this.mediumOverride = ''; this.crossProcessCookie = { initScripts: [], @@ -461,12 +462,26 @@ class PageTarget { this.updateReducedMotionOverride(browsingContext); this.updateForcedColorsOverride(browsingContext); this.updateForceOffline(browsingContext); + this.updateCacheDisabled(browsingContext); } updateForceOffline(browsingContext = undefined) { (browsingContext || this._linkedBrowser.browsingContext).forceOffline = this._browserContext.forceOffline; } + setCacheDisabled(disabled) { + this.disableCache = disabled; + this.updateCacheDisabled(); + } + + updateCacheDisabled(browsingContext = this._linkedBrowser.browsingContext) { + const enableFlags = Ci.nsIRequest.LOAD_NORMAL; + const disableFlags = Ci.nsIRequest.LOAD_BYPASS_CACHE | + Ci.nsIRequest.INHIBIT_CACHING; + + browsingContext.defaultLoadFlags = (this._browserContext.disableCache || this.disableCache) ? disableFlags : enableFlags; + } + updateTouchOverride(browsingContext = undefined) { (browsingContext || this._linkedBrowser.browsingContext).touchEventsOverride = this._browserContext.touchOverride ? 'enabled' : 'none'; } @@ -837,6 +852,7 @@ class BrowserContext { this.defaultPlatform = null; this.touchOverride = false; this.forceOffline = false; + this.disableCache = false; this.colorScheme = 'none'; this.forcedColors = 'no-override'; this.reducedMotion = 'none'; @@ -938,6 +954,12 @@ class BrowserContext { page.updateForceOffline(); } + setCacheDisabled(disabled) { + this.disableCache = disabled; + for (const page of this.pages) + page.updateCacheDisabled(); + } + async setDefaultViewport(viewport) { this.defaultViewportSize = viewport ? viewport.viewportSize : undefined; this.deviceScaleFactor = viewport ? viewport.deviceScaleFactor : undefined; diff --git a/browser_patches/firefox/juggler/content/PageAgent.js b/browser_patches/firefox/juggler/content/PageAgent.js index e1aa790c4b..6aee921e87 100644 --- a/browser_patches/firefox/juggler/content/PageAgent.js +++ b/browser_patches/firefox/juggler/content/PageAgent.js @@ -152,7 +152,6 @@ class PageAgent { getFullAXTree: this._getFullAXTree.bind(this), insertText: this._insertText.bind(this), scrollIntoViewIfNeeded: this._scrollIntoViewIfNeeded.bind(this), - setCacheDisabled: this._setCacheDisabled.bind(this), setFileInputFiles: this._setFileInputFiles.bind(this), evaluate: this._runtime.evaluate.bind(this._runtime), callFunction: this._runtime.callFunction.bind(this._runtime), @@ -162,15 +161,6 @@ class PageAgent { ]; } - _setCacheDisabled({cacheDisabled}) { - const enable = Ci.nsIRequest.LOAD_NORMAL; - const disable = Ci.nsIRequest.LOAD_BYPASS_CACHE | - Ci.nsIRequest.INHIBIT_CACHING; - - const docShell = this._frameTree.mainFrame().docShell(); - docShell.defaultLoadFlags = cacheDisabled ? disable : enable; - } - _emitAllEvents(frame) { this._browserPage.emit('pageEventFired', { frameId: frame.id(), @@ -519,71 +509,16 @@ class PageAgent { false /* aIgnoreRootScrollFrame */, true /* aFlushLayout */); - const {defaultPrevented: startPrevented} = await this._dispatchTouchEvent({ + await this._dispatchTouchEvent({ type: 'touchstart', modifiers, touchPoints: [{x, y}] }); - const {defaultPrevented: endPrevented} = await this._dispatchTouchEvent({ + await this._dispatchTouchEvent({ type: 'touchend', modifiers, touchPoints: [{x, y}] }); - if (startPrevented || endPrevented) - return; - - const frame = this._frameTree.mainFrame(); - const winUtils = frame.domWindow().windowUtils; - winUtils.jugglerSendMouseEvent( - 'mousemove', - x, - y, - 0 /*button*/, - 0 /*clickCount*/, - modifiers, - false /*aIgnoreRootScrollFrame*/, - 0.0 /*pressure*/, - 5 /*inputSource*/, - true /*isDOMEventSynthesized*/, - false /*isWidgetEventSynthesized*/, - 0 /*buttons*/, - winUtils.DEFAULT_MOUSE_POINTER_ID /* pointerIdentifier */, - true /*disablePointerEvent*/ - ); - - winUtils.jugglerSendMouseEvent( - 'mousedown', - x, - y, - 0 /*button*/, - 1 /*clickCount*/, - modifiers, - false /*aIgnoreRootScrollFrame*/, - 0.0 /*pressure*/, - 5 /*inputSource*/, - true /*isDOMEventSynthesized*/, - false /*isWidgetEventSynthesized*/, - 1 /*buttons*/, - winUtils.DEFAULT_MOUSE_POINTER_ID /*pointerIdentifier*/, - true /*disablePointerEvent*/, - ); - - winUtils.jugglerSendMouseEvent( - 'mouseup', - x, - y, - 0 /*button*/, - 1 /*clickCount*/, - modifiers, - false /*aIgnoreRootScrollFrame*/, - 0.0 /*pressure*/, - 5 /*inputSource*/, - true /*isDOMEventSynthesized*/, - false /*isWidgetEventSynthesized*/, - 0 /*buttons*/, - winUtils.DEFAULT_MOUSE_POINTER_ID /*pointerIdentifier*/, - true /*disablePointerEvent*/, - ); } async _dispatchDragEvent({type, x, y, modifiers}) { diff --git a/browser_patches/firefox/juggler/protocol/BrowserHandler.js b/browser_patches/firefox/juggler/protocol/BrowserHandler.js index ba70002c3b..7de276d017 100644 --- a/browser_patches/firefox/juggler/protocol/BrowserHandler.js +++ b/browser_patches/firefox/juggler/protocol/BrowserHandler.js @@ -186,6 +186,10 @@ class BrowserHandler { this._targetRegistry.browserContextForId(browserContextId).requestInterceptionEnabled = enabled; } + ['Browser.setCacheDisabled']({browserContextId, cacheDisabled}) { + this._targetRegistry.browserContextForId(browserContextId).setCacheDisabled(cacheDisabled); + } + ['Browser.setIgnoreHTTPSErrors']({browserContextId, ignoreHTTPSErrors}) { this._targetRegistry.browserContextForId(browserContextId).setIgnoreHTTPSErrors(nullToUndefined(ignoreHTTPSErrors)); } diff --git a/browser_patches/firefox/juggler/protocol/PageHandler.js b/browser_patches/firefox/juggler/protocol/PageHandler.js index a893e1593b..8fa9a06361 100644 --- a/browser_patches/firefox/juggler/protocol/PageHandler.js +++ b/browser_patches/firefox/juggler/protocol/PageHandler.js @@ -302,8 +302,8 @@ class PageHandler { await this._pageTarget.activateAndRun(() => {}); } - async ['Page.setCacheDisabled'](options) { - return await this._contentPage.send('setCacheDisabled', options); + async ['Page.setCacheDisabled']({cacheDisabled}) { + return await this._pageTarget.setCacheDisabled(cacheDisabled); } async ['Page.addBinding']({ worldName, name, script }) { diff --git a/browser_patches/firefox/juggler/protocol/Protocol.js b/browser_patches/firefox/juggler/protocol/Protocol.js index 5cd9e84330..6c9b700f05 100644 --- a/browser_patches/firefox/juggler/protocol/Protocol.js +++ b/browser_patches/firefox/juggler/protocol/Protocol.js @@ -322,6 +322,12 @@ const Browser = { enabled: t.Boolean, }, }, + 'setCacheDisabled': { + params: { + browserContextId: t.Optional(t.String), + cacheDisabled: t.Boolean, + }, + }, 'setGeolocationOverride': { params: { browserContextId: t.Optional(t.String), diff --git a/browser_patches/firefox/patches/bootstrap.diff b/browser_patches/firefox/patches/bootstrap.diff index 9de655e886..6291e775e6 100644 --- a/browser_patches/firefox/patches/bootstrap.diff +++ b/browser_patches/firefox/patches/bootstrap.diff @@ -57,7 +57,7 @@ index 8e9bf2b413585b5a3db9370eee5d57fb6c6716ed..5a3b194b54e3813c89989f13a214c989 * Return XPCOM wrapper for the internal accessible. */ diff --git a/browser/app/winlauncher/LauncherProcessWin.cpp b/browser/app/winlauncher/LauncherProcessWin.cpp -index b40e0fceb567c0d217adf284e13f434e49cc8467..2c4e6d5fbf8da40954ad6a5b15e412493e43b14e 100644 +index 81d4ee91e9383693d794dbf68184a80b49b582c6..1a07e3511f73199fe0b248412d01d7b8a3744a66 100644 --- a/browser/app/winlauncher/LauncherProcessWin.cpp +++ b/browser/app/winlauncher/LauncherProcessWin.cpp @@ -22,6 +22,7 @@ @@ -68,7 +68,7 @@ index b40e0fceb567c0d217adf284e13f434e49cc8467..2c4e6d5fbf8da40954ad6a5b15e41249 #include #include -@@ -421,8 +422,18 @@ Maybe LauncherMain(int& argc, wchar_t* argv[], +@@ -425,8 +426,18 @@ Maybe LauncherMain(int& argc, wchar_t* argv[], HANDLE stdHandles[] = {::GetStdHandle(STD_INPUT_HANDLE), ::GetStdHandle(STD_OUTPUT_HANDLE), ::GetStdHandle(STD_ERROR_HANDLE)}; @@ -106,10 +106,10 @@ index f6d425f36a965f03ac82dbe3ab6cde06f12751ac..d60999ab2658b1e1e5f07a8aee530451 browser/chrome/browser/search-extensions/amazon/favicon.ico browser/chrome/browser/search-extensions/amazondotcn/favicon.ico diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in -index 4068c0c165fcebd0a72f4d780bc0cbd680fe7a9c..fec7f8505d22485fa6ad4193d59387f493bd1ef8 100644 +index 1b87a9ab4aec939acac1da54a2b6670cc581fe86..a638dbe8e2f260d8be550fa8eb5bf6f6c2c31080 100644 --- a/browser/installer/package-manifest.in +++ b/browser/installer/package-manifest.in -@@ -197,6 +197,9 @@ +@@ -185,6 +185,9 @@ @RESPATH@/chrome/remote.manifest #endif @@ -120,7 +120,7 @@ index 4068c0c165fcebd0a72f4d780bc0cbd680fe7a9c..fec7f8505d22485fa6ad4193d59387f4 @RESPATH@/components/extensions-toolkit.manifest @RESPATH@/browser/components/extensions-browser.manifest diff --git a/devtools/server/socket/websocket-server.js b/devtools/server/socket/websocket-server.js -index 4236ec2921bd57c58cfffdf1cdcf509d76fca3db..23d0cb1f06bb8c7a1cac8fcec94a99fba5bfe3f2 100644 +index d49c6fbf1bf83b832795fa674f6b41f223eef812..7ea3540947ff5f61b15f27fbf4b955649f8e9ff9 100644 --- a/devtools/server/socket/websocket-server.js +++ b/devtools/server/socket/websocket-server.js @@ -134,13 +134,12 @@ function writeHttpResponse(output, response) { @@ -167,31 +167,28 @@ index 4236ec2921bd57c58cfffdf1cdcf509d76fca3db..23d0cb1f06bb8c7a1cac8fcec94a99fb const transportProvider = { setListener(upgradeListener) { diff --git a/docshell/base/BrowsingContext.cpp b/docshell/base/BrowsingContext.cpp -index 0ef5e02d2ae365b4e7b30fd49771e547c030bcfc..0787518696fc90bba3dce8c1e1c00387c3e7a6c9 100644 +index 6e1a1b689398fa6c3c73f2f243ae02c67a4476c8..9dcf71ce753cf11f295d83eb7653e940065c8e2c 100644 --- a/docshell/base/BrowsingContext.cpp +++ b/docshell/base/BrowsingContext.cpp -@@ -114,6 +114,20 @@ struct ParamTraits - mozilla::dom::PrefersColorSchemeOverride::None, - mozilla::dom::PrefersColorSchemeOverride::EndGuard_> {}; +@@ -106,8 +106,15 @@ struct ParamTraits + template <> + struct ParamTraits +- : public mozilla::dom::WebIDLEnumSerializer< +- mozilla::dom::PrefersColorSchemeOverride> {}; ++ : public mozilla::dom::WebIDLEnumSerializer {}; ++ +template <> +struct ParamTraits -+ : public ContiguousEnumSerializer< -+ mozilla::dom::PrefersReducedMotionOverride, -+ mozilla::dom::PrefersReducedMotionOverride::None, -+ mozilla::dom::PrefersReducedMotionOverride::EndGuard_> {}; ++ : public mozilla::dom::WebIDLEnumSerializer {}; + +template <> +struct ParamTraits -+ : public ContiguousEnumSerializer< -+ mozilla::dom::ForcedColorsOverride, -+ mozilla::dom::ForcedColorsOverride::None, -+ mozilla::dom::ForcedColorsOverride::EndGuard_> {}; -+ ++ : public mozilla::dom::WebIDLEnumSerializer {}; + template <> struct ParamTraits - : public ContiguousEnumSerializer< -@@ -2793,6 +2807,40 @@ void BrowsingContext::DidSet(FieldIndex, +@@ -2804,6 +2811,40 @@ void BrowsingContext::DidSet(FieldIndex, PresContextAffectingFieldChanged(); } @@ -233,10 +230,10 @@ index 0ef5e02d2ae365b4e7b30fd49771e547c030bcfc..0787518696fc90bba3dce8c1e1c00387 nsString&& aOldValue) { MOZ_ASSERT(IsTop()); diff --git a/docshell/base/BrowsingContext.h b/docshell/base/BrowsingContext.h -index 7554128cf49ce929c973aeddf5f50ede01829c28..81ae7ec9523b944654c048af6a9f6844799eb4f3 100644 +index 5ec95a61e4d3af265cbe7dd9d83f6535da1d103e..f8acafe6d58c429af27a38363e06ad546dfbfddd 100644 --- a/docshell/base/BrowsingContext.h +++ b/docshell/base/BrowsingContext.h -@@ -200,10 +200,10 @@ struct EmbedderColorSchemes { +@@ -199,10 +199,10 @@ struct EmbedderColorSchemes { FIELD(GVInaudibleAutoplayRequestStatus, GVAutoplayRequestStatus) \ /* ScreenOrientation-related APIs */ \ FIELD(CurrentOrientationAngle, float) \ @@ -249,7 +246,7 @@ index 7554128cf49ce929c973aeddf5f50ede01829c28..81ae7ec9523b944654c048af6a9f6844 FIELD(EmbedderElementType, Maybe) \ FIELD(MessageManagerGroup, nsString) \ FIELD(MaxTouchPointsOverride, uint8_t) \ -@@ -241,6 +241,10 @@ struct EmbedderColorSchemes { +@@ -240,6 +240,10 @@ struct EmbedderColorSchemes { * embedder element. */ \ FIELD(EmbedderColorSchemes, EmbedderColorSchemes) \ FIELD(DisplayMode, dom::DisplayMode) \ @@ -260,7 +257,7 @@ index 7554128cf49ce929c973aeddf5f50ede01829c28..81ae7ec9523b944654c048af6a9f6844 /* The number of entries added to the session history because of this \ * browsing context. */ \ FIELD(HistoryEntryCount, uint32_t) \ -@@ -933,6 +937,14 @@ class BrowsingContext : public nsILoadContext, public nsWrapperCache { +@@ -926,6 +930,14 @@ class BrowsingContext : public nsILoadContext, public nsWrapperCache { return GetPrefersColorSchemeOverride(); } @@ -275,7 +272,7 @@ index 7554128cf49ce929c973aeddf5f50ede01829c28..81ae7ec9523b944654c048af6a9f6844 bool IsInBFCache() const; bool AllowJavascript() const { return GetAllowJavascript(); } -@@ -1097,6 +1109,23 @@ class BrowsingContext : public nsILoadContext, public nsWrapperCache { +@@ -1090,6 +1102,23 @@ class BrowsingContext : public nsILoadContext, public nsWrapperCache { void WalkPresContexts(Callback&&); void PresContextAffectingFieldChanged(); @@ -300,10 +297,10 @@ index 7554128cf49ce929c973aeddf5f50ede01829c28..81ae7ec9523b944654c048af6a9f6844 bool CanSet(FieldIndex, bool, ContentParent*) { diff --git a/docshell/base/CanonicalBrowsingContext.cpp b/docshell/base/CanonicalBrowsingContext.cpp -index d5f85b1e571a7840425164a3c7715e8c70ed5c8b..5ba7484b1e7f817b2bb21dd6b5b35c6ffe2c1ca5 100644 +index 84f2d2960a3fa642754e0c909f92d96865e39984..e91fc85fc7a7966d2d536839fab823ae88d1b4bd 100644 --- a/docshell/base/CanonicalBrowsingContext.cpp +++ b/docshell/base/CanonicalBrowsingContext.cpp -@@ -1466,6 +1466,12 @@ void CanonicalBrowsingContext::LoadURI(nsIURI* aURI, +@@ -1477,6 +1477,12 @@ void CanonicalBrowsingContext::LoadURI(nsIURI* aURI, return; } @@ -317,7 +314,7 @@ index d5f85b1e571a7840425164a3c7715e8c70ed5c8b..5ba7484b1e7f817b2bb21dd6b5b35c6f } diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp -index 0b8212fbf3f81ef6264f17fc8e84f91cde39c0f7..99d43d662978c0418231b8ea55d670f81b5618d7 100644 +index 3404597343e0d21c42c5adc2f2849888869cf75a..558f03f30672b9f0fdb68ba8d23a0d878d33643d 100644 --- a/docshell/base/nsDocShell.cpp +++ b/docshell/base/nsDocShell.cpp @@ -15,6 +15,12 @@ @@ -379,7 +376,7 @@ index 0b8212fbf3f81ef6264f17fc8e84f91cde39c0f7..99d43d662978c0418231b8ea55d670f8 mAllowAuth(mItemType == typeContent), mAllowKeywordFixup(false), mDisableMetaRefreshWhenInactive(false), -@@ -3115,6 +3132,214 @@ nsDocShell::GetMessageManager(ContentFrameMessageManager** aMessageManager) { +@@ -3101,6 +3118,214 @@ nsDocShell::GetMessageManager(ContentFrameMessageManager** aMessageManager) { return NS_OK; } @@ -594,7 +591,7 @@ index 0b8212fbf3f81ef6264f17fc8e84f91cde39c0f7..99d43d662978c0418231b8ea55d670f8 NS_IMETHODIMP nsDocShell::GetIsNavigating(bool* aOut) { *aOut = mIsNavigating; -@@ -4803,7 +5028,7 @@ nsDocShell::GetVisibility(bool* aVisibility) { +@@ -4789,7 +5014,7 @@ nsDocShell::GetVisibility(bool* aVisibility) { } void nsDocShell::ActivenessMaybeChanged() { @@ -603,7 +600,7 @@ index 0b8212fbf3f81ef6264f17fc8e84f91cde39c0f7..99d43d662978c0418231b8ea55d670f8 if (RefPtr presShell = GetPresShell()) { presShell->ActivenessMaybeChanged(); } -@@ -6722,6 +6947,10 @@ bool nsDocShell::CanSavePresentation(uint32_t aLoadType, +@@ -6711,6 +6936,10 @@ bool nsDocShell::CanSavePresentation(uint32_t aLoadType, return false; // no entry to save into } @@ -614,7 +611,7 @@ index 0b8212fbf3f81ef6264f17fc8e84f91cde39c0f7..99d43d662978c0418231b8ea55d670f8 MOZ_ASSERT(!mozilla::SessionHistoryInParent(), "mOSHE cannot be non-null with SHIP"); nsCOMPtr viewer = mOSHE->GetDocumentViewer(); -@@ -8454,6 +8683,12 @@ nsresult nsDocShell::PerformRetargeting(nsDocShellLoadState* aLoadState) { +@@ -8443,6 +8672,12 @@ nsresult nsDocShell::PerformRetargeting(nsDocShellLoadState* aLoadState) { true, // aForceNoOpener getter_AddRefs(newBC)); MOZ_ASSERT(!newBC); @@ -627,7 +624,7 @@ index 0b8212fbf3f81ef6264f17fc8e84f91cde39c0f7..99d43d662978c0418231b8ea55d670f8 return rv; } -@@ -9566,6 +9801,16 @@ nsresult nsDocShell::InternalLoad(nsDocShellLoadState* aLoadState, +@@ -9569,6 +9804,16 @@ nsresult nsDocShell::InternalLoad(nsDocShellLoadState* aLoadState, nsINetworkPredictor::PREDICT_LOAD, attrs, nullptr); nsCOMPtr req; @@ -644,7 +641,7 @@ index 0b8212fbf3f81ef6264f17fc8e84f91cde39c0f7..99d43d662978c0418231b8ea55d670f8 rv = DoURILoad(aLoadState, aCacheKey, getter_AddRefs(req)); if (NS_SUCCEEDED(rv)) { -@@ -12714,6 +12959,9 @@ class OnLinkClickEvent : public Runnable { +@@ -12732,6 +12977,9 @@ class OnLinkClickEvent : public Runnable { mHandler->OnLinkClickSync(mContent, mLoadState, mNoOpenerImplied, mTriggeringPrincipal); } @@ -654,7 +651,7 @@ index 0b8212fbf3f81ef6264f17fc8e84f91cde39c0f7..99d43d662978c0418231b8ea55d670f8 return NS_OK; } -@@ -12798,6 +13046,8 @@ nsresult nsDocShell::OnLinkClick( +@@ -12816,6 +13064,8 @@ nsresult nsDocShell::OnLinkClick( nsCOMPtr ev = new OnLinkClickEvent(this, aContent, loadState, noOpenerImplied, aIsTrusted, aTriggeringPrincipal); @@ -664,7 +661,7 @@ index 0b8212fbf3f81ef6264f17fc8e84f91cde39c0f7..99d43d662978c0418231b8ea55d670f8 } diff --git a/docshell/base/nsDocShell.h b/docshell/base/nsDocShell.h -index 9f2d9a17dc0d54be4bd09f8e04da6e85f987fe34..8ff6e67fedef0bf73297c4cfed569b8f2ced36d9 100644 +index 82ac6c9ab9dbc102a429ab0fe6cb24b8fcdf477f..f6328c25349cf39fcce973adcf908782e8721447 100644 --- a/docshell/base/nsDocShell.h +++ b/docshell/base/nsDocShell.h @@ -15,6 +15,7 @@ @@ -699,7 +696,7 @@ index 9f2d9a17dc0d54be4bd09f8e04da6e85f987fe34..8ff6e67fedef0bf73297c4cfed569b8f // Create a content viewer within this nsDocShell for the given // `WindowGlobalChild` actor. nsresult CreateDocumentViewerForActor( -@@ -1003,6 +1014,8 @@ class nsDocShell final : public nsDocLoader, +@@ -1004,6 +1015,8 @@ class nsDocShell final : public nsDocLoader, bool CSSErrorReportingEnabled() const { return mCSSErrorReportingEnabled; } @@ -708,7 +705,7 @@ index 9f2d9a17dc0d54be4bd09f8e04da6e85f987fe34..8ff6e67fedef0bf73297c4cfed569b8f // 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 -@@ -1294,6 +1307,16 @@ class nsDocShell final : public nsDocLoader, +@@ -1295,6 +1308,16 @@ class nsDocShell final : public nsDocLoader, bool mAllowDNSPrefetch : 1; bool mAllowWindowControl : 1; bool mCSSErrorReportingEnabled : 1; @@ -726,7 +723,7 @@ index 9f2d9a17dc0d54be4bd09f8e04da6e85f987fe34..8ff6e67fedef0bf73297c4cfed569b8f bool mAllowKeywordFixup : 1; bool mDisableMetaRefreshWhenInactive : 1; diff --git a/docshell/base/nsIDocShell.idl b/docshell/base/nsIDocShell.idl -index 9e79b6831a74c6de7c6a6c56d9a024d29c1c704b..db5cd5586b74ec65d788480f9c5fca93eb562c21 100644 +index 21f09a517e91644f81f5bb823f556c15cd06e51f..a68d30e0a60f03a0942ac1cd8a1f83804fdfd3e0 100644 --- a/docshell/base/nsIDocShell.idl +++ b/docshell/base/nsIDocShell.idl @@ -44,6 +44,7 @@ interface nsIURI; @@ -737,7 +734,7 @@ index 9e79b6831a74c6de7c6a6c56d9a024d29c1c704b..db5cd5586b74ec65d788480f9c5fca93 interface nsIEditor; interface nsIEditingSession; interface nsIInputStream; -@@ -767,6 +768,36 @@ interface nsIDocShell : nsIDocShellTreeItem +@@ -754,6 +755,36 @@ interface nsIDocShell : nsIDocShellTreeItem */ void synchronizeLayoutHistoryState(); @@ -775,10 +772,10 @@ index 9e79b6831a74c6de7c6a6c56d9a024d29c1c704b..db5cd5586b74ec65d788480f9c5fca93 * 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 0a2f5be08d0dcad40cd11f4b064a1287b8141e2f..a845203c6aaea8384e8835cbe005669767a1b196 100644 +index 4e9286a91e3b0f1114aa0a7aa6ff81dde615a73d..941a0c3dac71008ca760024a1e828f75f6af5182 100644 --- a/dom/base/Document.cpp +++ b/dom/base/Document.cpp -@@ -3705,6 +3705,9 @@ void Document::SendToConsole(nsCOMArray& aMessages) { +@@ -3676,6 +3676,9 @@ void Document::SendToConsole(nsCOMArray& aMessages) { } void Document::ApplySettingsFromCSP(bool aSpeculative) { @@ -788,7 +785,7 @@ index 0a2f5be08d0dcad40cd11f4b064a1287b8141e2f..a845203c6aaea8384e8835cbe0056697 nsresult rv = NS_OK; if (!aSpeculative) { // 1) apply settings from regular CSP -@@ -3762,6 +3765,11 @@ nsresult Document::InitCSP(nsIChannel* aChannel) { +@@ -3733,6 +3736,11 @@ nsresult Document::InitCSP(nsIChannel* aChannel) { MOZ_ASSERT(!mScriptGlobalObject, "CSP must be initialized before mScriptGlobalObject is set!"); @@ -800,7 +797,7 @@ index 0a2f5be08d0dcad40cd11f4b064a1287b8141e2f..a845203c6aaea8384e8835cbe0056697 // If this is a data document - no need to set CSP. if (mLoadedAsData) { return NS_OK; -@@ -4557,6 +4565,10 @@ bool Document::HasFocus(ErrorResult& rv) const { +@@ -4500,6 +4508,10 @@ bool Document::HasFocus(ErrorResult& rv) const { return false; } @@ -811,7 +808,7 @@ index 0a2f5be08d0dcad40cd11f4b064a1287b8141e2f..a845203c6aaea8384e8835cbe0056697 if (!fm->IsInActiveWindow(bc)) { return false; } -@@ -18878,6 +18890,68 @@ ColorScheme Document::PreferredColorScheme(IgnoreRFP aIgnoreRFP) const { +@@ -18849,6 +18861,66 @@ ColorScheme Document::PreferredColorScheme(IgnoreRFP aIgnoreRFP) const { return PreferenceSheet::PrefsFor(*this).mColorScheme; } @@ -837,7 +834,6 @@ index 0a2f5be08d0dcad40cd11f4b064a1287b8141e2f..a845203c6aaea8384e8835cbe0056697 + case dom::PrefersReducedMotionOverride::No_preference: + return false; + case dom::PrefersReducedMotionOverride::None: -+ case dom::PrefersReducedMotionOverride::EndGuard_: + break; + } + } @@ -866,7 +862,6 @@ index 0a2f5be08d0dcad40cd11f4b064a1287b8141e2f..a845203c6aaea8384e8835cbe0056697 + case dom::ForcedColorsOverride::None: + return false; + case dom::ForcedColorsOverride::No_override: -+ case dom::ForcedColorsOverride::EndGuard_: + break; + } + } @@ -881,10 +876,10 @@ index 0a2f5be08d0dcad40cd11f4b064a1287b8141e2f..a845203c6aaea8384e8835cbe0056697 if (!sLoadingForegroundTopLevelContentDocument) { return false; diff --git a/dom/base/Document.h b/dom/base/Document.h -index 3f8032594868b8aa1c8bec2d25b789518170eb0e..5017b426369378b892a224a88410f18e743da45f 100644 +index a52c61addffc4a2344fa06cb0bceebe6a7ca9075..b0f8d65e5341bf277e48bef3b88cb4cc384fbc49 100644 --- a/dom/base/Document.h +++ b/dom/base/Document.h -@@ -4051,6 +4051,9 @@ class Document : public nsINode, +@@ -4044,6 +4044,9 @@ class Document : public nsINode, // color-scheme meta tag. ColorScheme DefaultColorScheme() const; @@ -895,10 +890,10 @@ index 3f8032594868b8aa1c8bec2d25b789518170eb0e..5017b426369378b892a224a88410f18e static bool AutomaticStorageAccessPermissionCanBeGranted( diff --git a/dom/base/Navigator.cpp b/dom/base/Navigator.cpp -index d4b04f809228fecc3e2dbf33dac42151ffc24b11..39dfddff7404e878cd9fcc8f3b9bb734ab72d743 100644 +index 14a00b8ed85f69312a89990acbb5e0f9755bd832..4b07c28615920a95a2ba59247f8575515cac4235 100644 --- a/dom/base/Navigator.cpp +++ b/dom/base/Navigator.cpp -@@ -335,14 +335,18 @@ void Navigator::GetAppName(nsAString& aAppName) const { +@@ -338,14 +338,18 @@ void Navigator::GetAppName(nsAString& aAppName) const { * for more detail. */ /* static */ @@ -919,7 +914,7 @@ index d4b04f809228fecc3e2dbf33dac42151ffc24b11..39dfddff7404e878cd9fcc8f3b9bb734 // Split values on commas. for (nsDependentSubstring lang : -@@ -394,7 +398,13 @@ void Navigator::GetLanguage(nsAString& aLanguage) { +@@ -397,7 +401,13 @@ void Navigator::GetLanguage(nsAString& aLanguage) { } void Navigator::GetLanguages(nsTArray& aLanguages) { @@ -935,10 +930,10 @@ index d4b04f809228fecc3e2dbf33dac42151ffc24b11..39dfddff7404e878cd9fcc8f3b9bb734 // The returned value is cached by the binding code. The window listens to the // accept languages change and will clear the cache when needed. It has to diff --git a/dom/base/Navigator.h b/dom/base/Navigator.h -index 998328cfc6f36fd579e4fe26629a92a1ceefa9fa..c73e48d8dfe5a66fb9eb7f6bf49527f88cabc884 100644 +index e559dc4d6aef61b7012a27f3d6c3186a12a15319..9798a50789ce972c4d9e94419e20a5cde4cd552a 100644 --- a/dom/base/Navigator.h +++ b/dom/base/Navigator.h -@@ -216,7 +216,7 @@ class Navigator final : public nsISupports, public nsWrapperCache { +@@ -215,7 +215,7 @@ class Navigator final : public nsISupports, public nsWrapperCache { StorageManager* Storage(); @@ -948,10 +943,10 @@ index 998328cfc6f36fd579e4fe26629a92a1ceefa9fa..c73e48d8dfe5a66fb9eb7f6bf49527f8 dom::MediaCapabilities* MediaCapabilities(); dom::MediaSession* MediaSession(); diff --git a/dom/base/nsContentUtils.cpp b/dom/base/nsContentUtils.cpp -index 6d3a9f8937a7b37bf82a18362d7ee525e4e267f4..c598acdcda9d47cdd193011e8faa916988872a18 100644 +index c6f1687f73df6b1849a191ff8722dc9fc26fc3eb..9fdface27d5c9bd0c61b8af229a31be2356c46b5 100644 --- a/dom/base/nsContentUtils.cpp +++ b/dom/base/nsContentUtils.cpp -@@ -8697,7 +8697,8 @@ nsresult nsContentUtils::SendMouseEvent( +@@ -8711,7 +8711,8 @@ nsresult nsContentUtils::SendMouseEvent( bool aIgnoreRootScrollFrame, float aPressure, unsigned short aInputSourceArg, uint32_t aIdentifier, bool aToWindow, PreventDefaultResult* aPreventDefault, bool aIsDOMEventSynthesized, @@ -961,7 +956,7 @@ index 6d3a9f8937a7b37bf82a18362d7ee525e4e267f4..c598acdcda9d47cdd193011e8faa9169 nsPoint offset; nsCOMPtr widget = GetWidget(aPresShell, &offset); if (!widget) return NS_ERROR_FAILURE; -@@ -8705,6 +8706,7 @@ nsresult nsContentUtils::SendMouseEvent( +@@ -8719,6 +8720,7 @@ nsresult nsContentUtils::SendMouseEvent( EventMessage msg; Maybe exitFrom; bool contextMenuKey = false; @@ -969,7 +964,7 @@ index 6d3a9f8937a7b37bf82a18362d7ee525e4e267f4..c598acdcda9d47cdd193011e8faa9169 if (aType.EqualsLiteral("mousedown")) { msg = eMouseDown; } else if (aType.EqualsLiteral("mouseup")) { -@@ -8729,6 +8731,12 @@ nsresult nsContentUtils::SendMouseEvent( +@@ -8743,6 +8745,12 @@ nsresult nsContentUtils::SendMouseEvent( msg = eMouseHitTest; } else if (aType.EqualsLiteral("MozMouseExploreByTouch")) { msg = eMouseExploreByTouch; @@ -982,7 +977,7 @@ index 6d3a9f8937a7b37bf82a18362d7ee525e4e267f4..c598acdcda9d47cdd193011e8faa9169 } else { return NS_ERROR_FAILURE; } -@@ -8737,12 +8745,21 @@ nsresult nsContentUtils::SendMouseEvent( +@@ -8751,12 +8759,21 @@ nsresult nsContentUtils::SendMouseEvent( aInputSourceArg = MouseEvent_Binding::MOZ_SOURCE_MOUSE; } @@ -1006,7 +1001,7 @@ index 6d3a9f8937a7b37bf82a18362d7ee525e4e267f4..c598acdcda9d47cdd193011e8faa9169 event.pointerId = aIdentifier; event.mModifiers = GetWidgetModifiers(aModifiers); event.mButton = aButton; -@@ -8753,8 +8770,10 @@ nsresult nsContentUtils::SendMouseEvent( +@@ -8767,8 +8784,10 @@ nsresult nsContentUtils::SendMouseEvent( event.mPressure = aPressure; event.mInputSource = aInputSourceArg; event.mClickCount = aClickCount; @@ -1018,10 +1013,10 @@ index 6d3a9f8937a7b37bf82a18362d7ee525e4e267f4..c598acdcda9d47cdd193011e8faa9169 nsPresContext* presContext = aPresShell->GetPresContext(); if (!presContext) return NS_ERROR_FAILURE; diff --git a/dom/base/nsContentUtils.h b/dom/base/nsContentUtils.h -index db68b67c5a3e60ac214231ac82fd9f652a697858..529b49b2c6c5f693747d847bca85e93415b9159c 100644 +index 338fc097dede02a538f240ba4cc66307086c7f56..8345e47237bc40490bd17019a053cce4c3d74a91 100644 --- a/dom/base/nsContentUtils.h +++ b/dom/base/nsContentUtils.h -@@ -2958,7 +2958,8 @@ class nsContentUtils { +@@ -3055,7 +3055,8 @@ class nsContentUtils { int32_t aModifiers, bool aIgnoreRootScrollFrame, float aPressure, unsigned short aInputSourceArg, uint32_t aIdentifier, bool aToWindow, mozilla::PreventDefaultResult* aPreventDefault, @@ -1032,7 +1027,7 @@ index db68b67c5a3e60ac214231ac82fd9f652a697858..529b49b2c6c5f693747d847bca85e934 static void FirePageShowEventForFrameLoaderSwap( nsIDocShellTreeItem* aItem, diff --git a/dom/base/nsDOMWindowUtils.cpp b/dom/base/nsDOMWindowUtils.cpp -index 6c547a9fd8604ac7fd7b965be473bc4120b2fdf7..c9aa1951da7af70913f77c76bb7c68ba144adaeb 100644 +index 9bc8340b9009717e0feecd5c14ff02be07a03daf..70ea04c7f11e6ccfadf72a82ec1741fac10ef5fd 100644 --- a/dom/base/nsDOMWindowUtils.cpp +++ b/dom/base/nsDOMWindowUtils.cpp @@ -685,6 +685,26 @@ nsDOMWindowUtils::GetPresShellId(uint32_t* aPresShellId) { @@ -1110,10 +1105,10 @@ index 63968c9b7a4e418e4c0de6e7a75fa215a36a9105..decf3ea3833ccdffd49a7aded2d600f9 MOZ_CAN_RUN_SCRIPT nsresult SendTouchEventCommon( diff --git a/dom/base/nsFocusManager.cpp b/dom/base/nsFocusManager.cpp -index 60f45157cdfceb7ebf4f9a1681d0e59dc1822360..964d7cc1b847cd8ef21cef29be4fdc11168b18d8 100644 +index 5a4cf78d65eee0adcbeca33787706113eca19de7..7c8016e422ccc9e86563eaa83c9acc1dad0e5967 100644 --- a/dom/base/nsFocusManager.cpp +++ b/dom/base/nsFocusManager.cpp -@@ -1673,6 +1673,10 @@ Maybe nsFocusManager::SetFocusInner(Element* aNewContent, +@@ -1675,6 +1675,10 @@ Maybe nsFocusManager::SetFocusInner(Element* aNewContent, (GetActiveBrowsingContext() == newRootBrowsingContext); } @@ -1124,7 +1119,27 @@ index 60f45157cdfceb7ebf4f9a1681d0e59dc1822360..964d7cc1b847cd8ef21cef29be4fdc11 // Exit fullscreen if a website focuses another window if (StaticPrefs::full_screen_api_exit_on_windowRaise() && !isElementInActiveWindow && (aFlags & FLAG_RAISE)) { -@@ -2946,7 +2950,9 @@ void nsFocusManager::RaiseWindow(nsPIDOMWindowOuter* aWindow, +@@ -2242,6 +2246,7 @@ bool nsFocusManager::BlurImpl(BrowsingContext* aBrowsingContextToClear, + bool aIsLeavingDocument, bool aAdjustWidget, + bool aRemainActive, Element* aElementToFocus, + uint64_t aActionId) { ++ + LOGFOCUS(("<>", aActionId)); + + // hold a reference to the focused content, which may be null +@@ -2288,6 +2293,11 @@ bool nsFocusManager::BlurImpl(BrowsingContext* aBrowsingContextToClear, + return true; + } + ++ // Playwright: emulate focused page by never bluring when leaving document. ++ if (XRE_IsContentProcess() && aIsLeavingDocument && docShell && nsDocShell::Cast(docShell)->ShouldOverrideHasFocus()) { ++ return true; ++ } ++ + // Keep a ref to presShell since dispatching the DOM event may cause + // the document to be destroyed. + RefPtr presShell = docShell->GetPresShell(); +@@ -2947,7 +2957,9 @@ void nsFocusManager::RaiseWindow(nsPIDOMWindowOuter* aWindow, } } @@ -1136,10 +1151,10 @@ index 60f45157cdfceb7ebf4f9a1681d0e59dc1822360..964d7cc1b847cd8ef21cef29be4fdc11 // 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 a10808b95d5f7c81942d2a513f63a72c7821061e..027b9a3c87811b794816bddb90ff67bc271f7faa 100644 +index e28dcdb092b23558702377af32eece5d273d4cf3..a37ae9d6ccd978d5e84562450e7039d6a75d517b 100644 --- a/dom/base/nsGlobalWindowOuter.cpp +++ b/dom/base/nsGlobalWindowOuter.cpp -@@ -2510,10 +2510,16 @@ nsresult nsGlobalWindowOuter::SetNewDocument(Document* aDocument, +@@ -2509,10 +2509,16 @@ nsresult nsGlobalWindowOuter::SetNewDocument(Document* aDocument, }(); if (!isContentAboutBlankInChromeDocshell) { @@ -1160,7 +1175,7 @@ index a10808b95d5f7c81942d2a513f63a72c7821061e..027b9a3c87811b794816bddb90ff67bc } } -@@ -2633,6 +2639,19 @@ void nsGlobalWindowOuter::DispatchDOMWindowCreated() { +@@ -2632,6 +2638,19 @@ void nsGlobalWindowOuter::DispatchDOMWindowCreated() { } } @@ -1193,10 +1208,10 @@ index 8337a7353fb8e97372f0b57bd0fd867506a9129f..e7dedd6d26125e481e1145337a0be6ab // Outer windows only. virtual void EnsureSizeAndPositionUpToDate() override; diff --git a/dom/base/nsINode.cpp b/dom/base/nsINode.cpp -index 11ca350f483458ba11f0ee170ce38e9785e8c70f..6bb310f6e96239388b4c92bd7bdf2d698fac8139 100644 +index d5455e559639aee9328905b50f02c52e94db950b..3fbd1e0459e5391066fc6b3a4e30a841594b31bf 100644 --- a/dom/base/nsINode.cpp +++ b/dom/base/nsINode.cpp -@@ -1362,6 +1362,61 @@ void nsINode::GetBoxQuadsFromWindowOrigin(const BoxQuadOptions& aOptions, +@@ -1365,6 +1365,61 @@ void nsINode::GetBoxQuadsFromWindowOrigin(const BoxQuadOptions& aOptions, mozilla::GetBoxQuadsFromWindowOrigin(this, aOptions, aResult, aRv); } @@ -1259,10 +1274,10 @@ index 11ca350f483458ba11f0ee170ce38e9785e8c70f..6bb310f6e96239388b4c92bd7bdf2d69 DOMQuad& aQuad, const GeometryNode& aFrom, const ConvertCoordinateOptions& aOptions, CallerType aCallerType, diff --git a/dom/base/nsINode.h b/dom/base/nsINode.h -index 0ba44cb08ffffde3bf9616e7e3b1fb33317181b6..b698e309e7bf658739b3a69a1d68f657a6c84e6e 100644 +index 3a47992cc89176fe9500f7b1d5b74e4422cb9625..27e6da8498af5e4a3c37407a3a8ab592e28dc372 100644 --- a/dom/base/nsINode.h +++ b/dom/base/nsINode.h -@@ -2235,6 +2235,10 @@ class nsINode : public mozilla::dom::EventTarget { +@@ -2248,6 +2248,10 @@ class nsINode : public mozilla::dom::EventTarget { nsTArray>& aResult, ErrorResult& aRv); @@ -1302,7 +1317,7 @@ index cceb725d393d5e5f83c8f87491089c3fa1d57cc3..e906a7fb7c3fd72554613f640dcc272e static bool DumpEnabled(); diff --git a/dom/chrome-webidl/BrowsingContext.webidl b/dom/chrome-webidl/BrowsingContext.webidl -index 8600a844634eed78e0b8470eaf11144f8ebd230b..853a4c98b78092181ad15542ae48cd41e9c49a82 100644 +index d70f3e18cc8e8f749e5057297161206129871453..2f2be2a6539203d1957bfe580a06ab70a512c053 100644 --- a/dom/chrome-webidl/BrowsingContext.webidl +++ b/dom/chrome-webidl/BrowsingContext.webidl @@ -53,6 +53,24 @@ enum PrefersColorSchemeOverride { @@ -1330,7 +1345,7 @@ index 8600a844634eed78e0b8470eaf11144f8ebd230b..853a4c98b78092181ad15542ae48cd41 /** * Allowed overrides of platform/pref default behaviour for touch events. */ -@@ -205,6 +223,12 @@ interface BrowsingContext { +@@ -209,6 +227,12 @@ interface BrowsingContext { // Color-scheme simulation, for DevTools. [SetterThrows] attribute PrefersColorSchemeOverride prefersColorSchemeOverride; @@ -1443,10 +1458,10 @@ index 7e1af00d05fbafa2d828e2c7e4dcc5c82d115f5b..e85af9718d064e4d2865bc944e9d4ba1 ~Geolocation(); diff --git a/dom/html/HTMLInputElement.cpp b/dom/html/HTMLInputElement.cpp -index ae2c4af82c3827a521a79f8879a6f941ea68feca..92ea48eba6fb575ea1415d8713b49707b895561b 100644 +index d5a65a17555b7764611803f7fb298712b2c60fd7..fdee7deaf0b14e01702b902f8b73256c281e76b8 100644 --- a/dom/html/HTMLInputElement.cpp +++ b/dom/html/HTMLInputElement.cpp -@@ -58,6 +58,7 @@ +@@ -57,6 +57,7 @@ #include "mozilla/dom/Document.h" #include "mozilla/dom/HTMLDataListElement.h" #include "mozilla/dom/HTMLOptionElement.h" @@ -1454,11 +1469,12 @@ index ae2c4af82c3827a521a79f8879a6f941ea68feca..92ea48eba6fb575ea1415d8713b49707 #include "nsIFormControlFrame.h" #include "nsITextControlFrame.h" #include "nsIFrame.h" -@@ -784,6 +785,12 @@ nsresult HTMLInputElement::InitFilePicker(FilePickerType aType) { +@@ -783,6 +784,13 @@ nsresult HTMLInputElement::InitFilePicker(FilePickerType aType) { return NS_ERROR_FAILURE; } -+ nsDocShell* docShell = static_cast(win->GetDocShell()); ++ nsCOMPtr win = doc->GetWindow(); ++ nsDocShell* docShell = win ? static_cast(win->GetDocShell()) : nullptr; + if (docShell && docShell->IsFileInputInterceptionEnabled()) { + docShell->FilePickerShown(this); + return NS_OK; @@ -1468,7 +1484,7 @@ index ae2c4af82c3827a521a79f8879a6f941ea68feca..92ea48eba6fb575ea1415d8713b49707 return NS_OK; } diff --git a/dom/interfaces/base/nsIDOMWindowUtils.idl b/dom/interfaces/base/nsIDOMWindowUtils.idl -index 564b24e3f89e0ce6e683902a7fc4e1c3a6f5faac..e4264b251e580bb13aa2941b26227541c74d3371 100644 +index 6a0df1b435cee9cea3b7d7ca30d0aff0e31f8ac0..c17b24823dd873c025e407fcc635b7c678dfd8ed 100644 --- a/dom/interfaces/base/nsIDOMWindowUtils.idl +++ b/dom/interfaces/base/nsIDOMWindowUtils.idl @@ -373,6 +373,26 @@ interface nsIDOMWindowUtils : nsISupports { @@ -1499,10 +1515,10 @@ index 564b24e3f89e0ce6e683902a7fc4e1c3a6f5faac..e4264b251e580bb13aa2941b26227541 * touchstart, touchend, touchmove, and touchcancel * diff --git a/dom/ipc/BrowserChild.cpp b/dom/ipc/BrowserChild.cpp -index 830ad8579a39d262a1fd2c86479f2ddc77c01ae2..b840b68c9b5545fc974e1dafacac2e74372f4e41 100644 +index bdd10fdcb285e43778b55907ac05bfa973207e5e..d98808918ff8eccd6c51b4fbce1cce5e3745206a 100644 --- a/dom/ipc/BrowserChild.cpp +++ b/dom/ipc/BrowserChild.cpp -@@ -1651,6 +1651,21 @@ void BrowserChild::HandleRealMouseButtonEvent(const WidgetMouseEvent& aEvent, +@@ -1652,6 +1652,21 @@ void BrowserChild::HandleRealMouseButtonEvent(const WidgetMouseEvent& aEvent, if (postLayerization) { postLayerization->Register(); } @@ -1777,7 +1793,7 @@ index 3b39538e51840cd9b1685b2efd2ff2e9ec83608a..c7bf4f2d53b58bbacb22b3ebebf6f3fc return aGlobalOrNull; diff --git a/dom/security/nsCSPUtils.cpp b/dom/security/nsCSPUtils.cpp -index 50730b691b06409f47cb9172570866a7bb519abc..e5ae4f31b8f93f17943c24108a82c6370470e9f2 100644 +index 11d09909f73fee425fd0f50b384c396a52e02a36..b0e668881bcd3b850de709ebf2557ae8391b8fe8 100644 --- a/dom/security/nsCSPUtils.cpp +++ b/dom/security/nsCSPUtils.cpp @@ -22,6 +22,7 @@ @@ -1824,10 +1840,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 bcfbe33925afb97e68305394fb38e42481682540..47bc46f34a93991f112292c851c539a6bc97778f 100644 +index 02efb1205382850b41c38d5f6ee47092adcdc63e..28c8d05d0b5cc415f3d13a4588248f3844faf4f2 100644 --- a/dom/workers/RuntimeService.cpp +++ b/dom/workers/RuntimeService.cpp -@@ -985,7 +985,7 @@ void PrefLanguagesChanged(const char* /* aPrefName */, void* /* aClosure */) { +@@ -995,7 +995,7 @@ void PrefLanguagesChanged(const char* /* aPrefName */, void* /* aClosure */) { AssertIsOnMainThread(); nsTArray languages; @@ -1836,7 +1852,7 @@ index bcfbe33925afb97e68305394fb38e42481682540..47bc46f34a93991f112292c851c539a6 RuntimeService* runtime = RuntimeService::GetService(); if (runtime) { -@@ -1172,8 +1172,7 @@ bool RuntimeService::RegisterWorker(WorkerPrivate& aWorkerPrivate) { +@@ -1182,8 +1182,7 @@ bool RuntimeService::RegisterWorker(WorkerPrivate& aWorkerPrivate) { } // The navigator overridden properties should have already been read. @@ -1846,7 +1862,7 @@ index bcfbe33925afb97e68305394fb38e42481682540..47bc46f34a93991f112292c851c539a6 mNavigatorPropertiesLoaded = true; } -@@ -1772,6 +1771,13 @@ void RuntimeService::PropagateStorageAccessPermissionGranted( +@@ -1789,6 +1788,13 @@ void RuntimeService::PropagateStorageAccessPermissionGranted( } } @@ -1860,7 +1876,7 @@ index bcfbe33925afb97e68305394fb38e42481682540..47bc46f34a93991f112292c851c539a6 template void RuntimeService::BroadcastAllWorkers(const Func& aFunc) { AssertIsOnMainThread(); -@@ -2287,6 +2293,14 @@ void PropagateStorageAccessPermissionGrantedToWorkers( +@@ -2304,6 +2310,14 @@ void PropagateStorageAccessPermissionGrantedToWorkers( } } @@ -1876,10 +1892,10 @@ index bcfbe33925afb97e68305394fb38e42481682540..47bc46f34a93991f112292c851c539a6 MOZ_ASSERT(!NS_IsMainThread()); MOZ_ASSERT(aCx); diff --git a/dom/workers/RuntimeService.h b/dom/workers/RuntimeService.h -index e6deb81f357043a937d032bb4b6c38207203f4d9..ff16582af9fbf550dfb7b5639658c34199524c45 100644 +index f51076ac1480794989999d00577bc9cf1566d5f9..fe15b2e00dc8f0bf203f2af9aad86e16c996d43d 100644 --- a/dom/workers/RuntimeService.h +++ b/dom/workers/RuntimeService.h -@@ -108,6 +108,8 @@ class RuntimeService final : public nsIObserver { +@@ -109,6 +109,8 @@ class RuntimeService final : public nsIObserver { void PropagateStorageAccessPermissionGranted( const nsPIDOMWindowInner& aWindow); @@ -1902,17 +1918,17 @@ index d10dabb5c5ff8e17851edf2bd2efc08e74584d8e..53c4070c5fde43b27fb8fbfdcf4c23d8 bool IsWorkerGlobal(JSObject* global); diff --git a/dom/workers/WorkerPrivate.cpp b/dom/workers/WorkerPrivate.cpp -index acef06ba3abb006932f26f8a96fd73028f015150..940210c603d906ae0469d826b81ba8f537e7fef5 100644 +index a8643981aa966e9324a5dbdb09b4fe57210dc581..5120df2607584a7cd50ea03aa997ef5ade5c8ee2 100644 --- a/dom/workers/WorkerPrivate.cpp +++ b/dom/workers/WorkerPrivate.cpp -@@ -679,6 +679,18 @@ class UpdateContextOptionsRunnable final : public WorkerControlRunnable { +@@ -682,6 +682,18 @@ class UpdateContextOptionsRunnable final : public WorkerControlRunnable { } }; +class ResetDefaultLocaleRunnable final : public WorkerControlRunnable { + public: + explicit ResetDefaultLocaleRunnable(WorkerPrivate* aWorkerPrivate) -+ : WorkerControlRunnable(aWorkerPrivate, WorkerThread) {} ++ : WorkerControlRunnable(aWorkerPrivate, "ResetDefaultLocaleRunnable", WorkerThread) {} + + virtual bool WorkerRun(JSContext* aCx, + WorkerPrivate* aWorkerPrivate) override { @@ -1924,7 +1940,7 @@ index acef06ba3abb006932f26f8a96fd73028f015150..940210c603d906ae0469d826b81ba8f5 class UpdateLanguagesRunnable final : public WorkerRunnable { nsTArray mLanguages; -@@ -1977,6 +1989,16 @@ void WorkerPrivate::UpdateContextOptions( +@@ -1993,6 +2005,16 @@ void WorkerPrivate::UpdateContextOptions( } } @@ -1941,7 +1957,7 @@ index acef06ba3abb006932f26f8a96fd73028f015150..940210c603d906ae0469d826b81ba8f5 void WorkerPrivate::UpdateLanguages(const nsTArray& aLanguages) { AssertIsOnParentThread(); -@@ -5480,6 +5502,15 @@ void WorkerPrivate::UpdateContextOptionsInternal( +@@ -5489,6 +5511,15 @@ void WorkerPrivate::UpdateContextOptionsInternal( } } @@ -2032,10 +2048,10 @@ index 523e84c8c93f4221701f90f2e8ee146ec8e1adbd..98d5b1176e5378431b859a2dbd4d4e77 inline ClippedTime TimeClip(double time); diff --git a/js/src/debugger/Object.cpp b/js/src/debugger/Object.cpp -index c5a4f1f6dcf95922b5c8506d6bd24ad4fd2f1efc..a79bb0ad42d1bbd0434cda27c118cdd099013ab2 100644 +index 17528b0fd99ce8274e702746ff5674de4c3d4f2d..37fa52ae07381bec3504136b9bec0aa1ca110d6b 100644 --- a/js/src/debugger/Object.cpp +++ b/js/src/debugger/Object.cpp -@@ -2450,7 +2450,11 @@ Maybe DebuggerObject::call(JSContext* cx, +@@ -2468,7 +2468,11 @@ Maybe DebuggerObject::call(JSContext* cx, invokeArgs[i].set(args2[i]); } @@ -2202,10 +2218,10 @@ index dac899f7558b26d6848da8b98ed8a93555c8751a..2a07d67fa1c2840b25085566e84dc3b2 // No boxes to return return; diff --git a/layout/base/PresShell.cpp b/layout/base/PresShell.cpp -index 4afd2b10dfdab527b63f17919c52a559b3ac3de6..787283c004d9baa7227f00c338e0322dca88f949 100644 +index 31c21c337786b76306029149a925293a44c45c28..7aa4eb0b4980bb8ecdc4e10c91b1cd70e5d0ad08 100644 --- a/layout/base/PresShell.cpp +++ b/layout/base/PresShell.cpp -@@ -10963,7 +10963,9 @@ bool PresShell::ComputeActiveness() const { +@@ -11127,7 +11127,9 @@ bool PresShell::ComputeActiveness() const { if (!browserChild->IsVisible()) { MOZ_LOG(gLog, LogLevel::Debug, (" > BrowserChild %p is not visible", browserChild)); @@ -2229,10 +2245,10 @@ index 7bb839ae18835d128dc9285b7f9dc5b5e06335af..09e3979d07447522ace740daf2b818a6 const mozilla::dom::Document*); mozilla::StylePrefersColorScheme Gecko_MediaFeatures_PrefersColorScheme( diff --git a/layout/style/nsMediaFeatures.cpp b/layout/style/nsMediaFeatures.cpp -index c99eecb4867c623b8ccc6e6fb42986d71f795cc0..d127837d7e069818daaeb73ef42497226ff95e26 100644 +index f888c127d4423336a8f51e2011fc42eaf6c33f11..51d6e069f4a81c42b4bf270ba44ae4f82b8df592 100644 --- a/layout/style/nsMediaFeatures.cpp +++ b/layout/style/nsMediaFeatures.cpp -@@ -257,11 +257,11 @@ bool Gecko_MediaFeatures_MatchesPlatform(StylePlatform aPlatform) { +@@ -260,11 +260,11 @@ bool Gecko_MediaFeatures_MatchesPlatform(StylePlatform aPlatform) { } bool Gecko_MediaFeatures_PrefersReducedMotion(const Document* aDocument) { @@ -2250,7 +2266,7 @@ index c99eecb4867c623b8ccc6e6fb42986d71f795cc0..d127837d7e069818daaeb73ef4249722 bool Gecko_MediaFeatures_PrefersReducedTransparency(const Document* aDocument) { diff --git a/netwerk/base/LoadInfo.cpp b/netwerk/base/LoadInfo.cpp -index b15f24fffd7ea5a8a00319451fa7ebf9df32ec05..0279f6626f2ac938b0456d370fd956f2a23a036b 100644 +index eb90324c37ce515e5a0fcf75412605ae57ead9ee..6733dd6c99d77399529945386caa3926960e4176 100644 --- a/netwerk/base/LoadInfo.cpp +++ b/netwerk/base/LoadInfo.cpp @@ -653,7 +653,8 @@ LoadInfo::LoadInfo(const LoadInfo& rhs) @@ -2337,7 +2353,7 @@ index 155daa5cd52c4e93e1cc4559875868f4faf2c37e..02e8a2614a27a4cc9e1de760d4c48617 /** * Set the status and reason for the forthcoming synthesized response. diff --git a/netwerk/ipc/DocumentLoadListener.cpp b/netwerk/ipc/DocumentLoadListener.cpp -index ca1f59e8847bd399fcf3018ede95d318265c374c..d114f0bcaddedc3553780ff7b97e395e28aff91e 100644 +index d849eab7507f0665a8a79a1b11759afa3481f1ad..3a95d5201a1c1f2161a95e15beae86f2833a875f 100644 --- a/netwerk/ipc/DocumentLoadListener.cpp +++ b/netwerk/ipc/DocumentLoadListener.cpp @@ -167,6 +167,7 @@ static auto CreateDocumentLoadInfo(CanonicalBrowsingContext* aBrowsingContext, @@ -2387,10 +2403,10 @@ index c58fbc96391f8dcb585bd00b5ae8cba9088abd82..c121c891b61c9d60df770020c4ad0952 if (mPump && mLoadFlags & LOAD_CALL_CONTENT_SNIFFERS) { mPump->PeekStream(CallTypeSniffers, static_cast(this)); diff --git a/parser/html/nsHtml5TreeOpExecutor.cpp b/parser/html/nsHtml5TreeOpExecutor.cpp -index 3cb38dcf28a5cb3a8e70c336c8b1c822be59268f..4d9ae3ab666d4ba7b42730d50367720870f0183f 100644 +index f2c47c42a6b6448ede3a6fef1510a3982336d5af..9e35df57102c93238de2e4d548bbe1205d227f3b 100644 --- a/parser/html/nsHtml5TreeOpExecutor.cpp +++ b/parser/html/nsHtml5TreeOpExecutor.cpp -@@ -1381,6 +1381,10 @@ void nsHtml5TreeOpExecutor::UpdateReferrerInfoFromMeta( +@@ -1382,6 +1382,10 @@ void nsHtml5TreeOpExecutor::UpdateReferrerInfoFromMeta( void nsHtml5TreeOpExecutor::AddSpeculationCSP(const nsAString& aCSP) { NS_ASSERTION(NS_IsMainThread(), "Wrong thread!"); @@ -2498,10 +2514,10 @@ index 73c83e526be1a3a252f995d0718e3975d50bffa7..db5977c54221e19e107a8325a0834302 (lazy.isRunningTests || Cu.isInAutomation) && this.SERVER_URL == "data:,#remote-settings-dummy/v1" diff --git a/servo/components/style/gecko/media_features.rs b/servo/components/style/gecko/media_features.rs -index c9ad30b28b069a122cf01c5e97b83dc68ef022ff..f32dbcfe26fe2f6b8a0d066d6dfd208f1afc510d 100644 +index 8de45d95c2b942f069c898c93702bc7db2219369..be72e9678c3de31b1eaa72cfcb2c8be886f4a80f 100644 --- a/servo/components/style/gecko/media_features.rs +++ b/servo/components/style/gecko/media_features.rs -@@ -293,10 +293,15 @@ pub enum ForcedColors { +@@ -292,10 +292,15 @@ pub enum ForcedColors { /// https://drafts.csswg.org/mediaqueries-5/#forced-colors fn eval_forced_colors(context: &Context, query_value: Option) -> bool { @@ -2597,10 +2613,10 @@ index 209af157a35cf9c4586424421ee19b3f680796b6..1feb61e2f18e9a13631addc935f00da0 /** diff --git a/toolkit/mozapps/update/UpdateService.sys.mjs b/toolkit/mozapps/update/UpdateService.sys.mjs -index 290344c58bf488b4aa955c2c58bdaa11048e2f48..2d419b90e6c5a910d3038380cd6c819eb8b0c768 100644 +index 34bf1b9e19ae54f78d134b023af96820bc13a905..b85793edcd1996833420a026cb08706d648ece14 100644 --- a/toolkit/mozapps/update/UpdateService.sys.mjs +++ b/toolkit/mozapps/update/UpdateService.sys.mjs -@@ -3853,6 +3853,8 @@ UpdateService.prototype = { +@@ -3852,6 +3852,8 @@ UpdateService.prototype = { }, get disabledForTesting() { @@ -2610,7 +2626,7 @@ index 290344c58bf488b4aa955c2c58bdaa11048e2f48..2d419b90e6c5a910d3038380cd6c819e (Cu.isInAutomation || lazy.Marionette.running || diff --git a/toolkit/toolkit.mozbuild b/toolkit/toolkit.mozbuild -index f554b692f7e874dd21be1ef783e899ba602ee7f3..dd6c94f8723ca227611c8390d9dcd4f292939703 100644 +index b697eb1e3b02b0ffcc95a6e492dc23eb888488cc..0f4059341dbb3c2ecb2c46be0850e0d56e2a7453 100644 --- a/toolkit/toolkit.mozbuild +++ b/toolkit/toolkit.mozbuild @@ -155,6 +155,7 @@ if CONFIG["ENABLE_WEBDRIVER"]: @@ -2622,7 +2638,7 @@ index f554b692f7e874dd21be1ef783e899ba602ee7f3..dd6c94f8723ca227611c8390d9dcd4f2 ] diff --git a/toolkit/xre/nsWindowsWMain.cpp b/toolkit/xre/nsWindowsWMain.cpp -index 7eb9e1104682d4eb47060654f43a1efa8b2a6bb2..a8315d6decf654b5302bea5beeea34140c300ded 100644 +index 2a91deec5c10f87ed09f99b659baab77b2b638f2..78f4f30a0efe314563c6405f7b0848d2c3ca0551 100644 --- a/toolkit/xre/nsWindowsWMain.cpp +++ b/toolkit/xre/nsWindowsWMain.cpp @@ -14,8 +14,10 @@ @@ -2636,10 +2652,10 @@ index 7eb9e1104682d4eb47060654f43a1efa8b2a6bb2..a8315d6decf654b5302bea5beeea3414 #include #ifdef __MINGW32__ -@@ -114,6 +116,19 @@ static void FreeAllocStrings(int argc, char** argv) { - int wmain(int argc, WCHAR** argv) { +@@ -137,6 +139,19 @@ int wmain(int argc, WCHAR** argv) { SanitizeEnvironmentVariables(); SetDllDirectoryW(L""); + RemovePrefetchArguments(argc, argv); + bool hasJugglerPipe = + mozilla::CheckArg(argc, argv, "juggler-pipe", nullptr, + mozilla::CheckArgFlag::None) == mozilla::ARG_FOUND; @@ -2793,7 +2809,7 @@ index 4573e28470c5112f5ac2c5dd53e7a9d1ceedb943..b53b86d8e39f1de4b0d0f1a8d5d7295e // OnStartRequest) mDialog = nullptr; diff --git a/uriloader/exthandler/nsExternalHelperAppService.h b/uriloader/exthandler/nsExternalHelperAppService.h -index 205f73cfa127e15e171854165c92551fea957e84..6399525ea0abb55655c824b086a043d022392113 100644 +index 1f77e095dbfa3acc046779114007d83fc1cfa087..2354abbab7af6f6bdc3bd628722f03ea401d236a 100644 --- a/uriloader/exthandler/nsExternalHelperAppService.h +++ b/uriloader/exthandler/nsExternalHelperAppService.h @@ -257,6 +257,8 @@ class nsExternalHelperAppService : public nsIExternalHelperAppService, @@ -2886,7 +2902,7 @@ index 1c25e9d9a101233f71e92288a0f93125b81ac1c5..22cf67b0f6e3ddd2b3ed725a314ba6a9 } #endif diff --git a/widget/MouseEvents.h b/widget/MouseEvents.h -index ea714704df53af78a55065ce7626798e0e674a23..a108e0459aeac9789adac7d7ec166abf94646454 100644 +index d29b406524c8b4afe437b559e33b4b2b5824ee58..6bef9c1657f93f90f96735d76fedb6ba3888b5c1 100644 --- a/widget/MouseEvents.h +++ b/widget/MouseEvents.h @@ -258,6 +258,7 @@ class WidgetMouseEvent : public WidgetMouseEventBase, @@ -2935,7 +2951,7 @@ diff --git a/widget/cocoa/NativeKeyBindings.mm b/widget/cocoa/NativeKeyBindings. index e4bdf715e2fb899e97a5bfeb2e147127460d6047..3554f919480278b7353617481c7ce8050630a1aa 100644 --- a/widget/cocoa/NativeKeyBindings.mm +++ b/widget/cocoa/NativeKeyBindings.mm -@@ -528,6 +528,13 @@ void NativeKeyBindings::GetEditCommandsForTests( +@@ -528,6 +528,13 @@ break; case KEY_NAME_INDEX_ArrowLeft: if (aEvent.IsAlt()) { @@ -2949,7 +2965,7 @@ index e4bdf715e2fb899e97a5bfeb2e147127460d6047..3554f919480278b7353617481c7ce805 break; } if (aEvent.IsMeta() || (aEvent.IsControl() && aEvent.IsShift())) { -@@ -550,6 +557,13 @@ void NativeKeyBindings::GetEditCommandsForTests( +@@ -550,6 +557,13 @@ break; case KEY_NAME_INDEX_ArrowRight: if (aEvent.IsAlt()) { @@ -2963,7 +2979,7 @@ index e4bdf715e2fb899e97a5bfeb2e147127460d6047..3554f919480278b7353617481c7ce805 break; } if (aEvent.IsMeta() || (aEvent.IsControl() && aEvent.IsShift())) { -@@ -572,6 +586,10 @@ void NativeKeyBindings::GetEditCommandsForTests( +@@ -572,6 +586,10 @@ break; case KEY_NAME_INDEX_ArrowUp: if (aEvent.IsControl()) { @@ -2974,7 +2990,7 @@ index e4bdf715e2fb899e97a5bfeb2e147127460d6047..3554f919480278b7353617481c7ce805 break; } if (aEvent.IsMeta()) { -@@ -582,7 +600,7 @@ void NativeKeyBindings::GetEditCommandsForTests( +@@ -582,7 +600,7 @@ !aEvent.IsShift() ? ToObjcSelectorPtr(@selector(moveToBeginningOfDocument:)) : ToObjcSelectorPtr( @@ -2983,7 +2999,7 @@ index e4bdf715e2fb899e97a5bfeb2e147127460d6047..3554f919480278b7353617481c7ce805 aCommands); break; } -@@ -609,6 +627,10 @@ void NativeKeyBindings::GetEditCommandsForTests( +@@ -609,6 +627,10 @@ break; case KEY_NAME_INDEX_ArrowDown: if (aEvent.IsControl()) { diff --git a/browser_patches/webkit/UPSTREAM_CONFIG.sh b/browser_patches/webkit/UPSTREAM_CONFIG.sh index 71ae625752..069f24571c 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="e225c278f4c06f451ea92cc68b12986dd2a99979" +BASE_REVISION="b2ca06dc3d84b356d01cdf09a82049f80515fbfe" diff --git a/browser_patches/webkit/patches/bootstrap.diff b/browser_patches/webkit/patches/bootstrap.diff index 538f932738..5df5d455da 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 598c68f5ad80520cec7aa886d931a93b425dcac0..743a677b61d67db06eb8e76bcca0729fb45914ed 100644 +index dcd4c26b1cd99333e9498a483ff4139a8d42d14b..f041439eff7f2649b1560faf18661165b1fd7771 100644 --- a/Source/JavaScriptCore/CMakeLists.txt +++ b/Source/JavaScriptCore/CMakeLists.txt -@@ -1419,22 +1419,27 @@ set(JavaScriptCore_INSPECTOR_DOMAINS +@@ -1400,22 +1400,27 @@ set(JavaScriptCore_INSPECTOR_DOMAINS ${JAVASCRIPTCORE_DIR}/inspector/protocol/CSS.json ${JAVASCRIPTCORE_DIR}/inspector/protocol/Canvas.json ${JAVASCRIPTCORE_DIR}/inspector/protocol/Console.json @@ -1635,7 +1635,7 @@ index 52920cded24a9c6b0ef6fb4e518664955db4f9fa..bbbabc4e7259088b9404e8cc07eecd6f }, { diff --git a/Source/JavaScriptCore/profiler/ProfilerBytecodeSequence.cpp b/Source/JavaScriptCore/profiler/ProfilerBytecodeSequence.cpp -index e91e5ed0b72d5a3a4c8455ce1da31647f63b2011..7ebd9a28c78ad4c2296ed3c603ff81723719fdbd 100644 +index dd1286cec6e77895f519911c89719b6064db6949..b732e0eab0fd29e1a1c9a2179cc86a951768c062 100644 --- a/Source/JavaScriptCore/profiler/ProfilerBytecodeSequence.cpp +++ b/Source/JavaScriptCore/profiler/ProfilerBytecodeSequence.cpp @@ -28,7 +28,6 @@ @@ -1659,7 +1659,7 @@ index 72c81757450ad5ebacd5fd20d2a16095514802ec..b7d8ab1e04d3850180079870468b28ef private: enum ArgumentRequirement { ArgumentRequired, ArgumentNotRequired }; diff --git a/Source/ThirdParty/libwebrtc/CMakeLists.txt b/Source/ThirdParty/libwebrtc/CMakeLists.txt -index bff7beb4674150d0620513ccdbd30c970bb78554..79532335e892aeb209d54fa26312380d6b1da5b2 100644 +index d6b1e73b1268a1224c2d77b936ce46347be62dac..acd1950327608988059a7e972fb4d40f9efc0c68 100644 --- a/Source/ThirdParty/libwebrtc/CMakeLists.txt +++ b/Source/ThirdParty/libwebrtc/CMakeLists.txt @@ -452,6 +452,7 @@ set(webrtc_SOURCES @@ -1682,7 +1682,7 @@ index bff7beb4674150d0620513ccdbd30c970bb78554..79532335e892aeb209d54fa26312380d Source/third_party/libyuv/source/compare.cc Source/third_party/libyuv/source/compare_common.cc Source/third_party/libyuv/source/compare_gcc.cc -@@ -2262,6 +2268,10 @@ set(webrtc_INCLUDE_DIRECTORIES PRIVATE +@@ -2270,6 +2276,10 @@ set(webrtc_INCLUDE_DIRECTORIES PRIVATE Source/third_party/libsrtp/config Source/third_party/libsrtp/crypto/include Source/third_party/libsrtp/include @@ -1951,7 +1951,7 @@ index f5f1d0ef71f7fcf175b016ddaefd99f18d96c1c3..5632dcb4919eb22133a62810b91e1433 isa = XCConfigurationList; buildConfigurations = ( diff --git a/Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml b/Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml -index c7812f1c9eed5b85cfd0f2c95224509743572eef..df12b644468fe5cba5592be5265147a0f541003a 100644 +index 110e762586d9dc98b3a11a5cf5d1501334b2463f..870e1950740d745588cbfdc8abd3f3709867ab8f 100644 --- a/Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml +++ b/Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml @@ -562,6 +562,7 @@ ApplePayEnabled: @@ -1971,7 +1971,7 @@ index c7812f1c9eed5b85cfd0f2c95224509743572eef..df12b644468fe5cba5592be5265147a0 WebCore: default: false -@@ -1851,9 +1852,10 @@ CrossOriginEmbedderPolicyEnabled: +@@ -1739,9 +1740,10 @@ CrossOriginEmbedderPolicyEnabled: WebCore: default: false @@ -1983,7 +1983,7 @@ index c7812f1c9eed5b85cfd0f2c95224509743572eef..df12b644468fe5cba5592be5265147a0 category: security humanReadableName: "Cross-Origin-Opener-Policy (COOP) header" humanReadableDescription: "Support for Cross-Origin-Opener-Policy (COOP) header" -@@ -1861,7 +1863,7 @@ CrossOriginOpenerPolicyEnabled: +@@ -1749,7 +1751,7 @@ CrossOriginOpenerPolicyEnabled: WebKitLegacy: default: false WebKit: @@ -1992,7 +1992,7 @@ index c7812f1c9eed5b85cfd0f2c95224509743572eef..df12b644468fe5cba5592be5265147a0 WebCore: default: false -@@ -1905,7 +1907,7 @@ CustomPasteboardDataEnabled: +@@ -1793,7 +1795,7 @@ CustomPasteboardDataEnabled: WebKitLegacy: default: false WebKit: @@ -2001,7 +2001,7 @@ index c7812f1c9eed5b85cfd0f2c95224509743572eef..df12b644468fe5cba5592be5265147a0 default: false CustomStateSetEnabled: -@@ -1964,6 +1966,7 @@ DOMAudioSessionFullEnabled: +@@ -1852,6 +1854,7 @@ DOMAudioSessionFullEnabled: WebCore: default: false @@ -2009,7 +2009,7 @@ index c7812f1c9eed5b85cfd0f2c95224509743572eef..df12b644468fe5cba5592be5265147a0 DOMPasteAccessRequestsEnabled: type: bool status: internal -@@ -1975,7 +1978,7 @@ DOMPasteAccessRequestsEnabled: +@@ -1863,7 +1866,7 @@ DOMPasteAccessRequestsEnabled: default: false WebKit: "PLATFORM(IOS) || PLATFORM(MAC) || PLATFORM(GTK) || PLATFORM(VISION)": true @@ -2018,7 +2018,7 @@ index c7812f1c9eed5b85cfd0f2c95224509743572eef..df12b644468fe5cba5592be5265147a0 WebCore: default: false -@@ -3414,6 +3417,7 @@ InspectorAttachmentSide: +@@ -3232,6 +3235,7 @@ InspectorAttachmentSide: WebKit: default: 0 @@ -2026,7 +2026,7 @@ index c7812f1c9eed5b85cfd0f2c95224509743572eef..df12b644468fe5cba5592be5265147a0 InspectorStartsAttached: type: bool status: embedder -@@ -3421,7 +3425,7 @@ InspectorStartsAttached: +@@ -3239,7 +3243,7 @@ InspectorStartsAttached: exposed: [ WebKit ] defaultValue: WebKit: @@ -2035,7 +2035,7 @@ index c7812f1c9eed5b85cfd0f2c95224509743572eef..df12b644468fe5cba5592be5265147a0 InspectorWindowFrame: type: String -@@ -3776,9 +3780,10 @@ LayoutViewportHeightExpansionFactor: +@@ -3593,9 +3597,10 @@ LayoutViewportHeightExpansionFactor: WebCore: default: 0 @@ -2047,7 +2047,7 @@ index c7812f1c9eed5b85cfd0f2c95224509743572eef..df12b644468fe5cba5592be5265147a0 category: html humanReadableName: "Lazy iframe loading" humanReadableDescription: "Enable lazy iframe loading support" -@@ -3786,9 +3791,9 @@ LazyIframeLoadingEnabled: +@@ -3603,9 +3608,9 @@ LazyIframeLoadingEnabled: WebKitLegacy: default: true WebKit: @@ -2059,7 +2059,7 @@ index c7812f1c9eed5b85cfd0f2c95224509743572eef..df12b644468fe5cba5592be5265147a0 LazyImageLoadingEnabled: type: bool -@@ -5210,6 +5215,19 @@ PitchCorrectionAlgorithm: +@@ -5028,6 +5033,19 @@ PitchCorrectionAlgorithm: WebCore: default: MediaPlayerEnums::PitchCorrectionAlgorithm::BestAllAround @@ -2076,10 +2076,10 @@ index c7812f1c9eed5b85cfd0f2c95224509743572eef..df12b644468fe5cba5592be5265147a0 + WebCore: + default: true + - PopoverAttributeEnabled: + PointerLockOptionsEnabled: type: bool - status: stable -@@ -6946,6 +6964,7 @@ UseCGDisplayListsForDOMRendering: + status: testable +@@ -6778,6 +6796,7 @@ UseCGDisplayListsForDOMRendering: WebKit: default: true @@ -2087,7 +2087,7 @@ index c7812f1c9eed5b85cfd0f2c95224509743572eef..df12b644468fe5cba5592be5265147a0 UseGPUProcessForCanvasRenderingEnabled: type: bool status: stable -@@ -6958,7 +6977,7 @@ UseGPUProcessForCanvasRenderingEnabled: +@@ -6790,7 +6809,7 @@ UseGPUProcessForCanvasRenderingEnabled: defaultValue: WebKit: "ENABLE(GPU_PROCESS_BY_DEFAULT)": true @@ -2096,7 +2096,16 @@ index c7812f1c9eed5b85cfd0f2c95224509743572eef..df12b644468fe5cba5592be5265147a0 default: false UseGPUProcessForDOMRenderingEnabled: -@@ -7000,6 +7019,7 @@ UseGPUProcessForMediaEnabled: +@@ -6800,7 +6819,7 @@ UseGPUProcessForDOMRenderingEnabled: + humanReadableName: "GPU Process: DOM Rendering" + humanReadableDescription: "Enable DOM rendering in GPU Process" + webcoreBinding: none +- condition: ENABLE(GPU_PROCESS) ++ condition: ENABLE(GPU_PROCESS) && !PLATFORM(WIN) + exposed: [ WebKit ] + defaultValue: + WebKit: +@@ -6832,6 +6851,7 @@ UseGPUProcessForMediaEnabled: "ENABLE(GPU_PROCESS_BY_DEFAULT)": true default: false @@ -2104,7 +2113,7 @@ index c7812f1c9eed5b85cfd0f2c95224509743572eef..df12b644468fe5cba5592be5265147a0 UseGPUProcessForWebGLEnabled: type: bool status: internal -@@ -7011,7 +7031,7 @@ UseGPUProcessForWebGLEnabled: +@@ -6843,7 +6863,7 @@ UseGPUProcessForWebGLEnabled: default: false WebKit: "ENABLE(GPU_PROCESS_BY_DEFAULT) && ENABLE(GPU_PROCESS_WEBGL_BY_DEFAULT)": true @@ -2114,10 +2123,10 @@ index c7812f1c9eed5b85cfd0f2c95224509743572eef..df12b644468fe5cba5592be5265147a0 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 6fbfe8530da9b3f0c537f42ff66ec4ff7bc18eef..1b777bff1c688c4c0d1e8b81eff345e44c5068ef 100644 +index 6f547f01a22d1aba86b813fc77679124a643ef72..34fbae99c2e64f2a34a83d878da76f9c75d0bea5 100644 --- a/Source/WTF/wtf/PlatformEnable.h +++ b/Source/WTF/wtf/PlatformEnable.h -@@ -409,7 +409,7 @@ +@@ -401,7 +401,7 @@ // ORIENTATION_EVENTS should never get enabled on Desktop, only Mobile. #if !defined(ENABLE_ORIENTATION_EVENTS) @@ -2126,7 +2135,7 @@ index 6fbfe8530da9b3f0c537f42ff66ec4ff7bc18eef..1b777bff1c688c4c0d1e8b81eff345e4 #endif #if !defined(ENABLE_OVERFLOW_SCROLLING_TOUCH) -@@ -514,7 +514,7 @@ +@@ -506,7 +506,7 @@ #endif #if !defined(ENABLE_TOUCH_EVENTS) @@ -2136,10 +2145,10 @@ index 6fbfe8530da9b3f0c537f42ff66ec4ff7bc18eef..1b777bff1c688c4c0d1e8b81eff345e4 #if !defined(ENABLE_TOUCH_ACTION_REGIONS) diff --git a/Source/WTF/wtf/PlatformEnableCocoa.h b/Source/WTF/wtf/PlatformEnableCocoa.h -index ced4314427247eeccfec1792da08ac8c4138f229..ff97e57bd8e70a7025959469d9fed7b20762f887 100644 +index d797c28eccac0578c7c504fa0c7b34d517746b17..32e815241e2513c979d1af01ef88b494851a2409 100644 --- a/Source/WTF/wtf/PlatformEnableCocoa.h +++ b/Source/WTF/wtf/PlatformEnableCocoa.h -@@ -791,7 +791,7 @@ +@@ -775,7 +775,7 @@ #endif #if !defined(ENABLE_SEC_ITEM_SHIM) @@ -2149,7 +2158,7 @@ index ced4314427247eeccfec1792da08ac8c4138f229..ff97e57bd8e70a7025959469d9fed7b2 #if !defined(ENABLE_SERVER_PRECONNECT) diff --git a/Source/WTF/wtf/PlatformHave.h b/Source/WTF/wtf/PlatformHave.h -index c4f3e13ed22dcd09335804ea248437ed42269f2c..0cdb4fd452ef373fdd95cb5ec0195c1456f16813 100644 +index cb5e806040f4e6e2bf94a4c27b05892af7e4301d..81fd915ce2643522b225139661da9f7dedf32469 100644 --- a/Source/WTF/wtf/PlatformHave.h +++ b/Source/WTF/wtf/PlatformHave.h @@ -419,7 +419,7 @@ @@ -2172,7 +2181,7 @@ index c4f3e13ed22dcd09335804ea248437ed42269f2c..0cdb4fd452ef373fdd95cb5ec0195c14 #if !defined(HAVE_LOCKDOWN_MODE_PDF_ADDITIONS) && \ diff --git a/Source/WTF/wtf/unicode/UTF8Conversion.h b/Source/WTF/wtf/unicode/UTF8Conversion.h -index 8c27e4ca50e6208262966834dbd9f08214294c5f..40898c535e48536418eebf1ed151887c8b0348af 100644 +index f45ef73d81bd02c0b542e98ff01f59d88f57b8a0..0fb91174b8e6641d20b4ee084ec48910cdf7b836 100644 --- a/Source/WTF/wtf/unicode/UTF8Conversion.h +++ b/Source/WTF/wtf/unicode/UTF8Conversion.h @@ -28,6 +28,10 @@ @@ -2187,10 +2196,10 @@ index 8c27e4ca50e6208262966834dbd9f08214294c5f..40898c535e48536418eebf1ed151887c namespace Unicode { diff --git a/Source/WebCore/DerivedSources.make b/Source/WebCore/DerivedSources.make -index 4ab111cd6c9090f3ff912b6e0249df92da0d6523..dfd80b0297e5ee657a29375241eed77cab4e039e 100644 +index 9dd05dd4e7ad824cae7c47d61117a2bbde10c3e5..015b2ce422f594860a77b0382e9a3857f2db4ff6 100644 --- a/Source/WebCore/DerivedSources.make +++ b/Source/WebCore/DerivedSources.make -@@ -1147,6 +1147,10 @@ JS_BINDING_IDLS := \ +@@ -1149,6 +1149,10 @@ JS_BINDING_IDLS := \ $(WebCore)/dom/Slotable.idl \ $(WebCore)/dom/StaticRange.idl \ $(WebCore)/dom/StringCallback.idl \ @@ -2201,7 +2210,7 @@ index 4ab111cd6c9090f3ff912b6e0249df92da0d6523..dfd80b0297e5ee657a29375241eed77c $(WebCore)/dom/Text.idl \ $(WebCore)/dom/TextDecoder.idl \ $(WebCore)/dom/TextDecoderStream.idl \ -@@ -1736,9 +1740,6 @@ JS_BINDING_IDLS := \ +@@ -1735,9 +1739,6 @@ JS_BINDING_IDLS := \ ADDITIONAL_BINDING_IDLS = \ DocumentTouch.idl \ GestureEvent.idl \ @@ -2212,10 +2221,10 @@ index 4ab111cd6c9090f3ff912b6e0249df92da0d6523..dfd80b0297e5ee657a29375241eed77c vpath %.in $(WEBKITADDITIONS_HEADER_SEARCH_PATHS) diff --git a/Source/WebCore/Modules/geolocation/Geolocation.cpp b/Source/WebCore/Modules/geolocation/Geolocation.cpp -index d27f967de68f36c5a4cb2b9df6d011380b48b593..82fc33a1d0ab8c5368842385ed74e4981e1d6a72 100644 +index 32fde85425cbb82eb30bcc7aef58155026d2b7b7..a35495d97fcf0346e4696e26df80cf4a8fb890d6 100644 --- a/Source/WebCore/Modules/geolocation/Geolocation.cpp +++ b/Source/WebCore/Modules/geolocation/Geolocation.cpp -@@ -362,8 +362,9 @@ bool Geolocation::shouldBlockGeolocationRequests() +@@ -357,8 +357,9 @@ bool Geolocation::shouldBlockGeolocationRequests() bool isSecure = SecurityOrigin::isSecure(document()->url()) || document()->isSecureContext(); bool hasMixedContent = !document()->foundMixedContent().isEmpty(); bool isLocalOrigin = securityOrigin()->isLocal(); @@ -2263,10 +2272,10 @@ index 506ebb25fa290f27a75674a6fe5506fc311910d6..07d34c567b42aca08b188243c3f036f6 [self sendSpeechEndIfNeeded]; diff --git a/Source/WebCore/PlatformWPE.cmake b/Source/WebCore/PlatformWPE.cmake -index 5c4d75ebdab0739a2d7f37e87f63f9c62bd297f4..1ac5a96ea17ec88dc4906c3b9d24d30026380968 100644 +index c6a03b56d8358316c9ce422c1a11438bd216f80f..69fbd319b7cd084ca125a8db1b5d92ef6a4dc10f 100644 --- a/Source/WebCore/PlatformWPE.cmake +++ b/Source/WebCore/PlatformWPE.cmake -@@ -57,6 +57,7 @@ list(APPEND WebCore_PRIVATE_FRAMEWORK_HEADERS +@@ -60,6 +60,7 @@ list(APPEND WebCore_PRIVATE_FRAMEWORK_HEADERS platform/graphics/libwpe/PlatformDisplayLibWPE.h platform/graphics/wayland/PlatformDisplayWayland.h @@ -2275,10 +2284,10 @@ index 5c4d75ebdab0739a2d7f37e87f63f9c62bd297f4..1ac5a96ea17ec88dc4906c3b9d24d300 set(CSS_VALUE_PLATFORM_DEFINES "HAVE_OS_DARK_MODE_SUPPORT=1") diff --git a/Source/WebCore/SourcesCocoa.txt b/Source/WebCore/SourcesCocoa.txt -index 9fd175c505e01a219000c92dbf83fd5cacd428a2..e8be3e733db6a49b1993ef1edb062298849e05f2 100644 +index eece14fded1942140af81dede0861fb5f79fb532..cd3c5ebaccd268695d9e7bc0b96f30522c42e43e 100644 --- a/Source/WebCore/SourcesCocoa.txt +++ b/Source/WebCore/SourcesCocoa.txt -@@ -712,3 +712,9 @@ testing/cocoa/WebViewVisualIdentificationOverlay.mm +@@ -713,3 +713,9 @@ testing/cocoa/WebViewVisualIdentificationOverlay.mm platform/graphics/angle/GraphicsContextGLANGLE.cpp @no-unify platform/graphics/cocoa/GraphicsContextGLCocoa.mm @no-unify platform/graphics/cv/GraphicsContextGLCVCocoa.cpp @no-unify @@ -2289,10 +2298,10 @@ index 9fd175c505e01a219000c92dbf83fd5cacd428a2..e8be3e733db6a49b1993ef1edb062298 +JSTouchList.cpp +// Playwright end diff --git a/Source/WebCore/SourcesGTK.txt b/Source/WebCore/SourcesGTK.txt -index 867352b020400643f6aeff8acc4c2c874c5aec83..3bf8903963d0128b015879bb6cfa192d4b302c39 100644 +index af2081f34b9d8d97864a6e9507805abc9e8eb6d7..06ed467b2c6e529baba22a04e03a4858f8552e19 100644 --- a/Source/WebCore/SourcesGTK.txt +++ b/Source/WebCore/SourcesGTK.txt -@@ -107,3 +107,10 @@ platform/unix/LoggingUnix.cpp +@@ -110,3 +110,10 @@ platform/unix/LoggingUnix.cpp platform/unix/SharedMemoryUnix.cpp platform/xdg/MIMETypeRegistryXdg.cpp @@ -2304,10 +2313,10 @@ index 867352b020400643f6aeff8acc4c2c874c5aec83..3bf8903963d0128b015879bb6cfa192d +JSSpeechSynthesisEventInit.cpp +// Playwright: end. diff --git a/Source/WebCore/SourcesWPE.txt b/Source/WebCore/SourcesWPE.txt -index e24a29cf23786daa6bce604694db462d3ccf67a4..ed61fb29cafea30491a52fdd8f8f4dce3e1e3a3a 100644 +index 92f1879df295fc63a9194dc54d3f7499c5fe3041..67c40d056aee6a8149ed1ff16ce4c835e19f7f6c 100644 --- a/Source/WebCore/SourcesWPE.txt +++ b/Source/WebCore/SourcesWPE.txt -@@ -45,6 +45,8 @@ editing/libwpe/EditorLibWPE.cpp +@@ -46,6 +46,8 @@ editing/libwpe/EditorLibWPE.cpp loader/soup/ResourceLoaderSoup.cpp @@ -2316,7 +2325,7 @@ index e24a29cf23786daa6bce604694db462d3ccf67a4..ed61fb29cafea30491a52fdd8f8f4dce page/linux/ResourceUsageOverlayLinux.cpp page/linux/ResourceUsageThreadLinux.cpp -@@ -84,6 +86,17 @@ platform/text/LocaleICU.cpp +@@ -87,6 +89,17 @@ platform/text/LocaleICU.cpp platform/unix/LoggingUnix.cpp platform/unix/SharedMemoryUnix.cpp @@ -2335,10 +2344,10 @@ index e24a29cf23786daa6bce604694db462d3ccf67a4..ed61fb29cafea30491a52fdd8f8f4dce +JSSpeechSynthesisEventInit.cpp +// Playwright: end. diff --git a/Source/WebCore/WebCore.xcodeproj/project.pbxproj b/Source/WebCore/WebCore.xcodeproj/project.pbxproj -index 426658f2035cb425d913c21ad621a8f1a8f03f14..1a462ad491fdf8044c2cad77c43da4afc4e335e1 100644 +index 8807578bc8e503fce83e9acc30029cef75b7f071..7fffb6499c200dca0c3ee777feaf284999d5d763 100644 --- a/Source/WebCore/WebCore.xcodeproj/project.pbxproj +++ b/Source/WebCore/WebCore.xcodeproj/project.pbxproj -@@ -6215,6 +6215,13 @@ +@@ -6216,6 +6216,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, ); }; }; @@ -2352,7 +2361,7 @@ index 426658f2035cb425d913c21ad621a8f1a8f03f14..1a462ad491fdf8044c2cad77c43da4af 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, ); }; }; -@@ -20080,6 +20087,14 @@ +@@ -20126,6 +20133,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 = ""; }; @@ -2367,7 +2376,7 @@ index 426658f2035cb425d913c21ad621a8f1a8f03f14..1a462ad491fdf8044c2cad77c43da4af 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 = ""; }; -@@ -27690,6 +27705,11 @@ +@@ -27745,6 +27760,11 @@ BC4A5324256055590028C592 /* TextDirectionSubmenuInclusionBehavior.h */, 2D4F96F11A1ECC240098BF88 /* TextIndicator.cpp */, 2D4F96F21A1ECC240098BF88 /* TextIndicator.h */, @@ -2379,7 +2388,7 @@ index 426658f2035cb425d913c21ad621a8f1a8f03f14..1a462ad491fdf8044c2cad77c43da4af F48570A42644C76D00C05F71 /* TranslationContextMenuInfo.h */, F4E1965F21F26E4E00285078 /* UndoItem.cpp */, 2ECDBAD521D8906300F00ECD /* UndoItem.h */, -@@ -33986,6 +34006,8 @@ +@@ -34075,6 +34095,8 @@ 29E4D8DF16B0940F00C84704 /* PlatformSpeechSynthesizer.h */, 1AD8F81A11CAB9E900E93E54 /* PlatformStrategies.cpp */, 1AD8F81911CAB9E900E93E54 /* PlatformStrategies.h */, @@ -2388,7 +2397,7 @@ index 426658f2035cb425d913c21ad621a8f1a8f03f14..1a462ad491fdf8044c2cad77c43da4af 0FD7C21D23CE41E30096D102 /* PlatformWheelEvent.cpp */, 935C476A09AC4D4F00A6AAB4 /* PlatformWheelEvent.h */, F491A66A2A9FEFA300F96146 /* PlatformWheelEvent.serialization.in */, -@@ -36653,6 +36675,7 @@ +@@ -36745,6 +36767,7 @@ AD6E71AB1668899D00320C13 /* DocumentSharedObjectPool.h */, 6BDB5DC1227BD3B800919770 /* DocumentStorageAccess.cpp */, 6BDB5DC0227BD3B800919770 /* DocumentStorageAccess.h */, @@ -2396,7 +2405,7 @@ index 426658f2035cb425d913c21ad621a8f1a8f03f14..1a462ad491fdf8044c2cad77c43da4af 7CE7FA5B1EF882300060C9D6 /* DocumentTouch.cpp */, 7CE7FA591EF882300060C9D6 /* DocumentTouch.h */, A8185F3209765765005826D9 /* DocumentType.cpp */, -@@ -41383,6 +41406,8 @@ +@@ -41482,6 +41505,8 @@ F4E90A3C2B52038E002DA469 /* PlatformTextAlternatives.h in Headers */, 0F7D07331884C56C00B4AF86 /* PlatformTextTrack.h in Headers */, 074E82BB18A69F0E007EF54C /* PlatformTimeRanges.h in Headers */, @@ -2405,7 +2414,7 @@ index 426658f2035cb425d913c21ad621a8f1a8f03f14..1a462ad491fdf8044c2cad77c43da4af CDD08ABD277E542600EA3755 /* PlatformTrackConfiguration.h in Headers */, CD1F9B022700323D00617EB6 /* PlatformVideoColorPrimaries.h in Headers */, CD1F9B01270020B700617EB6 /* PlatformVideoColorSpace.h in Headers */, -@@ -42660,6 +42685,7 @@ +@@ -42762,6 +42787,7 @@ 0F54DD081881D5F5003EEDBB /* Touch.h in Headers */, 71B7EE0D21B5C6870031C1EF /* TouchAction.h in Headers */, 0F54DD091881D5F5003EEDBB /* TouchEvent.h in Headers */, @@ -2413,7 +2422,7 @@ index 426658f2035cb425d913c21ad621a8f1a8f03f14..1a462ad491fdf8044c2cad77c43da4af 0F54DD0A1881D5F5003EEDBB /* TouchList.h in Headers */, 070334D71459FFD5008D8D45 /* TrackBase.h in Headers */, BE88E0C21715CE2600658D98 /* TrackListBase.h in Headers */, -@@ -43788,6 +43814,8 @@ +@@ -43910,6 +43936,8 @@ 2D22830323A8470700364B7E /* CursorMac.mm in Sources */, 5CBD59592280E926002B22AA /* CustomHeaderFields.cpp in Sources */, 07E4BDBF2A3A5FAB000D5509 /* DictationCaretAnimator.cpp in Sources */, @@ -2422,7 +2431,7 @@ index 426658f2035cb425d913c21ad621a8f1a8f03f14..1a462ad491fdf8044c2cad77c43da4af 7CE6CBFD187F394900D46BF5 /* FormatConverter.cpp in Sources */, 4667EA3E2968D9DA00BAB1E2 /* GameControllerHapticEffect.mm in Sources */, 46FE73D32968E52000B8064C /* GameControllerHapticEngines.mm in Sources */, -@@ -43875,6 +43903,9 @@ +@@ -43997,6 +44025,9 @@ CE88EE262414467B007F29C2 /* TextAlternativeWithRange.mm in Sources */, BE39137129B267F500FA5D4F /* TextTransformCocoa.cpp in Sources */, 51DF6D800B92A18E00C2DC85 /* ThreadCheck.mm in Sources */, @@ -2433,18 +2442,18 @@ index 426658f2035cb425d913c21ad621a8f1a8f03f14..1a462ad491fdf8044c2cad77c43da4af 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 ed50745a2ae8973604461d1f91994656cb6ba26f..f69247170ffc45a2dc6e477a9e1f6a48d9862ea2 100644 +index 9253fbb9de00b2768dd67c6efa20a2242e2e6621..c758a4e9b6f779458a611b6458ba89de1c17e4c8 100644 --- a/Source/WebCore/accessibility/AccessibilityObject.cpp +++ b/Source/WebCore/accessibility/AccessibilityObject.cpp -@@ -65,6 +65,7 @@ - #include "HTMLParserIdioms.h" +@@ -66,6 +66,7 @@ + #include "HTMLSlotElement.h" #include "HTMLTextAreaElement.h" #include "HitTestResult.h" +#include "InspectorInstrumentation.h" #include "LocalFrame.h" #include "LocalizedStrings.h" #include "MathMLNames.h" -@@ -4063,9 +4064,14 @@ AccessibilityObjectInclusion AccessibilityObject::defaultObjectInclusion() const +@@ -4075,9 +4076,14 @@ AccessibilityObjectInclusion AccessibilityObject::defaultObjectInclusion() const if (roleValue() == AccessibilityRole::ApplicationDialog) return AccessibilityObjectInclusion::IncludeObject; @@ -2475,7 +2484,7 @@ index f20ac9d4d61a6f396e9ed796c8e6c5b8a7ea0577..3151b5e54ea17c0d979d22a0cc43c5ce macro(DynamicsCompressorNode) \ macro(ElementInternals) \ diff --git a/Source/WebCore/css/query/MediaQueryFeatures.cpp b/Source/WebCore/css/query/MediaQueryFeatures.cpp -index bae4d73a2e54a59595843bc64eb34252ca421a4a..a9ed264d3c5a46224d0f9a3bdabfbf19079be063 100644 +index 9892fda4291cae0e0d338fac8b0f98cd0126807d..7ecfd659809ab30e82a9c00ec7710292a1bd5611 100644 --- a/Source/WebCore/css/query/MediaQueryFeatures.cpp +++ b/Source/WebCore/css/query/MediaQueryFeatures.cpp @@ -368,7 +368,11 @@ const FeatureSchema& forcedColors() @@ -2502,7 +2511,7 @@ index bae4d73a2e54a59595843bc64eb34252ca421a4a..a9ed264d3c5a46224d0f9a3bdabfbf19 case ForcedAccessibilityValue::On: return true; diff --git a/Source/WebCore/dom/DataTransfer.cpp b/Source/WebCore/dom/DataTransfer.cpp -index 4cc52397bbf1397aaa210e1d73831d178a3ff443..16eb5f885aeb17f61611109287ba2ce11a458ab6 100644 +index b56c600b6159973dc8a33db1deba0cfbb77abf48..a347a85381888e2f6423393552d619938ad34f21 100644 --- a/Source/WebCore/dom/DataTransfer.cpp +++ b/Source/WebCore/dom/DataTransfer.cpp @@ -510,6 +510,14 @@ Ref DataTransfer::createForDrag(const Document& document) @@ -2583,7 +2592,7 @@ index 9b8dbfc15ce078702321abcd6c0e636df7a60510..2956f7098e87af10ab8f5584b456ce9a ] partial interface mixin DocumentOrShadowRoot { readonly attribute Element? pointerLockElement; diff --git a/Source/WebCore/dom/Element+PointerLock.idl b/Source/WebCore/dom/Element+PointerLock.idl -index f27718c1e2b8cd0a8075e556d4cdba7d9ae8fc54..2b61721594e5435845f3151e0de345e90eafc9ea 100644 +index 9b344003de17b96d8b9ca8c7f32143a27543b1ea..2208a3f2b7d930bcd291e65b474d4c3023d2a7e4 100644 --- a/Source/WebCore/dom/Element+PointerLock.idl +++ b/Source/WebCore/dom/Element+PointerLock.idl @@ -24,6 +24,7 @@ @@ -2593,7 +2602,7 @@ index f27718c1e2b8cd0a8075e556d4cdba7d9ae8fc54..2b61721594e5435845f3151e0de345e9 + EnabledBySetting=PointerLockEnabled, Conditional=POINTER_LOCK ] partial interface Element { - undefined requestPointerLock(); + // Returns Promise if PointerLockOptionsEnabled Runtime Flag is set, otherwise returns undefined. diff --git a/Source/WebCore/dom/PointerEvent.cpp b/Source/WebCore/dom/PointerEvent.cpp index c35c7851f168954a0c5265ea218a2173b7b079a8..500b267351d2e4ac9864129650b6c00627a8ea6f 100644 --- a/Source/WebCore/dom/PointerEvent.cpp @@ -2756,10 +2765,10 @@ index dde92a4942d3f6679b6ef2455fa15d023544dfbc..c6ed18b40209195d1cf5c7785091d37f break; } diff --git a/Source/WebCore/inspector/InspectorController.cpp b/Source/WebCore/inspector/InspectorController.cpp -index 284787f7db1051968ccaf7852bf0e71228ef2e99..d1977ec28b264e964264fe26155d84005e8099aa 100644 +index 3844ae7bab48f46b77cfd85530e4ab19392a71dd..8d705215457f89711e78e3bee9c983d131b08245 100644 --- a/Source/WebCore/inspector/InspectorController.cpp +++ b/Source/WebCore/inspector/InspectorController.cpp -@@ -288,6 +288,8 @@ void InspectorController::disconnectFrontend(FrontendChannel& frontendChannel) +@@ -287,6 +287,8 @@ void InspectorController::disconnectFrontend(FrontendChannel& frontendChannel) // Unplug all instrumentations since they aren't needed now. InspectorInstrumentation::unregisterInstrumentingAgents(m_instrumentingAgents.get()); @@ -2768,7 +2777,7 @@ index 284787f7db1051968ccaf7852bf0e71228ef2e99..d1977ec28b264e964264fe26155d8400 } m_inspectorClient->frontendCountChanged(m_frontendRouter->frontendCount()); -@@ -307,6 +309,8 @@ void InspectorController::disconnectAllFrontends() +@@ -306,6 +308,8 @@ void InspectorController::disconnectAllFrontends() // The frontend should call setInspectorFrontendClient(nullptr) under closeWindow(). ASSERT(!m_inspectorFrontendClient); @@ -2777,7 +2786,7 @@ index 284787f7db1051968ccaf7852bf0e71228ef2e99..d1977ec28b264e964264fe26155d8400 if (!m_frontendRouter->hasFrontends()) return; -@@ -395,8 +399,8 @@ void InspectorController::inspect(Node* node) +@@ -394,8 +398,8 @@ void InspectorController::inspect(Node* node) if (!enabled()) return; @@ -2788,7 +2797,7 @@ index 284787f7db1051968ccaf7852bf0e71228ef2e99..d1977ec28b264e964264fe26155d8400 ensureDOMAgent().inspect(node); } -@@ -539,4 +543,24 @@ void InspectorController::didComposite(LocalFrame& frame) +@@ -538,4 +542,24 @@ void InspectorController::didComposite(LocalFrame& frame) InspectorInstrumentation::didComposite(frame); } @@ -3262,7 +3271,7 @@ index 7aa2d9e599359d9302cbdde8a7a0b9399e37d313..7b4ec6ee9adb5687e16eb0fe746a3114 { return context ? instrumentingAgents(*context) : nullptr; diff --git a/Source/WebCore/inspector/agents/InspectorDOMAgent.cpp b/Source/WebCore/inspector/agents/InspectorDOMAgent.cpp -index 8922f4e9112436011f5ed028dfb12b0ce273576b..d3299f4fb14c1ef3c67caabd27cb2d8b5339b1da 100644 +index a5167242b6b1ee9d6ccfcd81ef86a5729882d3a4..d64c560f86db46786ba47fe55654c140efd1d31b 100644 --- a/Source/WebCore/inspector/agents/InspectorDOMAgent.cpp +++ b/Source/WebCore/inspector/agents/InspectorDOMAgent.cpp @@ -65,10 +65,14 @@ @@ -3564,8 +3573,8 @@ index 8922f4e9112436011f5ed028dfb12b0ce273576b..d3299f4fb14c1ef3c67caabd27cb2d8b } Node* InspectorDOMAgent::scriptValueAsNode(JSC::JSValue value) -@@ -3178,4 +3350,57 @@ Inspector::Protocol::ErrorStringOr> In - return stats; +@@ -3183,4 +3355,57 @@ Inspector::Protocol::ErrorStringOr> In + #endif } +Protocol::ErrorStringOr InspectorDOMAgent::setInputFiles(const String& objectId, RefPtr&& files, RefPtr&& paths) { @@ -3696,7 +3705,7 @@ index 5f1dba2bc4d5c2f113a88dcc9ba479679cb79233..5616c853a99b5fdb38306a804cc0e917 void discardBindings(); diff --git a/Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp b/Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp -index cf2145f9d95fb7e1639757b0b90d1e93fb6b6f14..93da4f3e31842777238ff26ea1cf7ce8d03165ca 100644 +index 00dba5735f2f682d00f7e17ef2abddf85a4c7f90..4c2ca023d6ad04a3ccda68d5f707df8065d50419 100644 --- a/Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp +++ b/Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp @@ -59,6 +59,7 @@ @@ -3707,18 +3716,18 @@ index cf2145f9d95fb7e1639757b0b90d1e93fb6b6f14..93da4f3e31842777238ff26ea1cf7ce8 #include "Page.h" #include "PlatformStrategies.h" #include "ProgressTracker.h" -@@ -337,8 +338,8 @@ static Ref buildObjectForResourceRequest( +@@ -339,8 +340,8 @@ static Ref buildObjectForResourceRequest( .release(); if (request.httpBody() && !request.httpBody()->isEmpty()) { - auto bytes = request.httpBody()->flatten(); -- requestObject->setPostData(String::fromUTF8WithLatin1Fallback(bytes.data(), bytes.size())); +- requestObject->setPostData(String::fromUTF8WithLatin1Fallback(bytes.span())); + Vector bytes = request.httpBody()->flatten(); + requestObject->setPostData(base64EncodeToString(bytes)); } if (resourceLoader) { -@@ -391,6 +392,8 @@ RefPtr InspectorNetworkAgent::buildObjec +@@ -393,6 +394,8 @@ RefPtr InspectorNetworkAgent::buildObjec .setSource(responseSource(response.source())) .release(); @@ -3727,7 +3736,7 @@ index cf2145f9d95fb7e1639757b0b90d1e93fb6b6f14..93da4f3e31842777238ff26ea1cf7ce8 if (resourceLoader) { auto* metrics = response.deprecatedNetworkLoadMetricsOrNull(); responseObject->setTiming(buildObjectForTiming(metrics ? *metrics : NetworkLoadMetrics::emptyMetrics(), *resourceLoader)); -@@ -958,6 +961,7 @@ void InspectorNetworkAgent::continuePendingResponses() +@@ -960,6 +963,7 @@ void InspectorNetworkAgent::continuePendingResponses() Inspector::Protocol::ErrorStringOr InspectorNetworkAgent::setExtraHTTPHeaders(Ref&& headers) { @@ -3735,7 +3744,7 @@ index cf2145f9d95fb7e1639757b0b90d1e93fb6b6f14..93da4f3e31842777238ff26ea1cf7ce8 for (auto& entry : headers.get()) { auto stringValue = entry.value->asString(); if (!!stringValue) -@@ -1236,6 +1240,9 @@ Inspector::Protocol::ErrorStringOr InspectorNetworkAgent::interceptWithReq +@@ -1238,6 +1242,9 @@ Inspector::Protocol::ErrorStringOr InspectorNetworkAgent::interceptWithReq return makeUnexpected("Missing pending intercept request for given requestId"_s); auto& loader = *pendingRequest->m_loader; @@ -3745,7 +3754,7 @@ index cf2145f9d95fb7e1639757b0b90d1e93fb6b6f14..93da4f3e31842777238ff26ea1cf7ce8 ResourceRequest request = loader.request(); if (!!url) request.setURL(URL({ }, url)); -@@ -1335,14 +1342,23 @@ Inspector::Protocol::ErrorStringOr InspectorNetworkAgent::interceptRequest +@@ -1333,14 +1340,23 @@ Inspector::Protocol::ErrorStringOr InspectorNetworkAgent::interceptRequest response.setHTTPStatusCode(status); response.setHTTPStatusText(String { statusText }); HTTPHeaderMap explicitHeaders; @@ -3771,7 +3780,7 @@ index cf2145f9d95fb7e1639757b0b90d1e93fb6b6f14..93da4f3e31842777238ff26ea1cf7ce8 if (loader->reachedTerminalState()) return; -@@ -1405,6 +1421,12 @@ Inspector::Protocol::ErrorStringOr InspectorNetworkAgent::setEmulatedCondi +@@ -1403,6 +1419,12 @@ Inspector::Protocol::ErrorStringOr InspectorNetworkAgent::setEmulatedCondi #endif // ENABLE(INSPECTOR_NETWORK_THROTTLING) @@ -3806,7 +3815,7 @@ index dc7e574ee6e9256a1f75ea838d20ca7f5e9190de..5dd4464256e0f5d652fa51fd611286dd // InspectorInstrumentation void willRecalculateStyle(); diff --git a/Source/WebCore/inspector/agents/InspectorPageAgent.cpp b/Source/WebCore/inspector/agents/InspectorPageAgent.cpp -index 8fc922b0ab24e76458c959361551736c361bf390..4c3a462dbfacf1cdf9b16478ab579d8965221aa4 100644 +index 5329fd0a2c24031a74d05d7c6c342a5f8398eaae..a64e486220e4fc8e37c34856fce8c3d8dea87401 100644 --- a/Source/WebCore/inspector/agents/InspectorPageAgent.cpp +++ b/Source/WebCore/inspector/agents/InspectorPageAgent.cpp @@ -32,19 +32,26 @@ @@ -3884,9 +3893,9 @@ index 8fc922b0ab24e76458c959361551736c361bf390..4c3a462dbfacf1cdf9b16478ab579d89 + return nameToWorld; +} + - static bool decodeBuffer(const uint8_t* buffer, unsigned size, const String& textEncodingName, String* result) + static bool decodeBuffer(std::span buffer, const String& textEncodingName, String* result) { - if (buffer) { + if (buffer.data()) { @@ -334,6 +355,7 @@ InspectorPageAgent::InspectorPageAgent(PageAgentContext& context, InspectorClien , m_frontendDispatcher(makeUnique(context.frontendRouter)) , m_backendDispatcher(Inspector::PageBackendDispatcher::create(context.backendDispatcher, this)) @@ -4274,7 +4283,7 @@ index 8fc922b0ab24e76458c959361551736c361bf390..4c3a462dbfacf1cdf9b16478ab579d89 Inspector::Protocol::ErrorStringOr InspectorPageAgent::setScreenSizeOverride(std::optional&& width, std::optional&& height) { if (width.has_value() != height.has_value()) -@@ -1251,6 +1451,523 @@ Inspector::Protocol::ErrorStringOr InspectorPageAgent::setScreenSizeOverri +@@ -1251,6 +1451,519 @@ Inspector::Protocol::ErrorStringOr InspectorPageAgent::setScreenSizeOverri localMainFrame->setOverrideScreenSize(FloatSize(width.value_or(0), height.value_or(0))); return { }; } @@ -4310,16 +4319,12 @@ index 8fc922b0ab24e76458c959361551736c361bf390..4c3a462dbfacf1cdf9b16478ab579d89 + return "ApplicationAlertDialog"_s; + case AccessibilityRole::ApplicationDialog: + return "ApplicationDialog"_s; -+ case AccessibilityRole::ApplicationGroup: -+ return "ApplicationGroup"_s; + case AccessibilityRole::ApplicationLog: + return "ApplicationLog"_s; + case AccessibilityRole::ApplicationMarquee: + return "ApplicationMarquee"_s; + case AccessibilityRole::ApplicationStatus: + return "ApplicationStatus"_s; -+ case AccessibilityRole::ApplicationTextGroup: -+ return "ApplicationTextGroup"_s; + case AccessibilityRole::ApplicationTimer: + return "ApplicationTimer"_s; + case AccessibilityRole::Audio: @@ -4799,7 +4804,7 @@ index 8fc922b0ab24e76458c959361551736c361bf390..4c3a462dbfacf1cdf9b16478ab579d89 } // namespace WebCore diff --git a/Source/WebCore/inspector/agents/InspectorPageAgent.h b/Source/WebCore/inspector/agents/InspectorPageAgent.h -index f270cb7c3bcc1b5d7d646d9c6e6bda7063cf82e3..83d793622a71b441afe5962bd7c94ad85a12263f 100644 +index 371bcfcf1d0ae17471f8e69706d2f12356793418..6bc660d683a639f1d6f6a0dca8db5e058d32cd21 100644 --- a/Source/WebCore/inspector/agents/InspectorPageAgent.h +++ b/Source/WebCore/inspector/agents/InspectorPageAgent.h @@ -32,8 +32,10 @@ @@ -4923,7 +4928,7 @@ index f270cb7c3bcc1b5d7d646d9c6e6bda7063cf82e3..83d793622a71b441afe5962bd7c94ad8 + void ensureUserWorldsExistInAllFrames(const Vector&); static bool mainResourceContent(LocalFrame*, bool withBase64Encode, String* result); - static bool dataContent(const uint8_t* data, unsigned size, const String& textEncodingName, bool withBase64Encode, String* result); + static bool dataContent(std::span data, const String& textEncodingName, bool withBase64Encode, String* result); @@ -169,17 +201,21 @@ private: RefPtr m_backendDispatcher; @@ -4949,7 +4954,7 @@ index f270cb7c3bcc1b5d7d646d9c6e6bda7063cf82e3..83d793622a71b441afe5962bd7c94ad8 } // namespace WebCore diff --git a/Source/WebCore/inspector/agents/page/PageRuntimeAgent.cpp b/Source/WebCore/inspector/agents/page/PageRuntimeAgent.cpp -index 4e2613c5194137568d629dc809d6f062e9e2bc95..345876eb0eb72ffa75f5f7ea71bdcb7d71127d6f 100644 +index 61b797e08f5e6d90cc2724dd7a3b45c0f45af4f8..919a8b963d93742cc99c2739e472361deea84e4c 100644 --- a/Source/WebCore/inspector/agents/page/PageRuntimeAgent.cpp +++ b/Source/WebCore/inspector/agents/page/PageRuntimeAgent.cpp @@ -34,6 +34,7 @@ @@ -4959,7 +4964,7 @@ index 4e2613c5194137568d629dc809d6f062e9e2bc95..345876eb0eb72ffa75f5f7ea71bdcb7d +#include "FrameLoader.h" #include "InspectorPageAgent.h" #include "InstrumentingAgents.h" - #include "JSExecState.h" + #include "JSDOMWindowCustom.h" @@ -42,6 +43,7 @@ #include "Page.h" #include "PageConsoleClient.h" @@ -5136,7 +5141,7 @@ index edfc601a36f006122f26946de5b3a60573a07968..794a6c389be8af23989a54696d573123 protected: static SameSiteInfo sameSiteInfo(const Document&, IsForDOMCookieAccess = IsForDOMCookieAccess::No); diff --git a/Source/WebCore/loader/DocumentLoader.cpp b/Source/WebCore/loader/DocumentLoader.cpp -index e85ff270c6f646f5f8f7e02ce5346a1f0b5cadaa..84214d0b81ad08f8039522b9a48ac8b34d933f38 100644 +index 90023ca4ebad0d8608b74434ca5d870ffeb00871..7360ea6857f98e60bdfa74ad4a0d595958cfc11f 100644 --- a/Source/WebCore/loader/DocumentLoader.cpp +++ b/Source/WebCore/loader/DocumentLoader.cpp @@ -763,8 +763,10 @@ void DocumentLoader::willSendRequest(ResourceRequest&& newRequest, const Resourc @@ -5171,7 +5176,7 @@ index e85ff270c6f646f5f8f7e02ce5346a1f0b5cadaa..84214d0b81ad08f8039522b9a48ac8b3 { ASSERT(navigationID); diff --git a/Source/WebCore/loader/DocumentLoader.h b/Source/WebCore/loader/DocumentLoader.h -index 875b1833d5c8a3c7402070de33587630114e1a93..b61fa5f72c3aab410b1d3a4b58dd268d996f5311 100644 +index aa98ba7e3eb896b65a156fe8f75ae3c0bc99f246..00531c35e1d5041d3bcc13c54308eb7eff387baf 100644 --- a/Source/WebCore/loader/DocumentLoader.h +++ b/Source/WebCore/loader/DocumentLoader.h @@ -191,6 +191,8 @@ public: @@ -5184,10 +5189,10 @@ index 875b1833d5c8a3c7402070de33587630114e1a93..b61fa5f72c3aab410b1d3a4b58dd268d CheckedPtr checkedFrameLoader() const; WEBCORE_EXPORT SubresourceLoader* mainResourceLoader() const; diff --git a/Source/WebCore/loader/FrameLoader.cpp b/Source/WebCore/loader/FrameLoader.cpp -index 504ef796ccbc570fc44b441c69a4ddc4b89fee75..9c3a168dd937dbd274ecd758398e82729a47911a 100644 +index 4882d1ded68a2e88595c1ce7e2a6891f066b3457..e630a3cd7022449e6eec9516f7bb5e63f3085b0e 100644 --- a/Source/WebCore/loader/FrameLoader.cpp +++ b/Source/WebCore/loader/FrameLoader.cpp -@@ -1310,6 +1310,7 @@ void FrameLoader::loadInSameDocument(URL url, RefPtr stat +@@ -1355,6 +1355,7 @@ void FrameLoader::loadInSameDocument(URL url, RefPtr stat } m_client->dispatchDidNavigateWithinPage(); @@ -5195,7 +5200,7 @@ index 504ef796ccbc570fc44b441c69a4ddc4b89fee75..9c3a168dd937dbd274ecd758398e8272 document->statePopped(stateObject ? stateObject.releaseNonNull() : SerializedScriptValue::nullValue()); m_client->dispatchDidPopStateWithinPage(); -@@ -1775,6 +1776,8 @@ void FrameLoader::loadWithDocumentLoader(DocumentLoader* loader, FrameLoadType t +@@ -1820,6 +1821,8 @@ void FrameLoader::loadWithDocumentLoader(DocumentLoader* loader, FrameLoadType t const String& httpMethod = loader->request().httpMethod(); if (shouldPerformFragmentNavigation(isFormSubmission, httpMethod, policyChecker().loadType(), newURL)) { @@ -5204,7 +5209,7 @@ index 504ef796ccbc570fc44b441c69a4ddc4b89fee75..9c3a168dd937dbd274ecd758398e8272 RefPtr oldDocumentLoader = m_documentLoader; NavigationAction action { frame->protectedDocument().releaseNonNull(), loader->request(), InitiatedByMainFrame::Unknown, loader->isRequestFromClientOrUserInput(), policyChecker().loadType(), isFormSubmission }; oldDocumentLoader->setTriggeringAction(WTFMove(action)); -@@ -1808,7 +1811,9 @@ void FrameLoader::loadWithDocumentLoader(DocumentLoader* loader, FrameLoadType t +@@ -1853,7 +1856,9 @@ void FrameLoader::loadWithDocumentLoader(DocumentLoader* loader, FrameLoadType t } RELEASE_ASSERT(!isBackForwardLoadType(policyChecker().loadType()) || history().provisionalItem()); @@ -5214,7 +5219,7 @@ index 504ef796ccbc570fc44b441c69a4ddc4b89fee75..9c3a168dd937dbd274ecd758398e8272 continueLoadAfterNavigationPolicy(request, RefPtr { weakFormState.get() }.get(), navigationPolicyDecision, allowNavigationToInvalidURL); completionHandler(); }, PolicyDecisionMode::Asynchronous); -@@ -3066,14 +3071,19 @@ String FrameLoader::userAgent(const URL& url) const +@@ -3115,14 +3120,19 @@ String FrameLoader::userAgent(const URL& url) const String FrameLoader::navigatorPlatform() const { @@ -5236,7 +5241,7 @@ index 504ef796ccbc570fc44b441c69a4ddc4b89fee75..9c3a168dd937dbd274ecd758398e8272 } void FrameLoader::dispatchOnloadEvents() -@@ -3514,6 +3524,8 @@ void FrameLoader::receivedMainResourceError(const ResourceError& error) +@@ -3572,6 +3582,8 @@ void FrameLoader::receivedMainResourceError(const ResourceError& error) checkCompleted(); if (frame->page()) checkLoadComplete(); @@ -5245,7 +5250,7 @@ index 504ef796ccbc570fc44b441c69a4ddc4b89fee75..9c3a168dd937dbd274ecd758398e8272 } void FrameLoader::continueFragmentScrollAfterNavigationPolicy(const ResourceRequest& request, const SecurityOrigin* requesterOrigin, bool shouldContinue) -@@ -4367,9 +4379,6 @@ String FrameLoader::referrer() const +@@ -4425,9 +4437,6 @@ String FrameLoader::referrer() const void FrameLoader::dispatchDidClearWindowObjectsInAllWorlds() { @@ -5255,7 +5260,7 @@ index 504ef796ccbc570fc44b441c69a4ddc4b89fee75..9c3a168dd937dbd274ecd758398e8272 Vector> worlds; ScriptController::getAllWorlds(worlds); for (auto& world : worlds) -@@ -4379,13 +4388,12 @@ void FrameLoader::dispatchDidClearWindowObjectsInAllWorlds() +@@ -4437,13 +4446,12 @@ void FrameLoader::dispatchDidClearWindowObjectsInAllWorlds() void FrameLoader::dispatchDidClearWindowObjectInWorld(DOMWrapperWorld& world) { Ref frame = m_frame.get(); @@ -5335,10 +5340,10 @@ index b74c5258454b0df9f74aa8a5297674b733925685..b6c3999745368c7f7e2e6176bfca6dc0 void ProgressTracker::incrementProgress(ResourceLoaderIdentifier identifier, const ResourceResponse& response) diff --git a/Source/WebCore/loader/cache/CachedResourceLoader.cpp b/Source/WebCore/loader/cache/CachedResourceLoader.cpp -index a2220c148173e75ab575dbca17506243523a7f7e..1bd9e2d210c4b7c636666e7584c0d33f2102345b 100644 +index f0d0aeb93ca42f7178a9dc07beeba911a38c32fe..1f82595cbbbc4f32b5cc4330b4d71e05d51b27a0 100644 --- a/Source/WebCore/loader/cache/CachedResourceLoader.cpp +++ b/Source/WebCore/loader/cache/CachedResourceLoader.cpp -@@ -1061,8 +1061,11 @@ ResourceErrorOr> CachedResourceLoader::requ +@@ -1054,8 +1054,11 @@ ResourceErrorOr> CachedResourceLoader::requ request.updateReferrerPolicy(document() ? document()->referrerPolicy() : ReferrerPolicy::Default); @@ -5352,7 +5357,7 @@ index a2220c148173e75ab575dbca17506243523a7f7e..1bd9e2d210c4b7c636666e7584c0d33f Ref page = *frame->page(); -@@ -1670,8 +1673,9 @@ Vector> CachedResourceLoader::allCachedSVGImages() const +@@ -1663,8 +1666,9 @@ Vector> CachedResourceLoader::allCachedSVGImages() const ResourceErrorOr> CachedResourceLoader::preload(CachedResource::Type type, CachedResourceRequest&& request) { @@ -5365,10 +5370,10 @@ index a2220c148173e75ab575dbca17506243523a7f7e..1bd9e2d210c4b7c636666e7584c0d33f ASSERT(m_document); if (request.charset().isEmpty() && m_document && (type == CachedResource::Type::Script || type == CachedResource::Type::CSSStyleSheet)) diff --git a/Source/WebCore/page/ChromeClient.h b/Source/WebCore/page/ChromeClient.h -index ba86781050d91cdc6b67f088bfd199b29bbc7a3f..b13a833c0712d8d2b6c8b3a0cee3fa5827d04de2 100644 +index 20666cc080e04b0fa12e654ac357531f18c7c1df..3cf1823363aacdc014326957f98f3435cf505beb 100644 --- a/Source/WebCore/page/ChromeClient.h +++ b/Source/WebCore/page/ChromeClient.h -@@ -334,7 +334,7 @@ public: +@@ -335,7 +335,7 @@ public: #endif #if ENABLE(ORIENTATION_EVENTS) @@ -5378,10 +5383,10 @@ index ba86781050d91cdc6b67f088bfd199b29bbc7a3f..b13a833c0712d8d2b6c8b3a0cee3fa58 #if ENABLE(INPUT_TYPE_COLOR) diff --git a/Source/WebCore/page/EventHandler.cpp b/Source/WebCore/page/EventHandler.cpp -index ac9e55cc26b95ceb6b8a3bd62b984ccf4e96fbec..37edb3407986ba04a82c0d1acd1662e5e835fb6a 100644 +index 1171407b2f308431ba948ec477a56c90e66911e8..a96feb7fe5a299adaeb950a11512bdf26b1f2836 100644 --- a/Source/WebCore/page/EventHandler.cpp +++ b/Source/WebCore/page/EventHandler.cpp -@@ -4322,6 +4322,12 @@ bool EventHandler::handleDrag(const MouseEventWithHitTestResults& event, CheckDr +@@ -4325,6 +4325,12 @@ bool EventHandler::handleDrag(const MouseEventWithHitTestResults& event, CheckDr if (!document) return false; @@ -5394,7 +5399,7 @@ index ac9e55cc26b95ceb6b8a3bd62b984ccf4e96fbec..37edb3407986ba04a82c0d1acd1662e5 dragState().dataTransfer = DataTransfer::createForDrag(*document); auto hasNonDefaultPasteboardData = HasNonDefaultPasteboardData::No; -@@ -4948,7 +4954,7 @@ HandleUserInputEventResult EventHandler::handleTouchEvent(const PlatformTouchEve +@@ -4951,7 +4957,7 @@ HandleUserInputEventResult EventHandler::handleTouchEvent(const PlatformTouchEve // Increment the platform touch id by 1 to avoid storing a key of 0 in the hashmap. unsigned touchPointTargetKey = point.id() + 1; @@ -5403,7 +5408,7 @@ index ac9e55cc26b95ceb6b8a3bd62b984ccf4e96fbec..37edb3407986ba04a82c0d1acd1662e5 bool pointerCancelled = false; #endif RefPtr touchTarget; -@@ -4995,7 +5001,7 @@ HandleUserInputEventResult EventHandler::handleTouchEvent(const PlatformTouchEve +@@ -4998,7 +5004,7 @@ HandleUserInputEventResult EventHandler::handleTouchEvent(const PlatformTouchEve // we also remove it from the map. touchTarget = m_originatingTouchPointTargets.take(touchPointTargetKey); @@ -5412,7 +5417,7 @@ index ac9e55cc26b95ceb6b8a3bd62b984ccf4e96fbec..37edb3407986ba04a82c0d1acd1662e5 HitTestResult result = hitTestResultAtPoint(pagePoint, hitType | HitTestRequest::Type::AllowChildFrameContent); pointerTarget = result.targetElement(); pointerCancelled = (pointerTarget != touchTarget); -@@ -5018,7 +5024,7 @@ HandleUserInputEventResult EventHandler::handleTouchEvent(const PlatformTouchEve +@@ -5021,7 +5027,7 @@ HandleUserInputEventResult EventHandler::handleTouchEvent(const PlatformTouchEve if (!targetFrame) continue; @@ -5473,7 +5478,7 @@ index e4f52ca1cb3228868bc77a5498c87e1f2af59ce4..9ce6b102570cdcd2775ebf5adcd1650d struct SnapshotOptions { diff --git a/Source/WebCore/page/History.cpp b/Source/WebCore/page/History.cpp -index fc2312697a19a2dca1907f9ddaffef26a2918113..ab51a74df8ff444302c46f85f0bc8ab0f791d1dc 100644 +index 28dacedeebc77b2da6428cdbe166581c96348dfa..9c5bfaf9c81c2e5904f69071ee674363ee9decf8 100644 --- a/Source/WebCore/page/History.cpp +++ b/Source/WebCore/page/History.cpp @@ -32,6 +32,7 @@ @@ -5493,7 +5498,7 @@ index fc2312697a19a2dca1907f9ddaffef26a2918113..ab51a74df8ff444302c46f85f0bc8ab0 if (stateObjectType == StateObjectType::Push) { frame->loader().history().pushState(WTFMove(data), fullURL.string()); diff --git a/Source/WebCore/page/LocalFrame.cpp b/Source/WebCore/page/LocalFrame.cpp -index 1261ef00be22e57714d52a718a1a463aff4b902e..1b6eaf61ebf7f3987b0b5785637341016eb2ff44 100644 +index 9f480cb9a6000333711f0e9630522ddc77534015..f2d62e42e926b0d1d53f3a9feb3ce4ea93507ca3 100644 --- a/Source/WebCore/page/LocalFrame.cpp +++ b/Source/WebCore/page/LocalFrame.cpp @@ -40,6 +40,7 @@ @@ -5512,7 +5517,7 @@ index 1261ef00be22e57714d52a718a1a463aff4b902e..1b6eaf61ebf7f3987b0b578563734101 #include "HTMLAttachmentElement.h" #include "HTMLFormControlElement.h" #include "HTMLFormElement.h" -@@ -76,6 +78,7 @@ +@@ -77,6 +79,7 @@ #include "Logging.h" #include "Navigator.h" #include "NodeList.h" @@ -5520,7 +5525,7 @@ index 1261ef00be22e57714d52a718a1a463aff4b902e..1b6eaf61ebf7f3987b0b578563734101 #include "NodeTraversal.h" #include "Page.h" #include "ProcessWarming.h" -@@ -186,6 +189,7 @@ LocalFrame::LocalFrame(Page& page, UniqueRef&& frameLoad +@@ -187,6 +190,7 @@ LocalFrame::LocalFrame(Page& page, UniqueRef&& frameLoad void LocalFrame::init() { @@ -5528,7 +5533,7 @@ index 1261ef00be22e57714d52a718a1a463aff4b902e..1b6eaf61ebf7f3987b0b578563734101 checkedLoader()->init(); } -@@ -420,7 +424,7 @@ void LocalFrame::orientationChanged() +@@ -411,7 +415,7 @@ void LocalFrame::orientationChanged() IntDegrees LocalFrame::orientation() const { if (RefPtr page = this->page()) @@ -5537,7 +5542,7 @@ index 1261ef00be22e57714d52a718a1a463aff4b902e..1b6eaf61ebf7f3987b0b578563734101 return 0; } #endif // ENABLE(ORIENTATION_EVENTS) -@@ -1341,6 +1345,362 @@ String LocalFrame::customUserAgentAsSiteSpecificQuirks() const +@@ -1340,6 +1344,362 @@ String LocalFrame::customUserAgentAsSiteSpecificQuirks() const return { }; } @@ -5901,7 +5906,7 @@ index 1261ef00be22e57714d52a718a1a463aff4b902e..1b6eaf61ebf7f3987b0b578563734101 #undef FRAME_RELEASE_LOG_ERROR diff --git a/Source/WebCore/page/LocalFrame.h b/Source/WebCore/page/LocalFrame.h -index 8664b164cf806585025da5d60ad1440ee4723482..8e0a986d16eb6cd6bb4cf381d18434b6acf1ab61 100644 +index 976a7e01a1a83902d2eddcdbe044c1ec1cd9a7b8..d548c31e6beffe704b8093669ee07d576941a50a 100644 --- a/Source/WebCore/page/LocalFrame.h +++ b/Source/WebCore/page/LocalFrame.h @@ -28,8 +28,10 @@ @@ -5980,10 +5985,10 @@ index 8664b164cf806585025da5d60ad1440ee4723482..8e0a986d16eb6cd6bb4cf381d18434b6 ViewportArguments m_viewportArguments; diff --git a/Source/WebCore/page/Page.cpp b/Source/WebCore/page/Page.cpp -index 2e0f4477ca7e4874b4b5b38fe1e8fefd2bc75cd8..c0e9358b9cdbb92c273832edbb560236af24e80c 100644 +index 2da22620311314dc67bec3563c7f1b6525bd7b28..e7c530d193fe0c318dfa89f5ae72e3598bdf44bd 100644 --- a/Source/WebCore/page/Page.cpp +++ b/Source/WebCore/page/Page.cpp -@@ -554,6 +554,45 @@ void Page::setOverrideViewportArguments(const std::optional& +@@ -569,6 +569,45 @@ void Page::setOverrideViewportArguments(const std::optional& document->updateViewportArguments(); } @@ -6029,7 +6034,7 @@ index 2e0f4477ca7e4874b4b5b38fe1e8fefd2bc75cd8..c0e9358b9cdbb92c273832edbb560236 ScrollingCoordinator* Page::scrollingCoordinator() { if (!m_scrollingCoordinator && m_settings->scrollingCoordinatorEnabled()) { -@@ -3834,6 +3873,26 @@ void Page::setUseDarkAppearanceOverride(std::optional valueOverride) +@@ -3870,6 +3909,26 @@ void Page::setUseDarkAppearanceOverride(std::optional valueOverride) #endif } @@ -6057,10 +6062,10 @@ index 2e0f4477ca7e4874b4b5b38fe1e8fefd2bc75cd8..c0e9358b9cdbb92c273832edbb560236 { if (insets == m_fullscreenInsets) diff --git a/Source/WebCore/page/Page.h b/Source/WebCore/page/Page.h -index 1941a2ed150ad039c4e7b02fa826a3be6c55a0bd..5c5610ef3410a55b8f1b684ff68be456c11a0db8 100644 +index 551ffa245a63f05cd7d58a86048ed22c1feb6205..cd1ce84ec63f5ed8ae75178f79c35b9fd91b37f7 100644 --- a/Source/WebCore/page/Page.h +++ b/Source/WebCore/page/Page.h -@@ -312,6 +312,9 @@ public: +@@ -316,6 +316,9 @@ public: const std::optional& overrideViewportArguments() const { return m_overrideViewportArguments; } WEBCORE_EXPORT void setOverrideViewportArguments(const std::optional&); @@ -6070,7 +6075,7 @@ index 1941a2ed150ad039c4e7b02fa826a3be6c55a0bd..5c5610ef3410a55b8f1b684ff68be456 static void refreshPlugins(bool reload); WEBCORE_EXPORT PluginData& pluginData(); void clearPluginData(); -@@ -375,6 +378,10 @@ public: +@@ -380,6 +383,10 @@ public: #if ENABLE(DRAG_SUPPORT) DragController& dragController() { return m_dragController.get(); } const DragController& dragController() const { return m_dragController.get(); } @@ -6081,7 +6086,7 @@ index 1941a2ed150ad039c4e7b02fa826a3be6c55a0bd..5c5610ef3410a55b8f1b684ff68be456 #endif FocusController& focusController() const { return *m_focusController; } WEBCORE_EXPORT CheckedRef checkedFocusController() const; -@@ -555,6 +562,10 @@ public: +@@ -563,6 +570,10 @@ public: WEBCORE_EXPORT void effectiveAppearanceDidChange(bool useDarkAppearance, bool useElevatedUserInterfaceLevel); bool defaultUseDarkAppearance() const { return m_useDarkAppearance; } void setUseDarkAppearanceOverride(std::optional); @@ -6092,7 +6097,7 @@ index 1941a2ed150ad039c4e7b02fa826a3be6c55a0bd..5c5610ef3410a55b8f1b684ff68be456 #if ENABLE(TEXT_AUTOSIZING) float textAutosizingWidth() const { return m_textAutosizingWidth; } -@@ -1003,6 +1014,11 @@ public: +@@ -1011,6 +1022,11 @@ public: WEBCORE_EXPORT void setInteractionRegionsEnabled(bool); #endif @@ -6104,7 +6109,7 @@ index 1941a2ed150ad039c4e7b02fa826a3be6c55a0bd..5c5610ef3410a55b8f1b684ff68be456 #if ENABLE(DEVICE_ORIENTATION) && PLATFORM(IOS_FAMILY) DeviceOrientationUpdateProvider* deviceOrientationUpdateProvider() const { return m_deviceOrientationUpdateProvider.get(); } #endif -@@ -1166,6 +1182,9 @@ private: +@@ -1181,6 +1197,9 @@ private: #if ENABLE(DRAG_SUPPORT) UniqueRef m_dragController; @@ -6114,7 +6119,7 @@ index 1941a2ed150ad039c4e7b02fa826a3be6c55a0bd..5c5610ef3410a55b8f1b684ff68be456 #endif std::unique_ptr m_focusController; #if ENABLE(CONTEXT_MENUS) -@@ -1241,6 +1260,8 @@ private: +@@ -1259,6 +1278,8 @@ private: bool m_useElevatedUserInterfaceLevel { false }; bool m_useDarkAppearance { false }; std::optional m_useDarkAppearanceOverride; @@ -6123,7 +6128,7 @@ index 1941a2ed150ad039c4e7b02fa826a3be6c55a0bd..5c5610ef3410a55b8f1b684ff68be456 #if ENABLE(TEXT_AUTOSIZING) float m_textAutosizingWidth { 0 }; -@@ -1419,6 +1440,11 @@ private: +@@ -1437,6 +1458,11 @@ private: #endif std::optional m_overrideViewportArguments; @@ -6136,10 +6141,10 @@ index 1941a2ed150ad039c4e7b02fa826a3be6c55a0bd..5c5610ef3410a55b8f1b684ff68be456 #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 98f3da2b75dce250749bbf206d64d1acf7790c69..8d28363676fdc8f52139b6e326119a03379aac66 100644 +index 18e3cde7b9ae368de4b87c88c2f8324b77cbd7c8..1ebc51b6d81fc6ae17124e7be7da039609df03d0 100644 --- a/Source/WebCore/page/PageConsoleClient.cpp +++ b/Source/WebCore/page/PageConsoleClient.cpp -@@ -434,4 +434,9 @@ Ref PageConsoleClient::protectedPage() const +@@ -439,4 +439,9 @@ Ref PageConsoleClient::protectedPage() const return m_page.get(); } @@ -6150,10 +6155,10 @@ index 98f3da2b75dce250749bbf206d64d1acf7790c69..8d28363676fdc8f52139b6e326119a03 + } // namespace WebCore diff --git a/Source/WebCore/page/PageConsoleClient.h b/Source/WebCore/page/PageConsoleClient.h -index e9b4f0bca732d0448b3f5e439ca52625277cef64..cb21a4d14aaed660cf6a9398a6b5f3b6d1c0c23d 100644 +index 6ee10d6ca68ad8ea93ae45adb0876c80953d3278..d4e14d54af6cd21fc5649d18dbc6af2020fae4a2 100644 --- a/Source/WebCore/page/PageConsoleClient.h +++ b/Source/WebCore/page/PageConsoleClient.h -@@ -82,6 +82,7 @@ private: +@@ -85,6 +85,7 @@ private: void record(JSC::JSGlobalObject*, Ref&&) override; void recordEnd(JSC::JSGlobalObject*, Ref&&) override; void screenshot(JSC::JSGlobalObject*, Ref&&) override; @@ -6256,7 +6261,7 @@ index 4e4dfdebe954bf3f047d3a86a758dfd0913f732e..da2bcd0256cdfc2ba28fb07094abd0b6 } diff --git a/Source/WebCore/page/csp/ContentSecurityPolicy.cpp b/Source/WebCore/page/csp/ContentSecurityPolicy.cpp -index ad0c3f33aa674454f270899400cc0e8e4421a874..6c68e218b27b117145324b10572393854d48ead0 100644 +index a35951b3150fe859450c5f781e44032078ca5f74..7fd0c71777a3fb451f3bd97b16911c01e5aa2203 100644 --- a/Source/WebCore/page/csp/ContentSecurityPolicy.cpp +++ b/Source/WebCore/page/csp/ContentSecurityPolicy.cpp @@ -336,6 +336,8 @@ bool ContentSecurityPolicy::allowContentSecurityPolicySourceStarToMatchAnyProtoc @@ -6563,10 +6568,10 @@ index ae46341ba71c7f6df7c607bd852338cdb7f83fe1..b318c0771192344a6891c1f097cb0b93 +} // namespace WebCore +#endif diff --git a/Source/WebCore/platform/PlatformScreen.h b/Source/WebCore/platform/PlatformScreen.h -index 93b1d7907a2ec5ca59ffad0e3f5d562ea669473e..11debfb941710bc41fc8d222d7dca0d18239bcdd 100644 +index 6c64c7040eb190c3d67380070e884a8230029c26..d0f8341c538cbc2323ac0074a5ef3226d00a5fd6 100644 --- a/Source/WebCore/platform/PlatformScreen.h +++ b/Source/WebCore/platform/PlatformScreen.h -@@ -150,13 +150,18 @@ WEBCORE_EXPORT float screenScaleFactor(UIScreen * = nullptr); +@@ -151,13 +151,18 @@ WEBCORE_EXPORT float screenScaleFactor(UIScreen * = nullptr); #endif #if ENABLE(TOUCH_EVENTS) @@ -6628,7 +6633,7 @@ index e280025043b3c03c3974289e62ef7cc88ebfa2c7..077a4ab4aa5b688937ed4d5018745aa6 static const unsigned thumbBorderSize = 1; static const unsigned overlayThumbSize = 3; diff --git a/Source/WebCore/platform/graphics/cairo/ImageBufferUtilitiesCairo.cpp b/Source/WebCore/platform/graphics/cairo/ImageBufferUtilitiesCairo.cpp -index a126eaa294ef640841f62a3f0d9364b733236e6b..f5b81118b2b430b87492f1c3669ffff2d563d721 100644 +index d137ffd1a8ed0b788bd28197c6d7e9f7d14e852f..dcf8bf3f7ee6b037a370712e2ac36b6e2e4bbebc 100644 --- a/Source/WebCore/platform/graphics/cairo/ImageBufferUtilitiesCairo.cpp +++ b/Source/WebCore/platform/graphics/cairo/ImageBufferUtilitiesCairo.cpp @@ -48,6 +48,13 @@ @@ -6703,7 +6708,7 @@ index a126eaa294ef640841f62a3f0d9364b733236e6b..f5b81118b2b430b87492f1c3669ffff2 + jpeg_destroy_compress(&info); + + Vector output; -+ output.append(bufferPtr, bufferSize); ++ output.append(std::span { bufferPtr, bufferSize }); + // Cannot use unique_ptr as bufferPtr changes during compression. GUniquePtr would work + // but it's under GLib and won't work on Windows. + free(bufferPtr); @@ -6723,7 +6728,7 @@ index a126eaa294ef640841f62a3f0d9364b733236e6b..f5b81118b2b430b87492f1c3669ffff2 if (!image || !encodeImage(image, mimeType, &encodedImage)) return { }; diff --git a/Source/WebCore/platform/graphics/cg/ImageBufferUtilitiesCG.h b/Source/WebCore/platform/graphics/cg/ImageBufferUtilitiesCG.h -index 076b61642867584cc02cb7263026ff94555adf64..e56cd4cb92e51e48bfbb25f6c8bba6fbe404bac7 100644 +index a82b748682f984fcdd4f5413d0254e0f5573f043..2c3d4bba92c63235c124a400d89455499aa3a189 100644 --- a/Source/WebCore/platform/graphics/cg/ImageBufferUtilitiesCG.h +++ b/Source/WebCore/platform/graphics/cg/ImageBufferUtilitiesCG.h @@ -38,7 +38,7 @@ WEBCORE_EXPORT uint8_t verifyImageBufferIsBigEnough(const void* buffer, size_t b @@ -6733,7 +6738,7 @@ index 076b61642867584cc02cb7263026ff94555adf64..e56cd4cb92e51e48bfbb25f6c8bba6fb -Vector encodeData(CGImageRef, const String& mimeType, std::optional quality); +WEBCORE_EXPORT Vector encodeData(CGImageRef, const String& mimeType, std::optional quality); Vector encodeData(const PixelBuffer&, const String& mimeType, std::optional quality); - Vector encodeData(const std::span&, const String& mimeType, std::optional quality); + Vector encodeData(std::span, const String& mimeType, std::optional quality); diff --git a/Source/WebCore/platform/graphics/filters/software/FEComponentTransferSoftwareApplier.h b/Source/WebCore/platform/graphics/filters/software/FEComponentTransferSoftwareApplier.h index b60f9a64bacc8282860da6de299b75aeb295b9b5..55bd017c03c6478ca334bd5ef164160fef5d5302 100644 @@ -6748,7 +6753,7 @@ index b60f9a64bacc8282860da6de299b75aeb295b9b5..55bd017c03c6478ca334bd5ef164160f namespace WebCore { diff --git a/Source/WebCore/platform/graphics/win/ComplexTextControllerUniscribe.cpp b/Source/WebCore/platform/graphics/win/ComplexTextControllerUniscribe.cpp -index 7b9d3c85fa1f76e2b53efc712f98866e6d892d4f..40e21fe75fd53d40e388a31eb10a1941347b7776 100644 +index 3f96ccee98a29188e4af376484ab6514b319ddf8..20d9ba661aa10adada5ef5688854b4bc3c0f0702 100644 --- a/Source/WebCore/platform/graphics/win/ComplexTextControllerUniscribe.cpp +++ b/Source/WebCore/platform/graphics/win/ComplexTextControllerUniscribe.cpp @@ -169,6 +169,33 @@ static Vector stringIndicesFromClusters(const Vector& clusters, @@ -6795,7 +6800,7 @@ index 7b9d3c85fa1f76e2b53efc712f98866e6d892d4f..40e21fe75fd53d40e388a31eb10a1941 // Determine the string for this item. const UChar* str = cp + items[i].iCharPos; diff --git a/Source/WebCore/platform/gtk/PlatformKeyboardEventGtk.cpp b/Source/WebCore/platform/gtk/PlatformKeyboardEventGtk.cpp -index 62ff097c43f0fcf0ad4f25376da113de2f1754c6..49923d505d6d41c38520431a92dc905b2e608708 100644 +index 58f2ac6c28396289c55493c7a78b2b4709e5f129..cf9687900fdeeebe9d829907d121da2495722bae 100644 --- a/Source/WebCore/platform/gtk/PlatformKeyboardEventGtk.cpp +++ b/Source/WebCore/platform/gtk/PlatformKeyboardEventGtk.cpp @@ -37,7 +37,9 @@ @@ -7056,10 +7061,10 @@ index 62ff097c43f0fcf0ad4f25376da113de2f1754c6..49923d505d6d41c38520431a92dc905b { switch (val) { diff --git a/Source/WebCore/platform/gtk/PlatformScreenGtk.cpp b/Source/WebCore/platform/gtk/PlatformScreenGtk.cpp -index 9049189fde4e939feff4db303b0aa25eadeb7180..efa236e9b8330456889fb4c888ba5f3905d7e557 100644 +index ae1da37330aa06a8f660876ba415ff2821f59813..c358a925347187181fbe1b381428c7bd0018455c 100644 --- a/Source/WebCore/platform/gtk/PlatformScreenGtk.cpp +++ b/Source/WebCore/platform/gtk/PlatformScreenGtk.cpp -@@ -117,7 +117,7 @@ bool screenSupportsExtendedColor(Widget*) +@@ -124,7 +124,7 @@ bool screenSupportsExtendedColor(Widget*) } #if ENABLE(TOUCH_EVENTS) @@ -7068,7 +7073,7 @@ index 9049189fde4e939feff4db303b0aa25eadeb7180..efa236e9b8330456889fb4c888ba5f39 { auto* display = gdk_display_get_default(); if (!display) -@@ -127,7 +127,7 @@ bool screenHasTouchDevice() +@@ -134,7 +134,7 @@ bool screenHasTouchDevice() return seat ? gdk_seat_get_capabilities(seat) & GDK_SEAT_CAPABILITY_TOUCH : true; } @@ -7547,7 +7552,7 @@ index e187936cbef017c080d1dfa14de439b3f5bc2cf8..270c237c8db2f6809719ecfd54a95306 { switch (val) { diff --git a/Source/WebCore/platform/libwpe/PlatformPasteboardLibWPE.cpp b/Source/WebCore/platform/libwpe/PlatformPasteboardLibWPE.cpp -index 93db57fd75b8fcac1a745f62294e27c97e040ab0..02411ac6bb361c2677c269945f665e0a92ccb902 100644 +index c62e88f8c3aa40f01618cdaf0c0e22a2404b17ad..02411ac6bb361c2677c269945f665e0a92ccb902 100644 --- a/Source/WebCore/platform/libwpe/PlatformPasteboardLibWPE.cpp +++ b/Source/WebCore/platform/libwpe/PlatformPasteboardLibWPE.cpp @@ -31,10 +31,18 @@ @@ -7578,7 +7583,7 @@ index 93db57fd75b8fcac1a745f62294e27c97e040ab0..02411ac6bb361c2677c269945f665e0a - - for (unsigned i = 0; i < pasteboardTypes.length; ++i) { - auto& typeString = pasteboardTypes.strings[i]; -- types.append(String(typeString.data, typeString.length)); +- types.append(String({ typeString.data, typeString.length })); - } - - wpe_pasteboard_string_vector_free(&pasteboardTypes); @@ -7593,7 +7598,7 @@ index 93db57fd75b8fcac1a745f62294e27c97e040ab0..02411ac6bb361c2677c269945f665e0a - if (!string.length) - return String(); - -- String returnValue(string.data, string.length); +- String returnValue({ string.data, string.length }); - - wpe_pasteboard_string_free(&string); - return returnValue; @@ -7664,7 +7669,7 @@ index 0552842dbe3f3a2c12a504178f5a8ca977e1c4db..2ef3b1b459d8a9b4e86b4556feeb4f07 class WEBCORE_EXPORT LibWebRTCProviderGStreamer : public LibWebRTCProvider { diff --git a/Source/WebCore/platform/network/HTTPHeaderMap.cpp b/Source/WebCore/platform/network/HTTPHeaderMap.cpp -index 35ade40b37f0c476815535541118f9246ed199cd..2bd1444f9a5e9a14ab3d6acbc020434e1f55ede1 100644 +index 34caadc74c1ad6b411e9043289fece53b9757f17..1e8ec2fe9f16ddd0a33e261172689a9d35ec5194 100644 --- a/Source/WebCore/platform/network/HTTPHeaderMap.cpp +++ b/Source/WebCore/platform/network/HTTPHeaderMap.cpp @@ -235,8 +235,11 @@ void HTTPHeaderMap::add(HTTPHeaderName name, const String& value) @@ -7681,7 +7686,7 @@ 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 d044695c67cc56999c6e0f71dcccf5ce65c7dd2f..3ca5d2ad1d8993958b198cc78eb40cfb6f6483dc 100644 +index e745131ddc12d23cd5e2429f565f910ad3520e82..dd23b06a3ceab1675e7e59d8642abc589c360d2a 100644 --- a/Source/WebCore/platform/network/NetworkStorageSession.h +++ b/Source/WebCore/platform/network/NetworkStorageSession.h @@ -167,6 +167,8 @@ public: @@ -7775,7 +7780,7 @@ index 203c591edc985e99ec7dc7a2bfaf69c92d3de99c..461b774d446528b7259ffc6ea3982d17 ResourceResponseBase::Source source; ResourceResponseBase::Type type; diff --git a/Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm b/Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm -index 7103740892b1f4b49a713b02308932e088c9a646..ca4d8fd2c993c48743bccaa3e6dbf4a83b17e97b 100644 +index 305080a5c298eaa1ef4644bdc6d90e243bcd061d..e3cbec55b164a49b9ed92b66ff70134618ab53f5 100644 --- a/Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm +++ b/Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm @@ -518,6 +518,22 @@ bool NetworkStorageSession::setCookieFromDOM(const URL& firstParty, const SameSi @@ -7858,7 +7863,7 @@ index bc9c731a0e69c4923bb8b4bdda088c2be30b3f1c..2088662fb2ce29b7ed843586460630fb void send(UniqueArray&&, size_t); diff --git a/Source/WebCore/platform/network/curl/CurlStreamScheduler.cpp b/Source/WebCore/platform/network/curl/CurlStreamScheduler.cpp -index 2032a40640bd944ed7e3255c8d4f1af8889a1b02..1283c85ec2e431144168504fd9cc23e0d147fdfe 100644 +index 048cd352dd9b4cc952337308337a4bd9c31f00f1..de54623b601aea9fbd6a88f5c646b20524b8ee2b 100644 --- a/Source/WebCore/platform/network/curl/CurlStreamScheduler.cpp +++ b/Source/WebCore/platform/network/curl/CurlStreamScheduler.cpp @@ -40,7 +40,7 @@ CurlStreamScheduler::~CurlStreamScheduler() @@ -7912,7 +7917,7 @@ index f46f26a553e0634fd6a4d383c0821aadd504a399..738327163771952be91bc024e92070c0 { switch (cookieDatabase().acceptPolicy()) { diff --git a/Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp b/Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp -index e5e324e7e616f16ca13e41cd0b618eb946063995..0827159dea1d162aa9e5db36ac252b475081312c 100644 +index 09ab1320beacc41ae92399f3320aaf805d9d81d1..4c63cb2a3f6fbf277227a88b92f206402bc12cd7 100644 --- a/Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp +++ b/Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp @@ -424,6 +424,30 @@ void NetworkStorageSession::replaceCookies(const Vector& cookies) @@ -7947,7 +7952,7 @@ index e5e324e7e616f16ca13e41cd0b618eb946063995..0827159dea1d162aa9e5db36ac252b47 { GUniquePtr targetCookie(cookie.toSoupCookie()); diff --git a/Source/WebCore/platform/win/ClipboardUtilitiesWin.cpp b/Source/WebCore/platform/win/ClipboardUtilitiesWin.cpp -index 79648fbd61bff20a1496c3247219796fe713daed..fc4ca92aab0bd6fdf234a09d1d8b21c68bcea794 100644 +index 15f47d0d2a99bcb1a7b9dd9764a9766a20e97692..f623d165826485f58cef60c4b3551055f4352de6 100644 --- a/Source/WebCore/platform/win/ClipboardUtilitiesWin.cpp +++ b/Source/WebCore/platform/win/ClipboardUtilitiesWin.cpp @@ -39,6 +39,7 @@ @@ -7958,20 +7963,20 @@ index 79648fbd61bff20a1496c3247219796fe713daed..fc4ca92aab0bd6fdf234a09d1d8b21c6 namespace WebCore { -@@ -690,7 +691,10 @@ template void getStringData(IDataObject* data, FORMATETC* format, Ve +@@ -689,7 +690,10 @@ template void getStringData(IDataObject* data, FORMATETC* format, Ve STGMEDIUM store; if (FAILED(data->GetData(format, &store))) return; -- dataStrings.append(String(static_cast(GlobalLock(store.hGlobal)), ::GlobalSize(store.hGlobal) / sizeof(T))); +- dataStrings.append(String({ static_cast(GlobalLock(store.hGlobal)), ::GlobalSize(store.hGlobal) / sizeof(T) })); + // The string here should be null terminated, but it could come from another app so lets lock it + // to the size to prevent an overflow. -+ String rawString = String(static_cast(GlobalLock(store.hGlobal)), ::GlobalSize(store.hGlobal) / sizeof(T)); ++ String rawString = String({ static_cast(GlobalLock(store.hGlobal)), ::GlobalSize(store.hGlobal) / sizeof(T) }); + dataStrings.append(String::fromUTF8(rawString.utf8().data())); GlobalUnlock(store.hGlobal); ReleaseStgMedium(&store); } diff --git a/Source/WebCore/platform/win/ClipboardUtilitiesWin.h b/Source/WebCore/platform/win/ClipboardUtilitiesWin.h -index c50799b63e05adbe32bae3535d786c7d268f980f..9cf1cc7ec4eaae22947f80ba272dfae272167bd6 100644 +index c3ffc7392c0b7fa099a7dd4e4be977cdee1c803c..9570dbb0f2c42ca38598a8898183c9b310f858ab 100644 --- a/Source/WebCore/platform/win/ClipboardUtilitiesWin.h +++ b/Source/WebCore/platform/win/ClipboardUtilitiesWin.h @@ -34,6 +34,7 @@ namespace WebCore { @@ -8013,7 +8018,7 @@ index 7bdb180c89bf3fe9d48098318d3b7503b8fd6279..296a3b2b82733b27272acb51ab4f883d if (!m_dragDataMap.isEmpty() || !m_platformDragData) return m_dragDataMap; diff --git a/Source/WebCore/platform/win/KeyEventWin.cpp b/Source/WebCore/platform/win/KeyEventWin.cpp -index f997a64f68deca632435450869c1abc9c3c35ac2..79da1d419799e359c60f2346e1d3ac8a8be4e654 100644 +index b9f728911d34163c1ca14d359741d44cc05ab755..1609197044eaa8e9036e6dae23d1c5270b53e08b 100644 --- a/Source/WebCore/platform/win/KeyEventWin.cpp +++ b/Source/WebCore/platform/win/KeyEventWin.cpp @@ -242,10 +242,16 @@ PlatformKeyboardEvent::PlatformKeyboardEvent(HWND, WPARAM code, LPARAM keyData, @@ -8037,7 +8042,7 @@ index f997a64f68deca632435450869c1abc9c3c35ac2..79da1d419799e359c60f2346e1d3ac8a OptionSet PlatformKeyboardEvent::currentStateOfModifierKeys() diff --git a/Source/WebCore/platform/win/PasteboardWin.cpp b/Source/WebCore/platform/win/PasteboardWin.cpp -index 54e81c8974a68333027ec4ca26d63cd11d9873c0..80ae2fd4c97a502ffea49c937265bf7cabb18fca 100644 +index 5728033e25919cef5b81d08516964aa5445c5d6e..0e588ebd34299d56ace86806bdec6e9ce337b053 100644 --- a/Source/WebCore/platform/win/PasteboardWin.cpp +++ b/Source/WebCore/platform/win/PasteboardWin.cpp @@ -1130,7 +1130,21 @@ void Pasteboard::writeCustomData(const Vector& data) @@ -8183,7 +8188,7 @@ index 0000000000000000000000000000000000000000..f8fc3fa43bfe62a1c066689f48ddabaa +} diff --git a/Source/WebCore/platform/wpe/DragImageWPE.cpp b/Source/WebCore/platform/wpe/DragImageWPE.cpp new file mode 100644 -index 0000000000000000000000000000000000000000..3aedd4bdfacd4d66552346bec8211efaeff1993c +index 0000000000000000000000000000000000000000..a2454253889d4c7d5129c2d7895c089f54bc2e3d --- /dev/null +++ b/Source/WebCore/platform/wpe/DragImageWPE.cpp @@ -0,0 +1,73 @@ @@ -8238,7 +8243,7 @@ index 0000000000000000000000000000000000000000..3aedd4bdfacd4d66552346bec8211efa + +DragImageRef createDragImageFromImage(Image* image, ImageOrientation) +{ -+ return image->nativeImageForCurrentFrame()->platformImage(); ++ return image->currentNativeImage()->platformImage(); +} + + @@ -8261,10 +8266,10 @@ index 0000000000000000000000000000000000000000..3aedd4bdfacd4d66552346bec8211efa + +} diff --git a/Source/WebCore/platform/wpe/PlatformScreenWPE.cpp b/Source/WebCore/platform/wpe/PlatformScreenWPE.cpp -index b4b1421799ba24ff07842c3006afcff7948e6c83..64b3bfab8d80ce9a4aea931ed7e478300a3bc358 100644 +index 77bdff686770e56f5445fa12216c6bff93bb5cfb..e16583ea6298864df9c8b82cb0686b2afb18ce95 100644 --- a/Source/WebCore/platform/wpe/PlatformScreenWPE.cpp +++ b/Source/WebCore/platform/wpe/PlatformScreenWPE.cpp -@@ -139,12 +139,12 @@ bool screenSupportsExtendedColor(Widget*) +@@ -151,12 +151,12 @@ bool screenSupportsExtendedColor(Widget*) } #if ENABLE(TOUCH_EVENTS) @@ -8508,7 +8513,7 @@ index 0000000000000000000000000000000000000000..cf2b51f6f02837a1106f4d999f2f130e + +} // namespace WebCore diff --git a/Source/WebCore/rendering/RenderTextControl.cpp b/Source/WebCore/rendering/RenderTextControl.cpp -index 43d3b0ea8c3000a82999356aeca617e9ce0cc9bc..6e0557a1cd8b9d1d03f6dbc6f8b67df462d8a2a9 100644 +index 58574b4d9fb503918e2cac0993ffe778f256a953..23de6aecb4ea7f7a1a36af6a93611559f19cfc11 100644 --- a/Source/WebCore/rendering/RenderTextControl.cpp +++ b/Source/WebCore/rendering/RenderTextControl.cpp @@ -222,13 +222,13 @@ void RenderTextControl::layoutExcludedChildren(bool relayoutChildren) @@ -8527,10 +8532,10 @@ index 43d3b0ea8c3000a82999356aeca617e9ce0cc9bc..6e0557a1cd8b9d1d03f6dbc6f8b67df4 { auto innerText = innerTextElement(); diff --git a/Source/WebCore/rendering/RenderTextControl.h b/Source/WebCore/rendering/RenderTextControl.h -index e064a7a15a416e593b68de15133c5528b1ce2ae0..2860c13fad04ea32e28142848e0583701263f45d 100644 +index 0c3b0f009ba9fca604f9bea904aae15142ee600e..b55788795cb550764d3de2e4dd0368773a14f290 100644 --- a/Source/WebCore/rendering/RenderTextControl.h +++ b/Source/WebCore/rendering/RenderTextControl.h -@@ -36,9 +36,9 @@ public: +@@ -37,9 +37,9 @@ public: WEBCORE_EXPORT HTMLTextFormControlElement& textFormControlElement() const; @@ -8565,7 +8570,7 @@ index 1d8488e0d36288e09cd5662bd7f770ade95dfee3..dee07f87b47d62d4ef8ede45824bdb2f WorkerOrWorkletGlobalScope& m_globalScope; }; diff --git a/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp b/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp -index bf5894cb3065bcded234f5bb0c2384ffe8afeaf1..5bb922d3fb26790b337e39460dde88b736157126 100644 +index caf9b8fe4c94e56154fa70b4b09391dc1db5b4b6..e9c038a464ac0e30bce7c1e162911d12086c1082 100644 --- a/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp +++ b/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp @@ -96,6 +96,8 @@ @@ -8577,7 +8582,7 @@ index bf5894cb3065bcded234f5bb0c2384ffe8afeaf1..5bb922d3fb26790b337e39460dde88b7 #endif #if ENABLE(APPLE_PAY_REMOTE_UI) -@@ -1077,6 +1079,14 @@ void NetworkConnectionToWebProcess::clearPageSpecificData(PageIdentifier pageID) +@@ -1093,6 +1095,14 @@ void NetworkConnectionToWebProcess::clearPageSpecificData(PageIdentifier pageID) storageSession->clearPageSpecificDataForResourceLoadStatistics(pageID); } @@ -8593,7 +8598,7 @@ index bf5894cb3065bcded234f5bb0c2384ffe8afeaf1..5bb922d3fb26790b337e39460dde88b7 { if (auto* storageSession = networkProcess().storageSession(m_sessionID)) diff --git a/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h b/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h -index 2e75a2e5f36e4bf8572dde214007ef9112340147..da32d9a2159dde35b31ad6494b57ee002bc32230 100644 +index a9fd7f7625ca67043c8ed0dcd7979df49cd65266..8e7903e0c5acefb8c5381f8297b52d610b8e4a29 100644 --- a/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h +++ b/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h @@ -343,6 +343,8 @@ private: @@ -8606,7 +8611,7 @@ index 2e75a2e5f36e4bf8572dde214007ef9112340147..da32d9a2159dde35b31ad6494b57ee00 void logUserInteraction(RegistrableDomain&&); diff --git a/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in b/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in -index db2fd2aa2a4e2cc6f8e543a1238768a87a47b7b3..6fd98fff31ca2f07267c2f1e87e67585d356504b 100644 +index b90021dcc3e4d70cb7b42b538050c5a37653b3cd..acc42255c8d3fb08971f62e6771f022f544199b7 100644 --- a/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in +++ b/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in @@ -74,6 +74,8 @@ messages -> NetworkConnectionToWebProcess LegacyReceiver { @@ -8619,10 +8624,10 @@ index db2fd2aa2a4e2cc6f8e543a1238768a87a47b7b3..6fd98fff31ca2f07267c2f1e87e67585 LogUserInteraction(WebCore::RegistrableDomain domain) ResourceLoadStatisticsUpdated(Vector statistics) -> () diff --git a/Source/WebKit/NetworkProcess/NetworkProcess.cpp b/Source/WebKit/NetworkProcess/NetworkProcess.cpp -index a64ab0c971d231725f54b48f2dfce9b14f176413..edf339a771288a5779088f47dd140bbb1ac79d9f 100644 +index cd174626a10faea7348b568bcfc384d9aaa86f5a..72e66509f540301cedc64ac9ea69f50fb1044245 100644 --- a/Source/WebKit/NetworkProcess/NetworkProcess.cpp +++ b/Source/WebKit/NetworkProcess/NetworkProcess.cpp -@@ -630,6 +630,12 @@ void NetworkProcess::registrableDomainsExemptFromWebsiteDataDeletion(PAL::Sessio +@@ -658,6 +658,12 @@ void NetworkProcess::registrableDomainsExemptFromWebsiteDataDeletion(PAL::Sessio completionHandler({ }); } @@ -8636,7 +8641,7 @@ index a64ab0c971d231725f54b48f2dfce9b14f176413..edf339a771288a5779088f47dd140bbb { if (auto* session = networkSession(sessionID)) { diff --git a/Source/WebKit/NetworkProcess/NetworkProcess.h b/Source/WebKit/NetworkProcess/NetworkProcess.h -index a8e9afedc539d5be95b11d30a621d75b0a1e21ca..3a94e96c865c1e324571a31fba49fdeb7f524a58 100644 +index 6d41842684f3e0e8b1190359f87105b747cf9da9..279d5c033397afb120a082953c0112f34bf2878a 100644 --- a/Source/WebKit/NetworkProcess/NetworkProcess.h +++ b/Source/WebKit/NetworkProcess/NetworkProcess.h @@ -33,6 +33,7 @@ @@ -8647,7 +8652,7 @@ index a8e9afedc539d5be95b11d30a621d75b0a1e21ca..3a94e96c865c1e324571a31fba49fdeb #include "WebPageProxyIdentifier.h" #include "WebResourceLoadStatisticsStore.h" #include "WebsiteData.h" -@@ -86,6 +87,7 @@ class SessionID; +@@ -82,6 +83,7 @@ class SessionID; namespace WebCore { class CertificateInfo; @@ -8655,7 +8660,7 @@ index a8e9afedc539d5be95b11d30a621d75b0a1e21ca..3a94e96c865c1e324571a31fba49fdeb class CurlProxySettings; class ProtectionSpace; class NetworkStorageSession; -@@ -214,6 +216,9 @@ public: +@@ -212,6 +214,9 @@ public: void registrableDomainsWithLastAccessedTime(PAL::SessionID, CompletionHandler>)>&&); void registrableDomainsExemptFromWebsiteDataDeletion(PAL::SessionID, CompletionHandler)>&&); @@ -8666,7 +8671,7 @@ index a8e9afedc539d5be95b11d30a621d75b0a1e21ca..3a94e96c865c1e324571a31fba49fdeb void clearUserInteraction(PAL::SessionID, RegistrableDomain&&, CompletionHandler&&); void deleteAndRestrictWebsiteDataForRegistrableDomains(PAL::SessionID, OptionSet, RegistrableDomainsToDeleteOrRestrictWebsiteDataFor&&, bool shouldNotifyPage, CompletionHandler&&)>&&); diff --git a/Source/WebKit/NetworkProcess/NetworkProcess.messages.in b/Source/WebKit/NetworkProcess/NetworkProcess.messages.in -index 0a6ee4fa17b06a3983e083ccef42af134367a63b..0e386d5f16c60c185ebec1d3b974c6242fadd6bc 100644 +index 5e590b5a09f8bd5d040e2e68d54c545c52d4b179..c58bb6270ab75026187fdda6c94822f6aa47a35a 100644 --- a/Source/WebKit/NetworkProcess/NetworkProcess.messages.in +++ b/Source/WebKit/NetworkProcess/NetworkProcess.messages.in @@ -79,6 +79,8 @@ messages -> NetworkProcess LegacyReceiver { @@ -8679,10 +8684,10 @@ index 0a6ee4fa17b06a3983e083ccef42af134367a63b..0e386d5f16c60c185ebec1d3b974c624 ClearUserInteraction(PAL::SessionID sessionID, WebCore::RegistrableDomain resourceDomain) -> () DumpResourceLoadStatistics(PAL::SessionID sessionID) -> (String dumpedStatistics) diff --git a/Source/WebKit/NetworkProcess/NetworkSession.h b/Source/WebKit/NetworkProcess/NetworkSession.h -index e0abf3efc001aef58ecdc10e7b0066d5a0f0bc3f..0940c4918d6db0f22a350abde8089b300222505b 100644 +index b22ff912dba5b116a979119af6721bcfcc72ec5d..deb9a0b67adb51b190833354e7ea5d8e46aea56c 100644 --- a/Source/WebKit/NetworkProcess/NetworkSession.h +++ b/Source/WebKit/NetworkProcess/NetworkSession.h -@@ -198,6 +198,9 @@ public: +@@ -200,6 +200,9 @@ public: void lowMemoryHandler(WTF::Critical); @@ -8692,7 +8697,7 @@ index e0abf3efc001aef58ecdc10e7b0066d5a0f0bc3f..0940c4918d6db0f22a350abde8089b30 void removeSoftUpdateLoader(ServiceWorkerSoftUpdateLoader* loader) { m_softUpdateLoaders.remove(loader); } void addNavigationPreloaderTask(ServiceWorkerFetchTask&); ServiceWorkerFetchTask* navigationPreloaderTaskFromFetchIdentifier(WebCore::FetchIdentifier); -@@ -307,6 +310,7 @@ protected: +@@ -309,6 +312,7 @@ protected: bool m_privateClickMeasurementDebugModeEnabled { false }; std::optional m_ephemeralMeasurement; bool m_isRunningEphemeralMeasurementTest { false }; @@ -8701,7 +8706,7 @@ index e0abf3efc001aef58ecdc10e7b0066d5a0f0bc3f..0940c4918d6db0f22a350abde8089b30 HashSet> m_keptAliveLoads; diff --git a/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm b/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm -index 95fd05820627eb2ec3ab61bbfe3c93011761464c..b1944ca937b09a942a42ce4e57311f8a5ff6aa51 100644 +index 95d84783fe56cc381e67113924780bf1e2d9320e..129e7ada7fa90665a80ccf79641d7fcaf9f085a0 100644 --- a/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm +++ b/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm @@ -761,6 +761,8 @@ - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didRece @@ -8872,7 +8877,7 @@ index 486849ef6f550a0f3caab311abf5743c6d38e5af..afeaac63a18d9e71d3afead23b7da4fe void NetworkSessionCurl::didReceiveChallenge(WebSocketTask& webSocketTask, WebCore::AuthenticationChallenge&& challenge, CompletionHandler&& challengeCompletionHandler) diff --git a/Source/WebKit/NetworkProcess/curl/WebSocketTaskCurl.cpp b/Source/WebKit/NetworkProcess/curl/WebSocketTaskCurl.cpp -index 34712a017c7a7f444f6e296681ad5d95db9df63c..d5fc1c0583df5548ca9ec3e8760d8f50a6be13e3 100644 +index 60106d6125f85d0cf848e828fd4ed7a50005f105..021d7b6d12baf4671a2968753969ca4675044313 100644 --- a/Source/WebKit/NetworkProcess/curl/WebSocketTaskCurl.cpp +++ b/Source/WebKit/NetworkProcess/curl/WebSocketTaskCurl.cpp @@ -36,11 +36,12 @@ @@ -8929,10 +8934,10 @@ index 5023a9be6554abc9ffe8fb37968978cb28c5b9a1..9cfdedd0411bf32843c2c9a7d7d722c5 WebCore::CurlStreamScheduler& m_scheduler; diff --git a/Source/WebKit/NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in b/Source/WebKit/NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in -index 514d2ee0446c8316e9e27a302e32de73480aafdc..42584c972be820f6906da2e0f54c839908db111a 100644 +index 51f3fb7ae9a4e208bc11ac583b72e772eac5e4dc..386ec972eba86763b83407c322a971a30286f40f 100644 --- a/Source/WebKit/NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in +++ b/Source/WebKit/NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in -@@ -444,9 +444,11 @@ +@@ -448,9 +448,11 @@ ;; FIXME: This should be removed when is fixed. ;; Restrict AppSandboxed processes from creating /Library/Keychains, but allow access to the contents of /Library/Keychains: @@ -8948,7 +8953,7 @@ index 514d2ee0446c8316e9e27a302e32de73480aafdc..42584c972be820f6906da2e0f54c8399 ;; Except deny access to new-style iOS Keychain folders which are UUIDs. (deny file-read* file-write* diff --git a/Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp b/Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp -index e00ae629016df8bec8cdaf45a42b1ae891cc2e93..ab5cb955e0b1b97a4df9ac4c6baa391ec2ee1798 100644 +index 4295b59484942084404ff7b03669aba249667e97..73dea05ac933938a19bbd6ec5bbcbd6139f98c25 100644 --- a/Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp +++ b/Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp @@ -466,6 +466,8 @@ void NetworkDataTaskSoup::didSendRequest(GRefPtr&& inputStream) @@ -8970,10 +8975,10 @@ index e00ae629016df8bec8cdaf45a42b1ae891cc2e93..ab5cb955e0b1b97a4df9ac4c6baa391e if (!error) return true; diff --git a/Source/WebKit/NetworkProcess/soup/NetworkSessionSoup.cpp b/Source/WebKit/NetworkProcess/soup/NetworkSessionSoup.cpp -index 3fa6072886e6d34d53c63fffb131d51a197540fd..72d919c0043fb524109aed043897195a78563198 100644 +index 60e79ff683e280591d686468c42decf1ac109ed2..ef74cb09e75c3e6f57d180487fa266b7a0f09af5 100644 --- a/Source/WebKit/NetworkProcess/soup/NetworkSessionSoup.cpp +++ b/Source/WebKit/NetworkProcess/soup/NetworkSessionSoup.cpp -@@ -99,6 +99,11 @@ void NetworkSessionSoup::clearCredentials(WallTime) +@@ -97,6 +97,11 @@ void NetworkSessionSoup::clearCredentials(WallTime) #endif } @@ -8985,7 +8990,7 @@ index 3fa6072886e6d34d53c63fffb131d51a197540fd..72d919c0043fb524109aed043897195a #if USE(SOUP2) static gboolean webSocketAcceptCertificateCallback(GTlsConnection* connection, GTlsCertificate* certificate, GTlsCertificateFlags errors, NetworkSessionSoup* session) { -@@ -119,6 +124,15 @@ static void webSocketMessageNetworkEventCallback(SoupMessage* soupMessage, GSock +@@ -117,6 +122,15 @@ static void webSocketMessageNetworkEventCallback(SoupMessage* soupMessage, GSock } #endif @@ -9001,7 +9006,7 @@ index 3fa6072886e6d34d53c63fffb131d51a197540fd..72d919c0043fb524109aed043897195a std::unique_ptr NetworkSessionSoup::createWebSocketTask(WebPageProxyIdentifier, std::optional frameID, std::optional pageID, NetworkSocketChannel& channel, const ResourceRequest& request, const String& protocol, const ClientOrigin&, bool, bool, OptionSet, ShouldRelaxThirdPartyCookieBlocking shouldRelaxThirdPartyCookieBlocking, StoredCredentialsPolicy) { GRefPtr soupMessage = request.createSoupMessage(blobRegistry()); -@@ -127,14 +141,21 @@ std::unique_ptr NetworkSessionSoup::createWebSocketTask(WebPagePr +@@ -125,14 +139,21 @@ std::unique_ptr NetworkSessionSoup::createWebSocketTask(WebPagePr if (request.url().protocolIs("wss"_s)) { #if USE(SOUP2) @@ -9031,10 +9036,10 @@ index 3fa6072886e6d34d53c63fffb131d51a197540fd..72d919c0043fb524109aed043897195a } diff --git a/Source/WebKit/PlatformGTK.cmake b/Source/WebKit/PlatformGTK.cmake -index a2d21b8fab2c038ed4d73dd9505b2e523084c219..84fa5c0fa497a55b3959e5c24a8ecde5acdbfc74 100644 +index bd8dab990c4c034059d21588921784f047bb6d6a..46a61dcef89e94a9a1a25e6ae352ec88f0aec5e7 100644 --- a/Source/WebKit/PlatformGTK.cmake +++ b/Source/WebKit/PlatformGTK.cmake -@@ -316,6 +316,9 @@ list(APPEND WebKit_SYSTEM_INCLUDE_DIRECTORIES +@@ -321,6 +321,9 @@ list(APPEND WebKit_SYSTEM_INCLUDE_DIRECTORIES ${GSTREAMER_PBUTILS_INCLUDE_DIRS} ${GTK_INCLUDE_DIRS} ${LIBSOUP_INCLUDE_DIRS} @@ -9044,7 +9049,7 @@ index a2d21b8fab2c038ed4d73dd9505b2e523084c219..84fa5c0fa497a55b3959e5c24a8ecde5 ) list(APPEND WebKit_INTERFACE_INCLUDE_DIRECTORIES -@@ -355,6 +358,9 @@ if (USE_LIBWEBRTC) +@@ -351,6 +354,9 @@ if (USE_LIBWEBRTC) list(APPEND WebKit_SYSTEM_INCLUDE_DIRECTORIES "${THIRDPARTY_DIR}/libwebrtc/Source/" "${THIRDPARTY_DIR}/libwebrtc/Source/webrtc" @@ -9054,7 +9059,7 @@ index a2d21b8fab2c038ed4d73dd9505b2e523084c219..84fa5c0fa497a55b3959e5c24a8ecde5 ) endif () -@@ -406,6 +412,12 @@ else () +@@ -402,6 +408,12 @@ else () set(WebKitGTK_ENUM_HEADER_TEMPLATE ${WEBKIT_DIR}/UIProcess/API/gtk/WebKitEnumTypesGtk3.h.in) endif () @@ -9068,10 +9073,10 @@ index a2d21b8fab2c038ed4d73dd9505b2e523084c219..84fa5c0fa497a55b3959e5c24a8ecde5 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 be960eda81a449e654cc76f98998f6695e3be15b..61546c86ac76c565517e7a5c27f968c9e5cab4da 100644 +index 8f27536b690e863fcaf086c04d1b0fb21356a622..a0207624821b4179d7adc646adf06aae65f0ca33 100644 --- a/Source/WebKit/PlatformWPE.cmake +++ b/Source/WebKit/PlatformWPE.cmake -@@ -210,6 +210,7 @@ set(WPE_API_HEADER_TEMPLATES +@@ -212,6 +212,7 @@ set(WPE_API_HEADER_TEMPLATES ${WEBKIT_DIR}/UIProcess/API/glib/WebKitWindowProperties.h.in ${WEBKIT_DIR}/UIProcess/API/glib/WebKitWebsitePolicies.h.in ${WEBKIT_DIR}/UIProcess/API/glib/webkit.h.in @@ -9079,7 +9084,7 @@ index be960eda81a449e654cc76f98998f6695e3be15b..61546c86ac76c565517e7a5c27f968c9 ) if (ENABLE_2022_GLIB_API) -@@ -422,8 +423,17 @@ list(APPEND WebKit_SYSTEM_INCLUDE_DIRECTORIES +@@ -423,8 +424,17 @@ list(APPEND WebKit_SYSTEM_INCLUDE_DIRECTORIES ${GIO_UNIX_INCLUDE_DIRS} ${GLIB_INCLUDE_DIRS} ${LIBSOUP_INCLUDE_DIRS} @@ -9095,8 +9100,8 @@ index be960eda81a449e654cc76f98998f6695e3be15b..61546c86ac76c565517e7a5c27f968c9 +# Playwright end + list(APPEND WebKit_LIBRARIES - ATK::Bridge WPE::libwpe + ${GLIB_LIBRARIES} diff --git a/Source/WebKit/PlatformWin.cmake b/Source/WebKit/PlatformWin.cmake index 06a86d0cfd1ca90f383af2b079f60ce220f8eb02..9e21935463bf964ecb090be48e68b50ef29c049b 100644 --- a/Source/WebKit/PlatformWin.cmake @@ -9331,26 +9336,11 @@ index 72ad2880160a374e8fa663e561d59becf9d2f36d..372ae6953199245fe4fc55a49813c7ca String markup #endif }; -diff --git a/Source/WebKit/Shared/WebCoreArgumentCoders.cpp b/Source/WebKit/Shared/WebCoreArgumentCoders.cpp -index 27289a1df966d9ce4964a21ed407cf694c8a4b84..4403ea531c85fd7c623e2c8793e71820d6043530 100644 ---- a/Source/WebKit/Shared/WebCoreArgumentCoders.cpp -+++ b/Source/WebKit/Shared/WebCoreArgumentCoders.cpp -@@ -182,6 +182,10 @@ - #include - #endif - -+#if PLATFORM(WPE) -+#include "ArgumentCodersWPE.h" -+#endif -+ - // FIXME: Seems like we could use std::tuple to cut down the code below a lot! - - namespace IPC { diff --git a/Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in b/Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in -index 3c2e6946fe221f15889e98b46bdb82eab8055ad5..843a49d6ae1476ed83147d417015520e523f1e01 100644 +index 2a11967151ca0bebd14b6a64482a793e2a536333..f4fc1b8eab49eba96badf4151358325a0bb7072c 100644 --- a/Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in +++ b/Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in -@@ -2609,6 +2609,9 @@ class WebCore::AuthenticationChallenge { +@@ -2658,6 +2658,9 @@ class WebCore::AuthenticationChallenge { class WebCore::DragData { #if PLATFORM(COCOA) String pasteboardName(); @@ -9360,7 +9350,7 @@ index 3c2e6946fe221f15889e98b46bdb82eab8055ad5..843a49d6ae1476ed83147d417015520e #endif WebCore::IntPoint clientPosition(); WebCore::IntPoint globalPosition(); -@@ -3170,6 +3173,7 @@ enum class WebCore::WasPrivateRelayed : bool; +@@ -3221,6 +3224,7 @@ enum class WebCore::WasPrivateRelayed : bool; String httpStatusText; String httpVersion; WebCore::HTTPHeaderMap httpHeaderFields; @@ -9451,7 +9441,7 @@ index b80bcb39473ecec86be5671f38698130bd9acbf3..d886cbac5f4c073e14e12f257fa92041 { } diff --git a/Source/WebKit/Shared/WebKeyboardEvent.h b/Source/WebKit/Shared/WebKeyboardEvent.h -index 2734461c33f7f9a57933afbc1098029d905522ec..1eb7f2cff4f5fe70aa576be4d4f9b0ea6ea5ddf4 100644 +index 8e4e2d6d5ebb08fba210fe0a328d45290348dd11..32a43192ec1e918c33b1b046b71d2ec571dc92ff 100644 --- a/Source/WebKit/Shared/WebKeyboardEvent.h +++ b/Source/WebKit/Shared/WebKeyboardEvent.h @@ -42,14 +42,18 @@ public: @@ -9474,7 +9464,7 @@ index 2734461c33f7f9a57933afbc1098029d905522ec..1eb7f2cff4f5fe70aa576be4d4f9b0ea const String& text() const { return m_text; } diff --git a/Source/WebKit/Shared/WebMouseEvent.h b/Source/WebKit/Shared/WebMouseEvent.h -index a38fc7fde1d5f1a1fd04ae1f84eb59c1501deec5..d3669c3d3bad91468fbbeeaa328c361082ecd408 100644 +index 5da1ed78e5a55bf63e9e52e33dfa9e704922589a..6630725885bbfe6123537ea799bf5b6885ea977f 100644 --- a/Source/WebKit/Shared/WebMouseEvent.h +++ b/Source/WebKit/Shared/WebMouseEvent.h @@ -70,6 +70,7 @@ public: @@ -9486,10 +9476,10 @@ index a38fc7fde1d5f1a1fd04ae1f84eb59c1501deec5..d3669c3d3bad91468fbbeeaa328c3610 void setPosition(const WebCore::IntPoint& position) { m_position = position; } const WebCore::IntPoint& globalPosition() const { return m_globalPosition; } diff --git a/Source/WebKit/Shared/WebPageCreationParameters.h b/Source/WebKit/Shared/WebPageCreationParameters.h -index 91be42f87923a08e8f19a35bbacc9cbc3781a550..b4de1b8170a28ec38556922967d849b05861468c 100644 +index e0f2fcf54bf77b41619a9b76a3f42cc17303029f..4f79a4a9e081bfbb6a05c2c8afcbdaae060f2229 100644 --- a/Source/WebKit/Shared/WebPageCreationParameters.h +++ b/Source/WebKit/Shared/WebPageCreationParameters.h -@@ -295,6 +295,8 @@ struct WebPageCreationParameters { +@@ -300,6 +300,8 @@ struct WebPageCreationParameters { bool httpsUpgradeEnabled { true }; @@ -9499,10 +9489,10 @@ index 91be42f87923a08e8f19a35bbacc9cbc3781a550..b4de1b8170a28ec38556922967d849b0 bool allowsDeprecatedSynchronousXMLHttpRequestDuringUnload { false }; #endif diff --git a/Source/WebKit/Shared/WebPageCreationParameters.serialization.in b/Source/WebKit/Shared/WebPageCreationParameters.serialization.in -index 4ea97727612b82724ed25a1a6f04d07dd6faa7b7..7eb2a40699258a5cad2bc09631f54993cdf1945e 100644 +index c7c3aac107d2b528d63a31645d84573ba4115a89..4e6932d22e24e2df15e045c0cbb177e8e0a8e880 100644 --- a/Source/WebKit/Shared/WebPageCreationParameters.serialization.in +++ b/Source/WebKit/Shared/WebPageCreationParameters.serialization.in -@@ -227,6 +227,8 @@ enum class WebCore::UserInterfaceLayoutDirection : bool; +@@ -228,6 +228,8 @@ enum class WebCore::UserInterfaceLayoutDirection : bool; bool httpsUpgradeEnabled; @@ -9767,7 +9757,7 @@ index 0000000000000000000000000000000000000000..789a0d7cf69704c8f665a9ed79348fbc + +} // namespace IPC diff --git a/Source/WebKit/Shared/win/WebEventFactory.cpp b/Source/WebKit/Shared/win/WebEventFactory.cpp -index 665b9d6a9de903ee9ad6dc53e15ab421b6cb769f..2b129963074d2ceec1c05f3a637c5e1c9e652008 100644 +index eae9e21a437c04cec91d1a4848038e11f4ee3e07..4fe63a9042d875555d9d1b934a9f53ea352e47aa 100644 --- a/Source/WebKit/Shared/win/WebEventFactory.cpp +++ b/Source/WebKit/Shared/win/WebEventFactory.cpp @@ -476,7 +476,7 @@ WebKeyboardEvent WebEventFactory::createWebKeyboardEvent(HWND hwnd, UINT message @@ -9780,10 +9770,10 @@ index 665b9d6a9de903ee9ad6dc53e15ab421b6cb769f..2b129963074d2ceec1c05f3a637c5e1c #endif // ENABLE(TOUCH_EVENTS) diff --git a/Source/WebKit/Sources.txt b/Source/WebKit/Sources.txt -index e57ec3140eeed2a50f0465448a165de12abc09bb..d3509d47546a35c31f4ed053cf4fa4f5f78caa7f 100644 +index d3b9afee939c3ec362f48851865da60251a5700f..fe0c3cc89c0823ed145eb1c374edd13239f48ee7 100644 --- a/Source/WebKit/Sources.txt +++ b/Source/WebKit/Sources.txt -@@ -378,6 +378,7 @@ Shared/XR/XRDeviceProxy.cpp +@@ -379,6 +379,7 @@ Shared/XR/XRDeviceProxy.cpp UIProcess/AuxiliaryProcessProxy.cpp UIProcess/BackgroundProcessResponsivenessTimer.cpp UIProcess/BrowsingContextGroup.cpp @@ -9791,7 +9781,7 @@ index e57ec3140eeed2a50f0465448a165de12abc09bb..d3509d47546a35c31f4ed053cf4fa4f5 UIProcess/DeviceIdHashSaltStorage.cpp UIProcess/DisplayLink.cpp UIProcess/DisplayLinkProcessProxyClient.cpp -@@ -387,16 +388,20 @@ UIProcess/FrameLoadState.cpp +@@ -388,16 +389,20 @@ UIProcess/FrameLoadState.cpp UIProcess/FrameProcess.cpp UIProcess/GeolocationPermissionRequestManagerProxy.cpp UIProcess/GeolocationPermissionRequestProxy.cpp @@ -9812,7 +9802,7 @@ index e57ec3140eeed2a50f0465448a165de12abc09bb..d3509d47546a35c31f4ed053cf4fa4f5 UIProcess/RemotePageDrawingAreaProxy.cpp UIProcess/RemotePageProxy.cpp UIProcess/ResponsivenessTimer.cpp -@@ -440,6 +445,8 @@ UIProcess/WebOpenPanelResultListenerProxy.cpp +@@ -441,6 +446,8 @@ UIProcess/WebOpenPanelResultListenerProxy.cpp UIProcess/WebPageDiagnosticLoggingClient.cpp UIProcess/WebPageGroup.cpp UIProcess/WebPageInjectedBundleClient.cpp @@ -9821,7 +9811,7 @@ index e57ec3140eeed2a50f0465448a165de12abc09bb..d3509d47546a35c31f4ed053cf4fa4f5 UIProcess/WebPageProxy.cpp UIProcess/WebPageProxyMessageReceiverRegistration.cpp UIProcess/WebPasteboardProxy.cpp -@@ -574,7 +581,11 @@ UIProcess/Inspector/WebInspectorUtilities.cpp +@@ -576,7 +583,11 @@ UIProcess/Inspector/WebInspectorUtilities.cpp UIProcess/Inspector/WebPageDebuggable.cpp UIProcess/Inspector/WebPageInspectorController.cpp @@ -9834,10 +9824,10 @@ index e57ec3140eeed2a50f0465448a165de12abc09bb..d3509d47546a35c31f4ed053cf4fa4f5 UIProcess/Media/AudioSessionRoutingArbitratorProxy.cpp UIProcess/Media/MediaUsageManager.cpp diff --git a/Source/WebKit/SourcesCocoa.txt b/Source/WebKit/SourcesCocoa.txt -index f23b74ff14d4c0bcf3ea58dc93c3582ae9d8ff54..0b615daef0d042deba914ad958a437c50cab926c 100644 +index 8dc390feda97fbe8e80e0bdfd62b682be36c81e5..9dee9867202c5e63e81dec992fa348fd16a557d8 100644 --- a/Source/WebKit/SourcesCocoa.txt +++ b/Source/WebKit/SourcesCocoa.txt -@@ -269,6 +269,7 @@ UIProcess/API/Cocoa/_WKArchiveExclusionRule.mm +@@ -271,6 +271,7 @@ UIProcess/API/Cocoa/_WKArchiveExclusionRule.mm UIProcess/API/Cocoa/_WKAttachment.mm UIProcess/API/Cocoa/_WKAutomationSession.mm UIProcess/API/Cocoa/_WKAutomationSessionConfiguration.mm @@ -9845,7 +9835,7 @@ index f23b74ff14d4c0bcf3ea58dc93c3582ae9d8ff54..0b615daef0d042deba914ad958a437c5 UIProcess/API/Cocoa/_WKContentRuleListAction.mm UIProcess/API/Cocoa/_WKContextMenuElementInfo.mm UIProcess/API/Cocoa/_WKCustomHeaderFields.mm @no-unify -@@ -447,6 +448,7 @@ UIProcess/Inspector/ios/WKInspectorHighlightView.mm +@@ -455,6 +456,7 @@ UIProcess/Inspector/ios/WKInspectorHighlightView.mm UIProcess/Inspector/ios/WKInspectorNodeSearchGestureRecognizer.mm UIProcess/Inspector/mac/RemoteWebInspectorUIProxyMac.mm @@ -9854,7 +9844,7 @@ index f23b74ff14d4c0bcf3ea58dc93c3582ae9d8ff54..0b615daef0d042deba914ad958a437c5 UIProcess/Inspector/mac/WKInspectorResourceURLSchemeHandler.mm UIProcess/Inspector/mac/WKInspectorViewController.mm diff --git a/Source/WebKit/SourcesGTK.txt b/Source/WebKit/SourcesGTK.txt -index 103182e1768930dbeecdbabe590e6491af0d92bf..96305b9bfafec6b70ec807a04c78f7e2002da0ea 100644 +index bec1e568f9ad00bfff883318692d9c404e012e2c..de45461d0851248f44973780b07d0ba7692fd578 100644 --- a/Source/WebKit/SourcesGTK.txt +++ b/Source/WebKit/SourcesGTK.txt @@ -134,6 +134,7 @@ UIProcess/API/glib/WebKitAutomationSession.cpp @no-unify @@ -9891,7 +9881,7 @@ index 103182e1768930dbeecdbabe590e6491af0d92bf..96305b9bfafec6b70ec807a04c78f7e2 UIProcess/gtk/WebPasteboardProxyGtk.cpp UIProcess/gtk/WebPopupMenuProxyGtk.cpp diff --git a/Source/WebKit/SourcesWPE.txt b/Source/WebKit/SourcesWPE.txt -index 10b4c898beea0c4246e5329298dba514a6f68663..fb685e34364ab73bacaf8314336c2d2ead031c3b 100644 +index 3eefd6cc3eb22329583901518442756d728378a1..45f2092be52d2d347660972a6723741176ff4b42 100644 --- a/Source/WebKit/SourcesWPE.txt +++ b/Source/WebKit/SourcesWPE.txt @@ -86,6 +86,7 @@ Shared/glib/ProcessExecutablePathGLib.cpp @@ -9902,7 +9892,7 @@ index 10b4c898beea0c4246e5329298dba514a6f68663..fb685e34364ab73bacaf8314336c2d2e Shared/libwpe/NativeWebKeyboardEventLibWPE.cpp Shared/libwpe/NativeWebMouseEventLibWPE.cpp Shared/libwpe/NativeWebTouchEventLibWPE.cpp -@@ -135,6 +136,7 @@ UIProcess/API/glib/WebKitAuthenticationRequest.cpp @no-unify +@@ -136,6 +137,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 @@ -9910,7 +9900,7 @@ index 10b4c898beea0c4246e5329298dba514a6f68663..fb685e34364ab73bacaf8314336c2d2e UIProcess/API/glib/WebKitContextMenuClient.cpp @no-unify UIProcess/API/glib/WebKitCookieManager.cpp @no-unify UIProcess/API/glib/WebKitCredential.cpp @no-unify -@@ -168,6 +170,7 @@ UIProcess/API/glib/WebKitOptionMenu.cpp @no-unify +@@ -169,6 +171,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 @@ -9918,7 +9908,7 @@ index 10b4c898beea0c4246e5329298dba514a6f68663..fb685e34364ab73bacaf8314336c2d2e UIProcess/API/glib/WebKitPolicyDecision.cpp @no-unify UIProcess/API/glib/WebKitPrivate.cpp @no-unify UIProcess/API/glib/WebKitProtocolHandler.cpp @no-unify -@@ -204,6 +207,7 @@ UIProcess/API/soup/HTTPCookieStoreSoup.cpp +@@ -205,6 +208,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 @@ -9926,7 +9916,7 @@ index 10b4c898beea0c4246e5329298dba514a6f68663..fb685e34364ab73bacaf8314336c2d2e UIProcess/API/wpe/WebKitInputMethodContextWPE.cpp @no-unify UIProcess/API/wpe/WebKitPopupMenu.cpp @no-unify UIProcess/API/wpe/WebKitRectangle.cpp @no-unify -@@ -226,6 +230,7 @@ UIProcess/glib/DisplayLinkGLib.cpp +@@ -228,6 +232,7 @@ UIProcess/glib/DisplayLinkGLib.cpp UIProcess/glib/DisplayVBlankMonitor.cpp UIProcess/glib/DisplayVBlankMonitorDRM.cpp UIProcess/glib/DisplayVBlankMonitorTimer.cpp @@ -9934,7 +9924,7 @@ index 10b4c898beea0c4246e5329298dba514a6f68663..fb685e34364ab73bacaf8314336c2d2e UIProcess/glib/ScreenManager.cpp UIProcess/glib/WebPageProxyGLib.cpp UIProcess/glib/WebProcessPoolGLib.cpp -@@ -256,7 +261,12 @@ UIProcess/linux/MemoryPressureMonitor.cpp +@@ -258,7 +263,12 @@ UIProcess/linux/MemoryPressureMonitor.cpp UIProcess/soup/WebProcessPoolSoup.cpp UIProcess/wpe/AcceleratedBackingStoreDMABuf.cpp @@ -9947,7 +9937,7 @@ index 10b4c898beea0c4246e5329298dba514a6f68663..fb685e34364ab73bacaf8314336c2d2e UIProcess/wpe/WebPageProxyWPE.cpp UIProcess/wpe/WebPreferencesWPE.cpp -@@ -280,6 +290,8 @@ WebProcess/WebCoreSupport/glib/WebEditorClientGLib.cpp +@@ -282,6 +292,8 @@ WebProcess/WebCoreSupport/glib/WebEditorClientGLib.cpp WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.cpp @@ -10004,10 +9994,10 @@ index 32ef9bd308e520f5ac7173639c8b23ea91cde037..7a80553c2d91b9236f563fa1b76aa8a5 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 06b83708038f6d39aa841f941f9490f45d5e90ed..e2300ca79ed61c378cb2024e23ef83281ae8b7d0 100644 +index f8baf3b5cbd1613da54c001cbff573125742358d..be628650e5562978187f8cc1d0afed8849a083b2 100644 --- a/Source/WebKit/UIProcess/API/APIUIClient.h +++ b/Source/WebKit/UIProcess/API/APIUIClient.h -@@ -113,6 +113,7 @@ public: +@@ -114,6 +114,7 @@ public: virtual void runJavaScriptAlert(WebKit::WebPageProxy&, const WTF::String&, WebKit::WebFrameProxy*, WebKit::FrameInfoData&&, Function&& completionHandler) { completionHandler(); } virtual void runJavaScriptConfirm(WebKit::WebPageProxy&, const WTF::String&, WebKit::WebFrameProxy*, WebKit::FrameInfoData&&, Function&& completionHandler) { completionHandler(false); } virtual void runJavaScriptPrompt(WebKit::WebPageProxy&, const WTF::String&, const WTF::String&, WebKit::WebFrameProxy*, WebKit::FrameInfoData&&, Function&& completionHandler) { completionHandler(WTF::String()); } @@ -10059,10 +10049,10 @@ index 026121d114c5fcad84c1396be8d692625beaa3bd..edd6e5cae033124c589959a42522fde0 } #endif diff --git a/Source/WebKit/UIProcess/API/C/WKPage.cpp b/Source/WebKit/UIProcess/API/C/WKPage.cpp -index 8db060fa2f15d58d8bbc9faed88cac4e51d0f3c1..22fcdf0790b7187fbf2978bf3079b3011929d23e 100644 +index 81d4f44bd1f4201cb0ddd9d4b8ef210862551cdb..6e750c6e1f4624b5cf54a642b831ab10d4448649 100644 --- a/Source/WebKit/UIProcess/API/C/WKPage.cpp +++ b/Source/WebKit/UIProcess/API/C/WKPage.cpp -@@ -1783,6 +1783,13 @@ void WKPageSetPageUIClient(WKPageRef pageRef, const WKPageUIClientBase* wkClient +@@ -1780,6 +1780,13 @@ void WKPageSetPageUIClient(WKPageRef pageRef, const WKPageUIClientBase* wkClient completionHandler(String()); } @@ -10076,7 +10066,7 @@ index 8db060fa2f15d58d8bbc9faed88cac4e51d0f3c1..22fcdf0790b7187fbf2978bf3079b301 void setStatusText(WebPageProxy* page, const String& text) final { if (!m_client.setStatusText) -@@ -1812,6 +1819,8 @@ void WKPageSetPageUIClient(WKPageRef pageRef, const WKPageUIClientBase* wkClient +@@ -1809,6 +1816,8 @@ void WKPageSetPageUIClient(WKPageRef pageRef, const WKPageUIClientBase* wkClient { if (!m_client.didNotHandleKeyEvent) return; @@ -10146,10 +10136,10 @@ index 1484f064ec89ee8c25c35df9f0a4462896699415..0622f4d5fc9144b9059395d9d0730a4a // Version 15. WKPageDecidePolicyForSpeechRecognitionPermissionRequestCallback decidePolicyForSpeechRecognitionPermissionRequest; diff --git a/Source/WebKit/UIProcess/API/Cocoa/WKPreferences.mm b/Source/WebKit/UIProcess/API/Cocoa/WKPreferences.mm -index 9479d9025142e679533061397c93f750053efacb..01031cca01abb99eef44a054dc200922be6b782d 100644 +index 857afb1b892c2ee7327808f3dab0cff441c92c52..332bb2e687d6b97fd11f1366ade5b17841bcae58 100644 --- a/Source/WebKit/UIProcess/API/Cocoa/WKPreferences.mm +++ b/Source/WebKit/UIProcess/API/Cocoa/WKPreferences.mm -@@ -700,6 +700,16 @@ - (void)_setMediaCaptureRequiresSecureConnection:(BOOL)requiresSecureConnection +@@ -702,6 +702,16 @@ - (void)_setMediaCaptureRequiresSecureConnection:(BOOL)requiresSecureConnection _preferences->setMediaCaptureRequiresSecureConnection(requiresSecureConnection); } @@ -10167,10 +10157,10 @@ index 9479d9025142e679533061397c93f750053efacb..01031cca01abb99eef44a054dc200922 { return _preferences->inactiveMediaCaptureSteamRepromptIntervalInMinutes(); diff --git a/Source/WebKit/UIProcess/API/Cocoa/WKPreferencesPrivate.h b/Source/WebKit/UIProcess/API/Cocoa/WKPreferencesPrivate.h -index 2d7258f213b74356c8ab3e47923016dd4554e672..0f8977d00655cd4c36ae280c8c27c52f8dd0c09f 100644 +index 48e4b28374b93173df1be63444aa5ca3abd626d6..194b2099be032c800a463891976364ab7cd74890 100644 --- a/Source/WebKit/UIProcess/API/Cocoa/WKPreferencesPrivate.h +++ b/Source/WebKit/UIProcess/API/Cocoa/WKPreferencesPrivate.h -@@ -118,6 +118,7 @@ typedef NS_ENUM(NSInteger, _WKPitchCorrectionAlgorithm) { +@@ -119,6 +119,7 @@ typedef NS_ENUM(NSInteger, _WKPitchCorrectionAlgorithm) { @property (nonatomic, setter=_setMockCaptureDevicesEnabled:) BOOL _mockCaptureDevicesEnabled WK_API_AVAILABLE(macos(10.13), ios(11.0)); @property (nonatomic, setter=_setMockCaptureDevicesPromptEnabled:) BOOL _mockCaptureDevicesPromptEnabled WK_API_AVAILABLE(macos(10.13.4), ios(11.3)); @property (nonatomic, setter=_setMediaCaptureRequiresSecureConnection:) BOOL _mediaCaptureRequiresSecureConnection WK_API_AVAILABLE(macos(10.13), ios(11.0)); @@ -10217,7 +10207,7 @@ index 4f5956098f0e83c2e9c421c97056b6718b124a3c..1eb51dd70dc6ef1b7e95a09118aa816b NS_ASSUME_NONNULL_END diff --git a/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm b/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm -index 07a937bf57e682398c2befad11ad6a4d228e741e..189f4b3cbe358490f2779a1042f2e9fd240fa422 100644 +index 350914dd5352683024925bb820148ba2582cd0c7..ac9767ff4920e066b11da4556b2df77debd18a1f 100644 --- a/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm +++ b/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm @@ -51,6 +51,7 @@ @@ -10228,7 +10218,7 @@ index 07a937bf57e682398c2befad11ad6a4d228e741e..189f4b3cbe358490f2779a1042f2e9fd #import #import #import -@@ -444,6 +445,11 @@ - (void)removeDataOfTypes:(NSSet *)dataTypes modifiedSince:(NSDate *)date comple +@@ -446,6 +447,11 @@ - (void)removeDataOfTypes:(NSSet *)dataTypes modifiedSince:(NSDate *)date comple }); } @@ -10401,7 +10391,7 @@ index df71be1e30c4a13fe9565d309c7bbfb82e049d06..8424a471e7841d300174aa54143578f8 { _processPoolConfiguration->setIsAutomaticProcessWarmingEnabled(prewarms); diff --git a/Source/WebKit/UIProcess/API/Cocoa/_WKRemoteWebInspectorViewController.mm b/Source/WebKit/UIProcess/API/Cocoa/_WKRemoteWebInspectorViewController.mm -index e5209134d490c226db6a122f4f0f3f38d26e20eb..47a41b11999d7927fbfbe033e3630eac86d61e99 100644 +index 500a748e78bdcd418b18fb4de416b95e9042d2c4..63d4ea68cbc711ba8f12e126d0f6b78aad5f5155 100644 --- a/Source/WebKit/UIProcess/API/Cocoa/_WKRemoteWebInspectorViewController.mm +++ b/Source/WebKit/UIProcess/API/Cocoa/_WKRemoteWebInspectorViewController.mm @@ -24,6 +24,7 @@ @@ -10425,7 +10415,7 @@ index 4974e14214e2bb3e982325b885bab33e54f83998..cacdf8c71fab248d38d2faf03f7affdc typedef NS_ENUM(NSInteger, _WKUserStyleLevel) { _WKUserStyleUserLevel, diff --git a/Source/WebKit/UIProcess/API/Cocoa/_WKUserStyleSheet.mm b/Source/WebKit/UIProcess/API/Cocoa/_WKUserStyleSheet.mm -index 705a8483a04c8abe863bd788f5a4ea6a09414f27..c0e69429369155aa3974c508e755292c81c89e19 100644 +index 383bd33cc0b53ea049d2e6fb1bf338d584caeb18..e29ba10dceced9d115b09e014cc086c5453e33fe 100644 --- a/Source/WebKit/UIProcess/API/Cocoa/_WKUserStyleSheet.mm +++ b/Source/WebKit/UIProcess/API/Cocoa/_WKUserStyleSheet.mm @@ -35,6 +35,7 @@ @@ -10639,10 +10629,10 @@ index 0000000000000000000000000000000000000000..e0b1da48465c850f541532ed961d1b77 +WebKit::WebPageProxy* webkitBrowserInspectorCreateNewPageInContext(WebKitWebContext*); +void webkitBrowserInspectorQuitApplication(); diff --git a/Source/WebKit/UIProcess/API/glib/WebKitUIClient.cpp b/Source/WebKit/UIProcess/API/glib/WebKitUIClient.cpp -index a13f808f23a97bd4eaf452fc57e0f1279e3a264b..e222833eeea5d4252189ba2755993e35c3190963 100644 +index d6b7f61b141870b4af00fdd0a104dc6cf382fc36..bacc29f875ec5dccb65f7653a772bb99ceee2129 100644 --- a/Source/WebKit/UIProcess/API/glib/WebKitUIClient.cpp +++ b/Source/WebKit/UIProcess/API/glib/WebKitUIClient.cpp -@@ -94,6 +94,10 @@ private: +@@ -95,6 +95,10 @@ private: page.makeViewBlankIfUnpaintedSinceLastLoadCommit(); webkitWebViewRunJavaScriptPrompt(m_webView, message.utf8(), defaultValue.utf8(), WTFMove(completionHandler)); } @@ -10654,7 +10644,7 @@ index a13f808f23a97bd4eaf452fc57e0f1279e3a264b..e222833eeea5d4252189ba2755993e35 bool canRunBeforeUnloadConfirmPanel() const final { return true; } diff --git a/Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp b/Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp -index cdf57e32e9024051ed28eb57678662376b0aae6c..8647bf0e5beff4d5d92e02733548332abeb00c55 100644 +index 14c655bdd47bfb87d548e8c4ddd826e6bbb5d7c5..05440a65021ff70887fc88dc5fbfff71f4990957 100644 --- a/Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp +++ b/Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp @@ -415,10 +415,19 @@ static void webkitWebContextSetProperty(GObject* object, guint propID, const GVa @@ -10723,7 +10713,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 4a15f81cbca7ab84ce25b6ccc96cd6ad720f6129..a1d6e0f4ccdceddff6c88563c480266b4e8c4247 100644 +index 1e389f70c7b4722458cffbf4ac34b1d67efa4ba8..b9f5f22c8e866de1909240b72d23c06d7525d863 100644 --- a/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp +++ b/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp @@ -33,6 +33,7 @@ @@ -10750,7 +10740,7 @@ index 4a15f81cbca7ab84ce25b6ccc96cd6ad720f6129..a1d6e0f4ccdceddff6c88563c480266b #include "WebKitPrintOperationPrivate.h" #include "WebKitWebInspectorPrivate.h" #include "WebKitWebViewBasePrivate.h" -@@ -140,6 +141,7 @@ enum { +@@ -141,6 +142,7 @@ enum { CLOSE, SCRIPT_DIALOG, @@ -10758,7 +10748,7 @@ index 4a15f81cbca7ab84ce25b6ccc96cd6ad720f6129..a1d6e0f4ccdceddff6c88563c480266b DECIDE_POLICY, PERMISSION_REQUEST, -@@ -493,6 +495,9 @@ GRefPtr WebKitWebViewClient::showOptionMenu(WebKitPopupMenu& p +@@ -494,6 +496,9 @@ GRefPtr WebKitWebViewClient::showOptionMenu(WebKitPopupMenu& p void WebKitWebViewClient::frameDisplayed(WKWPE::View&) { @@ -10768,7 +10758,7 @@ index 4a15f81cbca7ab84ce25b6ccc96cd6ad720f6129..a1d6e0f4ccdceddff6c88563c480266b { SetForScope inFrameDisplayedGuard(m_webView->priv->inFrameDisplayed, true); for (const auto& callback : m_webView->priv->frameDisplayedCallbacks) { -@@ -509,6 +514,11 @@ void WebKitWebViewClient::frameDisplayed(WKWPE::View&) +@@ -510,6 +515,11 @@ void WebKitWebViewClient::frameDisplayed(WKWPE::View&) } } @@ -10780,7 +10770,7 @@ index 4a15f81cbca7ab84ce25b6ccc96cd6ad720f6129..a1d6e0f4ccdceddff6c88563c480266b void WebKitWebViewClient::willStartLoad(WKWPE::View&) { webkitWebViewWillStartLoad(m_webView); -@@ -595,7 +605,7 @@ static gboolean webkitWebViewDecidePolicy(WebKitWebView*, WebKitPolicyDecision* +@@ -596,7 +606,7 @@ static gboolean webkitWebViewDecidePolicy(WebKitWebView*, WebKitPolicyDecision* static gboolean webkitWebViewPermissionRequest(WebKitWebView*, WebKitPermissionRequest* request) { @@ -10789,7 +10779,7 @@ index 4a15f81cbca7ab84ce25b6ccc96cd6ad720f6129..a1d6e0f4ccdceddff6c88563c480266b if (WEBKIT_IS_POINTER_LOCK_PERMISSION_REQUEST(request)) { webkit_permission_request_allow(request); return TRUE; -@@ -1902,6 +1912,15 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass) +@@ -1903,6 +1913,15 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass) G_TYPE_BOOLEAN, 1, WEBKIT_TYPE_SCRIPT_DIALOG); @@ -10805,7 +10795,7 @@ index 4a15f81cbca7ab84ce25b6ccc96cd6ad720f6129..a1d6e0f4ccdceddff6c88563c480266b /** * WebKitWebView::decide-policy: * @web_view: the #WebKitWebView on which the signal is emitted -@@ -2701,6 +2720,23 @@ void webkitWebViewRunJavaScriptBeforeUnloadConfirm(WebKitWebView* webView, const +@@ -2702,6 +2721,23 @@ void webkitWebViewRunJavaScriptBeforeUnloadConfirm(WebKitWebView* webView, const webkit_script_dialog_unref(webView->priv->currentScriptDialog); } @@ -10830,10 +10820,10 @@ index 4a15f81cbca7ab84ce25b6ccc96cd6ad720f6129..a1d6e0f4ccdceddff6c88563c480266b { if (!webView->priv->currentScriptDialog) diff --git a/Source/WebKit/UIProcess/API/glib/WebKitWebViewPrivate.h b/Source/WebKit/UIProcess/API/glib/WebKitWebViewPrivate.h -index 8b5eb1ce720c9ad09b9de9e9f3d6b15564a86b54..89642048bad844aabdf1eec8486679bfc75e20c0 100644 +index 1a04ee05c3ddec0628ef5b8b8c181cbcc2b7d622..2a24f8f3fdc3f0eed13f8a79050258a4e4a489f0 100644 --- a/Source/WebKit/UIProcess/API/glib/WebKitWebViewPrivate.h +++ b/Source/WebKit/UIProcess/API/glib/WebKitWebViewPrivate.h -@@ -65,6 +65,7 @@ void webkitWebViewRunJavaScriptAlert(WebKitWebView*, const CString& message, Fun +@@ -66,6 +66,7 @@ void webkitWebViewRunJavaScriptAlert(WebKitWebView*, const CString& message, Fun void webkitWebViewRunJavaScriptConfirm(WebKitWebView*, const CString& message, Function&& completionHandler); void webkitWebViewRunJavaScriptPrompt(WebKitWebView*, const CString& message, const CString& defaultText, Function&& completionHandler); void webkitWebViewRunJavaScriptBeforeUnloadConfirm(WebKitWebView*, const CString& message, Function&& completionHandler); @@ -10854,10 +10844,10 @@ index 805f9f638c1630b5e9310494ae2970262de001cc..add3e80896c2e82bdd12cee15c8014bf #include <@API_INCLUDE_PREFIX@/WebKitClipboardPermissionRequest.h> #include <@API_INCLUDE_PREFIX@/WebKitColorChooserRequest.h> diff --git a/Source/WebKit/UIProcess/API/gtk/PageClientImpl.cpp b/Source/WebKit/UIProcess/API/gtk/PageClientImpl.cpp -index 1c4f884537edf50ed867378786f58ace47eabfaa..283fa58d2427cffc115e12a861ab9d6882004214 100644 +index cea5882f6c455898e1b5a231e1213e6b71ff21b6..d82b93d3c759b1184869b3504e1c3c07f53cc8ce 100644 --- a/Source/WebKit/UIProcess/API/gtk/PageClientImpl.cpp +++ b/Source/WebKit/UIProcess/API/gtk/PageClientImpl.cpp -@@ -266,6 +266,8 @@ void PageClientImpl::doneWithKeyEvent(const NativeWebKeyboardEvent& event, bool +@@ -269,6 +269,8 @@ void PageClientImpl::doneWithKeyEvent(const NativeWebKeyboardEvent& event, bool { if (wasEventHandled || event.type() != WebEventType::KeyDown || !event.nativeEvent()) return; @@ -10866,7 +10856,7 @@ index 1c4f884537edf50ed867378786f58ace47eabfaa..283fa58d2427cffc115e12a861ab9d68 // Always consider arrow keys as handled, otherwise the GtkWindow key bindings will move the focus. guint keyval; -@@ -368,9 +370,9 @@ void PageClientImpl::selectionDidChange() +@@ -371,9 +373,9 @@ void PageClientImpl::selectionDidChange() webkitWebViewSelectionDidChange(WEBKIT_WEB_VIEW(m_viewWidget)); } @@ -10992,10 +10982,10 @@ index 496079da90993ac37689b060b69ecd4a67c2b6a8..af30181ca922f16c0f6e245c70e5ce7d G_BEGIN_DECLS diff --git a/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp b/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp -index e1a7e687913826b5912ab1e735894a6e0a5b4da9..d75b97ebdd06e529e457266b2ee2bfa7debd3330 100644 +index 9ce95b0e5ec142f4067c99d4aeb388fa08ae3f89..0718c8d9764d100fc8f41348a9273020645f0825 100644 --- a/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp +++ b/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp -@@ -2923,6 +2923,11 @@ void webkitWebViewBaseResetClickCounter(WebKitWebViewBase* webkitWebViewBase) +@@ -2908,6 +2908,11 @@ void webkitWebViewBaseResetClickCounter(WebKitWebViewBase* webkitWebViewBase) #endif } @@ -11007,7 +10997,7 @@ index e1a7e687913826b5912ab1e735894a6e0a5b4da9..d75b97ebdd06e529e457266b2ee2bfa7 void webkitWebViewBaseEnterAcceleratedCompositingMode(WebKitWebViewBase* webkitWebViewBase, const LayerTreeContext& layerTreeContext) { ASSERT(webkitWebViewBase->priv->acceleratedBackingStore); -@@ -2979,12 +2984,12 @@ void webkitWebViewBasePageClosed(WebKitWebViewBase* webkitWebViewBase) +@@ -2964,12 +2969,12 @@ void webkitWebViewBasePageClosed(WebKitWebViewBase* webkitWebViewBase) webkitWebViewBase->priv->acceleratedBackingStore->update({ }); } @@ -11023,7 +11013,7 @@ index e1a7e687913826b5912ab1e735894a6e0a5b4da9..d75b97ebdd06e529e457266b2ee2bfa7 #if !USE(GTK4) diff --git a/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBasePrivate.h b/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBasePrivate.h -index 1e98b90627322094b58b60f06b9b2294b8e79d63..1fa990e53ce63e5f54d68928d0d8d3f7c64062b3 100644 +index a227380c1171e1e5824370b21c66440bb744c7f7..9b7bc68d01ef5d7c5d34720a6ab7c27f9e8c2156 100644 --- a/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBasePrivate.h +++ b/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBasePrivate.h @@ -27,6 +27,7 @@ @@ -11033,8 +11023,8 @@ index 1e98b90627322094b58b60f06b9b2294b8e79d63..1fa990e53ce63e5f54d68928d0d8d3f7 +#include "AcceleratedBackingStore.h" #include "APIPageConfiguration.h" #include "InputMethodState.h" - #include "SameDocumentNavigationType.h" -@@ -106,7 +107,7 @@ void webkitWebViewBaseStartDrag(WebKitWebViewBase*, WebCore::SelectionData&&, Op + #include "RendererBufferFormat.h" +@@ -107,7 +108,7 @@ void webkitWebViewBaseStartDrag(WebKitWebViewBase*, WebCore::SelectionData&&, Op void webkitWebViewBaseDidPerformDragControllerAction(WebKitWebViewBase*); #endif @@ -11043,10 +11033,10 @@ index 1e98b90627322094b58b60f06b9b2294b8e79d63..1fa990e53ce63e5f54d68928d0d8d3f7 void webkitWebViewBaseSetEnableBackForwardNavigationGesture(WebKitWebViewBase*, bool enabled); WebKit::ViewGestureController* webkitWebViewBaseViewGestureController(WebKitWebViewBase*); -@@ -145,3 +146,5 @@ void webkitWebViewBaseCallAfterNextPresentationUpdate(WebKitWebViewBase*, Comple - #if USE(GTK4) - void webkitWebViewBaseSetPlugID(WebKitWebViewBase*, const String&); +@@ -148,3 +149,5 @@ void webkitWebViewBaseSetPlugID(WebKitWebViewBase*, const String&); #endif + + WebKit::RendererBufferFormat webkitWebViewBaseGetRendererBufferFormat(WebKitWebViewBase*); + +WebKit::AcceleratedBackingStore* webkitWebViewBaseGetAcceleratedBackingStore(WebKitWebViewBase*); diff --git a/Source/WebKit/UIProcess/API/wpe/APIViewClient.h b/Source/WebKit/UIProcess/API/wpe/APIViewClient.h @@ -11072,7 +11062,7 @@ index 26d1790017e528f26ae04dac635678d5494bfd04..48dbe50eb05628307264a350350ac19f virtual void didChangePageID(WKWPE::View&) { } virtual void didReceiveUserMessage(WKWPE::View&, WebKit::UserMessage&&, CompletionHandler&& completionHandler) { completionHandler(WebKit::UserMessage()); } diff --git a/Source/WebKit/UIProcess/API/wpe/PageClientImpl.cpp b/Source/WebKit/UIProcess/API/wpe/PageClientImpl.cpp -index ab920ef03db906e90613cdb4a4369169a2bf1cbe..d4deb4bad543ff8692b79ecbd3a6d74f8b53915e 100644 +index f498562d70a4652f6831ac6bc12ef86e537d3930..503a8875fed34fd7925646b61a1eed11d7c866b7 100644 --- a/Source/WebKit/UIProcess/API/wpe/PageClientImpl.cpp +++ b/Source/WebKit/UIProcess/API/wpe/PageClientImpl.cpp @@ -33,9 +33,13 @@ @@ -11089,7 +11079,7 @@ index ab920ef03db906e90613cdb4a4369169a2bf1cbe..d4deb4bad543ff8692b79ecbd3a6d74f #include #include #include -@@ -200,7 +204,7 @@ WebCore::IntPoint PageClientImpl::accessibilityScreenToRootView(const WebCore::I +@@ -203,7 +207,7 @@ WebCore::IntPoint PageClientImpl::accessibilityScreenToRootView(const WebCore::I WebCore::IntRect PageClientImpl::rootViewToAccessibilityScreen(const WebCore::IntRect& rect) { @@ -11098,7 +11088,7 @@ index ab920ef03db906e90613cdb4a4369169a2bf1cbe..d4deb4bad543ff8692b79ecbd3a6d74f } void PageClientImpl::doneWithKeyEvent(const NativeWebKeyboardEvent&, bool) -@@ -460,6 +464,33 @@ void PageClientImpl::selectionDidChange() +@@ -465,6 +469,33 @@ void PageClientImpl::selectionDidChange() m_view.selectionDidChange(); } @@ -11132,7 +11122,7 @@ index ab920ef03db906e90613cdb4a4369169a2bf1cbe..d4deb4bad543ff8692b79ecbd3a6d74f WebKitWebResourceLoadManager* PageClientImpl::webResourceLoadManager() { return m_view.webResourceLoadManager(); -@@ -470,4 +501,23 @@ void PageClientImpl::callAfterNextPresentationUpdate(CompletionHandler&& +@@ -475,4 +506,23 @@ void PageClientImpl::callAfterNextPresentationUpdate(CompletionHandler&& m_view.callAfterNextPresentationUpdate(WTFMove(callback)); } @@ -11157,10 +11147,10 @@ index ab920ef03db906e90613cdb4a4369169a2bf1cbe..d4deb4bad543ff8692b79ecbd3a6d74f + } // namespace WebKit diff --git a/Source/WebKit/UIProcess/API/wpe/PageClientImpl.h b/Source/WebKit/UIProcess/API/wpe/PageClientImpl.h -index dbd9dd946fceebb49b70d6600b1e654e2f0cc0a6..22c6839e2e7c9aa435be04727c6218a88aa29dc1 100644 +index a7ece2c8dc3fd30bfb850de04c4fc10004444d5a..b5ee1a1877b3e748dea3ce195cd75cb0701a7034 100644 --- a/Source/WebKit/UIProcess/API/wpe/PageClientImpl.h +++ b/Source/WebKit/UIProcess/API/wpe/PageClientImpl.h -@@ -164,9 +164,21 @@ private: +@@ -166,9 +166,21 @@ private: void didChangeWebPageID() const override; void selectionDidChange() override; @@ -11183,20 +11173,20 @@ index dbd9dd946fceebb49b70d6600b1e654e2f0cc0a6..22c6839e2e7c9aa435be04727c6218a8 }; diff --git a/Source/WebKit/UIProcess/API/wpe/WPEWebView.cpp b/Source/WebKit/UIProcess/API/wpe/WPEWebView.cpp -index 9a682ff7309e3a7290384d922579094e35ef0167..ec1cd8cb3b8518cb90c526f55f1ba9d482ddb097 100644 +index 8a9b8a7a853f2bdb6ae0b8bb389d3db1e1a53ac4..c22553b96c3e9afc126ce93c4e45e3af0fbd38f0 100644 --- a/Source/WebKit/UIProcess/API/wpe/WPEWebView.cpp +++ b/Source/WebKit/UIProcess/API/wpe/WPEWebView.cpp -@@ -103,7 +103,9 @@ View::View(struct wpe_view_backend* backend, WPEDisplay* display, const API::Pag - if (preferences) { - preferences->setAcceleratedCompositingEnabled(true); - preferences->setForceCompositingMode(true); -- preferences->setThreadedScrollingEnabled(true); -+ // Playwright override begin -+ preferences->setThreadedScrollingEnabled(false); -+ // Playwright override end - } +@@ -98,7 +98,9 @@ View::View(struct wpe_view_backend* backend, WPEDisplay* display, const API::Pag + auto& preferences = configuration->preferences(); + preferences.setAcceleratedCompositingEnabled(true); + preferences.setForceCompositingMode(true); +- preferences.setThreadedScrollingEnabled(true); ++ // Playwright override begin ++ preferences.setThreadedScrollingEnabled(false); ++ // Playwright override end - auto* pool = configuration->processPool(); + auto& pool = configuration->processPool(); + m_pageProxy = pool.createWebPage(*m_pageClient, WTFMove(configuration)); diff --git a/Source/WebKit/UIProcess/API/wpe/WebKitBrowserInspector.h b/Source/WebKit/UIProcess/API/wpe/WebKitBrowserInspector.h new file mode 100644 index 0000000000000000000000000000000000000000..273c5105cdf1638955cea01128c9bbab3e64436c @@ -11491,10 +11481,10 @@ index 720c88818bdb4cde3cb58e95785454754f6c1396..7f702c0b922e13128522d2bb1ace6a23 void didChangePageID(WKWPE::View&) override; void didReceiveUserMessage(WKWPE::View&, WebKit::UserMessage&&, CompletionHandler&&) override; diff --git a/Source/WebKit/UIProcess/AuxiliaryProcessProxy.cpp b/Source/WebKit/UIProcess/AuxiliaryProcessProxy.cpp -index 39e4660d5936fd8915cf0dcd7afa83aece092067..da3ef68451021c296b3ff12416ad3bf8440fa657 100644 +index 6f69cd9d4db8544a2c0c8b11fb557697f9b6a183..750a565d8a0c1208cd6950740b2beffa8c1d69d9 100644 --- a/Source/WebKit/UIProcess/AuxiliaryProcessProxy.cpp +++ b/Source/WebKit/UIProcess/AuxiliaryProcessProxy.cpp -@@ -157,7 +157,11 @@ void AuxiliaryProcessProxy::getLaunchOptions(ProcessLauncher::LaunchOptions& lau +@@ -158,7 +158,11 @@ void AuxiliaryProcessProxy::getLaunchOptions(ProcessLauncher::LaunchOptions& lau launchOptions.processCmdPrefix = String::fromUTF8(processCmdPrefix); #endif // ENABLE(DEVELOPER_MODE) && (PLATFORM(GTK) || PLATFORM(WPE)) @@ -11507,10 +11497,10 @@ index 39e4660d5936fd8915cf0dcd7afa83aece092067..da3ef68451021c296b3ff12416ad3bf8 platformGetLaunchOptions(launchOptions); } diff --git a/Source/WebKit/UIProcess/AuxiliaryProcessProxy.h b/Source/WebKit/UIProcess/AuxiliaryProcessProxy.h -index a18630c193b4902b58f3880b038928c9518cb4d1..c3c9e54a8eb5c653be37a6be81336f4f7ac1e209 100644 +index e2d1e9dfbc77e3d520ce8d31c812a8482facae10..28238da43a4fc45466b43753bc5ad8aa07963f94 100644 --- a/Source/WebKit/UIProcess/AuxiliaryProcessProxy.h +++ b/Source/WebKit/UIProcess/AuxiliaryProcessProxy.h -@@ -259,13 +259,16 @@ protected: +@@ -264,13 +264,16 @@ protected: static RefPtr fetchAudioComponentServerRegistrations(); #endif @@ -11673,7 +11663,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 b310d8ccd4ab217564ff72b1e9d02e1136eb7b89..052056e17d3e8c198a3148e8578905c08d34e7f6 100644 +index 20af8a02d6dee5af7328accca7cd88a06995c4bb..16e8fc676e4bd70f3f35414434963ccb9f277311 100644 --- a/Source/WebKit/UIProcess/Cocoa/UIDelegate.h +++ b/Source/WebKit/UIProcess/Cocoa/UIDelegate.h @@ -96,6 +96,7 @@ private: @@ -11684,7 +11674,7 @@ index b310d8ccd4ab217564ff72b1e9d02e1136eb7b89..052056e17d3e8c198a3148e8578905c0 void presentStorageAccessConfirmDialog(const WTF::String& requestingDomain, const WTF::String& currentDomain, CompletionHandler&&); void requestStorageAccessConfirm(WebPageProxy&, WebFrameProxy*, const WebCore::RegistrableDomain& requestingDomain, const WebCore::RegistrableDomain& currentDomain, std::optional&&, CompletionHandler&&) final; void decidePolicyForGeolocationPermissionRequest(WebPageProxy&, WebFrameProxy&, const FrameInfoData&, Function&) final; -@@ -205,6 +206,7 @@ private: +@@ -207,6 +208,7 @@ private: bool webViewRunJavaScriptAlertPanelWithMessageInitiatedByFrameCompletionHandler : 1; bool webViewRunJavaScriptConfirmPanelWithMessageInitiatedByFrameCompletionHandler : 1; bool webViewRunJavaScriptTextInputPanelWithPromptDefaultTextInitiatedByFrameCompletionHandler : 1; @@ -11693,10 +11683,10 @@ index b310d8ccd4ab217564ff72b1e9d02e1136eb7b89..052056e17d3e8c198a3148e8578905c0 bool webViewRequestStorageAccessPanelForDomainUnderCurrentDomainForQuirkDomainsCompletionHandler : 1; bool webViewRunBeforeUnloadConfirmPanelWithMessageInitiatedByFrameCompletionHandler : 1; diff --git a/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm b/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm -index eeaf81b4869c7d557e9547b0d1bd99ce1efe7aa1..136eef5fcc033fc37a046939f87625c8348b4544 100644 +index db0e7523899917cc9055ced3127a1e4eb493313d..c5a8a5a7da934deda55313465c26a38b1b33d2ac 100644 --- a/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm +++ b/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm -@@ -117,6 +117,7 @@ void UIDelegate::setDelegate(id delegate) +@@ -118,6 +118,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:)]; @@ -11704,7 +11694,7 @@ index eeaf81b4869c7d557e9547b0d1bd99ce1efe7aa1..136eef5fcc033fc37a046939f87625c8 m_delegateMethods.webViewRequestStorageAccessPanelUnderFirstPartyCompletionHandler = [delegate respondsToSelector:@selector(_webView:requestStorageAccessPanelForDomain:underCurrentDomain:completionHandler:)]; m_delegateMethods.webViewRequestStorageAccessPanelForDomainUnderCurrentDomainForQuirkDomainsCompletionHandler = [delegate respondsToSelector:@selector(_webView:requestStorageAccessPanelForDomain:underCurrentDomain:forQuirkDomains:completionHandler:)]; m_delegateMethods.webViewRunBeforeUnloadConfirmPanelWithMessageInitiatedByFrameCompletionHandler = [delegate respondsToSelector:@selector(_webView:runBeforeUnloadConfirmPanelWithMessage:initiatedByFrame:completionHandler:)]; -@@ -438,6 +439,15 @@ void UIDelegate::UIClient::runJavaScriptPrompt(WebPageProxy& page, const WTF::St +@@ -442,6 +443,15 @@ void UIDelegate::UIClient::runJavaScriptPrompt(WebPageProxy& page, const WTF::St }).get()]; } @@ -11721,7 +11711,7 @@ index eeaf81b4869c7d557e9547b0d1bd99ce1efe7aa1..136eef5fcc033fc37a046939f87625c8 { if (!m_uiDelegate) diff --git a/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm b/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm -index 1e5123cddd3d09b7bd1076f8e050979b3388757d..827edb9d65ad34f4b1372d884cce08aa7880346e 100644 +index b77d46b64193c5cf2017da8d81623e54d5f6f7a8..61a08b78ff3829995b54ce14c1752d4e073d5796 100644 --- a/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm +++ b/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm @@ -38,6 +38,7 @@ @@ -11732,7 +11722,7 @@ index 1e5123cddd3d09b7bd1076f8e050979b3388757d..827edb9d65ad34f4b1372d884cce08aa #import "PlaybackSessionManagerProxy.h" #import "QuickLookThumbnailLoader.h" #import "RemoteLayerTreeTransaction.h" -@@ -282,10 +283,87 @@ bool WebPageProxy::scrollingUpdatesDisabledForTesting() +@@ -283,10 +284,87 @@ bool WebPageProxy::scrollingUpdatesDisabledForTesting() void WebPageProxy::startDrag(const DragItem& dragItem, ShareableBitmap::Handle&& dragImageHandle) { @@ -11819,13 +11809,13 @@ index 1e5123cddd3d09b7bd1076f8e050979b3388757d..827edb9d65ad34f4b1372d884cce08aa + +#endif // ENABLE(DRAG_SUPPORT) - #if ENABLE(ATTACHMENT_ELEMENT) + #if ENABLE(UNIFIED_TEXT_REPLACEMENT) diff --git a/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm b/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm -index 39e5b93f61600114b4229c53ca529aa2ea5357bd..b8c0f37272184c6847ed1ed1737464cbb0febe10 100644 +index ba0c5fe1678dc1055c7f495f5ff421438db7e082..bdf2dd23de87c114db52603b919f29188a2c4bed 100644 --- a/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm +++ b/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm -@@ -429,7 +429,7 @@ ALLOW_DEPRECATED_DECLARATIONS_END +@@ -434,7 +434,7 @@ ALLOW_DEPRECATED_DECLARATIONS_END auto screenProperties = WebCore::collectScreenProperties(); parameters.screenProperties = WTFMove(screenProperties); #if PLATFORM(MAC) @@ -11834,7 +11824,7 @@ index 39e5b93f61600114b4229c53ca529aa2ea5357bd..b8c0f37272184c6847ed1ed1737464cb #endif #if (PLATFORM(IOS) || PLATFORM(VISION)) && HAVE(AGX_COMPILER_SERVICE) -@@ -797,8 +797,8 @@ void WebProcessPool::registerNotificationObservers() +@@ -803,8 +803,8 @@ void WebProcessPool::registerNotificationObservers() }]; m_scrollerStyleNotificationObserver = [[NSNotificationCenter defaultCenter] addObserverForName:NSPreferredScrollerStyleDidChangeNotification object:nil queue:[NSOperationQueue currentQueue] usingBlock:^(NSNotification *notification) { @@ -11846,7 +11836,7 @@ index 39e5b93f61600114b4229c53ca529aa2ea5357bd..b8c0f37272184c6847ed1ed1737464cb 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 40ad458db34babad87d145c16244a678d4531941..55c32131029665071775a0c8881d0f171cbae89d 100644 +index 3796110b3f6ffb29bc1eae80505017dee9e779d1..1a181f4ac8ce8d15d5e65a9df6afc8fe5695e85c 100644 --- a/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp +++ b/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp @@ -33,14 +33,17 @@ @@ -12004,7 +11994,7 @@ index d2ceeda76e90ab2041f238c240f81bf9e37f6072..faa338a2b4af13663bb63efc940b7efe } // namespace WebKit diff --git a/Source/WebKit/UIProcess/Downloads/DownloadProxy.cpp b/Source/WebKit/UIProcess/Downloads/DownloadProxy.cpp -index f2d9013c71bc229498425de62c090323d6f7655b..0e26ccf1d2ad583b54b8a3c0f8829f12f1ce9853 100644 +index 0295a560194b82bf172bfe978c711bb8f280f8e4..e8584dc0133a6a57734c63f6020f3d27dbcd04d7 100644 --- a/Source/WebKit/UIProcess/Downloads/DownloadProxy.cpp +++ b/Source/WebKit/UIProcess/Downloads/DownloadProxy.cpp @@ -40,8 +40,10 @@ @@ -12043,7 +12033,7 @@ index f2d9013c71bc229498425de62c090323d6f7655b..0e26ccf1d2ad583b54b8a3c0f8829f12 m_downloadProxyMap.downloadFinished(*this); }); } else -@@ -162,6 +170,21 @@ void DownloadProxy::decideDestinationWithSuggestedFilename(const WebCore::Resour +@@ -164,6 +172,21 @@ void DownloadProxy::decideDestinationWithSuggestedFilename(const WebCore::Resour suggestedFilename = m_suggestedFilename; suggestedFilename = MIMETypeRegistry::appendFileExtensionIfNecessary(suggestedFilename, response.mimeType()); @@ -12065,7 +12055,7 @@ index f2d9013c71bc229498425de62c090323d6f7655b..0e26ccf1d2ad583b54b8a3c0f8829f12 m_client->decideDestinationWithSuggestedFilename(*this, response, ResourceResponseBase::sanitizeSuggestedFilename(suggestedFilename), [this, protectedThis = Ref { *this }, completionHandler = WTFMove(completionHandler)] (AllowOverwrite allowOverwrite, String destination) mutable { SandboxExtension::Handle sandboxExtensionHandle; if (!destination.isNull()) { -@@ -210,6 +233,8 @@ void DownloadProxy::didFinish() +@@ -212,6 +235,8 @@ void DownloadProxy::didFinish() updateQuarantinePropertiesIfPossible(); #endif m_client->didFinish(*this); @@ -12074,7 +12064,7 @@ index f2d9013c71bc229498425de62c090323d6f7655b..0e26ccf1d2ad583b54b8a3c0f8829f12 // This can cause the DownloadProxy object to be deleted. m_downloadProxyMap.downloadFinished(*this); -@@ -220,6 +245,8 @@ void DownloadProxy::didFail(const ResourceError& error, std::span +@@ -222,6 +247,8 @@ void DownloadProxy::didFail(const ResourceError& error, std::span m_legacyResumeData = createData(resumeData); m_client->didFail(*this, error, m_legacyResumeData.get()); @@ -12420,7 +12410,7 @@ index 0000000000000000000000000000000000000000..4ec8b96bbbddf8a7b042f53a8068754a +cairo_status_t cairo_image_surface_write_to_jpeg_mem(cairo_surface_t *sfc, unsigned char **data, size_t *len, int quality); diff --git a/Source/WebKit/UIProcess/Inspector/Agents/InspectorScreencastAgent.cpp b/Source/WebKit/UIProcess/Inspector/Agents/InspectorScreencastAgent.cpp new file mode 100644 -index 0000000000000000000000000000000000000000..844f559af924de3fddce8cfcea8550261a8da95b +index 0000000000000000000000000000000000000000..91cf94cd292350afb3e3ed071ca44760acda1c14 --- /dev/null +++ b/Source/WebKit/UIProcess/Inspector/Agents/InspectorScreencastAgent.cpp @@ -0,0 +1,305 @@ @@ -12536,7 +12526,7 @@ index 0000000000000000000000000000000000000000..844f559af924de3fddce8cfcea855026 + int stride = cairo_image_surface_get_stride(surface); + int height = cairo_image_surface_get_height(surface); + auto cryptoDigest = PAL::CryptoDigest::create(PAL::CryptoDigest::Algorithm::SHA_1); -+ cryptoDigest->addBytes(data, stride * height); ++ cryptoDigest->addBytes(std::span(data, stride * height)); + auto digest = cryptoDigest->computeHash(); + if (m_lastFrameDigest == digest) + return; @@ -12703,7 +12693,7 @@ index 0000000000000000000000000000000000000000..844f559af924de3fddce8cfcea855026 + + // Do not send the same frame over and over. + auto cryptoDigest = PAL::CryptoDigest::create(PAL::CryptoDigest::Algorithm::SHA_1); -+ cryptoDigest->addBytes(data.data(), data.size()); ++ cryptoDigest->addBytes(std::span(data.data(), data.size())); + auto digest = cryptoDigest->computeHash(); + if (m_lastFrameDigest != digest) { + String base64Data = base64EncodeToString(data); @@ -12834,7 +12824,7 @@ index 0000000000000000000000000000000000000000..d28dde452275f18739e3b1c8d709185c +} // namespace WebKit diff --git a/Source/WebKit/UIProcess/Inspector/Agents/ScreencastEncoder.cpp b/Source/WebKit/UIProcess/Inspector/Agents/ScreencastEncoder.cpp new file mode 100644 -index 0000000000000000000000000000000000000000..5f82314ec035268b1a90568935d427e0909eae05 +index 0000000000000000000000000000000000000000..90080e92c8278e73355c1fd4c571ea12f0bca9c5 --- /dev/null +++ b/Source/WebKit/UIProcess/Inspector/Agents/ScreencastEncoder.cpp @@ -0,0 +1,391 @@ @@ -13022,7 +13012,7 @@ index 0000000000000000000000000000000000000000..5f82314ec035268b1a90568935d427e0 +class ScreencastEncoder::VPXCodec { +public: + VPXCodec(ScopedVpxCodec codec, vpx_codec_enc_cfg_t cfg, FILE* file) -+ : m_encoderQueue(WorkQueue::create("Screencast encoder")) ++ : m_encoderQueue(WorkQueue::create("Screencast encoder"_s)) + , m_codec(WTFMove(codec)) + , m_cfg(cfg) + , m_file(file) @@ -15535,23 +15525,11 @@ index 3fe0abcfe36bef7ca45bed5661a737ed2bfe56d0..510656948af01ec65d4543c805e9667a #include "RemoteMediaSessionCoordinatorMessages.h" #include "RemoteMediaSessionCoordinatorProxyMessages.h" #include "WebPageProxy.h" -diff --git a/Source/WebKit/UIProcess/Notifications/glib/NotificationService.cpp b/Source/WebKit/UIProcess/Notifications/glib/NotificationService.cpp -index 6f2b716f4445008123e96f9db494aea307520636..8f0235a699c91d966a4de9fd03aff57712e80675 100644 ---- a/Source/WebKit/UIProcess/Notifications/glib/NotificationService.cpp -+++ b/Source/WebKit/UIProcess/Notifications/glib/NotificationService.cpp -@@ -34,6 +34,7 @@ - #include - #include - #include -+#include - #include - #include - #include diff --git a/Source/WebKit/UIProcess/PageClient.h b/Source/WebKit/UIProcess/PageClient.h -index 42eee66ab16a2194f63b01a9f26c20aeb728a872..c66aca2950f5cc8823194c4f6cfd60275f5f00a2 100644 +index 46f725b53f67ed41ff3312d106a23174d6a16363..369ee3539762a6286977d94a7958b25291f11ed6 100644 --- a/Source/WebKit/UIProcess/PageClient.h +++ b/Source/WebKit/UIProcess/PageClient.h -@@ -91,6 +91,10 @@ OBJC_CLASS WKView; +@@ -92,6 +92,10 @@ OBJC_CLASS WKView; #endif #endif @@ -15562,7 +15540,7 @@ index 42eee66ab16a2194f63b01a9f26c20aeb728a872..c66aca2950f5cc8823194c4f6cfd6027 namespace API { class Attachment; class HitTestResult; -@@ -342,7 +346,16 @@ public: +@@ -347,7 +351,16 @@ public: virtual void selectionDidChange() = 0; #endif @@ -15706,7 +15684,7 @@ index 0000000000000000000000000000000000000000..3c8fd0549f1847515d35092f0f49b060 + +#endif // ENABLE(FULLSCREEN_API) diff --git a/Source/WebKit/UIProcess/ProvisionalFrameProxy.cpp b/Source/WebKit/UIProcess/ProvisionalFrameProxy.cpp -index a2dabe84360ef09ea687ded6234d4a742fcc8e56..c411e95dc6549be2e8ed65f025f154bbc9f1ef2c 100644 +index b2dc99d6ca28e7f1140122a259d9fbcf3b4eeabf..4f182cd32458d19b775f79deb1f6da22a4077ba6 100644 --- a/Source/WebKit/UIProcess/ProvisionalFrameProxy.cpp +++ b/Source/WebKit/UIProcess/ProvisionalFrameProxy.cpp @@ -25,6 +25,7 @@ @@ -15719,7 +15697,7 @@ index a2dabe84360ef09ea687ded6234d4a742fcc8e56..c411e95dc6549be2e8ed65f025f154bb #include "VisitedLinkStore.h" diff --git a/Source/WebKit/UIProcess/RemoteInspectorPipe.cpp b/Source/WebKit/UIProcess/RemoteInspectorPipe.cpp new file mode 100644 -index 0000000000000000000000000000000000000000..967d6e05836be7e46c8aecfd4c3243bb9f422b96 +index 0000000000000000000000000000000000000000..1a824be7d9fcb225d018b4a821fa895e844d7805 --- /dev/null +++ b/Source/WebKit/UIProcess/RemoteInspectorPipe.cpp @@ -0,0 +1,225 @@ @@ -15838,7 +15816,7 @@ index 0000000000000000000000000000000000000000..967d6e05836be7e46c8aecfd4c3243bb + +public: + RemoteFrontendChannel() -+ : m_senderQueue(WorkQueue::create("Inspector pipe writer")) ++ : m_senderQueue(WorkQueue::create("Inspector pipe writer"_s)) + { + } + @@ -15886,7 +15864,7 @@ index 0000000000000000000000000000000000000000..967d6e05836be7e46c8aecfd4c3243bb + + m_playwrightAgent.connectFrontend(*m_remoteFrontendChannel); + m_terminated = false; -+ m_receiverThread = Thread::create("Inspector pipe reader", [this] { ++ m_receiverThread = Thread::create("Inspector pipe reader"_s, [this] { + workerRun(); + }); + return true; @@ -15920,7 +15898,7 @@ index 0000000000000000000000000000000000000000..967d6e05836be7e46c8aecfd4c3243bb + } + size_t start = 0; + size_t end = line.size(); -+ line.append(buffer.get(), size); ++ line.append(std::span { buffer.get(), size }); + while (true) { + for (; end < line.size(); ++end) { + if (line[end] == '\0') @@ -15930,7 +15908,7 @@ index 0000000000000000000000000000000000000000..967d6e05836be7e46c8aecfd4c3243bb + break; + + if (end > start) { -+ String message = String::fromUTF8(line.data() + start, end - start); ++ String message = String::fromUTF8({ line.data() + start, end - start }); + RunLoop::main().dispatch([this, message = WTFMove(message)] { + if (!m_terminated) + m_playwrightAgent.dispatchMessageFromFrontend(message); @@ -16044,10 +16022,10 @@ index d499ee31f32b9dcdb456ba0b476d211fba115673..43b349887d18e21162b59fa8174df32c namespace WebCore { class PlatformWheelEvent; diff --git a/Source/WebKit/UIProcess/RemotePageProxy.cpp b/Source/WebKit/UIProcess/RemotePageProxy.cpp -index 7ba86bc321d138d96705bfb979088a327cd14944..41ce842abf547f173672ff220f2256f89f4aae47 100644 +index 1db0914af03203844ccbda63b50f8486dc823586..3bf331ae9866aaea83e3bea6ca5bb196d4039110 100644 --- a/Source/WebKit/UIProcess/RemotePageProxy.cpp +++ b/Source/WebKit/UIProcess/RemotePageProxy.cpp -@@ -42,6 +42,7 @@ +@@ -43,6 +43,7 @@ #include "WebPageProxyMessages.h" #include "WebProcessMessages.h" #include "WebProcessProxy.h" @@ -16068,7 +16046,7 @@ index 5ecfa03204724d8e5696149dd45e4d35877993f0..fc8262fb617aef3eb68cf13117747dc4 class RemotePageProxy : public IPC::MessageReceiver { WTF_MAKE_FAST_ALLOCATED; diff --git a/Source/WebKit/UIProcess/WebAuthentication/fido/U2fAuthenticator.cpp b/Source/WebKit/UIProcess/WebAuthentication/fido/U2fAuthenticator.cpp -index b2d3197c7a4428171d97a8dff2054e0eebd965fe..2cc258a0343cdeffa1d3c7afd89985b9388f715a 100644 +index 4d8a16e02d2d3c1d11df5df2c84197da76539324..5de382d79c2dd8f7884eb27ef454ba0b99f3fab8 100644 --- a/Source/WebKit/UIProcess/WebAuthentication/fido/U2fAuthenticator.cpp +++ b/Source/WebKit/UIProcess/WebAuthentication/fido/U2fAuthenticator.cpp @@ -37,6 +37,7 @@ @@ -16104,7 +16082,7 @@ index e7d6621532fcc73212cc9130a7cafbb13f458d1d..ec931c8f19d2a61c0fa7d78b52df7f3f WebPageProxy* page() const { return m_page.get(); } diff --git a/Source/WebKit/UIProcess/WebFrameProxy.cpp b/Source/WebKit/UIProcess/WebFrameProxy.cpp -index 049738f4f0db8071eb2dce0d3187fb50da0214af..30ee4aff100cfcb6aa90d730bceea6bb3b9f3b0d 100644 +index 6e6560e17721ed182ab27277759488c410ae130e..207bda7e3c53118344536568ef18ccc043104ba1 100644 --- a/Source/WebKit/UIProcess/WebFrameProxy.cpp +++ b/Source/WebKit/UIProcess/WebFrameProxy.cpp @@ -31,6 +31,7 @@ @@ -16810,10 +16788,10 @@ index 0000000000000000000000000000000000000000..3e87bf40ced2301f4fb145c6cb31f2cf + +} // namespace WebKit diff --git a/Source/WebKit/UIProcess/WebPageProxy.cpp b/Source/WebKit/UIProcess/WebPageProxy.cpp -index df4dd0b19148e6c1ec29ca080209bca624f9bdd1..f64fd97f7d82209da372c102cd6ca8aee698d86a 100644 +index 365c5e2c7925347531f2e488d720973612f25d39..585c51dd017a628f08d443c863fd1453d4592996 100644 --- a/Source/WebKit/UIProcess/WebPageProxy.cpp +++ b/Source/WebKit/UIProcess/WebPageProxy.cpp -@@ -183,12 +183,14 @@ +@@ -185,12 +185,14 @@ #include #include #include @@ -16828,7 +16806,7 @@ index df4dd0b19148e6c1ec29ca080209bca624f9bdd1..f64fd97f7d82209da372c102cd6ca8ae #include #include #include -@@ -209,6 +211,7 @@ +@@ -211,6 +213,7 @@ #include #include #include @@ -16836,8 +16814,8 @@ index df4dd0b19148e6c1ec29ca080209bca624f9bdd1..f64fd97f7d82209da372c102cd6ca8ae #include #include #include -@@ -216,11 +219,13 @@ - #include +@@ -218,11 +221,13 @@ + #include #include #include +#include @@ -16850,7 +16828,7 @@ index df4dd0b19148e6c1ec29ca080209bca624f9bdd1..f64fd97f7d82209da372c102cd6ca8ae #include #include #include -@@ -296,6 +301,9 @@ +@@ -298,6 +303,9 @@ #include "AcceleratedBackingStoreDMABuf.h" #endif #include "GtkSettingsManager.h" @@ -16860,7 +16838,7 @@ index df4dd0b19148e6c1ec29ca080209bca624f9bdd1..f64fd97f7d82209da372c102cd6ca8ae #include #endif -@@ -409,6 +417,8 @@ static constexpr Seconds tryCloseTimeoutDelay = 50_ms; +@@ -419,6 +427,8 @@ static constexpr Seconds tryCloseTimeoutDelay = 50_ms; static constexpr Seconds audibleActivityClearDelay = 10_s; #endif @@ -16869,7 +16847,7 @@ index df4dd0b19148e6c1ec29ca080209bca624f9bdd1..f64fd97f7d82209da372c102cd6ca8ae DEFINE_DEBUG_ONLY_GLOBAL(WTF::RefCountedLeakCounter, webPageProxyCounter, ("WebPageProxy")); #if PLATFORM(COCOA) -@@ -813,6 +823,10 @@ WebPageProxy::~WebPageProxy() +@@ -823,6 +833,10 @@ WebPageProxy::~WebPageProxy() if (preferences->mediaSessionCoordinatorEnabled()) GroupActivitiesSessionNotifier::sharedNotifier().removeWebPage(*this); #endif @@ -16880,7 +16858,7 @@ index df4dd0b19148e6c1ec29ca080209bca624f9bdd1..f64fd97f7d82209da372c102cd6ca8ae } void WebPageProxy::addAllMessageReceivers() -@@ -1341,6 +1355,7 @@ void WebPageProxy::finishAttachingToWebProcess(ProcessLaunchReason reason) +@@ -1361,6 +1375,7 @@ void WebPageProxy::finishAttachingToWebProcess(ProcessLaunchReason reason) protectedPageClient()->didRelaunchProcess(); internals().pageLoadState.didSwapWebProcesses(); @@ -16888,7 +16866,7 @@ index df4dd0b19148e6c1ec29ca080209bca624f9bdd1..f64fd97f7d82209da372c102cd6ca8ae } void WebPageProxy::didAttachToRunningProcess() -@@ -1349,7 +1364,7 @@ void WebPageProxy::didAttachToRunningProcess() +@@ -1369,7 +1384,7 @@ void WebPageProxy::didAttachToRunningProcess() #if ENABLE(FULLSCREEN_API) ASSERT(!m_fullScreenManager); @@ -16897,7 +16875,7 @@ index df4dd0b19148e6c1ec29ca080209bca624f9bdd1..f64fd97f7d82209da372c102cd6ca8ae #endif #if ENABLE(VIDEO_PRESENTATION_MODE) ASSERT(!m_playbackSessionManager); -@@ -1747,6 +1762,21 @@ WebProcessProxy& WebPageProxy::ensureRunningProcess() +@@ -1764,6 +1779,21 @@ WebProcessProxy& WebPageProxy::ensureRunningProcess() return m_process; } @@ -16919,7 +16897,7 @@ index df4dd0b19148e6c1ec29ca080209bca624f9bdd1..f64fd97f7d82209da372c102cd6ca8ae RefPtr WebPageProxy::loadRequest(ResourceRequest&& request, ShouldOpenExternalURLsPolicy shouldOpenExternalURLsPolicy, API::Object* userData) { if (m_isClosed) -@@ -2321,6 +2351,42 @@ void WebPageProxy::setControlledByAutomation(bool controlled) +@@ -2336,6 +2366,42 @@ void WebPageProxy::setControlledByAutomation(bool controlled) websiteDataStore().protectedNetworkProcess()->send(Messages::NetworkProcess::SetSessionIsControlledByAutomation(m_websiteDataStore->sessionID(), m_controlledByAutomation), 0); } @@ -16962,7 +16940,7 @@ index df4dd0b19148e6c1ec29ca080209bca624f9bdd1..f64fd97f7d82209da372c102cd6ca8ae void WebPageProxy::createInspectorTarget(const String& targetId, Inspector::InspectorTargetType type) { MESSAGE_CHECK(m_process, !targetId.isEmpty()); -@@ -2562,6 +2628,24 @@ void WebPageProxy::updateActivityState(OptionSet flagsToUpdate) +@@ -2577,6 +2643,24 @@ void WebPageProxy::updateActivityState(OptionSet flagsToUpdate) bool wasVisible = isViewVisible(); Ref pageClient = this->pageClient(); internals().activityState.remove(flagsToUpdate); @@ -16987,7 +16965,7 @@ index df4dd0b19148e6c1ec29ca080209bca624f9bdd1..f64fd97f7d82209da372c102cd6ca8ae if (flagsToUpdate & ActivityState::IsFocused && pageClient->isViewFocused()) internals().activityState.add(ActivityState::IsFocused); if (flagsToUpdate & ActivityState::WindowIsActive && pageClient->isViewWindowActive()) -@@ -3273,7 +3357,7 @@ void WebPageProxy::performDragOperation(DragData& dragData, const String& dragSt +@@ -3302,7 +3386,7 @@ void WebPageProxy::performDragOperation(DragData& dragData, const String& dragSt grantAccessToCurrentPasteboardData(dragStorageName); #endif @@ -16996,7 +16974,7 @@ index df4dd0b19148e6c1ec29ca080209bca624f9bdd1..f64fd97f7d82209da372c102cd6ca8ae performDragControllerAction(DragControllerAction::PerformDragOperation, dragData); #else if (!hasRunningProcess()) -@@ -3290,6 +3374,8 @@ void WebPageProxy::performDragControllerAction(DragControllerAction action, Drag +@@ -3319,6 +3403,8 @@ void WebPageProxy::performDragControllerAction(DragControllerAction action, Drag if (!hasRunningProcess()) return; @@ -17005,7 +16983,7 @@ index df4dd0b19148e6c1ec29ca080209bca624f9bdd1..f64fd97f7d82209da372c102cd6ca8ae auto completionHandler = [this, protectedThis = Ref { *this }, action, dragData] (std::optional dragOperation, WebCore::DragHandlingMethod dragHandlingMethod, bool mouseIsOverFileInput, unsigned numberOfItemsToBeAccepted, const IntRect& insertionRect, const IntRect& editableElementRect, std::optional remoteUserInputEventData) mutable { if (!remoteUserInputEventData) { didPerformDragControllerAction(dragOperation, dragHandlingMethod, mouseIsOverFileInput, numberOfItemsToBeAccepted, insertionRect, editableElementRect); -@@ -3306,6 +3392,8 @@ void WebPageProxy::performDragControllerAction(DragControllerAction action, Drag +@@ -3335,6 +3421,8 @@ void WebPageProxy::performDragControllerAction(DragControllerAction action, Drag protectedProcess()->assumeReadAccessToBaseURL(*this, url); ASSERT(dragData.platformData()); @@ -17014,7 +16992,7 @@ index df4dd0b19148e6c1ec29ca080209bca624f9bdd1..f64fd97f7d82209da372c102cd6ca8ae sendWithAsyncReply(Messages::WebPage::PerformDragControllerAction(action, dragData.clientPosition(), dragData.globalPosition(), dragData.draggingSourceOperationMask(), *dragData.platformData(), dragData.flags()), WTFMove(completionHandler)); #else sendToProcessContainingFrame(frameID, Messages::WebPage::PerformDragControllerAction(frameID, action, dragData), WTFMove(completionHandler)); -@@ -3321,14 +3409,34 @@ void WebPageProxy::didPerformDragControllerAction(std::optionaldidPerformDragControllerAction(); @@ -17052,7 +17030,7 @@ index df4dd0b19148e6c1ec29ca080209bca624f9bdd1..f64fd97f7d82209da372c102cd6ca8ae didStartDrag(); } #endif -@@ -3349,6 +3457,24 @@ void WebPageProxy::dragEnded(const IntPoint& clientPosition, const IntPoint& glo +@@ -3378,6 +3486,24 @@ void WebPageProxy::dragEnded(const IntPoint& clientPosition, const IntPoint& glo setDragCaretRect({ }); } @@ -17077,7 +17055,7 @@ index df4dd0b19148e6c1ec29ca080209bca624f9bdd1..f64fd97f7d82209da372c102cd6ca8ae void WebPageProxy::didStartDrag() { if (!hasRunningProcess()) -@@ -3356,6 +3482,16 @@ void WebPageProxy::didStartDrag() +@@ -3385,6 +3511,16 @@ void WebPageProxy::didStartDrag() discardQueuedMouseEvents(); send(Messages::WebPage::DidStartDrag()); @@ -17094,7 +17072,7 @@ index df4dd0b19148e6c1ec29ca080209bca624f9bdd1..f64fd97f7d82209da372c102cd6ca8ae } void WebPageProxy::dragCancelled() -@@ -3508,16 +3644,37 @@ void WebPageProxy::processNextQueuedMouseEvent() +@@ -3540,16 +3676,37 @@ void WebPageProxy::processNextQueuedMouseEvent() process->startResponsivenessTimer(); } @@ -17138,7 +17116,7 @@ index df4dd0b19148e6c1ec29ca080209bca624f9bdd1..f64fd97f7d82209da372c102cd6ca8ae } void WebPageProxy::doAfterProcessingAllPendingMouseEvents(WTF::Function&& action) -@@ -3683,6 +3840,8 @@ void WebPageProxy::wheelEventHandlingCompleted(bool wasHandled) +@@ -3715,6 +3872,8 @@ void WebPageProxy::wheelEventHandlingCompleted(bool wasHandled) if (RefPtr automationSession = process().processPool().automationSession()) automationSession->wheelEventsFlushedForPage(*this); @@ -17147,7 +17125,7 @@ index df4dd0b19148e6c1ec29ca080209bca624f9bdd1..f64fd97f7d82209da372c102cd6ca8ae } void WebPageProxy::cacheWheelEventScrollingAccelerationCurve(const NativeWebWheelEvent& nativeWheelEvent) -@@ -3829,7 +3988,7 @@ static TrackingType mergeTrackingTypes(TrackingType a, TrackingType b) +@@ -3863,7 +4022,7 @@ static TrackingType mergeTrackingTypes(TrackingType a, TrackingType b) void WebPageProxy::updateTouchEventTracking(const WebTouchEvent& touchStartEvent) { @@ -17156,7 +17134,7 @@ index df4dd0b19148e6c1ec29ca080209bca624f9bdd1..f64fd97f7d82209da372c102cd6ca8ae for (auto& touchPoint : touchStartEvent.touchPoints()) { auto location = touchPoint.location(); auto update = [this, location](TrackingType& trackingType, EventTrackingRegions::EventType eventType) { -@@ -4420,6 +4579,7 @@ void WebPageProxy::receivedNavigationActionPolicyDecision(WebProcessProxy& proce +@@ -4460,6 +4619,7 @@ void WebPageProxy::receivedNavigationActionPolicyDecision(WebProcessProxy& proce void WebPageProxy::receivedPolicyDecision(PolicyAction action, API::Navigation* navigation, RefPtr&& websitePolicies, Ref&& navigationAction, WillContinueLoadInNewProcess willContinueLoadInNewProcess, std::optional sandboxExtensionHandle, std::optional&& consoleMessage, CompletionHandler&& completionHandler) { @@ -17164,7 +17142,7 @@ index df4dd0b19148e6c1ec29ca080209bca624f9bdd1..f64fd97f7d82209da372c102cd6ca8ae if (!hasRunningProcess()) return completionHandler(PolicyDecision { }); -@@ -5342,6 +5502,11 @@ void WebPageProxy::pageScaleFactorDidChange(double scaleFactor) +@@ -5382,6 +5542,11 @@ void WebPageProxy::pageScaleFactorDidChange(double scaleFactor) m_pageScaleFactor = scaleFactor; } @@ -17176,7 +17154,7 @@ index df4dd0b19148e6c1ec29ca080209bca624f9bdd1..f64fd97f7d82209da372c102cd6ca8ae void WebPageProxy::pluginScaleFactorDidChange(double pluginScaleFactor) { MESSAGE_CHECK(m_process, scaleFactorIsValid(pluginScaleFactor)); -@@ -5872,6 +6037,7 @@ void WebPageProxy::didDestroyNavigationShared(Ref&& process, ui +@@ -5935,6 +6100,7 @@ void WebPageProxy::didDestroyNavigationShared(Ref&& process, ui Ref protectedPageClient { pageClient() }; m_navigationState->didDestroyNavigation(process->coreProcessIdentifier(), navigationID); @@ -17184,7 +17162,7 @@ index df4dd0b19148e6c1ec29ca080209bca624f9bdd1..f64fd97f7d82209da372c102cd6ca8ae } void WebPageProxy::didStartProvisionalLoadForFrame(FrameIdentifier frameID, FrameInfoData&& frameInfo, ResourceRequest&& request, uint64_t navigationID, URL&& url, URL&& unreachableURL, const UserData& userData) -@@ -6126,6 +6292,8 @@ void WebPageProxy::didFailProvisionalLoadForFrameShared(Ref&& p +@@ -6189,6 +6355,8 @@ void WebPageProxy::didFailProvisionalLoadForFrameShared(Ref&& p m_failingProvisionalLoadURL = { }; @@ -17193,7 +17171,7 @@ index df4dd0b19148e6c1ec29ca080209bca624f9bdd1..f64fd97f7d82209da372c102cd6ca8ae // 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; -@@ -6767,7 +6935,14 @@ void WebPageProxy::beginSafeBrowsingCheck(const URL&, bool, WebFramePolicyListen +@@ -6834,7 +7002,14 @@ void WebPageProxy::beginSafeBrowsingCheck(const URL&, bool, WebFramePolicyListen void WebPageProxy::decidePolicyForNavigationActionAsync(NavigationActionData&& data, CompletionHandler&& completionHandler) { @@ -17209,7 +17187,7 @@ index df4dd0b19148e6c1ec29ca080209bca624f9bdd1..f64fd97f7d82209da372c102cd6ca8ae } void WebPageProxy::decidePolicyForNavigationActionAsyncShared(Ref&& process, NavigationActionData&& data, CompletionHandler&& completionHandler) -@@ -7404,6 +7579,7 @@ void WebPageProxy::createNewPage(WindowFeatures&& windowFeatures, NavigationActi +@@ -7474,6 +7649,7 @@ void WebPageProxy::createNewPage(WindowFeatures&& windowFeatures, NavigationActi if (RefPtr page = originatingFrameInfo->page()) openerAppInitiatedState = page->lastNavigationWasAppInitiated(); @@ -17217,7 +17195,7 @@ index df4dd0b19148e6c1ec29ca080209bca624f9bdd1..f64fd97f7d82209da372c102cd6ca8ae auto completionHandler = [ this, protectedThis = Ref { *this }, -@@ -7462,6 +7638,7 @@ void WebPageProxy::createNewPage(WindowFeatures&& windowFeatures, NavigationActi +@@ -7540,6 +7716,7 @@ void WebPageProxy::createNewPage(WindowFeatures&& windowFeatures, NavigationActi void WebPageProxy::showPage() { m_uiClient->showPage(this); @@ -17225,7 +17203,7 @@ index df4dd0b19148e6c1ec29ca080209bca624f9bdd1..f64fd97f7d82209da372c102cd6ca8ae } bool WebPageProxy::hasOpenedPage() const -@@ -7541,6 +7718,10 @@ void WebPageProxy::closePage() +@@ -7621,6 +7798,10 @@ void WebPageProxy::closePage() if (isClosed()) return; @@ -17236,7 +17214,7 @@ index df4dd0b19148e6c1ec29ca080209bca624f9bdd1..f64fd97f7d82209da372c102cd6ca8ae WEBPAGEPROXY_RELEASE_LOG(Process, "closePage:"); protectedPageClient()->clearAllEditCommands(); m_uiClient->close(this); -@@ -7577,6 +7758,8 @@ void WebPageProxy::runJavaScriptAlert(FrameIdentifier frameID, FrameInfoData&& f +@@ -7657,6 +7838,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 { @@ -17245,7 +17223,7 @@ index df4dd0b19148e6c1ec29ca080209bca624f9bdd1..f64fd97f7d82209da372c102cd6ca8ae page.m_uiClient->runJavaScriptAlert(page, message, frame, WTFMove(frameInfo), [reply = WTFMove(reply), completion = WTFMove(completion)]() mutable { reply(); completion(); -@@ -7598,6 +7781,8 @@ void WebPageProxy::runJavaScriptConfirm(FrameIdentifier frameID, FrameInfoData&& +@@ -7678,6 +7861,8 @@ void WebPageProxy::runJavaScriptConfirm(FrameIdentifier frameID, FrameInfoData&& if (RefPtr automationSession = process().processPool().automationSession()) automationSession->willShowJavaScriptDialog(*this); } @@ -17254,7 +17232,7 @@ index df4dd0b19148e6c1ec29ca080209bca624f9bdd1..f64fd97f7d82209da372c102cd6ca8ae 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 { -@@ -7621,6 +7806,8 @@ void WebPageProxy::runJavaScriptPrompt(FrameIdentifier frameID, FrameInfoData&& +@@ -7701,6 +7886,8 @@ void WebPageProxy::runJavaScriptPrompt(FrameIdentifier frameID, FrameInfoData&& if (RefPtr automationSession = process().processPool().automationSession()) automationSession->willShowJavaScriptDialog(*this); } @@ -17263,7 +17241,7 @@ index df4dd0b19148e6c1ec29ca080209bca624f9bdd1..f64fd97f7d82209da372c102cd6ca8ae 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 { -@@ -7737,6 +7924,8 @@ void WebPageProxy::runBeforeUnloadConfirmPanel(FrameIdentifier frameID, FrameInf +@@ -7817,6 +8004,8 @@ void WebPageProxy::runBeforeUnloadConfirmPanel(FrameIdentifier frameID, FrameInf return; } } @@ -17272,7 +17250,7 @@ index df4dd0b19148e6c1ec29ca080209bca624f9bdd1..f64fd97f7d82209da372c102cd6ca8ae // Since runBeforeUnloadConfirmPanel() can spin a nested run loop we need to turn off the responsiveness timer and the tryClose timer. protectedProcess()->stopResponsivenessTimer(); -@@ -8220,6 +8409,11 @@ void WebPageProxy::resourceLoadDidCompleteWithError(ResourceLoadInfo&& loadInfo, +@@ -8307,6 +8496,11 @@ void WebPageProxy::resourceLoadDidCompleteWithError(ResourceLoadInfo&& loadInfo, } #if ENABLE(FULLSCREEN_API) @@ -17284,7 +17262,7 @@ index df4dd0b19148e6c1ec29ca080209bca624f9bdd1..f64fd97f7d82209da372c102cd6ca8ae WebFullScreenManagerProxy* WebPageProxy::fullScreenManager() { return m_fullScreenManager.get(); -@@ -8296,6 +8490,17 @@ void WebPageProxy::requestDOMPasteAccess(WebCore::DOMPasteAccessCategory pasteAc +@@ -8383,6 +8577,17 @@ void WebPageProxy::requestDOMPasteAccess(WebCore::DOMPasteAccessCategory pasteAc { MESSAGE_CHECK_COMPLETION(m_process, !originIdentifier.isEmpty(), completionHandler(DOMPasteAccessResponse::DeniedForGesture)); @@ -17302,7 +17280,7 @@ index df4dd0b19148e6c1ec29ca080209bca624f9bdd1..f64fd97f7d82209da372c102cd6ca8ae m_pageClient->requestDOMPasteAccess(pasteAccessCategory, elementRect, originIdentifier, WTFMove(completionHandler)); } -@@ -9121,6 +9326,8 @@ void WebPageProxy::mouseEventHandlingCompleted(std::optional event +@@ -9232,6 +9437,8 @@ void WebPageProxy::mouseEventHandlingCompleted(std::optional event if (RefPtr automationSession = process().processPool().automationSession()) automationSession->mouseEventsFlushedForPage(*this); didFinishProcessingAllPendingMouseEvents(); @@ -17311,7 +17289,7 @@ index df4dd0b19148e6c1ec29ca080209bca624f9bdd1..f64fd97f7d82209da372c102cd6ca8ae } } -@@ -9155,6 +9362,7 @@ void WebPageProxy::keyEventHandlingCompleted(std::optional eventTy +@@ -9266,6 +9473,7 @@ void WebPageProxy::keyEventHandlingCompleted(std::optional eventTy if (!canProcessMoreKeyEvents) { if (RefPtr automationSession = process().processPool().automationSession()) automationSession->keyboardEventsFlushedForPage(*this); @@ -17319,9 +17297,9 @@ index df4dd0b19148e6c1ec29ca080209bca624f9bdd1..f64fd97f7d82209da372c102cd6ca8ae } } -@@ -9560,7 +9768,10 @@ void WebPageProxy::dispatchProcessDidTerminate(ProcessTerminationReason reason) +@@ -9671,7 +9879,10 @@ void WebPageProxy::dispatchProcessDidTerminate(ProcessTerminationReason reason) { - WEBPAGEPROXY_RELEASE_LOG_ERROR(Loading, "dispatchProcessDidTerminate: reason=%" PUBLIC_LOG_STRING, processTerminationReasonToString(reason)); + WEBPAGEPROXY_RELEASE_LOG_ERROR(Loading, "dispatchProcessDidTerminate: reason=%" PUBLIC_LOG_STRING, processTerminationReasonToString(reason).characters()); - bool handledByClient = false; + bool handledByClient = m_inspectorController->pageCrashed(reason); @@ -17331,15 +17309,15 @@ index df4dd0b19148e6c1ec29ca080209bca624f9bdd1..f64fd97f7d82209da372c102cd6ca8ae if (m_loaderClient) handledByClient = reason != ProcessTerminationReason::RequestedByClient && m_loaderClient->processDidCrash(*this); else -@@ -9927,6 +10138,7 @@ bool WebPageProxy::useGPUProcessForDOMRenderingEnabled() const +@@ -10041,6 +10252,7 @@ bool WebPageProxy::useGPUProcessForDOMRenderingEnabled() const - WebPageCreationParameters WebPageProxy::creationParameters(WebProcessProxy& process, DrawingAreaProxy& drawingArea, bool isProcessSwap, RefPtr&& websitePolicies, std::optional&& mainFrameIdentifier, SubframeProcessPageParameters* subframeProcessPageParameters, std::optional topContentInset) + WebPageCreationParameters WebPageProxy::creationParameters(WebProcessProxy& process, DrawingAreaProxy& drawingArea, std::optional&& subframeProcessPageParameters, bool isProcessSwap, RefPtr&& websitePolicies, std::optional&& mainFrameIdentifier, std::optional topContentInset) { + WebPageCreationParameters parameters; parameters.processDisplayName = configuration().processDisplayName(); -@@ -10151,6 +10363,8 @@ WebPageCreationParameters WebPageProxy::creationParameters(WebProcessProxy& proc +@@ -10267,6 +10479,8 @@ WebPageCreationParameters WebPageProxy::creationParameters(WebProcessProxy& proc parameters.httpsUpgradeEnabled = preferences().upgradeKnownHostsToHTTPSEnabled() ? m_configuration->httpsUpgradeEnabled() : false; @@ -17348,7 +17326,7 @@ index df4dd0b19148e6c1ec29ca080209bca624f9bdd1..f64fd97f7d82209da372c102cd6ca8ae #if PLATFORM(IOS) || PLATFORM(VISION) // FIXME: This is also being passed over the to WebProcess via the PreferencesStore. parameters.allowsDeprecatedSynchronousXMLHttpRequestDuringUnload = allowsDeprecatedSynchronousXMLHttpRequestDuringUnload(); -@@ -10257,8 +10471,42 @@ void WebPageProxy::gamepadActivity(const Vector>& gam +@@ -10373,8 +10587,42 @@ void WebPageProxy::gamepadActivity(const Vector>& gam #endif @@ -17391,7 +17369,7 @@ index df4dd0b19148e6c1ec29ca080209bca624f9bdd1..f64fd97f7d82209da372c102cd6ca8ae if (negotiatedLegacyTLS == NegotiatedLegacyTLS::Yes) { m_navigationClient->shouldAllowLegacyTLS(*this, authenticationChallenge.get(), [this, protectedThis = Ref { *this }, authenticationChallenge] (bool shouldAllowLegacyTLS) { if (shouldAllowLegacyTLS) -@@ -10353,6 +10601,12 @@ void WebPageProxy::requestGeolocationPermissionForFrame(GeolocationIdentifier ge +@@ -10469,6 +10717,12 @@ void WebPageProxy::requestGeolocationPermissionForFrame(GeolocationIdentifier ge request->deny(); }; @@ -17404,7 +17382,7 @@ index df4dd0b19148e6c1ec29ca080209bca624f9bdd1..f64fd97f7d82209da372c102cd6ca8ae // FIXME: Once iOS migrates to the new WKUIDelegate SPI, clean this up // and make it one UIClient call that calls the completionHandler with false // if there is no delegate instead of returning the completionHandler -@@ -10415,6 +10669,12 @@ void WebPageProxy::queryPermission(const ClientOrigin& clientOrigin, const Permi +@@ -10531,6 +10785,12 @@ void WebPageProxy::queryPermission(const ClientOrigin& clientOrigin, const Permi shouldChangeDeniedToPrompt = false; if (sessionID().isEphemeral()) { @@ -17417,7 +17395,7 @@ index df4dd0b19148e6c1ec29ca080209bca624f9bdd1..f64fd97f7d82209da372c102cd6ca8ae completionHandler(shouldChangeDeniedToPrompt ? PermissionState::Prompt : PermissionState::Denied); return; } -@@ -10429,6 +10689,12 @@ void WebPageProxy::queryPermission(const ClientOrigin& clientOrigin, const Permi +@@ -10545,6 +10805,12 @@ void WebPageProxy::queryPermission(const ClientOrigin& clientOrigin, const Permi return; } @@ -17431,7 +17409,7 @@ index df4dd0b19148e6c1ec29ca080209bca624f9bdd1..f64fd97f7d82209da372c102cd6ca8ae completionHandler(shouldChangeDeniedToPrompt ? PermissionState::Prompt : PermissionState::Denied); return; diff --git a/Source/WebKit/UIProcess/WebPageProxy.h b/Source/WebKit/UIProcess/WebPageProxy.h -index d02f8aff91035baa83a6465152c8d62d824a2829..074bb4572f078ee140375f60c5fca07ba620d7be 100644 +index 2e40bbb43a05c10eee30296c5a7febdcdb74c157..4deb131a7c531d9035833f22062cf9e8f0aa3a6c 100644 --- a/Source/WebKit/UIProcess/WebPageProxy.h +++ b/Source/WebKit/UIProcess/WebPageProxy.h @@ -26,6 +26,7 @@ @@ -17442,7 +17420,7 @@ index d02f8aff91035baa83a6465152c8d62d824a2829..074bb4572f078ee140375f60c5fca07b #include "MessageReceiver.h" #include "MessageSender.h" #include -@@ -35,6 +36,24 @@ +@@ -36,6 +37,24 @@ #include #include #include @@ -17467,7 +17445,7 @@ index d02f8aff91035baa83a6465152c8d62d824a2829..074bb4572f078ee140375f60c5fca07b #if USE(DICTATION_ALTERNATIVES) #include -@@ -104,6 +123,7 @@ class DestinationColorSpace; +@@ -106,6 +125,7 @@ class DestinationColorSpace; class DragData; class FloatPoint; class FloatQuad; @@ -17475,7 +17453,7 @@ index d02f8aff91035baa83a6465152c8d62d824a2829..074bb4572f078ee140375f60c5fca07b class FloatRect; class FloatSize; class FontAttributeChanges; -@@ -418,6 +438,7 @@ class WebExtensionController; +@@ -421,6 +441,7 @@ class WebExtensionController; class WebFramePolicyListenerProxy; class WebFrameProxy; class WebFullScreenManagerProxy; @@ -17483,7 +17461,7 @@ index d02f8aff91035baa83a6465152c8d62d824a2829..074bb4572f078ee140375f60c5fca07b class WebInspectorUIProxy; class WebKeyboardEvent; class WebMouseEvent; -@@ -645,6 +666,8 @@ public: +@@ -649,6 +670,8 @@ public: void setControlledByAutomation(bool); WebPageInspectorController& inspectorController() { return *m_inspectorController; } @@ -17492,7 +17470,7 @@ index d02f8aff91035baa83a6465152c8d62d824a2829..074bb4572f078ee140375f60c5fca07b #if PLATFORM(IOS_FAMILY) void showInspectorIndication(); -@@ -678,6 +701,7 @@ public: +@@ -682,6 +705,7 @@ public: bool hasSleepDisabler() const; #if ENABLE(FULLSCREEN_API) @@ -17500,7 +17478,7 @@ index d02f8aff91035baa83a6465152c8d62d824a2829..074bb4572f078ee140375f60c5fca07b WebFullScreenManagerProxy* fullScreenManager(); API::FullscreenClient& fullscreenClient() const { return *m_fullscreenClient; } -@@ -766,6 +790,11 @@ public: +@@ -770,6 +794,11 @@ public: void setPageLoadStateObserver(std::unique_ptr&&); @@ -17512,7 +17490,7 @@ index d02f8aff91035baa83a6465152c8d62d824a2829..074bb4572f078ee140375f60c5fca07b void initializeWebPage(); void setDrawingArea(std::unique_ptr&&); -@@ -792,6 +821,7 @@ public: +@@ -796,6 +825,7 @@ public: void addPlatformLoadParameters(WebProcessProxy&, LoadParameters&); RefPtr loadRequest(WebCore::ResourceRequest&&); RefPtr loadRequest(WebCore::ResourceRequest&&, WebCore::ShouldOpenExternalURLsPolicy, API::Object* userData = nullptr); @@ -17520,7 +17498,7 @@ index d02f8aff91035baa83a6465152c8d62d824a2829..074bb4572f078ee140375f60c5fca07b RefPtr loadFile(const String& fileURL, const String& resourceDirectoryURL, bool isAppInitiated = true, API::Object* userData = nullptr); RefPtr loadData(std::span, const String& MIMEType, const String& encoding, const String& baseURL, API::Object* userData = nullptr); RefPtr loadData(std::span, const String& MIMEType, const String& encoding, const String& baseURL, API::Object* userData, WebCore::ShouldOpenExternalURLsPolicy); -@@ -856,6 +886,7 @@ public: +@@ -862,6 +892,7 @@ public: PageClient& pageClient() const; Ref protectedPageClient() const; @@ -17528,7 +17506,7 @@ index d02f8aff91035baa83a6465152c8d62d824a2829..074bb4572f078ee140375f60c5fca07b void setViewNeedsDisplay(const WebCore::Region&); void requestScroll(const WebCore::FloatPoint& scrollPosition, const WebCore::IntPoint& scrollOrigin, WebCore::ScrollIsAnimated); -@@ -1376,6 +1407,7 @@ public: +@@ -1389,6 +1420,7 @@ public: #endif void pageScaleFactorDidChange(double); @@ -17536,7 +17514,7 @@ index d02f8aff91035baa83a6465152c8d62d824a2829..074bb4572f078ee140375f60c5fca07b void pluginScaleFactorDidChange(double); void pluginZoomFactorDidChange(double); -@@ -1460,14 +1492,20 @@ public: +@@ -1473,14 +1505,20 @@ public: void didStartDrag(); void dragCancelled(); void setDragCaretRect(const WebCore::IntRect&); @@ -17558,7 +17536,7 @@ index d02f8aff91035baa83a6465152c8d62d824a2829..074bb4572f078ee140375f60c5fca07b #endif void processDidBecomeUnresponsive(); -@@ -1700,6 +1738,7 @@ public: +@@ -1713,6 +1751,7 @@ public: void setViewportSizeForCSSViewportUnits(const WebCore::FloatSize&); WebCore::FloatSize viewportSizeForCSSViewportUnits() const; @@ -17566,7 +17544,7 @@ index d02f8aff91035baa83a6465152c8d62d824a2829..074bb4572f078ee140375f60c5fca07b void didReceiveAuthenticationChallengeProxy(Ref&&, NegotiatedLegacyTLS); void negotiatedLegacyTLS(); void didNegotiateModernTLS(const URL&); -@@ -1734,6 +1773,8 @@ public: +@@ -1747,6 +1786,8 @@ public: #if PLATFORM(COCOA) || PLATFORM(GTK) RefPtr takeViewSnapshot(std::optional&&); @@ -17575,7 +17553,7 @@ index d02f8aff91035baa83a6465152c8d62d824a2829..074bb4572f078ee140375f60c5fca07b #endif void wrapCryptoKey(const Vector&, CompletionHandler>&&)>&&); -@@ -2596,6 +2637,7 @@ private: +@@ -2639,6 +2680,7 @@ private: RefPtr launchProcessForReload(); void requestNotificationPermission(const String& originString, CompletionHandler&&); @@ -17583,7 +17561,7 @@ index d02f8aff91035baa83a6465152c8d62d824a2829..074bb4572f078ee140375f60c5fca07b void didChangeContentSize(const WebCore::IntSize&); void didChangeIntrinsicContentSize(const WebCore::IntSize&); -@@ -3103,8 +3145,10 @@ private: +@@ -3145,8 +3187,10 @@ private: String m_overrideContentSecurityPolicy; RefPtr m_inspector; @@ -17594,7 +17572,7 @@ index d02f8aff91035baa83a6465152c8d62d824a2829..074bb4572f078ee140375f60c5fca07b std::unique_ptr m_fullScreenManager; std::unique_ptr m_fullscreenClient; #endif -@@ -3294,6 +3338,22 @@ private: +@@ -3336,6 +3380,22 @@ private: std::optional m_currentDragOperation; bool m_currentDragIsOverFileInput { false }; unsigned m_currentDragNumberOfFilesToBeAccepted { 0 }; @@ -17617,7 +17595,7 @@ index d02f8aff91035baa83a6465152c8d62d824a2829..074bb4572f078ee140375f60c5fca07b #endif bool m_mainFrameHasHorizontalScrollbar { false }; -@@ -3465,6 +3525,10 @@ private: +@@ -3507,6 +3567,10 @@ private: RefPtr messageBody; }; Vector m_pendingInjectedBundleMessages; @@ -17629,7 +17607,7 @@ index d02f8aff91035baa83a6465152c8d62d824a2829..074bb4572f078ee140375f60c5fca07b #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 3b1f8c7613d9ebc836bb173b49187bb5cc53247e..91a86a693e99950efb90c406199dcb9769c1e401 100644 +index 3907e52e0136c24b8cdc24cb6e178b201e3e482a..03ef59a3032b12f91dcdd4a1160c7c8ef12cc0e3 100644 --- a/Source/WebKit/UIProcess/WebPageProxy.messages.in +++ b/Source/WebKit/UIProcess/WebPageProxy.messages.in @@ -29,6 +29,7 @@ messages -> WebPageProxy { @@ -17648,7 +17626,7 @@ index 3b1f8c7613d9ebc836bb173b49187bb5cc53247e..91a86a693e99950efb90c406199dcb97 PluginScaleFactorDidChange(double zoomFactor) PluginZoomFactorDidChange(double zoomFactor) -@@ -303,10 +305,14 @@ messages -> WebPageProxy { +@@ -309,10 +311,14 @@ messages -> WebPageProxy { StartDrag(struct WebCore::DragItem dragItem, WebCore::ShareableBitmapHandle dragImage) SetPromisedDataForImage(String pasteboardName, WebCore::SharedMemory::Handle imageHandle, String filename, String extension, String title, String url, String visibleURL, WebCore::SharedMemory::Handle archiveHandle, String originIdentifier) #endif @@ -17680,10 +17658,10 @@ index c909cd634d6acd72695de8372866691269ad6a04..ff5b37e3b4a17eab4bd3f8e9a2a6ef84 } diff --git a/Source/WebKit/UIProcess/WebProcessPool.cpp b/Source/WebKit/UIProcess/WebProcessPool.cpp -index 8d176f2829f0c11fbb5c2d052a3036bcae981c78..5416b923ad7f36d6676120b640ca258905176aa2 100644 +index f997e69f867ecaa6ec60a94a21ac89d51de413a4..78008ea36f1d08948c671fdfeeef08b30c7fc7fa 100644 --- a/Source/WebKit/UIProcess/WebProcessPool.cpp +++ b/Source/WebKit/UIProcess/WebProcessPool.cpp -@@ -429,10 +429,10 @@ void WebProcessPool::setAutomationClient(std::unique_ptr& +@@ -430,10 +430,10 @@ void WebProcessPool::setAutomationClient(std::unique_ptr& void WebProcessPool::setOverrideLanguages(Vector&& languages) { @@ -17696,7 +17674,7 @@ index 8d176f2829f0c11fbb5c2d052a3036bcae981c78..5416b923ad7f36d6676120b640ca2589 #if ENABLE(GPU_PROCESS) if (RefPtr gpuProcess = GPUProcessProxy::singletonIfCreated()) -@@ -440,9 +440,10 @@ void WebProcessPool::setOverrideLanguages(Vector&& languages) +@@ -441,9 +441,10 @@ void WebProcessPool::setOverrideLanguages(Vector&& languages) #endif #if USE(SOUP) for (Ref networkProcess : NetworkProcessProxy::allNetworkProcesses()) @@ -17708,7 +17686,7 @@ index 8d176f2829f0c11fbb5c2d052a3036bcae981c78..5416b923ad7f36d6676120b640ca2589 void WebProcessPool::fullKeyboardAccessModeChanged(bool fullKeyboardAccessEnabled) { -@@ -934,7 +935,7 @@ void WebProcessPool::initializeNewWebProcess(WebProcessProxy& process, WebsiteDa +@@ -936,7 +937,7 @@ void WebProcessPool::initializeNewWebProcess(WebProcessProxy& process, WebsiteDa #endif parameters.cacheModel = LegacyGlobalSettings::singleton().cacheModel(); @@ -17718,10 +17696,10 @@ index 8d176f2829f0c11fbb5c2d052a3036bcae981c78..5416b923ad7f36d6676120b640ca2589 parameters.urlSchemesRegisteredAsEmptyDocument = copyToVector(m_schemesToRegisterAsEmptyDocument); diff --git a/Source/WebKit/UIProcess/WebProcessProxy.cpp b/Source/WebKit/UIProcess/WebProcessProxy.cpp -index c10fcb327b2d8ddf2393a7acda99c84531cab4e2..ab03eb619003f7202ccefed2d030f5cd6c7251c3 100644 +index b8305771145ecb6b92e28de1bcb370dc8ccbba0d..d3b591bc81ccd07367223270c545056fbdb51f49 100644 --- a/Source/WebKit/UIProcess/WebProcessProxy.cpp +++ b/Source/WebKit/UIProcess/WebProcessProxy.cpp -@@ -184,6 +184,11 @@ Vector> WebProcessProxy::allProcesses() +@@ -188,6 +188,11 @@ Vector> WebProcessProxy::allProcesses() }); } @@ -17733,7 +17711,7 @@ index c10fcb327b2d8ddf2393a7acda99c84531cab4e2..ab03eb619003f7202ccefed2d030f5cd RefPtr WebProcessProxy::processForIdentifier(ProcessIdentifier identifier) { return allProcessMap().get(identifier); -@@ -541,6 +546,26 @@ void WebProcessProxy::getLaunchOptions(ProcessLauncher::LaunchOptions& launchOpt +@@ -555,6 +560,26 @@ void WebProcessProxy::getLaunchOptions(ProcessLauncher::LaunchOptions& launchOpt if (WebKit::isInspectorProcessPool(processPool())) launchOptions.extraInitializationData.add("inspector-process"_s, "1"_s); @@ -17761,10 +17739,10 @@ index c10fcb327b2d8ddf2393a7acda99c84531cab4e2..ab03eb619003f7202ccefed2d030f5cd if (isPrewarmed()) diff --git a/Source/WebKit/UIProcess/WebProcessProxy.h b/Source/WebKit/UIProcess/WebProcessProxy.h -index bb3e329ad02085273cbc7f00c514acfb3c8f9c35..be6d0e7e0d8023f3c6a84af9535db6b786855993 100644 +index 92ebcbaf5abecd997e8bfd3cb5cb41b02191b7c5..bec4da91324e832f1dd027ad9e064a3336b3e047 100644 --- a/Source/WebKit/UIProcess/WebProcessProxy.h +++ b/Source/WebKit/UIProcess/WebProcessProxy.h -@@ -164,6 +164,7 @@ public: +@@ -166,6 +166,7 @@ public: static void forWebPagesWithOrigin(PAL::SessionID, const WebCore::SecurityOriginData&, const Function&); static Vector> allowedFirstPartiesForCookies(); @@ -17773,7 +17751,7 @@ index bb3e329ad02085273cbc7f00c514acfb3c8f9c35..be6d0e7e0d8023f3c6a84af9535db6b7 WebConnection* webConnection() const { return m_webConnection.get(); } RefPtr protectedWebConnection() const { return m_webConnection; } diff --git a/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp b/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp -index d6ab1fddd24467a01e748a6ec94fbbd2a806454c..14486b0c5e1f80f0825ebc6cec337283732e5fd2 100644 +index 9729698017cabce150921532f0dd40e10634f0ce..9bb75eda6f3e5e0633d6ef55b3980f8ce35b2f2f 100644 --- a/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp +++ b/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp @@ -305,7 +305,8 @@ SOAuthorizationCoordinator& WebsiteDataStore::soAuthorizationCoordinator(const W @@ -17786,7 +17764,7 @@ index d6ab1fddd24467a01e748a6ec94fbbd2a806454c..14486b0c5e1f80f0825ebc6cec337283 if (sessionID.isEphemeral()) { // Reuse a previous persistent session network process for ephemeral sessions. for (auto& dataStore : allDataStores().values()) { -@@ -2266,6 +2267,12 @@ void WebsiteDataStore::originDirectoryForTesting(WebCore::ClientOrigin&& origin, +@@ -2278,6 +2279,12 @@ void WebsiteDataStore::originDirectoryForTesting(WebCore::ClientOrigin&& origin, protectedNetworkProcess()->websiteDataOriginDirectoryForTesting(m_sessionID, WTFMove(origin), type, WTFMove(completionHandler)); } @@ -17800,7 +17778,7 @@ index d6ab1fddd24467a01e748a6ec94fbbd2a806454c..14486b0c5e1f80f0825ebc6cec337283 void WebsiteDataStore::hasAppBoundSession(CompletionHandler&& completionHandler) const { diff --git a/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h b/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h -index f89889023ac34839a249145b37540cf34e9a6e9e..25418e0cba99a7d82ee2cd758f25e34bad93c053 100644 +index 165885137ca032390c6b55baacc30a8c4c423eb5..930ceeca56587636993f9a0c0e0a21d0ebab3835 100644 --- a/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h +++ b/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h @@ -97,6 +97,7 @@ class DeviceIdHashSaltStorage; @@ -17833,7 +17811,7 @@ index f89889023ac34839a249145b37540cf34e9a6e9e..25418e0cba99a7d82ee2cd758f25e34b class WebsiteDataStore : public API::ObjectImpl, public CanMakeWeakPtr { public: static Ref defaultDataStore(); -@@ -302,11 +312,13 @@ public: +@@ -305,11 +315,13 @@ public: const WebCore::CurlProxySettings& networkProxySettings() const { return m_proxySettings; } #endif @@ -17848,7 +17826,7 @@ index f89889023ac34839a249145b37540cf34e9a6e9e..25418e0cba99a7d82ee2cd758f25e34b void setNetworkProxySettings(WebCore::SoupNetworkProxySettings&&); const WebCore::SoupNetworkProxySettings& networkProxySettings() const { return m_networkProxySettings; } void setCookiePersistentStorage(const String&, SoupCookiePersistentStorageType); -@@ -391,6 +403,12 @@ public: +@@ -394,6 +406,12 @@ public: static const String& defaultBaseDataDirectory(); #endif @@ -17861,7 +17839,7 @@ index f89889023ac34839a249145b37540cf34e9a6e9e..25418e0cba99a7d82ee2cd758f25e34b void resetQuota(CompletionHandler&&); void resetStoragePersistedState(CompletionHandler&&); #if PLATFORM(IOS_FAMILY) -@@ -561,9 +579,11 @@ private: +@@ -564,9 +582,11 @@ private: WebCore::CurlProxySettings m_proxySettings; #endif @@ -17874,7 +17852,7 @@ index f89889023ac34839a249145b37540cf34e9a6e9e..25418e0cba99a7d82ee2cd758f25e34b WebCore::SoupNetworkProxySettings m_networkProxySettings; String m_cookiePersistentStoragePath; SoupCookiePersistentStorageType m_cookiePersistentStorageType { SoupCookiePersistentStorageType::SQLite }; -@@ -590,6 +610,10 @@ private: +@@ -593,6 +613,10 @@ private: RefPtr m_cookieStore; RefPtr m_networkProcess; @@ -17886,10 +17864,10 @@ index f89889023ac34839a249145b37540cf34e9a6e9e..25418e0cba99a7d82ee2cd758f25e34b std::unique_ptr m_soAuthorizationCoordinator; #endif diff --git a/Source/WebKit/UIProcess/geoclue/GeoclueGeolocationProvider.cpp b/Source/WebKit/UIProcess/geoclue/GeoclueGeolocationProvider.cpp -index 8cf57bf6b4370d7c19d0a624e852a8bec4f9aba3..cc9047c17a10863a9ea8bdda903af9367018c3cc 100644 +index d02a8ad4cd66f7f277eee16d21e9ffb0e1a961db..ef35d46977b9b6a866b665e3a01eac94a648cc97 100644 --- a/Source/WebKit/UIProcess/geoclue/GeoclueGeolocationProvider.cpp +++ b/Source/WebKit/UIProcess/geoclue/GeoclueGeolocationProvider.cpp -@@ -100,6 +100,14 @@ void GeoclueGeolocationProvider::stop() +@@ -101,6 +101,14 @@ void GeoclueGeolocationProvider::stop() } m_sourceType = LocationProviderSource::Unknown; @@ -17904,7 +17882,7 @@ index 8cf57bf6b4370d7c19d0a624e852a8bec4f9aba3..cc9047c17a10863a9ea8bdda903af936 } void GeoclueGeolocationProvider::setEnableHighAccuracy(bool enabled) -@@ -372,6 +380,8 @@ void GeoclueGeolocationProvider::createGeoclueClient(const char* clientPath) +@@ -373,6 +381,8 @@ void GeoclueGeolocationProvider::createGeoclueClient(const char* clientPath) return; } @@ -18185,10 +18163,10 @@ index 0000000000000000000000000000000000000000..394f07e1754be52b7d503d5720cba5d3 + +#endif // ENABLE(REMOTE_INSPECTOR) diff --git a/Source/WebKit/UIProcess/gtk/AcceleratedBackingStore.h b/Source/WebKit/UIProcess/gtk/AcceleratedBackingStore.h -index 71fb4cbd4338bcbda3a61019cbf4a914bf74953e..6f56e4afb345c23b4d8b91ee77f1991c72e58383 100644 +index b02c70d85fe1a93899640a8b909b0cf734d28b18..b1dc8e89eb265be81e083bf337109561e08cbf45 100644 --- a/Source/WebKit/UIProcess/gtk/AcceleratedBackingStore.h +++ b/Source/WebKit/UIProcess/gtk/AcceleratedBackingStore.h -@@ -28,6 +28,7 @@ +@@ -29,6 +29,7 @@ #include typedef struct _cairo cairo_t; @@ -18196,7 +18174,7 @@ index 71fb4cbd4338bcbda3a61019cbf4a914bf74953e..6f56e4afb345c23b4d8b91ee77f1991c #if USE(GTK4) typedef struct _GdkSnapshot GdkSnapshot; -@@ -56,6 +57,8 @@ public: +@@ -57,6 +58,8 @@ public: #else virtual bool paint(cairo_t*, const WebCore::IntRect&) = 0; #endif @@ -18206,12 +18184,12 @@ index 71fb4cbd4338bcbda3a61019cbf4a914bf74953e..6f56e4afb345c23b4d8b91ee77f1991c virtual void unrealize() { }; virtual int renderHostFileDescriptor() { return -1; } diff --git a/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreDMABuf.cpp b/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreDMABuf.cpp -index a02443e27fe05c1ad14337b676c365a7ff63aaa6..d0772d4ac275dd8298dbf24d4ecc6d3ae101f2e1 100644 +index bef1f57ad45eaef04640991d4afd34138b8d7b76..a37024640fbf6eb79838c039001ee1cf4907042e 100644 --- a/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreDMABuf.cpp +++ b/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreDMABuf.cpp -@@ -618,6 +618,32 @@ bool AcceleratedBackingStoreDMABuf::paint(cairo_t* cr, const WebCore::IntRect& c +@@ -659,4 +659,30 @@ RendererBufferFormat AcceleratedBackingStoreDMABuf::bufferFormat() const + return buffer ? buffer->format() : RendererBufferFormat { }; } - #endif +// Playwright begin +cairo_surface_t* AcceleratedBackingStoreDMABuf::surface() @@ -18240,10 +18218,8 @@ index a02443e27fe05c1ad14337b676c365a7ff63aaa6..d0772d4ac275dd8298dbf24d4ecc6d3a +// Playwright end + } // namespace WebKit - - #endif // USE(EGL) diff --git a/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreDMABuf.h b/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreDMABuf.h -index 8bfba047f41fa3f805d93771c648ca2045411ed6..f32e795be4d60cd35e3a704cd3975065146cdb06 100644 +index cd95ceb063fc776b5d68ff45262c4d84e572c509..041c562551cd467c320b8f566264885d00d1434b 100644 --- a/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreDMABuf.h +++ b/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreDMABuf.h @@ -88,6 +88,7 @@ private: @@ -18253,8 +18229,8 @@ index 8bfba047f41fa3f805d93771c648ca2045411ed6..f32e795be4d60cd35e3a704cd3975065 + cairo_surface_t* surface() override; void unrealize() override; void update(const LayerTreeContext&) override; - -@@ -233,6 +234,9 @@ private: + RendererBufferFormat bufferFormat() const override; +@@ -243,6 +244,9 @@ private: RefPtr m_pendingBuffer; RefPtr m_committedBuffer; HashMap> m_buffers; @@ -18531,10 +18507,10 @@ index d18b3e777203ef5d0f33884f909bc598d3526831..aef80b47359d7a2e4805a006dc59cd60 m_primarySelectionOwner = frame; } diff --git a/Source/WebKit/UIProcess/ios/PageClientImplIOS.mm b/Source/WebKit/UIProcess/ios/PageClientImplIOS.mm -index b5adddce23fd14eab99f55739a3e18bccbcdf5ec..e7dd2d5daafb870e524bcd8f7cf6779e97ae08ba 100644 +index 286877d14b4eb6ac45092fa1cce5ce530558f8af..85240554255d69a30269e764214a139743de521b 100644 --- a/Source/WebKit/UIProcess/ios/PageClientImplIOS.mm +++ b/Source/WebKit/UIProcess/ios/PageClientImplIOS.mm -@@ -494,6 +494,8 @@ IntRect PageClientImpl::rootViewToAccessibilityScreen(const IntRect& rect) +@@ -504,6 +504,8 @@ IntRect PageClientImpl::rootViewToAccessibilityScreen(const IntRect& rect) void PageClientImpl::doneWithKeyEvent(const NativeWebKeyboardEvent& event, bool eventWasHandled) { @@ -18753,7 +18729,7 @@ index 0000000000000000000000000000000000000000..721826c8c98fc85b68a4f45deaee69c1 + +#endif diff --git a/Source/WebKit/UIProcess/mac/PageClientImplMac.h b/Source/WebKit/UIProcess/mac/PageClientImplMac.h -index bf8da430d8a48128879eb2033ceb1a4e6aae3fd3..8c048aa6055aa2ec7e74d96f99dbd58594cb01fc 100644 +index 1647891b55a718f66ee2f4a084439edd655c623a..2099b9166e2cac062d4161d704050a0795a26c93 100644 --- a/Source/WebKit/UIProcess/mac/PageClientImplMac.h +++ b/Source/WebKit/UIProcess/mac/PageClientImplMac.h @@ -54,6 +54,8 @@ class PageClientImpl final : public PageClientImplCocoa @@ -18787,7 +18763,7 @@ index bf8da430d8a48128879eb2033ceb1a4e6aae3fd3..8c048aa6055aa2ec7e74d96f99dbd585 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 0150ec4512cb5a8d405c045f6b6464b374849d04..8ff52a96708296f4933b5f43a106396c4943adb0 100644 +index 3fe2a9487a96b31f476bb17e45374f880e80da9a..b72433e5981f298d4d1ca93274df51cd830855c0 100644 --- a/Source/WebKit/UIProcess/mac/PageClientImplMac.mm +++ b/Source/WebKit/UIProcess/mac/PageClientImplMac.mm @@ -80,6 +80,7 @@ @@ -18938,7 +18914,7 @@ index 6ab7aacaebfda818e3010bb06db72c8552ac598a..3e19cba50d73084392f62f176ad4c315 bool showAfterPostProcessingContextData(); diff --git a/Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.mm b/Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.mm -index 5edd66a5259b64217d338ac041c8dd0dafafed9b..c786a8205ddd8f9e40c1da3d2c4a67732d2d2499 100644 +index 6da27ca16f9f4d359118053049caa5033b6789d7..254e582066fbc774fc02c69dddbc1ae589efdc7a 100644 --- a/Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.mm +++ b/Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.mm @@ -481,6 +481,12 @@ void WebContextMenuProxyMac::getShareMenuItem(CompletionHandlersizeInBytes(); - auto stride = bitmap->bytesPerRow(); - GRefPtr bytes = adoptGRef(g_bytes_new_with_free_func(data, dataSize, [](gpointer userData) { -- delete static_cast(userData); -+ delete static_cast(userData); - }, bitmap.leakRef())); - - GRefPtr buffer = adoptGRef(WPE_BUFFER(wpe_buffer_shm_new(m_wpeView.get(), size.width(), size.height(), WPE_PIXEL_FORMAT_ARGB8888, bytes.get(), stride))); diff --git a/Source/WebKit/UIProcess/wpe/InspectorTargetProxyWPE.cpp b/Source/WebKit/UIProcess/wpe/InspectorTargetProxyWPE.cpp new file mode 100644 index 0000000000000000000000000000000000000000..7453194ca6f032ba86a4c67f5bf12688ab6ec1be @@ -19974,7 +19925,7 @@ index 0000000000000000000000000000000000000000..a7d88f8c745f95af21db71dcfce368ba + +} // namespace WebKit diff --git a/Source/WebKit/UIProcess/wpe/WebPageProxyWPE.cpp b/Source/WebKit/UIProcess/wpe/WebPageProxyWPE.cpp -index 057b6c7a43cbde35cfaac266dfc9fce5bc3c6a31..1605888e79ccb9416719eff486d8151a6845fe98 100644 +index b6536b74452c26a4d661bcf6039af54824f258d0..ade7c4ad1cef7bc69c452bef404eb38437c93088 100644 --- a/Source/WebKit/UIProcess/wpe/WebPageProxyWPE.cpp +++ b/Source/WebKit/UIProcess/wpe/WebPageProxyWPE.cpp @@ -29,6 +29,7 @@ @@ -19983,10 +19934,10 @@ index 057b6c7a43cbde35cfaac266dfc9fce5bc3c6a31..1605888e79ccb9416719eff486d8151a #include "PageClientImpl.h" +#include #include - #include + #if USE(ATK) diff --git a/Source/WebKit/WPEPlatform/CMakeLists.txt b/Source/WebKit/WPEPlatform/CMakeLists.txt -index 4dc0d0990d9ab5f89efa44bd404b95264c2bbfa8..0cb39461386cfe0e34bcf33cc07bcb03e3826a05 100644 +index 9319cacf6dff2c3ffdd469927c91a880978a80aa..17a829b23ae6941b184d32e8701f0fd774639449 100644 --- a/Source/WebKit/WPEPlatform/CMakeLists.txt +++ b/Source/WebKit/WPEPlatform/CMakeLists.txt @@ -82,6 +82,7 @@ set(WPEPlatform_SYSTEM_INCLUDE_DIRECTORIES @@ -19998,10 +19949,10 @@ index 4dc0d0990d9ab5f89efa44bd404b95264c2bbfa8..0cb39461386cfe0e34bcf33cc07bcb03 ${GLIB_GIO_LIBRARIES} ${GLIB_GOBJECT_LIBRARIES} diff --git a/Source/WebKit/WebKit.xcodeproj/project.pbxproj b/Source/WebKit/WebKit.xcodeproj/project.pbxproj -index 399ee15035d02439fd905dcfef995b15c367cbc0..3119ffb671cb9518ec080b3b78a08f51337a21b8 100644 +index 5638e7e7ca660b2bb7c9b3f21dde5f5dfb68dad0..d4c7e4081d7b4c80423e2a406f8471c3ffb292f7 100644 --- a/Source/WebKit/WebKit.xcodeproj/project.pbxproj +++ b/Source/WebKit/WebKit.xcodeproj/project.pbxproj -@@ -1535,6 +1535,7 @@ +@@ -1542,6 +1542,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 */; }; @@ -20009,7 +19960,7 @@ index 399ee15035d02439fd905dcfef995b15c367cbc0..3119ffb671cb9518ec080b3b78a08f51 5CAF7AA726F93AB00003F19E /* adattributiond.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5CAF7AA526F93A950003F19E /* adattributiond.cpp */; }; 5CAFDE452130846300B1F7E1 /* _WKInspector.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CAFDE422130843500B1F7E1 /* _WKInspector.h */; settings = {ATTRIBUTES = (Private, ); }; }; 5CAFDE472130846A00B1F7E1 /* _WKInspectorInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CAFDE442130843600B1F7E1 /* _WKInspectorInternal.h */; }; -@@ -2369,6 +2370,18 @@ +@@ -2381,6 +2382,18 @@ DF0C5F28252ECB8E00D921DB /* WKDownload.h in Headers */ = {isa = PBXBuildFile; fileRef = DF0C5F24252ECB8D00D921DB /* WKDownload.h */; settings = {ATTRIBUTES = (Public, ); }; }; DF0C5F2A252ECB8E00D921DB /* WKDownloadDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = DF0C5F26252ECB8E00D921DB /* WKDownloadDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; DF0C5F2B252ED44000D921DB /* WKDownloadInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = DF0C5F25252ECB8E00D921DB /* WKDownloadInternal.h */; }; @@ -20028,7 +19979,7 @@ index 399ee15035d02439fd905dcfef995b15c367cbc0..3119ffb671cb9518ec080b3b78a08f51 DF462E0F23F22F5500EFF35F /* WKHTTPCookieStorePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = DF462E0E23F22F5300EFF35F /* WKHTTPCookieStorePrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; DF462E1223F338BE00EFF35F /* WKContentWorldPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = DF462E1123F338AD00EFF35F /* WKContentWorldPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; DF7A231C291B088D00B98DF3 /* WKSnapshotConfigurationPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = DF7A231B291B088D00B98DF3 /* WKSnapshotConfigurationPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; -@@ -2453,6 +2466,8 @@ +@@ -2468,6 +2481,8 @@ E5BEF6822130C48000F31111 /* WebDataListSuggestionsDropdownIOS.h in Headers */ = {isa = PBXBuildFile; fileRef = E5BEF6802130C47F00F31111 /* WebDataListSuggestionsDropdownIOS.h */; }; E5CB07DC20E1678F0022C183 /* WKFormColorControl.h in Headers */ = {isa = PBXBuildFile; fileRef = E5CB07DA20E1678F0022C183 /* WKFormColorControl.h */; }; E5CBA76427A318E100DF7858 /* UnifiedSource120.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E5CBA75F27A3187800DF7858 /* UnifiedSource120.cpp */; }; @@ -20037,7 +19988,7 @@ index 399ee15035d02439fd905dcfef995b15c367cbc0..3119ffb671cb9518ec080b3b78a08f51 E5CBA76527A318E100DF7858 /* UnifiedSource118.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E5CBA76127A3187900DF7858 /* UnifiedSource118.cpp */; }; E5CBA76627A318E100DF7858 /* UnifiedSource116.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E5CBA76327A3187B00DF7858 /* UnifiedSource116.cpp */; }; E5CBA76727A318E100DF7858 /* UnifiedSource119.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E5CBA76027A3187900DF7858 /* UnifiedSource119.cpp */; }; -@@ -2473,6 +2488,9 @@ +@@ -2488,6 +2503,9 @@ EBA8D3B627A5E33F00CB7900 /* MockPushServiceConnection.mm in Sources */ = {isa = PBXBuildFile; fileRef = EBA8D3B027A5E33F00CB7900 /* MockPushServiceConnection.mm */; }; EBA8D3B727A5E33F00CB7900 /* PushServiceConnection.mm in Sources */ = {isa = PBXBuildFile; fileRef = EBA8D3B127A5E33F00CB7900 /* PushServiceConnection.mm */; }; ED82A7F2128C6FAF004477B3 /* WKBundlePageOverlay.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A22F0FF1289FCD90085E74F /* WKBundlePageOverlay.h */; settings = {ATTRIBUTES = (Private, ); }; }; @@ -20047,7 +19998,7 @@ index 399ee15035d02439fd905dcfef995b15c367cbc0..3119ffb671cb9518ec080b3b78a08f51 F409BA181E6E64BC009DA28E /* WKDragDestinationAction.h in Headers */ = {isa = PBXBuildFile; fileRef = F409BA171E6E64B3009DA28E /* WKDragDestinationAction.h */; settings = {ATTRIBUTES = (Private, ); }; }; F40C3B712AB401C5007A3567 /* WKDatePickerPopoverController.h in Headers */ = {isa = PBXBuildFile; fileRef = F40C3B6F2AB40167007A3567 /* WKDatePickerPopoverController.h */; }; F41795A62AC61B78007F5F12 /* CompactContextMenuPresenter.h in Headers */ = {isa = PBXBuildFile; fileRef = F41795A42AC619A2007F5F12 /* CompactContextMenuPresenter.h */; }; -@@ -6192,6 +6210,7 @@ +@@ -6218,6 +6236,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 = ""; }; @@ -20055,7 +20006,7 @@ index 399ee15035d02439fd905dcfef995b15c367cbc0..3119ffb671cb9518ec080b3b78a08f51 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 = ""; }; -@@ -7894,6 +7913,19 @@ +@@ -7930,6 +7949,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 = ""; }; @@ -20075,7 +20026,7 @@ index 399ee15035d02439fd905dcfef995b15c367cbc0..3119ffb671cb9518ec080b3b78a08f51 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 = ""; }; -@@ -8040,6 +8072,8 @@ +@@ -8082,6 +8114,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 = ""; }; @@ -20084,7 +20035,7 @@ index 399ee15035d02439fd905dcfef995b15c367cbc0..3119ffb671cb9518ec080b3b78a08f51 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 = ""; }; -@@ -8064,6 +8098,14 @@ +@@ -8106,6 +8140,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 = ""; }; @@ -20099,7 +20050,7 @@ index 399ee15035d02439fd905dcfef995b15c367cbc0..3119ffb671cb9518ec080b3b78a08f51 F409BA171E6E64B3009DA28E /* WKDragDestinationAction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKDragDestinationAction.h; sourceTree = ""; }; F40C3B6F2AB40167007A3567 /* WKDatePickerPopoverController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = WKDatePickerPopoverController.h; path = ios/forms/WKDatePickerPopoverController.h; sourceTree = ""; }; F40C3B702AB40167007A3567 /* WKDatePickerPopoverController.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = WKDatePickerPopoverController.mm; path = ios/forms/WKDatePickerPopoverController.mm; sourceTree = ""; }; -@@ -8351,6 +8393,7 @@ +@@ -8404,6 +8446,7 @@ 3766F9EE189A1241003CF19B /* JavaScriptCore.framework in Frameworks */, 3766F9F1189A1254003CF19B /* libicucore.dylib in Frameworks */, 7B9FC5BB28A5233B007570E7 /* libWebKitPlatform.a in Frameworks */, @@ -20107,7 +20058,7 @@ index 399ee15035d02439fd905dcfef995b15c367cbc0..3119ffb671cb9518ec080b3b78a08f51 3766F9EF189A1244003CF19B /* QuartzCore.framework in Frameworks */, 37694525184FC6B600CDE21F /* Security.framework in Frameworks */, 37BEC4DD1948FC6A008B4286 /* WebCore.framework in Frameworks */, -@@ -11211,6 +11254,7 @@ +@@ -11278,6 +11321,7 @@ 99788ACA1F421DCA00C08000 /* _WKAutomationSessionConfiguration.mm */, 990D28A81C6404B000986977 /* _WKAutomationSessionDelegate.h */, 990D28AF1C65203900986977 /* _WKAutomationSessionInternal.h */, @@ -20115,7 +20066,7 @@ index 399ee15035d02439fd905dcfef995b15c367cbc0..3119ffb671cb9518ec080b3b78a08f51 5C4609E222430E4C009943C2 /* _WKContentRuleListAction.h */, 5C4609E322430E4D009943C2 /* _WKContentRuleListAction.mm */, 5C4609E422430E4D009943C2 /* _WKContentRuleListActionInternal.h */, -@@ -12503,6 +12547,7 @@ +@@ -12589,6 +12633,7 @@ E34B110C27C46BC6006D2F2E /* libWebCoreTestShim.dylib */, E34B110F27C46D09006D2F2E /* libWebCoreTestSupport.dylib */, DDE992F4278D06D900F60D26 /* libWebKitAdditions.a */, @@ -20123,7 +20074,7 @@ index 399ee15035d02439fd905dcfef995b15c367cbc0..3119ffb671cb9518ec080b3b78a08f51 57A9FF15252C6AEF006A2040 /* libWTF.a */, 5750F32A2032D4E500389347 /* LocalAuthentication.framework */, 570DAAB0230273D200E8FC04 /* NearField.framework */, -@@ -13073,6 +13118,12 @@ +@@ -13159,6 +13204,12 @@ children = ( 9197940423DBC4BB00257892 /* InspectorBrowserAgent.cpp */, 9197940323DBC4BB00257892 /* InspectorBrowserAgent.h */, @@ -20136,7 +20087,7 @@ index 399ee15035d02439fd905dcfef995b15c367cbc0..3119ffb671cb9518ec080b3b78a08f51 ); path = Agents; sourceTree = ""; -@@ -13081,6 +13132,7 @@ +@@ -13167,6 +13218,7 @@ isa = PBXGroup; children = ( A5D3504D1D78F0D2005124A9 /* RemoteWebInspectorUIProxyMac.mm */, @@ -20144,7 +20095,7 @@ index 399ee15035d02439fd905dcfef995b15c367cbc0..3119ffb671cb9518ec080b3b78a08f51 1CA8B935127C774E00576C2B /* WebInspectorUIProxyMac.mm */, 99A7ACE326012919006D57FD /* WKInspectorResourceURLSchemeHandler.h */, 99A7ACE42601291A006D57FD /* WKInspectorResourceURLSchemeHandler.mm */, -@@ -13794,6 +13846,7 @@ +@@ -13884,6 +13936,7 @@ E1513C65166EABB200149FCB /* AuxiliaryProcessProxy.h */, 46A2B6061E5675A200C3DEDA /* BackgroundProcessResponsivenessTimer.cpp */, 46A2B6071E5675A200C3DEDA /* BackgroundProcessResponsivenessTimer.h */, @@ -20152,7 +20103,7 @@ index 399ee15035d02439fd905dcfef995b15c367cbc0..3119ffb671cb9518ec080b3b78a08f51 5C6D69352AC3935D0099BDAF /* BrowsingContextGroup.cpp */, 5C6D69362AC3935D0099BDAF /* BrowsingContextGroup.h */, 07297F9C1C1711EA003F0735 /* DeviceIdHashSaltStorage.cpp */, -@@ -13817,6 +13870,8 @@ +@@ -13907,6 +13960,8 @@ BC06F43912DBCCFB002D78DE /* GeolocationPermissionRequestProxy.cpp */, BC06F43812DBCCFB002D78DE /* GeolocationPermissionRequestProxy.h */, 2DD5A72A1EBF09A7009BA597 /* HiddenPageThrottlingAutoIncreasesCounter.h */, @@ -20161,7 +20112,7 @@ index 399ee15035d02439fd905dcfef995b15c367cbc0..3119ffb671cb9518ec080b3b78a08f51 5CEABA2B2333251400797797 /* LegacyGlobalSettings.cpp */, 5CEABA2A2333247700797797 /* LegacyGlobalSettings.h */, 31607F3819627002009B87DA /* LegacySessionStateCoding.h */, -@@ -13850,6 +13905,7 @@ +@@ -13940,6 +13995,7 @@ 1A0C227D2451130A00ED614D /* QuickLookThumbnailingSoftLink.mm */, 1AEE57232409F142002005D6 /* QuickLookThumbnailLoader.h */, 1AEE57242409F142002005D6 /* QuickLookThumbnailLoader.mm */, @@ -20169,7 +20120,7 @@ index 399ee15035d02439fd905dcfef995b15c367cbc0..3119ffb671cb9518ec080b3b78a08f51 5CCB54DC2A4FEA6A0005FAA8 /* RemotePageDrawingAreaProxy.cpp */, 5CCB54DB2A4FEA6A0005FAA8 /* RemotePageDrawingAreaProxy.h */, 5C907E9A294D507100B3402D /* RemotePageProxy.cpp */, -@@ -13955,6 +14011,8 @@ +@@ -14045,6 +14101,8 @@ BC7B6204129A0A6700D174A4 /* WebPageGroup.h */, 2D9EA3101A96D9EB002D2807 /* WebPageInjectedBundleClient.cpp */, 2D9EA30E1A96CBFF002D2807 /* WebPageInjectedBundleClient.h */, @@ -20178,7 +20129,7 @@ index 399ee15035d02439fd905dcfef995b15c367cbc0..3119ffb671cb9518ec080b3b78a08f51 BC111B0B112F5E4F00337BAB /* WebPageProxy.cpp */, BC032DCB10F4389F0058C15A /* WebPageProxy.h */, BCBD38FA125BAB9A00D2C29F /* WebPageProxy.messages.in */, -@@ -14117,6 +14175,7 @@ +@@ -14209,6 +14267,7 @@ BC646C1911DD399F006455B0 /* WKBackForwardListItemRef.h */, BC646C1611DD399F006455B0 /* WKBackForwardListRef.cpp */, BC646C1711DD399F006455B0 /* WKBackForwardListRef.h */, @@ -20186,7 +20137,7 @@ index 399ee15035d02439fd905dcfef995b15c367cbc0..3119ffb671cb9518ec080b3b78a08f51 BCB9E24A1120E15C00A137E0 /* WKContext.cpp */, BCB9E2491120E15C00A137E0 /* WKContext.h */, 1AE52F9319201F6B00A1FA37 /* WKContextConfigurationRef.cpp */, -@@ -14700,6 +14759,9 @@ +@@ -14792,6 +14851,9 @@ 7AFA6F682A9F57C50055322A /* DisplayLinkMac.cpp */, 31ABA79C215AF9E000C90E31 /* HighPerformanceGPUManager.h */, 31ABA79D215AF9E000C90E31 /* HighPerformanceGPUManager.mm */, @@ -20196,7 +20147,7 @@ index 399ee15035d02439fd905dcfef995b15c367cbc0..3119ffb671cb9518ec080b3b78a08f51 1AFDE65B1954E8D500C48FFA /* LegacySessionStateCoding.cpp */, 0FCB4E5818BBE3D9000FCFC9 /* PageClientImplMac.h */, 0FCB4E5918BBE3D9000FCFC9 /* PageClientImplMac.mm */, -@@ -14723,6 +14785,8 @@ +@@ -14815,6 +14877,8 @@ E568B92120A3AC6A00E3C856 /* WebDataListSuggestionsDropdownMac.mm */, E55CD20124D09F1F0042DB9C /* WebDateTimePickerMac.h */, E55CD20224D09F1F0042DB9C /* WebDateTimePickerMac.mm */, @@ -20205,7 +20156,7 @@ index 399ee15035d02439fd905dcfef995b15c367cbc0..3119ffb671cb9518ec080b3b78a08f51 BC857E8512B71EBB00EDEB2E /* WebPageProxyMac.mm */, BC5750951268F3C6006F0F12 /* WebPopupMenuProxyMac.h */, BC5750961268F3C6006F0F12 /* WebPopupMenuProxyMac.mm */, -@@ -15726,6 +15790,7 @@ +@@ -15820,6 +15884,7 @@ 99788ACB1F421DDA00C08000 /* _WKAutomationSessionConfiguration.h in Headers */, 990D28AC1C6420CF00986977 /* _WKAutomationSessionDelegate.h in Headers */, 990D28B11C65208D00986977 /* _WKAutomationSessionInternal.h in Headers */, @@ -20213,7 +20164,7 @@ index 399ee15035d02439fd905dcfef995b15c367cbc0..3119ffb671cb9518ec080b3b78a08f51 5C4609E7224317B4009943C2 /* _WKContentRuleListAction.h in Headers */, 5C4609E8224317BB009943C2 /* _WKContentRuleListActionInternal.h in Headers */, 1A5704F81BE01FF400874AF1 /* _WKContextMenuElementInfo.h in Headers */, -@@ -16029,6 +16094,7 @@ +@@ -16129,6 +16194,7 @@ E170876C16D6CA6900F99226 /* BlobRegistryProxy.h in Headers */, 4F601432155C5AA2001FBDE0 /* BlockingResponseMap.h in Headers */, 1A5705111BE410E600874AF1 /* BlockSPI.h in Headers */, @@ -20221,7 +20172,7 @@ index 399ee15035d02439fd905dcfef995b15c367cbc0..3119ffb671cb9518ec080b3b78a08f51 A7E69BCC2B2117A100D43D3F /* BufferAndBackendInfo.h in Headers */, BC3065FA1259344E00E71278 /* CacheModel.h in Headers */, 935BF7FC2936BF1A00B41326 /* CacheStorageCache.h in Headers */, -@@ -16208,7 +16274,11 @@ +@@ -16309,7 +16375,11 @@ BC14DF77120B5B7900826C0C /* InjectedBundleScriptWorld.h in Headers */, CE550E152283752200D28791 /* InsertTextOptions.h in Headers */, 9197940523DBC4BB00257892 /* InspectorBrowserAgent.h in Headers */, @@ -20233,7 +20184,7 @@ index 399ee15035d02439fd905dcfef995b15c367cbc0..3119ffb671cb9518ec080b3b78a08f51 A5E391FD2183C1F800C8FB31 /* InspectorTargetProxy.h in Headers */, C5BCE5DF1C50766A00CDE3FA /* InteractionInformationAtPosition.h in Headers */, 2D4D2C811DF60BF3002EB10C /* InteractionInformationRequest.h in Headers */, -@@ -16464,6 +16534,7 @@ +@@ -16567,6 +16637,7 @@ CDAC20C923FC2F750021DEE3 /* RemoteCDMInstanceSessionIdentifier.h in Headers */, F451C0FE2703B263002BA03B /* RemoteDisplayListRecorderProxy.h in Headers */, A78A5FE42B0EB39E005036D3 /* RemoteImageBufferSetIdentifier.h in Headers */, @@ -20241,7 +20192,7 @@ index 399ee15035d02439fd905dcfef995b15c367cbc0..3119ffb671cb9518ec080b3b78a08f51 2D47B56D1810714E003A3AEE /* RemoteLayerBackingStore.h in Headers */, 2DDF731518E95060004F5A66 /* RemoteLayerBackingStoreCollection.h in Headers */, 1AB16AEA164B3A8800290D62 /* RemoteLayerTreeContext.h in Headers */, -@@ -16519,6 +16590,7 @@ +@@ -16622,6 +16693,7 @@ E1E552C516AE065F004ED653 /* SandboxInitializationParameters.h in Headers */, E36FF00327F36FBD004BE21A /* SandboxStateVariables.h in Headers */, 7BAB111025DD02B3008FC479 /* ScopedActiveMessageReceiveQueue.h in Headers */, @@ -20249,7 +20200,7 @@ index 399ee15035d02439fd905dcfef995b15c367cbc0..3119ffb671cb9518ec080b3b78a08f51 463BB93A2B9D08D80098C5C3 /* ScriptMessageHandlerIdentifier.h in Headers */, E4D54D0421F1D72D007E3C36 /* ScrollingTreeFrameScrollingNodeRemoteIOS.h in Headers */, 0F931C1C18C5711900DBA7C3 /* ScrollingTreeOverflowScrollingNodeIOS.h in Headers */, -@@ -16868,6 +16940,8 @@ +@@ -16972,6 +17044,8 @@ 939EF87029D112EE00F23AEE /* WebPageInlines.h in Headers */, 9197940823DBC4CB00257892 /* WebPageInspectorAgentBase.h in Headers */, A513F5402154A5D700662841 /* WebPageInspectorController.h in Headers */, @@ -20258,7 +20209,7 @@ index 399ee15035d02439fd905dcfef995b15c367cbc0..3119ffb671cb9518ec080b3b78a08f51 A543E30C215C8A8D00279CD9 /* WebPageInspectorTarget.h in Headers */, A543E30D215C8A9000279CD9 /* WebPageInspectorTargetController.h in Headers */, A543E307215AD13700279CD9 /* WebPageInspectorTargetFrontendChannel.h in Headers */, -@@ -19161,6 +19235,8 @@ +@@ -19367,6 +19441,8 @@ 522F792928D50EBB0069B45B /* HidService.mm in Sources */, 2749F6442146561B008380BF /* InjectedBundleNodeHandle.cpp in Sources */, 2749F6452146561E008380BF /* InjectedBundleRangeHandle.cpp in Sources */, @@ -20267,7 +20218,7 @@ index 399ee15035d02439fd905dcfef995b15c367cbc0..3119ffb671cb9518ec080b3b78a08f51 1CC94E532AC92F190045F269 /* JSWebExtensionAPIAction.mm in Sources */, 1C2B4D4B2A819D0D00C528A1 /* JSWebExtensionAPIAlarms.mm in Sources */, 1C8ECFEA2AFC7DCB007BAA62 /* JSWebExtensionAPICommands.mm in Sources */, -@@ -19600,6 +19676,8 @@ +@@ -19807,6 +19883,8 @@ E3816B3D27E2463A005EAFC0 /* WebMockContentFilterManager.cpp in Sources */, 31BA924D148831260062EDB5 /* WebNotificationManagerMessageReceiver.cpp in Sources */, 2DF6FE52212E110900469030 /* WebPage.cpp in Sources */, @@ -20277,7 +20228,7 @@ index 399ee15035d02439fd905dcfef995b15c367cbc0..3119ffb671cb9518ec080b3b78a08f51 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 610dc831f72e672abd8ebd1ad9dfdf77ca94a727..e297bd173390d9ae50fded54d3ff9b35995a4b59 100644 +index 0ab7a191b4d1b35579666f381f87d8a3995e3501..bfd50e5c4f82ad02d9a96afb9a297450257bd2fb 100644 --- a/Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp +++ b/Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp @@ -229,6 +229,11 @@ void WebLoaderStrategy::scheduleLoad(ResourceLoader& resourceLoader, CachedResou @@ -20337,7 +20288,7 @@ index 610dc831f72e672abd8ebd1ad9dfdf77ca94a727..e297bd173390d9ae50fded54d3ff9b35 loadParameters.isMainFrameNavigation = isMainFrameNavigation; if (loadParameters.isMainFrameNavigation && document) -@@ -525,12 +527,24 @@ void WebLoaderStrategy::scheduleLoadFromNetworkProcess(ResourceLoader& resourceL +@@ -525,6 +527,17 @@ void WebLoaderStrategy::scheduleLoadFromNetworkProcess(ResourceLoader& resourceL } ASSERT((loadParameters.webPageID && loadParameters.webFrameID) || loadParameters.clientCredentialPolicy == ClientCredentialPolicy::CannotAskClientForCredentials); @@ -20355,14 +20306,7 @@ index 610dc831f72e672abd8ebd1ad9dfdf77ca94a727..e297bd173390d9ae50fded54d3ff9b35 std::optional existingNetworkResourceLoadIdentifierToResume; if (loadParameters.isMainFrameNavigation) - existingNetworkResourceLoadIdentifierToResume = std::exchange(m_existingNetworkResourceLoadIdentifierToResume, std::nullopt); - WEBLOADERSTRATEGY_RELEASE_LOG("scheduleLoad: Resource is being scheduled with the NetworkProcess (priority=%d, existingNetworkResourceLoadIdentifierToResume=%" PRIu64 ")", static_cast(resourceLoader.request().priority()), valueOrDefault(existingNetworkResourceLoadIdentifierToResume).toUInt64()); - -+ auto* frame = resourceLoader.frame(); - if (frame && !frame->settings().siteIsolationEnabled() && !WebProcess::singleton().allowsFirstPartyForCookies(loadParameters.request.firstPartyForCookies())) - RELEASE_LOG_FAULT(IPC, "scheduleLoad: Process will terminate due to failed allowsFirstPartyForCookies check"); - -@@ -543,7 +557,7 @@ void WebLoaderStrategy::scheduleLoadFromNetworkProcess(ResourceLoader& resourceL +@@ -540,7 +553,7 @@ void WebLoaderStrategy::scheduleLoadFromNetworkProcess(ResourceLoader& resourceL } auto loader = WebResourceLoader::create(resourceLoader, trackingParameters); @@ -20371,7 +20315,7 @@ index 610dc831f72e672abd8ebd1ad9dfdf77ca94a727..e297bd173390d9ae50fded54d3ff9b35 } void WebLoaderStrategy::scheduleInternallyFailedLoad(WebCore::ResourceLoader& resourceLoader) -@@ -953,7 +967,7 @@ void WebLoaderStrategy::didFinishPreconnection(WebCore::ResourceLoaderIdentifier +@@ -950,7 +963,7 @@ void WebLoaderStrategy::didFinishPreconnection(WebCore::ResourceLoaderIdentifier bool WebLoaderStrategy::isOnLine() const { @@ -20380,7 +20324,7 @@ index 610dc831f72e672abd8ebd1ad9dfdf77ca94a727..e297bd173390d9ae50fded54d3ff9b35 } void WebLoaderStrategy::addOnlineStateChangeListener(Function&& listener) -@@ -980,6 +994,11 @@ void WebLoaderStrategy::isResourceLoadFinished(CachedResource& resource, Complet +@@ -977,6 +990,11 @@ void WebLoaderStrategy::isResourceLoadFinished(CachedResource& resource, Complet void WebLoaderStrategy::setOnLineState(bool isOnLine) { @@ -20392,7 +20336,7 @@ index 610dc831f72e672abd8ebd1ad9dfdf77ca94a727..e297bd173390d9ae50fded54d3ff9b35 if (m_isOnLine == isOnLine) return; -@@ -988,6 +1007,12 @@ void WebLoaderStrategy::setOnLineState(bool isOnLine) +@@ -985,6 +1003,12 @@ void WebLoaderStrategy::setOnLineState(bool isOnLine) listener(isOnLine); } @@ -20436,10 +20380,10 @@ index 3ef86cc236b8acee2fbe5d0b9c3fd755fcc9f06f..75951fc0fc5e4ef566582c0a49482793 } // namespace WebKit diff --git a/Source/WebKit/WebProcess/Network/WebResourceLoader.cpp b/Source/WebKit/WebProcess/Network/WebResourceLoader.cpp -index e9bd84cf730f46d9e18a4f39e7050f7cc7343b5f..9998a2e3647373429ed1af6d97b5cd3e5ff59fe2 100644 +index ee6ed68f57ac7205087c7f0abe59fb56ee0fa012..9d81ae6dff0ab154a0665d6430be58affae6d820 100644 --- a/Source/WebKit/WebProcess/Network/WebResourceLoader.cpp +++ b/Source/WebKit/WebProcess/Network/WebResourceLoader.cpp -@@ -200,9 +200,6 @@ void WebResourceLoader::didReceiveResponse(ResourceResponse&& response, PrivateR +@@ -189,9 +189,6 @@ void WebResourceLoader::didReceiveResponse(ResourceResponse&& response, PrivateR } m_coreLoader->didReceiveResponse(inspectorResponse, [this, protectedThis = WTFMove(protectedThis), interceptedRequestIdentifier, policyDecisionCompletionHandler = WTFMove(policyDecisionCompletionHandler), overrideData = WTFMove(overrideData)]() mutable { @@ -20449,7 +20393,7 @@ index e9bd84cf730f46d9e18a4f39e7050f7cc7343b5f..9998a2e3647373429ed1af6d97b5cd3e if (!m_coreLoader || !m_coreLoader->identifier()) { m_interceptController.continueResponse(interceptedRequestIdentifier); return; -@@ -220,6 +217,8 @@ void WebResourceLoader::didReceiveResponse(ResourceResponse&& response, PrivateR +@@ -209,6 +206,8 @@ void WebResourceLoader::didReceiveResponse(ResourceResponse&& response, PrivateR } }); }); @@ -20472,7 +20416,7 @@ index ee9c3c4f48c328daaa015e2122235e51349bd999..5b3a4d3e742147195e0ff9e88176759d auto permissionHandlers = m_requestsPerOrigin.take(securityOrigin); diff --git a/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp b/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp -index 14a6547ae278cd186805daf5f812d1070582aaf1..83a809d9a2ff7987ce8ecb4f2aed7f27009bf4d6 100644 +index 3fa53c3e4977dcc0b83d48091490c2261ed785e0..bef114c5988a88eaca305287471c55515fc22ff6 100644 --- a/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp +++ b/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp @@ -468,6 +468,8 @@ void WebChromeClient::addMessageToConsole(MessageSource source, MessageLevel lev @@ -20512,13 +20456,13 @@ index 2eb0886f13ed035a53b8eaa60605de4dfe53fbe3..0f6a539f00a42149c0f2b2237a9cbdd8 { } diff --git a/Source/WebKit/WebProcess/WebCoreSupport/WebLocalFrameLoaderClient.cpp b/Source/WebKit/WebProcess/WebCoreSupport/WebLocalFrameLoaderClient.cpp -index 991213d7cb5c4790f563a8c09add8413a7f48b3c..275629aaff71d44397b58685b4c9ff0baf759f09 100644 +index 7b9b0348c1a3b606ad31b3fe2df3eedcb64cf233..97a6a56cc8427bd3eadfacc8fd5c4f15d5bfcdf7 100644 --- a/Source/WebKit/WebProcess/WebCoreSupport/WebLocalFrameLoaderClient.cpp +++ b/Source/WebKit/WebProcess/WebCoreSupport/WebLocalFrameLoaderClient.cpp -@@ -1588,14 +1588,6 @@ void WebLocalFrameLoaderClient::transitionToCommittedForNewPage() +@@ -1592,14 +1592,6 @@ void WebLocalFrameLoaderClient::transitionToCommittedForNewPage(InitializingIfra - if (webPage->scrollPinningBehavior() != ScrollPinningBehavior::DoNotPin) - view->setScrollPinningBehavior(webPage->scrollPinningBehavior()); + if (initializingIframe == InitializingIframe::No) + webPage->scheduleFullEditorStateUpdate(); - -#if USE(COORDINATED_GRAPHICS) - if (shouldUseFixedLayout) { @@ -20725,10 +20669,10 @@ index 6780fb04b94241977df3396ffb77585f10faf035..db015c88e2b3413c9fde348779b62c90 void DrawingAreaCoordinatedGraphics::scheduleDisplay() diff --git a/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp b/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp -index 33fe769ad9c94388e4038e5848b4c50087bf9cd3..9cff157e96cd005a43e9c64dcd83ddc35d5c1518 100644 +index d453fc33b2a366e4944b48c47bbe056d508124e7..4b58d67c55ebcde8598a1045cbc99202bf6f8feb 100644 --- a/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp +++ b/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp -@@ -194,8 +194,16 @@ void LayerTreeHost::setViewOverlayRootLayer(GraphicsLayer* viewOverlayRootLayer) +@@ -193,8 +193,16 @@ void LayerTreeHost::setViewOverlayRootLayer(GraphicsLayer* viewOverlayRootLayer) void LayerTreeHost::scrollNonCompositedContents(const IntRect& rect) { auto* frameView = m_webPage.localMainFrameView(); @@ -20745,7 +20689,7 @@ index 33fe769ad9c94388e4038e5848b4c50087bf9cd3..9cff157e96cd005a43e9c64dcd83ddc3 m_viewportController.didScroll(rect.location()); didChangeViewport(); -@@ -274,6 +282,7 @@ GraphicsLayerFactory* LayerTreeHost::graphicsLayerFactory() +@@ -273,6 +281,7 @@ GraphicsLayerFactory* LayerTreeHost::graphicsLayerFactory() void LayerTreeHost::contentsSizeChanged(const IntSize& newSize) { m_viewportController.didChangeContentsSize(newSize); @@ -20753,7 +20697,7 @@ index 33fe769ad9c94388e4038e5848b4c50087bf9cd3..9cff157e96cd005a43e9c64dcd83ddc3 } void LayerTreeHost::didChangeViewportAttributes(ViewportAttributes&& attr) -@@ -313,6 +322,10 @@ void LayerTreeHost::didChangeViewport() +@@ -312,6 +321,10 @@ void LayerTreeHost::didChangeViewport() if (!view->useFixedLayout()) view->notifyScrollPositionChanged(m_lastScrollPosition); @@ -20861,10 +20805,10 @@ index b6e5283f51db82b60091320df44ef0bbf20c33c6..0d82fbb98b93e760cecf5fa7a41327d0 WebCookieJar(); diff --git a/Source/WebKit/WebProcess/WebPage/WebPage.cpp b/Source/WebKit/WebProcess/WebPage/WebPage.cpp -index da971ba778c6e8c0397c255b60a33c76d4124056..ebfb82b8ec31cb78a9f13b6da929c20996a5049e 100644 +index 36ca16c66c74db2f7d4b2a4938e7714b5ef49ca1..821029c298841fc1408f80579d43ec7c8d54faad 100644 --- a/Source/WebKit/WebProcess/WebPage/WebPage.cpp +++ b/Source/WebKit/WebProcess/WebPage/WebPage.cpp -@@ -1024,6 +1024,9 @@ WebPage::WebPage(PageIdentifier pageID, WebPageCreationParameters&& parameters) +@@ -1034,6 +1034,9 @@ WebPage::WebPage(PageIdentifier pageID, WebPageCreationParameters&& parameters) #endif #endif // HAVE(SANDBOX_STATE_FLAGS) @@ -20874,7 +20818,7 @@ index da971ba778c6e8c0397c255b60a33c76d4124056..ebfb82b8ec31cb78a9f13b6da929c209 updateThrottleState(); #if ENABLE(ACCESSIBILITY_ANIMATION_CONTROL) updateImageAnimationEnabled(); -@@ -1991,6 +1994,22 @@ void WebPage::transitionFrameToLocal(LocalFrameCreationParameters&& creationPara +@@ -2007,6 +2010,22 @@ void WebPage::transitionFrameToLocal(LocalFrameCreationParameters&& creationPara frame->transitionToLocal(creationParameters.layerHostingContextIdentifier); } @@ -20897,7 +20841,7 @@ index da971ba778c6e8c0397c255b60a33c76d4124056..ebfb82b8ec31cb78a9f13b6da929c209 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()); -@@ -2270,17 +2289,14 @@ void WebPage::setSize(const WebCore::IntSize& viewSize) +@@ -2283,17 +2302,14 @@ void WebPage::setSize(const WebCore::IntSize& viewSize) view->resize(viewSize); m_drawingArea->setNeedsDisplay(); @@ -20915,7 +20859,7 @@ index da971ba778c6e8c0397c255b60a33c76d4124056..ebfb82b8ec31cb78a9f13b6da929c209 void WebPage::sendViewportAttributesChanged(const ViewportArguments& viewportArguments) { RefPtr localMainFrame = dynamicDowncast(m_page->mainFrame()); -@@ -2305,20 +2321,18 @@ void WebPage::sendViewportAttributesChanged(const ViewportArguments& viewportArg +@@ -2318,20 +2334,18 @@ void WebPage::sendViewportAttributesChanged(const ViewportArguments& viewportArg ViewportAttributes attr = computeViewportAttributes(viewportArguments, minimumLayoutFallbackWidth, deviceWidth, deviceHeight, 1, m_viewSize); @@ -20943,7 +20887,7 @@ index da971ba778c6e8c0397c255b60a33c76d4124056..ebfb82b8ec31cb78a9f13b6da929c209 #if USE(COORDINATED_GRAPHICS) m_drawingArea->didChangeViewportAttributes(WTFMove(attr)); -@@ -2326,7 +2340,6 @@ void WebPage::sendViewportAttributesChanged(const ViewportArguments& viewportArg +@@ -2339,7 +2353,6 @@ void WebPage::sendViewportAttributesChanged(const ViewportArguments& viewportArg send(Messages::WebPageProxy::DidChangeViewportProperties(attr)); #endif } @@ -20951,7 +20895,7 @@ index da971ba778c6e8c0397c255b60a33c76d4124056..ebfb82b8ec31cb78a9f13b6da929c209 void WebPage::scrollMainFrameIfNotAtMaxScrollPosition(const IntSize& scrollOffset) { -@@ -2619,6 +2632,7 @@ void WebPage::scaleView(double scale) +@@ -2640,6 +2653,7 @@ void WebPage::scaleView(double scale) } m_page->setViewScaleFactor(scale); @@ -20959,7 +20903,7 @@ index da971ba778c6e8c0397c255b60a33c76d4124056..ebfb82b8ec31cb78a9f13b6da929c209 scalePage(pageScale, scrollPositionAtNewScale); } -@@ -2798,18 +2812,14 @@ void WebPage::viewportPropertiesDidChange(const ViewportArguments& viewportArgum +@@ -2819,18 +2833,14 @@ void WebPage::viewportPropertiesDidChange(const ViewportArguments& viewportArgum viewportConfigurationChanged(); #endif @@ -20979,7 +20923,7 @@ index da971ba778c6e8c0397c255b60a33c76d4124056..ebfb82b8ec31cb78a9f13b6da929c209 } #if !PLATFORM(IOS_FAMILY) -@@ -3809,6 +3819,97 @@ void WebPage::touchEvent(const WebTouchEvent& touchEvent, CompletionHandlersendMessageToTargetBackend(targetId, message); } @@ -21089,7 +21033,7 @@ index da971ba778c6e8c0397c255b60a33c76d4124056..ebfb82b8ec31cb78a9f13b6da929c209 void WebPage::insertNewlineInQuotedContent() { RefPtr frame = m_page->checkedFocusController()->focusedOrMainFrame(); -@@ -4129,6 +4235,7 @@ void WebPage::didCompletePageTransition() +@@ -4150,6 +4256,7 @@ void WebPage::didCompletePageTransition() void WebPage::show() { send(Messages::WebPageProxy::ShowPage()); @@ -21097,7 +21041,7 @@ index da971ba778c6e8c0397c255b60a33c76d4124056..ebfb82b8ec31cb78a9f13b6da929c209 } void WebPage::setIsTakingSnapshotsForApplicationSuspension(bool isTakingSnapshotsForApplicationSuspension) -@@ -5224,7 +5331,7 @@ NotificationPermissionRequestManager* WebPage::notificationPermissionRequestMana +@@ -5249,7 +5356,7 @@ NotificationPermissionRequestManager* WebPage::notificationPermissionRequestMana #if ENABLE(DRAG_SUPPORT) @@ -21106,7 +21050,7 @@ index da971ba778c6e8c0397c255b60a33c76d4124056..ebfb82b8ec31cb78a9f13b6da929c209 void WebPage::performDragControllerAction(DragControllerAction action, const IntPoint& clientPosition, const IntPoint& globalPosition, OptionSet draggingSourceOperationMask, SelectionData&& selectionData, OptionSet flags, CompletionHandler, DragHandlingMethod, bool, unsigned, IntRect, IntRect, std::optional)>&& completionHandler) { if (!m_page) -@@ -7552,6 +7659,10 @@ void WebPage::didCommitLoad(WebFrame* frame) +@@ -7586,6 +7693,10 @@ void WebPage::didCommitLoad(WebFrame* frame) #endif flushDeferredDidReceiveMouseEvent(); @@ -21117,7 +21061,7 @@ index da971ba778c6e8c0397c255b60a33c76d4124056..ebfb82b8ec31cb78a9f13b6da929c209 } void WebPage::didFinishDocumentLoad(WebFrame& frame) -@@ -7792,6 +7903,9 @@ Ref WebPage::createDocumentLoader(LocalFrame& frame, const Resou +@@ -7850,6 +7961,9 @@ Ref WebPage::createDocumentLoader(LocalFrame& frame, const Resou WebsitePoliciesData::applyToDocumentLoader(WTFMove(*m_pendingWebsitePolicies), documentLoader); m_pendingWebsitePolicies = std::nullopt; } @@ -21128,18 +21072,18 @@ index da971ba778c6e8c0397c255b60a33c76d4124056..ebfb82b8ec31cb78a9f13b6da929c209 return documentLoader; diff --git a/Source/WebKit/WebProcess/WebPage/WebPage.h b/Source/WebKit/WebProcess/WebPage/WebPage.h -index d122b26429823b3dfc9a215977174a1348a19fd0..6b154a312bedd764f78d32aba8c4452e2261b5b7 100644 +index a8d232fda1bf1dc7a9b3e866b3cbfb2952b26eef..b048960902cdd660209be177b4ecbe7719c74f8d 100644 --- a/Source/WebKit/WebProcess/WebPage/WebPage.h +++ b/Source/WebKit/WebProcess/WebPage/WebPage.h -@@ -69,6 +69,7 @@ - #include +@@ -70,6 +70,7 @@ #include #include + #include +#include #include #include #include -@@ -110,6 +111,10 @@ +@@ -112,6 +113,10 @@ #include "WebPrintOperationGtk.h" #endif @@ -21150,7 +21094,7 @@ index d122b26429823b3dfc9a215977174a1348a19fd0..6b154a312bedd764f78d32aba8c4452e #if PLATFORM(GTK) || PLATFORM(WPE) #include "InputMethodState.h" #endif -@@ -1135,11 +1140,11 @@ public: +@@ -1145,11 +1150,11 @@ public: void clearSelection(); void restoreSelectionInFocusedEditableElement(); @@ -21164,7 +21108,7 @@ index d122b26429823b3dfc9a215977174a1348a19fd0..6b154a312bedd764f78d32aba8c4452e void performDragControllerAction(std::optional, DragControllerAction, WebCore::DragData&&, CompletionHandler, WebCore::DragHandlingMethod, bool, unsigned, WebCore::IntRect, WebCore::IntRect, std::optional)>&&); void performDragOperation(WebCore::DragData&&, SandboxExtension::Handle&&, Vector&&, CompletionHandler&&); #endif -@@ -1154,6 +1159,9 @@ public: +@@ -1164,6 +1169,9 @@ public: void didStartDrag(); void dragCancelled(); OptionSet allowedDragSourceActions() const { return m_allowedDragSourceActions; } @@ -21174,7 +21118,7 @@ index d122b26429823b3dfc9a215977174a1348a19fd0..6b154a312bedd764f78d32aba8c4452e #endif void beginPrinting(WebCore::FrameIdentifier, const PrintInfo&); -@@ -1377,6 +1385,7 @@ public: +@@ -1387,6 +1395,7 @@ public: void connectInspector(const String& targetId, Inspector::FrontendChannel::ConnectionType); void disconnectInspector(const String& targetId); void sendMessageToTargetBackend(const String& targetId, const String& message); @@ -21182,7 +21126,7 @@ index d122b26429823b3dfc9a215977174a1348a19fd0..6b154a312bedd764f78d32aba8c4452e void insertNewlineInQuotedContent(); -@@ -1834,6 +1843,7 @@ private: +@@ -1863,6 +1872,7 @@ private: void tryClose(CompletionHandler&&); void platformDidReceiveLoadParameters(const LoadParameters&); void transitionFrameToLocal(LocalFrameCreationParameters&&, WebCore::FrameIdentifier); @@ -21190,7 +21134,7 @@ index d122b26429823b3dfc9a215977174a1348a19fd0..6b154a312bedd764f78d32aba8c4452e void loadRequest(LoadParameters&&); [[noreturn]] void loadRequestWaitingForProcessLaunch(LoadParameters&&, URL&&, WebPageProxyIdentifier, bool); void loadData(LoadParameters&&); -@@ -1873,6 +1883,7 @@ private: +@@ -1902,6 +1912,7 @@ private: void updatePotentialTapSecurityOrigin(const WebTouchEvent&, bool wasHandled); #elif ENABLE(TOUCH_EVENTS) void touchEvent(const WebTouchEvent&, CompletionHandler, bool)>&&); @@ -21198,7 +21142,7 @@ index d122b26429823b3dfc9a215977174a1348a19fd0..6b154a312bedd764f78d32aba8c4452e #endif void cancelPointer(WebCore::PointerID, const WebCore::IntPoint&); -@@ -2017,9 +2028,7 @@ private: +@@ -2046,9 +2057,7 @@ private: void addLayerForFindOverlay(CompletionHandler&&); void removeLayerForFindOverlay(CompletionHandler&&); @@ -21208,7 +21152,7 @@ index d122b26429823b3dfc9a215977174a1348a19fd0..6b154a312bedd764f78d32aba8c4452e void didChangeSelectedIndexForActivePopupMenu(int32_t newIndex); void setTextForActivePopupMenu(int32_t index); -@@ -2603,6 +2612,7 @@ private: +@@ -2649,6 +2658,7 @@ private: UserActivity m_userActivity; uint64_t m_pendingNavigationID { 0 }; @@ -21217,10 +21161,10 @@ index d122b26429823b3dfc9a215977174a1348a19fd0..6b154a312bedd764f78d32aba8c4452e bool m_mainFrameProgressCompleted { false }; diff --git a/Source/WebKit/WebProcess/WebPage/WebPage.messages.in b/Source/WebKit/WebProcess/WebPage/WebPage.messages.in -index 3b1d4404bd28adadb01c27d39a335cf5519b83f3..7fcdf4d0ac653c249938974105707a21a899b942 100644 +index b67b771976b46970925529207e0153bc5637c533..7fc087a6d9769664347d62776d744287ec39c3a3 100644 --- a/Source/WebKit/WebProcess/WebPage/WebPage.messages.in +++ b/Source/WebKit/WebProcess/WebPage/WebPage.messages.in -@@ -149,6 +149,7 @@ GenerateSyntheticEditingCommand(enum:uint8_t WebKit::SyntheticEditingCommandType +@@ -147,6 +147,7 @@ GenerateSyntheticEditingCommand(enum:uint8_t WebKit::SyntheticEditingCommandType ConnectInspector(String targetId, Inspector::FrontendChannel::ConnectionType connectionType) DisconnectInspector(String targetId) SendMessageToTargetBackend(String targetId, String message) @@ -21228,7 +21172,7 @@ index 3b1d4404bd28adadb01c27d39a335cf5519b83f3..7fcdf4d0ac653c249938974105707a21 #if ENABLE(REMOTE_INSPECTOR) SetIndicating(bool indicating); -@@ -159,6 +160,7 @@ GenerateSyntheticEditingCommand(enum:uint8_t WebKit::SyntheticEditingCommandType +@@ -157,6 +158,7 @@ GenerateSyntheticEditingCommand(enum:uint8_t WebKit::SyntheticEditingCommandType #endif #if !ENABLE(IOS_TOUCH_EVENTS) && ENABLE(TOUCH_EVENTS) TouchEvent(WebKit::WebTouchEvent event) -> (std::optional eventType, bool handled) @@ -21236,7 +21180,7 @@ index 3b1d4404bd28adadb01c27d39a335cf5519b83f3..7fcdf4d0ac653c249938974105707a21 #endif CancelPointer(WebCore::PointerID pointerId, WebCore::IntPoint documentPoint) -@@ -190,6 +192,7 @@ GenerateSyntheticEditingCommand(enum:uint8_t WebKit::SyntheticEditingCommandType +@@ -188,6 +190,7 @@ GenerateSyntheticEditingCommand(enum:uint8_t WebKit::SyntheticEditingCommandType LoadDataInFrame(std::span data, String MIMEType, String encodingName, URL baseURL, WebCore::FrameIdentifier frameID) LoadRequest(struct WebKit::LoadParameters loadParameters) TransitionFrameToLocal(struct WebKit::LocalFrameCreationParameters creationParameters, WebCore::FrameIdentifier frameID) @@ -21244,8 +21188,8 @@ index 3b1d4404bd28adadb01c27d39a335cf5519b83f3..7fcdf4d0ac653c249938974105707a21 LoadRequestWaitingForProcessLaunch(struct WebKit::LoadParameters loadParameters, URL resourceDirectoryURL, WebKit::WebPageProxyIdentifier pageID, bool checkAssumedReadAccessToResourceURL) LoadData(struct WebKit::LoadParameters loadParameters) LoadSimulatedRequestAndResponse(struct WebKit::LoadParameters loadParameters, WebCore::ResourceResponse simulatedResponse) -@@ -357,10 +360,10 @@ GenerateSyntheticEditingCommand(enum:uint8_t WebKit::SyntheticEditingCommandType - AddMIMETypeWithCustomContentProvider(String mimeType) +@@ -353,10 +356,10 @@ GenerateSyntheticEditingCommand(enum:uint8_t WebKit::SyntheticEditingCommandType + RemoveLayerForFindOverlay() -> () # Drag and drop. -#if PLATFORM(GTK) && ENABLE(DRAG_SUPPORT) @@ -21257,7 +21201,7 @@ index 3b1d4404bd28adadb01c27d39a335cf5519b83f3..7fcdf4d0ac653c249938974105707a21 PerformDragControllerAction(std::optional frameID, enum:uint8_t WebKit::DragControllerAction action, WebCore::DragData dragData) -> (std::optional dragOperation, enum:uint8_t WebCore::DragHandlingMethod dragHandlingMethod, bool mouseIsOverFileInput, unsigned numberOfItemsToBeAccepted, WebCore::IntRect insertionRect, WebCore::IntRect editableElementRect, struct std::optional remoteUserInputEventData) PerformDragOperation(WebCore::DragData dragData, WebKit::SandboxExtensionHandle sandboxExtensionHandle, Vector sandboxExtensionsForUpload) -> (bool handled) #endif -@@ -370,6 +373,10 @@ GenerateSyntheticEditingCommand(enum:uint8_t WebKit::SyntheticEditingCommandType +@@ -366,6 +369,10 @@ GenerateSyntheticEditingCommand(enum:uint8_t WebKit::SyntheticEditingCommandType DragCancelled() #endif @@ -21269,7 +21213,7 @@ index 3b1d4404bd28adadb01c27d39a335cf5519b83f3..7fcdf4d0ac653c249938974105707a21 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 fbc94ccff0a00b9b827c5f6fd22735ee3ff3eab7..380bafd4d7decd8dbefe14dd1780a4f1bf664ba3 100644 +index 46b5327ff8777f3dce83ecf37219ad08321e8462..364d1010f0356a37d3f3b07d7fde187973028857 100644 --- a/Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm +++ b/Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm @@ -800,21 +800,37 @@ String WebPage::platformUserAgent(const URL&) const @@ -21361,7 +21305,7 @@ index f17f5d719d892309ed9c7093384945866b5117b9..1dba47bbf0dbd0362548423a74b38034 } diff --git a/Source/WebKit/WebProcess/WebProcess.cpp b/Source/WebKit/WebProcess/WebProcess.cpp -index 3ad4794de88f16fb0b90c004654782e80b1d0b1e..ef49378d65ea56b10f30ecf8d6817dffc35acb01 100644 +index 4b52cd3a81eceb55531d48d4e4a54dc7d62b4d32..e3427d76d44a9bf148f4f9dca7ed7d7b58319b53 100644 --- a/Source/WebKit/WebProcess/WebProcess.cpp +++ b/Source/WebKit/WebProcess/WebProcess.cpp @@ -88,6 +88,7 @@ @@ -21372,7 +21316,7 @@ index 3ad4794de88f16fb0b90c004654782e80b1d0b1e..ef49378d65ea56b10f30ecf8d6817dff #include #include #include -@@ -373,6 +374,8 @@ void WebProcess::initializeProcess(const AuxiliaryProcessInitializationParameter +@@ -365,6 +366,8 @@ void WebProcess::initializeProcess(const AuxiliaryProcessInitializationParameter platformInitializeProcess(parameters); updateCPULimit(); @@ -21397,7 +21341,7 @@ index 8987c3964a9308f2454759de7f8972215a3ae416..bcac0afeb94ed8123d1f9fb0b932c849 SetProcessDPIAware(); return true; diff --git a/Source/WebKitLegacy/mac/WebView/WebHTMLView.mm b/Source/WebKitLegacy/mac/WebView/WebHTMLView.mm -index 79b45534f7468cddc04a9021623799bf1052a7f9..d8efaabf72c725ca3a7247bc8475d90a9cecdd50 100644 +index 1ef662de86f8b92a7a5c6414df2dac6dbb3882f0..793785e12f96fe52193e8c27ec8b015521e06390 100644 --- a/Source/WebKitLegacy/mac/WebView/WebHTMLView.mm +++ b/Source/WebKitLegacy/mac/WebView/WebHTMLView.mm @@ -4214,7 +4214,7 @@ ALLOW_DEPRECATED_DECLARATIONS_END @@ -21410,10 +21354,10 @@ index 79b45534f7468cddc04a9021623799bf1052a7f9..d8efaabf72c725ca3a7247bc8475d90a - (void)touch:(WebEvent *)event { diff --git a/Source/WebKitLegacy/mac/WebView/WebView.mm b/Source/WebKitLegacy/mac/WebView/WebView.mm -index 1e9502677b2434c8f0e7c8ae395d4c1e148cf9d7..0da8e737d05031413b12803eb62041a7f571d26b 100644 +index c892fdcdb2834ab3d93a4a0575b712c848b662c0..0e817f6ac6cf4e0bc04e1acd178ef976105d9b16 100644 --- a/Source/WebKitLegacy/mac/WebView/WebView.mm +++ b/Source/WebKitLegacy/mac/WebView/WebView.mm -@@ -3974,7 +3974,7 @@ + (void)_doNotStartObservingNetworkReachability +@@ -3979,7 +3979,7 @@ + (void)_doNotStartObservingNetworkReachability } #endif // PLATFORM(IOS_FAMILY) @@ -21422,7 +21366,7 @@ index 1e9502677b2434c8f0e7c8ae395d4c1e148cf9d7..0da8e737d05031413b12803eb62041a7 - (NSArray *)_touchEventRegions { -@@ -4016,7 +4016,7 @@ - (NSArray *)_touchEventRegions +@@ -4021,7 +4021,7 @@ - (NSArray *)_touchEventRegions }).autorelease(); } @@ -21463,7 +21407,7 @@ index 0000000000000000000000000000000000000000..dd6a53e2d57318489b7e49dd7373706d + LIBVPX_LIBRARIES +) diff --git a/Source/cmake/OptionsGTK.cmake b/Source/cmake/OptionsGTK.cmake -index 6bf415090c55f84b887319aff5316e3538e78ca8..2aaba526ca8ccb39b7457821e7332cc775f8b715 100644 +index 31085c5a7f8d4e1680887ff9f20de2d421256a62..d1374f5f68f26d166d9a6e4f1ae9a23dd9151e13 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 @@ -21489,9 +21433,9 @@ index 6bf415090c55f84b887319aff5316e3538e78ca8..2aaba526ca8ccb39b7457821e7332cc7 +# Playwright end + include(GStreamerDefinitions) + include(FindGLibCompileResources) - SET_AND_EXPOSE_TO_BUILD(USE_GCRYPT TRUE) -@@ -87,14 +96,14 @@ endif () +@@ -88,14 +97,14 @@ endif () # without approval from a GTK reviewer. There must be strong reason to support # changing the value of the option. WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_DRAG_SUPPORT PUBLIC ON) @@ -21509,16 +21453,16 @@ index 6bf415090c55f84b887319aff5316e3538e78ca8..2aaba526ca8ccb39b7457821e7332cc7 WEBKIT_OPTION_DEFAULT_PORT_VALUE(USE_LCMS PUBLIC ON) WEBKIT_OPTION_DEFAULT_PORT_VALUE(USE_JPEGXL PUBLIC ON) WEBKIT_OPTION_DEFAULT_PORT_VALUE(USE_WOFF2 PUBLIC ON) -@@ -120,7 +129,7 @@ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_INPUT_TYPE_MONTH PRIVATE ON) +@@ -119,7 +128,7 @@ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_INPUT_TYPE_DATETIMELOCAL PRIVATE ON) + WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_INPUT_TYPE_MONTH PRIVATE ON) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_INPUT_TYPE_TIME PRIVATE ON) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_INPUT_TYPE_WEEK PRIVATE ON) - WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_LAYER_BASED_SVG_ENGINE PRIVATE ON) -WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MEDIA_RECORDER PRIVATE ON) +WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MEDIA_RECORDER PRIVATE OFF) - WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MEDIA_SESSION PRIVATE ${ENABLE_EXPERIMENTAL_FEATURES}) + WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MEDIA_SESSION PRIVATE ON) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MEDIA_SESSION_PLAYLIST PRIVATE OFF) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MEDIA_STREAM PRIVATE ON) -@@ -132,7 +141,7 @@ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_NETWORK_CACHE_SPECULATIVE_REVALIDATION P +@@ -131,7 +140,7 @@ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_NETWORK_CACHE_SPECULATIVE_REVALIDATION P WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_NETWORK_CACHE_STALE_WHILE_REVALIDATE PRIVATE ON) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_OFFSCREEN_CANVAS PRIVATE ${ENABLE_EXPERIMENTAL_FEATURES}) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_OFFSCREEN_CANVAS_IN_WORKERS PRIVATE ${ENABLE_EXPERIMENTAL_FEATURES}) @@ -21527,7 +21471,7 @@ index 6bf415090c55f84b887319aff5316e3538e78ca8..2aaba526ca8ccb39b7457821e7332cc7 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_PERIODIC_MEMORY_MONITOR PRIVATE ON) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_POINTER_LOCK PRIVATE ON) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_SHAREABLE_RESOURCE PRIVATE ON) -@@ -142,6 +151,14 @@ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_WEB_API_STATISTICS PRIVATE ON) +@@ -141,6 +150,14 @@ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_WEB_API_STATISTICS PRIVATE ON) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_WEB_CODECS PRIVATE ON) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_WEB_RTC PRIVATE ${ENABLE_EXPERIMENTAL_FEATURES}) @@ -21543,7 +21487,7 @@ index 6bf415090c55f84b887319aff5316e3538e78ca8..2aaba526ca8ccb39b7457821e7332cc7 # Finalize the value for all options. Do not attempt to use an option before diff --git a/Source/cmake/OptionsWPE.cmake b/Source/cmake/OptionsWPE.cmake -index 7ca4dbcaa45ad799539f96a19377ca2b7023a921..770d7fbc68bec3112c530f47edabb48492d7ca37 100644 +index e0c8dc92717c31173b6848b9f04856276125fb9d..24bbbae0654cded5197e6a4ce13246f71f5d5590 100644 --- a/Source/cmake/OptionsWPE.cmake +++ b/Source/cmake/OptionsWPE.cmake @@ -9,6 +9,8 @@ if (${CMAKE_VERSION} VERSION_LESS "3.20" AND NOT ${CMAKE_GENERATOR} STREQUAL "Ni @@ -21554,8 +21498,8 @@ index 7ca4dbcaa45ad799539f96a19377ca2b7023a921..770d7fbc68bec3112c530f47edabb484 + set(USER_AGENT_BRANDING "" CACHE STRING "Branding to add to user agent string") - find_package(ATK 2.16.0 REQUIRED) -@@ -29,6 +31,9 @@ find_package(WebP REQUIRED COMPONENTS demux) + find_package(HarfBuzz 1.4.2 REQUIRED COMPONENTS ICU) +@@ -27,6 +29,9 @@ find_package(WebP REQUIRED COMPONENTS demux) find_package(WPE REQUIRED) find_package(ZLIB REQUIRED) @@ -21565,7 +21509,7 @@ index 7ca4dbcaa45ad799539f96a19377ca2b7023a921..770d7fbc68bec3112c530f47edabb484 WEBKIT_OPTION_BEGIN() SET_AND_EXPOSE_TO_BUILD(ENABLE_DEVELOPER_MODE ${DEVELOPER_MODE}) -@@ -39,11 +44,11 @@ include(GStreamerDefinitions) +@@ -38,11 +43,11 @@ include(FindGLibCompileResources) # without approval from a WPE reviewer. There must be strong reason to support # changing the value of the option. WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_ENCRYPTED_MEDIA PUBLIC ${ENABLE_EXPERIMENTAL_FEATURES}) @@ -21579,16 +21523,16 @@ index 7ca4dbcaa45ad799539f96a19377ca2b7023a921..770d7fbc68bec3112c530f47edabb484 WEBKIT_OPTION_DEFAULT_PORT_VALUE(USE_LCMS PUBLIC ON) WEBKIT_OPTION_DEFAULT_PORT_VALUE(USE_JPEGXL PUBLIC ON) WEBKIT_OPTION_DEFAULT_PORT_VALUE(USE_WOFF2 PUBLIC ON) -@@ -61,7 +66,7 @@ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_FTPDIR PRIVATE OFF) +@@ -58,7 +63,7 @@ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_DARK_MODE_CSS PRIVATE ON) + WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_FTPDIR PRIVATE OFF) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_GPU_PROCESS PRIVATE OFF) - WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_LAYER_BASED_SVG_ENGINE PRIVATE ON) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MEDIA_CONTROLS_CONTEXT_MENUS PRIVATE ON) -WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MEDIA_RECORDER PRIVATE ON) +WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MEDIA_RECORDER PRIVATE OFF) - WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MEDIA_SESSION PRIVATE ${ENABLE_EXPERIMENTAL_FEATURES}) + WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MEDIA_SESSION PRIVATE ON) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MEDIA_SESSION_PLAYLIST PRIVATE OFF) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MEDIA_STREAM PRIVATE ON) -@@ -75,7 +80,7 @@ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_OFFSCREEN_CANVAS_IN_WORKERS PRIVATE ${EN +@@ -72,7 +77,7 @@ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_OFFSCREEN_CANVAS_IN_WORKERS PRIVATE ${EN WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_PERIODIC_MEMORY_MONITOR PRIVATE ON) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_SHAREABLE_RESOURCE PRIVATE ON) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_SPEECH_SYNTHESIS PRIVATE ${ENABLE_EXPERIMENTAL_FEATURES}) @@ -21597,7 +21541,7 @@ index 7ca4dbcaa45ad799539f96a19377ca2b7023a921..770d7fbc68bec3112c530f47edabb484 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_TOUCH_EVENTS PRIVATE ON) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_VARIATION_FONTS PRIVATE ON) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_WEB_CODECS PRIVATE ON) -@@ -86,6 +91,23 @@ if (WPE_VERSION VERSION_GREATER_EQUAL 1.13.90) +@@ -83,6 +88,23 @@ if (WPE_VERSION VERSION_GREATER_EQUAL 1.13.90) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_GAMEPAD PUBLIC ON) endif () @@ -21621,17 +21565,17 @@ index 7ca4dbcaa45ad799539f96a19377ca2b7023a921..770d7fbc68bec3112c530f47edabb484 # Public options specific to the WPE port. Do not add any options here unless # there is a strong reason we should support changing the value of the option, # and the option is not relevant to other WebKit ports. -@@ -95,7 +117,7 @@ WEBKIT_OPTION_DEFINE(ENABLE_JOURNALD_LOG "Whether to enable journald logging" PU +@@ -92,7 +114,7 @@ WEBKIT_OPTION_DEFINE(ENABLE_JOURNALD_LOG "Whether to enable journald logging" PU WEBKIT_OPTION_DEFINE(ENABLE_WPE_PLATFORM_DRM "Whether to enable support for DRM platform" PUBLIC ON) WEBKIT_OPTION_DEFINE(ENABLE_WPE_PLATFORM_HEADLESS "Whether to enable support for headless platform" PUBLIC ON) WEBKIT_OPTION_DEFINE(ENABLE_WPE_PLATFORM_WAYLAND "Whether to enable support for Wayland platform" PUBLIC ON) -WEBKIT_OPTION_DEFINE(ENABLE_WPE_QT_API "Whether to enable support for the Qt5/QML plugin" PUBLIC ${ENABLE_DEVELOPER_MODE}) +WEBKIT_OPTION_DEFINE(ENABLE_WPE_QT_API "Whether to enable support for the Qt5/QML plugin" PUBLIC OFF) WEBKIT_OPTION_DEFINE(ENABLE_WPE_1_1_API "Whether to build WPE 1.1 instead of WPE 2.0" PUBLIC OFF) + WEBKIT_OPTION_DEFINE(USE_ATK "Whether to enable usage of ATK." PUBLIC ON) WEBKIT_OPTION_DEFINE(USE_GBM "Whether to enable usage of GBM." PUBLIC ON) - WEBKIT_OPTION_DEFINE(USE_LIBBACKTRACE "Whether to enable usage of libbacktrace." PUBLIC ON) diff --git a/Source/cmake/OptionsWin.cmake b/Source/cmake/OptionsWin.cmake -index e60d013125f60b32b7b9bca1847eb118cfb72406..5fca8f7c0a78e36144e28e1b1388dc1380f1bcf9 100644 +index 2ed9985c35980ba0fca09c2fc9ea5ab300b19b00..a5f773d071cb67025b16614a998bd09355061572 100644 --- a/Source/cmake/OptionsWin.cmake +++ b/Source/cmake/OptionsWin.cmake @@ -86,6 +86,29 @@ find_package(ZLIB 1.2.11 REQUIRED) @@ -21664,7 +21608,7 @@ index e60d013125f60b32b7b9bca1847eb118cfb72406..5fca8f7c0a78e36144e28e1b1388dc13 WEBKIT_OPTION_BEGIN() # FIXME: Most of these options should not be public. -@@ -163,6 +186,14 @@ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_FTPDIR PRIVATE OFF) +@@ -159,6 +182,14 @@ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_FTPDIR PRIVATE OFF) SET_AND_EXPOSE_TO_BUILD(ENABLE_WEBDRIVER_KEYBOARD_INTERACTIONS ON) SET_AND_EXPOSE_TO_BUILD(ENABLE_WEBDRIVER_MOUSE_INTERACTIONS ON) @@ -22008,10 +21952,10 @@ index 451e0333dd4e8f5d6313fa80c5027ef2661a61ac..7398af4772ed9a479b1632e38af2d4ee return exitAfterLoad && webProcessCrashed ? 1 : 0; diff --git a/Tools/MiniBrowser/wpe/main.cpp b/Tools/MiniBrowser/wpe/main.cpp -index 630d96d01ca6175ef114ec07fbf9396af0a85b26..75d31fcf0507fcc1fc27696c956a3f8ae9e35f4a 100644 +index 3c2476471ef67299da6312d0f995fc0738aa96c9..b13ab78bfe62c8c2cdd052e24255a780bbc2afa3 100644 --- a/Tools/MiniBrowser/wpe/main.cpp +++ b/Tools/MiniBrowser/wpe/main.cpp -@@ -42,6 +42,9 @@ static gboolean headlessMode; +@@ -45,6 +45,9 @@ static gboolean headlessMode; static gboolean privateMode; static gboolean automationMode; static gboolean ignoreTLSErrors; @@ -22021,7 +21965,7 @@ index 630d96d01ca6175ef114ec07fbf9396af0a85b26..75d31fcf0507fcc1fc27696c956a3f8a static const char* contentFilter; static const char* cookiesFile; static const char* cookiesPolicy; -@@ -75,6 +78,9 @@ static const GOptionEntry commandLineOptions[] = +@@ -78,6 +81,9 @@ static const GOptionEntry commandLineOptions[] = { "use-wpe-platform-api", 0, 0, G_OPTION_ARG_NONE, &useWPEPlatformAPI, "Use the WPE platform API", nullptr }, #endif { "version", 'v', 0, G_OPTION_ARG_NONE, &printVersion, "Print the WPE version", nullptr }, @@ -22031,7 +21975,7 @@ index 630d96d01ca6175ef114ec07fbf9396af0a85b26..75d31fcf0507fcc1fc27696c956a3f8a { G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &uriArguments, nullptr, "[URL]" }, { nullptr, 0, 0, G_OPTION_ARG_NONE, nullptr, nullptr, nullptr } }; -@@ -210,15 +216,38 @@ static void filterSavedCallback(WebKitUserContentFilterStore *store, GAsyncResul +@@ -220,15 +226,38 @@ static void filterSavedCallback(WebKitUserContentFilterStore *store, GAsyncResul g_main_loop_quit(data->mainLoop); } @@ -22072,7 +22016,7 @@ index 630d96d01ca6175ef114ec07fbf9396af0a85b26..75d31fcf0507fcc1fc27696c956a3f8a { auto backend = createViewBackend(1280, 720); -@@ -234,18 +263,37 @@ static WebKitWebView* createWebView(WebKitWebView* webView, WebKitNavigationActi +@@ -244,18 +273,37 @@ static WebKitWebView* createWebView(WebKitWebView* webView, WebKitNavigationActi }, backend.release()); } @@ -22116,7 +22060,7 @@ index 630d96d01ca6175ef114ec07fbf9396af0a85b26..75d31fcf0507fcc1fc27696c956a3f8a return newWebView; } -@@ -259,13 +307,89 @@ static WebKitFeature* findFeature(WebKitFeatureList* featureList, const char* id +@@ -269,13 +317,89 @@ static WebKitFeature* findFeature(WebKitFeatureList* featureList, const char* id return nullptr; } @@ -22207,7 +22151,7 @@ index 630d96d01ca6175ef114ec07fbf9396af0a85b26..75d31fcf0507fcc1fc27696c956a3f8a webkit_network_session_set_itp_enabled(networkSession, enableITP); if (proxy) { -@@ -292,10 +416,18 @@ static void activate(GApplication* application, WPEToolingBackends::ViewBackend* +@@ -302,10 +426,18 @@ static void activate(GApplication* application, WPEToolingBackends::ViewBackend* webkit_cookie_manager_set_persistent_storage(cookieManager, cookiesFile, storageType); } } @@ -22228,7 +22172,7 @@ index 630d96d01ca6175ef114ec07fbf9396af0a85b26..75d31fcf0507fcc1fc27696c956a3f8a webkit_website_data_manager_set_itp_enabled(manager, enableITP); if (proxy) { -@@ -326,6 +458,7 @@ static void activate(GApplication* application, WPEToolingBackends::ViewBackend* +@@ -336,6 +468,7 @@ static void activate(GApplication* application, WPEToolingBackends::ViewBackend* } #endif @@ -22236,7 +22180,7 @@ index 630d96d01ca6175ef114ec07fbf9396af0a85b26..75d31fcf0507fcc1fc27696c956a3f8a WebKitUserContentManager* userContentManager = nullptr; if (contentFilter) { GFile* contentFilterFile = g_file_new_for_commandline_arg(contentFilter); -@@ -398,6 +531,15 @@ static void activate(GApplication* application, WPEToolingBackends::ViewBackend* +@@ -408,6 +541,15 @@ static void activate(GApplication* application, WPEToolingBackends::ViewBackend* "autoplay", WEBKIT_AUTOPLAY_ALLOW, nullptr); @@ -22252,7 +22196,7 @@ index 630d96d01ca6175ef114ec07fbf9396af0a85b26..75d31fcf0507fcc1fc27696c956a3f8a auto* webView = WEBKIT_WEB_VIEW(g_object_new(WEBKIT_TYPE_WEB_VIEW, "backend", viewBackend, "web-context", webContext, -@@ -424,8 +566,6 @@ static void activate(GApplication* application, WPEToolingBackends::ViewBackend* +@@ -436,8 +578,6 @@ static void activate(GApplication* application, WPEToolingBackends::ViewBackend* g_signal_connect(wpeView, "event", G_CALLBACK(wpeViewEventCallback), webView); #endif @@ -22261,7 +22205,7 @@ index 630d96d01ca6175ef114ec07fbf9396af0a85b26..75d31fcf0507fcc1fc27696c956a3f8a webkit_web_context_set_automation_allowed(webContext, automationMode); g_signal_connect(webContext, "automation-started", G_CALLBACK(automationStartedCallback), webView); g_signal_connect(webView, "permission-request", G_CALLBACK(decidePermissionRequest), nullptr); -@@ -438,16 +578,9 @@ static void activate(GApplication* application, WPEToolingBackends::ViewBackend* +@@ -450,16 +590,9 @@ static void activate(GApplication* application, WPEToolingBackends::ViewBackend* webkit_web_view_set_background_color(webView, &color); if (uriArguments) { @@ -22281,7 +22225,7 @@ index 630d96d01ca6175ef114ec07fbf9396af0a85b26..75d31fcf0507fcc1fc27696c956a3f8a webkit_web_view_load_uri(webView, "about:blank"); else webkit_web_view_load_uri(webView, "https://wpewebkit.org"); -@@ -521,8 +654,14 @@ int main(int argc, char *argv[]) +@@ -533,8 +666,14 @@ int main(int argc, char *argv[]) } } @@ -22309,7 +22253,7 @@ index 1067b31bc989748dfcc5502209d36d001b9b239e..7629263fb8bc93dca6dfc01c75eed8d2 + add_subdirectory(Playwright/win) +endif () diff --git a/Tools/Scripts/build-webkit b/Tools/Scripts/build-webkit -index 9d2c490729c07369eac8372885c7ff98bb3e5707..21cb415200240028360eb7492a64522c5913aec6 100755 +index 39c351abbdd7b1b7f7016c5fd071ec2ae59b4a42..dc804e1d5284b15da6fa0679932d6cca8ece499a 100755 --- a/Tools/Scripts/build-webkit +++ b/Tools/Scripts/build-webkit @@ -273,7 +273,7 @@ if (isAppleCocoaWebKit()) { @@ -22337,10 +22281,10 @@ index 9e53f459e444b9c10fc5248f0e8059df6c1e0041..c17c875a7dd3ca05c4489578ab32378b "${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 4278aa9844a3a6bade0e3ea0ba5fc19792992afa..e27a870a70bbde031240f33ff6f29e01d9fcff1c 100644 +index 244cfc247fa50bf073ba523913543cab0c6f1b3b..d1cd4657f513d1be167f8d1176dc1217f57acbbd 100644 --- a/Tools/WebKitTestRunner/TestController.cpp +++ b/Tools/WebKitTestRunner/TestController.cpp -@@ -963,6 +963,7 @@ void TestController::createWebViewWithOptions(const TestOptions& options) +@@ -964,6 +964,7 @@ void TestController::createWebViewWithOptions(const TestOptions& options) 0, // requestStorageAccessConfirm shouldAllowDeviceOrientationAndMotionAccess, runWebAuthenticationPanel, @@ -22450,7 +22394,7 @@ index 1e2a9202f88c63afa6525d97d0f945438f5f2032..e6cdee08aff723eb5c6b16491051ca39 # These are dependencies necessary for running tests. cups-daemon diff --git a/Tools/gtk/jhbuild.modules b/Tools/gtk/jhbuild.modules -index 0bd2f996ba2641cbe4f4864b6fd8ce59204bae0a..b211f1bad06fab907de2bb592de843683c8af0fb 100644 +index 5453eb855928744d58e459f8a986535825dc29a0..b7d9568aef262d8e2825569b021ea0f5d0923ba0 100644 --- a/Tools/gtk/jhbuild.modules +++ b/Tools/gtk/jhbuild.modules @@ -252,10 +252,10 @@ @@ -22468,19 +22412,18 @@ index 0bd2f996ba2641cbe4f4864b6fd8ce59204bae0a..b211f1bad06fab907de2bb592de84368 diff --git a/Tools/jhbuild/jhbuild-minimal.modules b/Tools/jhbuild/jhbuild-minimal.modules -index 6c9e52c5c872d81e6e50ee44af9a3abae7750029..34b30f388341865a94f3fe26bf7feea9a17e2678 100644 +index fe58a444522de94d8f2a57c538a8e7bca93e5c74..78fd69a2a98cb0a826cba13f95c3f419b4376045 100644 --- a/Tools/jhbuild/jhbuild-minimal.modules +++ b/Tools/jhbuild/jhbuild-minimal.modules -@@ -24,7 +24,7 @@ - - - -- -+ +@@ -32,7 +32,6 @@ + - -@@ -120,10 +120,10 @@ +- + + + +@@ -132,10 +131,10 @@ @@ -22494,7 +22437,7 @@ index 6c9e52c5c872d81e6e50ee44af9a3abae7750029..34b30f388341865a94f3fe26bf7feea9 -@@ -219,6 +219,16 @@ +@@ -231,6 +230,16 @@ @@ -22512,10 +22455,10 @@ index 6c9e52c5c872d81e6e50ee44af9a3abae7750029..34b30f388341865a94f3fe26bf7feea9 + + - -@@ -101,10 +102,10 @@ +@@ -102,10 +103,10 @@ @@ -22599,7 +22542,7 @@ index 191d23b445c58ddbf0fb0eb416deea938f28e2aa..9f4e4897676b06e28925b0003bd1c6d2 -@@ -323,6 +324,16 @@ +@@ -334,6 +335,16 @@ hash="sha256:c625a83b4838befc8cafcd54e3619946515d9e44d63d61c4adf7f5513ddfbebf"/> diff --git a/docs/src/api-testing-csharp.md b/docs/src/api-testing-csharp.md index f68a733322..f68ff8a8f7 100644 --- a/docs/src/api-testing-csharp.md +++ b/docs/src/api-testing-csharp.md @@ -16,7 +16,7 @@ A few examples where it may come in handy: All of that could be achieved via [APIRequestContext] methods. -The following examples rely on the [`Microsoft.Playwright.NUnit`](./test-runners.md) package which creates a Playwright and Page instance for each test. +The following examples rely on the [`Microsoft.Playwright.MSTest`](./test-runners.md) package which creates a Playwright and Page instance for each test. @@ -34,22 +34,19 @@ The following example demonstrates how to use Playwright to test issues creation GitHub API requires authorization, so we'll configure the token once for all tests. While at it, we'll also set the `baseURL` to simplify the tests. ```csharp -using System; -using System.Collections.Generic; -using System.Threading.Tasks; -using Microsoft.Playwright.NUnit; using Microsoft.Playwright; -using NUnit.Framework; +using Microsoft.Playwright.MSTest; namespace PlaywrightTests; +[TestClass] public class TestGitHubAPI : PlaywrightTest { - static string API_TOKEN = Environment.GetEnvironmentVariable("GITHUB_API_TOKEN"); + static string? API_TOKEN = Environment.GetEnvironmentVariable("GITHUB_API_TOKEN"); - private IAPIRequestContext Request = null; + private IAPIRequestContext Request = null!; - [SetUp] + [TestInitialize] public async Task SetUpAPITesting() { await CreateAPIRequestContext(); @@ -71,7 +68,7 @@ public class TestGitHubAPI : PlaywrightTest }); } - [TearDown] + [TestCleanup] public async Task TearDownAPITesting() { await Request.DisposeAsync(); @@ -83,36 +80,34 @@ public class TestGitHubAPI : PlaywrightTest Now that we initialized request object we can add a few tests that will create new issues in the repository. ```csharp -using System; -using System.Collections.Generic; -using System.Threading.Tasks; using System.Text.Json; -using Microsoft.Playwright.NUnit; using Microsoft.Playwright; -using NUnit.Framework; +using Microsoft.Playwright.MSTest; namespace PlaywrightTests; -[TestFixture] +[TestClass] public class TestGitHubAPI : PlaywrightTest { - static string REPO = "test-repo-2"; + static string REPO = "test"; static string USER = Environment.GetEnvironmentVariable("GITHUB_USER"); - static string API_TOKEN = Environment.GetEnvironmentVariable("GITHUB_API_TOKEN"); + static string? API_TOKEN = Environment.GetEnvironmentVariable("GITHUB_API_TOKEN"); - private IAPIRequestContext Request = null; + private IAPIRequestContext Request = null!; - [Test] + [TestMethod] public async Task ShouldCreateBugReport() { - var data = new Dictionary(); - data.Add("title", "[Bug] report 1"); - data.Add("body", "Bug description"); + var data = new Dictionary + { + { "title", "[Bug] report 1" }, + { "body", "Bug description" } + }; var newIssue = await Request.PostAsync("/repos/" + USER + "/" + REPO + "/issues", new() { DataObject = data }); - Assert.True(newIssue.Ok); + await Expect(newIssue).ToBeOKAsync(); var issues = await Request.GetAsync("/repos/" + USER + "/" + REPO + "/issues"); - Assert.True(issues.Ok); + await Expect(newIssue).ToBeOKAsync(); var issuesJsonResponse = await issues.JsonAsync(); JsonElement? issue = null; foreach (JsonElement issueObj in issuesJsonResponse?.EnumerateArray()) @@ -125,23 +120,24 @@ public class TestGitHubAPI : PlaywrightTest } } } - Assert.NotNull(issue); + Assert.IsNotNull(issue); Assert.AreEqual("Bug description", issue?.GetProperty("body").GetString()); } - [Test] + [TestMethod] public async Task ShouldCreateFeatureRequests() { - var data = new Dictionary(); - data.Add("title", "[Feature] request 1"); - data.Add("body", "Feature description"); + var data = new Dictionary + { + { "title", "[Feature] request 1" }, + { "body", "Feature description" } + }; var newIssue = await Request.PostAsync("/repos/" + USER + "/" + REPO + "/issues", new() { DataObject = data }); - Assert.True(newIssue.Ok); + await Expect(newIssue).ToBeOKAsync(); var issues = await Request.GetAsync("/repos/" + USER + "/" + REPO + "/issues"); - Assert.True(issues.Ok); + await Expect(newIssue).ToBeOKAsync(); var issuesJsonResponse = await issues.JsonAsync(); - var issuesJson = (await issues.JsonAsync())?.EnumerateArray(); JsonElement? issue = null; foreach (JsonElement issueObj in issuesJsonResponse?.EnumerateArray()) @@ -154,7 +150,7 @@ public class TestGitHubAPI : PlaywrightTest } } } - Assert.NotNull(issue); + Assert.IsNotNull(issue); Assert.AreEqual("Feature description", issue?.GetProperty("body").GetString()); } @@ -167,41 +163,47 @@ public class TestGitHubAPI : PlaywrightTest These tests assume that repository exists. You probably want to create a new one before running tests and delete it afterwards. Use `[SetUp]` and `[TearDown]` hooks for that. ```csharp +using System.Text.Json; +using Microsoft.Playwright; +using Microsoft.Playwright.MSTest; + +namespace PlaywrightTests; + +[TestClass] public class TestGitHubAPI : PlaywrightTest { - // ... + // ... + [TestInitialize] + public async Task SetUpAPITesting() + { + await CreateAPIRequestContext(); + await CreateTestRepository(); + } - [SetUp] - public async Task SetUpAPITesting() - { - await CreateAPIRequestContext(); - await CreateTestRepository(); - } + private async Task CreateTestRepository() + { + var resp = await Request.PostAsync("/user/repos", new() + { + DataObject = new Dictionary() + { + ["name"] = REPO, + }, + }); + await Expect(resp).ToBeOKAsync(); + } - private async Task CreateTestRepository() - { - var resp = await Request.PostAsync("/user/repos", new() - { - DataObject = new Dictionary() - { - ["name"] = REPO, - }, - }); - Assert.True(resp.Ok); - } + [TestCleanup] + public async Task TearDownAPITesting() + { + await DeleteTestRepository(); + await Request.DisposeAsync(); + } - [TearDown] - public async Task TearDownAPITesting() - { - await DeleteTestRepository(); - await Request.DisposeAsync(); - } - - private async Task DeleteTestRepository() - { - var resp = await Request.DeleteAsync("/repos/" + USER + "/" + REPO); - Assert.True(resp.Ok); - } + private async Task DeleteTestRepository() + { + var resp = await Request.DeleteAsync("/repos/" + USER + "/" + REPO); + await Expect(resp).ToBeOKAsync(); + } } ``` @@ -210,36 +212,34 @@ public class TestGitHubAPI : PlaywrightTest Here is the complete example of an API test: ```csharp -using System; -using System.Collections.Generic; -using System.Threading.Tasks; using System.Text.Json; -using Microsoft.Playwright.NUnit; using Microsoft.Playwright; -using NUnit.Framework; +using Microsoft.Playwright.MSTest; namespace PlaywrightTests; -[TestFixture] +[TestClass] public class TestGitHubAPI : PlaywrightTest { static string REPO = "test-repo-2"; static string USER = Environment.GetEnvironmentVariable("GITHUB_USER"); - static string API_TOKEN = Environment.GetEnvironmentVariable("GITHUB_API_TOKEN"); + static string? API_TOKEN = Environment.GetEnvironmentVariable("GITHUB_API_TOKEN"); - private IAPIRequestContext Request = null; + private IAPIRequestContext Request = null!; - [Test] + [TestMethod] public async Task ShouldCreateBugReport() { - var data = new Dictionary(); - data.Add("title", "[Bug] report 1"); - data.Add("body", "Bug description"); + var data = new Dictionary + { + { "title", "[Bug] report 1" }, + { "body", "Bug description" } + }; var newIssue = await Request.PostAsync("/repos/" + USER + "/" + REPO + "/issues", new() { DataObject = data }); - Assert.True(newIssue.Ok); + await Expect(newIssue).ToBeOKAsync(); var issues = await Request.GetAsync("/repos/" + USER + "/" + REPO + "/issues"); - Assert.True(issues.Ok); + await Expect(newIssue).ToBeOKAsync(); var issuesJsonResponse = await issues.JsonAsync(); JsonElement? issue = null; foreach (JsonElement issueObj in issuesJsonResponse?.EnumerateArray()) @@ -252,23 +252,24 @@ public class TestGitHubAPI : PlaywrightTest } } } - Assert.NotNull(issue); + Assert.IsNotNull(issue); Assert.AreEqual("Bug description", issue?.GetProperty("body").GetString()); } - [Test] + [TestMethod] public async Task ShouldCreateFeatureRequests() { - var data = new Dictionary(); - data.Add("title", "[Feature] request 1"); - data.Add("body", "Feature description"); + var data = new Dictionary + { + { "title", "[Feature] request 1" }, + { "body", "Feature description" } + }; var newIssue = await Request.PostAsync("/repos/" + USER + "/" + REPO + "/issues", new() { DataObject = data }); - Assert.True(newIssue.Ok); + await Expect(newIssue).ToBeOKAsync(); var issues = await Request.GetAsync("/repos/" + USER + "/" + REPO + "/issues"); - Assert.True(issues.Ok); + await Expect(newIssue).ToBeOKAsync(); var issuesJsonResponse = await issues.JsonAsync(); - var issuesJson = (await issues.JsonAsync())?.EnumerateArray(); JsonElement? issue = null; foreach (JsonElement issueObj in issuesJsonResponse?.EnumerateArray()) @@ -281,11 +282,11 @@ public class TestGitHubAPI : PlaywrightTest } } } - Assert.NotNull(issue); + Assert.IsNotNull(issue); Assert.AreEqual("Feature description", issue?.GetProperty("body").GetString()); } - [SetUp] + [TestInitialize] public async Task SetUpAPITesting() { await CreateAPIRequestContext(); @@ -294,14 +295,16 @@ public class TestGitHubAPI : PlaywrightTest private async Task CreateAPIRequestContext() { - var headers = new Dictionary(); - // We set this header per GitHub guidelines. - headers.Add("Accept", "application/vnd.github.v3+json"); - // Add authorization token to all requests. - // Assuming personal access token available in the environment. - headers.Add("Authorization", "token " + API_TOKEN); + var headers = new Dictionary + { + // We set this header per GitHub guidelines. + { "Accept", "application/vnd.github.v3+json" }, + // Add authorization token to all requests. + // Assuming personal access token available in the environment. + { "Authorization", "token " + API_TOKEN } + }; - Request = await this.Playwright.APIRequest.NewContextAsync(new() + Request = await Playwright.APIRequest.NewContextAsync(new() { // All requests we send go to this API endpoint. BaseURL = "https://api.github.com", @@ -318,10 +321,10 @@ public class TestGitHubAPI : PlaywrightTest ["name"] = REPO, }, }); - Assert.True(resp.Ok); + await Expect(resp).ToBeOKAsync(); } - [TearDown] + [TestCleanup] public async Task TearDownAPITesting() { await DeleteTestRepository(); @@ -331,7 +334,7 @@ public class TestGitHubAPI : PlaywrightTest private async Task DeleteTestRepository() { var resp = await Request.DeleteAsync("/repos/" + USER + "/" + REPO); - Assert.True(resp.Ok); + await Expect(resp).ToBeOKAsync(); } } ``` @@ -344,21 +347,23 @@ project to check that it appears at the top of the list. The check is performed ```csharp class TestGitHubAPI : PageTest { - [Test] - public async Task LastCreatedIssueShouldBeFirstInTheList() - { - var data = new Dictionary(); - data.Add("title", "[Feature] request 1"); - data.Add("body", "Feature description"); - var newIssue = await Request.PostAsync("/repos/" + USER + "/" + REPO + "/issues", new() { DataObject = data }); - Assert.True(newIssue.Ok); + [TestMethod] + public async Task LastCreatedIssueShouldBeFirstInTheList() + { + var data = new Dictionary + { + { "title", "[Feature] request 1" }, + { "body", "Feature description" } + }; + var newIssue = await Request.PostAsync("/repos/" + USER + "/" + REPO + "/issues", new() { DataObject = data }); + await Expect(newIssue).ToBeOKAsync(); - // When inheriting from 'PlaywrightTest' it only gives you a Playwright instance. To get a Page instance, either start - // a browser, context, and page manually or inherit from 'PageTest' which will launch it for you. - await Page.GotoAsync("https://github.com/" + USER + "/" + REPO + "/issues"); - var firstIssue = Page.Locator("a[data-hovercard-type='issue']").First; - await Expect(firstIssue).ToHaveTextAsync("[Feature] request 1"); - } + // When inheriting from 'PlaywrightTest' it only gives you a Playwright instance. To get a Page instance, either start + // a browser, context, and page manually or inherit from 'PageTest' which will launch it for you. + await Page.GotoAsync("https://github.com/" + USER + "/" + REPO + "/issues"); + var firstIssue = Page.Locator("a[data-hovercard-type='issue']").First; + await Expect(firstIssue).ToHaveTextAsync("[Feature] request 1"); + } } ``` @@ -368,22 +373,23 @@ The following test creates a new issue via user interface in the browser and the it was created: ```csharp +// Make sure to extend from PageTest if you want to use the Page class. class GitHubTests : PageTest { - [Test] - public async Task LastCreatedIssueShouldBeOnTheServer() - { - await Page.GotoAsync("https://github.com/" + USER + "/" + REPO + "/issues"); - await Page.Locator("text=New Issue").ClickAsync(); - await Page.Locator("[aria-label='Title']").FillAsync("Bug report 1"); - await Page.Locator("[aria-label='Comment body']").FillAsync("Bug description"); - await Page.Locator("text=Submit new issue").ClickAsync(); - String issueId = Page.Url.Substring(Page.Url.LastIndexOf('/')); + [TestMethod] + public async Task LastCreatedIssueShouldBeOnTheServer() + { + await Page.GotoAsync("https://github.com/" + USER + "/" + REPO + "/issues"); + await Page.Locator("text=New Issue").ClickAsync(); + await Page.Locator("[aria-label='Title']").FillAsync("Bug report 1"); + await Page.Locator("[aria-label='Comment body']").FillAsync("Bug description"); + await Page.Locator("text=Submit new issue").ClickAsync(); + var issueId = Page.Url.Substring(Page.Url.LastIndexOf('/')); - var newIssue = await Request.GetAsync("https://github.com/" + USER + "/" + REPO + "/issues/" + issueId); - Assert.True(newIssue.Ok); - StringAssert.Contains(await newIssue.TextAsync(), "Bug report 1"); - } + var newIssue = await Request.GetAsync("https://github.com/" + USER + "/" + REPO + "/issues/" + issueId); + await Expect(newIssue).ToBeOKAsync(); + StringAssert.Contains(await newIssue.TextAsync(), "Bug report 1"); + } } ``` diff --git a/docs/src/api/class-apirequestcontext.md b/docs/src/api/class-apirequestcontext.md index 7101d1996d..dab99bec2b 100644 --- a/docs/src/api/class-apirequestcontext.md +++ b/docs/src/api/class-apirequestcontext.md @@ -344,6 +344,9 @@ If set changes the fetch method (e.g. [PUT](https://developer.mozilla.org/en-US/ ### option: APIRequestContext.fetch.maxRedirects = %%-js-python-csharp-fetch-option-maxredirects-%% * since: v1.26 +### option: APIRequestContext.fetch.maxRetries = %%-js-python-csharp-fetch-option-maxretries-%% +* since: v1.46 + ## async method: APIRequestContext.get * since: v1.16 - returns: <[APIResponse]> @@ -433,6 +436,9 @@ await request.GetAsync("https://example.com/api/getText", new() { Params = query ### option: APIRequestContext.get.maxRedirects = %%-js-python-csharp-fetch-option-maxredirects-%% * since: v1.26 +### option: APIRequestContext.get.maxRetries = %%-js-python-csharp-fetch-option-maxretries-%% +* since: v1.46 + ## async method: APIRequestContext.head * since: v1.16 - returns: <[APIResponse]> @@ -486,6 +492,9 @@ context cookies from the response. The method will automatically follow redirect ### option: APIRequestContext.head.maxRedirects = %%-js-python-csharp-fetch-option-maxredirects-%% * since: v1.26 +### option: APIRequestContext.head.maxRetries = %%-js-python-csharp-fetch-option-maxretries-%% +* since: v1.46 + ## async method: APIRequestContext.patch * since: v1.16 - returns: <[APIResponse]> @@ -539,6 +548,9 @@ context cookies from the response. The method will automatically follow redirect ### option: APIRequestContext.patch.maxRedirects = %%-js-python-csharp-fetch-option-maxredirects-%% * since: v1.26 +### option: APIRequestContext.patch.maxRetries = %%-js-python-csharp-fetch-option-maxretries-%% +* since: v1.46 + ## async method: APIRequestContext.post * since: v1.16 - returns: <[APIResponse]> @@ -713,6 +725,9 @@ await request.PostAsync("https://example.com/api/uploadScript", new() { Multipar ### option: APIRequestContext.post.maxRedirects = %%-js-python-csharp-fetch-option-maxredirects-%% * since: v1.26 +### option: APIRequestContext.post.maxRetries = %%-js-python-csharp-fetch-option-maxretries-%% +* since: v1.46 + ## async method: APIRequestContext.put * since: v1.16 - returns: <[APIResponse]> @@ -766,6 +781,9 @@ context cookies from the response. The method will automatically follow redirect ### option: APIRequestContext.put.maxRedirects = %%-js-python-csharp-fetch-option-maxredirects-%% * since: v1.26 +### option: APIRequestContext.put.maxRetries = %%-js-python-csharp-fetch-option-maxretries-%% +* since: v1.46 + ## async method: APIRequestContext.storageState * since: v1.16 - returns: <[Object]> diff --git a/docs/src/api/class-browsercontext.md b/docs/src/api/class-browsercontext.md index 8cb11dbc0c..48542a2603 100644 --- a/docs/src/api/class-browsercontext.md +++ b/docs/src/api/class-browsercontext.md @@ -102,7 +102,7 @@ context.BackgroundPage += (_, backgroundPage) => * since: v1.45 - type: <[Clock]> -Playwright is using [@sinonjs/fake-timers](https://github.com/sinonjs/fake-timers) to fake timers and clock. +Playwright has ability to mock clock and passage of time. ## event: BrowserContext.close * since: v1.8 @@ -357,18 +357,14 @@ await context.AddCookiesAsync(new[] { cookie1, cookie2 }); - `cookies` <[Array]<[Object]>> - `name` <[string]> - `value` <[string]> - - `url` ?<[string]> either url or domain / path are required. Optional. - - `domain` ?<[string]> either url or domain / path are required Optional. - - `path` ?<[string]> either url or domain / path are required Optional. + - `url` ?<[string]> Either url or domain / path are required. Optional. + - `domain` ?<[string]> For the cookie to apply to all subdomains as well, prefix domain with a dot, like this: ".example.com". Either url or domain / path are required. Optional. + - `path` ?<[string]> Either url or domain / path are required Optional. - `expires` ?<[float]> Unix time in seconds. Optional. - `httpOnly` ?<[boolean]> Optional. - `secure` ?<[boolean]> Optional. - `sameSite` ?<[SameSiteAttribute]<"Strict"|"Lax"|"None">> Optional. -Adds cookies to the browser context. - -For the cookie to apply to all subdomains as well, prefix domain with a dot, like this: ".example.com". - ## async method: BrowserContext.addInitScript * since: v1.8 @@ -748,83 +744,6 @@ await page.SetContentAsync(" -
Click me
-
Or click me
-`); -``` - -```java -context.exposeBinding("clicked", (source, args) -> { - ElementHandle element = (ElementHandle) args[0]; - System.out.println(element.textContent()); - return null; -}, new BrowserContext.ExposeBindingOptions().setHandle(true)); -page.setContent("" + - "\n" + - "
Click me
\n" + - "
Or click me
\n"); -``` - -```python async -async def print(source, element): - print(await element.text_content()) - -await context.expose_binding("clicked", print, handle=true) -await page.set_content(""" - -
Click me
-
Or click me
-""") -``` - -```python sync -def print(source, element): - print(element.text_content()) - -context.expose_binding("clicked", print, handle=true) -page.set_content(""" - -
Click me
-
Or click me
-""") -``` - -```csharp -var result = new TaskCompletionSource(); -var page = await Context.NewPageAsync(); -await Context.ExposeBindingAsync("clicked", async (BindingSource _, IJSHandle t) => -{ - return result.TrySetResult(await t.AsElement().TextContentAsync()); -}); - -await page.SetContentAsync("\n" + - "
Click me
\n" + - "
Or click me
\n"); - -await page.ClickAsync("div"); -// Note: it makes sense to await the result here, because otherwise, the context -// gets closed and the binding function will throw an exception. -Assert.AreEqual("Click me", await result.Task); -``` - ### param: BrowserContext.exposeBinding.name * since: v1.8 - `name` <[string]> @@ -839,6 +758,7 @@ Callback function that will be called in the Playwright's context. ### option: BrowserContext.exposeBinding.handle * since: v1.8 +* deprecated: This option will be removed in the future. - `handle` <[boolean]> Whether to pass the argument as a handle, instead of passing by value. When passing a handle, only one argument is @@ -1044,21 +964,22 @@ specified. - `permissions` <[Array]<[string]>> A permission or an array of permissions to grant. Permissions can be one of the following values: -* `'geolocation'` -* `'midi'` -* `'midi-sysex'` (system-exclusive midi) -* `'notifications'` -* `'camera'` -* `'microphone'` -* `'background-sync'` -* `'ambient-light-sensor'` * `'accelerometer'` -* `'gyroscope'` -* `'magnetometer'` * `'accessibility-events'` +* `'ambient-light-sensor'` +* `'background-sync'` +* `'camera'` * `'clipboard-read'` * `'clipboard-write'` +* `'geolocation'` +* `'gyroscope'` +* `'magnetometer'` +* `'microphone'` +* `'midi-sysex'` (system-exclusive midi) +* `'midi'` +* `'notifications'` * `'payment-handler'` +* `'storage-access'` ### option: BrowserContext.grantPermissions.origin * since: v1.8 diff --git a/docs/src/api/class-clock.md b/docs/src/api/class-clock.md index f119073e07..6f70e72a02 100644 --- a/docs/src/api/class-clock.md +++ b/docs/src/api/class-clock.md @@ -1,86 +1,242 @@ # class: Clock * since: v1.45 -Playwright uses [@sinonjs/fake-timers](https://github.com/sinonjs/fake-timers) for clock emulation. Clock is installed for the entire [BrowserContext], so the time +Accurately simulating time-dependent behavior is essential for verifying the correctness of applications. Learn more about [clock emulation](../clock.md). + +Note that clock is installed for the entire [BrowserContext], so the time in all the pages and iframes is controlled by the same clock. +## async method: Clock.fastForward +* since: v1.45 + +Advance the clock by jumping forward in time. Only fires due timers at most once. This is equivalent to user closing the laptop lid for a while and +reopening it later, after given time. + +**Usage** + +```js +await page.clock.fastForward(1000); +await page.clock.fastForward('30:00'); +``` + +```python async +await page.clock.fast_forward(1000) +await page.clock.fast_forward("30:00") +``` + +```python sync +page.clock.fast_forward(1000) +page.clock.fast_forward("30:00") +``` + +```java +page.clock().fastForward(1000); +page.clock().fastForward("30:00"); +``` + +```csharp +await page.Clock.FastForwardAsync(1000); +await page.Clock.FastForwardAsync("30:00"); +``` + +### param: Clock.fastForward.ticks +* since: v1.45 +- `ticks` <[long]|[string]> + +Time may be the number of milliseconds to advance the clock by or a human-readable string. Valid string formats are "08" for eight seconds, "01:00" for one minute and "02:34:10" for two hours, 34 minutes and ten seconds. + ## async method: Clock.install * since: v1.45 -Creates a clock and installs it globally. +Install fake implementations for the following time-related functions: -### option: Clock.install.now +* `Date` +* `setTimeout` +* `clearTimeout` +* `setInterval` +* `clearInterval` +* `requestAnimationFrame` +* `cancelAnimationFrame` +* `requestIdleCallback` +* `cancelIdleCallback` +* `performance` + +Fake timers are used to manually control the flow of time in tests. They allow you to advance time, fire timers, and control the behavior of time-dependent functions. See [`method: Clock.runFor`] and [`method: Clock.fastForward`] for more information. + +### option: Clock.install.time * since: v1.45 -- `now` <[int]|[Date]> +- `time` <[long]|[string]|[Date]> -Install fake timers with the specified unix epoch (default: 0). +Time to initialize with, current system time by default. -### option: Clock.install.toFake -* since: v1.45 -- `toFake` <[Array]<[FakeMethod]<"setTimeout"|"clearTimeout"|"setInterval"|"clearInterval"|"Date"|"requestAnimationFrame"|"cancelAnimationFrame"|"requestIdleCallback"|"cancelIdleCallback"|"performance">>> - -An array with names of global methods and APIs to fake. For instance, `await page.clock.install({ toFake: ['setTimeout'] })` will fake only `setTimeout()`. -By default, `setTimeout`, `clearTimeout`, `setInterval`, `clearInterval` and `Date` are faked. - -### option: Clock.install.loopLimit -* since: v1.45 -- `loopLimit` <[int]> - -The maximum number of timers that will be run when calling [`method: Clock.runAll`]. Defaults to `1000`. - -### option: Clock.install.shouldAdvanceTime -* since: v1.45 -- `shouldAdvanceTime` <[boolean]> - -Tells `@sinonjs/fake-timers` to increment mocked time automatically based on the real system time shift (e.g., the mocked time will be incremented by -20ms for every 20ms change in the real system time). Defaults to `false`. - -### option: Clock.install.advanceTimeDelta -* since: v1.45 -- `advanceTimeDelta` <[int]> - -Relevant only when using with [`option: shouldAdvanceTime`]. Increment mocked time by advanceTimeDelta ms every advanceTimeDelta ms change -in the real system time (default: 20). - -## async method: Clock.jump +## async method: Clock.runFor * since: v1.45 -Advance the clock by jumping forward in time, firing callbacks at most once. Returns fake milliseconds since the unix epoch. -This can be used to simulate the JS engine (such as a browser) being put to sleep and resumed later, skipping intermediary timers. +Advance the clock, firing all the time-related callbacks. -### param: Clock.jump.time +**Usage** + +```js +await page.clock.runFor(1000); +await page.clock.runFor('30:00'); +``` + +```python async +await page.clock.run_for(1000); +await page.clock.run_for("30:00") +``` + +```python sync +page.clock.run_for(1000); +page.clock.run_for("30:00") +``` + +```java +page.clock().runFor(1000); +page.clock().runFor("30:00"); +``` + +```csharp +await page.Clock.RunForAsync(1000); +await page.Clock.RunForAsync("30:00"); +``` + +### param: Clock.runFor.ticks * since: v1.45 -- `time` <[int]|[string]> +- `ticks` <[long]|[string]> Time may be the number of milliseconds to advance the clock by or a human-readable string. Valid string formats are "08" for eight seconds, "01:00" for one minute and "02:34:10" for two hours, 34 minutes and ten seconds. -## async method: Clock.runAll +## async method: Clock.pauseAt * since: v1.45 -- returns: <[int]> Fake milliseconds since the unix epoch. -Runs all pending timers until there are none remaining. If new timers are added while it is executing they will be run as well. -This makes it easier to run asynchronous tests to completion without worrying about the number of timers they use, or the delays in those timers. -It runs a maximum of [`option: loopLimit`] times after which it assumes there is an infinite loop of timers and throws an error. +Advance the clock by jumping forward in time and pause the time. Once this method is called, no timers +are fired unless [`method: Clock.runFor`], [`method: Clock.fastForward`], [`method: Clock.pauseAt`] or [`method: Clock.resume`] is called. +Only fires due timers at most once. +This is equivalent to user closing the laptop lid for a while and reopening it at the specified time and +pausing. -## async method: Clock.runToLast +**Usage** + +```js +await page.clock.pauseAt(new Date('2020-02-02')); +await page.clock.pauseAt('2020-02-02'); +``` + +```python async +await page.clock.pause_at(datetime.datetime(2020, 2, 2)) +await page.clock.pause_at("2020-02-02") +``` + +```python sync +page.clock.pause_at(datetime.datetime(2020, 2, 2)) +page.clock.pause_at("2020-02-02") +``` + +```java +SimpleDateFormat format = new SimpleDateFormat("yyy-MM-dd"); +page.clock().pauseAt(format.parse("2020-02-02")); +page.clock().pauseAt("2020-02-02"); +``` + +```csharp +await page.Clock.PauseAtAsync(DateTime.Parse("2020-02-02")); +await page.Clock.PauseAtAsync("2020-02-02"); +``` + +### param: Clock.pauseAt.time * since: v1.45 -- returns: <[int]> Fake milliseconds since the unix epoch. - -This takes note of the last scheduled timer when it is run, and advances the clock to that time firing callbacks as necessary. -If new timers are added while it is executing they will be run only if they would occur before this time. -This is useful when you want to run a test to completion, but the test recursively sets timers that would cause runAll to trigger an infinite loop warning. +- `time` <[long]|[string]|[Date]> -## async method: Clock.tick +## async method: Clock.resume * since: v1.45 -- returns: <[int]> Fake milliseconds since the unix epoch. -Advance the clock, firing callbacks if necessary. Returns fake milliseconds since the unix epoch. +Resumes timers. Once this method is called, time resumes flowing, timers are fired as usual. -### param: Clock.tick.time +## async method: Clock.setFixedTime * since: v1.45 -- `time` <[int]|[string]> -Time may be the number of milliseconds to advance the clock by or a human-readable string. Valid string formats are "08" for eight seconds, "01:00" for one minute and "02:34:10" for two hours, 34 minutes and ten seconds. +Makes `Date.now` and `new Date()` return fixed fake time at all times, +keeps all the timers running. + +**Usage** + +```js +await page.clock.setFixedTime(Date.now()); +await page.clock.setFixedTime(new Date('2020-02-02')); +await page.clock.setFixedTime('2020-02-02'); +``` + +```python async +await page.clock.set_fixed_time(datetime.datetime.now()) +await page.clock.set_fixed_time(datetime.datetime(2020, 2, 2)) +await page.clock.set_fixed_time("2020-02-02") +``` + +```python sync +page.clock.set_fixed_time(datetime.datetime.now()) +page.clock.set_fixed_time(datetime.datetime(2020, 2, 2)) +page.clock.set_fixed_time("2020-02-02") +``` + +```java +page.clock().setFixedTime(new Date()); +page.clock().setFixedTime(new SimpleDateFormat("yyy-MM-dd").parse("2020-02-02")); +page.clock().setFixedTime("2020-02-02"); +``` + +```csharp +await page.Clock.SetFixedTimeAsync(DateTime.Now); +await page.Clock.SetFixedTimeAsync(new DateTime(2020, 2, 2)); +await page.Clock.SetFixedTimeAsync("2020-02-02"); +``` + +### param: Clock.setFixedTime.time +* since: v1.45 +- `time` <[long]|[string]|[Date]> + +Time to be set. + +## async method: Clock.setSystemTime +* since: v1.45 + +Sets current system time but does not trigger any timers. + +**Usage** + +```js +await page.clock.setSystemTime(Date.now()); +await page.clock.setSystemTime(new Date('2020-02-02')); +await page.clock.setSystemTime('2020-02-02'); +``` + +```python async +await page.clock.set_system_time(datetime.datetime.now()) +await page.clock.set_system_time(datetime.datetime(2020, 2, 2)) +await page.clock.set_system_time("2020-02-02") +``` + +```python sync +page.clock.set_system_time(datetime.datetime.now()) +page.clock.set_system_time(datetime.datetime(2020, 2, 2)) +page.clock.set_system_time("2020-02-02") +``` + +```java +page.clock().setSystemTime(new Date()); +page.clock().setSystemTime(new SimpleDateFormat("yyy-MM-dd").parse("2020-02-02")); +page.clock().setSystemTime("2020-02-02"); +``` + +```csharp +await page.Clock.SetSystemTimeAsync(DateTime.Now); +await page.Clock.SetSystemTimeAsync(new DateTime(2020, 2, 2)); +await page.Clock.SetSystemTimeAsync("2020-02-02"); +``` + +### param: Clock.setSystemTime.time +* since: v1.45 +- `time` <[long]|[string]|[Date]> diff --git a/docs/src/api/class-elementhandle.md b/docs/src/api/class-elementhandle.md index dbf99eb3a2..24b8bb2b6f 100644 --- a/docs/src/api/class-elementhandle.md +++ b/docs/src/api/class-elementhandle.md @@ -953,6 +953,7 @@ When all steps combined have not finished during the specified [`option: timeout Sets the value of the file input to these file paths or files. If some of the `filePaths` are relative paths, then they are resolved relative to the current working directory. For empty array, clears the selected files. +For inputs with a `[webkitdirectory]` attribute, only a single directory path is supported. This method expects [ElementHandle] to point to an [input element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input). However, if the element is inside the `