diff --git a/.eslintignore b/.eslintignore
index 38c19d93ec..f7365e0082 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -1,9 +1,11 @@
test/assets/modernizr.js
+/tests/third_party/
/packages/*/lib/
*.js
/packages/playwright-core/src/generated/*
/packages/playwright-core/src/third_party/
/packages/playwright-core/types/*
+/packages/playwright-ct-core/src/generated/*
/index.d.ts
utils/generate_types/overrides.d.ts
utils/generate_types/test/test.ts
diff --git a/.github/ISSUE_TEMPLATE/bug.md b/.github/ISSUE_TEMPLATE/bug.md
deleted file mode 100644
index 52eb7d6a3e..0000000000
--- a/.github/ISSUE_TEMPLATE/bug.md
+++ /dev/null
@@ -1,73 +0,0 @@
----
-name: Bug Report
-about: Something doesn't work like it should? Tell us!
-title: "[BUG]"
-labels: ''
-assignees: ''
-
----
-
-
-
-
-
-
-
-### System info
-- Playwright Version: [v1.XX]
-- Operating System: [All, Windows 11, Ubuntu 20, macOS 13.2, etc.]
-- Browser: [All, Chromium, Firefox, WebKit]
-- Other info:
-
-### Source code
-
-- [ ] I provided exact source code that allows reproducing the issue locally.
-
-
-
-
-
-
-**Link to the GitHub repository with the repro**
-
-[https://github.com/your_profile/playwright_issue_title]
-
-or
-
-**Config file**
-
-```js
-// playwright.config.ts
-import { defineConfig, devices } from '@playwright/test';
-
-export default defineConfig({
- projects: [
- {
- name: 'chromium',
- use: { ...devices['Desktop Chrome'], },
- },
- ]
-});
-```
-
-**Test file (self-contained)**
-
-```js
-it('should check the box using setChecked', async ({ page }) => {
- await page.setContent(``);
- await page.getByRole('checkbox').check();
- await expect(page.getByRole('checkbox')).toBeChecked();
-});
-```
-
-**Steps**
-- [Run the test]
-- [...]
-
-**Expected**
-
-[Describe expected behavior]
-
-**Actual**
-
-[Describe actual behavior]
diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml
new file mode 100644
index 0000000000..5baad382eb
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug.yml
@@ -0,0 +1,100 @@
+name: Bug Report 🪲
+description: Create a bug report to help us improve
+title: '[Bug]: '
+body:
+ - type: markdown
+ attributes:
+ value: |
+ # Please follow these steps first:
+ - type: markdown
+ attributes:
+ value: |
+ ## Troubleshoot
+ If Playwright is not behaving the way you expect, we'd ask you to look at the [documentation](https://playwright.dev/docs/intro) and search the issue tracker for evidence supporting your expectation.
+ Please make reasonable efforts to troubleshoot and rule out issues with your code, the configuration, or any 3rd party libraries you might be using.
+ Playwright offers [several debugging tools](https://playwright.dev/docs/debug) that you can use to troubleshoot your issues.
+ - type: markdown
+ attributes:
+ value: |
+ ## Ask for help through appropriate channels
+ If you feel unsure about the cause of the problem, consider asking for help on for example [StackOverflow](https://stackoverflow.com/questions/ask) or our [Discord channel](https://aka.ms/playwright/discord) before posting a bug report. The issue tracker is not a help forum.
+ - type: markdown
+ attributes:
+ value: |
+ ## Make a minimal reproduction
+ To file the report, you will need a GitHub repository with a minimal (but complete) example and simple/clear steps on how to reproduce the bug.
+ The simpler you can make it, the more likely we are to successfully verify and fix the bug.
+ - type: markdown
+ attributes:
+ value: |
+ > [!IMPORTANT]
+ > Bug reports without a minimal reproduction will be rejected.
+
+ ---
+ - type: input
+ id: version
+ attributes:
+ label: Version
+ description: |
+ The version of Playwright you are using.
+ Is it the [latest](https://github.com/microsoft/playwright/releases)? Test and see if the bug has already been fixed.
+ placeholder: ex. 1.41.1
+ validations:
+ required: true
+ - type: textarea
+ id: reproduction
+ attributes:
+ label: Steps to reproduce
+ description: Please link to a repository with a minimal reproduction and describe accurately how we can reproduce/verify the bug.
+ placeholder: |
+ Example steps (replace with your own):
+ 1. Clone my repo at https://github.com//example
+ 2. npm install
+ 3. npm run test
+ 4. You should see the error come up
+ validations:
+ required: true
+ - type: textarea
+ id: expected
+ attributes:
+ label: Expected behavior
+ description: A description of what you expect to happen.
+ placeholder: I expect to see X or Y
+ validations:
+ required: true
+ - type: textarea
+ id: what-happened
+ attributes:
+ label: Actual behavior
+ description: |
+ A clear and concise description of the unexpected behavior.
+ Please include any relevant output here, especially any error messages.
+ placeholder: A bug happened!
+ validations:
+ required: true
+ - type: textarea
+ id: context
+ attributes:
+ label: Additional context
+ description: Anything else that might be relevant
+ validations:
+ required: false
+ - type: textarea
+ id: envinfo
+ attributes:
+ label: Environment
+ description: |
+ Please paste the output of running `npx envinfo --preset playwright`.
+ This will be automatically formatted as a code block, so no need for backticks.
+ placeholder: |
+ System:
+ OS: Linux 6.2 Ubuntu 22.04.3 LTS 22.04.3 LTS (Jammy Jellyfish)
+ CPU: (8) arm64
+ Binaries:
+ Node: 18.19.0 - ~/.nvm/versions/node/v18.19.0/bin/node
+ npm: 10.2.3 - ~/.nvm/versions/node/v18.19.0/bin/npm
+ npmPackages:
+ @playwright/test: 1.41.1 => 1.41.1
+ render: shell
+ validations:
+ required: true
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
index de71858775..5d9345c265 100644
--- a/.github/ISSUE_TEMPLATE/config.yml
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -1,3 +1,4 @@
+blank_issues_enabled: false
contact_links:
- name: Join our Discord Server
url: https://aka.ms/playwright/discord
diff --git a/.github/ISSUE_TEMPLATE/documentation.yml b/.github/ISSUE_TEMPLATE/documentation.yml
new file mode 100644
index 0000000000..0a683969a6
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/documentation.yml
@@ -0,0 +1,29 @@
+name: Documentation 📖
+description: Submit a request to add or update documentation
+title: '[Docs]: '
+labels: ['Documentation :book:']
+body:
+ - type: markdown
+ attributes:
+ value: |
+ ### Thank you for helping us improve our documentation!
+ Please be sure you are looking at [the Next version of the documentation](https://playwright.dev/docs/next/intro) before opening an issue here.
+ - type: textarea
+ id: links
+ attributes:
+ label: Page(s)
+ description: |
+ Links to one or more documentation pages that should be modified.
+ If you are reporting an issue with a specific section of a page, try to link directly to the nearest anchor.
+ If you are suggesting that a new page be created, link to the parent of the proposed page.
+ validations:
+ required: true
+ - type: textarea
+ id: description
+ attributes:
+ label: Description
+ description: |
+ Describe the change you are requesting.
+ If the issue pertains to a single function or matcher, be sure to specify the entire call signature.
+ validations:
+ required: true
diff --git a/.github/ISSUE_TEMPLATE/feature.yml b/.github/ISSUE_TEMPLATE/feature.yml
new file mode 100644
index 0000000000..efec3315c1
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature.yml
@@ -0,0 +1,30 @@
+name: Feature Request 🚀
+description: Submit a proposal for a new feature
+title: '[Feature]: '
+body:
+ - type: markdown
+ attributes:
+ value: |
+ ### Thank you for taking the time to suggest a new feature!
+ - type: textarea
+ id: description
+ attributes:
+ label: '🚀 Feature Request'
+ description: A clear and concise description of what the feature is.
+ validations:
+ required: true
+ - type: textarea
+ id: example
+ attributes:
+ label: Example
+ description: Describe how this feature would be used.
+ validations:
+ required: false
+ - type: textarea
+ id: motivation
+ attributes:
+ label: Motivation
+ description: |
+ Outline your motivation for the proposal. How will it make Playwright better?
+ validations:
+ required: true
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
deleted file mode 100644
index 37ec8a7d25..0000000000
--- a/.github/ISSUE_TEMPLATE/feature_request.md
+++ /dev/null
@@ -1,11 +0,0 @@
----
-name: Feature request
-about: Request new features to be added
-title: "[Feature]"
-labels: ''
-assignees: ''
-
----
-
-Let us know what functionality you'd like to see in Playwright and what your use case is.
-Do you think others might benefit from this as well?
diff --git a/.github/ISSUE_TEMPLATE/question.yml b/.github/ISSUE_TEMPLATE/question.yml
new file mode 100644
index 0000000000..9615afdc8a
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/question.yml
@@ -0,0 +1,27 @@
+name: 'Questions / Help 💬'
+description: If you have questions, please check StackOverflow or Discord
+title: '[Please read the message below]'
+labels: [':speech_balloon: Question']
+body:
+ - type: markdown
+ attributes:
+ value: |
+ ## Questions and Help 💬
+
+ This issue tracker is reserved for bug reports and feature requests.
+
+ For anything else, such as questions or getting help, please see:
+
+ - [The Playwright documentation](https://playwright.dev)
+ - [Our Discord server](https://aka.ms/playwright/discord)
+ - type: checkboxes
+ id: no-post
+ attributes:
+ label: |
+ Please do not submit this issue.
+ description: |
+ > [!IMPORTANT]
+ > This issue will be closed.
+ options:
+ - label: I understand
+ required: true
diff --git a/.github/ISSUE_TEMPLATE/regression.md b/.github/ISSUE_TEMPLATE/regression.md
deleted file mode 100644
index d6d7510a4c..0000000000
--- a/.github/ISSUE_TEMPLATE/regression.md
+++ /dev/null
@@ -1,32 +0,0 @@
----
-name: Report regression
-about: Functionality that used to work and does not any more
-title: "[REGRESSION]: "
-labels: ''
-assignees: ''
-
----
-
-**Context:**
-- GOOD Playwright Version: [what Playwright version worked nicely?]
-- BAD Playwright Version: [what Playwright version doesn't work any more?]
-- Operating System: [e.g. Windows, Linux or Mac]
-- Extra: [any specific details about your environment]
-
-**Code Snippet**
-
-Help us help you! Put down a short code snippet that illustrates your bug and
-that we can run and debug locally. For example:
-
-```javascript
-const {chromium, webkit, firefox} = require('playwright');
-
-(async () => {
- const browser = await chromium.launch();
- // ...
-})();
-```
-
-**Describe the bug**
-
-Add any other details about the problem here.
diff --git a/.github/ISSUE_TEMPLATE/regression.yml b/.github/ISSUE_TEMPLATE/regression.yml
new file mode 100644
index 0000000000..bc0a101502
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/regression.yml
@@ -0,0 +1,96 @@
+name: Report regression
+description: Functionality that used to work and does not any more
+title: "[Regression]: "
+
+body:
+ - type: markdown
+ attributes:
+ value: |
+ # Please follow these steps first:
+ - type: markdown
+ attributes:
+ value: |
+ ## Make a minimal reproduction
+ To file the report, you will need a GitHub repository with a minimal (but complete) example and simple/clear steps on how to reproduce the regression.
+ The simpler you can make it, the more likely we are to successfully verify and fix the regression.
+ - type: markdown
+ attributes:
+ value: |
+ > [!IMPORTANT]
+ > Regression reports without a minimal reproduction will be rejected.
+
+ ---
+ - type: input
+ id: goodVersion
+ attributes:
+ label: Last Good Version
+ description: |
+ Last version of Playwright where the feature was working.
+ placeholder: ex. 1.40.1
+ validations:
+ required: true
+ - type: input
+ id: badVersion
+ attributes:
+ label: First Bad Version
+ description: |
+ First version of Playwright where the feature was broken.
+ Is it the [latest](https://github.com/microsoft/playwright/releases)? Test and see if the regression has already been fixed.
+ placeholder: ex. 1.41.1
+ validations:
+ required: true
+ - type: textarea
+ id: reproduction
+ attributes:
+ label: Steps to reproduce
+ description: Please link to a repository with a minimal reproduction and describe accurately how we can reproduce/verify the bug.
+ placeholder: |
+ Example steps (replace with your own):
+ 1. Clone my repo at https://github.com//example
+ 2. npm install
+ 3. npm run test
+ 4. You should see the error come up
+ validations:
+ required: true
+ - type: textarea
+ id: expected
+ attributes:
+ label: Expected behavior
+ description: A description of what you expect to happen.
+ placeholder: I expect to see X or Y
+ validations:
+ required: true
+ - type: textarea
+ id: what-happened
+ attributes:
+ label: Actual behavior
+ description: A clear and concise description of the unexpected behavior.
+ placeholder: A bug happened!
+ validations:
+ required: true
+ - type: textarea
+ id: context
+ attributes:
+ label: Additional context
+ description: Anything else that might be relevant
+ validations:
+ required: false
+ - type: textarea
+ id: envinfo
+ attributes:
+ label: Environment
+ description: |
+ Please paste the output of running `npx envinfo --preset playwright`.
+ This will be automatically formatted as a code block, so no need for backticks.
+ placeholder: |
+ System:
+ OS: Linux 6.2 Ubuntu 22.04.3 LTS 22.04.3 LTS (Jammy Jellyfish)
+ CPU: (8) arm64
+ Binaries:
+ Node: 18.19.0 - ~/.nvm/versions/node/v18.19.0/bin/node
+ npm: 10.2.3 - ~/.nvm/versions/node/v18.19.0/bin/npm
+ npmPackages:
+ @playwright/test: 1.41.1 => 1.41.1
+ render: shell
+ validations:
+ required: true
diff --git a/.github/ISSUE_TEMPLATE/vscode-extension.md b/.github/ISSUE_TEMPLATE/vscode-extension.md
deleted file mode 100644
index e623fa9de1..0000000000
--- a/.github/ISSUE_TEMPLATE/vscode-extension.md
+++ /dev/null
@@ -1,26 +0,0 @@
----
-name: VSCode extension bug
-about: Something doesn't work like it should inside the Visual Studio Code extension or you have a feature request? Tell us!
-title: "[BUG]"
-labels: ''
-assignees: ''
-
----
-
-**Context:**
-- Playwright Version: [what Playwright version do you use?]
-- Operating System: [e.g. Windows, Linux or Mac]
-- Node.js version: [e.g. 12.22, 14.6]
-- Visual Studio Code version: [e.g. 1.65]
-- Playwright for VSCode extension version: [e.g. 1.2.3]
-- Browser: [e.g. All, Chromium, Firefox, WebKit]
-- Extra: [any specific details about your environment]
-
-**Code Snippet**
-
-Help us help you! Put down a short code snippet that illustrates your bug and
-that we can run and debug locally. For example:
-
-**Describe the bug**
-
-Add any other details about the problem here.
diff --git a/.github/actions/download-artifact/action.yml b/.github/actions/download-artifact/action.yml
index 874b202c06..d279df5f8d 100644
--- a/.github/actions/download-artifact/action.yml
+++ b/.github/actions/download-artifact/action.yml
@@ -1,8 +1,8 @@
-name: 'Download blob report'
-description: 'Download blob report from GitHub artifacts'
+name: 'Download artifacts'
+description: 'Download artifacts from GitHub'
inputs:
- name:
- description: 'Name of the artifact to download'
+ namePrefix:
+ description: 'Name prefix of the artifacts to download'
required: true
type: string
default: 'blob-report'
@@ -10,31 +10,37 @@ inputs:
description: 'Directory with downloaded artifacts'
required: true
type: string
- default: 'blob-report'
+ default: '.'
runs:
using: "composite"
steps:
- - name: Download blob report
- uses: actions/github-script@v6
+ - name: Create temp downloads dir
+ shell: bash
+ run: mkdir -p '${{ inputs.path }}/artifacts'
+ - name: Download artifacts
+ uses: actions/github-script@v7
with:
script: |
console.log(`downloading artifacts for workflow_run: ${context.payload.workflow_run.id}`);
console.log(`workflow_run: ${JSON.stringify(context.payload.workflow_run, null, 2)}`);
- const { data } = await github.rest.actions.listWorkflowRunArtifacts({
+ const allArtifacts = await github.paginate(github.rest.actions.listWorkflowRunArtifacts, {
...context.repo,
run_id: context.payload.workflow_run.id
});
- console.log('total = ', data.total_count);
- const name = '${{ inputs.name }}';
- const report = data.artifacts.filter(a => a.name === name)[0];
- const result = await github.rest.actions.downloadArtifact({
- ...context.repo,
- artifact_id: report.id,
- archive_format: 'zip'
- });
- console.log('download result', result);
+ console.log('total = ', allArtifacts.length);
+ const artifacts = allArtifacts.filter(a => a.name.startsWith('${{ inputs.namePrefix }}'));
const fs = require('fs');
- fs.writeFileSync(`${name}.zip`, Buffer.from(result.data));
- - name: Unzip blob report
+ for (const artifact of artifacts) {
+ const result = await github.rest.actions.downloadArtifact({
+ ...context.repo,
+ artifact_id: artifact.id,
+ archive_format: 'zip'
+ });
+ console.log('downloaded artifact', result);
+ fs.writeFileSync(`${{ inputs.path }}/artifacts/${artifact.name}.zip`, Buffer.from(result.data));
+ }
+ - name: Unzip artifacts
shell: bash
- run: unzip ${{ inputs.name }}.zip -d ${{ inputs.path }}
+ run: |
+ unzip -n '${{ inputs.path }}/artifacts/*.zip' -d ${{ inputs.path }}
+ rm -rf '${{ inputs.path }}/artifacts'
diff --git a/.github/actions/upload-blob-report/action.yml b/.github/actions/upload-blob-report/action.yml
index 9a091dce5c..87eda3baf8 100644
--- a/.github/actions/upload-blob-report/action.yml
+++ b/.github/actions/upload-blob-report/action.yml
@@ -5,16 +5,21 @@ inputs:
description: 'Directory containing blob report'
required: true
type: string
- default: 'blob-report'
+ default: 'test-results/blob-report'
+ job_name:
+ description: 'Unique job name'
+ required: true
+ type: string
+ default: ''
runs:
using: "composite"
steps:
- name: Upload blob report to GitHub
if: always() && github.event_name == 'pull_request'
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4
with:
- name: all-blob-reports
- path: ${{ inputs.report_dir }}
+ name: blob-report-${{ inputs.job_name }}
+ path: ${{ inputs.report_dir }}/**
retention-days: 7
- name: Write triggering pull request number in a file
if: always() && github.event_name == 'pull_request'
@@ -22,7 +27,7 @@ runs:
run: echo '${{ github.event.number }}' > pull_request_number.txt;
- name: Upload artifact with the pull request number
if: always() && github.event_name == 'pull_request'
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4
with:
- name: pull-request
- path: pull_request_number.txt
+ name: pull-request-${{ inputs.job_name }}
+ path: pull_request_number.txt
\ No newline at end of file
diff --git a/.github/workflows/cherry_pick_into_release_branch.yml b/.github/workflows/cherry_pick_into_release_branch.yml
index c326509e35..6350d7ea0d 100644
--- a/.github/workflows/cherry_pick_into_release_branch.yml
+++ b/.github/workflows/cherry_pick_into_release_branch.yml
@@ -23,7 +23,7 @@ jobs:
echo "Version is not a two digit semver version"
exit 1
fi
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
with:
ref: release-${{ github.event.inputs.version }}
fetch-depth: 0
diff --git a/.github/workflows/create_test_report.yml b/.github/workflows/create_test_report.yml
index 7359f332d8..bc31bf7623 100644
--- a/.github/workflows/create_test_report.yml
+++ b/.github/workflows/create_test_report.yml
@@ -12,8 +12,8 @@ jobs:
if: ${{ github.event.workflow_run.event == 'pull_request' }}
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: 18
@@ -26,8 +26,8 @@ jobs:
- name: Download blob report artifact
uses: ./.github/actions/download-artifact
with:
- name: all-blob-reports
- path: all-blob-reports
+ namePrefix: 'blob-report'
+ path: 'all-blob-reports'
- name: Merge reports
run: |
@@ -49,8 +49,8 @@ jobs:
- name: Read pull request number
uses: ./.github/actions/download-artifact
with:
- name: 'pull-request'
- path: './'
+ namePrefix: 'pull-request'
+ path: '.'
- name: Comment on PR
uses: actions/github-script@v6
diff --git a/.github/workflows/infra.yml b/.github/workflows/infra.yml
index d3a3fa0030..3580ecc97a 100644
--- a/.github/workflows/infra.yml
+++ b/.github/workflows/infra.yml
@@ -18,8 +18,8 @@ jobs:
name: "docs & lint"
runs-on: ubuntu-20.04
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: 18
- run: npm ci
@@ -40,8 +40,8 @@ jobs:
name: "Lint snippets"
runs-on: ubuntu-22.04
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: 18
- uses: actions/setup-python@v4
diff --git a/.github/workflows/pr_check_client_side_changes.yml b/.github/workflows/pr_check_client_side_changes.yml
index 4ec7b16827..c048bc3ca0 100644
--- a/.github/workflows/pr_check_client_side_changes.yml
+++ b/.github/workflows/pr_check_client_side_changes.yml
@@ -4,9 +4,11 @@ on:
branches:
- main
paths:
+ - 'docs/src/api/**/*'
- 'packages/playwright-core/src/client/**/*'
- 'packages/playwright-core/src/utils/isomorphic/**/*'
- 'packages/playwright/src/matchers/matchers.ts'
+ - 'packages/protocol/src/protocol.yml'
jobs:
check:
name: Check
diff --git a/.github/workflows/publish_canary.yml b/.github/workflows/publish_canary.yml
index 4ff33481de..6c9eb046e0 100644
--- a/.github/workflows/publish_canary.yml
+++ b/.github/workflows/publish_canary.yml
@@ -13,15 +13,15 @@ env:
jobs:
publish-canary:
- name: "publish canary NPM & Publish canary Docker"
+ name: "publish canary NPM"
runs-on: ubuntu-20.04
if: github.repository == 'microsoft/playwright'
permissions:
contents: read
id-token: write
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: 18
registry-url: 'https://registry.npmjs.org'
@@ -57,25 +57,14 @@ jobs:
run: |
utils/build/build-playwright-driver.sh
utils/build/upload-playwright-driver.sh
- - uses: azure/docker-login@v1
- with:
- login-server: playwright.azurecr.io
- username: playwright
- password: ${{ secrets.DOCKER_PASSWORD }}
- - name: Set up Docker QEMU for arm64 docker builds
- uses: docker/setup-qemu-action@v2
- with:
- platforms: arm64
- - name: publish docker canary
- run: ./utils/docker/publish_docker.sh canary
publish-trace-viewer:
name: "publish Trace Viewer to trace.playwright.dev"
runs-on: ubuntu-20.04
if: github.repository == 'microsoft/playwright'
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: 18
- name: Deploy Canary
diff --git a/.github/workflows/publish_release_docker.yml b/.github/workflows/publish_release_docker.yml
index 31a361e564..bc836960f1 100644
--- a/.github/workflows/publish_release_docker.yml
+++ b/.github/workflows/publish_release_docker.yml
@@ -17,11 +17,11 @@ env:
jobs:
publish-docker-release:
name: "publish to DockerHub"
- runs-on: ubuntu-20.04
+ runs-on: ubuntu-22.04
if: github.repository == 'microsoft/playwright'
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: 18
registry-url: 'https://registry.npmjs.org'
@@ -31,7 +31,7 @@ jobs:
username: playwright
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Set up Docker QEMU for arm64 docker builds
- uses: docker/setup-qemu-action@v2
+ uses: docker/setup-qemu-action@v3
with:
platforms: arm64
- run: npm ci
diff --git a/.github/workflows/publish_release_driver.yml b/.github/workflows/publish_release_driver.yml
index 56c9201bcd..61524f9cd2 100644
--- a/.github/workflows/publish_release_driver.yml
+++ b/.github/workflows/publish_release_driver.yml
@@ -13,8 +13,8 @@ jobs:
runs-on: ubuntu-20.04
if: github.repository == 'microsoft/playwright'
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: 18
registry-url: 'https://registry.npmjs.org'
diff --git a/.github/workflows/publish_release_npm.yml b/.github/workflows/publish_release_npm.yml
index 68c4e27630..3b92a01b14 100644
--- a/.github/workflows/publish_release_npm.yml
+++ b/.github/workflows/publish_release_npm.yml
@@ -16,8 +16,8 @@ jobs:
contents: read
id-token: write
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: 18
registry-url: 'https://registry.npmjs.org'
diff --git a/.github/workflows/publish_release_traceviewer.yml b/.github/workflows/publish_release_traceviewer.yml
index 0d41425774..60af5442e9 100644
--- a/.github/workflows/publish_release_traceviewer.yml
+++ b/.github/workflows/publish_release_traceviewer.yml
@@ -10,8 +10,8 @@ jobs:
runs-on: ubuntu-20.04
if: github.repository == 'microsoft/playwright'
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: 18
- name: Deploy Stable
diff --git a/.github/workflows/roll_browser_into_playwright.yml b/.github/workflows/roll_browser_into_playwright.yml
index c474f848df..69dba0804d 100644
--- a/.github/workflows/roll_browser_into_playwright.yml
+++ b/.github/workflows/roll_browser_into_playwright.yml
@@ -7,12 +7,15 @@ on:
env:
ELECTRON_SKIP_BINARY_DOWNLOAD: 1
+permissions:
+ contents: write
+
jobs:
roll:
runs-on: ubuntu-20.04
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: 18
- run: npm ci
diff --git a/.github/workflows/roll_driver_nodejs.yml b/.github/workflows/roll_driver_nodejs.yml
index bef065ca71..7a58f1ee2f 100644
--- a/.github/workflows/roll_driver_nodejs.yml
+++ b/.github/workflows/roll_driver_nodejs.yml
@@ -10,8 +10,8 @@ jobs:
runs-on: ubuntu-22.04
if: github.repository == 'microsoft/playwright'
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: 18
- run: node utils/build/update-playwright-driver-version.mjs
diff --git a/.github/workflows/tests_components.yml b/.github/workflows/tests_components.yml
index 2bed064f83..7291729220 100644
--- a/.github/workflows/tests_components.yml
+++ b/.github/workflows/tests_components.yml
@@ -32,8 +32,8 @@ jobs:
node-version: 20
runs-on: ${{ matrix.os }}
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- run: npm ci
diff --git a/.github/workflows/tests_electron.yml b/.github/workflows/tests_electron.yml
index 193c82f71f..4427cc5e9c 100644
--- a/.github/workflows/tests_electron.yml
+++ b/.github/workflows/tests_electron.yml
@@ -28,8 +28,8 @@ jobs:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: 18
- run: npm ci
diff --git a/.github/workflows/tests_primary.yml b/.github/workflows/tests_primary.yml
index 86365a6345..0ad4b68294 100644
--- a/.github/workflows/tests_primary.yml
+++ b/.github/workflows/tests_primary.yml
@@ -42,9 +42,11 @@ jobs:
node-version: 20
browser: chromium
runs-on: ${{ matrix.os }}
+ env:
+ PWTEST_BOT_NAME: "${{ matrix.browser }}-${{ matrix.os }}-node${{ matrix.node-version }}"
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- run: npm ci
@@ -54,8 +56,6 @@ jobs:
- run: npm run build
- run: npx playwright install --with-deps ${{ matrix.browser }} chromium
- run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- npm run test -- --project=${{ matrix.browser }}
- env:
- PWTEST_BLOB_REPORT_NAME: "${{ matrix.browser }}-${{ matrix.os }}-node${{ matrix.node-version }}"
- run: node tests/config/checkCoverage.js ${{ matrix.browser }}
- run: ./utils/upload_flakiness_dashboard.sh ./test-results/report.json
if: always()
@@ -65,6 +65,7 @@ jobs:
uses: ./.github/actions/upload-blob-report
with:
report_dir: blob-report
+ job_name: ${{ env.PWTEST_BOT_NAME }}
test_linux_chromium_tot:
name: ${{ matrix.os }} (chromium tip-of-tree)
@@ -73,9 +74,11 @@ jobs:
matrix:
os: [ubuntu-20.04]
runs-on: ${{ matrix.os }}
+ env:
+ PWTEST_BOT_NAME: "${{ matrix.os }}-chromium-tip-of-tree"
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: 18
- run: npm ci
@@ -87,7 +90,7 @@ jobs:
- run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- npm run test -- --project=chromium
env:
PWTEST_CHANNEL: chromium-tip-of-tree
- PWTEST_BLOB_REPORT_NAME: "${{ matrix.os }}-chromium-tip-of-tree"
+ PWTEST_BOT_NAME: "${{ matrix.os }}-chromium-tip-of-tree"
- run: ./utils/upload_flakiness_dashboard.sh ./test-results/report.json
if: always()
shell: bash
@@ -96,6 +99,7 @@ jobs:
uses: ./.github/actions/upload-blob-report
with:
report_dir: blob-report
+ job_name: ${{ env.PWTEST_BOT_NAME }}
test_test_runner:
name: Test Runner
@@ -104,24 +108,31 @@ jobs:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
node-version: [18]
- shard: [1/2, 2/2]
+ shardIndex: [1, 2]
+ shardTotal: [2]
include:
- os: ubuntu-latest
node-version: 16
- shard: 1/2
+ shardIndex: 1
+ shardTotal: 2
- os: ubuntu-latest
node-version: 16
- shard: 2/2
+ shardIndex: 2
+ shardTotal: 2
- os: ubuntu-latest
node-version: 20
- shard: 1/2
+ shardIndex: 1
+ shardTotal: 2
- os: ubuntu-latest
node-version: 20
- shard: 2/2
+ shardIndex: 2
+ shardTotal: 2
runs-on: ${{ matrix.os }}
+ env:
+ PWTEST_BOT_NAME: "${{ matrix.os }}-node${{ matrix.node-version }}-${{ matrix.shardIndex }}"
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: ${{matrix.node-version}}
- run: npm ci
@@ -129,13 +140,9 @@ jobs:
DEBUG: pw:install
- run: npm run build
- run: npx playwright install --with-deps
- - run: npm run ttest -- --shard ${{ matrix.shard }}
- env:
- PWTEST_BLOB_REPORT_NAME: "${{ matrix.os }}-node${{ matrix.node-version }}"
+ - run: npm run ttest -- --shard ${{ matrix.shardIndex }}/${{ matrix.shardTotal }}
if: matrix.os != 'ubuntu-latest'
- - run: xvfb-run npm run ttest -- --shard ${{ matrix.shard }}
- env:
- PWTEST_BLOB_REPORT_NAME: "${{ matrix.os }}-node${{ matrix.node-version }}"
+ - run: xvfb-run npm run ttest -- --shard ${{ matrix.shardIndex }}/${{ matrix.shardTotal }}
if: matrix.os == 'ubuntu-latest'
- run: ./utils/upload_flakiness_dashboard.sh ./test-results/report.json
if: always()
@@ -145,13 +152,14 @@ jobs:
uses: ./.github/actions/upload-blob-report
with:
report_dir: blob-report
+ job_name: ${{ env.PWTEST_BOT_NAME }}
test_web_components:
name: Web Components
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: 18
- run: npm ci
@@ -162,29 +170,33 @@ jobs:
- run: npx playwright install --with-deps
- run: npm run test-html-reporter
env:
- PWTEST_BLOB_REPORT_NAME: "web-components-html-reporter"
+ PWTEST_BOT_NAME: "web-components-html-reporter"
- name: Upload blob report
if: always()
uses: ./.github/actions/upload-blob-report
with:
report_dir: packages/html-reporter/blob-report
+ job_name: "web-components-html-reporter"
- run: npm run test-web
if: always()
env:
- PWTEST_BLOB_REPORT_NAME: "web-components-web"
+ PWTEST_BOT_NAME: "web-components-web"
- name: Upload blob report
if: always()
uses: ./.github/actions/upload-blob-report
with:
report_dir: packages/web/blob-report
+ job_name: "web-components-web"
test_vscode_extension:
name: VSCode Extension
runs-on: ubuntu-latest
+ env:
+ PWTEST_BOT_NAME: "vscode-extension"
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: 18
- run: npm ci
@@ -205,18 +217,16 @@ jobs:
working-directory: ./playwright-vscode
- name: Run extension tests
run: npm run test -- --workers=1
- env:
- PWTEST_BLOB_REPORT_NAME: "vscode-extension"
working-directory: ./playwright-vscode
- name: Upload blob report
if: always()
uses: ./.github/actions/upload-blob-report
with:
- report_dir: ./playwright-vscode/blob-report
+ report_dir: playwright-vscode/blob-report
+ job_name: ${{ env.PWTEST_BOT_NAME }}
test_package_installations:
name: "Installation Test ${{ matrix.os }}"
- runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
@@ -224,10 +234,13 @@ jobs:
- ubuntu-latest
- macos-latest
- windows-latest
+ runs-on: ${{ matrix.os }}
timeout-minutes: 30
+ env:
+ PWTEST_BOT_NAME: "package-installations-${{ matrix.os }}"
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: 18
- run: npm ci
@@ -239,12 +252,8 @@ jobs:
- run: npm install -g pnpm@8
- run: npm run itest
if: matrix.os != 'ubuntu-latest'
- env:
- PWTEST_BLOB_REPORT_NAME: "package-installations-${{ matrix.os }}"
- run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- npm run itest
if: matrix.os == 'ubuntu-latest'
- env:
- PWTEST_BLOB_REPORT_NAME: "package-installations-${{ matrix.os }}"
- run: ./utils/upload_flakiness_dashboard.sh ./test-results/report.json
if: always()
shell: bash
@@ -253,3 +262,4 @@ jobs:
uses: ./.github/actions/upload-blob-report
with:
report_dir: blob-report
+ job_name: ${{ env.PWTEST_BOT_NAME }}
diff --git a/.github/workflows/tests_secondary.yml b/.github/workflows/tests_secondary.yml
index 61429074c2..816bf5c3f9 100644
--- a/.github/workflows/tests_secondary.yml
+++ b/.github/workflows/tests_secondary.yml
@@ -29,9 +29,11 @@ jobs:
browser: [chromium, firefox, webkit]
os: [ubuntu-20.04]
runs-on: ${{ matrix.os }}
+ env:
+ PWTEST_BOT_NAME: "${{ matrix.browser }}-${{ matrix.os }}"
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: 18
- run: npm ci
@@ -41,8 +43,6 @@ jobs:
- run: npm run build
- run: npx playwright install --with-deps ${{ matrix.browser }} chromium
- run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- npm run test -- --project=${{ matrix.browser }}
- env:
- PWTEST_BLOB_REPORT_NAME: "${{ matrix.browser }}-${{ matrix.os }}"
- run: node tests/config/checkCoverage.js ${{ matrix.browser }}
- run: ./utils/upload_flakiness_dashboard.sh ./test-results/report.json
if: always()
@@ -52,18 +52,21 @@ jobs:
uses: ./.github/actions/upload-blob-report
with:
report_dir: blob-report
+ job_name: ${{ env.PWTEST_BOT_NAME }}
test_mac:
name: ${{ matrix.os }} (${{ matrix.browser }})
strategy:
fail-fast: false
matrix:
- os: [macos-12, macos-13]
+ os: [macos-12, macos-13, macos-14]
browser: [chromium, firefox, webkit]
runs-on: ${{ matrix.os }}
+ env:
+ PWTEST_BOT_NAME: "${{ matrix.browser }}-${{ matrix.os }}"
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: 18
- run: npm ci
@@ -73,8 +76,6 @@ jobs:
- run: npm run build
- run: npx playwright install --with-deps ${{ matrix.browser }} chromium
- run: npm run test -- --project=${{ matrix.browser }}
- env:
- PWTEST_BLOB_REPORT_NAME: "${{ matrix.browser }}-${{ matrix.os }}"
- run: ./utils/upload_flakiness_dashboard.sh ./test-results/report.json
if: always()
shell: bash
@@ -83,6 +84,7 @@ jobs:
uses: ./.github/actions/upload-blob-report
with:
report_dir: blob-report
+ job_name: ${{ env.PWTEST_BOT_NAME }}
test_win:
name: "Windows"
@@ -91,9 +93,11 @@ jobs:
matrix:
browser: [chromium, firefox, webkit]
runs-on: windows-latest
+ env:
+ PWTEST_BOT_NAME: "${{ matrix.browser }}-windows-latest"
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: 18
- run: npm ci
@@ -105,13 +109,9 @@ jobs:
- run: npm run test -- --project=${{ matrix.browser }} --workers=1
if: matrix.browser == 'firefox'
shell: bash
- env:
- PWTEST_BLOB_REPORT_NAME: "${{ matrix.browser }}-windows-latest"
- run: npm run test -- --project=${{ matrix.browser }}
if: matrix.browser != 'firefox'
shell: bash
- env:
- PWTEST_BLOB_REPORT_NAME: "${{ matrix.browser }}-windows-latest"
- run: ./utils/upload_flakiness_dashboard.sh ./test-results/report.json
if: always()
shell: bash
@@ -120,6 +120,7 @@ jobs:
uses: ./.github/actions/upload-blob-report
with:
report_dir: blob-report
+ job_name: ${{ env.PWTEST_BOT_NAME }}
test-package-installations-other-node-versions:
name: "Installation Test ${{ matrix.os }} (${{ matrix.node_version }})"
@@ -134,8 +135,8 @@ jobs:
node_version: 20
timeout-minutes: 30
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node_version }}
- run: npm ci
@@ -161,9 +162,11 @@ jobs:
browser: [chromium, firefox, webkit]
os: [ubuntu-20.04, ubuntu-22.04, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
+ env:
+ PWTEST_BOT_NAME: "${{ matrix.browser }}-headed-${{ matrix.os }}"
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: 18
- run: npm ci
@@ -174,12 +177,8 @@ jobs:
- run: npx playwright install --with-deps ${{ matrix.browser }} chromium
- run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- npm run test -- --project=${{ matrix.browser }} --headed
if: always() && startsWith(matrix.os, 'ubuntu-')
- env:
- PWTEST_BLOB_REPORT_NAME: "${{ matrix.browser }}-headed-${{ matrix.os }}"
- run: npm run test -- --project=${{ matrix.browser }} --headed
if: always() && !startsWith(matrix.os, 'ubuntu-')
- env:
- PWTEST_BLOB_REPORT_NAME: "${{ matrix.browser }}-headed-${{ matrix.os }}"
- run: ./utils/upload_flakiness_dashboard.sh ./test-results/report.json
if: always()
shell: bash
@@ -188,6 +187,7 @@ jobs:
uses: ./.github/actions/upload-blob-report
with:
report_dir: blob-report
+ job_name: ${{ env.PWTEST_BOT_NAME }}
transport_linux:
name: "Transport"
@@ -196,9 +196,11 @@ jobs:
matrix:
mode: [driver, service]
runs-on: ubuntu-20.04
+ env:
+ PWTEST_BOT_NAME: "${{ matrix.mode }}"
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: 18
- run: npm ci
@@ -210,7 +212,6 @@ jobs:
- run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- npm run ctest
env:
PWTEST_MODE: ${{ matrix.mode }}
- PWTEST_BLOB_REPORT_NAME: "${{ matrix.mode }}"
- run: ./utils/upload_flakiness_dashboard.sh ./test-results/report.json
if: always()
shell: bash
@@ -219,6 +220,7 @@ jobs:
uses: ./.github/actions/upload-blob-report
with:
report_dir: blob-report
+ job_name: ${{ env.PWTEST_BOT_NAME }}
tracing_linux:
name: Tracing ${{ matrix.browser }} ${{ matrix.channel }}
@@ -232,9 +234,11 @@ jobs:
- browser: chromium
channel: chromium-tip-of-tree
runs-on: ubuntu-20.04
+ env:
+ PWTEST_BOT_NAME: "tracing-${{ matrix.channel || matrix.browser }}"
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: 18
- run: npm ci
@@ -247,7 +251,6 @@ jobs:
env:
PWTEST_TRACE: 1
PWTEST_CHANNEL: ${{ matrix.channel }}
- PWTEST_BLOB_REPORT_NAME: "tracing-${{ matrix.channel || matrix.browser }}"
- run: ./utils/upload_flakiness_dashboard.sh ./test-results/report.json
if: always()
shell: bash
@@ -256,13 +259,16 @@ jobs:
uses: ./.github/actions/upload-blob-report
with:
report_dir: blob-report
+ job_name: ${{ env.PWTEST_BOT_NAME }}
chrome_stable_linux:
name: "Chrome Stable (Linux)"
runs-on: ubuntu-20.04
+ env:
+ PWTEST_BOT_NAME: "chrome-stable-linux"
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: 18
- run: npm ci
@@ -273,7 +279,6 @@ jobs:
- run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- npm run ctest
env:
PWTEST_CHANNEL: chrome
- PWTEST_BLOB_REPORT_NAME: "chrome-stable-linux"
- run: ./utils/upload_flakiness_dashboard.sh ./test-results/report.json
if: always()
shell: bash
@@ -282,13 +287,16 @@ jobs:
uses: ./.github/actions/upload-blob-report
with:
report_dir: blob-report
+ job_name: ${{ env.PWTEST_BOT_NAME }}
chrome_stable_win:
name: "Chrome Stable (Win)"
runs-on: windows-latest
+ env:
+ PWTEST_BOT_NAME: "chrome-stable-windows"
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: 18
- run: npm ci
@@ -300,7 +308,6 @@ jobs:
shell: bash
env:
PWTEST_CHANNEL: chrome
- PWTEST_BLOB_REPORT_NAME: "chrome-stable-windows"
- run: ./utils/upload_flakiness_dashboard.sh ./test-results/report.json
if: always()
shell: bash
@@ -309,13 +316,16 @@ jobs:
uses: ./.github/actions/upload-blob-report
with:
report_dir: blob-report
+ job_name: ${{ env.PWTEST_BOT_NAME }}
chrome_stable_mac:
name: "Chrome Stable (Mac)"
runs-on: macos-latest
+ env:
+ PWTEST_BOT_NAME: "chrome-stable-mac"
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: 18
- run: npm ci
@@ -326,7 +336,6 @@ jobs:
- run: npm run ctest
env:
PWTEST_CHANNEL: chrome
- PWTEST_BLOB_REPORT_NAME: "chrome-stable-mac"
- run: ./utils/upload_flakiness_dashboard.sh ./test-results/report.json
if: always()
shell: bash
@@ -335,17 +344,21 @@ jobs:
uses: ./.github/actions/upload-blob-report
with:
report_dir: blob-report
+ job_name: ${{ env.PWTEST_BOT_NAME }}
chromium_tot:
name: Chromium TOT ${{ matrix.os }}
runs-on: ${{ matrix.os }}
+ env:
+ PWTEST_CHANNEL: chromium-tip-of-tree
+ PWTEST_BOT_NAME: "tip-of-tree-${{ matrix.os }}"
strategy:
fail-fast: false
matrix:
os: [ubuntu-20.04, macos-12, windows-latest]
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: 18
- run: npm ci
@@ -355,14 +368,8 @@ jobs:
- run: npx playwright install --with-deps chromium-tip-of-tree
- run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- npm run ctest
if: matrix.os == 'ubuntu-20.04'
- env:
- PWTEST_CHANNEL: chromium-tip-of-tree
- PWTEST_BLOB_REPORT_NAME: "tip-of-tree-${{ matrix.os }}"
- run: npm run ctest
if: matrix.os != 'ubuntu-20.04'
- env:
- PWTEST_CHANNEL: chromium-tip-of-tree
- PWTEST_BLOB_REPORT_NAME: "tip-of-tree-${{ matrix.os }}"
- run: ./utils/upload_flakiness_dashboard.sh ./test-results/report.json
if: always()
shell: bash
@@ -371,17 +378,21 @@ jobs:
uses: ./.github/actions/upload-blob-report
with:
report_dir: blob-report
+ job_name: ${{ env.PWTEST_BOT_NAME }}
chromium_tot_headed:
name: Chromium TOT headed ${{ matrix.os }}
runs-on: ${{ matrix.os }}
+ env:
+ PWTEST_CHANNEL: chromium-tip-of-tree
+ PWTEST_BOT_NAME: "tip-of-tree-headed-${{ matrix.os }}"
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: 18
- run: npm ci
@@ -391,14 +402,8 @@ jobs:
- run: npx playwright install --with-deps chromium-tip-of-tree
- run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- npm run ctest -- --headed
if: matrix.os == 'ubuntu-latest'
- env:
- PWTEST_CHANNEL: chromium-tip-of-tree
- PWTEST_BLOB_REPORT_NAME: "tip-of-tree-headed-${{ matrix.os }}"
- run: npm run ctest -- --headed
if: matrix.os != 'ubuntu-latest'
- env:
- PWTEST_CHANNEL: chromium-tip-of-tree
- PWTEST_BLOB_REPORT_NAME: "tip-of-tree-headed-${{ matrix.os }}"
- run: ./utils/upload_flakiness_dashboard.sh ./test-results/report.json
if: always()
shell: bash
@@ -407,13 +412,16 @@ jobs:
uses: ./.github/actions/upload-blob-report
with:
report_dir: blob-report
+ job_name: ${{ env.PWTEST_BOT_NAME }}
firefox_beta_linux:
name: "Firefox Beta (Linux)"
runs-on: ubuntu-20.04
+ env:
+ PWTEST_BOT_NAME: "firefox-beta-linux"
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: 18
- run: npm ci
@@ -424,7 +432,6 @@ jobs:
- run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- npm run ftest
env:
PWTEST_CHANNEL: firefox-beta
- PWTEST_BLOB_REPORT_NAME: "firefox-beta-linux"
- run: ./utils/upload_flakiness_dashboard.sh ./test-results/report.json
if: always()
shell: bash
@@ -433,13 +440,16 @@ jobs:
uses: ./.github/actions/upload-blob-report
with:
report_dir: blob-report
+ job_name: ${{ env.PWTEST_BOT_NAME }}
firefox_beta_win:
name: "Firefox Beta (Win)"
runs-on: windows-latest
+ env:
+ PWTEST_BOT_NAME: "firefox-beta-windows"
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: 18
- run: npm ci
@@ -451,7 +461,6 @@ jobs:
shell: bash
env:
PWTEST_CHANNEL: firefox-beta
- PWTEST_BLOB_REPORT_NAME: "firefox-beta-windows"
- run: ./utils/upload_flakiness_dashboard.sh ./test-results/report.json
if: always()
shell: bash
@@ -460,13 +469,16 @@ jobs:
uses: ./.github/actions/upload-blob-report
with:
report_dir: blob-report
+ job_name: ${{ env.PWTEST_BOT_NAME }}
firefox_beta_mac:
name: "Firefox Beta (Mac)"
runs-on: macos-latest
+ env:
+ PWTEST_BOT_NAME: "firefox-beta-mac"
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: 18
- run: npm ci
@@ -477,7 +489,6 @@ jobs:
- run: npm run ftest
env:
PWTEST_CHANNEL: firefox-beta
- PWTEST_BLOB_REPORT_NAME: "firefox-beta-mac"
- run: ./utils/upload_flakiness_dashboard.sh ./test-results/report.json
if: always()
shell: bash
@@ -486,13 +497,16 @@ jobs:
uses: ./.github/actions/upload-blob-report
with:
report_dir: blob-report
+ job_name: ${{ env.PWTEST_BOT_NAME }}
edge_stable_mac:
name: "Edge Stable (Mac)"
runs-on: macos-latest
+ env:
+ PWTEST_BOT_NAME: "edge-stable-mac"
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: 18
- run: npm ci
@@ -503,7 +517,6 @@ jobs:
- run: npm run ctest
env:
PWTEST_CHANNEL: msedge
- PWTEST_BLOB_REPORT_NAME: "edge-stable-mac"
- run: ./utils/upload_flakiness_dashboard.sh ./test-results/report.json
if: always()
shell: bash
@@ -512,13 +525,16 @@ jobs:
uses: ./.github/actions/upload-blob-report
with:
report_dir: blob-report
+ job_name: ${{ env.PWTEST_BOT_NAME }}
edge_stable_win:
name: "Edge Stable (Win)"
runs-on: windows-latest
+ env:
+ PWTEST_BOT_NAME: "edge-stable-windows"
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: 18
- run: npm ci
@@ -530,7 +546,6 @@ jobs:
shell: bash
env:
PWTEST_CHANNEL: msedge
- PWTEST_BLOB_REPORT_NAME: "edge-stable-windows"
- run: ./utils/upload_flakiness_dashboard.sh ./test-results/report.json
if: always()
shell: bash
@@ -539,13 +554,16 @@ jobs:
uses: ./.github/actions/upload-blob-report
with:
report_dir: blob-report
+ job_name: ${{ env.PWTEST_BOT_NAME }}
edge_stable_linux:
name: "Edge Stable (Linux)"
runs-on: ubuntu-20.04
+ env:
+ PWTEST_BOT_NAME: "edge-stable-linux"
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: 18
- run: npm ci
@@ -556,7 +574,6 @@ jobs:
- run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- npm run ctest
env:
PWTEST_CHANNEL: msedge
- PWTEST_BLOB_REPORT_NAME: "edge-stable-linux"
- run: ./utils/upload_flakiness_dashboard.sh ./test-results/report.json
if: always()
shell: bash
@@ -565,13 +582,16 @@ jobs:
uses: ./.github/actions/upload-blob-report
with:
report_dir: blob-report
+ job_name: ${{ env.PWTEST_BOT_NAME }}
edge_beta_mac:
name: "Edge Beta (Mac)"
runs-on: macos-latest
+ env:
+ PWTEST_BOT_NAME: "edge-beta-mac"
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: 18
- run: npm ci
@@ -582,7 +602,6 @@ jobs:
- run: npm run ctest
env:
PWTEST_CHANNEL: msedge-beta
- PWTEST_BLOB_REPORT_NAME: "edge-beta-mac"
- run: ./utils/upload_flakiness_dashboard.sh ./test-results/report.json
if: always()
shell: bash
@@ -591,13 +610,16 @@ jobs:
uses: ./.github/actions/upload-blob-report
with:
report_dir: blob-report
+ job_name: ${{ env.PWTEST_BOT_NAME }}
edge_beta_win:
name: "Edge Beta (Win)"
runs-on: windows-latest
+ env:
+ PWTEST_BOT_NAME: "edge-beta-windows"
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: 18
- run: npm ci
@@ -609,7 +631,6 @@ jobs:
shell: bash
env:
PWTEST_CHANNEL: msedge-beta
- PWTEST_BLOB_REPORT_NAME: "edge-beta-windows"
- run: ./utils/upload_flakiness_dashboard.sh ./test-results/report.json
if: always()
shell: bash
@@ -618,13 +639,16 @@ jobs:
uses: ./.github/actions/upload-blob-report
with:
report_dir: blob-report
+ job_name: ${{ env.PWTEST_BOT_NAME }}
edge_beta_linux:
name: "Edge Beta (Linux)"
runs-on: ubuntu-20.04
+ env:
+ PWTEST_BOT_NAME: "edge-beta-linux"
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: 18
- run: npm ci
@@ -635,7 +659,6 @@ jobs:
- run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- npm run ctest
env:
PWTEST_CHANNEL: msedge-beta
- PWTEST_BLOB_REPORT_NAME: "edge-beta-linux"
- run: ./utils/upload_flakiness_dashboard.sh ./test-results/report.json
if: always()
shell: bash
@@ -644,13 +667,16 @@ jobs:
uses: ./.github/actions/upload-blob-report
with:
report_dir: blob-report
+ job_name: ${{ env.PWTEST_BOT_NAME }}
edge_dev_mac:
name: "Edge Dev (Mac)"
runs-on: macos-latest
+ env:
+ PWTEST_BOT_NAME: "edge-dev-mac"
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: 18
- run: npm ci
@@ -661,7 +687,6 @@ jobs:
- run: npm run ctest
env:
PWTEST_CHANNEL: msedge-dev
- PWTEST_BLOB_REPORT_NAME: "edge-dev-mac"
- run: ./utils/upload_flakiness_dashboard.sh ./test-results/report.json
if: always()
shell: bash
@@ -670,13 +695,16 @@ jobs:
uses: ./.github/actions/upload-blob-report
with:
report_dir: blob-report
+ job_name: ${{ env.PWTEST_BOT_NAME }}
edge_dev_win:
name: "Edge Dev (Win)"
runs-on: windows-latest
+ env:
+ PWTEST_BOT_NAME: "edge-dev-windows"
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: 18
- run: npm ci
@@ -688,7 +716,6 @@ jobs:
shell: bash
env:
PWTEST_CHANNEL: msedge-dev
- PWTEST_BLOB_REPORT_NAME: "edge-dev-windows"
- run: ./utils/upload_flakiness_dashboard.sh ./test-results/report.json
if: always()
shell: bash
@@ -697,13 +724,16 @@ jobs:
uses: ./.github/actions/upload-blob-report
with:
report_dir: blob-report
+ job_name: ${{ env.PWTEST_BOT_NAME }}
edge_dev_linux:
name: "Edge Dev (Linux)"
runs-on: ubuntu-20.04
+ env:
+ PWTEST_BOT_NAME: "edge-dev-linux"
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: 18
- run: npm ci
@@ -714,7 +744,6 @@ jobs:
- run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- npm run ctest
env:
PWTEST_CHANNEL: msedge-dev
- PWTEST_BLOB_REPORT_NAME: "edge-dev-linux"
- run: ./utils/upload_flakiness_dashboard.sh ./test-results/report.json
if: always()
shell: bash
@@ -723,13 +752,16 @@ jobs:
uses: ./.github/actions/upload-blob-report
with:
report_dir: blob-report
+ job_name: ${{ env.PWTEST_BOT_NAME }}
chrome_beta_linux:
name: "Chrome Beta (Linux)"
runs-on: ubuntu-20.04
+ env:
+ PWTEST_BOT_NAME: "chrome-beta-linux"
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: 18
- run: npm ci
@@ -740,7 +772,6 @@ jobs:
- run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- npm run ctest
env:
PWTEST_CHANNEL: chrome-beta
- PWTEST_BLOB_REPORT_NAME: "chrome-beta-linux"
- run: ./utils/upload_flakiness_dashboard.sh ./test-results/report.json
if: always()
shell: bash
@@ -749,13 +780,16 @@ jobs:
uses: ./.github/actions/upload-blob-report
with:
report_dir: blob-report
+ job_name: ${{ env.PWTEST_BOT_NAME }}
chrome_beta_win:
name: "Chrome Beta (Win)"
runs-on: windows-latest
+ env:
+ PWTEST_BOT_NAME: "chrome-beta-windows"
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: 18
- run: npm ci
@@ -767,7 +801,6 @@ jobs:
shell: bash
env:
PWTEST_CHANNEL: chrome-beta
- PWTEST_BLOB_REPORT_NAME: "chrome-beta-windows"
- run: ./utils/upload_flakiness_dashboard.sh ./test-results/report.json
if: always()
shell: bash
@@ -776,13 +809,16 @@ jobs:
uses: ./.github/actions/upload-blob-report
with:
report_dir: blob-report
+ job_name: ${{ env.PWTEST_BOT_NAME }}
chrome_beta_mac:
name: "Chrome Beta (Mac)"
runs-on: macos-latest
+ env:
+ PWTEST_BOT_NAME: "chrome-beta-mac"
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: 18
- run: npm ci
@@ -793,7 +829,6 @@ jobs:
- run: npm run ctest
env:
PWTEST_CHANNEL: chrome-beta
- PWTEST_BLOB_REPORT_NAME: "chrome-beta-mac"
- run: ./utils/upload_flakiness_dashboard.sh ./test-results/report.json
if: always()
shell: bash
@@ -802,13 +837,14 @@ jobs:
uses: ./.github/actions/upload-blob-report
with:
report_dir: blob-report
+ job_name: ${{ env.PWTEST_BOT_NAME }}
build-playwright-driver:
name: "build-playwright-driver"
runs-on: ubuntu-20.04
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: 18
- run: npm ci
@@ -819,9 +855,11 @@ jobs:
test_linux_chromium_headless_new:
name: Linux Chromium Headless New
runs-on: ubuntu-latest
+ env:
+ PWTEST_BOT_NAME: "headless-new"
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: 18
- run: npm ci
@@ -833,7 +871,6 @@ jobs:
- run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- npm run test -- --project=chromium
env:
PLAYWRIGHT_CHROMIUM_USE_HEADLESS_NEW: 1
- PWTEST_BLOB_REPORT_NAME: "headless-new"
- run: node tests/config/checkCoverage.js chromium
- run: ./utils/upload_flakiness_dashboard.sh ./test-results/report.json
if: always()
@@ -843,3 +880,4 @@ jobs:
uses: ./.github/actions/upload-blob-report
with:
report_dir: blob-report
+ job_name: ${{ env.PWTEST_BOT_NAME }}
diff --git a/.github/workflows/tests_service.yml b/.github/workflows/tests_service.yml
index 6450c4c3a1..9c932f38e4 100644
--- a/.github/workflows/tests_service.yml
+++ b/.github/workflows/tests_service.yml
@@ -17,8 +17,8 @@ jobs:
browser: [chromium, firefox, webkit]
runs-on: ubuntu-20.04
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
- run: npm ci
env:
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
@@ -27,7 +27,7 @@ jobs:
env:
PWTEST_MODE: service2
PWTEST_TRACE: 1
- PWTEST_BLOB_REPORT_NAME: "${{ matrix.browser }}-${{ matrix.service-os }}-service"
+ PWTEST_BOT_NAME: "${{ matrix.browser }}-${{ matrix.service-os }}-service"
PLAYWRIGHT_SERVICE_ACCESS_KEY: ${{ secrets.PLAYWRIGHT_SERVICE_ACCESS_KEY }}
PLAYWRIGHT_SERVICE_URL: ${{ secrets.PLAYWRIGHT_SERVICE_URL }}
PLAYWRIGHT_SERVICE_OS: ${{ matrix.service-os }}
@@ -46,8 +46,8 @@ jobs:
if: always()
runs-on: ubuntu-20.04
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
- run: npm ci
env:
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
diff --git a/.github/workflows/tests_stress.yml b/.github/workflows/tests_stress.yml
index 8cfecb8d7c..7c2ce79088 100644
--- a/.github/workflows/tests_stress.yml
+++ b/.github/workflows/tests_stress.yml
@@ -27,8 +27,8 @@ jobs:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: 16
- run: npm ci
@@ -40,13 +40,19 @@ jobs:
if: always()
- run: npm run stest browsers -- --project=chromium
if: always()
+ - run: npm run stest frames -- --project=chromium
+ if: always()
- run: npm run stest contexts -- --project=webkit
if: always()
- run: npm run stest browsers -- --project=webkit
if: always()
+ - run: npm run stest frames -- --project=webkit
+ if: always()
- run: npm run stest contexts -- --project=firefox
if: always()
- run: npm run stest browsers -- --project=firefox
if: always()
+ - run: npm run stest frames -- --project=firefox
+ if: always()
- run: npm run stest heap -- --project=chromium
if: always()
diff --git a/.github/workflows/tests_video.yml b/.github/workflows/tests_video.yml
index 54c97bedca..f39b544f93 100644
--- a/.github/workflows/tests_video.yml
+++ b/.github/workflows/tests_video.yml
@@ -22,8 +22,8 @@ jobs:
os: [ubuntu-20.04, ubuntu-22.04]
runs-on: ${{ matrix.os }}
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: 18
- run: npm ci
diff --git a/.github/workflows/tests_webview2.yml b/.github/workflows/tests_webview2.yml
index 4fd33af5ba..425a7bbc8a 100644
--- a/.github/workflows/tests_webview2.yml
+++ b/.github/workflows/tests_webview2.yml
@@ -25,13 +25,13 @@ jobs:
name: WebView2
runs-on: windows-2022
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
with:
node-version: 18
- - uses: actions/setup-dotnet@v2
+ - uses: actions/setup-dotnet@v3
with:
- dotnet-version: '6.0.x'
+ dotnet-version: '8.0.x'
- run: npm ci
env:
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
diff --git a/.gitignore b/.gitignore
index 0978f13e88..8902876690 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,7 +9,8 @@ node_modules/
.vscode
.idea
yarn.lock
-/packages/playwright-core/src/generated/*
+/packages/playwright-core/src/generated
+/packages/playwright-ct-core/src/generated
packages/*/lib/
drivers/
.android-sdk/
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 81bbff56b6..264793fc2b 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -19,7 +19,7 @@ We strongly recommend that you open an issue before beginning any code modificat
### Getting Code
-Make sure you're running Node.js 16+ and NPM 8+, to verify and upgrade NPM do:
+Make sure you're running Node.js 20 to verify and upgrade NPM do:
```bash
node --version
diff --git a/README.md b/README.md
index 52eae54863..4fffb3be52 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
# 🎭 Playwright
-[](https://www.npmjs.com/package/playwright) [](https://www.chromium.org/Home) [](https://www.mozilla.org/en-US/firefox/new/) [](https://webkit.org/)
+[](https://www.npmjs.com/package/playwright) [](https://www.chromium.org/Home) [](https://www.mozilla.org/en-US/firefox/new/) [](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 120.0.6099.5 | :white_check_mark: | :white_check_mark: | :white_check_mark: |
+| Chromium 122.0.6261.57 | :white_check_mark: | :white_check_mark: | :white_check_mark: |
| WebKit 17.4 | :white_check_mark: | :white_check_mark: | :white_check_mark: |
-| Firefox 118.0.1 | :white_check_mark: | :white_check_mark: | :white_check_mark: |
+| Firefox 122.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/babel.config.json b/babel.config.json
index cb1cad7f3a..3e345f4274 100644
--- a/babel.config.json
+++ b/babel.config.json
@@ -4,11 +4,11 @@
},
"plugins": [
["@babel/plugin-transform-typescript", { "allowDeclareFields": true } ],
- "@babel/plugin-proposal-export-namespace-from",
- "@babel/plugin-proposal-class-properties",
- "@babel/plugin-proposal-logical-assignment-operators",
- "@babel/plugin-proposal-nullish-coalescing-operator",
- "@babel/plugin-proposal-optional-chaining",
+ "@babel/plugin-transform-export-namespace-from",
+ "@babel/plugin-transform-class-properties",
+ "@babel/plugin-transform-logical-assignment-operators",
+ "@babel/plugin-transform-nullish-coalescing-operator",
+ "@babel/plugin-transform-optional-chaining",
"@babel/plugin-transform-modules-commonjs"
],
"ignore": [
diff --git a/browser_patches/firefox/UPSTREAM_CONFIG.sh b/browser_patches/firefox/UPSTREAM_CONFIG.sh
index 55da63f51e..5436a7ef44 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="f5bc1abb4f0841558f7531e0c15a7577d23ed21c"
+BASE_REVISION="7ab3cc0103090dd7bfa02e072a529b9fc784ab4e"
diff --git a/browser_patches/firefox/juggler/Helper.js b/browser_patches/firefox/juggler/Helper.js
index 797acd4627..9572aa37ad 100644
--- a/browser_patches/firefox/juggler/Helper.js
+++ b/browser_patches/firefox/juggler/Helper.js
@@ -3,7 +3,6 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
const uuidGen = Cc["@mozilla.org/uuid-generator;1"].getService(Ci.nsIUUIDGenerator);
-const {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm");
class Helper {
decorateAsEventEmitter(objectToDecorate) {
diff --git a/browser_patches/firefox/juggler/NetworkObserver.js b/browser_patches/firefox/juggler/NetworkObserver.js
index c21c9effbe..b0413d2e2c 100644
--- a/browser_patches/firefox/juggler/NetworkObserver.js
+++ b/browser_patches/firefox/juggler/NetworkObserver.js
@@ -5,7 +5,6 @@
"use strict";
const {Helper} = ChromeUtils.import('chrome://juggler/content/Helper.js');
-const {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm");
const {NetUtil} = ChromeUtils.import('resource://gre/modules/NetUtil.jsm');
const { ChannelEventSinkFactory } = ChromeUtils.import("chrome://remote/content/cdp/observers/ChannelEventSink.jsm");
@@ -232,8 +231,12 @@ class NetworkRequest {
this._expectingResumedRequest = undefined;
if (headers) {
- for (const header of requestHeaders(this.httpChannel))
+ for (const header of requestHeaders(this.httpChannel)) {
+ // We cannot remove the "host" header.
+ if (header.name.toLowerCase() === 'host')
+ continue;
this.httpChannel.setRequestHeader(header.name, '', false /* merge */);
+ }
for (const header of headers)
this.httpChannel.setRequestHeader(header.name, header.value, false /* merge */);
} else if (this._pageNetwork) {
diff --git a/browser_patches/firefox/juggler/TargetRegistry.js b/browser_patches/firefox/juggler/TargetRegistry.js
index 479d04d144..25be3c67af 100644
--- a/browser_patches/firefox/juggler/TargetRegistry.js
+++ b/browser_patches/firefox/juggler/TargetRegistry.js
@@ -4,7 +4,6 @@
const {Helper} = ChromeUtils.import('chrome://juggler/content/Helper.js');
const {SimpleChannel} = ChromeUtils.import('chrome://juggler/content/SimpleChannel.js');
-const {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm");
const {Preferences} = ChromeUtils.import("resource://gre/modules/Preferences.jsm");
const {ContextualIdentityService} = ChromeUtils.import("resource://gre/modules/ContextualIdentityService.jsm");
const {NetUtil} = ChromeUtils.import('resource://gre/modules/NetUtil.jsm');
diff --git a/browser_patches/firefox/juggler/components/Juggler.js b/browser_patches/firefox/juggler/components/Juggler.js
index a3740acc45..d919935fb5 100644
--- a/browser_patches/firefox/juggler/components/Juggler.js
+++ b/browser_patches/firefox/juggler/components/Juggler.js
@@ -6,7 +6,6 @@ var EXPORTED_SYMBOLS = ["Juggler", "JugglerFactory"];
const {XPCOMUtils} = ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
const {ComponentUtils} = ChromeUtils.import("resource://gre/modules/ComponentUtils.jsm");
-const {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm");
const {Dispatcher} = ChromeUtils.import("chrome://juggler/content/protocol/Dispatcher.js");
const {BrowserHandler} = ChromeUtils.import("chrome://juggler/content/protocol/BrowserHandler.js");
const {NetworkObserver} = ChromeUtils.import("chrome://juggler/content/NetworkObserver.js");
diff --git a/browser_patches/firefox/juggler/content/JugglerFrameChild.jsm b/browser_patches/firefox/juggler/content/JugglerFrameChild.jsm
index 80b532c6b9..529f6d3b58 100644
--- a/browser_patches/firefox/juggler/content/JugglerFrameChild.jsm
+++ b/browser_patches/firefox/juggler/content/JugglerFrameChild.jsm
@@ -1,7 +1,6 @@
"use strict";
const { Helper } = ChromeUtils.import('chrome://juggler/content/Helper.js');
-const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
const { initialize } = ChromeUtils.import('chrome://juggler/content/content/main.js');
const Ci = Components.interfaces;
diff --git a/browser_patches/firefox/juggler/content/PageAgent.js b/browser_patches/firefox/juggler/content/PageAgent.js
index f3a3e745c2..614d5b5101 100644
--- a/browser_patches/firefox/juggler/content/PageAgent.js
+++ b/browser_patches/firefox/juggler/content/PageAgent.js
@@ -3,7 +3,6 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
"use strict";
-const {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm");
const Ci = Components.interfaces;
const Cr = Components.results;
@@ -462,6 +461,10 @@ class PageAgent {
}
async _dispatchKeyEvent({type, keyCode, code, key, repeat, location, text}) {
+ if (code === 'OSLeft')
+ code = 'MetaLeft';
+ else if (code === 'OSRight')
+ code = 'MetaRight';
const frame = this._frameTree.mainFrame();
const tip = frame.textInputProcessor();
if (key === 'Meta' && Services.appinfo.OS !== 'Darwin')
diff --git a/browser_patches/firefox/juggler/content/Runtime.js b/browser_patches/firefox/juggler/content/Runtime.js
index 3a132ae542..a5fa7a03dd 100644
--- a/browser_patches/firefox/juggler/content/Runtime.js
+++ b/browser_patches/firefox/juggler/content/Runtime.js
@@ -63,7 +63,6 @@ class Runtime {
if (isWorker) {
this._registerWorkerConsoleHandler();
} else {
- const {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm");
this._registerConsoleServiceListener(Services);
this._registerConsoleAPIListener(Services);
}
@@ -240,8 +239,8 @@ class Runtime {
return {success: true, obj: obj.promiseValue};
if (obj.promiseState === 'rejected') {
const debuggee = executionContext._debuggee;
- exceptionDetails.text = debuggee.executeInGlobalWithBindings('e.message', {e: obj.promiseReason}).return;
- exceptionDetails.stack = debuggee.executeInGlobalWithBindings('e.stack', {e: obj.promiseReason}).return;
+ exceptionDetails.text = debuggee.executeInGlobalWithBindings('e.message', {e: obj.promiseReason}, {useInnerBindings: true}).return;
+ exceptionDetails.stack = debuggee.executeInGlobalWithBindings('e.stack', {e: obj.promiseReason}, {useInnerBindings: true}).return;
return {success: false, obj: null};
}
let resolve, reject;
@@ -268,8 +267,8 @@ class Runtime {
return;
};
const debuggee = pendingPromise.executionContext._debuggee;
- pendingPromise.exceptionDetails.text = debuggee.executeInGlobalWithBindings('e.message', {e: obj.promiseReason}).return;
- pendingPromise.exceptionDetails.stack = debuggee.executeInGlobalWithBindings('e.stack', {e: obj.promiseReason}).return;
+ pendingPromise.exceptionDetails.text = debuggee.executeInGlobalWithBindings('e.message', {e: obj.promiseReason}, {useInnerBindings: true}).return;
+ pendingPromise.exceptionDetails.stack = debuggee.executeInGlobalWithBindings('e.stack', {e: obj.promiseReason}, {useInnerBindings: true}).return;
pendingPromise.resolve({success: false, obj: null});
}
@@ -442,7 +441,7 @@ class ExecutionContext {
_instanceOf(debuggerObj, rawObj, className) {
if (this._domWindow)
return rawObj instanceof this._domWindow[className];
- return this._debuggee.executeInGlobalWithBindings('o instanceof this[className]', {o: debuggerObj, className: this._debuggee.makeDebuggeeValue(className)}).return;
+ return this._debuggee.executeInGlobalWithBindings('o instanceof this[className]', {o: debuggerObj, className: this._debuggee.makeDebuggeeValue(className)}, {useInnerBindings: true}).return;
}
_createRemoteObject(debuggerObj) {
@@ -532,7 +531,7 @@ class ExecutionContext {
}
_serialize(obj) {
- const result = this._debuggee.executeInGlobalWithBindings('stringify(e)', {e: obj, stringify: this._jsonStringifyObject});
+ const result = this._debuggee.executeInGlobalWithBindings('stringify(e)', {e: obj, stringify: this._jsonStringifyObject}, {useInnerBindings: true});
if (result.throw)
throw new Error('Object is not serializable');
return result.return === undefined ? undefined : JSON.parse(result.return);
@@ -564,9 +563,9 @@ class ExecutionContext {
if (!completionValue)
throw new Error('evaluation terminated');
if (completionValue.throw) {
- if (this._debuggee.executeInGlobalWithBindings('e instanceof Error', {e: completionValue.throw}).return) {
- exceptionDetails.text = this._debuggee.executeInGlobalWithBindings('e.message', {e: completionValue.throw}).return;
- exceptionDetails.stack = this._debuggee.executeInGlobalWithBindings('e.stack', {e: completionValue.throw}).return;
+ if (this._debuggee.executeInGlobalWithBindings('e instanceof Error', {e: completionValue.throw}, {useInnerBindings: true}).return) {
+ exceptionDetails.text = this._debuggee.executeInGlobalWithBindings('e.message', {e: completionValue.throw}, {useInnerBindings: true}).return;
+ exceptionDetails.stack = this._debuggee.executeInGlobalWithBindings('e.stack', {e: completionValue.throw}, {useInnerBindings: true}).return;
} else {
exceptionDetails.value = this._serialize(completionValue.throw);
}
diff --git a/browser_patches/firefox/juggler/content/main.js b/browser_patches/firefox/juggler/content/main.js
index eb971b5d4d..4b891b3a76 100644
--- a/browser_patches/firefox/juggler/content/main.js
+++ b/browser_patches/firefox/juggler/content/main.js
@@ -2,7 +2,6 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-const {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm");
const {Helper} = ChromeUtils.import('chrome://juggler/content/Helper.js');
const {FrameTree} = ChromeUtils.import('chrome://juggler/content/content/FrameTree.js');
const {SimpleChannel} = ChromeUtils.import('chrome://juggler/content/SimpleChannel.js');
diff --git a/browser_patches/firefox/juggler/protocol/BrowserHandler.js b/browser_patches/firefox/juggler/protocol/BrowserHandler.js
index df32c10bb6..7bec58108a 100644
--- a/browser_patches/firefox/juggler/protocol/BrowserHandler.js
+++ b/browser_patches/firefox/juggler/protocol/BrowserHandler.js
@@ -5,7 +5,6 @@
"use strict";
const {AddonManager} = ChromeUtils.import("resource://gre/modules/AddonManager.jsm");
-const {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm");
const {TargetRegistry} = ChromeUtils.import("chrome://juggler/content/TargetRegistry.js");
const {Helper} = ChromeUtils.import('chrome://juggler/content/Helper.js');
const {PageHandler} = ChromeUtils.import("chrome://juggler/content/protocol/PageHandler.js");
diff --git a/browser_patches/firefox/juggler/protocol/PageHandler.js b/browser_patches/firefox/juggler/protocol/PageHandler.js
index 7d148fa113..8bceb06979 100644
--- a/browser_patches/firefox/juggler/protocol/PageHandler.js
+++ b/browser_patches/firefox/juggler/protocol/PageHandler.js
@@ -5,7 +5,6 @@
"use strict";
const {Helper, EventWatcher} = ChromeUtils.import('chrome://juggler/content/Helper.js');
-const {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm");
const {NetUtil} = ChromeUtils.import('resource://gre/modules/NetUtil.jsm');
const {NetworkObserver, PageNetwork} = ChromeUtils.import('chrome://juggler/content/NetworkObserver.js');
const {PageTarget} = ChromeUtils.import('chrome://juggler/content/TargetRegistry.js');
@@ -395,7 +394,7 @@ class PageHandler {
'nsIReferrerInfo',
'init'
);
- referrerInfo = new ReferrerInfo(Ci.nsIHttpChannel.REFERRER_POLICY_UNSET, true, referrerURI);
+ referrerInfo = new ReferrerInfo(Ci.nsIReferrerInfo.UNSAFE_URL, true, referrerURI);
} catch (e) {
throw new Error(`Invalid referer: "${referer}"`);
}
diff --git a/browser_patches/firefox/patches/bootstrap.diff b/browser_patches/firefox/patches/bootstrap.diff
index 4881645247..d58ec0332a 100644
--- a/browser_patches/firefox/patches/bootstrap.diff
+++ b/browser_patches/firefox/patches/bootstrap.diff
@@ -26,10 +26,10 @@ index 1886621c373fe1fd5ff54092afc4c64e9ca9a8fd..a0febf72885410b45227171c63e823ec
+ readonly attribute boolean isUpdatePendingForJugglerAccessibility;
};
diff --git a/accessible/xpcom/xpcAccessibleDocument.cpp b/accessible/xpcom/xpcAccessibleDocument.cpp
-index 94b04cf2f653a4b7274897eb6051dccdd4fe8404..fd6775e71c3d7c348ab2f1c5b4ea2dc4c18f787c 100644
+index d616e476b2149de5703077563680905e40db0459..7a8a48d5e7303a298a3e2e9fdf64558b3cdbe654 100644
--- a/accessible/xpcom/xpcAccessibleDocument.cpp
+++ b/accessible/xpcom/xpcAccessibleDocument.cpp
-@@ -132,6 +132,13 @@ xpcAccessibleDocument::GetChildDocumentAt(uint32_t aIndex,
+@@ -131,6 +131,13 @@ xpcAccessibleDocument::GetChildDocumentAt(uint32_t aIndex,
return *aDocument ? NS_OK : NS_ERROR_INVALID_ARG;
}
@@ -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 082ada9ea705cf62420c6bd409a23517a591df82..781ac8d8ee9b9b01112b620e8c5c11682cdb9ef1 100644
+index d3fa2a973619ed3dc12d9aac9bc751e21a158406..ab3b84ce0a685d79ef56cbf38b5c4beeb7a1100c 100644
--- a/browser/app/winlauncher/LauncherProcessWin.cpp
+++ b/browser/app/winlauncher/LauncherProcessWin.cpp
@@ -22,6 +22,7 @@
@@ -68,7 +68,7 @@ index 082ada9ea705cf62420c6bd409a23517a591df82..781ac8d8ee9b9b01112b620e8c5c1168
#include
#include
-@@ -428,8 +429,18 @@ Maybe LauncherMain(int& argc, wchar_t* argv[],
+@@ -422,8 +423,18 @@ Maybe LauncherMain(int& argc, wchar_t* argv[],
HANDLE stdHandles[] = {::GetStdHandle(STD_INPUT_HANDLE),
::GetStdHandle(STD_OUTPUT_HANDLE),
::GetStdHandle(STD_ERROR_HANDLE)};
@@ -89,7 +89,7 @@ index 082ada9ea705cf62420c6bd409a23517a591df82..781ac8d8ee9b9b01112b620e8c5c1168
DWORD creationFlags = CREATE_SUSPENDED | CREATE_UNICODE_ENVIRONMENT;
diff --git a/browser/installer/allowed-dupes.mn b/browser/installer/allowed-dupes.mn
-index 93e7dbae2281680827abb482f6f34e90076f3b3a..f7045a29c6ed50876775abe2d45a47df7b7a2003 100644
+index bae6d0c5be1ef486b44563b519c5f4aa4b5bc769..636e801c940dea835dee55759cb638a6714a33cd 100644
--- a/browser/installer/allowed-dupes.mn
+++ b/browser/installer/allowed-dupes.mn
@@ -71,6 +71,12 @@ browser/features/webcompat@mozilla.org/shims/empty-shim.txt
@@ -102,14 +102,14 @@ index 93e7dbae2281680827abb482f6f34e90076f3b3a..f7045a29c6ed50876775abe2d45a47df
+chrome/juggler/content/server/stream-utils.js
+chrome/marionette/content/stream-utils.js
+
- #ifdef MOZ_EME_WIN32_ARTIFACT
- gmp-clearkey/0.1/manifest.json
- i686/gmp-clearkey/0.1/manifest.json
+ # Bug 1496075 - Switch searchplugins to Web Extensions
+ 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 41d13e23c4f4160e469aa81a632b5ed336130edb..3d690727ba3394485093f062093f26b2739ee497 100644
+index 1e48dd12b43ed48085f22f6576f8c6696153775f..3b79a0e6e607ae67a00c3c7403ff18261a2419b4 100644
--- a/browser/installer/package-manifest.in
+++ b/browser/installer/package-manifest.in
-@@ -203,6 +203,9 @@
+@@ -196,6 +196,9 @@
@RESPATH@/chrome/remote.manifest
#endif
@@ -167,10 +167,10 @@ index 4236ec2921bd57c58cfffdf1cdcf509d76fca3db..23d0cb1f06bb8c7a1cac8fcec94a99fb
const transportProvider = {
setListener(upgradeListener) {
diff --git a/docshell/base/BrowsingContext.cpp b/docshell/base/BrowsingContext.cpp
-index db232f63e48e2950a997baac63f2b3cc069ddb18..3d2088308789276ad8e940dda4ebf3800f487e3a 100644
+index e6360a37dcdf0d01353175bb24211e48c54c6ac5..1aeaacb0f91c6bee166ec888196971d3bc957a41 100644
--- a/docshell/base/BrowsingContext.cpp
+++ b/docshell/base/BrowsingContext.cpp
-@@ -113,6 +113,20 @@ struct ParamTraits
+@@ -114,6 +114,20 @@ struct ParamTraits
mozilla::dom::PrefersColorSchemeOverride::None,
mozilla::dom::PrefersColorSchemeOverride::EndGuard_> {};
@@ -191,7 +191,7 @@ index db232f63e48e2950a997baac63f2b3cc069ddb18..3d2088308789276ad8e940dda4ebf380
template <>
struct ParamTraits
: public ContiguousEnumSerializer<
-@@ -2746,6 +2760,40 @@ void BrowsingContext::DidSet(FieldIndex,
+@@ -2781,6 +2795,40 @@ void BrowsingContext::DidSet(FieldIndex,
PresContextAffectingFieldChanged();
}
@@ -233,10 +233,10 @@ index db232f63e48e2950a997baac63f2b3cc069ddb18..3d2088308789276ad8e940dda4ebf380
nsString&& aOldValue) {
MOZ_ASSERT(IsTop());
diff --git a/docshell/base/BrowsingContext.h b/docshell/base/BrowsingContext.h
-index 4c245337b7db24f94011ad75fa2a3b32c9a3574c..946b4592794499455b7e2d7d208b7ca43242a414 100644
+index f9129bb2db492c7446a092c744b14f42449dc74c..a2abdfee35289be118b29baa6a5f3385a63f7085 100644
--- a/docshell/base/BrowsingContext.h
+++ b/docshell/base/BrowsingContext.h
-@@ -199,10 +199,10 @@ struct EmbedderColorSchemes {
+@@ -200,10 +200,10 @@ struct EmbedderColorSchemes {
FIELD(GVInaudibleAutoplayRequestStatus, GVAutoplayRequestStatus) \
/* ScreenOrientation-related APIs */ \
FIELD(CurrentOrientationAngle, float) \
@@ -249,7 +249,7 @@ index 4c245337b7db24f94011ad75fa2a3b32c9a3574c..946b4592794499455b7e2d7d208b7ca4
FIELD(EmbedderElementType, Maybe) \
FIELD(MessageManagerGroup, nsString) \
FIELD(MaxTouchPointsOverride, uint8_t) \
-@@ -240,6 +240,10 @@ struct EmbedderColorSchemes {
+@@ -241,6 +241,10 @@ struct EmbedderColorSchemes {
* embedder element. */ \
FIELD(EmbedderColorSchemes, EmbedderColorSchemes) \
FIELD(DisplayMode, dom::DisplayMode) \
@@ -260,7 +260,7 @@ index 4c245337b7db24f94011ad75fa2a3b32c9a3574c..946b4592794499455b7e2d7d208b7ca4
/* The number of entries added to the session history because of this \
* browsing context. */ \
FIELD(HistoryEntryCount, uint32_t) \
-@@ -924,6 +928,14 @@ class BrowsingContext : public nsILoadContext, public nsWrapperCache {
+@@ -919,6 +923,14 @@ class BrowsingContext : public nsILoadContext, public nsWrapperCache {
return GetPrefersColorSchemeOverride();
}
@@ -275,7 +275,7 @@ index 4c245337b7db24f94011ad75fa2a3b32c9a3574c..946b4592794499455b7e2d7d208b7ca4
bool IsInBFCache() const;
bool AllowJavascript() const { return GetAllowJavascript(); }
-@@ -1085,6 +1097,23 @@ class BrowsingContext : public nsILoadContext, public nsWrapperCache {
+@@ -1083,6 +1095,23 @@ class BrowsingContext : public nsILoadContext, public nsWrapperCache {
void WalkPresContexts(Callback&&);
void PresContextAffectingFieldChanged();
@@ -300,10 +300,10 @@ index 4c245337b7db24f94011ad75fa2a3b32c9a3574c..946b4592794499455b7e2d7d208b7ca4
bool CanSet(FieldIndex, bool, ContentParent*) {
diff --git a/docshell/base/CanonicalBrowsingContext.cpp b/docshell/base/CanonicalBrowsingContext.cpp
-index 42a6700afa0e9ff3c5161b1d18f327b3d9ed76f8..3b83cafc2e549fe3affad3547a1b145f821a888d 100644
+index a6bbc3c7c9a0eaf1b0dcf4a9a68c1d579aa79f70..6de37c24076abcb136e0c2014d1e94e60ea62720 100644
--- a/docshell/base/CanonicalBrowsingContext.cpp
+++ b/docshell/base/CanonicalBrowsingContext.cpp
-@@ -1456,6 +1456,12 @@ void CanonicalBrowsingContext::LoadURI(nsIURI* aURI,
+@@ -1465,6 +1465,12 @@ void CanonicalBrowsingContext::LoadURI(nsIURI* aURI,
return;
}
@@ -317,7 +317,7 @@ index 42a6700afa0e9ff3c5161b1d18f327b3d9ed76f8..3b83cafc2e549fe3affad3547a1b145f
}
diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp
-index fb1b70fbcff37a233a4396a768358a36e773ddc3..c1c654f99462f2868607729c9126531eac3d5da9 100644
+index 7669fbacd09a65cda1b06c74aa75f0ef7b625da2..8fd21c46640003c3f6d3cbc79697955ba4437afd 100644
--- a/docshell/base/nsDocShell.cpp
+++ b/docshell/base/nsDocShell.cpp
@@ -15,6 +15,12 @@
@@ -357,15 +357,15 @@ index fb1b70fbcff37a233a4396a768358a36e773ddc3..c1c654f99462f2868607729c9126531e
#include "nsIDocumentLoaderFactory.h"
#include "nsIDOMWindow.h"
#include "nsIEditingSession.h"
-@@ -207,6 +216,7 @@
- #include "nsFocusManager.h"
- #include "nsGlobalWindow.h"
+@@ -208,6 +217,7 @@
+ #include "nsGlobalWindowInner.h"
+ #include "nsGlobalWindowOuter.h"
#include "nsJSEnvironment.h"
+#include "nsJSUtils.h"
#include "nsNetCID.h"
#include "nsNetUtil.h"
#include "nsObjectLoadingContent.h"
-@@ -349,6 +359,14 @@ nsDocShell::nsDocShell(BrowsingContext* aBrowsingContext,
+@@ -350,6 +360,14 @@ nsDocShell::nsDocShell(BrowsingContext* aBrowsingContext,
mAllowDNSPrefetch(true),
mAllowWindowControl(true),
mCSSErrorReportingEnabled(false),
@@ -380,7 +380,7 @@ index fb1b70fbcff37a233a4396a768358a36e773ddc3..c1c654f99462f2868607729c9126531e
mAllowAuth(mItemType == typeContent),
mAllowKeywordFixup(false),
mDisableMetaRefreshWhenInactive(false),
-@@ -3197,6 +3215,234 @@ nsDocShell::GetMessageManager(ContentFrameMessageManager** aMessageManager) {
+@@ -3204,6 +3222,234 @@ nsDocShell::GetMessageManager(ContentFrameMessageManager** aMessageManager) {
return NS_OK;
}
@@ -463,14 +463,14 @@ index fb1b70fbcff37a233a4396a768358a36e773ddc3..c1c654f99462f2868607729c9126531e
+
+static void SetIcuLocale(const nsAString& aLanguageOverride) {
+ icu::Locale locale(NS_LossyConvertUTF16toASCII(aLanguageOverride).get());
-+ if (icu::Locale::getDefault() == locale)
-+ return;
-+ UErrorCode error_code = U_ZERO_ERROR;
-+ const char* lang = locale.getLanguage();
-+ if (lang != nullptr && *lang != '\0') {
-+ icu::Locale::setDefault(locale, error_code);
-+ } else {
-+ fprintf(stderr, "SetIcuLocale Failed to set the ICU default locale to %s\n", NS_LossyConvertUTF16toASCII(aLanguageOverride).get());
++ if (icu::Locale::getDefault() != locale) {
++ UErrorCode error_code = U_ZERO_ERROR;
++ const char* lang = locale.getLanguage();
++ if (lang != nullptr && *lang != '\0') {
++ icu::Locale::setDefault(locale, error_code);
++ } else {
++ fprintf(stderr, "SetIcuLocale Failed to set the ICU default locale to %s\n", NS_LossyConvertUTF16toASCII(aLanguageOverride).get());
++ }
+ }
+
+ AutoJSAPI jsapi;
@@ -615,7 +615,7 @@ index fb1b70fbcff37a233a4396a768358a36e773ddc3..c1c654f99462f2868607729c9126531e
NS_IMETHODIMP
nsDocShell::GetIsNavigating(bool* aOut) {
*aOut = mIsNavigating;
-@@ -4876,7 +5122,7 @@ nsDocShell::GetVisibility(bool* aVisibility) {
+@@ -4895,7 +5141,7 @@ nsDocShell::GetVisibility(bool* aVisibility) {
}
void nsDocShell::ActivenessMaybeChanged() {
@@ -624,7 +624,7 @@ index fb1b70fbcff37a233a4396a768358a36e773ddc3..c1c654f99462f2868607729c9126531e
if (RefPtr presShell = GetPresShell()) {
presShell->ActivenessMaybeChanged();
}
-@@ -6809,6 +7055,10 @@ bool nsDocShell::CanSavePresentation(uint32_t aLoadType,
+@@ -6811,6 +7057,10 @@ bool nsDocShell::CanSavePresentation(uint32_t aLoadType,
return false; // no entry to save into
}
@@ -635,7 +635,7 @@ index fb1b70fbcff37a233a4396a768358a36e773ddc3..c1c654f99462f2868607729c9126531e
MOZ_ASSERT(!mozilla::SessionHistoryInParent(),
"mOSHE cannot be non-null with SHIP");
nsCOMPtr viewer = mOSHE->GetContentViewer();
-@@ -8590,6 +8840,12 @@ nsresult nsDocShell::PerformRetargeting(nsDocShellLoadState* aLoadState) {
+@@ -8595,6 +8845,12 @@ nsresult nsDocShell::PerformRetargeting(nsDocShellLoadState* aLoadState) {
true, // aForceNoOpener
getter_AddRefs(newBC));
MOZ_ASSERT(!newBC);
@@ -648,7 +648,7 @@ index fb1b70fbcff37a233a4396a768358a36e773ddc3..c1c654f99462f2868607729c9126531e
return rv;
}
-@@ -9665,6 +9921,16 @@ nsresult nsDocShell::InternalLoad(nsDocShellLoadState* aLoadState,
+@@ -9670,6 +9926,16 @@ nsresult nsDocShell::InternalLoad(nsDocShellLoadState* aLoadState,
nsINetworkPredictor::PREDICT_LOAD, attrs, nullptr);
nsCOMPtr req;
@@ -665,7 +665,7 @@ index fb1b70fbcff37a233a4396a768358a36e773ddc3..c1c654f99462f2868607729c9126531e
rv = DoURILoad(aLoadState, aCacheKey, getter_AddRefs(req));
if (NS_SUCCEEDED(rv)) {
-@@ -12825,6 +13091,9 @@ class OnLinkClickEvent : public Runnable {
+@@ -12827,6 +13093,9 @@ class OnLinkClickEvent : public Runnable {
mHandler->OnLinkClickSync(mContent, mLoadState, mNoOpenerImplied,
mTriggeringPrincipal);
}
@@ -675,7 +675,7 @@ index fb1b70fbcff37a233a4396a768358a36e773ddc3..c1c654f99462f2868607729c9126531e
return NS_OK;
}
-@@ -12909,6 +13178,8 @@ nsresult nsDocShell::OnLinkClick(
+@@ -12911,6 +13180,8 @@ nsresult nsDocShell::OnLinkClick(
nsCOMPtr ev =
new OnLinkClickEvent(this, aContent, loadState, noOpenerImplied,
aIsTrusted, aTriggeringPrincipal);
@@ -685,7 +685,7 @@ index fb1b70fbcff37a233a4396a768358a36e773ddc3..c1c654f99462f2868607729c9126531e
}
diff --git a/docshell/base/nsDocShell.h b/docshell/base/nsDocShell.h
-index 0f360bf1f5f2e9067f42d270b4fb6745116a0ee2..8eee7e4d1a287b38d2d2aa1af1ac719a6c7c940b 100644
+index 21cd7c944b391bf0333c7bdc815200db33ef0afe..aa8d79b0d3bd34419c5d625678f3cd1231e2b46f 100644
--- a/docshell/base/nsDocShell.h
+++ b/docshell/base/nsDocShell.h
@@ -16,6 +16,7 @@
@@ -729,7 +729,7 @@ index 0f360bf1f5f2e9067f42d270b4fb6745116a0ee2..8eee7e4d1a287b38d2d2aa1af1ac719a
// 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
-@@ -1323,6 +1336,17 @@ class nsDocShell final : public nsDocLoader,
+@@ -1327,6 +1340,17 @@ class nsDocShell final : public nsDocLoader,
bool mAllowDNSPrefetch : 1;
bool mAllowWindowControl : 1;
bool mCSSErrorReportingEnabled : 1;
@@ -804,10 +804,10 @@ index 68f32e968c7e1bc1d0b2b2894320a177a9ae44d2..9e61465ffad927d7b3e972f753940196
* This attempts to save any applicable layout history state (like
* scroll position) in the nsISHEntry. This is normally done
diff --git a/dom/base/Document.cpp b/dom/base/Document.cpp
-index b8d736619d4ea457b7db95d1815bd85697475133..d128299ab7a5e7f8fb00474571805361df0e00d2 100644
+index dbb0e7d060dacf26154b30f67c5980bdebb533c1..eba7dfb80333d3473a2167d8105544d1de46d939 100644
--- a/dom/base/Document.cpp
+++ b/dom/base/Document.cpp
-@@ -3682,6 +3682,9 @@ void Document::SendToConsole(nsCOMArray& aMessages) {
+@@ -3671,6 +3671,9 @@ void Document::SendToConsole(nsCOMArray& aMessages) {
}
void Document::ApplySettingsFromCSP(bool aSpeculative) {
@@ -817,7 +817,7 @@ index b8d736619d4ea457b7db95d1815bd85697475133..d128299ab7a5e7f8fb00474571805361
nsresult rv = NS_OK;
if (!aSpeculative) {
// 1) apply settings from regular CSP
-@@ -3739,6 +3742,11 @@ nsresult Document::InitCSP(nsIChannel* aChannel) {
+@@ -3728,6 +3731,11 @@ nsresult Document::InitCSP(nsIChannel* aChannel) {
MOZ_ASSERT(!mScriptGlobalObject,
"CSP must be initialized before mScriptGlobalObject is set!");
@@ -829,7 +829,7 @@ index b8d736619d4ea457b7db95d1815bd85697475133..d128299ab7a5e7f8fb00474571805361
// If this is a data document - no need to set CSP.
if (mLoadedAsData) {
return NS_OK;
-@@ -4578,6 +4586,10 @@ bool Document::HasFocus(ErrorResult& rv) const {
+@@ -4544,6 +4552,10 @@ bool Document::HasFocus(ErrorResult& rv) const {
return false;
}
@@ -840,7 +840,7 @@ index b8d736619d4ea457b7db95d1815bd85697475133..d128299ab7a5e7f8fb00474571805361
if (!fm->IsInActiveWindow(bc)) {
return false;
}
-@@ -18471,6 +18483,68 @@ ColorScheme Document::PreferredColorScheme(IgnoreRFP aIgnoreRFP) const {
+@@ -18535,6 +18547,68 @@ ColorScheme Document::PreferredColorScheme(IgnoreRFP aIgnoreRFP) const {
return LookAndFeel::PreferredColorSchemeForContent();
}
@@ -910,10 +910,10 @@ index b8d736619d4ea457b7db95d1815bd85697475133..d128299ab7a5e7f8fb00474571805361
if (!sLoadingForegroundTopLevelContentDocument) {
return false;
diff --git a/dom/base/Document.h b/dom/base/Document.h
-index bb4e5a8e8114167d442e3593d240de74e9a6b12a..1a7b0a0bb8431c6c17dc0ccb1600ad97bbe005cd 100644
+index ed73acda064d3c899858b4c4bd6c8df4a5b2a964..5d49feda0146088128d1901d4168ca75d7062aa3 100644
--- a/dom/base/Document.h
+++ b/dom/base/Document.h
-@@ -4067,6 +4067,9 @@ class Document : public nsINode,
+@@ -4066,6 +4066,9 @@ class Document : public nsINode,
// color-scheme meta tag.
ColorScheme DefaultColorScheme() const;
@@ -924,10 +924,10 @@ index bb4e5a8e8114167d442e3593d240de74e9a6b12a..1a7b0a0bb8431c6c17dc0ccb1600ad97
static bool AutomaticStorageAccessPermissionCanBeGranted(
diff --git a/dom/base/Navigator.cpp b/dom/base/Navigator.cpp
-index eedeee0364cefb0bcf5412483f452cb5454eb1a5..922775338a270ecd70f2ad284e627da63b37cb5b 100644
+index 9a5f6913b0682ad39824a2504734e58af9ae845e..baf24386e37daac95700d0715bf00cca1ebcd84f 100644
--- a/dom/base/Navigator.cpp
+++ b/dom/base/Navigator.cpp
-@@ -330,14 +330,18 @@ void Navigator::GetAppName(nsAString& aAppName, CallerType aCallerType) const {
+@@ -327,14 +327,18 @@ void Navigator::GetAppName(nsAString& aAppName) const {
* for more detail.
*/
/* static */
@@ -948,7 +948,7 @@ index eedeee0364cefb0bcf5412483f452cb5454eb1a5..922775338a270ecd70f2ad284e627da6
// Split values on commas.
for (nsDependentSubstring lang :
-@@ -389,7 +393,13 @@ void Navigator::GetLanguage(nsAString& aLanguage) {
+@@ -386,7 +390,13 @@ void Navigator::GetLanguage(nsAString& aLanguage) {
}
void Navigator::GetLanguages(nsTArray& aLanguages) {
@@ -963,7 +963,7 @@ index eedeee0364cefb0bcf5412483f452cb5454eb1a5..922775338a270ecd70f2ad284e627da6
// The returned value is cached by the binding code. The window listens to the
// accept languages change and will clear the cache when needed. It has to
-@@ -564,7 +574,13 @@ bool Navigator::CookieEnabled() {
+@@ -561,7 +571,13 @@ bool Navigator::CookieEnabled() {
return granted;
}
@@ -979,10 +979,10 @@ index eedeee0364cefb0bcf5412483f452cb5454eb1a5..922775338a270ecd70f2ad284e627da6
void Navigator::GetBuildID(nsAString& aBuildID, CallerType aCallerType,
ErrorResult& aRv) const {
diff --git a/dom/base/Navigator.h b/dom/base/Navigator.h
-index cbe8d6bb27eb75b1c0eb920c69eccc99fd6133b2..49da35b1f9ec2a81c5886f277fd52ec492ca8418 100644
+index f878c11dff3d448dfa2520c7fe7e4e9cb63f7ea7..c1a30391eb31e28e1c22dff82bb9526bc7e058dd 100644
--- a/dom/base/Navigator.h
+++ b/dom/base/Navigator.h
-@@ -216,7 +216,7 @@ class Navigator final : public nsISupports, public nsWrapperCache {
+@@ -213,7 +213,7 @@ class Navigator final : public nsISupports, public nsWrapperCache {
StorageManager* Storage();
@@ -992,10 +992,10 @@ index cbe8d6bb27eb75b1c0eb920c69eccc99fd6133b2..49da35b1f9ec2a81c5886f277fd52ec4
dom::MediaCapabilities* MediaCapabilities();
dom::MediaSession* MediaSession();
diff --git a/dom/base/nsContentUtils.cpp b/dom/base/nsContentUtils.cpp
-index 5cb5a088269287b6f9a3d36cca658043464cd5cc..d0b4929c5996efc03392b7093d14e01cabab8acf 100644
+index 1f9863a8bc538eece4dbf04b2e4bffbad50d5d00..b5cd6be99c8457030db1b23ac307fc2ff40e6e49 100644
--- a/dom/base/nsContentUtils.cpp
+++ b/dom/base/nsContentUtils.cpp
-@@ -8520,7 +8520,8 @@ nsresult nsContentUtils::SendMouseEvent(
+@@ -8554,7 +8554,8 @@ nsresult nsContentUtils::SendMouseEvent(
bool aIgnoreRootScrollFrame, float aPressure,
unsigned short aInputSourceArg, uint32_t aIdentifier, bool aToWindow,
PreventDefaultResult* aPreventDefault, bool aIsDOMEventSynthesized,
@@ -1005,7 +1005,7 @@ index 5cb5a088269287b6f9a3d36cca658043464cd5cc..d0b4929c5996efc03392b7093d14e01c
nsPoint offset;
nsCOMPtr widget = GetWidget(aPresShell, &offset);
if (!widget) return NS_ERROR_FAILURE;
-@@ -8528,6 +8529,7 @@ nsresult nsContentUtils::SendMouseEvent(
+@@ -8562,6 +8563,7 @@ nsresult nsContentUtils::SendMouseEvent(
EventMessage msg;
Maybe exitFrom;
bool contextMenuKey = false;
@@ -1013,7 +1013,7 @@ index 5cb5a088269287b6f9a3d36cca658043464cd5cc..d0b4929c5996efc03392b7093d14e01c
if (aType.EqualsLiteral("mousedown")) {
msg = eMouseDown;
} else if (aType.EqualsLiteral("mouseup")) {
-@@ -8552,6 +8554,12 @@ nsresult nsContentUtils::SendMouseEvent(
+@@ -8586,6 +8588,12 @@ nsresult nsContentUtils::SendMouseEvent(
msg = eMouseHitTest;
} else if (aType.EqualsLiteral("MozMouseExploreByTouch")) {
msg = eMouseExploreByTouch;
@@ -1026,7 +1026,7 @@ index 5cb5a088269287b6f9a3d36cca658043464cd5cc..d0b4929c5996efc03392b7093d14e01c
} else {
return NS_ERROR_FAILURE;
}
-@@ -8560,12 +8568,21 @@ nsresult nsContentUtils::SendMouseEvent(
+@@ -8594,12 +8602,21 @@ nsresult nsContentUtils::SendMouseEvent(
aInputSourceArg = MouseEvent_Binding::MOZ_SOURCE_MOUSE;
}
@@ -1050,7 +1050,7 @@ index 5cb5a088269287b6f9a3d36cca658043464cd5cc..d0b4929c5996efc03392b7093d14e01c
event.pointerId = aIdentifier;
event.mModifiers = GetWidgetModifiers(aModifiers);
event.mButton = aButton;
-@@ -8576,8 +8593,10 @@ nsresult nsContentUtils::SendMouseEvent(
+@@ -8610,8 +8627,10 @@ nsresult nsContentUtils::SendMouseEvent(
event.mPressure = aPressure;
event.mInputSource = aInputSourceArg;
event.mClickCount = aClickCount;
@@ -1062,10 +1062,10 @@ index 5cb5a088269287b6f9a3d36cca658043464cd5cc..d0b4929c5996efc03392b7093d14e01c
nsPresContext* presContext = aPresShell->GetPresContext();
if (!presContext) return NS_ERROR_FAILURE;
diff --git a/dom/base/nsContentUtils.h b/dom/base/nsContentUtils.h
-index 1259b13761c2d51e1ddca54433a49b2a5949a790..ec356bb54f04249d19a984e1f4b2d5d57009b64f 100644
+index 180c7fe15d6acbd68c477a5677a397ef2acc3c6b..b66187e2063b6b7660ae0ef5a0a34b5655b23a97 100644
--- a/dom/base/nsContentUtils.h
+++ b/dom/base/nsContentUtils.h
-@@ -2934,7 +2934,8 @@ class nsContentUtils {
+@@ -2947,7 +2947,8 @@ class nsContentUtils {
int32_t aModifiers, bool aIgnoreRootScrollFrame, float aPressure,
unsigned short aInputSourceArg, uint32_t aIdentifier, bool aToWindow,
mozilla::PreventDefaultResult* aPreventDefault,
@@ -1076,7 +1076,7 @@ index 1259b13761c2d51e1ddca54433a49b2a5949a790..ec356bb54f04249d19a984e1f4b2d5d5
static void FirePageShowEventForFrameLoaderSwap(
nsIDocShellTreeItem* aItem,
diff --git a/dom/base/nsDOMWindowUtils.cpp b/dom/base/nsDOMWindowUtils.cpp
-index 2ccd99469917b6fc0b0c99f8ff579d7040e65669..2968275ddc32b7bb9eb7337ef90328bb00c1aabf 100644
+index e6762018cce8e4c8691703ed15ea29e709f31cf2..4d0b679c4700e8fe18408a186b7e4d512a71dc30 100644
--- a/dom/base/nsDOMWindowUtils.cpp
+++ b/dom/base/nsDOMWindowUtils.cpp
@@ -684,6 +684,26 @@ nsDOMWindowUtils::GetPresShellId(uint32_t* aPresShellId) {
@@ -1154,10 +1154,10 @@ index 63968c9b7a4e418e4c0de6e7a75fa215a36a9105..decf3ea3833ccdffd49a7aded2d600f9
MOZ_CAN_RUN_SCRIPT
nsresult SendTouchEventCommon(
diff --git a/dom/base/nsFocusManager.cpp b/dom/base/nsFocusManager.cpp
-index ba77a1f00d43be4ec98b698cf0d9f4fab8343dd2..f146d1dfadbaa2e75f8b60f3dafe056a179ef018 100644
+index 1be0c80cd30f8696a9451af1f9d381591f1ba0c0..9f9af9649c2cd55188e085e011819cc5db0fb6dc 100644
--- a/dom/base/nsFocusManager.cpp
+++ b/dom/base/nsFocusManager.cpp
-@@ -1656,6 +1656,10 @@ Maybe nsFocusManager::SetFocusInner(Element* aNewContent,
+@@ -1672,6 +1672,10 @@ Maybe nsFocusManager::SetFocusInner(Element* aNewContent,
(GetActiveBrowsingContext() == newRootBrowsingContext);
}
@@ -1168,7 +1168,7 @@ index ba77a1f00d43be4ec98b698cf0d9f4fab8343dd2..f146d1dfadbaa2e75f8b60f3dafe056a
// 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,
+@@ -2945,7 +2949,9 @@ void nsFocusManager::RaiseWindow(nsPIDOMWindowOuter* aWindow,
}
}
@@ -1180,10 +1180,10 @@ index ba77a1f00d43be4ec98b698cf0d9f4fab8343dd2..f146d1dfadbaa2e75f8b60f3dafe056a
// 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 9893fb0ed13eeebe55f8eda7bb3d898ff6eebba7..247784c89d5d68840638f40f77523e600f13bbf6 100644
+index a784fe3c4bf9fe6a74bebca23fdce04524e0f473..100bae14efb8f4cc49238ce808e3f4e7fe1cd61c 100644
--- a/dom/base/nsGlobalWindowOuter.cpp
+++ b/dom/base/nsGlobalWindowOuter.cpp
-@@ -2482,7 +2482,7 @@ nsresult nsGlobalWindowOuter::SetNewDocument(Document* aDocument,
+@@ -2490,7 +2490,7 @@ nsresult nsGlobalWindowOuter::SetNewDocument(Document* aDocument,
&nsGlobalWindowInner::FireOnNewGlobalObject));
}
@@ -1192,7 +1192,7 @@ index 9893fb0ed13eeebe55f8eda7bb3d898ff6eebba7..247784c89d5d68840638f40f77523e60
// We should probably notify. However if this is the, arguably bad,
// situation when we're creating a temporary non-chrome-about-blank
// document in a chrome docshell, don't notify just yet. Instead wait
-@@ -2501,10 +2501,16 @@ nsresult nsGlobalWindowOuter::SetNewDocument(Document* aDocument,
+@@ -2509,10 +2509,16 @@ nsresult nsGlobalWindowOuter::SetNewDocument(Document* aDocument,
}();
if (!isContentAboutBlankInChromeDocshell) {
@@ -1213,7 +1213,7 @@ index 9893fb0ed13eeebe55f8eda7bb3d898ff6eebba7..247784c89d5d68840638f40f77523e60
}
}
-@@ -2625,6 +2631,19 @@ void nsGlobalWindowOuter::DispatchDOMWindowCreated() {
+@@ -2632,6 +2638,19 @@ void nsGlobalWindowOuter::DispatchDOMWindowCreated() {
}
}
@@ -1234,10 +1234,10 @@ index 9893fb0ed13eeebe55f8eda7bb3d898ff6eebba7..247784c89d5d68840638f40f77523e60
void nsGlobalWindowOuter::SetDocShell(nsDocShell* aDocShell) {
diff --git a/dom/base/nsGlobalWindowOuter.h b/dom/base/nsGlobalWindowOuter.h
-index 0919dfe52ab1ced87c5483d0a60945f688f0eefe..c826b05d8599b7bf80415bdad1969a84a467a7ba 100644
+index 8a891ca19a56ff0cdecab26e1d6bb78f32b91abd..c05023ca6a88e0caef5b709a4f8c2846894d5c3c 100644
--- a/dom/base/nsGlobalWindowOuter.h
+++ b/dom/base/nsGlobalWindowOuter.h
-@@ -325,6 +325,7 @@ class nsGlobalWindowOuter final : public mozilla::dom::EventTarget,
+@@ -314,6 +314,7 @@ class nsGlobalWindowOuter final : public mozilla::dom::EventTarget,
// Outer windows only.
void DispatchDOMWindowCreated();
@@ -1246,7 +1246,7 @@ index 0919dfe52ab1ced87c5483d0a60945f688f0eefe..c826b05d8599b7bf80415bdad1969a84
// Outer windows only.
virtual void EnsureSizeAndPositionUpToDate() override;
diff --git a/dom/base/nsINode.cpp b/dom/base/nsINode.cpp
-index f2b1afabd27c3652632074c1788c4320277ef89f..bc60ca7e4820f9db27a4296acd27e86684ce59eb 100644
+index 77016f314939bf6ac11b48db1f71d1d3a82d4e83..67440e2643eb3f098e8e790179634216da7f851f 100644
--- a/dom/base/nsINode.cpp
+++ b/dom/base/nsINode.cpp
@@ -1358,6 +1358,61 @@ void nsINode::GetBoxQuadsFromWindowOrigin(const BoxQuadOptions& aOptions,
@@ -1312,10 +1312,10 @@ index f2b1afabd27c3652632074c1788c4320277ef89f..bc60ca7e4820f9db27a4296acd27e866
DOMQuad& aQuad, const GeometryNode& aFrom,
const ConvertCoordinateOptions& aOptions, CallerType aCallerType,
diff --git a/dom/base/nsINode.h b/dom/base/nsINode.h
-index 3617a4a3e31592c1cde00170ecf7b86cf4ab4737..51db576475772b5b9e1e5f87bb690577151b724b 100644
+index 73cfa7eb511e1c453b2634fe5a2aa7a042ba0221..759909ce15a5aff520d0d8429ee399a8b4787f11 100644
--- a/dom/base/nsINode.h
+++ b/dom/base/nsINode.h
-@@ -2193,6 +2193,10 @@ class nsINode : public mozilla::dom::EventTarget {
+@@ -2212,6 +2212,10 @@ class nsINode : public mozilla::dom::EventTarget {
nsTArray>& aResult,
ErrorResult& aRv);
@@ -1327,10 +1327,10 @@ index 3617a4a3e31592c1cde00170ecf7b86cf4ab4737..51db576475772b5b9e1e5f87bb690577
DOMQuad& aQuad, const TextOrElementOrDocument& aFrom,
const ConvertCoordinateOptions& aOptions, CallerType aCallerType,
diff --git a/dom/base/nsJSUtils.cpp b/dom/base/nsJSUtils.cpp
-index 86fe04583c34bd84f7239c3515c9f335d84f48a2..b6705bc48f216e856b556349d206756a0cf91867 100644
+index 66b0a09dda9e57f41643da11abb079896b9634d9..eb1dacdce7c8426de3f3cd34d2c22d1d13f49b5a 100644
--- a/dom/base/nsJSUtils.cpp
+++ b/dom/base/nsJSUtils.cpp
-@@ -169,6 +169,11 @@ bool nsJSUtils::GetScopeChainForElement(
+@@ -177,6 +177,11 @@ bool nsJSUtils::GetScopeChainForElement(
return true;
}
@@ -1343,10 +1343,10 @@ index 86fe04583c34bd84f7239c3515c9f335d84f48a2..b6705bc48f216e856b556349d206756a
void nsJSUtils::ResetTimeZone() { JS::ResetTimeZone(); }
diff --git a/dom/base/nsJSUtils.h b/dom/base/nsJSUtils.h
-index 67682173f45c6a83cbad176c2922263d4f7dece9..7dd97f27bdf07673289fce62aaebe3b96492a2eb 100644
+index 36e906061588aab50dee129cc46dd2e4d3e153f8..c3591f98d4df19b166fc5c99332e559b1d499049 100644
--- a/dom/base/nsJSUtils.h
+++ b/dom/base/nsJSUtils.h
-@@ -78,6 +78,7 @@ class nsJSUtils {
+@@ -79,6 +79,7 @@ class nsJSUtils {
JSContext* aCx, mozilla::dom::Element* aElement,
JS::MutableHandleVector aScopeChain);
@@ -1397,7 +1397,7 @@ index db60c475931caa32110d12ba63bb56980a2b36cc..5d1d8fdceec7a73541799cbac367b173
* A unique identifier for the browser element that is hosting this
* BrowsingContext tree. Every BrowsingContext in the element's tree will
diff --git a/dom/geolocation/Geolocation.cpp b/dom/geolocation/Geolocation.cpp
-index ff6fe276e3f5a19e3e22d98c4a38222880797d99..96157d17485534f97a4e39675ee77808ac495bfe 100644
+index 197146d71e9772af04e577663dbc0213c26a62cb..0e357893cdcf0d6b627bca803aa6041107079184 100644
--- a/dom/geolocation/Geolocation.cpp
+++ b/dom/geolocation/Geolocation.cpp
@@ -23,6 +23,7 @@
@@ -1405,10 +1405,10 @@ index ff6fe276e3f5a19e3e22d98c4a38222880797d99..96157d17485534f97a4e39675ee77808
#include "nsContentPermissionHelper.h"
#include "nsContentUtils.h"
+#include "nsDocShell.h"
- #include "nsGlobalWindow.h"
+ #include "nsGlobalWindowInner.h"
#include "mozilla/dom/Document.h"
#include "nsINamed.h"
-@@ -260,10 +261,8 @@ nsGeolocationRequest::Allow(JS::Handle aChoices) {
+@@ -259,10 +260,8 @@ nsGeolocationRequest::Allow(JS::Handle aChoices) {
return NS_OK;
}
@@ -1421,7 +1421,7 @@ index ff6fe276e3f5a19e3e22d98c4a38222880797d99..96157d17485534f97a4e39675ee77808
CachedPositionAndAccuracy lastPosition = gs->GetCachedPosition();
if (lastPosition.position) {
EpochTimeStamp cachedPositionTime_ms;
-@@ -441,8 +440,7 @@ void nsGeolocationRequest::Shutdown() {
+@@ -440,8 +439,7 @@ void nsGeolocationRequest::Shutdown() {
// If there are no other high accuracy requests, the geolocation service will
// notify the provider to switch to the default accuracy.
if (mOptions && mOptions->mEnableHighAccuracy) {
@@ -1431,7 +1431,7 @@ index ff6fe276e3f5a19e3e22d98c4a38222880797d99..96157d17485534f97a4e39675ee77808
if (gs) {
gs->UpdateAccuracy();
}
-@@ -732,8 +730,14 @@ void nsGeolocationService::StopDevice() {
+@@ -730,8 +728,14 @@ void nsGeolocationService::StopDevice() {
StaticRefPtr nsGeolocationService::sService;
already_AddRefed
@@ -1447,7 +1447,7 @@ index ff6fe276e3f5a19e3e22d98c4a38222880797d99..96157d17485534f97a4e39675ee77808
if (nsGeolocationService::sService) {
result = nsGeolocationService::sService;
-@@ -825,7 +829,9 @@ nsresult Geolocation::Init(nsPIDOMWindowInner* aContentDom) {
+@@ -823,7 +827,9 @@ nsresult Geolocation::Init(nsPIDOMWindowInner* aContentDom) {
// If no aContentDom was passed into us, we are being used
// by chrome/c++ and have no mOwner, no mPrincipal, and no need
// to prompt.
@@ -1496,10 +1496,10 @@ index 7e1af00d05fbafa2d828e2c7e4dcc5c82d115f5b..e85af9718d064e4d2865bc944e9d4ba1
~Geolocation();
diff --git a/dom/html/HTMLInputElement.cpp b/dom/html/HTMLInputElement.cpp
-index 4a3e5b2c935ad1cfb1bff706933fc2373f90a937..d8eac957b88ea2a5edbf1f0f4fde177edcb07600 100644
+index c419fb6936dac5cebde8dbaf548d8edd49ffc64a..f5a0cd548721c5d87be6dc719a0183b0a7eeccfe 100644
--- a/dom/html/HTMLInputElement.cpp
+++ b/dom/html/HTMLInputElement.cpp
-@@ -57,6 +57,7 @@
+@@ -58,6 +58,7 @@
#include "mozilla/dom/Document.h"
#include "mozilla/dom/HTMLDataListElement.h"
#include "mozilla/dom/HTMLOptionElement.h"
@@ -1507,7 +1507,7 @@ index 4a3e5b2c935ad1cfb1bff706933fc2373f90a937..d8eac957b88ea2a5edbf1f0f4fde177e
#include "nsIFormControlFrame.h"
#include "nsITextControlFrame.h"
#include "nsIFrame.h"
-@@ -780,6 +781,12 @@ nsresult HTMLInputElement::InitFilePicker(FilePickerType aType) {
+@@ -782,6 +783,12 @@ nsresult HTMLInputElement::InitFilePicker(FilePickerType aType) {
return NS_ERROR_FAILURE;
}
@@ -1521,10 +1521,10 @@ index 4a3e5b2c935ad1cfb1bff706933fc2373f90a937..d8eac957b88ea2a5edbf1f0f4fde177e
return NS_OK;
}
diff --git a/dom/interfaces/base/nsIDOMWindowUtils.idl b/dom/interfaces/base/nsIDOMWindowUtils.idl
-index 82f7d4d206c7274858a945d5db61aa02c366e472..a23386a5749c4af48b9bb86c8c48928da6aa3a9e 100644
+index 4170a79023a2503831d080a6e65d5e143f34f241..3af08d6ea5f1cfbdc373774764a0c45fe3aa0e27 100644
--- a/dom/interfaces/base/nsIDOMWindowUtils.idl
+++ b/dom/interfaces/base/nsIDOMWindowUtils.idl
-@@ -374,6 +374,26 @@ interface nsIDOMWindowUtils : nsISupports {
+@@ -373,6 +373,26 @@ interface nsIDOMWindowUtils : nsISupports {
[optional] in long aButtons,
[optional] in unsigned long aIdentifier);
@@ -1552,10 +1552,10 @@ index 82f7d4d206c7274858a945d5db61aa02c366e472..a23386a5749c4af48b9bb86c8c48928d
* touchstart, touchend, touchmove, and touchcancel
*
diff --git a/dom/ipc/BrowserChild.cpp b/dom/ipc/BrowserChild.cpp
-index 084c717432a853b8f95a087463dcce93215ca6e8..2689ba865758ce6085f68d86a5d09a27551d229c 100644
+index 996ee2edde76bab0ea409e072b89160a5158d452..7833fe75af2a85666e72627bfd0dd7467a1b8a80 100644
--- a/dom/ipc/BrowserChild.cpp
+++ b/dom/ipc/BrowserChild.cpp
-@@ -1672,6 +1672,21 @@ void BrowserChild::HandleRealMouseButtonEvent(const WidgetMouseEvent& aEvent,
+@@ -1668,6 +1668,21 @@ void BrowserChild::HandleRealMouseButtonEvent(const WidgetMouseEvent& aEvent,
if (postLayerization) {
postLayerization->Register();
}
@@ -1592,7 +1592,7 @@ index 5aa445d2e0a6169e57c44569974d557b3baf7064..671f71979b407f0ca17c66f13805e851
}
diff --git a/dom/media/systemservices/video_engine/desktop_capture_impl.cc b/dom/media/systemservices/video_engine/desktop_capture_impl.cc
-index 2274a21e8a287932342bb4fb58af728d13b89224..367466efc8457f99c87af1d285131f7b6c71c8ef 100644
+index 3f03789fa3948bbf2528975ce112efb7eb987c24..2194e4144de537edb9a765857cc37b0af42dd8fd 100644
--- a/dom/media/systemservices/video_engine/desktop_capture_impl.cc
+++ b/dom/media/systemservices/video_engine/desktop_capture_impl.cc
@@ -135,11 +135,12 @@ int32_t ScreenDeviceInfoImpl::GetOrientation(const char* aDeviceUniqueIdUTF8,
@@ -1611,7 +1611,7 @@ index 2274a21e8a287932342bb4fb58af728d13b89224..367466efc8457f99c87af1d285131f7b
}
int32_t WindowDeviceInfoImpl::Init() {
-@@ -408,7 +409,7 @@ static bool UsePipewire() {
+@@ -405,7 +406,7 @@ static bool UsePipewire() {
static std::unique_ptr CreateDesktopCapturerAndThread(
CaptureDeviceType aDeviceType, DesktopCapturer::SourceId aSourceId,
@@ -1620,7 +1620,7 @@ index 2274a21e8a287932342bb4fb58af728d13b89224..367466efc8457f99c87af1d285131f7b
DesktopCaptureOptions options = CreateDesktopCaptureOptions();
std::unique_ptr capturer;
-@@ -458,8 +459,10 @@ static std::unique_ptr CreateDesktopCapturerAndThread(
+@@ -455,8 +456,10 @@ static std::unique_ptr CreateDesktopCapturerAndThread(
capturer->SelectSource(aSourceId);
@@ -1633,7 +1633,7 @@ index 2274a21e8a287932342bb4fb58af728d13b89224..367466efc8457f99c87af1d285131f7b
} else if (aDeviceType == CaptureDeviceType::Browser) {
// XXX We don't capture cursors, so avoid the extra indirection layer. We
// could also pass null for the pMouseCursorMonitor.
-@@ -476,7 +479,8 @@ static std::unique_ptr CreateDesktopCapturerAndThread(
+@@ -473,7 +476,8 @@ static std::unique_ptr CreateDesktopCapturerAndThread(
}
DesktopCaptureImpl::DesktopCaptureImpl(const int32_t aId, const char* aUniqueId,
@@ -1643,7 +1643,7 @@ index 2274a21e8a287932342bb4fb58af728d13b89224..367466efc8457f99c87af1d285131f7b
: mModuleId(aId),
mTrackingId(mozilla::TrackingId(CaptureEngineToTrackingSourceStr([&] {
switch (aType) {
-@@ -493,6 +497,7 @@ DesktopCaptureImpl::DesktopCaptureImpl(const int32_t aId, const char* aUniqueId,
+@@ -490,6 +494,7 @@ DesktopCaptureImpl::DesktopCaptureImpl(const int32_t aId, const char* aUniqueId,
aId)),
mDeviceUniqueId(aUniqueId),
mDeviceType(aType),
@@ -1651,7 +1651,7 @@ index 2274a21e8a287932342bb4fb58af728d13b89224..367466efc8457f99c87af1d285131f7b
mControlThread(mozilla::GetCurrentSerialEventTarget()),
mNextFrameMinimumTime(Timestamp::Zero()),
mCallbacks("DesktopCaptureImpl::mCallbacks") {}
-@@ -517,6 +522,19 @@ void DesktopCaptureImpl::DeRegisterCaptureDataCallback(
+@@ -514,6 +519,19 @@ void DesktopCaptureImpl::DeRegisterCaptureDataCallback(
}
}
@@ -1671,7 +1671,7 @@ index 2274a21e8a287932342bb4fb58af728d13b89224..367466efc8457f99c87af1d285131f7b
int32_t DesktopCaptureImpl::StopCaptureIfAllClientsClose() {
{
auto callbacks = mCallbacks.Lock();
-@@ -549,7 +567,7 @@ int32_t DesktopCaptureImpl::StartCapture(
+@@ -546,7 +564,7 @@ int32_t DesktopCaptureImpl::StartCapture(
DesktopCapturer::SourceId sourceId = std::stoi(mDeviceUniqueId);
std::unique_ptr capturer = CreateDesktopCapturerAndThread(
@@ -1680,7 +1680,7 @@ index 2274a21e8a287932342bb4fb58af728d13b89224..367466efc8457f99c87af1d285131f7b
MOZ_ASSERT(!capturer == !mCaptureThread);
if (!capturer) {
-@@ -650,6 +668,15 @@ void DesktopCaptureImpl::OnCaptureResult(DesktopCapturer::Result aResult,
+@@ -647,6 +665,15 @@ void DesktopCaptureImpl::OnCaptureResult(DesktopCapturer::Result aResult,
frameInfo.height = aFrame->size().height();
frameInfo.videoType = VideoType::kARGB;
@@ -1830,7 +1830,7 @@ index 1f2d92bcb5d989bf9ecc044f8c51006f991b0007..9cf5dd885e658e0fe5e7ab75e7fc1f97
return aGlobalOrNull;
diff --git a/dom/security/nsCSPUtils.cpp b/dom/security/nsCSPUtils.cpp
-index a7b02a55a73c0ab459278ce475459e43beeedc8f..b8f292420f1b563bf409e47e01972f23ac1e852f 100644
+index d1bd1d060d749de3ac16bd6e9fd3383383e4dd9a..e6262c210accf12c3d071d42031b432b2a6332b5 100644
--- a/dom/security/nsCSPUtils.cpp
+++ b/dom/security/nsCSPUtils.cpp
@@ -22,6 +22,7 @@
@@ -1877,10 +1877,10 @@ index 2f71b284ee5f7e11f117c447834b48355784448c..2640bd57123c2b03bf4b06a2419cd020
* returned quads are further translated relative to the window
* origin -- which is not the layout origin. Further translation
diff --git a/dom/workers/RuntimeService.cpp b/dom/workers/RuntimeService.cpp
-index f049e706028b59f05f20b1091c5706449f396f8b..b37a9b721cf86cf6f06a2d723ed019f3a46a1176 100644
+index 9c49ad97054ec46cfc52082202d36bb2b53482fc..46d22e51cfeaded274e63b9673e0c3c83b517e7a 100644
--- a/dom/workers/RuntimeService.cpp
+++ b/dom/workers/RuntimeService.cpp
-@@ -985,7 +985,7 @@ void PrefLanguagesChanged(const char* /* aPrefName */, void* /* aClosure */) {
+@@ -986,7 +986,7 @@ void PrefLanguagesChanged(const char* /* aPrefName */, void* /* aClosure */) {
AssertIsOnMainThread();
nsTArray languages;
@@ -1889,7 +1889,7 @@ index f049e706028b59f05f20b1091c5706449f396f8b..b37a9b721cf86cf6f06a2d723ed019f3
RuntimeService* runtime = RuntimeService::GetService();
if (runtime) {
-@@ -1187,8 +1187,7 @@ bool RuntimeService::RegisterWorker(WorkerPrivate& aWorkerPrivate) {
+@@ -1173,8 +1173,7 @@ bool RuntimeService::RegisterWorker(WorkerPrivate& aWorkerPrivate) {
}
// The navigator overridden properties should have already been read.
@@ -1899,7 +1899,7 @@ index f049e706028b59f05f20b1091c5706449f396f8b..b37a9b721cf86cf6f06a2d723ed019f3
mNavigatorPropertiesLoaded = true;
}
-@@ -1800,6 +1799,13 @@ void RuntimeService::PropagateStorageAccessPermissionGranted(
+@@ -1778,6 +1777,13 @@ void RuntimeService::PropagateStorageAccessPermissionGranted(
}
}
@@ -1913,7 +1913,7 @@ index f049e706028b59f05f20b1091c5706449f396f8b..b37a9b721cf86cf6f06a2d723ed019f3
template
void RuntimeService::BroadcastAllWorkers(const Func& aFunc) {
AssertIsOnMainThread();
-@@ -2322,6 +2328,14 @@ void PropagateStorageAccessPermissionGrantedToWorkers(
+@@ -2295,6 +2301,14 @@ void PropagateStorageAccessPermissionGrantedToWorkers(
}
}
@@ -1929,10 +1929,10 @@ index f049e706028b59f05f20b1091c5706449f396f8b..b37a9b721cf86cf6f06a2d723ed019f3
MOZ_ASSERT(!NS_IsMainThread());
MOZ_ASSERT(aCx);
diff --git a/dom/workers/RuntimeService.h b/dom/workers/RuntimeService.h
-index a770d7330edb2f99483ab0363211817ae40028b0..f677f14e2ac42c94483726bac8538b52129615cc 100644
+index e6deb81f357043a937d032bb4b6c38207203f4d9..ff16582af9fbf550dfb7b5639658c34199524c45 100644
--- a/dom/workers/RuntimeService.h
+++ b/dom/workers/RuntimeService.h
-@@ -110,6 +110,8 @@ class RuntimeService final : public nsIObserver {
+@@ -108,6 +108,8 @@ class RuntimeService final : public nsIObserver {
void PropagateStorageAccessPermissionGranted(
const nsPIDOMWindowInner& aWindow);
@@ -1955,10 +1955,10 @@ index d10dabb5c5ff8e17851edf2bd2efc08e74584d8e..53c4070c5fde43b27fb8fbfdcf4c23d8
bool IsWorkerGlobal(JSObject* global);
diff --git a/dom/workers/WorkerPrivate.cpp b/dom/workers/WorkerPrivate.cpp
-index 3c6a2fa249f4b993a440563247a68435cd7820d8..c82dc3c4d740abb74735d909b48b600ead193c76 100644
+index f7a8cec1ef69778b4579b72c58adeaf91315299e..87c18442e643a980cb07d43b9b1005c90953770b 100644
--- a/dom/workers/WorkerPrivate.cpp
+++ b/dom/workers/WorkerPrivate.cpp
-@@ -709,6 +709,18 @@ class UpdateContextOptionsRunnable final : public WorkerControlRunnable {
+@@ -711,6 +711,18 @@ class UpdateContextOptionsRunnable final : public WorkerControlRunnable {
}
};
@@ -1977,7 +1977,7 @@ index 3c6a2fa249f4b993a440563247a68435cd7820d8..c82dc3c4d740abb74735d909b48b600e
class UpdateLanguagesRunnable final : public WorkerRunnable {
nsTArray mLanguages;
-@@ -2004,6 +2016,16 @@ void WorkerPrivate::UpdateContextOptions(
+@@ -2006,6 +2018,16 @@ void WorkerPrivate::UpdateContextOptions(
}
}
@@ -1994,7 +1994,7 @@ index 3c6a2fa249f4b993a440563247a68435cd7820d8..c82dc3c4d740abb74735d909b48b600e
void WorkerPrivate::UpdateLanguages(const nsTArray& aLanguages) {
AssertIsOnParentThread();
-@@ -5412,6 +5434,15 @@ void WorkerPrivate::UpdateContextOptionsInternal(
+@@ -5417,6 +5439,15 @@ void WorkerPrivate::UpdateContextOptionsInternal(
}
}
@@ -2011,7 +2011,7 @@ index 3c6a2fa249f4b993a440563247a68435cd7820d8..c82dc3c4d740abb74735d909b48b600e
const nsTArray& aLanguages) {
WorkerGlobalScope* globalScope = GlobalScope();
diff --git a/dom/workers/WorkerPrivate.h b/dom/workers/WorkerPrivate.h
-index e78423f757d81bebf6a82ad261348f15af30f063..ed1d5eca153a3eab9268fa5d6402d40c34281f2c 100644
+index 6eb840b8e64b5a4db3c621599780561ef2fdaef4..59e27e6949dfda389516d64a7b4ac0f0e5a60148 100644
--- a/dom/workers/WorkerPrivate.h
+++ b/dom/workers/WorkerPrivate.h
@@ -413,6 +413,8 @@ class WorkerPrivate final
@@ -2085,10 +2085,10 @@ index dd82415624e1f05eaad818d68b8588ffb1b64ab1..c48ab77757aff777658fd4e37db6bdea
inline ClippedTime TimeClip(double time);
diff --git a/js/src/debugger/Object.cpp b/js/src/debugger/Object.cpp
-index 9c3a652b60e09013f77b9a7f7da03d376d21cb6a..091daaee4a3402a0c572a21142517e4f9e706257 100644
+index 49525b426a9f8656a471192ccf62f47f555a90a4..f6c832af063326a5e9e7166662bb21bc4e41cdca 100644
--- a/js/src/debugger/Object.cpp
+++ b/js/src/debugger/Object.cpp
-@@ -2426,7 +2426,11 @@ Maybe DebuggerObject::call(JSContext* cx,
+@@ -2413,7 +2413,11 @@ Maybe DebuggerObject::call(JSContext* cx,
invokeArgs[i].set(args2[i]);
}
@@ -2255,25 +2255,25 @@ index dac899f7558b26d6848da8b98ed8a93555c8751a..2a07d67fa1c2840b25085566e84dc3b2
// No boxes to return
return;
diff --git a/layout/base/PresShell.cpp b/layout/base/PresShell.cpp
-index bd8cfa12fa79306b8d41011f2abf4ed40c12c2c4..63c77656c2e7c6c9a4d713ca9561411f304e187e 100644
+index bb625a6dda2475164d3236ed03ee248bfc2f6d66..6e6d5aca3701c4eb2b69e74226cf6ed8b10b65cd 100644
--- a/layout/base/PresShell.cpp
+++ b/layout/base/PresShell.cpp
-@@ -10896,7 +10896,9 @@ auto PresShell::ComputeActiveness() const -> Activeness {
+@@ -10925,7 +10925,9 @@ bool PresShell::ComputeActiveness() const {
if (!browserChild->IsVisible()) {
MOZ_LOG(gLog, LogLevel::Debug,
(" > BrowserChild %p is not visible", browserChild));
-- return {false, inActiveTab};
+- return false;
+ bool isActive;
+ root->GetDocShell()->GetForceActiveState(&isActive);
-+ return {isActive, inActiveTab};
++ return isActive;
}
// If the browser is visible but just due to be preserving layers
diff --git a/layout/style/GeckoBindings.h b/layout/style/GeckoBindings.h
-index 9e5ffc264bbbfa13b0cdb37a5c987074f2d8e8c9..9b7164b10703b48f538ee983b1ef82146876e2bb 100644
+index 1d5d60bb4e7cc0d93ff7e6662c9102bde59509c1..ee1436d6e06f13a4386314e8bb8e4e3998ae5a0c 100644
--- a/layout/style/GeckoBindings.h
+++ b/layout/style/GeckoBindings.h
-@@ -629,6 +629,7 @@ float Gecko_MediaFeatures_GetResolution(const mozilla::dom::Document*);
+@@ -630,6 +630,7 @@ float Gecko_MediaFeatures_GetResolution(const mozilla::dom::Document*);
bool Gecko_MediaFeatures_PrefersReducedMotion(const mozilla::dom::Document*);
bool Gecko_MediaFeatures_PrefersReducedTransparency(
const mozilla::dom::Document*);
@@ -2282,10 +2282,10 @@ index 9e5ffc264bbbfa13b0cdb37a5c987074f2d8e8c9..9b7164b10703b48f538ee983b1ef8214
const mozilla::dom::Document*);
mozilla::StylePrefersColorScheme Gecko_MediaFeatures_PrefersColorScheme(
diff --git a/layout/style/nsMediaFeatures.cpp b/layout/style/nsMediaFeatures.cpp
-index 581b6da29ba6bc321c549802b8bd5e3364724460..33827a19b46bc4814a0554629cea41e3d566bf8e 100644
+index 5e4fe65abcc373e6c0fba40458677cebb085266b..9425984faca3579cb90e96ae46ed47e66c2dc664 100644
--- a/layout/style/nsMediaFeatures.cpp
+++ b/layout/style/nsMediaFeatures.cpp
-@@ -277,11 +277,11 @@ bool Gecko_MediaFeatures_MatchesPlatform(StylePlatform aPlatform) {
+@@ -261,11 +261,11 @@ bool Gecko_MediaFeatures_MatchesPlatform(StylePlatform aPlatform) {
}
bool Gecko_MediaFeatures_PrefersReducedMotion(const Document* aDocument) {
@@ -2303,10 +2303,10 @@ index 581b6da29ba6bc321c549802b8bd5e3364724460..33827a19b46bc4814a0554629cea41e3
bool Gecko_MediaFeatures_PrefersReducedTransparency(const Document* aDocument) {
diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js
-index a366fdaeb88daf820734508f7916ec68c70273fd..ebbbe8cee358517a851cfec085738b58c3791421 100644
+index a38a760f9c5ce666ad8d51d46f7685c9ac45d7b3..ed4d6bf2512f2428781e83612643230a5974d80a 100644
--- a/modules/libpref/init/all.js
+++ b/modules/libpref/init/all.js
-@@ -3968,7 +3968,9 @@ pref("devtools.f12_enabled", true);
+@@ -3933,7 +3933,9 @@ pref("devtools.f12_enabled", true);
// doesn't provide a way to lock the pref
pref("dom.postMessage.sharedArrayBuffer.bypassCOOP_COEP.insecure.enabled", false);
#else
@@ -2318,10 +2318,10 @@ index a366fdaeb88daf820734508f7916ec68c70273fd..ebbbe8cee358517a851cfec085738b58
// Whether sites require the open-protocol-handler permission to open a
diff --git a/netwerk/base/LoadInfo.cpp b/netwerk/base/LoadInfo.cpp
-index f7c5829c964217132bbd3b67b961a183df42fb77..cd1006e2234f50facc916f25e996a2b0bc444d0b 100644
+index 164a1c1457ef21a6e1019caf9d1e710649e9f754..07fd3ecbabc103599204606024d8e0403345f02e 100644
--- a/netwerk/base/LoadInfo.cpp
+++ b/netwerk/base/LoadInfo.cpp
-@@ -645,7 +645,8 @@ LoadInfo::LoadInfo(const LoadInfo& rhs)
+@@ -641,7 +641,8 @@ LoadInfo::LoadInfo(const LoadInfo& rhs)
mUnstrippedURI(rhs.mUnstrippedURI),
mInterceptionInfo(rhs.mInterceptionInfo),
mHasInjectedCookieForCookieBannerHandling(
@@ -2331,7 +2331,7 @@ index f7c5829c964217132bbd3b67b961a183df42fb77..cd1006e2234f50facc916f25e996a2b0
LoadInfo::LoadInfo(
nsIPrincipal* aLoadingPrincipal, nsIPrincipal* aTriggeringPrincipal,
-@@ -2298,4 +2299,16 @@ LoadInfo::SetHasInjectedCookieForCookieBannerHandling(
+@@ -2321,4 +2322,16 @@ LoadInfo::SetHasInjectedCookieForCookieBannerHandling(
return NS_OK;
}
@@ -2349,10 +2349,10 @@ index f7c5829c964217132bbd3b67b961a183df42fb77..cd1006e2234f50facc916f25e996a2b0
+
} // namespace mozilla::net
diff --git a/netwerk/base/LoadInfo.h b/netwerk/base/LoadInfo.h
-index dace62e98dff10497c0271dac1c010afd3733a67..18e30006978a249ebdacdc8e07ce0b980e9c70ea 100644
+index f97d2389297ea1c4771ae2c7e55a0b3eade0743a..89c47840301480ffce5dd385bb5b0a34bfdd7390 100644
--- a/netwerk/base/LoadInfo.h
+++ b/netwerk/base/LoadInfo.h
-@@ -384,6 +384,8 @@ class LoadInfo final : public nsILoadInfo {
+@@ -387,6 +387,8 @@ class LoadInfo final : public nsILoadInfo {
nsCOMPtr mInterceptionInfo;
bool mHasInjectedCookieForCookieBannerHandling = false;
@@ -2362,10 +2362,10 @@ index dace62e98dff10497c0271dac1c010afd3733a67..18e30006978a249ebdacdc8e07ce0b98
// This is exposed solely for testing purposes and should not be used outside of
diff --git a/netwerk/base/TRRLoadInfo.cpp b/netwerk/base/TRRLoadInfo.cpp
-index 2b9360cd23f1f2009ee2788470c4ff30a2e6e6c1..f6f7ca21ef0509a8751bfa9e08e24219b32a5c3e 100644
+index 37b0b7bfe516ca69441e4cdd58861de9d595c692..6d3bb900624b6ad9e9449ce6f462a87dacfd4cb9 100644
--- a/netwerk/base/TRRLoadInfo.cpp
+++ b/netwerk/base/TRRLoadInfo.cpp
-@@ -827,5 +827,16 @@ TRRLoadInfo::SetHasInjectedCookieForCookieBannerHandling(
+@@ -845,5 +845,16 @@ TRRLoadInfo::SetHasInjectedCookieForCookieBannerHandling(
return NS_ERROR_NOT_IMPLEMENTED;
}
@@ -2383,10 +2383,10 @@ index 2b9360cd23f1f2009ee2788470c4ff30a2e6e6c1..f6f7ca21ef0509a8751bfa9e08e24219
} // namespace net
} // namespace mozilla
diff --git a/netwerk/base/nsILoadInfo.idl b/netwerk/base/nsILoadInfo.idl
-index f3f8304a1b88ba7b1b7465963a717997d812a2b4..06402586a95efdcc01397837d2cad06b4503f0b7 100644
+index 7f3422274f7c075fcd6486ae5b8f5cd073aa1ccc..b667ba1e7dcea7e5d31f27df211553929e069993 100644
--- a/netwerk/base/nsILoadInfo.idl
+++ b/netwerk/base/nsILoadInfo.idl
-@@ -1488,4 +1488,6 @@ interface nsILoadInfo : nsISupports
+@@ -1505,4 +1505,6 @@ interface nsILoadInfo : nsISupports
* handle a cookie banner. This is only done for top-level requests.
*/
[infallible] attribute boolean hasInjectedCookieForCookieBannerHandling;
@@ -2406,10 +2406,10 @@ index d72dc570dc82ff9d576942b9e7c23d8a74d68049..a5fcddc4b0e53a862e5a77120b4ccff8
/**
* Set the status and reason for the forthcoming synthesized response.
diff --git a/netwerk/ipc/DocumentLoadListener.cpp b/netwerk/ipc/DocumentLoadListener.cpp
-index 7ce1ef0a864bc5fa6a616170dab03974c62aa8ed..d514ea18fd18d03ddb898636ba34d724d41cfdc2 100644
+index ec7f54c1cc7a177e6487f4bc317ef28bfa34f348..8e34230df1183b408a8f6439965c0b48826aa974 100644
--- a/netwerk/ipc/DocumentLoadListener.cpp
+++ b/netwerk/ipc/DocumentLoadListener.cpp
-@@ -163,6 +163,7 @@ static auto CreateDocumentLoadInfo(CanonicalBrowsingContext* aBrowsingContext,
+@@ -165,6 +165,7 @@ static auto CreateDocumentLoadInfo(CanonicalBrowsingContext* aBrowsingContext,
loadInfo->SetHasValidUserGestureActivation(
aLoadState->HasValidUserGestureActivation());
loadInfo->SetIsMetaRefresh(aLoadState->IsMetaRefresh());
@@ -2418,7 +2418,7 @@ index 7ce1ef0a864bc5fa6a616170dab03974c62aa8ed..d514ea18fd18d03ddb898636ba34d724
return loadInfo.forget();
}
diff --git a/netwerk/protocol/http/InterceptedHttpChannel.cpp b/netwerk/protocol/http/InterceptedHttpChannel.cpp
-index c493259905d8b4e6b3a860cd6436c2606e8e8d29..7060deb04d3b3deb3e1cd90b75848229cf2252f2 100644
+index 03a2605c5d5591f7656ba4c4ff9a46f2e390c404..717f87b632995cb955fce5995604153ae4084561 100644
--- a/netwerk/protocol/http/InterceptedHttpChannel.cpp
+++ b/netwerk/protocol/http/InterceptedHttpChannel.cpp
@@ -729,6 +729,14 @@ NS_IMPL_ISUPPORTS(ResetInterceptionHeaderVisitor, nsIHttpHeaderVisitor)
@@ -2436,7 +2436,7 @@ index c493259905d8b4e6b3a860cd6436c2606e8e8d29..7060deb04d3b3deb3e1cd90b75848229
NS_IMETHODIMP
InterceptedHttpChannel::ResetInterception(bool aBypass) {
INTERCEPTED_LOG(("InterceptedHttpChannel::ResetInterception [%p] bypass: %s",
-@@ -1071,11 +1079,18 @@ InterceptedHttpChannel::OnStartRequest(nsIRequest* aRequest) {
+@@ -1072,11 +1080,18 @@ InterceptedHttpChannel::OnStartRequest(nsIRequest* aRequest) {
GetCallback(mProgressSink);
}
@@ -2456,10 +2456,10 @@ index c493259905d8b4e6b3a860cd6436c2606e8e8d29..7060deb04d3b3deb3e1cd90b75848229
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 0908642956b66e867be59c5777f26e4c9f95d5ec..3d7677c454c5a0d2169686c2abad7b332f2413ce 100644
+index b2423f754063dd42ad80a607dc7a39ddc2bf89b3..99ce1ebd141ff1d2f6982b2fa8ed485c658d3abe 100644
--- a/parser/html/nsHtml5TreeOpExecutor.cpp
+++ b/parser/html/nsHtml5TreeOpExecutor.cpp
-@@ -1372,6 +1372,10 @@ void nsHtml5TreeOpExecutor::UpdateReferrerInfoFromMeta(
+@@ -1375,6 +1375,10 @@ void nsHtml5TreeOpExecutor::UpdateReferrerInfoFromMeta(
void nsHtml5TreeOpExecutor::AddSpeculationCSP(const nsAString& aCSP) {
NS_ASSERTION(NS_IsMainThread(), "Wrong thread!");
@@ -2544,7 +2544,7 @@ index 6dfd07d6b676a99993408921de8dea9d561f201d..e3c6794363cd6336effbeac83a179f37
readonly attribute boolean securityCheckDisabled;
};
diff --git a/services/settings/Utils.sys.mjs b/services/settings/Utils.sys.mjs
-index 697409ab07c5274696b51c5033cb07ca408d5332..4bb56c915535d3578525e82a3309435ad333fba2 100644
+index d9150337a18c0d41fab89c46a3792049df89bc84..0257ee0899355c315da7f632deec645738732663 100644
--- a/services/settings/Utils.sys.mjs
+++ b/services/settings/Utils.sys.mjs
@@ -95,7 +95,7 @@ function _isUndefined(value) {
@@ -2557,7 +2557,7 @@ index 697409ab07c5274696b51c5033cb07ca408d5332..4bb56c915535d3578525e82a3309435a
: AppConstants.REMOTE_SETTINGS_SERVER_URL;
},
diff --git a/servo/components/style/gecko/media_features.rs b/servo/components/style/gecko/media_features.rs
-index 4ca746ea84d917b95dfb66953660ca0a4572e647..bafeb667f3dbc7fa66d4baf811bf5cd5eb728c60 100644
+index 986c5fe7d8dc07ae71057cb1cd778566184cd137..bf83c7504b457383f02ec4d211c0659ad3ca415b 100644
--- a/servo/components/style/gecko/media_features.rs
+++ b/servo/components/style/gecko/media_features.rs
@@ -291,10 +291,15 @@ pub enum ForcedColors {
@@ -2594,10 +2594,10 @@ index 54de3abab5757dd706e3d909ccef6a0bed5deacc..f5c5480cd052ede0c76e5eec733dbb92
// ignored for Linux.
const unsigned long CHROME_SUPPRESS_ANIMATION = 0x01000000;
diff --git a/toolkit/components/enterprisepolicies/EnterprisePoliciesParent.sys.mjs b/toolkit/components/enterprisepolicies/EnterprisePoliciesParent.sys.mjs
-index acea04b6fd130ae60a9ddbd8d5e6ebfcec2d547a..74019bfce26447a8a900b0303f30db42c24325a9 100644
+index 61eda006f090e391b3c0f209e9400920f480c115..8fea8caf17913a2736884caca8f6087f1fb48d15 100644
--- a/toolkit/components/enterprisepolicies/EnterprisePoliciesParent.sys.mjs
+++ b/toolkit/components/enterprisepolicies/EnterprisePoliciesParent.sys.mjs
-@@ -110,6 +110,12 @@ EnterprisePoliciesManager.prototype = {
+@@ -108,6 +108,12 @@ EnterprisePoliciesManager.prototype = {
Services.prefs.clearUserPref(PREF_POLICIES_APPLIED);
}
@@ -2639,10 +2639,10 @@ index 654903fadb709be976b72f36f155e23bc0622152..815b3dc24c9fda6b1db6c4666ac68904
int32_t aMaxSelfProgress,
int32_t aCurTotalProgress,
diff --git a/toolkit/components/windowwatcher/nsWindowWatcher.cpp b/toolkit/components/windowwatcher/nsWindowWatcher.cpp
-index 72ee99c7341de54f2282e3f2a686d6a33b26ecaf..4a739e7cad294cf809a697da905253adee4e24b1 100644
+index 9c8e6a919263899f95bc41b1ca419d5048e50b2a..4b3ad73393c24268b6df62823e56bcf4367cac21 100644
--- a/toolkit/components/windowwatcher/nsWindowWatcher.cpp
+++ b/toolkit/components/windowwatcher/nsWindowWatcher.cpp
-@@ -1875,7 +1875,11 @@ uint32_t nsWindowWatcher::CalculateChromeFlagsForContent(
+@@ -1882,7 +1882,11 @@ uint32_t nsWindowWatcher::CalculateChromeFlagsForContent(
// Open a minimal popup.
*aIsPopupRequested = true;
@@ -2656,10 +2656,10 @@ index 72ee99c7341de54f2282e3f2a686d6a33b26ecaf..4a739e7cad294cf809a697da905253ad
/**
diff --git a/toolkit/mozapps/update/UpdateService.sys.mjs b/toolkit/mozapps/update/UpdateService.sys.mjs
-index a0ba7fe61e0449a7302302429993091075950c21..15e89c7d8000e66bbbf97dd0bb00da3e710e5ec0 100644
+index e79ef9a551dd4fd0854bbfae56d4d7ee105a70c7..814c53dcc65faf3441a66d253dbcd59363ee32ac 100644
--- a/toolkit/mozapps/update/UpdateService.sys.mjs
+++ b/toolkit/mozapps/update/UpdateService.sys.mjs
-@@ -3848,6 +3848,8 @@ UpdateService.prototype = {
+@@ -3816,6 +3816,8 @@ UpdateService.prototype = {
},
get disabledForTesting() {
@@ -2681,23 +2681,22 @@ index d2ccd8748228b04c84754f9a6dce2ca3bf991e47..d3a8ea1d9994f724cd52cecd4d2cd285
]
diff --git a/toolkit/xre/nsWindowsWMain.cpp b/toolkit/xre/nsWindowsWMain.cpp
-index ea14a59b80bbfbaa17d7569734b8409d9d21fcde..28cb052c3115f91e6a036ad8466385ff1d740cd0 100644
+index 7eb9e1104682d4eb47060654f43a1efa8b2a6bb2..a8315d6decf654b5302bea5beeea34140c300ded 100644
--- a/toolkit/xre/nsWindowsWMain.cpp
+++ b/toolkit/xre/nsWindowsWMain.cpp
-@@ -14,9 +14,11 @@
+@@ -14,8 +14,10 @@
#endif
#include "mozilla/Char16.h"
+#include "mozilla/CmdLineAndEnvUtils.h"
#include "nsUTF8Utils.h"
- #include "nsWindowsHelpers.h"
+#include
#include
- #include
-
-@@ -130,6 +132,19 @@ int wmain(int argc, WCHAR** argv) {
+ #ifdef __MINGW32__
+@@ -114,6 +116,19 @@ static void FreeAllocStrings(int argc, char** argv) {
+ int wmain(int argc, WCHAR** argv) {
SanitizeEnvironmentVariables();
SetDllDirectoryW(L"");
+ bool hasJugglerPipe =
@@ -2717,10 +2716,10 @@ index ea14a59b80bbfbaa17d7569734b8409d9d21fcde..28cb052c3115f91e6a036ad8466385ff
// Only run this code if LauncherProcessWin.h was included beforehand, thus
// signalling that the hosting process should support launcher mode.
diff --git a/uriloader/base/nsDocLoader.cpp b/uriloader/base/nsDocLoader.cpp
-index e1e46ccdceae595f95d100116ff480905047e82b..eaa0252e768140120158525723ad867b8cb020be 100644
+index f779f0028e87a0fd1d7f633c9c23872f9d840cf6..29a2ec96eb52fd3b09994c63a0d5280437be2854 100644
--- a/uriloader/base/nsDocLoader.cpp
+++ b/uriloader/base/nsDocLoader.cpp
-@@ -830,6 +830,13 @@ void nsDocLoader::DocLoaderIsEmpty(bool aFlushLayout,
+@@ -828,6 +828,13 @@ void nsDocLoader::DocLoaderIsEmpty(bool aFlushLayout,
("DocLoader:%p: Firing load event for document.open\n",
this));
@@ -2735,7 +2734,7 @@ index e1e46ccdceae595f95d100116ff480905047e82b..eaa0252e768140120158525723ad867b
// nsDocumentViewer::LoadComplete that doesn't do various things
// that are not relevant here because this wasn't an actual
diff --git a/uriloader/exthandler/nsExternalHelperAppService.cpp b/uriloader/exthandler/nsExternalHelperAppService.cpp
-index ee210396f0e7265180f07f6f034c9389a87a02ce..6c0997ecb153547558ad1a0c146b0ca4e8ffbc46 100644
+index 4573e28470c5112f5ac2c5dd53e7a9d1ceedb943..b53b86d8e39f1de4b0d0f1a8d5d7295ea050b878 100644
--- a/uriloader/exthandler/nsExternalHelperAppService.cpp
+++ b/uriloader/exthandler/nsExternalHelperAppService.cpp
@@ -112,6 +112,7 @@
@@ -2746,7 +2745,7 @@ index ee210396f0e7265180f07f6f034c9389a87a02ce..6c0997ecb153547558ad1a0c146b0ca4
#include "mozilla/Preferences.h"
#include "mozilla/ipc/URIUtils.h"
-@@ -836,6 +837,12 @@ NS_IMETHODIMP nsExternalHelperAppService::ApplyDecodingForExtension(
+@@ -831,6 +832,12 @@ NS_IMETHODIMP nsExternalHelperAppService::ApplyDecodingForExtension(
return NS_OK;
}
@@ -2759,7 +2758,7 @@ index ee210396f0e7265180f07f6f034c9389a87a02ce..6c0997ecb153547558ad1a0c146b0ca4
nsresult nsExternalHelperAppService::GetFileTokenForPath(
const char16_t* aPlatformAppPath, nsIFile** aFile) {
nsDependentString platformAppPath(aPlatformAppPath);
-@@ -1446,7 +1453,12 @@ nsresult nsExternalAppHandler::SetUpTempFile(nsIChannel* aChannel) {
+@@ -1442,7 +1449,12 @@ nsresult nsExternalAppHandler::SetUpTempFile(nsIChannel* aChannel) {
// Strip off the ".part" from mTempLeafName
mTempLeafName.Truncate(mTempLeafName.Length() - ArrayLength(".part") + 1);
@@ -2772,7 +2771,7 @@ index ee210396f0e7265180f07f6f034c9389a87a02ce..6c0997ecb153547558ad1a0c146b0ca4
mSaver =
do_CreateInstance(NS_BACKGROUNDFILESAVERSTREAMLISTENER_CONTRACTID, &rv);
NS_ENSURE_SUCCESS(rv, rv);
-@@ -1635,7 +1647,36 @@ NS_IMETHODIMP nsExternalAppHandler::OnStartRequest(nsIRequest* request) {
+@@ -1631,7 +1643,36 @@ NS_IMETHODIMP nsExternalAppHandler::OnStartRequest(nsIRequest* request) {
return NS_OK;
}
@@ -2810,7 +2809,7 @@ index ee210396f0e7265180f07f6f034c9389a87a02ce..6c0997ecb153547558ad1a0c146b0ca4
if (NS_FAILED(rv)) {
nsresult transferError = rv;
-@@ -1687,6 +1728,9 @@ NS_IMETHODIMP nsExternalAppHandler::OnStartRequest(nsIRequest* request) {
+@@ -1683,6 +1724,9 @@ NS_IMETHODIMP nsExternalAppHandler::OnStartRequest(nsIRequest* request) {
bool alwaysAsk = true;
mMimeInfo->GetAlwaysAskBeforeHandling(&alwaysAsk);
@@ -2820,7 +2819,7 @@ index ee210396f0e7265180f07f6f034c9389a87a02ce..6c0997ecb153547558ad1a0c146b0ca4
if (alwaysAsk) {
// But we *don't* ask if this mimeInfo didn't come from
// our user configuration datastore and the user has said
-@@ -2193,6 +2237,16 @@ nsExternalAppHandler::OnSaveComplete(nsIBackgroundFileSaver* aSaver,
+@@ -2199,6 +2243,16 @@ nsExternalAppHandler::OnSaveComplete(nsIBackgroundFileSaver* aSaver,
NotifyTransfer(aStatus);
}
@@ -2837,7 +2836,7 @@ index ee210396f0e7265180f07f6f034c9389a87a02ce..6c0997ecb153547558ad1a0c146b0ca4
return NS_OK;
}
-@@ -2674,6 +2728,15 @@ NS_IMETHODIMP nsExternalAppHandler::Cancel(nsresult aReason) {
+@@ -2680,6 +2734,15 @@ NS_IMETHODIMP nsExternalAppHandler::Cancel(nsresult aReason) {
}
}
@@ -2854,7 +2853,7 @@ index ee210396f0e7265180f07f6f034c9389a87a02ce..6c0997ecb153547558ad1a0c146b0ca4
// OnStartRequest)
mDialog = nullptr;
diff --git a/uriloader/exthandler/nsExternalHelperAppService.h b/uriloader/exthandler/nsExternalHelperAppService.h
-index 6c8cbc5871d3aa721a3f1a3ff6c0ef8b0044c63e..8e7c9af1a2cfe60c9c543af1ab55f6c229000bd4 100644
+index 205f73cfa127e15e171854165c92551fea957e84..6399525ea0abb55655c824b086a043d022392113 100644
--- a/uriloader/exthandler/nsExternalHelperAppService.h
+++ b/uriloader/exthandler/nsExternalHelperAppService.h
@@ -257,6 +257,8 @@ class nsExternalHelperAppService : public nsIExternalHelperAppService,
@@ -2866,7 +2865,7 @@ index 6c8cbc5871d3aa721a3f1a3ff6c0ef8b0044c63e..8e7c9af1a2cfe60c9c543af1ab55f6c2
};
/**
-@@ -456,6 +458,9 @@ class nsExternalAppHandler final : public nsIStreamListener,
+@@ -462,6 +464,9 @@ class nsExternalAppHandler final : public nsIStreamListener,
* Upon successful return, both mTempFile and mSaver will be valid.
*/
nsresult SetUpTempFile(nsIChannel* aChannel);
@@ -2877,19 +2876,22 @@ index 6c8cbc5871d3aa721a3f1a3ff6c0ef8b0044c63e..8e7c9af1a2cfe60c9c543af1ab55f6c2
* When we download a helper app, we are going to retarget all load
* notifications into our own docloader and load group instead of
diff --git a/uriloader/exthandler/nsIExternalHelperAppService.idl b/uriloader/exthandler/nsIExternalHelperAppService.idl
-index 307e6196a89df52d0bccc3ebd1359f58e32de75d..c3692d0f76178ac3aeb1c77a0e973bfa22359346 100644
+index 4a399acb72d4fd475c9ae43e9eadbc32f261e290..31e9490a7dfd7d7eff69ad23c9ce277f367d1524 100644
--- a/uriloader/exthandler/nsIExternalHelperAppService.idl
+++ b/uriloader/exthandler/nsIExternalHelperAppService.idl
-@@ -6,6 +6,8 @@
+@@ -6,8 +6,11 @@
#include "nsICancelable.idl"
+webidl BrowsingContext;
+interface nsIHelperAppLauncher;
interface nsIURI;
- interface nsIRequest;
+ interface nsIChannel;
++interface nsIRequest;
interface nsIStreamListener;
-@@ -15,6 +17,17 @@ interface nsIWebProgressListener2;
+ interface nsIFile;
+ interface nsIMIMEInfo;
+@@ -15,6 +18,17 @@ interface nsIWebProgressListener2;
interface nsIInterfaceRequestor;
webidl BrowsingContext;
@@ -2907,7 +2909,7 @@ index 307e6196a89df52d0bccc3ebd1359f58e32de75d..c3692d0f76178ac3aeb1c77a0e973bfa
/**
* The external helper app service is used for finding and launching
* platform specific external applications for a given mime content type.
-@@ -76,6 +89,7 @@ interface nsIExternalHelperAppService : nsISupports
+@@ -76,6 +90,7 @@ interface nsIExternalHelperAppService : nsISupports
boolean applyDecodingForExtension(in AUTF8String aExtension,
in ACString aEncodingType);
@@ -2944,34 +2946,34 @@ index 1c25e9d9a101233f71e92288a0f93125b81ac1c5..22cf67b0f6e3ddd2b3ed725a314ba6a9
}
#endif
diff --git a/widget/MouseEvents.h b/widget/MouseEvents.h
-index 5a19cb4082674ede982a0c66c84bf7c4642abe2b..5fe6ae7b5bf605e5d9130aa164d7cbbb486e54e0 100644
+index 5e20484e043e070dd8a6d7ee5ecab939435efc2c..f721212f147d01a8824e67c26216f249032254bf 100644
--- a/widget/MouseEvents.h
+++ b/widget/MouseEvents.h
-@@ -203,6 +203,7 @@ class WidgetMouseEvent : public WidgetMouseEventBase,
+@@ -204,6 +204,7 @@ class WidgetMouseEvent : public WidgetMouseEventBase,
: mReason(eReal),
mContextMenuTrigger(eNormal),
mClickCount(0),
+ mJugglerEventId(0),
mIgnoreRootScrollFrame(false),
- mUseLegacyNonPrimaryDispatch(false),
mClickEventPrevented(false) {}
-@@ -213,6 +214,7 @@ class WidgetMouseEvent : public WidgetMouseEventBase,
+
+@@ -215,6 +216,7 @@ class WidgetMouseEvent : public WidgetMouseEventBase,
mReason(aReason),
mContextMenuTrigger(eNormal),
mClickCount(0),
+ mJugglerEventId(0),
mIgnoreRootScrollFrame(false),
- mUseLegacyNonPrimaryDispatch(false),
mClickEventPrevented(false) {}
-@@ -231,6 +233,7 @@ class WidgetMouseEvent : public WidgetMouseEventBase,
+
+@@ -234,6 +236,7 @@ class WidgetMouseEvent : public WidgetMouseEventBase,
mReason(aReason),
mContextMenuTrigger(aContextMenuTrigger),
mClickCount(0),
+ mJugglerEventId(0),
mIgnoreRootScrollFrame(false),
- mUseLegacyNonPrimaryDispatch(false),
mClickEventPrevented(false) {
-@@ -280,6 +283,9 @@ class WidgetMouseEvent : public WidgetMouseEventBase,
+ if (aMessage == eContextMenu) {
+@@ -282,6 +285,9 @@ class WidgetMouseEvent : public WidgetMouseEventBase,
// Otherwise, this must be 0.
uint32_t mClickCount;
@@ -2981,19 +2983,19 @@ index 5a19cb4082674ede982a0c66c84bf7c4642abe2b..5fe6ae7b5bf605e5d9130aa164d7cbbb
// Whether the event should ignore scroll frame bounds during dispatch.
bool mIgnoreRootScrollFrame;
-@@ -296,6 +302,7 @@ class WidgetMouseEvent : public WidgetMouseEventBase,
+@@ -294,6 +300,7 @@ class WidgetMouseEvent : public WidgetMouseEventBase,
mExitFrom = aEvent.mExitFrom;
mClickCount = aEvent.mClickCount;
+ mJugglerEventId = aEvent.mJugglerEventId;
mIgnoreRootScrollFrame = aEvent.mIgnoreRootScrollFrame;
- mUseLegacyNonPrimaryDispatch = aEvent.mUseLegacyNonPrimaryDispatch;
mClickEventPrevented = aEvent.mClickEventPrevented;
+ }
diff --git a/widget/cocoa/NativeKeyBindings.mm b/widget/cocoa/NativeKeyBindings.mm
-index d3e5983259053175584254e7ac01ca9ce024f33a..97f5b851c402fea5477c0ee57af451c62b016eec 100644
+index e4bdf715e2fb899e97a5bfeb2e147127460d6047..3554f919480278b7353617481c7ce8050630a1aa 100644
--- a/widget/cocoa/NativeKeyBindings.mm
+++ b/widget/cocoa/NativeKeyBindings.mm
-@@ -492,6 +492,13 @@ void NativeKeyBindings::GetEditCommandsForTests(NativeKeyBindingsType aType,
+@@ -528,6 +528,13 @@
break;
case KEY_NAME_INDEX_ArrowLeft:
if (aEvent.IsAlt()) {
@@ -3007,7 +3009,7 @@ index d3e5983259053175584254e7ac01ca9ce024f33a..97f5b851c402fea5477c0ee57af451c6
break;
}
if (aEvent.IsMeta() || (aEvent.IsControl() && aEvent.IsShift())) {
-@@ -512,6 +519,13 @@ void NativeKeyBindings::GetEditCommandsForTests(NativeKeyBindingsType aType,
+@@ -550,6 +557,13 @@
break;
case KEY_NAME_INDEX_ArrowRight:
if (aEvent.IsAlt()) {
@@ -3021,7 +3023,7 @@ index d3e5983259053175584254e7ac01ca9ce024f33a..97f5b851c402fea5477c0ee57af451c6
break;
}
if (aEvent.IsMeta() || (aEvent.IsControl() && aEvent.IsShift())) {
-@@ -532,6 +546,10 @@ void NativeKeyBindings::GetEditCommandsForTests(NativeKeyBindingsType aType,
+@@ -572,6 +586,10 @@
break;
case KEY_NAME_INDEX_ArrowUp:
if (aEvent.IsControl()) {
@@ -3032,16 +3034,16 @@ index d3e5983259053175584254e7ac01ca9ce024f33a..97f5b851c402fea5477c0ee57af451c6
break;
}
if (aEvent.IsMeta()) {
-@@ -541,7 +559,7 @@ void NativeKeyBindings::GetEditCommandsForTests(NativeKeyBindingsType aType,
- instance->AppendEditCommandsForSelector(
+@@ -582,7 +600,7 @@
!aEvent.IsShift()
? ToObjcSelectorPtr(@selector(moveToBeginningOfDocument:))
-- : ToObjcSelectorPtr(@selector(moveToBegginingOfDocumentAndModifySelection:)),
-+ : ToObjcSelectorPtr(@selector(moveToBeginningOfDocumentAndModifySelection:)),
+ : ToObjcSelectorPtr(
+- @selector(moveToBegginingOfDocumentAndModifySelection:)),
++ @selector(moveToBeginningOfDocumentAndModifySelection:)),
aCommands);
break;
}
-@@ -564,6 +582,10 @@ void NativeKeyBindings::GetEditCommandsForTests(NativeKeyBindingsType aType,
+@@ -609,6 +627,10 @@
break;
case KEY_NAME_INDEX_ArrowDown:
if (aEvent.IsControl()) {
@@ -3244,7 +3246,7 @@ index 9856991ef32f25f51942f8cd664a09bec2192c70..948947a421179e91c51005aeb83ed0d1
~HeadlessWidget();
bool mEnabled;
diff --git a/widget/nsGUIEventIPC.h b/widget/nsGUIEventIPC.h
-index a4cd12a151e7a172389affb34adf0a4085e597a5..fb4c340644255b11a15cf5a3587d950ae4f091d7 100644
+index e8b831233338630c3106fd9debeba128228d3e0c..60422b1a1734e1bdeba7b6083727e29f0e5e9f35 100644
--- a/widget/nsGUIEventIPC.h
+++ b/widget/nsGUIEventIPC.h
@@ -234,6 +234,7 @@ struct ParamTraits {
diff --git a/browser_patches/firefox/preferences/playwright.cfg b/browser_patches/firefox/preferences/playwright.cfg
index 6c33bd2545..49976d7fd7 100644
--- a/browser_patches/firefox/preferences/playwright.cfg
+++ b/browser_patches/firefox/preferences/playwright.cfg
@@ -3,6 +3,8 @@
// =================================================================
// THESE ARE THE PROPERTIES THAT MUST BE ENABLED FOR JUGGLER TO WORK
// =================================================================
+pref("dom.input_events.security.minNumTicks", 0);
+pref("dom.input_events.security.minTimeElapsedInMS", 0);
pref("datareporting.policy.dataSubmissionEnabled", false);
pref("datareporting.policy.dataSubmissionPolicyAccepted", false);
@@ -305,3 +307,5 @@ pref("extensions.blocklist.enabled", false);
// Force Firefox Devtools to open in a separate window.
pref("devtools.toolbox.host", "window");
+// Disable auto translations
+pref("browser.translations.enable", false);
diff --git a/browser_patches/webkit/UPSTREAM_CONFIG.sh b/browser_patches/webkit/UPSTREAM_CONFIG.sh
index d72c74d470..aa9e856e37 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="30884546903f1ba774adb0cbef1adc91c6c53c64"
+BASE_REVISION="bc0bc692bc9e368bbd9d530322db73b374cd6268"
diff --git a/browser_patches/webkit/patches/bootstrap.diff b/browser_patches/webkit/patches/bootstrap.diff
index b3e9920535..e686675ca5 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 be40cc1430aaa1d3a2cd5a1675e9180a81eddc37..e7b8a2677a349a6ba5c9f64bbc81bd7210c38900 100644
+index ebb0626fd9e56c4cbdb17f1723ef8052155cea58..b87e04448c219703d18fc3d04693892423d36de2 100644
--- a/Source/JavaScriptCore/CMakeLists.txt
+++ b/Source/JavaScriptCore/CMakeLists.txt
-@@ -1417,22 +1417,27 @@ set(JavaScriptCore_INSPECTOR_DOMAINS
+@@ -1436,22 +1436,27 @@ set(JavaScriptCore_INSPECTOR_DOMAINS
${JAVASCRIPTCORE_DIR}/inspector/protocol/CSS.json
${JAVASCRIPTCORE_DIR}/inspector/protocol/Canvas.json
${JAVASCRIPTCORE_DIR}/inspector/protocol/Console.json
@@ -132,58 +132,8 @@ index eb25aedee4cd9ebe007e06c2515b37ee095b06f4..badf6559595c8377db1089ca3c25008e
static String createIdentifier();
static String requestId(unsigned long identifier);
};
-diff --git a/Source/JavaScriptCore/inspector/InjectedScript.cpp b/Source/JavaScriptCore/inspector/InjectedScript.cpp
-index 4ce807389f1643cdd6249c645f581641ec3a5c71..555fef137b2ff085089f9e4cbd150dc7555da926 100644
---- a/Source/JavaScriptCore/inspector/InjectedScript.cpp
-+++ b/Source/JavaScriptCore/inspector/InjectedScript.cpp
-@@ -90,7 +90,7 @@ void InjectedScript::awaitPromise(const String& promiseObjectId, bool returnByVa
- makeAsyncCall(function, WTFMove(callback));
- }
-
--void InjectedScript::callFunctionOn(Protocol::ErrorString& errorString, const String& objectId, const String& expression, const String& arguments, bool returnByValue, bool generatePreview, RefPtr& result, std::optional& wasThrown)
-+void InjectedScript::callFunctionOn(const String& objectId, const String& expression, const String& arguments, bool returnByValue, bool generatePreview, bool awaitPromise, AsyncCallCallback&& callback)
- {
- ScriptFunctionCall function(globalObject(), injectedScriptObject(), "callFunctionOn"_s, inspectorEnvironment()->functionCallHandler());
- function.appendArgument(objectId);
-@@ -98,10 +98,8 @@ void InjectedScript::callFunctionOn(Protocol::ErrorString& errorString, const St
- function.appendArgument(arguments);
- function.appendArgument(returnByValue);
- function.appendArgument(generatePreview);
--
-- std::optional savedResultIndex;
-- makeEvalCall(errorString, function, result, wasThrown, savedResultIndex);
-- ASSERT(!savedResultIndex);
-+ function.appendArgument(awaitPromise);
-+ makeAsyncCall(function, WTFMove(callback));
- }
-
- void InjectedScript::evaluateOnCallFrame(Protocol::ErrorString& errorString, JSC::JSValue callFrames, const String& callFrameId, const String& expression, const String& objectGroup, bool includeCommandLineAPI, bool returnByValue, bool generatePreview, bool saveResult, RefPtr& result, std::optional& wasThrown, std::optional& savedResultIndex)
-@@ -288,6 +286,10 @@ RefPtr InjectedScript::wrapObject(JSC::JSValue
- auto callResult = callFunctionWithEvalEnabled(wrapFunction);
- if (!callResult)
- return nullptr;
-+ auto callResultValue = callResult.value();
-+ // callResultValue could be missing if the execution was terminated
-+ if (!callResultValue)
-+ return nullptr;
-
- auto resultValue = toInspectorValue(globalObject(), callResult.value());
- if (!resultValue)
-diff --git a/Source/JavaScriptCore/inspector/InjectedScript.h b/Source/JavaScriptCore/inspector/InjectedScript.h
-index f09e489283ebf688f73d1e740c3102306173017b..954c8cef9e9a2d3b7c0f128899fa0b2292258186 100644
---- a/Source/JavaScriptCore/inspector/InjectedScript.h
-+++ b/Source/JavaScriptCore/inspector/InjectedScript.h
-@@ -64,7 +64,7 @@ public:
- void evaluate(Protocol::ErrorString&, const String& expression, const String& objectGroup, bool includeCommandLineAPI, bool returnByValue, bool generatePreview, bool saveResult, RefPtr& result, std::optional& wasThrown, std::optional& savedResultIndex);
- void awaitPromise(const String& promiseObjectId, bool returnByValue, bool generatePreview, bool saveResult, AsyncCallCallback&&);
- void evaluateOnCallFrame(Protocol::ErrorString&, JSC::JSValue callFrames, const String& callFrameId, const String& expression, const String& objectGroup, bool includeCommandLineAPI, bool returnByValue, bool generatePreview, bool saveResult, RefPtr& result, std::optional& wasThrown, std::optional& savedResultIndex);
-- void callFunctionOn(Protocol::ErrorString&, const String& objectId, const String& expression, const String& arguments, bool returnByValue, bool generatePreview, RefPtr& result, std::optional& wasThrown);
-+ void callFunctionOn(const String& objectId, const String& expression, const String& arguments, bool returnByValue, bool generatePreview, bool awaitPromise, AsyncCallCallback&&);
- void getFunctionDetails(Protocol::ErrorString&, const String& functionId, RefPtr& result);
- void functionDetails(Protocol::ErrorString&, JSC::JSValue, RefPtr& result);
- void getPreview(Protocol::ErrorString&, const String& objectId, RefPtr& result);
diff --git a/Source/JavaScriptCore/inspector/InjectedScriptBase.cpp b/Source/JavaScriptCore/inspector/InjectedScriptBase.cpp
-index 14585eabd64a109573bed2336643f4c52e11f180..a1c34d3891405f1c8f6148a031f5045d2fa4d079 100644
+index 731a91727561c1507d074ad27f592d274dfeb324..9320b24579466bb1baa8b68430fe9cbb6c152770 100644
--- a/Source/JavaScriptCore/inspector/InjectedScriptBase.cpp
+++ b/Source/JavaScriptCore/inspector/InjectedScriptBase.cpp
@@ -84,7 +84,10 @@ static RefPtr jsToInspectorValue(JSC::JSGlobalObject* globalObject,
@@ -198,86 +148,6 @@ index 14585eabd64a109573bed2336643f4c52e11f180..a1c34d3891405f1c8f6148a031f5045d
if (!inspectorValue)
return nullptr;
inspectorObject->setValue(name.string(), inspectorValue.releaseNonNull());
-diff --git a/Source/JavaScriptCore/inspector/InjectedScriptSource.js b/Source/JavaScriptCore/inspector/InjectedScriptSource.js
-index a665049c589ad59f92b147ef2e9e058eb72bb67c..71f4db75938e830e5d8e201c291c17da3aaff6c9 100644
---- a/Source/JavaScriptCore/inspector/InjectedScriptSource.js
-+++ b/Source/JavaScriptCore/inspector/InjectedScriptSource.js
-@@ -172,7 +172,7 @@ let InjectedScript = class InjectedScript extends PrototypelessObjectBase
- return;
- }
-
-- if (!(promiseObject instanceof @Promise)) {
-+ if (InjectedScriptHost.internalConstructorName(promiseObject) !== 'Promise') {
- callback("Object with given id is not a Promise");
- return;
- }
-@@ -207,14 +207,16 @@ let InjectedScript = class InjectedScript extends PrototypelessObjectBase
- return this._evaluateAndWrap(callFrame.evaluateWithScopeExtension, callFrame, expression, objectGroup, isEvalOnCallFrame, includeCommandLineAPI, returnByValue, generatePreview, saveResult);
- }
-
-- callFunctionOn(objectId, expression, args, returnByValue, generatePreview)
-+ callFunctionOn(objectId, expression, args, returnByValue, generatePreview, awaitPromise, callback)
- {
- let parsedObjectId = this._parseObjectId(objectId);
- let object = this._objectForId(parsedObjectId);
- let objectGroupName = this._idToObjectGroupName[parsedObjectId.id];
-
-- if (!isDefined(object))
-- return "Could not find object with given id";
-+ if (!isDefined(object)) {
-+ callback(this._createThrownValue("Could not find object with given id", objectGroupName));
-+ return ;
-+ }
-
- let resolvedArgs = @createArrayWithoutPrototype();
- if (args) {
-@@ -223,22 +225,37 @@ let InjectedScript = class InjectedScript extends PrototypelessObjectBase
- try {
- resolvedArgs[i] = this._resolveCallArgument(callArgs[i]);
- } catch (e) {
-- return @String(e);
-+ callback(this._createThrownValue(e, objectGroupName));
-+ return;
- }
- }
- }
-
- try {
- let func = InjectedScriptHost.evaluate("(" + expression + ")");
-- if (typeof func !== "function")
-- return "Given expression does not evaluate to a function";
--
-- return @createObjectWithoutPrototype(
-- "wasThrown", false,
-- "result", RemoteObject.create(func.@apply(object, resolvedArgs), objectGroupName, returnByValue, generatePreview),
-- );
-+ if (typeof func !== "function") {
-+ callback(this._createThrownValue("Given expression does not evaluate to a function", objectGroupName));
-+ return;
-+ }
-+ let result = func.@apply(object, resolvedArgs);
-+ if (awaitPromise && isDefined(result) && (InjectedScriptHost.internalConstructorName(result) === 'Promise')) {
-+ result.then(value => {
-+ callback({
-+ wasThrown: false,
-+ result: RemoteObject.create(value, objectGroupName, returnByValue, generatePreview),
-+ });
-+ }, reason => {
-+ callback(this._createThrownValue(reason, objectGroupName));
-+ });
-+ } else {
-+ callback({
-+ wasThrown: false,
-+ result: RemoteObject.create(result, objectGroupName, returnByValue, generatePreview)
-+ });
-+ }
- } catch (e) {
-- return this._createThrownValue(e, objectGroupName);
-+ callback(this._createThrownValue(e, objectGroupName));
-+ return;
- }
- }
-
diff --git a/Source/JavaScriptCore/inspector/InspectorBackendDispatcher.cpp b/Source/JavaScriptCore/inspector/InspectorBackendDispatcher.cpp
index 820a08fc660633e09675d0e647bd0c50d2fa905a..5ca5ee5a6897b7ef332d906018b457122096df98 100644
--- a/Source/JavaScriptCore/inspector/InspectorBackendDispatcher.cpp
@@ -352,10 +222,10 @@ index 0cc2127c9c12c2d82dea9550bad73f4ffb99ba24..8ca65cc042d435cbc0e05dcc5c5dfc95
}
diff --git a/Source/JavaScriptCore/inspector/InspectorTarget.h b/Source/JavaScriptCore/inspector/InspectorTarget.h
-index 4b95964db4d902b4b7f4b0b4c40afea51654ff2f..653842a82ed7a7be8603c9ef88ff48d1cda421be 100644
+index 80559d39722b74e325d513ea22054b0d399a4e8f..24977f9dfcfcdb29a20d178be608aca855cca532 100644
--- a/Source/JavaScriptCore/inspector/InspectorTarget.h
+++ b/Source/JavaScriptCore/inspector/InspectorTarget.h
-@@ -56,8 +56,12 @@ public:
+@@ -57,8 +57,12 @@ public:
virtual void connect(FrontendChannel::ConnectionType) = 0;
virtual void disconnect() = 0;
virtual void sendMessageToTargetBackend(const String&) = 0;
@@ -400,94 +270,44 @@ index 6e573c4dfd1f356b76ef9b46dcee4254e9a28f27..8855604064f5130211baab6caa89318c
void warnUnimplemented(const String& method);
void internalAddMessage(MessageType, MessageLevel, JSC::JSGlobalObject*, Ref&&);
diff --git a/Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.cpp b/Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.cpp
-index aef96857b46e980a12f2c0a4d38d6035c024ac99..2eb163fe20cbbd975c7f49d9835485152057993d 100644
+index 4c0b84a3ce88997372b05e54761fbd1d16350c84..5a8da96c4772f998efb188043484c6ba26f73cf0 100644
--- a/Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.cpp
+++ b/Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.cpp
-@@ -177,41 +177,43 @@ void InspectorRuntimeAgent::awaitPromise(const Protocol::Runtime::RemoteObjectId
- });
- }
-
--Protocol::ErrorStringOr, std::optional /* wasThrown */>> InspectorRuntimeAgent::callFunctionOn(const Protocol::Runtime::RemoteObjectId& objectId, const String& functionDeclaration, RefPtr&& arguments, std::optional&& doNotPauseOnExceptionsAndMuteConsole, std::optional&& returnByValue, std::optional&& generatePreview, std::optional&& emulateUserGesture)
-+void InspectorRuntimeAgent::callFunctionOn(const Protocol::Runtime::RemoteObjectId& objectId, const String& functionDeclaration, RefPtr&& arguments, std::optional&& doNotPauseOnExceptionsAndMuteConsole, std::optional&& returnByValue, std::optional&& generatePreview, std::optional&& emulateUserGesture, std::optional&& awaitPromise, Ref&& callback)
- {
- InjectedScript injectedScript = m_injectedScriptManager.injectedScriptForObjectId(objectId);
-- if (injectedScript.hasNoValue())
-- return makeUnexpected("Missing injected script for given objectId"_s);
-+ if (injectedScript.hasNoValue()) {
-+ callback->sendFailure("Missing injected script for given objectId"_s);
-+ return;
-+ }
-
-- return callFunctionOn(injectedScript, objectId, functionDeclaration, WTFMove(arguments), WTFMove(doNotPauseOnExceptionsAndMuteConsole), WTFMove(returnByValue), WTFMove(generatePreview), WTFMove(emulateUserGesture));
-+ callFunctionOn(injectedScript, objectId, functionDeclaration, WTFMove(arguments), WTFMove(doNotPauseOnExceptionsAndMuteConsole), WTFMove(returnByValue), WTFMove(generatePreview), WTFMove(emulateUserGesture), WTFMove(awaitPromise), WTFMove(callback));
- }
-
--Protocol::ErrorStringOr, std::optional /* wasThrown */>> InspectorRuntimeAgent::callFunctionOn(InjectedScript& injectedScript, const Protocol::Runtime::RemoteObjectId& objectId, const String& functionDeclaration, RefPtr&& arguments, std::optional&& doNotPauseOnExceptionsAndMuteConsole, std::optional&& returnByValue, std::optional&& generatePreview, std::optional&& /* emulateUserGesture */)
-+void InspectorRuntimeAgent::callFunctionOn(InjectedScript& injectedScript, const Protocol::Runtime::RemoteObjectId& objectId, const String& functionDeclaration, RefPtr&& arguments, std::optional&& doNotPauseOnExceptionsAndMuteConsole, std::optional&& returnByValue, std::optional&& generatePreview, std::optional&& /* emulateUserGesture */, std::optional&& awaitPromise, Ref&& callback)
+@@ -191,9 +191,8 @@ void InspectorRuntimeAgent::callFunctionOn(const Protocol::Runtime::RemoteObject
+ void InspectorRuntimeAgent::callFunctionOn(InjectedScript& injectedScript, const Protocol::Runtime::RemoteObjectId& objectId, const String& functionDeclaration, RefPtr&& arguments, std::optional&& doNotPauseOnExceptionsAndMuteConsole, std::optional&& returnByValue, std::optional&& generatePreview, std::optional&& /* emulateUserGesture */, std::optional&& awaitPromise, Ref&& callback)
{
ASSERT(!injectedScript.hasNoValue());
-
-- Protocol::ErrorString errorString;
--
-- RefPtr result;
-- std::optional wasThrown;
--
-+
JSC::Debugger::TemporarilyDisableExceptionBreakpoints temporarilyDisableExceptionBreakpoints(m_debugger);
-
+
bool pauseAndMute = doNotPauseOnExceptionsAndMuteConsole.value_or(false);
if (pauseAndMute) {
temporarilyDisableExceptionBreakpoints.replace();
- muteConsole();
- }
--
-- injectedScript.callFunctionOn(errorString, objectId, functionDeclaration, arguments ? arguments->toJSONString() : nullString(), returnByValue.value_or(false), generatePreview.value_or(false), result, wasThrown);
-+
-+ injectedScript.callFunctionOn(objectId, functionDeclaration, arguments ? arguments->toJSONString() : nullString(), returnByValue.value_or(false), generatePreview.value_or(false), awaitPromise.value_or(false), [callback=WTFMove(callback)] (Protocol::ErrorString& errorString, RefPtr&& result, std::optional&& wasThrown, std::optional&&) {
-+ if (!result)
-+ callback->sendFailure(errorString);
-+ else
-+ callback->sendSuccess(result.releaseNonNull(), WTFMove(wasThrown));
-+ });
-
- if (pauseAndMute)
+@@ -212,6 +211,11 @@ void InspectorRuntimeAgent::callFunctionOn(InjectedScript& injectedScript, const
unmuteConsole();
-+}
+ }
-- if (!result)
-- return makeUnexpected(errorString);
--
-- return { { result.releaseNonNull(), WTFMove(wasThrown) } };
+Protocol::ErrorStringOr InspectorRuntimeAgent::addBinding(const String&)
+{
+ return makeUnexpected("Not implemented in this type of agent."_s);
- }
-
++}
++
Protocol::ErrorStringOr[> InspectorRuntimeAgent::getPreview(const Protocol::Runtime::RemoteObjectId& objectId)
+ {
+ Protocol::ErrorString errorString;
diff --git a/Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.h b/Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.h
-index 1db64831b835df816130be4e7d42b7b213625656..11e6a6a9b027f2e4ea904e796019ee2a698509cf 100644
+index 5c3488200ab2df6dfc914ff780f05eba7ffd92a2..11e6a6a9b027f2e4ea904e796019ee2a698509cf 100644
--- a/Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.h
+++ b/Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.h
-@@ -62,7 +62,8 @@ public:
- Protocol::ErrorStringOr>> parse(const String& expression) final;
+@@ -63,6 +63,7 @@ public:
Protocol::ErrorStringOr, std::optional /* wasThrown */, std::optional /* savedResultIndex */>> evaluate(const String& expression, const String& objectGroup, std::optional&& includeCommandLineAPI, std::optional&& doNotPauseOnExceptionsAndMuteConsole, std::optional&&, std::optional&& returnByValue, std::optional&& generatePreview, std::optional&& saveResult, std::optional&& emulateUserGesture) override;
void awaitPromise(const Protocol::Runtime::RemoteObjectId&, std::optional&& returnByValue, std::optional&& generatePreview, std::optional&& saveResult, Ref&&) final;
-- Protocol::ErrorStringOr, std::optional /* wasThrown */>> callFunctionOn(const Protocol::Runtime::RemoteObjectId&, const String& functionDeclaration, RefPtr&& arguments, std::optional&& doNotPauseOnExceptionsAndMuteConsole, std::optional&& returnByValue, std::optional&& generatePreview, std::optional&& emulateUserGesture) override;
-+ void callFunctionOn(const Protocol::Runtime::RemoteObjectId&, const String& functionDeclaration, RefPtr&& arguments, std::optional&& doNotPauseOnExceptionsAndMuteConsole, std::optional&& returnByValue, std::optional&& generatePreview, std::optional&& emulateUserGesture, std::optional&& awaitPromise, Ref&&) override;
+ void callFunctionOn(const Protocol::Runtime::RemoteObjectId&, const String& functionDeclaration, RefPtr&& arguments, std::optional&& doNotPauseOnExceptionsAndMuteConsole, std::optional&& returnByValue, std::optional&& generatePreview, std::optional&& emulateUserGesture, std::optional&& awaitPromise, Ref&&) override;
+ Protocol::ErrorStringOr addBinding(const String& name) override;
Protocol::ErrorStringOr releaseObject(const Protocol::Runtime::RemoteObjectId&) final;
Protocol::ErrorStringOr][> getPreview(const Protocol::Runtime::RemoteObjectId&) final;
Protocol::ErrorStringOr>, RefPtr>>> getProperties(const Protocol::Runtime::RemoteObjectId&, std::optional&& ownProperties, std::optional&& fetchStart, std::optional&& fetchCount, std::optional&& generatePreview) final;
-@@ -82,7 +83,7 @@ protected:
- InspectorRuntimeAgent(AgentContext&);
-
- Protocol::ErrorStringOr, std::optional /* wasThrown */, std::optional /* savedResultIndex */>> evaluate(InjectedScript&, const String& expression, const String& objectGroup, std::optional&& includeCommandLineAPI, std::optional&& doNotPauseOnExceptionsAndMuteConsole, std::optional&& returnByValue, std::optional&& generatePreview, std::optional&& saveResult, std::optional&& emulateUserGesture);
-- Protocol::ErrorStringOr, std::optional /* wasThrown */>> callFunctionOn(InjectedScript&, const Protocol::Runtime::RemoteObjectId&, const String& functionDeclaration, RefPtr&& arguments, std::optional&& doNotPauseOnExceptionsAndMuteConsole, std::optional&& returnByValue, std::optional&& generatePreview, std::optional&& emulateUserGesture);
-+ void callFunctionOn(InjectedScript&, const Protocol::Runtime::RemoteObjectId&, const String& functionDeclaration, RefPtr&& arguments, std::optional&& doNotPauseOnExceptionsAndMuteConsole, std::optional&& returnByValue, std::optional&& generatePreview, std::optional&& emulateUserGesture, std::optional&& awaitPromise, Ref&&);
-
- InjectedScriptManager& injectedScriptManager() { return m_injectedScriptManager; }
-
diff --git a/Source/JavaScriptCore/inspector/agents/InspectorTargetAgent.cpp b/Source/JavaScriptCore/inspector/agents/InspectorTargetAgent.cpp
index 508eb02ec95c52408384a1e2b77648afd426dd9d..93d6757e170272cda8c346bf51578d2b5f8aafaa 100644
--- a/Source/JavaScriptCore/inspector/agents/InspectorTargetAgent.cpp
@@ -1016,7 +836,7 @@ index 96af27ece2ac200e11c4311b3ca0d9d3b5a048da..3168f7806fcbdabec07acc5e304bae1e
],
"events": [
diff --git a/Source/JavaScriptCore/inspector/protocol/Page.json b/Source/JavaScriptCore/inspector/protocol/Page.json
-index b5e2bb2eb58765ec20392b36bf5ef1ac35857a69..83ac8c3cbc4a57a27e99a48323fe61a936c10a8b 100644
+index b5e2bb2eb58765ec20392b36bf5ef1ac35857a69..7e6c8b8954ed3d5d4ac77dfe51d0e08c56a7a5fc 100644
--- a/Source/JavaScriptCore/inspector/protocol/Page.json
+++ b/Source/JavaScriptCore/inspector/protocol/Page.json
@@ -20,7 +20,14 @@
@@ -1048,7 +868,7 @@ index b5e2bb2eb58765ec20392b36bf5ef1ac35857a69..83ac8c3cbc4a57a27e99a48323fe61a9
{
"id": "Frame",
"type": "object",
-@@ -125,6 +138,51 @@
+@@ -125,6 +138,50 @@
{ "name": "secure", "type": "boolean", "description": "True if cookie is secure." },
{ "name": "sameSite", "$ref": "CookieSameSitePolicy", "description": "Cookie Same-Site policy." }
]
@@ -1069,7 +889,6 @@ index b5e2bb2eb58765ec20392b36bf5ef1ac35857a69..83ac8c3cbc4a57a27e99a48323fe61a9
+ { "name": "expanded", "type": "boolean", "optional": true, "description": "Whether the node is expanded or collapsed."},
+ { "name": "focused", "type": "boolean", "optional": true, "description": "Whether the node is focused."},
+ { "name": "modal", "type": "boolean", "optional": true, "description": "Whether the node is modal."},
-+ { "name": "multiline", "type": "boolean", "optional": true, "description": "Whether the node text input supports multiline."},
+ { "name": "multiselectable", "type": "boolean", "optional": true, "description": "Whether more than one child can be selected."},
+ { "name": "readonly", "type": "boolean", "optional": true, "description": "Whether the node is read only."},
+ { "name": "required", "type": "boolean", "optional": true, "description": "Whether the node is required."},
@@ -1100,7 +919,7 @@ index b5e2bb2eb58765ec20392b36bf5ef1ac35857a69..83ac8c3cbc4a57a27e99a48323fe61a9
}
],
"commands": [
-@@ -144,6 +202,14 @@
+@@ -144,6 +201,14 @@
{ "name": "revalidateAllResources", "type": "boolean", "optional": true, "description": "If true, all cached subresources will be revalidated when the main resource loads. Otherwise, only expired cached subresources will be revalidated (the default behavior for most WebKit clients)." }
]
},
@@ -1115,7 +934,7 @@ index b5e2bb2eb58765ec20392b36bf5ef1ac35857a69..83ac8c3cbc4a57a27e99a48323fe61a9
{
"name": "navigate",
"description": "Navigates current page to the given URL.",
-@@ -160,6 +226,14 @@
+@@ -160,6 +225,14 @@
{ "name": "value", "type": "string", "optional": true, "description": "Value to override the user agent with. If this value is not provided, the override is removed. Overrides are removed when Web Inspector closes/disconnects." }
]
},
@@ -1130,17 +949,7 @@ index b5e2bb2eb58765ec20392b36bf5ef1ac35857a69..83ac8c3cbc4a57a27e99a48323fe61a9
{
"name": "overrideSetting",
"description": "Allows the frontend to override the inspected page's settings.",
-@@ -226,7 +300,8 @@
- "name": "setBootstrapScript",
- "targetTypes": ["page"],
- "parameters": [
-- { "name": "source", "type": "string", "optional": true, "description": "If `source` is provided (and not empty), it will be injected into all future global objects as soon as they're created. Omitting `source` will stop this from happening." }
-+ { "name": "source", "type": "string", "optional": true, "description": "If `source` is provided (and not empty), it will be injected into all future global objects as soon as they're created. Omitting `source` will stop this from happening." },
-+ { "name": "worldName", "type": "string", "optional": true, "description": "Isolated world name to evaluate the script in. If not specified main world will be used." }
- ]
- },
- {
-@@ -283,6 +358,28 @@
+@@ -283,6 +356,28 @@
{ "name": "media", "type": "string", "description": "Media type to emulate. Empty string disables the override." }
]
},
@@ -1169,7 +978,7 @@ index b5e2bb2eb58765ec20392b36bf5ef1ac35857a69..83ac8c3cbc4a57a27e99a48323fe61a9
{
"name": "snapshotNode",
"description": "Capture a snapshot of the specified node that does not include unrelated layers.",
-@@ -303,7 +400,8 @@
+@@ -303,7 +398,8 @@
{ "name": "y", "type": "integer", "description": "Y coordinate" },
{ "name": "width", "type": "integer", "description": "Rectangle width" },
{ "name": "height", "type": "integer", "description": "Rectangle height" },
@@ -1179,7 +988,7 @@ index b5e2bb2eb58765ec20392b36bf5ef1ac35857a69..83ac8c3cbc4a57a27e99a48323fe61a9
],
"returns": [
{ "name": "dataURL", "type": "string", "description": "Base64-encoded image data (PNG)." }
-@@ -321,12 +419,92 @@
+@@ -321,12 +417,71 @@
{
"name": "setScreenSizeOverride",
"description": "Overrides screen size exposed to DOM and used in media queries for testing with provided values.",
@@ -1198,17 +1007,6 @@ index b5e2bb2eb58765ec20392b36bf5ef1ac35857a69..83ac8c3cbc4a57a27e99a48323fe61a9
+ ]
+ },
+ {
-+ "name": "setComposition",
-+ "description": "Set the current IME composition.",
-+ "parameters": [
-+ { "name": "text", "type": "string" },
-+ { "name": "selectionStart", "type": "integer" },
-+ { "name": "selectionLength", "type": "integer" },
-+ { "name": "replacementStart", "type": "integer", "optional": true },
-+ { "name": "replacementLength", "type": "integer", "optional": true }
-+ ]
-+ },
-+ {
+ "name": "accessibilitySnapshot",
+ "description": "Serializes and returns all of the accessibility nodes of the page.",
+ "parameters": [
@@ -1258,22 +1056,12 @@ index b5e2bb2eb58765ec20392b36bf5ef1ac35857a69..83ac8c3cbc4a57a27e99a48323fe61a9
+ ]
+ },
+ {
-+ "name": "setVisibleContentRects",
-+ "targetTypes": ["page"],
-+ "parameters": [
-+ { "name": "unobscuredContentRect", "$ref": "DOM.Rect", "optional": true },
-+ { "name": "contentInsets", "$ref": "Insets", "optional": true },
-+ { "name": "obscuredInsets", "$ref": "Insets", "optional": true },
-+ { "name": "unobscuredInsets", "$ref": "Insets", "optional": true }
-+ ]
-+ },
-+ {
+ "name": "updateScrollingState",
+ "description": "Ensures that the scroll regions are up to date."
}
],
"events": [
-@@ -334,14 +512,16 @@
+@@ -334,14 +489,16 @@
"name": "domContentEventFired",
"targetTypes": ["page"],
"parameters": [
@@ -1292,7 +1080,7 @@ index b5e2bb2eb58765ec20392b36bf5ef1ac35857a69..83ac8c3cbc4a57a27e99a48323fe61a9
]
},
{
-@@ -351,6 +531,14 @@
+@@ -351,6 +508,14 @@
{ "name": "frame", "$ref": "Frame", "description": "Frame object." }
]
},
@@ -1307,7 +1095,7 @@ index b5e2bb2eb58765ec20392b36bf5ef1ac35857a69..83ac8c3cbc4a57a27e99a48323fe61a9
{
"name": "frameDetached",
"description": "Fired when frame has been detached from its parent.",
-@@ -379,7 +567,8 @@
+@@ -379,7 +544,8 @@
"targetTypes": ["page"],
"parameters": [
{ "name": "frameId", "$ref": "Network.FrameId", "description": "Id of the frame that has scheduled a navigation." },
@@ -1317,7 +1105,7 @@ index b5e2bb2eb58765ec20392b36bf5ef1ac35857a69..83ac8c3cbc4a57a27e99a48323fe61a9
]
},
{
-@@ -390,6 +579,22 @@
+@@ -390,6 +556,22 @@
{ "name": "frameId", "$ref": "Network.FrameId", "description": "Id of the frame that has cleared its scheduled navigation." }
]
},
@@ -1340,7 +1128,7 @@ index b5e2bb2eb58765ec20392b36bf5ef1ac35857a69..83ac8c3cbc4a57a27e99a48323fe61a9
{
"name": "defaultUserPreferencesDidChange",
"description": "Fired when the default value of a user preference changes at the system level.",
-@@ -397,6 +602,42 @@
+@@ -397,6 +579,42 @@
"parameters": [
{ "name": "preferences", "type": "array", "items": { "$ref": "UserPreference" }, "description": "List of user preferences that can be overriden and their new system (default) values." }
]
@@ -1385,10 +1173,10 @@ index b5e2bb2eb58765ec20392b36bf5ef1ac35857a69..83ac8c3cbc4a57a27e99a48323fe61a9
}
diff --git a/Source/JavaScriptCore/inspector/protocol/Playwright.json b/Source/JavaScriptCore/inspector/protocol/Playwright.json
new file mode 100644
-index 0000000000000000000000000000000000000000..8434303f2aad60557f049d33e50245ddebb07599
+index 0000000000000000000000000000000000000000..978d6f92b18498633c982969299f068332eb2884
--- /dev/null
+++ b/Source/JavaScriptCore/inspector/protocol/Playwright.json
-@@ -0,0 +1,300 @@
+@@ -0,0 +1,307 @@
+{
+ "domain": "Playwright",
+ "availability": ["web"],
@@ -1479,6 +1267,12 @@ index 0000000000000000000000000000000000000000..8434303f2aad60557f049d33e50245dd
+ "name": "disable"
+ },
+ {
++ "name": "getInfo",
++ "returns": [
++ { "name": "os", "type": "string", "description": "Name of the operating system where the browser is running (macOS, Linux or Windows)." }
++ ]
++ },
++ {
+ "name": "close",
+ "async": true,
+ "description": "Close browser."
@@ -1536,6 +1330,7 @@ index 0000000000000000000000000000000000000000..8434303f2aad60557f049d33e50245dd
+ {
+ "name": "takePageScreenshot",
+ "description": "Capture a snapshot of the page.",
++ "async": true,
+ "parameters": [
+ { "name": "pageProxyId", "$ref": "PageProxyID", "description": "Unique identifier of the page proxy." },
+ { "name": "x", "type": "integer", "description": "X coordinate" },
@@ -1690,34 +1485,24 @@ index 0000000000000000000000000000000000000000..8434303f2aad60557f049d33e50245dd
+ ]
+}
diff --git a/Source/JavaScriptCore/inspector/protocol/Runtime.json b/Source/JavaScriptCore/inspector/protocol/Runtime.json
-index dfbe4eece1af3748408b5fd968331799aa9e1d30..0e2ae5d96b3cdcc20ecc95ddc7b49538dcb3c302 100644
+index 301b88eb1607b0975c3fa81d91045eb5403378ec..0e2ae5d96b3cdcc20ecc95ddc7b49538dcb3c302 100644
--- a/Source/JavaScriptCore/inspector/protocol/Runtime.json
+++ b/Source/JavaScriptCore/inspector/protocol/Runtime.json
-@@ -263,12 +263,21 @@
- { "name": "doNotPauseOnExceptionsAndMuteConsole", "type": "boolean", "optional": true, "description": "Specifies whether function call should stop on exceptions and mute console. Overrides setPauseOnException state." },
- { "name": "returnByValue", "type": "boolean", "optional": true, "description": "Whether the result is expected to be a JSON object which should be sent by value." },
- { "name": "generatePreview", "type": "boolean", "optional": true, "description": "Whether preview should be generated for the result." },
-- { "name": "emulateUserGesture", "type": "boolean", "optional": true, "description": "Whether the expression should be considered to be in a user gesture or not." }
-+ { "name": "emulateUserGesture", "type": "boolean", "optional": true, "description": "Whether the expression should be considered to be in a user gesture or not." },
-+ { "name": "awaitPromise", "type": "boolean", "optional": true, "description": "Whether to automatically await returned promise." }
+@@ -272,6 +272,13 @@
],
- "returns": [
- { "name": "result", "$ref": "RemoteObject", "description": "Call result." },
- { "name": "wasThrown", "type": "boolean", "optional": true, "description": "True if the result was thrown during the evaluation." }
-- ]
-+ ],
-+ "async": true
-+ },
+ "async": true
+ },
+ {
+ "name": "addBinding",
+ "description": "Adds binding with the given name on the global objects of all inspected contexts. Each binding function call produces Runtime.bindingCalled event.",
+ "parameters": [
+ { "name": "name", "type": "string", "description": "Name of the bound function." }
+ ]
- },
++ },
{
"name": "getPreview",
-@@ -406,6 +415,15 @@
+ "description": "Returns a preview for the given object.",
+@@ -408,6 +415,15 @@
"parameters": [
{ "name": "context", "$ref": "ExecutionContextDescription", "description": "A newly created execution context." }
]
@@ -1849,31 +1634,8 @@ index 52920cded24a9c6b0ef6fb4e518664955db4f9fa..bbbabc4e7259088b9404e8cc07eecd6f
]
},
{
-diff --git a/Source/JavaScriptCore/inspector/protocol/Worker.json b/Source/JavaScriptCore/inspector/protocol/Worker.json
-index 638612413466efc87b737e8a81042ed07ca12703..6f9e518ff0bfa2a6228675d25b6b785f1ed3022a 100644
---- a/Source/JavaScriptCore/inspector/protocol/Worker.json
-+++ b/Source/JavaScriptCore/inspector/protocol/Worker.json
-@@ -16,7 +16,7 @@
- "description": "Sent after the frontend has sent all initialization messages and can resume this worker. This command is required to allow execution in the worker.",
- "parameters": [
- { "name": "workerId", "type": "string" }
-- ]
-+ ]
- },
- {
- "name": "sendMessageToWorker",
-@@ -33,7 +33,8 @@
- "parameters": [
- { "name": "workerId", "type": "string" },
- { "name": "url", "type": "string" },
-- { "name": "name", "type": "string" }
-+ { "name": "name", "type": "string" },
-+ { "name": "frameId", "$ref": "Network.FrameId", "description": "Id of the frame this worker belongs to." }
- ]
- },
- {
diff --git a/Source/JavaScriptCore/profiler/ProfilerBytecodeSequence.cpp b/Source/JavaScriptCore/profiler/ProfilerBytecodeSequence.cpp
-index 4fccf72d231285ff2c3f250990b86506303c9ec8..8472ba00fcada5c80fa0356c15b6683c4c6ceb5d 100644
+index e91e5ed0b72d5a3a4c8455ce1da31647f63b2011..7ebd9a28c78ad4c2296ed3c603ff81723719fdbd 100644
--- a/Source/JavaScriptCore/profiler/ProfilerBytecodeSequence.cpp
+++ b/Source/JavaScriptCore/profiler/ProfilerBytecodeSequence.cpp
@@ -28,7 +28,6 @@
@@ -1897,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 133380fe13fcd59d324d5b1c53bfebf855a04750..5f3fad8408d75dc1b5fb6725569badca6617cf49 100644
+index 0c300bedc697024ca511e43d480f3b7205df3ed6..e54875b46c558903a6b6157833b82ec8ce0ac1f1 100644
--- a/Source/ThirdParty/libwebrtc/CMakeLists.txt
+++ b/Source/ThirdParty/libwebrtc/CMakeLists.txt
@@ -529,6 +529,11 @@ set(webrtc_SOURCES
@@ -1912,7 +1674,7 @@ index 133380fe13fcd59d324d5b1c53bfebf855a04750..5f3fad8408d75dc1b5fb6725569badca
Source/third_party/libyuv/source/compare.cc
Source/third_party/libyuv/source/compare_common.cc
Source/third_party/libyuv/source/compare_gcc.cc
-@@ -2124,6 +2129,10 @@ set(webrtc_INCLUDE_DIRECTORIES PRIVATE
+@@ -2126,6 +2131,10 @@ set(webrtc_INCLUDE_DIRECTORIES PRIVATE
Source/third_party/libsrtp/config
Source/third_party/libsrtp/crypto/include
Source/third_party/libsrtp/include
@@ -1923,11 +1685,24 @@ index 133380fe13fcd59d324d5b1c53bfebf855a04750..5f3fad8408d75dc1b5fb6725569badca
Source/third_party/libyuv/include
Source/third_party/opus/src/celt
Source/third_party/opus/src/include
+diff --git a/Source/ThirdParty/libwebrtc/Configurations/Base-libwebrtc.xcconfig b/Source/ThirdParty/libwebrtc/Configurations/Base-libwebrtc.xcconfig
+index 8f79bffda497f6144e9e82c23397a182a6745cf3..d22f4fd1b54d535288994c44a5bd61405a1791cb 100644
+--- a/Source/ThirdParty/libwebrtc/Configurations/Base-libwebrtc.xcconfig
++++ b/Source/ThirdParty/libwebrtc/Configurations/Base-libwebrtc.xcconfig
+@@ -21,7 +21,7 @@
+ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-HEADER_SEARCH_PATHS = Source Source/third_party/libsrtp/crypto/include Source/third_party/libsrtp/include Source/third_party/boringssl/src/include Source/third_party/libyuv/include Source/webrtc/sdk/objc/Framework/Headers Source/webrtc/common_audio/signal_processing/include Source/webrtc/modules/audio_coding/codecs/isac/main/include Source/third_party/opus/src/celt Source/third_party/opus/src/include Source/third_party/opus/src/src Source/webrtc/modules/audio_device/mac Source/webrtc/modules/audio_device/ios Source/webrtc Source/webrtc/sdk/objc Source/webrtc/sdk/objc/base Source/webrtc/sdk/objc/Framework/Classes Source/third_party/libsrtp/config Source/webrtc/sdk/objc/Framework/Classes/Common Source/webrtc/sdk/objc/Framework/Classes/Video Source/webrtc/sdk/objc/Framework/Classes/PeerConnection Source/third_party/abseil-cpp Source/third_party/libvpx/source/libvpx Source/third_party/libwebm/webm_parser/include Source/third_party/crc32c/config Source/third_party/crc32c/include Source/third_party/crc32c/src/include Source/third_party/libaom/source/libaom;
++HEADER_SEARCH_PATHS = Source Source/third_party/libsrtp/crypto/include Source/third_party/libsrtp/include Source/third_party/boringssl/src/include Source/third_party/libyuv/include Source/webrtc/sdk/objc/Framework/Headers Source/webrtc/common_audio/signal_processing/include Source/webrtc/modules/audio_coding/codecs/isac/main/include Source/third_party/opus/src/celt Source/third_party/opus/src/include Source/third_party/opus/src/src Source/webrtc/modules/audio_device/mac Source/webrtc/modules/audio_device/ios Source/webrtc Source/webrtc/sdk/objc Source/webrtc/sdk/objc/base Source/webrtc/sdk/objc/Framework/Classes Source/third_party/libsrtp/config Source/webrtc/sdk/objc/Framework/Classes/Common Source/webrtc/sdk/objc/Framework/Classes/Video Source/webrtc/sdk/objc/Framework/Classes/PeerConnection Source/third_party/abseil-cpp Source/third_party/libvpx/source/libvpx Source/third_party/libwebm/webm_parser/include Source/third_party/crc32c/config Source/third_party/crc32c/include Source/third_party/crc32c/src/include Source/third_party/libaom/source/libaom Source/third_party/libwebm/mkvmuxer Source/third_party/libvpx/source/libvpx/third_party/libwebm;
+ USE_HEADERMAP = NO;
+
+ WARNING_CFLAGS = -Wno-deprecated-declarations $(inherited);
diff --git a/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.exp b/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.exp
-index c3ba9e19caff72011010471c8c46c91b53a22498..d47a93e1f7fe9f4d52376dcc4dcc924231fdd108 100644
+index eed4780db5dd82c4946ef9662f91ec259150b598..1cdfac1540b8dc06a5ad0dbc40b63087520c6f70 100644
--- a/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.exp
+++ b/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.exp
-@@ -389,3 +389,24 @@ __ZN3rtc7NetworkC1ENSt3__117basic_string_viewIcNS1_11char_traitsIcEEEES5_RKNS_9I
+@@ -386,3 +386,24 @@ __ZN3rtc7NetworkC1ENSt3__117basic_string_viewIcNS1_11char_traitsIcEEEES5_RKNS_9I
__ZN6webrtc18callback_list_impl21CallbackListReceiversC1Ev
__ZNK6webrtc32webrtc_sequence_checker_internal19SequenceCheckerImpl19ExpectationToStringEv
__ZN3rtc16InterfaceAddressaSERKS0_
@@ -1952,19 +1727,6 @@ index c3ba9e19caff72011010471c8c46c91b53a22498..d47a93e1f7fe9f4d52376dcc4dcc9242
+_vpx_codec_iface_name
+_vpx_codec_version_str
+_vpx_codec_vp8_cx
-diff --git a/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.xcconfig b/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.xcconfig
-index 39ddbe721ba57835c45a4e590726c7a7c99022c4..4020e136c002c0b768f266d87f656585e748d498 100644
---- a/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.xcconfig
-+++ b/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.xcconfig
-@@ -37,7 +37,7 @@ DYLIB_INSTALL_NAME_BASE_WK_RELOCATABLE_FRAMEWORKS_ = $(NORMAL_UMBRELLA_FRAMEWORK
- DYLIB_INSTALL_NAME_BASE_WK_RELOCATABLE_FRAMEWORKS_YES = @loader_path/../../../;
-
- GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
--HEADER_SEARCH_PATHS = Source Source/third_party/libsrtp/crypto/include Source/third_party/libsrtp/include Source/third_party/boringssl/src/include Source/third_party/libyuv/include Source/webrtc/sdk/objc/Framework/Headers Source/webrtc/common_audio/signal_processing/include Source/webrtc/modules/audio_coding/codecs/isac/main/include Source/third_party/opus/src/celt Source/third_party/opus/src/include Source/third_party/opus/src/src Source/webrtc/modules/audio_device/mac Source/webrtc/modules/audio_device/ios Source/webrtc Source/webrtc/sdk/objc Source/webrtc/sdk/objc/base Source/webrtc/sdk/objc/Framework/Classes Source/third_party/libsrtp/config Source/webrtc/sdk/objc/Framework/Classes/Common Source/webrtc/sdk/objc/Framework/Classes/Video Source/webrtc/sdk/objc/Framework/Classes/PeerConnection Source/third_party/abseil-cpp Source/third_party/libvpx/source/libvpx Source/third_party/libwebm/webm_parser/include Source/third_party/crc32c/config Source/third_party/crc32c/include Source/third_party/crc32c/src/include Source/third_party/libaom/source/libaom;
-+HEADER_SEARCH_PATHS = Source Source/third_party/libsrtp/crypto/include Source/third_party/libsrtp/include Source/third_party/boringssl/src/include Source/third_party/libyuv/include Source/webrtc/sdk/objc/Framework/Headers Source/webrtc/common_audio/signal_processing/include Source/webrtc/modules/audio_coding/codecs/isac/main/include Source/third_party/opus/src/celt Source/third_party/opus/src/include Source/third_party/opus/src/src Source/webrtc/modules/audio_device/mac Source/webrtc/modules/audio_device/ios Source/webrtc Source/webrtc/sdk/objc Source/webrtc/sdk/objc/base Source/webrtc/sdk/objc/Framework/Classes Source/third_party/libsrtp/config Source/webrtc/sdk/objc/Framework/Classes/Common Source/webrtc/sdk/objc/Framework/Classes/Video Source/webrtc/sdk/objc/Framework/Classes/PeerConnection Source/third_party/abseil-cpp Source/third_party/libvpx/source/libvpx Source/third_party/libwebm/webm_parser/include Source/third_party/crc32c/config Source/third_party/crc32c/include Source/third_party/crc32c/src/include Source/third_party/libaom/source/libaom Source/third_party/libwebm/mkvmuxer Source/third_party/libvpx/source/libvpx/third_party/libwebm;
-
- PUBLIC_HEADERS_FOLDER_PREFIX = $(WK_LIBRARY_HEADERS_FOLDER_PATH);
- INSTALL_PUBLIC_HEADER_PREFIX = $(INSTALL_PATH_PREFIX)$(PUBLIC_HEADERS_FOLDER_PREFIX);
diff --git a/Source/ThirdParty/libwebrtc/Source/webrtc/modules/rtp_rtcp/source/rtcp_transceiver_impl.cc b/Source/ThirdParty/libwebrtc/Source/webrtc/modules/rtp_rtcp/source/rtcp_transceiver_impl.cc
index bcd9e02bc019e17799fe812d7d9a4c7c316b3456..909bbac68574129ea60af831f30de59edf3c28b8 100644
--- a/Source/ThirdParty/libwebrtc/Source/webrtc/modules/rtp_rtcp/source/rtcp_transceiver_impl.cc
@@ -1987,12 +1749,12 @@ index bcd9e02bc019e17799fe812d7d9a4c7c316b3456..909bbac68574129ea60af831f30de59e
rtt = CompactNtpRttToTimeDelta(
receive_time_ntp - block.delay_since_last_sr() - block.last_sr());
diff --git a/Source/ThirdParty/libwebrtc/libwebrtc.xcodeproj/project.pbxproj b/Source/ThirdParty/libwebrtc/libwebrtc.xcodeproj/project.pbxproj
-index 6550be991328f094d74b7c5aa709fe8c5d399f54..5810c4fd8a1257aaad612f67ab5a350ae90615de 100644
+index e05e49446506e8e7adff5854798471b6c9a72a76..b61126bd44324aecd9295affe1d02b9b08fafe98 100644
--- a/Source/ThirdParty/libwebrtc/libwebrtc.xcodeproj/project.pbxproj
+++ b/Source/ThirdParty/libwebrtc/libwebrtc.xcodeproj/project.pbxproj
-@@ -6,6 +6,20 @@
- objectVersion = 54;
- objects = {
+@@ -28,6 +28,20 @@
+ };
+ /* End PBXAggregateTarget section */
+/* Begin PBXAggregateTarget section */
+ F31720AC27FE215900EEE407 /* Copy libvpx headers */ = {
@@ -2011,7 +1773,7 @@ index 6550be991328f094d74b7c5aa709fe8c5d399f54..5810c4fd8a1257aaad612f67ab5a350a
/* Begin PBXBuildFile section */
2D6BFF60280A93DF00A1A74F /* video_coding.h in Headers */ = {isa = PBXBuildFile; fileRef = 4131C45B234C81710028A615 /* video_coding.h */; settings = {ATTRIBUTES = (Public, ); }; };
2D6BFF61280A93EC00A1A74F /* video_codec_initializer.h in Headers */ = {isa = PBXBuildFile; fileRef = 4131C45E234C81720028A615 /* video_codec_initializer.h */; settings = {ATTRIBUTES = (Public, ); }; };
-@@ -4947,6 +4961,9 @@
+@@ -5028,6 +5042,9 @@
DDF30D9127C5C725006A526F /* receive_side_congestion_controller.h in Headers */ = {isa = PBXBuildFile; fileRef = DDF30D9027C5C725006A526F /* receive_side_congestion_controller.h */; };
DDF30D9527C5C756006A526F /* bwe_defines.h in Headers */ = {isa = PBXBuildFile; fileRef = DDF30D9327C5C756006A526F /* bwe_defines.h */; };
DDF30D9627C5C756006A526F /* remote_bitrate_estimator.h in Headers */ = {isa = PBXBuildFile; fileRef = DDF30D9427C5C756006A526F /* remote_bitrate_estimator.h */; };
@@ -2021,7 +1783,7 @@ index 6550be991328f094d74b7c5aa709fe8c5d399f54..5810c4fd8a1257aaad612f67ab5a350a
/* End PBXBuildFile section */
/* Begin PBXBuildRule section */
-@@ -5211,6 +5228,13 @@
+@@ -5418,6 +5435,13 @@
remoteGlobalIDString = DDF30D0527C5C003006A526F;
remoteInfo = absl;
};
@@ -2035,7 +1797,7 @@ index 6550be991328f094d74b7c5aa709fe8c5d399f54..5810c4fd8a1257aaad612f67ab5a350a
/* End PBXContainerItemProxy section */
/* Begin PBXCopyFilesBuildPhase section */
-@@ -10562,6 +10586,9 @@
+@@ -10837,6 +10861,9 @@
DDF30D9027C5C725006A526F /* receive_side_congestion_controller.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = receive_side_congestion_controller.h; sourceTree = ""; };
DDF30D9327C5C756006A526F /* bwe_defines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bwe_defines.h; sourceTree = ""; };
DDF30D9427C5C756006A526F /* remote_bitrate_estimator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = remote_bitrate_estimator.h; sourceTree = ""; };
@@ -2045,7 +1807,7 @@ index 6550be991328f094d74b7c5aa709fe8c5d399f54..5810c4fd8a1257aaad612f67ab5a350a
FB39D0D11200F0E300088E69 /* libwebrtc.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libwebrtc.dylib; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */
-@@ -18854,6 +18881,7 @@
+@@ -19415,6 +19442,7 @@
isa = PBXGroup;
children = (
CDFD2F9224C4B2F90048DAC3 /* common */,
@@ -2053,7 +1815,7 @@ index 6550be991328f094d74b7c5aa709fe8c5d399f54..5810c4fd8a1257aaad612f67ab5a350a
CDEBB19224C0191800ADBD44 /* webm_parser */,
);
path = libwebm;
-@@ -19295,6 +19323,16 @@
+@@ -19849,6 +19877,16 @@
path = include;
sourceTree = "";
};
@@ -2070,7 +1832,7 @@ index 6550be991328f094d74b7c5aa709fe8c5d399f54..5810c4fd8a1257aaad612f67ab5a350a
FB39D06E1200ED9200088E69 = {
isa = PBXGroup;
children = (
-@@ -22185,6 +22223,7 @@
+@@ -22941,6 +22979,7 @@
);
dependencies = (
410B3827292B73E90003E515 /* PBXTargetDependency */,
@@ -2078,15 +1840,15 @@ index 6550be991328f094d74b7c5aa709fe8c5d399f54..5810c4fd8a1257aaad612f67ab5a350a
DD2E76E827C6B69A00F2A74C /* PBXTargetDependency */,
CDEBB4CC24C01AB400ADBD44 /* PBXTargetDependency */,
411ED040212E0811004320BA /* PBXTargetDependency */,
-@@ -22244,6 +22283,7 @@
- CDEBB11824C0187400ADBD44 /* webm */,
- DDEBB11824C0187400ADBD44 /* aom */,
- DDF30D0527C5C003006A526F /* absl */,
+@@ -23016,6 +23055,7 @@
+ 446359B62AEA108C00551EEE /* vp8_replay_fuzzer */,
+ 44C20E892AB39FA80046C6A8 /* vp9_dec_fuzzer */,
+ 444A6EF02AEADFC9005FE121 /* vp9_replay_fuzzer */,
+ F31720AC27FE215900EEE407 /* Copy libvpx headers */,
);
};
/* End PBXProject section */
-@@ -22326,6 +22366,23 @@
+@@ -23098,6 +23138,23 @@
shellPath = /bin/sh;
shellScript = "\"${SRCROOT}/Scripts/create-symlink-to-altroot.sh\"\n";
};
@@ -2110,7 +1872,7 @@ index 6550be991328f094d74b7c5aa709fe8c5d399f54..5810c4fd8a1257aaad612f67ab5a350a
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
-@@ -24077,6 +24134,9 @@
+@@ -24956,6 +25013,9 @@
5CDD865E1E43B8B500621E92 /* min_max_operations.c in Sources */,
4189395B242A71F5007FDC41 /* min_video_bitrate_experiment.cc in Sources */,
41B8D8FB28CB85CB00E5FA37 /* missing_mandatory_parameter_cause.cc in Sources */,
@@ -2120,7 +1882,7 @@ index 6550be991328f094d74b7c5aa709fe8c5d399f54..5810c4fd8a1257aaad612f67ab5a350a
4131C387234B957D0028A615 /* moving_average.cc in Sources */,
41FCBB1521B1F7AA00A5DF27 /* moving_average.cc in Sources */,
5CD286101E6A64C90094FDC8 /* moving_max.cc in Sources */,
-@@ -24786,6 +24846,11 @@
+@@ -25755,6 +25815,11 @@
target = DDF30D0527C5C003006A526F /* absl */;
targetProxy = DD2E76E727C6B69A00F2A74C /* PBXContainerItemProxy */;
};
@@ -2132,7 +1894,7 @@ index 6550be991328f094d74b7c5aa709fe8c5d399f54..5810c4fd8a1257aaad612f67ab5a350a
/* End PBXTargetDependency section */
/* Begin XCBuildConfiguration section */
-@@ -25013,6 +25078,27 @@
+@@ -26204,6 +26269,27 @@
};
name = Production;
};
@@ -2160,7 +1922,7 @@ index 6550be991328f094d74b7c5aa709fe8c5d399f54..5810c4fd8a1257aaad612f67ab5a350a
FB39D0711200ED9200088E69 /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 5D7C59C71208C68B001C873E /* DebugRelease.xcconfig */;
-@@ -25145,6 +25231,16 @@
+@@ -26436,6 +26522,16 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Production;
};
@@ -2178,18 +1940,18 @@ index 6550be991328f094d74b7c5aa709fe8c5d399f54..5810c4fd8a1257aaad612f67ab5a350a
isa = XCConfigurationList;
buildConfigurations = (
diff --git a/Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml b/Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml
-index b9d4024573d25cdd97c8e45e1cf7629cb3a643c7..706e0334ffd49735aa5473777228bc596a64a950 100644
+index bd465484eab340e7b8ef01030fdc245cae2f48b6..950a84ad3a0ad06bb4206f9e9a73f7c69224c99c 100644
--- a/Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml
+++ b/Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml
-@@ -590,6 +590,7 @@ AspectRatioOfImgFromWidthAndHeightEnabled:
- default: true
+@@ -553,6 +553,7 @@ AriaTextRoleEnabled:
+ default: false
# FIXME: This is on by default in WebKit2 PLATFORM(COCOA). Perhaps we should consider turning it on for WebKitLegacy as well.
+# Playwright: enable on all platforms to align with Safari.
AsyncClipboardAPIEnabled:
type: bool
status: mature
-@@ -600,7 +601,7 @@ AsyncClipboardAPIEnabled:
+@@ -563,7 +564,7 @@ AsyncClipboardAPIEnabled:
default: false
WebKit:
"PLATFORM(COCOA) || PLATFORM(GTK)" : true
@@ -2198,15 +1960,19 @@ index b9d4024573d25cdd97c8e45e1cf7629cb3a643c7..706e0334ffd49735aa5473777228bc59
WebCore:
default: false
-@@ -1863,6 +1864,7 @@ CrossOriginEmbedderPolicyEnabled:
+@@ -1887,9 +1888,10 @@ CrossOriginEmbedderPolicyEnabled:
WebCore:
default: false
+# Playwright: disable setting.
CrossOriginOpenerPolicyEnabled:
type: bool
- status: stable
-@@ -1873,7 +1875,7 @@ CrossOriginOpenerPolicyEnabled:
+- status: stable
++ status: preview
+ category: security
+ humanReadableName: "Cross-Origin-Opener-Policy (COOP) header"
+ humanReadableDescription: "Support for Cross-Origin-Opener-Policy (COOP) header"
+@@ -1897,7 +1899,7 @@ CrossOriginOpenerPolicyEnabled:
WebKitLegacy:
default: false
WebKit:
@@ -2215,7 +1981,7 @@ index b9d4024573d25cdd97c8e45e1cf7629cb3a643c7..706e0334ffd49735aa5473777228bc59
WebCore:
default: false
-@@ -1903,7 +1905,7 @@ CustomPasteboardDataEnabled:
+@@ -1927,7 +1929,7 @@ CustomPasteboardDataEnabled:
WebKitLegacy:
default: false
WebKit:
@@ -2224,7 +1990,7 @@ index b9d4024573d25cdd97c8e45e1cf7629cb3a643c7..706e0334ffd49735aa5473777228bc59
default: false
DNSPrefetchingEnabled:
-@@ -1948,6 +1950,7 @@ DOMAudioSessionFullEnabled:
+@@ -1972,6 +1974,7 @@ DOMAudioSessionFullEnabled:
WebCore:
default: false
@@ -2232,7 +1998,7 @@ index b9d4024573d25cdd97c8e45e1cf7629cb3a643c7..706e0334ffd49735aa5473777228bc59
DOMPasteAccessRequestsEnabled:
type: bool
status: internal
-@@ -1959,7 +1962,7 @@ DOMPasteAccessRequestsEnabled:
+@@ -1983,7 +1986,7 @@ DOMPasteAccessRequestsEnabled:
default: false
WebKit:
"PLATFORM(IOS) || PLATFORM(MAC) || PLATFORM(GTK) || PLATFORM(VISION)": true
@@ -2241,7 +2007,7 @@ index b9d4024573d25cdd97c8e45e1cf7629cb3a643c7..706e0334ffd49735aa5473777228bc59
WebCore:
default: false
-@@ -3380,6 +3383,7 @@ InspectorAttachmentSide:
+@@ -3339,6 +3342,7 @@ InspectorAttachmentSide:
WebKit:
default: 0
@@ -2249,7 +2015,7 @@ index b9d4024573d25cdd97c8e45e1cf7629cb3a643c7..706e0334ffd49735aa5473777228bc59
InspectorStartsAttached:
type: bool
status: embedder
-@@ -3387,7 +3391,7 @@ InspectorStartsAttached:
+@@ -3346,7 +3350,7 @@ InspectorStartsAttached:
exposed: [ WebKit ]
defaultValue:
WebKit:
@@ -2258,15 +2024,19 @@ index b9d4024573d25cdd97c8e45e1cf7629cb3a643c7..706e0334ffd49735aa5473777228bc59
InspectorWindowFrame:
type: String
-@@ -3755,6 +3759,7 @@ LayoutViewportHeightExpansionFactor:
+@@ -3701,9 +3705,10 @@ LayoutViewportHeightExpansionFactor:
WebCore:
default: 0
+# Playwright: disable setting.
LazyIframeLoadingEnabled:
type: bool
- status: stable
-@@ -3765,9 +3770,9 @@ LazyIframeLoadingEnabled:
+- status: stable
++ status: preview
+ category: html
+ humanReadableName: "Lazy iframe loading"
+ humanReadableDescription: "Enable lazy iframe loading support"
+@@ -3711,9 +3716,9 @@ LazyIframeLoadingEnabled:
WebKitLegacy:
default: true
WebKit:
@@ -2278,7 +2048,7 @@ index b9d4024573d25cdd97c8e45e1cf7629cb3a643c7..706e0334ffd49735aa5473777228bc59
LazyImageLoadingEnabled:
type: bool
-@@ -5113,6 +5118,19 @@ PluginsEnabled:
+@@ -5049,6 +5054,19 @@ PluginsEnabled:
WebCore:
default: false
@@ -2298,7 +2068,7 @@ index b9d4024573d25cdd97c8e45e1cf7629cb3a643c7..706e0334ffd49735aa5473777228bc59
PopoverAttributeEnabled:
type: bool
status: stable
-@@ -6796,6 +6814,7 @@ UseCGDisplayListsForDOMRendering:
+@@ -6715,6 +6733,7 @@ UseCGDisplayListsForDOMRendering:
WebKit:
default: true
@@ -2306,7 +2076,7 @@ index b9d4024573d25cdd97c8e45e1cf7629cb3a643c7..706e0334ffd49735aa5473777228bc59
UseGPUProcessForCanvasRenderingEnabled:
type: bool
status: stable
-@@ -6808,7 +6827,7 @@ UseGPUProcessForCanvasRenderingEnabled:
+@@ -6727,7 +6746,7 @@ UseGPUProcessForCanvasRenderingEnabled:
defaultValue:
WebKit:
"ENABLE(GPU_PROCESS_BY_DEFAULT)": true
@@ -2315,7 +2085,7 @@ index b9d4024573d25cdd97c8e45e1cf7629cb3a643c7..706e0334ffd49735aa5473777228bc59
default: false
UseGPUProcessForDOMRenderingEnabled:
-@@ -6850,6 +6869,7 @@ UseGPUProcessForMediaEnabled:
+@@ -6769,6 +6788,7 @@ UseGPUProcessForMediaEnabled:
"ENABLE(GPU_PROCESS_BY_DEFAULT)": true
default: false
@@ -2323,7 +2093,7 @@ index b9d4024573d25cdd97c8e45e1cf7629cb3a643c7..706e0334ffd49735aa5473777228bc59
UseGPUProcessForWebGLEnabled:
type: bool
status: internal
-@@ -6861,7 +6881,7 @@ UseGPUProcessForWebGLEnabled:
+@@ -6780,7 +6800,7 @@ UseGPUProcessForWebGLEnabled:
default: false
WebKit:
"ENABLE(GPU_PROCESS_BY_DEFAULT) && ENABLE(GPU_PROCESS_WEBGL_BY_DEFAULT)": true
@@ -2333,10 +2103,10 @@ index b9d4024573d25cdd97c8e45e1cf7629cb3a643c7..706e0334ffd49735aa5473777228bc59
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 eea248ca9ab06ddbc55a1ed17bdd334e2ea848ec..f0686b9c4f0a489d78e63c35a612379cdfb01f8a 100644
+index 672f34c1d4a9b6af9453a91427c6a5fd311e3c8a..4861aeb7e723dbd2cfcbb2c55625fe61762d8dd9 100644
--- a/Source/WTF/wtf/PlatformEnable.h
+++ b/Source/WTF/wtf/PlatformEnable.h
-@@ -408,7 +408,7 @@
+@@ -459,7 +459,7 @@
// ORIENTATION_EVENTS should never get enabled on Desktop, only Mobile.
#if !defined(ENABLE_ORIENTATION_EVENTS)
@@ -2344,8 +2114,8 @@ index eea248ca9ab06ddbc55a1ed17bdd334e2ea848ec..f0686b9c4f0a489d78e63c35a612379c
+#define ENABLE_ORIENTATION_EVENTS 1
#endif
- #if OS(WINDOWS)
-@@ -473,7 +473,7 @@
+ #if !defined(ENABLE_OVERFLOW_SCROLLING_TOUCH)
+@@ -576,7 +576,7 @@
#endif
#if !defined(ENABLE_TOUCH_EVENTS)
@@ -2355,10 +2125,10 @@ index eea248ca9ab06ddbc55a1ed17bdd334e2ea848ec..f0686b9c4f0a489d78e63c35a612379c
#if !defined(ENABLE_TOUCH_ACTION_REGIONS)
diff --git a/Source/WTF/wtf/PlatformHave.h b/Source/WTF/wtf/PlatformHave.h
-index e14052bc7205ea751e71044e0237c7fb44e92d05..ae8d883861e823aef73181f642e0eb0702c65702 100644
+index e30d25bd8505fcf6ba86dbb3e87761286a068e51..ccd89e82ccd96f386fd03140e441731a18c8dbc8 100644
--- a/Source/WTF/wtf/PlatformHave.h
+++ b/Source/WTF/wtf/PlatformHave.h
-@@ -411,7 +411,7 @@
+@@ -415,7 +415,7 @@
#define HAVE_FOUNDATION_WITH_SAME_SITE_COOKIE_SUPPORT 1
#endif
@@ -2367,7 +2137,7 @@ index e14052bc7205ea751e71044e0237c7fb44e92d05..ae8d883861e823aef73181f642e0eb07
#define HAVE_OS_DARK_MODE_SUPPORT 1
#endif
-@@ -1238,7 +1238,8 @@
+@@ -1257,7 +1257,8 @@
#endif
#if PLATFORM(MAC)
@@ -2378,10 +2148,10 @@ index e14052bc7205ea751e71044e0237c7fb44e92d05..ae8d883861e823aef73181f642e0eb07
#if !defined(HAVE_LOCKDOWN_MODE_PDF_ADDITIONS) && \
diff --git a/Source/WebCore/DerivedSources.make b/Source/WebCore/DerivedSources.make
-index 8e7c95a1f4884ba9a13275df672c98dfc233705a..6bfa17b518b342e637a3569b20f01636ee7e18f3 100644
+index 043742495941e4cc10c811bbaa225357a9aaa9ea..7b30d5e2539c05408873ae700aa2df4fb59c196e 100644
--- a/Source/WebCore/DerivedSources.make
+++ b/Source/WebCore/DerivedSources.make
-@@ -1104,6 +1104,10 @@ JS_BINDING_IDLS := \
+@@ -1130,6 +1130,10 @@ JS_BINDING_IDLS := \
$(WebCore)/dom/Slotable.idl \
$(WebCore)/dom/StaticRange.idl \
$(WebCore)/dom/StringCallback.idl \
@@ -2392,7 +2162,7 @@ index 8e7c95a1f4884ba9a13275df672c98dfc233705a..6bfa17b518b342e637a3569b20f01636
$(WebCore)/dom/Text.idl \
$(WebCore)/dom/TextDecoder.idl \
$(WebCore)/dom/TextDecoderStream.idl \
-@@ -1677,9 +1681,6 @@ ADDITIONAL_BINDING_IDLS = \
+@@ -1710,9 +1714,6 @@ ADDITIONAL_BINDING_IDLS = \
GestureEvent.idl \
Internals+Additions.idl \
InternalsAdditions.idl \
@@ -2418,7 +2188,7 @@ index 9dfd25d4160011d576e9c636e4c805bfd486fd26..573edcb686440ea8426e3a59540250a5
}
diff --git a/Source/WebCore/Modules/speech/cocoa/WebSpeechRecognizerTask.mm b/Source/WebCore/Modules/speech/cocoa/WebSpeechRecognizerTask.mm
-index 316aa5b17c5346b2d3e420e7262e7e76e254f427..c2beed6bd1e83257095252146ee3506ce5c92b07 100644
+index 506ebb25fa290f27a75674a6fe5506fc311910d6..07d34c567b42aca08b188243c3f036f64a8da0c4 100644
--- a/Source/WebCore/Modules/speech/cocoa/WebSpeechRecognizerTask.mm
+++ b/Source/WebCore/Modules/speech/cocoa/WebSpeechRecognizerTask.mm
@@ -195,6 +195,7 @@ - (void)sendEndIfNeeded
@@ -2466,10 +2236,10 @@ index 99db9b2a0693bddab0b783b47746460cd0b7ffd9..74cbf2811a6f8dbcf631c8a218ad4a13
set(CSS_VALUE_PLATFORM_DEFINES "HAVE_OS_DARK_MODE_SUPPORT=1")
diff --git a/Source/WebCore/SourcesCocoa.txt b/Source/WebCore/SourcesCocoa.txt
-index 09bbf7edb87d2423485238eb265bb73076848e4f..3c0ff4658e612b4fca148937ff07d6337451f33b 100644
+index 2b1def2b2a7bc1083fd2611eb6fc180f39dcca0a..1724fc2550d0ce4690ceb7674f92999f1d9ff007 100644
--- a/Source/WebCore/SourcesCocoa.txt
+++ b/Source/WebCore/SourcesCocoa.txt
-@@ -688,3 +688,9 @@ platform/graphics/angle/GraphicsContextGLANGLE.cpp @no-unify
+@@ -700,3 +700,9 @@ platform/graphics/angle/GraphicsContextGLANGLE.cpp @no-unify
platform/graphics/cocoa/ANGLEUtilitiesCocoa.cpp @no-unify
platform/graphics/cocoa/GraphicsContextGLCocoa.mm @no-unify
platform/graphics/cv/GraphicsContextGLCVCocoa.cpp @no-unify
@@ -2480,10 +2250,10 @@ index 09bbf7edb87d2423485238eb265bb73076848e4f..3c0ff4658e612b4fca148937ff07d633
+JSTouchList.cpp
+// Playwright end
diff --git a/Source/WebCore/SourcesGTK.txt b/Source/WebCore/SourcesGTK.txt
-index e00e78af085a767842d2b08ca40e71fad7741569..1d7b32818538e08dd308a2b3f4967256a88cc9a2 100644
+index 4f3db3c7900ed6873487be379cb9cde693d536e1..9cb0f67b8bd5b5d98bbb595dcf60b950fe140be9 100644
--- a/Source/WebCore/SourcesGTK.txt
+++ b/Source/WebCore/SourcesGTK.txt
-@@ -124,3 +124,10 @@ platform/text/hyphen/HyphenationLibHyphen.cpp
+@@ -122,3 +122,10 @@ platform/text/hyphen/HyphenationLibHyphen.cpp
platform/unix/LoggingUnix.cpp
platform/xdg/MIMETypeRegistryXdg.cpp
@@ -2495,7 +2265,7 @@ index e00e78af085a767842d2b08ca40e71fad7741569..1d7b32818538e08dd308a2b3f4967256
+JSSpeechSynthesisEventInit.cpp
+// Playwright: end.
diff --git a/Source/WebCore/SourcesWPE.txt b/Source/WebCore/SourcesWPE.txt
-index b22d8835c52f1f5584c96d68c70cd62164ee39d4..adcf594fc399b93772c1c962b283bef16d253186 100644
+index 06c923a3227befac7680faf2cdb44abd657d6e5f..adcf594fc399b93772c1c962b283bef16d253186 100644
--- a/Source/WebCore/SourcesWPE.txt
+++ b/Source/WebCore/SourcesWPE.txt
@@ -45,6 +45,8 @@ editing/libwpe/EditorLibWPE.cpp
@@ -2507,17 +2277,6 @@ index b22d8835c52f1f5584c96d68c70cd62164ee39d4..adcf594fc399b93772c1c962b283bef1
page/linux/ResourceUsageOverlayLinux.cpp
page/linux/ResourceUsageThreadLinux.cpp
-@@ -70,8 +72,8 @@ platform/graphics/angle/PlatformDisplayANGLE.cpp @no-unify
-
- platform/graphics/wpe/SystemFontDatabaseWPE.cpp
-
--platform/graphics/egl/GLContext.cpp
--platform/graphics/egl/GLContextLibWPE.cpp
-+platform/graphics/egl/GLContext.cpp @no-unify
-+platform/graphics/egl/GLContextLibWPE.cpp @no-unify
-
- platform/graphics/gbm/GBMBufferSwapchain.cpp
- platform/graphics/gbm/GBMDevice.cpp
@@ -91,6 +93,17 @@ platform/text/LocaleICU.cpp
platform/unix/LoggingUnix.cpp
@@ -2537,10 +2296,10 @@ index b22d8835c52f1f5584c96d68c70cd62164ee39d4..adcf594fc399b93772c1c962b283bef1
+JSSpeechSynthesisEventInit.cpp
+// Playwright: end.
diff --git a/Source/WebCore/WebCore.xcodeproj/project.pbxproj b/Source/WebCore/WebCore.xcodeproj/project.pbxproj
-index edaf3a605d842164841fd5f951b0536069e1d007..f2eb66689071b3918cc6dbb892e00f22b403b697 100644
+index 4fcc73780444062e38182cbeb43b8d41bb423b94..4034be971d8c0dd868521d38dd33ac43c9d03747 100644
--- a/Source/WebCore/WebCore.xcodeproj/project.pbxproj
+++ b/Source/WebCore/WebCore.xcodeproj/project.pbxproj
-@@ -6077,6 +6077,13 @@
+@@ -6144,6 +6144,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, ); }; };
@@ -2554,7 +2313,7 @@ index edaf3a605d842164841fd5f951b0536069e1d007..f2eb66689071b3918cc6dbb892e00f22
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, ); }; };
-@@ -19588,6 +19595,14 @@
+@@ -19848,6 +19855,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 = ""; };
@@ -2569,7 +2328,7 @@ index edaf3a605d842164841fd5f951b0536069e1d007..f2eb66689071b3918cc6dbb892e00f22
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 = ""; };
-@@ -27016,6 +27031,11 @@
+@@ -27408,6 +27423,11 @@
BC4A5324256055590028C592 /* TextDirectionSubmenuInclusionBehavior.h */,
2D4F96F11A1ECC240098BF88 /* TextIndicator.cpp */,
2D4F96F21A1ECC240098BF88 /* TextIndicator.h */,
@@ -2581,7 +2340,7 @@ index edaf3a605d842164841fd5f951b0536069e1d007..f2eb66689071b3918cc6dbb892e00f22
F48570A42644C76D00C05F71 /* TranslationContextMenuInfo.h */,
F4E1965F21F26E4E00285078 /* UndoItem.cpp */,
2ECDBAD521D8906300F00ECD /* UndoItem.h */,
-@@ -33199,6 +33219,8 @@
+@@ -33646,6 +33666,8 @@
29E4D8DF16B0940F00C84704 /* PlatformSpeechSynthesizer.h */,
1AD8F81A11CAB9E900E93E54 /* PlatformStrategies.cpp */,
1AD8F81911CAB9E900E93E54 /* PlatformStrategies.h */,
@@ -2589,8 +2348,8 @@ index edaf3a605d842164841fd5f951b0536069e1d007..f2eb66689071b3918cc6dbb892e00f22
+ F050E17623AD70C40011CE47 /* PlatformTouchPoint.h */,
0FD7C21D23CE41E30096D102 /* PlatformWheelEvent.cpp */,
935C476A09AC4D4F00A6AAB4 /* PlatformWheelEvent.h */,
- BCBB8AB513F1AFB000734DF0 /* PODInterval.h */,
-@@ -35747,6 +35769,7 @@
+ F491A66A2A9FEFA300F96146 /* PlatformWheelEvent.serialization.in */,
+@@ -36243,6 +36265,7 @@
AD6E71AB1668899D00320C13 /* DocumentSharedObjectPool.h */,
6BDB5DC1227BD3B800919770 /* DocumentStorageAccess.cpp */,
6BDB5DC0227BD3B800919770 /* DocumentStorageAccess.h */,
@@ -2598,7 +2357,7 @@ index edaf3a605d842164841fd5f951b0536069e1d007..f2eb66689071b3918cc6dbb892e00f22
7CE7FA5B1EF882300060C9D6 /* DocumentTouch.cpp */,
7CE7FA591EF882300060C9D6 /* DocumentTouch.h */,
A8185F3209765765005826D9 /* DocumentType.cpp */,
-@@ -40349,6 +40372,8 @@
+@@ -40909,6 +40932,8 @@
1AD8F81B11CAB9E900E93E54 /* PlatformStrategies.h in Headers */,
0F7D07331884C56C00B4AF86 /* PlatformTextTrack.h in Headers */,
074E82BB18A69F0E007EF54C /* PlatformTimeRanges.h in Headers */,
@@ -2607,7 +2366,7 @@ index edaf3a605d842164841fd5f951b0536069e1d007..f2eb66689071b3918cc6dbb892e00f22
CDD08ABD277E542600EA3755 /* PlatformTrackConfiguration.h in Headers */,
CD1F9B022700323D00617EB6 /* PlatformVideoColorPrimaries.h in Headers */,
CD1F9B01270020B700617EB6 /* PlatformVideoColorSpace.h in Headers */,
-@@ -41583,6 +41608,7 @@
+@@ -42160,6 +42185,7 @@
0F54DD081881D5F5003EEDBB /* Touch.h in Headers */,
71B7EE0D21B5C6870031C1EF /* TouchAction.h in Headers */,
0F54DD091881D5F5003EEDBB /* TouchEvent.h in Headers */,
@@ -2615,7 +2374,7 @@ index edaf3a605d842164841fd5f951b0536069e1d007..f2eb66689071b3918cc6dbb892e00f22
0F54DD0A1881D5F5003EEDBB /* TouchList.h in Headers */,
070334D71459FFD5008D8D45 /* TrackBase.h in Headers */,
BE88E0C21715CE2600658D98 /* TrackListBase.h in Headers */,
-@@ -42685,6 +42711,8 @@
+@@ -43275,6 +43301,8 @@
2D22830323A8470700364B7E /* CursorMac.mm in Sources */,
5CBD59592280E926002B22AA /* CustomHeaderFields.cpp in Sources */,
07E4BDBF2A3A5FAB000D5509 /* DictationCaretAnimator.cpp in Sources */,
@@ -2624,7 +2383,7 @@ index edaf3a605d842164841fd5f951b0536069e1d007..f2eb66689071b3918cc6dbb892e00f22
7CE6CBFD187F394900D46BF5 /* FormatConverter.cpp in Sources */,
4667EA3E2968D9DA00BAB1E2 /* GameControllerHapticEffect.mm in Sources */,
46FE73D32968E52000B8064C /* GameControllerHapticEngines.mm in Sources */,
-@@ -42764,6 +42792,9 @@
+@@ -43358,6 +43386,9 @@
CE88EE262414467B007F29C2 /* TextAlternativeWithRange.mm in Sources */,
BE39137129B267F500FA5D4F /* TextTransformCocoa.cpp in Sources */,
51DF6D800B92A18E00C2DC85 /* ThreadCheck.mm in Sources */,
@@ -2635,10 +2394,10 @@ index edaf3a605d842164841fd5f951b0536069e1d007..f2eb66689071b3918cc6dbb892e00f22
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 f42fb0d0074f63e81aebbd24f899cc71a94deb62..454de188434a84c87bdcd298b72970ef8565822c 100644
+index 92f1fc9f5f2fb42795b3e07c325711685d9587c8..bf0fb33e0002aae3c86af4228f1d386c75222384 100644
--- a/Source/WebCore/accessibility/AccessibilityObject.cpp
+++ b/Source/WebCore/accessibility/AccessibilityObject.cpp
-@@ -64,6 +64,7 @@
+@@ -65,6 +65,7 @@
#include "HTMLParserIdioms.h"
#include "HTMLTextAreaElement.h"
#include "HitTestResult.h"
@@ -2646,7 +2405,7 @@ index f42fb0d0074f63e81aebbd24f899cc71a94deb62..454de188434a84c87bdcd298b72970ef
#include "LocalFrame.h"
#include "LocalizedStrings.h"
#include "MathMLNames.h"
-@@ -3950,9 +3951,14 @@ AccessibilityObjectInclusion AccessibilityObject::defaultObjectInclusion() const
+@@ -3989,9 +3990,14 @@ AccessibilityObjectInclusion AccessibilityObject::defaultObjectInclusion() const
if (roleValue() == AccessibilityRole::ApplicationDialog)
return AccessibilityObjectInclusion::IncludeObject;
@@ -2664,10 +2423,10 @@ index f42fb0d0074f63e81aebbd24f899cc71a94deb62..454de188434a84c87bdcd298b72970ef
{
AXComputedObjectAttributeCache* attributeCache = nullptr;
diff --git a/Source/WebCore/bindings/js/WebCoreBuiltinNames.h b/Source/WebCore/bindings/js/WebCoreBuiltinNames.h
-index 6bdd79fc280b5c58f041e4a5cc9179cb2e2788d9..db4e4a028e3631b9230d69d8c5287db1143fb013 100644
+index 5c48a13f02c1489923abf2c57e495ff22a0d56fe..4c6fbfc670c65d4aca7f7f3bf688e8dbbb1f6fd5 100644
--- a/Source/WebCore/bindings/js/WebCoreBuiltinNames.h
+++ b/Source/WebCore/bindings/js/WebCoreBuiltinNames.h
-@@ -175,6 +175,8 @@ namespace WebCore {
+@@ -177,6 +177,8 @@ namespace WebCore {
macro(DecompressionStreamTransform) \
macro(DelayNode) \
macro(DeprecationReportBody) \
@@ -2677,7 +2436,7 @@ index 6bdd79fc280b5c58f041e4a5cc9179cb2e2788d9..db4e4a028e3631b9230d69d8c5287db1
macro(DynamicsCompressorNode) \
macro(ElementInternals) \
diff --git a/Source/WebCore/css/query/MediaQueryFeatures.cpp b/Source/WebCore/css/query/MediaQueryFeatures.cpp
-index 2be61c75b61bc0ef524f2f32c149921dec7e8de1..86ef8f70cbe268f455353be85a0c1259b2a41301 100644
+index 98d40553e12efe44330ddc755636e535dc2e2cf7..103d80febe931e688f8c020e8a58d8aec467a66b 100644
--- a/Source/WebCore/css/query/MediaQueryFeatures.cpp
+++ b/Source/WebCore/css/query/MediaQueryFeatures.cpp
@@ -370,7 +370,11 @@ const FeatureSchema& forcedColors()
@@ -2693,7 +2452,7 @@ index 2be61c75b61bc0ef524f2f32c149921dec7e8de1..86ef8f70cbe268f455353be85a0c1259
return MatchingIdentifiers { CSSValueNone };
}
};
-@@ -553,6 +557,9 @@ const FeatureSchema& prefersReducedMotion()
+@@ -549,6 +553,9 @@ const FeatureSchema& prefersReducedMotion()
[](auto& context) {
bool userPrefersReducedMotion = [&] {
auto& frame = *context.document.frame();
@@ -2704,7 +2463,7 @@ index 2be61c75b61bc0ef524f2f32c149921dec7e8de1..86ef8f70cbe268f455353be85a0c1259
case ForcedAccessibilityValue::On:
return true;
diff --git a/Source/WebCore/dom/DataTransfer.cpp b/Source/WebCore/dom/DataTransfer.cpp
-index b14fe9d1ba75d1f6aee2b5fbe60552e0eefd9875..5a22c89dc468511d6ab7862e9025ea16b142ed72 100644
+index f002bd12fd70e17ebc9a2136096b274ff0cf893d..11f39bacb91643c489663bf003aff52177f00020 100644
--- a/Source/WebCore/dom/DataTransfer.cpp
+++ b/Source/WebCore/dom/DataTransfer.cpp
@@ -510,6 +510,14 @@ Ref DataTransfer::createForDrag(const Document& document)
@@ -2723,10 +2482,10 @@ index b14fe9d1ba75d1f6aee2b5fbe60552e0eefd9875..5a22c89dc468511d6ab7862e9025ea16
{
auto dataTransfer = adoptRef(*new DataTransfer(StoreMode::ReadWrite, makeUnique(), Type::DragAndDropData));
diff --git a/Source/WebCore/dom/DataTransfer.h b/Source/WebCore/dom/DataTransfer.h
-index fb2decfc7dfc6c8a4e5a7dd79c0e23798f6d83b8..ba5f16cf2b443167b8307510f06e985698353319 100644
+index a6d2e7f3152e48028fff00c8090527ba68a9802c..2b99ebd3b1d5fd26f72edd8602e29953c2227a8d 100644
--- a/Source/WebCore/dom/DataTransfer.h
+++ b/Source/WebCore/dom/DataTransfer.h
-@@ -90,6 +90,9 @@ public:
+@@ -91,6 +91,9 @@ public:
#if ENABLE(DRAG_SUPPORT)
static Ref createForDrag(const Document&);
@@ -2797,20 +2556,22 @@ index f27718c1e2b8cd0a8075e556d4cdba7d9ae8fc54..2b61721594e5435845f3151e0de345e9
] partial interface Element {
undefined requestPointerLock();
diff --git a/Source/WebCore/dom/PointerEvent.cpp b/Source/WebCore/dom/PointerEvent.cpp
-index 37ef194cdc90fecbf8733161ff7b538fc566dece..835e442a762d570b48037c1c9190e6d296f4b266 100644
+index 69b66eae141ec206b8c51382e709230034d3bfb7..4a2ce3dd0b527e391de06635b083b4f69dc9722f 100644
--- a/Source/WebCore/dom/PointerEvent.cpp
+++ b/Source/WebCore/dom/PointerEvent.cpp
-@@ -27,7 +27,9 @@
+@@ -27,9 +27,11 @@
#include "PointerEvent.h"
#include "EventNames.h"
+#include "MouseEvent.h"
#include "Node.h"
+ #include "PlatformMouseEvent.h"
+ #include "PointerEventTypeNames.h"
+#include "PlatformTouchEvent.h"
#include
namespace WebCore {
-@@ -116,4 +118,63 @@ EventInterface PointerEvent::eventInterface() const
+@@ -124,4 +126,51 @@ EventInterface PointerEvent::eventInterface() const
return PointerEventInterfaceType;
}
@@ -2836,18 +2597,6 @@ index 37ef194cdc90fecbf8733161ff7b538fc566dece..835e442a762d570b48037c1c9190e6d2
+ return nullAtom();
+}
+
-+static short buttonForType(const AtomString& type)
-+{
-+ return type == eventNames().pointermoveEvent ? -1 : 0;
-+}
-+
-+static unsigned short buttonsForType(const AtomString& type)
-+{
-+ // We have contact with the touch surface for most events except when we've released the touch or canceled it.
-+ auto& eventNames = WebCore::eventNames();
-+ return (type == eventNames.pointerupEvent || type == eventNames.pointeroutEvent || type == eventNames.pointerleaveEvent || type == eventNames.pointercancelEvent) ? 0 : 1;
-+}
-+
+Ref PointerEvent::create(const PlatformTouchEvent& event, unsigned index, bool isPrimary, Ref&& view, const IntPoint& touchDelta)
+{
+ const auto& type = pointerEventType(event.touchPoints().at(index).state());
@@ -2875,7 +2624,7 @@ index 37ef194cdc90fecbf8733161ff7b538fc566dece..835e442a762d570b48037c1c9190e6d2
+
} // namespace WebCore
diff --git a/Source/WebCore/dom/PointerEvent.h b/Source/WebCore/dom/PointerEvent.h
-index 17784dfc482c3033ea0e3ce7fdcf75b2eb4fc9d7..956c05246b5c1368e2c5257b347848d1dab4b969 100644
+index e56223a885097ff60f8db1eef5cca4aa4ad0511d..60c5ad6b8795b2985249833a8d1143ebab64b700 100644
--- a/Source/WebCore/dom/PointerEvent.h
+++ b/Source/WebCore/dom/PointerEvent.h
@@ -33,6 +33,8 @@
@@ -2888,7 +2637,7 @@ index 17784dfc482c3033ea0e3ce7fdcf75b2eb4fc9d7..956c05246b5c1368e2c5257b347848d1
#if ENABLE(TOUCH_EVENTS) && PLATFORM(WPE)
@@ -85,7 +87,7 @@ public:
- static Ref create(const AtomString& type, short button, const MouseEvent&, PointerID, const String& pointerType);
+ static Ref create(const AtomString& type, MouseButton, const MouseEvent&, PointerID, const String& pointerType);
static Ref create(const AtomString& type, PointerID, const String& pointerType, IsPrimary = IsPrimary::No);
-#if ENABLE(TOUCH_EVENTS) && (PLATFORM(IOS_FAMILY) || PLATFORM(WPE))
@@ -2896,9 +2645,9 @@ index 17784dfc482c3033ea0e3ce7fdcf75b2eb4fc9d7..956c05246b5c1368e2c5257b347848d1
static Ref create(const PlatformTouchEvent&, unsigned touchIndex, bool isPrimary, Ref&&, const IntPoint& touchDelta = { });
static Ref create(const AtomString& type, const PlatformTouchEvent&, unsigned touchIndex, bool isPrimary, Ref&&, const IntPoint& touchDelta = { });
#endif
-@@ -134,7 +136,7 @@ private:
+@@ -140,7 +142,7 @@ private:
PointerEvent(const AtomString&, Init&&);
- PointerEvent(const AtomString& type, short button, const MouseEvent&, PointerID, const String& pointerType);
+ PointerEvent(const AtomString& type, MouseButton, const MouseEvent&, PointerID, const String& pointerType);
PointerEvent(const AtomString& type, PointerID, const String& pointerType, IsPrimary);
-#if ENABLE(TOUCH_EVENTS) && (PLATFORM(IOS_FAMILY) || PLATFORM(WPE))
+#if ENABLE(TOUCH_EVENTS)
@@ -2906,7 +2655,7 @@ index 17784dfc482c3033ea0e3ce7fdcf75b2eb4fc9d7..956c05246b5c1368e2c5257b347848d1
#endif
diff --git a/Source/WebCore/editing/libwpe/EditorLibWPE.cpp b/Source/WebCore/editing/libwpe/EditorLibWPE.cpp
-index 52ee00ea5df1b7eabedc3e9c344bd6d715d462fa..e311d17d5f18c9bf239e9fab3c1090c3578fc96c 100644
+index 7813532cc52d582c42aebc979a1ecd1137765f08..c01cbd53ad2430a6ffab9a80fc73e74a8523800a 100644
--- a/Source/WebCore/editing/libwpe/EditorLibWPE.cpp
+++ b/Source/WebCore/editing/libwpe/EditorLibWPE.cpp
@@ -34,6 +34,7 @@
@@ -2923,17 +2672,17 @@ index 52ee00ea5df1b7eabedc3e9c344bd6d715d462fa..e311d17d5f18c9bf239e9fab3c1090c3
+RefPtr Editor::webContentFromPasteboard(Pasteboard& pasteboard, const SimpleRange& context, bool allowPlainText, bool& chosePlainText)
+{
-+ WebContentReader reader(*m_document.frame(), context, allowPlainText);
++ WebContentReader reader(*document().frame(), context, allowPlainText);
+ pasteboard.read(reader);
-+ chosePlainText = reader.madeFragmentFromPlainText;
-+ return WTFMove(reader.fragment);
++ chosePlainText = reader.madeFragmentFromPlainText();
++ return reader.takeFragment();
+}
+
} // namespace WebCore
#endif // USE(LIBWPE)
diff --git a/Source/WebCore/html/FileInputType.cpp b/Source/WebCore/html/FileInputType.cpp
-index 161a668d55aa0d3de7d7acb9ea752119c06130de..80d9a99b4346cbbbc23d7647fe6ebef071681230 100644
+index 823c70952937214681611e01421d0f1791aaa79f..84873071ca3226d9372de4e7c5363110fb393ec1 100644
--- a/Source/WebCore/html/FileInputType.cpp
+++ b/Source/WebCore/html/FileInputType.cpp
@@ -37,6 +37,7 @@
@@ -2944,7 +2693,7 @@ index 161a668d55aa0d3de7d7acb9ea752119c06130de..80d9a99b4346cbbbc23d7647fe6ebef0
#include "LocalFrame.h"
#include "LocalizedStrings.h"
#include "MIMETypeRegistry.h"
-@@ -205,6 +206,11 @@ void FileInputType::handleDOMActivateEvent(Event& event)
+@@ -209,6 +210,11 @@ void FileInputType::handleDOMActivateEvent(Event& event)
if (input.isDisabledFormControl())
return;
@@ -2956,7 +2705,7 @@ index 161a668d55aa0d3de7d7acb9ea752119c06130de..80d9a99b4346cbbbc23d7647fe6ebef0
if (!UserGestureIndicator::processingUserGesture())
return;
-@@ -378,7 +384,9 @@ void FileInputType::setFiles(RefPtr&& files, RequestIcon shouldRequest
+@@ -387,7 +393,9 @@ void FileInputType::setFiles(RefPtr&& files, RequestIcon shouldRequest
pathsChanged = true;
else {
for (unsigned i = 0; i < length; ++i) {
@@ -2968,7 +2717,7 @@ index 161a668d55aa0d3de7d7acb9ea752119c06130de..80d9a99b4346cbbbc23d7647fe6ebef0
break;
}
diff --git a/Source/WebCore/inspector/InspectorController.cpp b/Source/WebCore/inspector/InspectorController.cpp
-index c2dabfbc86e46d14048134545031159757e7c2e4..d3833a407a9e47c8809620ef5cf97346891dd29c 100644
+index 284787f7db1051968ccaf7852bf0e71228ef2e99..d1977ec28b264e964264fe26155d84005e8099aa 100644
--- a/Source/WebCore/inspector/InspectorController.cpp
+++ b/Source/WebCore/inspector/InspectorController.cpp
@@ -288,6 +288,8 @@ void InspectorController::disconnectFrontend(FrontendChannel& frontendChannel)
@@ -3049,10 +2798,10 @@ index 3a981b5bf5ca0bbf4d1c9f0b125564742cd8cad9..f8fc2ca6700461627933f149c5837075
} // namespace WebCore
diff --git a/Source/WebCore/inspector/InspectorInstrumentation.cpp b/Source/WebCore/inspector/InspectorInstrumentation.cpp
-index 55e1d3bbe88f38a730fae0ab6e4c513508b1c8a6..727f8143f1a07c6e7e605a2c0147ee707d074d93 100644
+index 51cc7097811a72232a9415e64efda2b103e392cf..c622d7e4baf7c0c30b667fdef6a3c05445e6e8ad 100644
--- a/Source/WebCore/inspector/InspectorInstrumentation.cpp
+++ b/Source/WebCore/inspector/InspectorInstrumentation.cpp
-@@ -598,6 +598,12 @@ void InspectorInstrumentation::applyUserAgentOverrideImpl(InstrumentingAgents& i
+@@ -599,6 +599,12 @@ void InspectorInstrumentation::applyUserAgentOverrideImpl(InstrumentingAgents& i
pageAgent->applyUserAgentOverride(userAgent);
}
@@ -3065,7 +2814,7 @@ index 55e1d3bbe88f38a730fae0ab6e4c513508b1c8a6..727f8143f1a07c6e7e605a2c0147ee70
void InspectorInstrumentation::applyEmulatedMediaImpl(InstrumentingAgents& instrumentingAgents, AtomString& media)
{
if (auto* pageAgent = instrumentingAgents.enabledPageAgent())
-@@ -681,6 +687,12 @@ void InspectorInstrumentation::didFailLoadingImpl(InstrumentingAgents& instrumen
+@@ -682,6 +688,12 @@ void InspectorInstrumentation::didFailLoadingImpl(InstrumentingAgents& instrumen
consoleAgent->didFailLoading(identifier, error); // This should come AFTER resource notification, front-end relies on this.
}
@@ -3078,7 +2827,7 @@ index 55e1d3bbe88f38a730fae0ab6e4c513508b1c8a6..727f8143f1a07c6e7e605a2c0147ee70
void InspectorInstrumentation::willLoadXHRSynchronouslyImpl(InstrumentingAgents& instrumentingAgents)
{
if (auto* networkAgent = instrumentingAgents.enabledNetworkAgent())
-@@ -713,20 +725,17 @@ void InspectorInstrumentation::didReceiveScriptResponseImpl(InstrumentingAgents&
+@@ -714,20 +726,17 @@ void InspectorInstrumentation::didReceiveScriptResponseImpl(InstrumentingAgents&
void InspectorInstrumentation::domContentLoadedEventFiredImpl(InstrumentingAgents& instrumentingAgents, LocalFrame& frame)
{
@@ -3102,7 +2851,7 @@ index 55e1d3bbe88f38a730fae0ab6e4c513508b1c8a6..727f8143f1a07c6e7e605a2c0147ee70
}
void InspectorInstrumentation::frameDetachedFromParentImpl(InstrumentingAgents& instrumentingAgents, LocalFrame& frame)
-@@ -809,12 +818,6 @@ void InspectorInstrumentation::frameDocumentUpdatedImpl(InstrumentingAgents& ins
+@@ -810,12 +819,6 @@ void InspectorInstrumentation::frameDocumentUpdatedImpl(InstrumentingAgents& ins
pageDOMDebuggerAgent->frameDocumentUpdated(frame);
}
@@ -3115,7 +2864,7 @@ index 55e1d3bbe88f38a730fae0ab6e4c513508b1c8a6..727f8143f1a07c6e7e605a2c0147ee70
void InspectorInstrumentation::frameStartedLoadingImpl(InstrumentingAgents& instrumentingAgents, LocalFrame& frame)
{
if (frame.isMainFrame()) {
-@@ -845,10 +848,10 @@ void InspectorInstrumentation::frameStoppedLoadingImpl(InstrumentingAgents& inst
+@@ -846,10 +849,10 @@ void InspectorInstrumentation::frameStoppedLoadingImpl(InstrumentingAgents& inst
inspectorPageAgent->frameStoppedLoading(frame);
}
@@ -3128,7 +2877,7 @@ index 55e1d3bbe88f38a730fae0ab6e4c513508b1c8a6..727f8143f1a07c6e7e605a2c0147ee70
}
void InspectorInstrumentation::frameClearedScheduledNavigationImpl(InstrumentingAgents& instrumentingAgents, Frame& frame)
-@@ -863,6 +866,12 @@ void InspectorInstrumentation::accessibilitySettingsDidChangeImpl(InstrumentingA
+@@ -864,6 +867,12 @@ void InspectorInstrumentation::accessibilitySettingsDidChangeImpl(InstrumentingA
inspectorPageAgent->accessibilitySettingsDidChange();
}
@@ -3141,7 +2890,7 @@ index 55e1d3bbe88f38a730fae0ab6e4c513508b1c8a6..727f8143f1a07c6e7e605a2c0147ee70
#if ENABLE(DARK_MODE_CSS) || HAVE(OS_DARK_MODE_SUPPORT)
void InspectorInstrumentation::defaultAppearanceDidChangeImpl(InstrumentingAgents& instrumentingAgents)
{
-@@ -1051,6 +1060,12 @@ void InspectorInstrumentation::consoleStopRecordingCanvasImpl(InstrumentingAgent
+@@ -1052,6 +1061,12 @@ void InspectorInstrumentation::consoleStopRecordingCanvasImpl(InstrumentingAgent
canvasAgent->consoleStopRecordingCanvas(context);
}
@@ -3154,7 +2903,7 @@ index 55e1d3bbe88f38a730fae0ab6e4c513508b1c8a6..727f8143f1a07c6e7e605a2c0147ee70
void InspectorInstrumentation::didOpenDatabaseImpl(InstrumentingAgents& instrumentingAgents, Database& database)
{
if (auto* databaseAgent = instrumentingAgents.enabledDatabaseAgent())
-@@ -1351,6 +1366,36 @@ void InspectorInstrumentation::renderLayerDestroyedImpl(InstrumentingAgents& ins
+@@ -1358,6 +1373,36 @@ void InspectorInstrumentation::renderLayerDestroyedImpl(InstrumentingAgents& ins
layerTreeAgent->renderLayerDestroyed(renderLayer);
}
@@ -3191,7 +2940,7 @@ index 55e1d3bbe88f38a730fae0ab6e4c513508b1c8a6..727f8143f1a07c6e7e605a2c0147ee70
InstrumentingAgents& InspectorInstrumentation::instrumentingAgents(WorkerOrWorkletGlobalScope& globalScope)
{
return globalScope.inspectorController().m_instrumentingAgents;
-@@ -1362,6 +1407,13 @@ InstrumentingAgents& InspectorInstrumentation::instrumentingAgents(Page& page)
+@@ -1369,6 +1414,13 @@ InstrumentingAgents& InspectorInstrumentation::instrumentingAgents(Page& page)
return page.inspectorController().m_instrumentingAgents.get();
}
@@ -3206,14 +2955,14 @@ index 55e1d3bbe88f38a730fae0ab6e4c513508b1c8a6..727f8143f1a07c6e7e605a2c0147ee70
{
if (is(context))
diff --git a/Source/WebCore/inspector/InspectorInstrumentation.h b/Source/WebCore/inspector/InspectorInstrumentation.h
-index e1c01081c9f6ad3683b1510bda02b9c27d8d0db3..fadc5a9f33aa1aeabe6fe88ad7bff7c866956df9 100644
+index f032b90453a44b40c03786f660f105d94ccfab65..51aebd842948754785c25e99980594d45658df48 100644
--- a/Source/WebCore/inspector/InspectorInstrumentation.h
+++ b/Source/WebCore/inspector/InspectorInstrumentation.h
@@ -31,6 +31,7 @@
#pragma once
-+#include "AccessibilityObjectInterface.h"
++#include "AXCoreObject.h"
#include "CSSSelector.h"
#include "CanvasBase.h"
#include "CanvasRenderingContext.h"
@@ -3273,7 +3022,7 @@ index e1c01081c9f6ad3683b1510bda02b9c27d8d0db3..fadc5a9f33aa1aeabe6fe88ad7bff7c8
static void performanceMark(ScriptExecutionContext&, const String&, std::optional, LocalFrame*);
-@@ -325,6 +331,12 @@ public:
+@@ -326,6 +332,12 @@ public:
static void layerTreeDidChange(Page*);
static void renderLayerDestroyed(Page*, const RenderLayer&);
@@ -3286,7 +3035,7 @@ index e1c01081c9f6ad3683b1510bda02b9c27d8d0db3..fadc5a9f33aa1aeabe6fe88ad7bff7c8
static void frontendCreated();
static void frontendDeleted();
static bool hasFrontends() { return InspectorInstrumentationPublic::hasFrontends(); }
-@@ -341,6 +353,8 @@ public:
+@@ -342,6 +354,8 @@ public:
static void registerInstrumentingAgents(InstrumentingAgents&);
static void unregisterInstrumentingAgents(InstrumentingAgents&);
@@ -3295,7 +3044,7 @@ index e1c01081c9f6ad3683b1510bda02b9c27d8d0db3..fadc5a9f33aa1aeabe6fe88ad7bff7c8
private:
static void didClearWindowObjectInWorldImpl(InstrumentingAgents&, LocalFrame&, DOMWrapperWorld&);
static bool isDebuggerPausedImpl(InstrumentingAgents&);
-@@ -420,6 +434,7 @@ private:
+@@ -421,6 +435,7 @@ private:
static void didRecalculateStyleImpl(InstrumentingAgents&);
static void didScheduleStyleRecalculationImpl(InstrumentingAgents&, Document&);
static void applyUserAgentOverrideImpl(InstrumentingAgents&, String&);
@@ -3303,7 +3052,7 @@ index e1c01081c9f6ad3683b1510bda02b9c27d8d0db3..fadc5a9f33aa1aeabe6fe88ad7bff7c8
static void applyEmulatedMediaImpl(InstrumentingAgents&, AtomString&);
static void flexibleBoxRendererBeganLayoutImpl(InstrumentingAgents&, const RenderObject&);
-@@ -434,6 +449,7 @@ private:
+@@ -435,6 +450,7 @@ private:
static void didReceiveDataImpl(InstrumentingAgents&, ResourceLoaderIdentifier, const SharedBuffer*, int encodedDataLength);
static void didFinishLoadingImpl(InstrumentingAgents&, ResourceLoaderIdentifier, DocumentLoader*, const NetworkLoadMetrics&, ResourceLoader*);
static void didFailLoadingImpl(InstrumentingAgents&, ResourceLoaderIdentifier, DocumentLoader*, const ResourceError&);
@@ -3311,7 +3060,7 @@ index e1c01081c9f6ad3683b1510bda02b9c27d8d0db3..fadc5a9f33aa1aeabe6fe88ad7bff7c8
static void willLoadXHRSynchronouslyImpl(InstrumentingAgents&);
static void didLoadXHRSynchronouslyImpl(InstrumentingAgents&);
static void scriptImportedImpl(InstrumentingAgents&, ResourceLoaderIdentifier, const String& sourceString);
-@@ -444,13 +460,13 @@ private:
+@@ -445,13 +461,13 @@ private:
static void frameDetachedFromParentImpl(InstrumentingAgents&, LocalFrame&);
static void didCommitLoadImpl(InstrumentingAgents&, LocalFrame&, DocumentLoader*);
static void frameDocumentUpdatedImpl(InstrumentingAgents&, LocalFrame&);
@@ -3327,7 +3076,7 @@ index e1c01081c9f6ad3683b1510bda02b9c27d8d0db3..fadc5a9f33aa1aeabe6fe88ad7bff7c8
#if ENABLE(DARK_MODE_CSS) || HAVE(OS_DARK_MODE_SUPPORT)
static void defaultAppearanceDidChangeImpl(InstrumentingAgents&);
#endif
-@@ -477,6 +493,7 @@ private:
+@@ -478,6 +494,7 @@ private:
static void stopProfilingImpl(InstrumentingAgents&, JSC::JSGlobalObject*, const String& title);
static void consoleStartRecordingCanvasImpl(InstrumentingAgents&, CanvasRenderingContext&, JSC::JSGlobalObject&, JSC::JSObject* options);
static void consoleStopRecordingCanvasImpl(InstrumentingAgents&, CanvasRenderingContext&);
@@ -3335,7 +3084,7 @@ index e1c01081c9f6ad3683b1510bda02b9c27d8d0db3..fadc5a9f33aa1aeabe6fe88ad7bff7c8
static void performanceMarkImpl(InstrumentingAgents&, const String& label, std::optional, LocalFrame*);
-@@ -534,6 +551,12 @@ private:
+@@ -536,6 +553,12 @@ private:
static void layerTreeDidChangeImpl(InstrumentingAgents&);
static void renderLayerDestroyedImpl(InstrumentingAgents&, const RenderLayer&);
@@ -3348,7 +3097,7 @@ index e1c01081c9f6ad3683b1510bda02b9c27d8d0db3..fadc5a9f33aa1aeabe6fe88ad7bff7c8
static InstrumentingAgents& instrumentingAgents(Page&);
static InstrumentingAgents& instrumentingAgents(WorkerOrWorkletGlobalScope&);
-@@ -1066,6 +1089,13 @@ inline void InspectorInstrumentation::applyUserAgentOverride(LocalFrame& frame,
+@@ -1068,6 +1091,13 @@ inline void InspectorInstrumentation::applyUserAgentOverride(LocalFrame& frame,
applyUserAgentOverrideImpl(*agents, userAgent);
}
@@ -3362,7 +3111,7 @@ index e1c01081c9f6ad3683b1510bda02b9c27d8d0db3..fadc5a9f33aa1aeabe6fe88ad7bff7c8
inline void InspectorInstrumentation::applyEmulatedMedia(LocalFrame& frame, AtomString& media)
{
FAST_RETURN_IF_NO_FRONTENDS(void());
-@@ -1168,6 +1198,13 @@ inline void InspectorInstrumentation::didFailLoading(WorkerOrWorkletGlobalScope&
+@@ -1170,6 +1200,13 @@ inline void InspectorInstrumentation::didFailLoading(WorkerOrWorkletGlobalScope&
didFailLoadingImpl(instrumentingAgents(globalScope), identifier, nullptr, error);
}
@@ -3376,7 +3125,7 @@ index e1c01081c9f6ad3683b1510bda02b9c27d8d0db3..fadc5a9f33aa1aeabe6fe88ad7bff7c8
inline void InspectorInstrumentation::continueAfterXFrameOptionsDenied(LocalFrame& frame, ResourceLoaderIdentifier identifier, DocumentLoader& loader, const ResourceResponse& response)
{
// Treat the same as didReceiveResponse.
-@@ -1258,13 +1295,6 @@ inline void InspectorInstrumentation::frameDocumentUpdated(LocalFrame& frame)
+@@ -1260,13 +1297,6 @@ inline void InspectorInstrumentation::frameDocumentUpdated(LocalFrame& frame)
frameDocumentUpdatedImpl(*agents, frame);
}
@@ -3390,7 +3139,7 @@ index e1c01081c9f6ad3683b1510bda02b9c27d8d0db3..fadc5a9f33aa1aeabe6fe88ad7bff7c8
inline void InspectorInstrumentation::frameStartedLoading(LocalFrame& frame)
{
FAST_RETURN_IF_NO_FRONTENDS(void());
-@@ -1286,11 +1316,11 @@ inline void InspectorInstrumentation::frameStoppedLoading(LocalFrame& frame)
+@@ -1288,11 +1318,11 @@ inline void InspectorInstrumentation::frameStoppedLoading(LocalFrame& frame)
frameStoppedLoadingImpl(*agents, frame);
}
@@ -3404,7 +3153,7 @@ index e1c01081c9f6ad3683b1510bda02b9c27d8d0db3..fadc5a9f33aa1aeabe6fe88ad7bff7c8
}
inline void InspectorInstrumentation::frameClearedScheduledNavigation(Frame& frame)
-@@ -1306,6 +1336,13 @@ inline void InspectorInstrumentation::accessibilitySettingsDidChange(Page& page)
+@@ -1308,6 +1338,13 @@ inline void InspectorInstrumentation::accessibilitySettingsDidChange(Page& page)
accessibilitySettingsDidChangeImpl(instrumentingAgents(page));
}
@@ -3418,7 +3167,7 @@ index e1c01081c9f6ad3683b1510bda02b9c27d8d0db3..fadc5a9f33aa1aeabe6fe88ad7bff7c8
#if ENABLE(DARK_MODE_CSS) || HAVE(OS_DARK_MODE_SUPPORT)
inline void InspectorInstrumentation::defaultAppearanceDidChange(Page& page)
{
-@@ -1687,6 +1724,11 @@ inline void InspectorInstrumentation::performanceMark(ScriptExecutionContext& co
+@@ -1696,6 +1733,11 @@ inline void InspectorInstrumentation::performanceMark(ScriptExecutionContext& co
performanceMarkImpl(*agents, label, WTFMove(startTime), frame);
}
@@ -3430,7 +3179,7 @@ index e1c01081c9f6ad3683b1510bda02b9c27d8d0db3..fadc5a9f33aa1aeabe6fe88ad7bff7c8
inline void InspectorInstrumentation::didRequestAnimationFrame(Document& document, int callbackId)
{
FAST_RETURN_IF_NO_FRONTENDS(void());
-@@ -1743,6 +1785,42 @@ inline void InspectorInstrumentation::renderLayerDestroyed(Page* page, const Ren
+@@ -1752,6 +1794,42 @@ inline void InspectorInstrumentation::renderLayerDestroyed(Page* page, const Ren
renderLayerDestroyedImpl(*agents, renderLayer);
}
@@ -3474,7 +3223,7 @@ index e1c01081c9f6ad3683b1510bda02b9c27d8d0db3..fadc5a9f33aa1aeabe6fe88ad7bff7c8
{
return context ? instrumentingAgents(*context) : nullptr;
diff --git a/Source/WebCore/inspector/agents/InspectorDOMAgent.cpp b/Source/WebCore/inspector/agents/InspectorDOMAgent.cpp
-index 30dee14fcf9001418a453f54a4b0bf85976a48ed..d2567ba1fe2baa21ef47b5561781dbcdaf89032d 100644
+index b4056c49e3b3362c5117213fc660e49cb2517431..29eef538962e724361bd1467f5ff8ad3fc3113b3 100644
--- a/Source/WebCore/inspector/agents/InspectorDOMAgent.cpp
+++ b/Source/WebCore/inspector/agents/InspectorDOMAgent.cpp
@@ -61,10 +61,14 @@
@@ -3908,7 +3657,7 @@ index 1a37f64d732d700f38a5d5b51c2ca2645ad30eeb..ab544156dc0d711074b86f51e3c7e63a
void discardBindings();
diff --git a/Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp b/Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp
-index 8b5f6a837b71d877d5c6e0c0e128169859716c63..ef1d8212902787f8933ae8a8a34578521431e591 100644
+index 30e72aa5670d45e97332f647ebddc1677ffc6b9e..18986563d46d1261c2684ffac320f70276cc9d6b 100644
--- a/Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp
+++ b/Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp
@@ -59,6 +59,7 @@
@@ -3997,7 +3746,7 @@ index 8b5f6a837b71d877d5c6e0c0e128169859716c63..ef1d8212902787f8933ae8a8a3457852
{
return startsWithLettersIgnoringASCIICase(mimeType, "text/"_s)
diff --git a/Source/WebCore/inspector/agents/InspectorNetworkAgent.h b/Source/WebCore/inspector/agents/InspectorNetworkAgent.h
-index c6ebcc9d7e399a35f71350c9374df0f2107c518b..3bfa03ae7f27d9128fe207c1de1bfea9dbf5e44f 100644
+index dc7e574ee6e9256a1f75ea838d20ca7f5e9190de..5dd4464256e0f5d652fa51fd611286ddc1da6f5c 100644
--- a/Source/WebCore/inspector/agents/InspectorNetworkAgent.h
+++ b/Source/WebCore/inspector/agents/InspectorNetworkAgent.h
@@ -34,6 +34,8 @@
@@ -4018,10 +3767,10 @@ index c6ebcc9d7e399a35f71350c9374df0f2107c518b..3bfa03ae7f27d9128fe207c1de1bfea9
// InspectorInstrumentation
void willRecalculateStyle();
diff --git a/Source/WebCore/inspector/agents/InspectorPageAgent.cpp b/Source/WebCore/inspector/agents/InspectorPageAgent.cpp
-index 0a015134788986e4b829b887377c976ee2673b6b..e2924cf0d8863281f2a5102e7998e2814361393c 100644
+index 1cb48a48ae6ab976e8938d7e03ddc7e3cf58be4c..dbf78f734691588907f047011c164993cda588d5 100644
--- a/Source/WebCore/inspector/agents/InspectorPageAgent.cpp
+++ b/Source/WebCore/inspector/agents/InspectorPageAgent.cpp
-@@ -32,19 +32,27 @@
+@@ -32,19 +32,26 @@
#include "config.h"
#include "InspectorPageAgent.h"
@@ -4029,7 +3778,6 @@ index 0a015134788986e4b829b887377c976ee2673b6b..e2924cf0d8863281f2a5102e7998e281
+#include "BackForwardController.h"
#include "CachedResource.h"
#include "CachedResourceLoader.h"
-+#include "CompositionHighlight.h"
#include "Cookie.h"
#include "CookieJar.h"
+#include "CustomHeaderFields.h"
@@ -4049,7 +3797,7 @@ index 0a015134788986e4b829b887377c976ee2673b6b..e2924cf0d8863281f2a5102e7998e281
#include "HTMLNames.h"
#include "ImageBuffer.h"
#include "InspectorClient.h"
-@@ -55,10 +63,13 @@
+@@ -55,10 +62,13 @@
#include "LocalFrame.h"
#include "LocalFrameView.h"
#include "MIMETypeRegistry.h"
@@ -4064,7 +3812,7 @@ index 0a015134788986e4b829b887377c976ee2673b6b..e2924cf0d8863281f2a5102e7998e281
#include "ScriptController.h"
#include "ScriptSourceCode.h"
#include "SecurityOrigin.h"
-@@ -66,11 +77,18 @@
+@@ -66,11 +76,18 @@
#include "StyleScope.h"
#include "Theme.h"
#include
@@ -4083,7 +3831,7 @@ index 0a015134788986e4b829b887377c976ee2673b6b..e2924cf0d8863281f2a5102e7998e281
#include
#include
#include
-@@ -83,11 +101,15 @@
+@@ -83,11 +100,15 @@
#include "LegacyWebArchive.h"
#endif
@@ -4100,7 +3848,7 @@ index 0a015134788986e4b829b887377c976ee2673b6b..e2924cf0d8863281f2a5102e7998e281
static bool decodeBuffer(const uint8_t* buffer, unsigned size, const String& textEncodingName, String* result)
{
if (buffer) {
-@@ -334,6 +356,7 @@ InspectorPageAgent::InspectorPageAgent(PageAgentContext& context, InspectorClien
+@@ -334,6 +355,7 @@ InspectorPageAgent::InspectorPageAgent(PageAgentContext& context, InspectorClien
, m_frontendDispatcher(makeUnique(context.frontendRouter))
, m_backendDispatcher(Inspector::PageBackendDispatcher::create(context.backendDispatcher, this))
, m_inspectedPage(context.inspectedPage)
@@ -4108,7 +3856,7 @@ index 0a015134788986e4b829b887377c976ee2673b6b..e2924cf0d8863281f2a5102e7998e281
, m_client(client)
, m_overlay(overlay)
{
-@@ -363,12 +386,20 @@ Protocol::ErrorStringOr InspectorPageAgent::enable()
+@@ -363,12 +385,20 @@ Protocol::ErrorStringOr InspectorPageAgent::enable()
defaultUserPreferencesDidChange();
@@ -4129,7 +3877,7 @@ index 0a015134788986e4b829b887377c976ee2673b6b..e2924cf0d8863281f2a5102e7998e281
setShowPaintRects(false);
#if !PLATFORM(IOS_FAMILY)
-@@ -420,6 +451,22 @@ Protocol::ErrorStringOr InspectorPageAgent::reload(std::optional&& i
+@@ -420,6 +450,22 @@ Protocol::ErrorStringOr InspectorPageAgent::reload(std::optional&& i
return { };
}
@@ -4152,7 +3900,7 @@ index 0a015134788986e4b829b887377c976ee2673b6b..e2924cf0d8863281f2a5102e7998e281
Protocol::ErrorStringOr InspectorPageAgent::navigate(const String& url)
{
auto* localMainFrame = dynamicDowncast(m_inspectedPage.mainFrame());
-@@ -443,6 +490,13 @@ Protocol::ErrorStringOr InspectorPageAgent::overrideUserAgent(const String
+@@ -443,6 +489,13 @@ Protocol::ErrorStringOr InspectorPageAgent::overrideUserAgent(const String
return { };
}
@@ -4166,7 +3914,7 @@ index 0a015134788986e4b829b887377c976ee2673b6b..e2924cf0d8863281f2a5102e7998e281
Protocol::ErrorStringOr InspectorPageAgent::overrideSetting(Protocol::Page::Setting setting, std::optional&& value)
{
auto& inspectedPageSettings = m_inspectedPage.settings();
-@@ -456,6 +510,12 @@ Protocol::ErrorStringOr InspectorPageAgent::overrideSetting(Protocol::Page
+@@ -456,6 +509,12 @@ Protocol::ErrorStringOr InspectorPageAgent::overrideSetting(Protocol::Page
inspectedPageSettings.setAuthorAndUserStylesEnabledInspectorOverride(value);
return { };
@@ -4179,7 +3927,7 @@ index 0a015134788986e4b829b887377c976ee2673b6b..e2924cf0d8863281f2a5102e7998e281
case Protocol::Page::Setting::ICECandidateFilteringEnabled:
inspectedPageSettings.setICECandidateFilteringEnabledInspectorOverride(value);
return { };
-@@ -481,6 +541,38 @@ Protocol::ErrorStringOr InspectorPageAgent::overrideSetting(Protocol::Page
+@@ -481,6 +540,38 @@ Protocol::ErrorStringOr InspectorPageAgent::overrideSetting(Protocol::Page
inspectedPageSettings.setNeedsSiteSpecificQuirksInspectorOverride(value);
return { };
@@ -4218,7 +3966,7 @@ index 0a015134788986e4b829b887377c976ee2673b6b..e2924cf0d8863281f2a5102e7998e281
case Protocol::Page::Setting::ScriptEnabled:
inspectedPageSettings.setScriptEnabledInspectorOverride(value);
return { };
-@@ -493,6 +585,12 @@ Protocol::ErrorStringOr InspectorPageAgent::overrideSetting(Protocol::Page
+@@ -493,6 +584,12 @@ Protocol::ErrorStringOr InspectorPageAgent::overrideSetting(Protocol::Page
inspectedPageSettings.setShowRepaintCounterInspectorOverride(value);
return { };
@@ -4231,23 +3979,7 @@ index 0a015134788986e4b829b887377c976ee2673b6b..e2924cf0d8863281f2a5102e7998e281
case Protocol::Page::Setting::WebSecurityEnabled:
inspectedPageSettings.setWebSecurityEnabledInspectorOverride(value);
return { };
-@@ -785,9 +883,13 @@ Protocol::ErrorStringOr> InspectorP
- return { { content, base64Encoded } };
- }
-
--Protocol::ErrorStringOr InspectorPageAgent::setBootstrapScript(const String& source)
-+Protocol::ErrorStringOr InspectorPageAgent::setBootstrapScript(const String& source, const String& worldName)
- {
-- m_bootstrapScript = source;
-+ String key = worldName.isNull() ? emptyString() : worldName;
-+ if (source.isEmpty())
-+ m_worldNameToBootstrapScript.remove(key);
-+ else
-+ m_worldNameToBootstrapScript.set(key, source);
-
- return { };
- }
-@@ -893,15 +995,16 @@ Protocol::ErrorStringOr InspectorPageAgent::setShowPaintRects(bool show)
+@@ -893,15 +990,16 @@ Protocol::ErrorStringOr InspectorPageAgent::setShowPaintRects(bool show)
return { };
}
@@ -4269,7 +4001,7 @@ index 0a015134788986e4b829b887377c976ee2673b6b..e2924cf0d8863281f2a5102e7998e281
}
void InspectorPageAgent::frameNavigated(LocalFrame& frame)
-@@ -909,13 +1012,25 @@ void InspectorPageAgent::frameNavigated(LocalFrame& frame)
+@@ -909,13 +1007,25 @@ void InspectorPageAgent::frameNavigated(LocalFrame& frame)
m_frontendDispatcher->frameNavigated(buildObjectForFrame(&frame));
}
@@ -4298,7 +4030,7 @@ index 0a015134788986e4b829b887377c976ee2673b6b..e2924cf0d8863281f2a5102e7998e281
}
Frame* InspectorPageAgent::frameForId(const Protocol::Network::FrameId& frameId)
-@@ -927,20 +1042,17 @@ String InspectorPageAgent::frameId(Frame* frame)
+@@ -927,20 +1037,17 @@ String InspectorPageAgent::frameId(Frame* frame)
{
if (!frame)
return emptyString();
@@ -4324,7 +4056,7 @@ index 0a015134788986e4b829b887377c976ee2673b6b..e2924cf0d8863281f2a5102e7998e281
}
LocalFrame* InspectorPageAgent::assertFrame(Protocol::ErrorString& errorString, const Protocol::Network::FrameId& frameId)
-@@ -951,11 +1063,6 @@ LocalFrame* InspectorPageAgent::assertFrame(Protocol::ErrorString& errorString,
+@@ -951,11 +1058,6 @@ LocalFrame* InspectorPageAgent::assertFrame(Protocol::ErrorString& errorString,
return frame;
}
@@ -4336,7 +4068,7 @@ index 0a015134788986e4b829b887377c976ee2673b6b..e2924cf0d8863281f2a5102e7998e281
void InspectorPageAgent::frameStartedLoading(LocalFrame& frame)
{
m_frontendDispatcher->frameStartedLoading(frameId(&frame));
-@@ -966,9 +1073,9 @@ void InspectorPageAgent::frameStoppedLoading(LocalFrame& frame)
+@@ -966,9 +1068,9 @@ void InspectorPageAgent::frameStoppedLoading(LocalFrame& frame)
m_frontendDispatcher->frameStoppedLoading(frameId(&frame));
}
@@ -4348,7 +4080,7 @@ index 0a015134788986e4b829b887377c976ee2673b6b..e2924cf0d8863281f2a5102e7998e281
}
void InspectorPageAgent::frameClearedScheduledNavigation(Frame& frame)
-@@ -1023,6 +1130,12 @@ void InspectorPageAgent::defaultUserPreferencesDidChange()
+@@ -1015,6 +1117,12 @@ void InspectorPageAgent::defaultUserPreferencesDidChange()
m_frontendDispatcher->defaultUserPreferencesDidChange(WTFMove(defaultUserPreferences));
}
@@ -4361,33 +4093,17 @@ index 0a015134788986e4b829b887377c976ee2673b6b..e2924cf0d8863281f2a5102e7998e281
#if ENABLE(DARK_MODE_CSS) || HAVE(OS_DARK_MODE_SUPPORT)
void InspectorPageAgent::defaultAppearanceDidChange()
{
-@@ -1032,13 +1145,22 @@ void InspectorPageAgent::defaultAppearanceDidChange()
-
- void InspectorPageAgent::didClearWindowObjectInWorld(LocalFrame& frame, DOMWrapperWorld& world)
- {
-- if (&world != &mainThreadNormalWorld())
-+ if (m_worldNameToBootstrapScript.isEmpty())
+@@ -1028,6 +1136,9 @@ void InspectorPageAgent::didClearWindowObjectInWorld(LocalFrame& frame, DOMWrapp
return;
-- if (m_bootstrapScript.isEmpty())
-+ if (world.name().isEmpty() && &world != &mainThreadNormalWorld())
+ if (m_bootstrapScript.isEmpty())
+ return;
+
-+ String worldName = world.name();
-+ // Null string cannot be used as a key.
-+ if (worldName.isNull())
-+ worldName = emptyString();
-+
-+ if (!m_worldNameToBootstrapScript.contains(worldName))
++ if (m_ignoreDidClearWindowObject)
return;
-- frame.script().evaluateIgnoringException(ScriptSourceCode(m_bootstrapScript, URL { "web-inspector://bootstrap.js"_str }));
-+ String bootstrapScript = m_worldNameToBootstrapScript.get(worldName);
-+ frame.script().evaluateInWorldIgnoringException(ScriptSourceCode(bootstrapScript, URL { "web-inspector://bootstrap.js"_str }), world);
- }
-
- void InspectorPageAgent::didPaint(RenderObject& renderer, const LayoutRect& rect)
-@@ -1086,6 +1208,51 @@ void InspectorPageAgent::didRecalculateStyle()
+ frame.script().evaluateIgnoringException(ScriptSourceCode(m_bootstrapScript, JSC::SourceTaintedOrigin::Untainted, URL { "web-inspector://bootstrap.js"_str }));
+@@ -1078,6 +1189,51 @@ void InspectorPageAgent::didRecalculateStyle()
m_overlay->update();
}
@@ -4439,7 +4155,7 @@ index 0a015134788986e4b829b887377c976ee2673b6b..e2924cf0d8863281f2a5102e7998e281
Ref InspectorPageAgent::buildObjectForFrame(LocalFrame* frame)
{
ASSERT_ARG(frame, frame);
-@@ -1183,6 +1350,12 @@ void InspectorPageAgent::applyUserAgentOverride(String& userAgent)
+@@ -1175,6 +1331,12 @@ void InspectorPageAgent::applyUserAgentOverride(String& userAgent)
userAgent = m_userAgentOverride;
}
@@ -4452,7 +4168,7 @@ index 0a015134788986e4b829b887377c976ee2673b6b..e2924cf0d8863281f2a5102e7998e281
void InspectorPageAgent::applyEmulatedMedia(AtomString& media)
{
if (!m_emulatedMedia.isEmpty())
-@@ -1210,11 +1383,13 @@ Protocol::ErrorStringOr InspectorPageAgent::snapshotNode(Protocol::DOM::
+@@ -1202,11 +1364,13 @@ Protocol::ErrorStringOr InspectorPageAgent::snapshotNode(Protocol::DOM::
return snapshot->toDataURL("image/png"_s, std::nullopt, PreserveResolution::Yes);
}
@@ -4467,7 +4183,7 @@ index 0a015134788986e4b829b887377c976ee2673b6b..e2924cf0d8863281f2a5102e7998e281
IntRect rectangle(x, y, width, height);
auto* localMainFrame = dynamicDowncast(m_inspectedPage.mainFrame());
-@@ -1228,6 +1403,43 @@ Protocol::ErrorStringOr InspectorPageAgent::snapshotRect(int x, int y, i
+@@ -1220,6 +1384,43 @@ Protocol::ErrorStringOr InspectorPageAgent::snapshotRect(int x, int y, i
return snapshot->toDataURL("image/png"_s, std::nullopt, PreserveResolution::Yes);
}
@@ -4511,7 +4227,7 @@ index 0a015134788986e4b829b887377c976ee2673b6b..e2924cf0d8863281f2a5102e7998e281
#if ENABLE(WEB_ARCHIVE) && USE(CF)
Protocol::ErrorStringOr InspectorPageAgent::archive()
{
-@@ -1244,7 +1456,6 @@ Protocol::ErrorStringOr InspectorPageAgent::archive()
+@@ -1236,7 +1437,6 @@ Protocol::ErrorStringOr InspectorPageAgent::archive()
}
#endif
@@ -4519,14 +4235,14 @@ index 0a015134788986e4b829b887377c976ee2673b6b..e2924cf0d8863281f2a5102e7998e281
Protocol::ErrorStringOr InspectorPageAgent::setScreenSizeOverride(std::optional&& width, std::optional&& height)
{
if (width.has_value() != height.has_value())
-@@ -1262,6 +1473,629 @@ Protocol::ErrorStringOr InspectorPageAgent::setScreenSizeOverride(std::opt
+@@ -1254,6 +1454,511 @@ Protocol::ErrorStringOr InspectorPageAgent::setScreenSizeOverride(std::opt
localMainFrame->setOverrideScreenSize(FloatSize(width.value_or(0), height.value_or(0)));
return { };
}
+
+Protocol::ErrorStringOr InspectorPageAgent::insertText(const String& text)
+{
-+ UserGestureIndicator indicator { ProcessingUserGesture };
++ UserGestureIndicator indicator { IsProcessingUserGesture::Yes };
+ LocalFrame& frame = m_inspectedPage.focusController().focusedOrMainFrame();
+
+ if (frame.editor().hasComposition()) {
@@ -4538,24 +4254,6 @@ index 0a015134788986e4b829b887377c976ee2673b6b..e2924cf0d8863281f2a5102e7998e281
+ return { };
+}
+
-+Protocol::ErrorStringOr InspectorPageAgent::setComposition(const String& text, int selectionStart, int selectionLength, std::optional&& replacementStart, std::optional&& replacementLength)
-+{
-+ LocalFrame& frame = m_inspectedPage.focusController().focusedOrMainFrame();
-+
-+ UserGestureIndicator indicator { ProcessingUserGesture };
-+
-+ if (!frame.selection().selection().isContentEditable())
-+ return { };
-+ if (replacementStart) {
-+ WebCore::CharacterRange range { static_cast]