Use `asynch` instead of `r#async`
<!-- Please describe your changes on the following line: -->
This is a vestige of the transition from 2015 to 2018 edition Rust.
`async` was added as a keyword in 2018 edition Rust, so `cargo fix`
changed the variable name here to `r#async`.
---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [ ] `./mach build -d` does not report any errors
- [ ] `./mach test-tidy` does not report any errors
- [ ] These changes fix #___ (GitHub issue number if applicable)
<!-- Either: -->
- [ ] There are tests for these changes OR
- [x] These changes do not require tests because this is just an internal name change
<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->
<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
Gstreamer plugin support for streaming from webxr
<!-- Please describe your changes on the following line: -->
Allows us to stream webxr video content.
---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes do not require tests because we don't reftest the gstreamer plugin
<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->
<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
Implement WebGPU ErrorScopes
<!-- Please describe your changes on the following line: -->
This PR covers the following-
1. update wgpu-core (Rustify `RenderPipelineDescriptor`)
2. Add initial implementation of `pushErrorScope` and `popErrorScope`.
3. Use existing `BGL` if an equivalent already exists.
A brief explanation of the ErrorScope Implementation-
1. We store `HashMap<u64, ErrorScopeInfo>` in `GPUDevice`. `ErrorScopeInfo` is a new struct used to store all necessary info for an ErrorScope.
2. We simultaneously store `Vec<u64>` to keep track of the ErrorScope hierarchy. `next_scope_id` is used to get the `scope_id` for a new Scope.
3. We send the `scope_id` of top-level scope to the server in the message for an operation. The server performs the operation and sends back the scope_id with the result message (only if a scope_id was sent from the client. Otherwise no message is sent.).
4. We store a `HashMap<WebGPUDevice, Dom<GPUDevice>>` in `GlobalScope` to access them from `ScriptThread`.
5. While creating a `GPUDevice` we send the `PipelineId` of the pipeline it was created in so that when the server send the response, we can access the device from the GlobalScope of that Pipeline.
6. We generate the relevant `GPUError` in `GlobalScope`(if required) can call the necessary fn in `GPUDevice`.
This implementation is pretty rough and not complete at all. Broadly the following cases aren't handled at the moment-
1. ErrorFilter is not checked when an error is captured.
2. We don't propagate an error to enclosing scope if a scope did not capture it.
3. `UncapturedErrorEvents` is not implemented.
As for Equivalent BGLs we now store `Vec<(Vec<wgt::BindGroupLayoutEntry>, Dom<GPUBindGroupLayout>)>` in `GPUDevice` and compare `Vec<wgt::BindGroupLayoutEntry>` for new BGL with the existing ones and return one if it is found. Otherwise a new one is created and an entry added to the `Vec`.
r?@kvark
---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
<!-- Either: -->
- [X] There are tests for these changes
<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->
<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
Make gstreamer packaging explicit
This change aligns Windows and macOS in terms of loading an explicit set of included plugins when initializing gstreamer. It also creates a single source of truth - the set of expected plugins is generated in a build script by the same python code that is used for packaging, so it should be impossible for platforms relying on this system to get out of sync.
Fixes#27293
Use `Rc` instead of cloning the `DOMString`
<!-- Please describe your changes on the following line: -->
I changed the `text` field of `ScriptOrigin` from a `DOMString` to an `Rc<DOMString>`. Then I updated all the related code to work with an `Rc`.
---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix#27254 (GitHub issue number if applicable)
<!-- Either: -->
- [ ] There are tests for these changes OR
- [x] These changes do not require tests because this doesn't introduce new code and should only need to be checked by the compiler
<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->
<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
This is a vestige of the transition from 2015 to 2018 edition Rust.
`async` was added as a keyword in 2018 edition Rust, so `cargo fix`
changed the variable name here to `r#async`.
build(deps): bump log from 0.4.8 to 0.4.11
Bumps [log](https://github.com/rust-lang/log) from 0.4.8 to 0.4.11.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/rust-lang/log/blob/master/CHANGELOG.md">log's changelog</a>.</em></p>
<blockquote>
<h2>[0.4.11] - 2020-07-09</h2>
<h3>New</h3>
<ul>
<li>Support coercing structured values into concrete types.</li>
<li>Reference the <code>win_dbg_logger</code> in the readme.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Updates a few deprecated items used internally.</li>
<li>Fixed issues in docs and expands sections.</li>
<li>Show the correct build badge in the readme.</li>
<li>Fix up a possible inference breakage with structured value errors.</li>
<li>Respect formatting flags in structured value formatting.</li>
</ul>
<h2>[0.4.10] - 2019-12-16 (yanked)</h2>
<h3>Fixed</h3>
<ul>
<li>Fixed the <code>log!</code> macros so they work in expression context (this regressed in <code>0.4.9</code>, which has been yanked).</li>
</ul>
<h2>[0.4.9] - 2019-12-12 (yanked)</h2>
<h3>Minimum Supported Rust Version</h3>
<p>This release bumps the minimum compiler version to <code>1.31.0</code>. This was mainly needed for <code>cfg-if</code>,
but between <code>1.16.0</code> and <code>1.31.0</code> there are a lot of language and library improvements we now
take advantage of.</p>
<h3>New</h3>
<ul>
<li>Unstable support for capturing key-value pairs in a record using the <code>log!</code> macros</li>
</ul>
<h3>Improved</h3>
<ul>
<li>Better documentation for max level filters.</li>
<li>Internal updates to line up with bumped MSRV</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="aa4c0375cd"><code>aa4c037</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/rust-lang/log/issues/404">#404</a> from KodrAus/cargo/0.4.11</li>
<li><a href="21715ba7ee"><code>21715ba</code></a> just don't do self updates in ci</li>
<li><a href="ee4bc80680"><code>ee4bc80</code></a> prepare for 0.4.11 release</li>
<li><a href="813b6ce479"><code>813b6ce</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/rust-lang/log/issues/401">#401</a> from brettcannon/patch-1</li>
<li><a href="5821b8a338"><code>5821b8a</code></a> Fix a grammatical mistake</li>
<li><a href="9ae6778bd2"><code>9ae6778</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/rust-lang/log/issues/400">#400</a> from KodrAus/fix/value-fmt</li>
<li><a href="c89a4a10b6"><code>c89a4a1</code></a> bump sval to 0.5.2 for fmt fixes</li>
<li><a href="43d69c196e"><code>43d69c1</code></a> remove unneeded io::Error From impl</li>
<li><a href="ee8c6cd426"><code>ee8c6cd</code></a> respect fmt trait and flags in Value</li>
<li><a href="c5c8e48f35"><code>c5c8e48</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/rust-lang/log/issues/398">#398</a> from dtolnay/ra_hir_def</li>
<li>Additional commits viewable in <a href="https://github.com/rust-lang/log/compare/0.4.8...0.4.11">compare view</a></li>
</ul>
</details>
<br />
[](https://dependabot.com/compatibility-score/?dependency-name=log&package-manager=cargo&previous-version=0.4.8&new-version=0.4.11)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
- `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme
Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):
- Update frequency (including time of day and day of week)
- Pull request limits (per update run and/or open at any time)
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)
</details>
build(deps): bump servo-media from `7b0794d` to `cdf82da`
Bumps [servo-media](https://github.com/servo/media) from `7b0794d` to `cdf82da`.
<details>
<summary>Commits</summary>
<ul>
<li><a href="cdf82da4cb"><code>cdf82da</code></a> Auto merge of <a href="https://github-redirect.dependabot.com/servo/media/issues/373">#373</a> - ferjm:media.stream.encoded, r=Manishearth</li>
<li><a href="f96c33b737"><code>f96c33b</code></a> Attach encoding adapters to ServoMediaStreamSrc</li>
<li>See full diff in <a href="7b0794d552...cdf82da4cb">compare view</a></li>
</ul>
</details>
<br />
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
- `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme
Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):
- Update frequency (including time of day and day of week)
- Pull request limits (per update run and/or open at any time)
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)
</details>
Add stubs for HTMLCanvasElement.captureStream and WebRTC transceiver APIs
These stubs are hidden by default and only exist to allow getting past the relevant code that invokes them on hubs.mozilla.org.
Specifically, I changed the `text` field of `ScriptOrigin` from a
`DOMString` to an `Rc<DOMString>`. Then I updated all the related code
to work with an `Rc`.
This is just a first pass to get the code to compile. There are probably
more things I can do that will improve the code and further reduce
cloning.
Implemented HTMLFormElement.relList
<!-- Please describe your changes on the following line: -->
Updated the tests to reflect addition of rel and relList for HTMLFormElement, as well as porting those code snippets from HTMLAnchorElement.
---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [X] These changes fix#27252 (GitHub issue number if applicable)
<!-- Either: -->
- [X] There are tests for these changes OR
- [ ] These changes do not require tests because ___
<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->
<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
Updated tests to reflect rel and relList in HTMLFormElement
Added AttrValue as style
Added attr
Updated outstanding test cases
Fixed formatting. Hopefully this time works
Implemented HTMLFormElement.relList
build(deps): bump adler from 0.2.2 to 0.2.3
Bumps [adler](https://github.com/jonas-schievink/adler) from 0.2.2 to 0.2.3.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/jonas-schievink/adler/releases">adler's releases</a>.</em></p>
<blockquote>
<h2>v0.2.3</h2>
<ul>
<li>Process 4 Bytes at a time, improving performance by up to 50% (<a href="https://github-redirect.dependabot.com/jonas-schievink/adler/issues/2">#2</a>).</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/jonas-schievink/adler/blob/master/CHANGELOG.md">adler's changelog</a>.</em></p>
<blockquote>
<h2><a href="https://github.com/jonas-schievink/adler/releases/tag/v0.2.3">0.2.3 - 2020-07-11</a></h2>
<ul>
<li>Process 4 Bytes at a time, improving performance by up to 50% (<a href="https://github-redirect.dependabot.com/jonas-schievink/adler/issues/2">#2</a>).</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="052fb30a86"><code>052fb30</code></a> Release 0.2.3</li>
<li><a href="b32d526574"><code>b32d526</code></a> Update changelog</li>
<li><a href="a875252c94"><code>a875252</code></a> Move algorithm into its own module</li>
<li><a href="1aad4dbcd4"><code>1aad4db</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/jonas-schievink/adler/issues/2">#2</a> from NathanaelLane/master</li>
<li><a href="d7f0da2743"><code>d7f0da2</code></a> rustfmt import alphabetization</li>
<li><a href="6caed1f1bd"><code>6caed1f</code></a> Remove all unsafe code and related infrastructure, thanks to insight from <a href="https://github.com/ja">@ja</a>...</li>
<li><a href="0cb41e6b8e"><code>0cb41e6</code></a> various improvements:</li>
<li><a href="4bc0273554"><code>4bc0273</code></a> Improve performance for short input slices.</li>
<li><a href="082e3cd7dd"><code>082e3cd</code></a> add alignment test and coerce intended alignment with repr ([u8; N] is by def...</li>
<li><a href="b0b72f247b"><code>b0b72f2</code></a> fix upstream rustfmt issues</li>
<li>Additional commits viewable in <a href="https://github.com/jonas-schievink/adler/compare/v0.2.2...v0.2.3">compare view</a></li>
</ul>
</details>
<br />
[](https://dependabot.com/compatibility-score/?dependency-name=adler&package-manager=cargo&previous-version=0.2.2&new-version=0.2.3)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
- `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme
Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):
- Update frequency (including time of day and day of week)
- Pull request limits (per update run and/or open at any time)
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)
</details>
devtools: TabDescription actor
We could do better by creating the browsing context actor lazily, but that's good enough to re-enable devtools with a recent version of Firefox. fix#27113.