Add UI for bypassing SSL handshake failures
There are several parts to these changes:
1. resurrecting the network error classification code to distinguish between SSL failures and other network errors
1. adding an SSL verification callback to support verifying certs against a list that can change at runtime, rather than just at program initialization
1. exposing a privileged chrome://allowcert URI which accepts the PEM cert contents along with a secret token
1. extracting the PEM cert contents out of the network layer when a handshake failure occurs, and getting them into the HTML that is parsed when an SSL failure occurs
1. adding a button in the handshake failure page that performs an XHR to chrome://allowcert with knowledge of the secret token and the PEM cert contents, before reloading the original URL that failed
The presence of the secret token means that while the chrome://allowcert URL is currently visible to web content, they cannot make use of it to inject arbitrary certs into the verification process.
---
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix#26683
- [x] These changes do not require tests because the UI requires user activation and can't clearly be automated
build(deps): bump brotli-decompressor from 2.3.0 to 2.3.1
Bumps [brotli-decompressor](https://github.com/dropbox/rust-brotli-decompressor) from 2.3.0 to 2.3.1.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a href="https://github.com/dropbox/rust-brotli-decompressor/commits">compare view</a></li>
</ul>
</details>
<br />
[](https://dependabot.com/compatibility-score/?dependency-name=brotli-decompressor&package-manager=cargo&previous-version=2.3.0&new-version=2.3.1)
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>
Update webrender
These changes reflect changes in webrender's API that make RenderApiSender and RenderApi objects more challenging to share. This PR moves us to a model where:
* the compositor owns the main RenderApi object
* other threads that need to create transactions or manipulate fonts proxy those operations to the compositor (script/layout use IPC, while other threads use non-IPC channels)
* the webgl thread owns its own independent RenderApi
Bump new_debug_unreachable from 1.0.1 to 1.0.4
Bumps [new_debug_unreachable](https://github.com/mbrubeck/rust-debug-unreachable) from 1.0.1 to 1.0.4.
<details>
<summary>Commits</summary>
<ul>
<li><a href="d82486c6d9"><code>d82486c</code></a> Version 1.0.4</li>
<li><a href="88691aebfb"><code>88691ae</code></a> Don't run should_panic test in optimized builds</li>
<li><a href="e374f69908"><code>e374f69</code></a> Fix compatibility with Rust 1.29 and older</li>
<li><a href="f6ea6b23cf"><code>f6ea6b2</code></a> Remove dependency on 'unreachable'</li>
<li><a href="628efc1338"><code>628efc1</code></a> Add note about library name to README</li>
<li>See full diff in <a href="https://github.com/mbrubeck/rust-debug-unreachable/compare/new_debug_unreachable-v1.0.1...v1.0.4">compare view</a></li>
</ul>
</details>
<br />
[](https://dependabot.com/compatibility-score/?dependency-name=new_debug_unreachable&package-manager=cargo&previous-version=1.0.1&new-version=1.0.4)
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>
Don't create empty stacking contexts in display lists
A recent change to euclid exposed that our display lists can contain Rects that contain NaN values. These NaNs originate from creating stacking contexts with transforms that scale the horizontal or vertical dimensions to 0. WebRender isn't prepared to handle these, so we need to not produce these empty stacking contexts when building the display list.
---
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix#26592 and fix#26590
- [x] There are tests for these changes
build(deps): bump futures-task from 0.3.4 to 0.3.5
Bumps [futures-task](https://github.com/rust-lang/futures-rs) from 0.3.4 to 0.3.5.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/rust-lang/futures-rs/releases">futures-task's releases</a>.</em></p>
<blockquote>
<h2>0.3.5</h2>
<ul>
<li>Added <code>StreamExt::flat_map</code>.</li>
<li>Added <code>StreamExt::ready_chunks</code>.</li>
<li>Added <code>*_unpin</code> methods to <code>SinkExt</code>.</li>
<li>Added a <code>cancellation()</code> future to <code>oneshot::Sender</code>.</li>
<li>Added <code>reunite</code> method to <code>ReadHalf</code> and <code>WriteHalf</code>.</li>
<li>Added <code>Extend</code> implementations for <code>Futures(Un)Ordered</code> and <code>SelectAll</code>.</li>
<li>Added support for reexporting the <code>join!</code> and <code>select!</code> macros.</li>
<li>Added <code>no_std</code> support for the <code>pending!</code> and <code>poll!</code> macros.</li>
<li>Added <code>Send</code> and <code>Sync</code> support for <code>AssertUnmoved</code>.</li>
<li>Fixed a bug where <code>Shared</code> wasn't relinquishing control to the executor.</li>
<li>Removed the <code>Send</code> bound on the output of <code>RemoteHandle</code>.</li>
<li>Relaxed bounds on <code>FuturesUnordered</code>.</li>
<li>Reorganized internal tests to work under different <code>--feature</code>s.</li>
<li>Reorganized the bounds on <code>StreamExt::forward</code>.</li>
<li>Removed and replaced a large amount of internal <code>unsafe</code>.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/rust-lang/futures-rs/blob/master/CHANGELOG.md">futures-task's changelog</a>.</em></p>
<blockquote>
<h1>0.3.5 - 2020-05-08</h1>
<ul>
<li>Added <code>StreamExt::flat_map</code>.</li>
<li>Added <code>StreamExt::ready_chunks</code>.</li>
<li>Added <code>*_unpin</code> methods to <code>SinkExt</code>.</li>
<li>Added a <code>cancellation()</code> future to <code>oneshot::Sender</code>.</li>
<li>Added <code>reunite</code> method to <code>ReadHalf</code> and <code>WriteHalf</code>.</li>
<li>Added <code>Extend</code> implementations for <code>Futures(Un)Ordered</code> and <code>SelectAll</code>.</li>
<li>Added support for reexporting the <code>join!</code> and <code>select!</code> macros.</li>
<li>Added <code>no_std</code> support for the <code>pending!</code> and <code>poll!</code> macros.</li>
<li>Added <code>Send</code> and <code>Sync</code> support for <code>AssertUnmoved</code>.</li>
<li>Fixed a bug where <code>Shared</code> wasn't relinquishing control to the executor.</li>
<li>Removed the <code>Send</code> bound on the output of <code>RemoteHandle</code>.</li>
<li>Relaxed bounds on <code>FuturesUnordered</code>.</li>
<li>Reorganized internal tests to work under different <code>--feature</code>s.</li>
<li>Reorganized the bounds on <code>StreamExt::forward</code>.</li>
<li>Removed and replaced a large amount of internal <code>unsafe</code>.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="4ceafb384c"><code>4ceafb3</code></a> Stage 0.3.5</li>
<li><a href="5b91728e10"><code>5b91728</code></a> Drop unneeded Send/Sync bound from AssertUnmoved</li>
<li><a href="4b930bb470"><code>4b930bb</code></a> Implement Send + Sync for AssertUnmoved</li>
<li><a href="3bf5ac99e9"><code>3bf5ac9</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/rust-lang/futures-rs/issues/2128">#2128</a> from Diggsey/snip</li>
<li><a href="1b44548be7"><code>1b44548</code></a> Merge branch 'master' into snip</li>
<li><a href="32005e3f74"><code>32005e3</code></a> fix: Shared must relinquish control to the executor if repolled</li>
<li><a href="dc06edaf54"><code>dc06eda</code></a> Update pin-utils to 0.1</li>
<li><a href="dc00793b38"><code>dc00793</code></a> Make ready and lazy's panic messages easy to understand</li>
<li><a href="127b244ecd"><code>127b244</code></a> Allow pending! and poll! in no_std</li>
<li><a href="dfc6673946"><code>dfc6673</code></a> Update futures-util/src/future/future/flatten.rs</li>
<li>Additional commits viewable in <a href="https://github.com/rust-lang/futures-rs/compare/0.3.4...0.3.5">compare view</a></li>
</ul>
</details>
<br />
[](https://dependabot.com/compatibility-score/?dependency-name=futures-task&package-manager=cargo&previous-version=0.3.4&new-version=0.3.5)
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>
Update XHR send to use XMLHttpRequestBodyInit
<!-- Please describe your changes on the following line: -->
FIX#26723
---
<!-- 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
- [ ] 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. -->
Mutably borrow to do layout of independent formatting contexts
We want to compute content sizes on demand rather than eagerly so we will
need to mutate the independent formatting contexts that own the content sizes.
We want to compute content sizes on demand rather than eagerly so we will
need to mutate the independent formatting contexts that own the content sizes.
build(deps): bump core-text from 13.2.0 to 13.3.2
Bumps [core-text](https://github.com/servo/core-foundation-rs) from 13.2.0 to 13.3.2.
<details>
<summary>Commits</summary>
<ul>
<li><a href="b2b92f8bce"><code>b2b92f8</code></a> Auto merge of <a href="https://github-redirect.dependabot.com/servo/core-foundation-rs/issues/348">#348</a> - servo:backport-347, r=SimonSapin</li>
<li><a href="e0ec957e37"><code>e0ec957</code></a> Properly make core_text::font::Font be Send and Sync</li>
<li><a href="70aca43f2f"><code>70aca43</code></a> Auto merge of <a href="https://github-redirect.dependabot.com/servo/core-foundation-rs/issues/341">#341</a> - SSheldon:cocoa_version_0.19.1, r=jdm</li>
<li><a href="e65c9b2939"><code>e65c9b2</code></a> Update cocoa version to 0.19.1</li>
<li><a href="f7c2096ad0"><code>f7c2096</code></a> Auto merge of <a href="https://github-redirect.dependabot.com/servo/core-foundation-rs/issues/340">#340</a> - SSheldon:fix_omitted_ret_types, r=jdm</li>
<li><a href="0a1b0d6f1b"><code>0a1b0d6</code></a> Fixes so the compiler can infer msg_send! return types</li>
<li><a href="c9b0702dc0"><code>c9b0702</code></a> Auto merge of <a href="https://github-redirect.dependabot.com/servo/core-foundation-rs/issues/337">#337</a> - wezm:CFDataGetBytes, r=jdm</li>
<li><a href="b2a4a0e566"><code>b2a4a0e</code></a> Add CFDataGetBytes to CFData bindings</li>
<li><a href="6143ce111e"><code>6143ce1</code></a> Auto merge of <a href="https://github-redirect.dependabot.com/servo/core-foundation-rs/issues/336">#336</a> - wezm:copy-available-tables, r=jdm</li>
<li><a href="bc20614a3b"><code>bc20614</code></a> Add get_available_font_tables to CTFont</li>
<li>Additional commits viewable in <a href="https://github.com/servo/core-foundation-rs/compare/core-text-v13.2.0...core-text-v13.3.2">compare view</a></li>
</ul>
</details>
<br />
[](https://dependabot.com/compatibility-score/?dependency-name=core-text&package-manager=cargo&previous-version=13.2.0&new-version=13.3.2)
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 futures-core from 0.3.4 to 0.3.5
Bumps [futures-core](https://github.com/rust-lang/futures-rs) from 0.3.4 to 0.3.5.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/rust-lang/futures-rs/releases">futures-core's releases</a>.</em></p>
<blockquote>
<h2>0.3.5</h2>
<ul>
<li>Added <code>StreamExt::flat_map</code>.</li>
<li>Added <code>StreamExt::ready_chunks</code>.</li>
<li>Added <code>*_unpin</code> methods to <code>SinkExt</code>.</li>
<li>Added a <code>cancellation()</code> future to <code>oneshot::Sender</code>.</li>
<li>Added <code>reunite</code> method to <code>ReadHalf</code> and <code>WriteHalf</code>.</li>
<li>Added <code>Extend</code> implementations for <code>Futures(Un)Ordered</code> and <code>SelectAll</code>.</li>
<li>Added support for reexporting the <code>join!</code> and <code>select!</code> macros.</li>
<li>Added <code>no_std</code> support for the <code>pending!</code> and <code>poll!</code> macros.</li>
<li>Added <code>Send</code> and <code>Sync</code> support for <code>AssertUnmoved</code>.</li>
<li>Fixed a bug where <code>Shared</code> wasn't relinquishing control to the executor.</li>
<li>Removed the <code>Send</code> bound on the output of <code>RemoteHandle</code>.</li>
<li>Relaxed bounds on <code>FuturesUnordered</code>.</li>
<li>Reorganized internal tests to work under different <code>--feature</code>s.</li>
<li>Reorganized the bounds on <code>StreamExt::forward</code>.</li>
<li>Removed and replaced a large amount of internal <code>unsafe</code>.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/rust-lang/futures-rs/blob/master/CHANGELOG.md">futures-core's changelog</a>.</em></p>
<blockquote>
<h1>0.3.5 - 2020-05-08</h1>
<ul>
<li>Added <code>StreamExt::flat_map</code>.</li>
<li>Added <code>StreamExt::ready_chunks</code>.</li>
<li>Added <code>*_unpin</code> methods to <code>SinkExt</code>.</li>
<li>Added a <code>cancellation()</code> future to <code>oneshot::Sender</code>.</li>
<li>Added <code>reunite</code> method to <code>ReadHalf</code> and <code>WriteHalf</code>.</li>
<li>Added <code>Extend</code> implementations for <code>Futures(Un)Ordered</code> and <code>SelectAll</code>.</li>
<li>Added support for reexporting the <code>join!</code> and <code>select!</code> macros.</li>
<li>Added <code>no_std</code> support for the <code>pending!</code> and <code>poll!</code> macros.</li>
<li>Added <code>Send</code> and <code>Sync</code> support for <code>AssertUnmoved</code>.</li>
<li>Fixed a bug where <code>Shared</code> wasn't relinquishing control to the executor.</li>
<li>Removed the <code>Send</code> bound on the output of <code>RemoteHandle</code>.</li>
<li>Relaxed bounds on <code>FuturesUnordered</code>.</li>
<li>Reorganized internal tests to work under different <code>--feature</code>s.</li>
<li>Reorganized the bounds on <code>StreamExt::forward</code>.</li>
<li>Removed and replaced a large amount of internal <code>unsafe</code>.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="4ceafb384c"><code>4ceafb3</code></a> Stage 0.3.5</li>
<li><a href="5b91728e10"><code>5b91728</code></a> Drop unneeded Send/Sync bound from AssertUnmoved</li>
<li><a href="4b930bb470"><code>4b930bb</code></a> Implement Send + Sync for AssertUnmoved</li>
<li><a href="3bf5ac99e9"><code>3bf5ac9</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/rust-lang/futures-rs/issues/2128">#2128</a> from Diggsey/snip</li>
<li><a href="1b44548be7"><code>1b44548</code></a> Merge branch 'master' into snip</li>
<li><a href="32005e3f74"><code>32005e3</code></a> fix: Shared must relinquish control to the executor if repolled</li>
<li><a href="dc06edaf54"><code>dc06eda</code></a> Update pin-utils to 0.1</li>
<li><a href="dc00793b38"><code>dc00793</code></a> Make ready and lazy's panic messages easy to understand</li>
<li><a href="127b244ecd"><code>127b244</code></a> Allow pending! and poll! in no_std</li>
<li><a href="dfc6673946"><code>dfc6673</code></a> Update futures-util/src/future/future/flatten.rs</li>
<li>Additional commits viewable in <a href="https://github.com/rust-lang/futures-rs/compare/0.3.4...0.3.5">compare view</a></li>
</ul>
</details>
<br />
[](https://dependabot.com/compatibility-score/?dependency-name=futures-core&package-manager=cargo&previous-version=0.3.4&new-version=0.3.5)
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 serde_json from 1.0.27 to 1.0.53
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.27 to 1.0.53.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/serde-rs/json/releases">serde_json's releases</a>.</em></p>
<blockquote>
<h2>v1.0.53</h2>
<ul>
<li>Reduce unhelpful indentation in the {:#?} format of serde_json::Value</li>
<li>Remove some unnecessary runtime checks from Serializer::collect_str</li>
</ul>
<h2>v1.0.52</h2>
<ul>
<li>Add <a href="https://docs.rs/serde_json/1/serde_json/value/fn.to_raw_value.html">serde_json::value::to_raw_value</a> to convert a serializable value to Box<RawValue> (<a href="https://github-redirect.dependabot.com/serde-rs/json/issues/658">#658</a>, thanks <a href="https://github.com/jplatte">@jplatte</a>)</li>
</ul>
<h2>v1.0.51</h2>
<ul>
<li>Terminate StreamDeserializer after errors instead of repeatedly reparsing the same failed input (<a href="https://github-redirect.dependabot.com/serde-rs/json/issues/647">#647</a>)</li>
<li>Add FusedIterator impls for StreamDeserializer and for Map's various iterators</li>
</ul>
<h2>v1.0.50</h2>
<ul>
<li>Implement Eq for Value, Map, Number (<a href="https://github-redirect.dependabot.com/serde-rs/json/issues/640">#640</a>, thanks <a href="https://github.com/smarnach">@smarnach</a>)</li>
</ul>
<h2>v1.0.49</h2>
<ul>
<li>Improve error message when neither "std" nor "alloc" feature is enabled (<a href="https://github-redirect.dependabot.com/serde-rs/json/issues/643">#643</a>)</li>
</ul>
<h2>v1.0.48</h2>
<ul>
<li>Add <code>serde_json::value::Serializer</code> which produces a <code>Value</code> as output (<a href="https://github-redirect.dependabot.com/serde-rs/json/issues/621">#621</a>, thanks <a href="https://github.com/sdleffler">@sdleffler</a>)</li>
</ul>
<h2>v1.0.47</h2>
<ul>
<li>Raise serde requirement to 1.0.100+ for the necessary no-std traits (<a href="https://github-redirect.dependabot.com/serde-rs/json/issues/617">#617</a>, thanks <a href="https://github.com/Xanewok">@Xanewok</a>)</li>
</ul>
<h2>v1.0.46</h2>
<ul>
<li>Serialize JSON map entries using serialize_entry instead of serialize_key + serialize_value to support transcoding to XML (<a href="https://github-redirect.dependabot.com/serde-rs/json/issues/614">#614</a>, thanks <a href="https://github.com/jmfiaschi">@jmfiaschi</a>)</li>
</ul>
<h2>v1.0.45</h2>
<ul>
<li>
<p>Add no-std support (<a href="https://github-redirect.dependabot.com/serde-rs/json/issues/606">#606</a>, thanks <a href="https://github.com/Xanewok">@Xanewok</a>)</p>
<pre lang="toml"><code>[dependencies]
serde_json = { version = "1.0.45", default-features = false, features = ["alloc"] }
</code></pre>
</li>
</ul>
<h2>v1.0.44</h2>
<ul>
<li>Implement IntoDeserializer for serde_json::Value to allow deserializing from types like <code>HashMap<String, Value></code> (<a href="https://github-redirect.dependabot.com/serde-rs/json/issues/591">#591</a>)</li>
</ul>
<h2>v1.0.43</h2>
<ul>
<li>Declare accurate minimum required version of indexmap crate when preserve-order feature is enabled (<a href="https://github-redirect.dependabot.com/serde-rs/json/issues/590">#590</a>, thanks <a href="https://github.com/nlordell">@nlordell</a>)</li>
</ul>
<h2>v1.0.42</h2>
<ul>
<li>Add <code>impl From<()> for Value</code> which produces Value::Null (<a href="https://github-redirect.dependabot.com/serde-rs/json/issues/585">#585</a>, thanks <a href="https://github.com/Nilix007">@Nilix007</a>)</li>
</ul>
<h2>v1.0.41</h2>
<ul>
<li>Documentation improvements (thanks <a href="https://github.com/est31">@est31</a> and <a href="https://github.com/yankuu">@yankuu</a>)</li>
</ul>
<h2>v1.0.40</h2>
<ul>
<li>Return correct EOF error type on cut-off decimal numbers (<a href="https://github-redirect.dependabot.com/serde-rs/json/issues/525">#525</a>, thanks <a href="https://github.com/17dec">@17dec</a>)</li>
</ul>
<h2>v1.0.39</h2>
</tr></table> ... (truncated)
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="5c3711e433"><code>5c3711e</code></a> Release 1.0.53</li>
<li><a href="6ca3752e9d"><code>6ca3752</code></a> Downgrade some unnecessary runtime asserts to debug_assert</li>
<li><a href="eb383c08b2"><code>eb383c0</code></a> Update arbitrary_precision Debug impl of Number to match normal one</li>
<li><a href="351d847e17"><code>351d847</code></a> Omit a layer of unnecessary nesting from Debug impl</li>
<li><a href="baae6d9306"><code>baae6d9</code></a> Add test for {:#?} format of Value</li>
<li><a href="800a8d58a9"><code>800a8d5</code></a> Update build status badge to GitHub Actions</li>
<li><a href="cb40c10e3f"><code>cb40c10</code></a> Remove AppVeyor configuration</li>
<li><a href="f255356c65"><code>f255356</code></a> Add Windows CI in GitHub Actions</li>
<li><a href="edb1c31dfb"><code>edb1c31</code></a> Avoid repeating slow doctests and compiletests</li>
<li><a href="dffbe4488f"><code>dffbe44</code></a> Remove Travis configuration</li>
<li>Additional commits viewable in <a href="https://github.com/serde-rs/json/compare/v1.0.27...v1.0.53">compare view</a></li>
</ul>
</details>
<br />
[](https://dependabot.com/compatibility-score/?dependency-name=serde_json&package-manager=cargo&previous-version=1.0.27&new-version=1.0.53)
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 gstreamer-app-sys from 0.8.0 to 0.8.1
Bumps gstreamer-app-sys from 0.8.0 to 0.8.1.
[](https://dependabot.com/compatibility-score/?dependency-name=gstreamer-app-sys&package-manager=cargo&previous-version=0.8.0&new-version=0.8.1)
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>
layout_2020: Tag fragments with their pseudo content type
This will allow us to answer queries and properly handle animations in
the future for fragments generated for pseudo content.
<!-- Please describe your changes on the following line: -->
---
<!-- 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] 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. -->
Show the real commit hash for `./servo --version`, not the bundle hash
<!-- Please describe your changes on the following line: -->
Show the real commit hash of the build when run on a bundle commit, rather than showing the bundle's hash.
It gets the real commit hash by extracting it from the bundle commit message, which has the form `Shallow version of commit {sha1}`, where `{sha1}` is the real commit hash.
---
<!-- 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 (edits Python code, no Rust changes)
- [X] `./mach test-tidy` does not report any errors
- [X] These changes fix#26386 (GitHub issue number if applicable)
<!-- Either: -->
- [ ] There are tests for these changes OR
- [X] These changes do not require tests because this only changes infrastructure
<!-- 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. -->
build(deps): bump openssl from 0.10.26 to 0.10.29
Bumps [openssl](https://github.com/sfackler/rust-openssl) from 0.10.26 to 0.10.29.
<details>
<summary>Commits</summary>
<ul>
<li><a href="d47dc792ce"><code>d47dc79</code></a> Release openssl v0.10.29</li>
<li><a href="adde92879f"><code>adde928</code></a> Release openssl-sys v0.9.55</li>
<li><a href="847eeb16cb"><code>847eeb1</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/sfackler/rust-openssl/issues/1257">#1257</a> from sfackler/set-cert-store</li>
<li><a href="1ed175f85f"><code>1ed175f</code></a> FIx build</li>
<li><a href="df03bbf5b8"><code>df03bbf</code></a> Deal with upstream archive location change</li>
<li><a href="40e66bab6b"><code>40e66ba</code></a> Add SslContextBuilder::set_cert_store</li>
<li><a href="b027f16031"><code>b027f16</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/sfackler/rust-openssl/issues/1253">#1253</a> from coolreader18/no-vendor-env-var</li>
<li><a href="9c8e7cdd23"><code>9c8e7cd</code></a> Bump CI version</li>
<li><a href="517fc81d40"><code>517fc81</code></a> Update openssl/src/lib.rs</li>
<li><a href="d6772960a3"><code>d677296</code></a> Add documentation for OPENSSL_NO_VENDOR</li>
<li>Additional commits viewable in <a href="https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.26...openssl-v0.10.29">compare view</a></li>
</ul>
</details>
<br />
[](https://dependabot.com/compatibility-score/?dependency-name=openssl&package-manager=cargo&previous-version=0.10.26&new-version=0.10.29)
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 ref_slice from 1.1.1 to 1.2.0
Bumps [ref_slice](https://github.com/steveklabnik/ref_slice) from 1.1.1 to 1.2.0.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a href="https://github.com/steveklabnik/ref_slice/commits">compare view</a></li>
</ul>
</details>
<br />
[](https://dependabot.com/compatibility-score/?dependency-name=ref_slice&package-manager=cargo&previous-version=1.1.1&new-version=1.2.0)
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 indexmap from 1.3.2 to 1.4.0
Bumps [indexmap](https://github.com/bluss/indexmap) from 1.3.2 to 1.4.0.
<details>
<summary>Commits</summary>
<ul>
<li><a href="da1835123c"><code>da18351</code></a> 1.4.0</li>
<li><a href="6e929fa728"><code>6e929fa</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/bluss/indexmap/issues/124">#124</a> from cuviper/rerun_path</li>
<li><a href="b6c596319b"><code>b6c5963</code></a> Use a plain relative path for autocfg::rerun_path</li>
<li><a href="e603553039"><code>e603553</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/bluss/indexmap/issues/120">#120</a> from bluss/get-index-of</li>
<li><a href="f2142d99bd"><code>f2142d9</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/bluss/indexmap/issues/121">#121</a> from bluss/update-dev-version</li>
<li><a href="42affec83e"><code>42affec</code></a> FIX: Update benchmarks for rand 0.7</li>
<li><a href="155f6b2d6a"><code>155f6b2</code></a> Merge PR <a href="https://github-redirect.dependabot.com/bluss/indexmap/issues/112">#112</a></li>
<li><a href="a0da5e1bce"><code>a0da5e1</code></a> MAINT: Update rust version for dev/CI to 1.32</li>
<li><a href="1b54c5ecef"><code>1b54c5e</code></a> FIX: Rename entry_index to get_index_of</li>
<li><a href="27f384d560"><code>27f384d</code></a> Remove unused parens</li>
<li>Additional commits viewable in <a href="https://github.com/bluss/indexmap/compare/1.3.2...1.4.0">compare view</a></li>
</ul>
</details>
<br />
[](https://dependabot.com/compatibility-score/?dependency-name=indexmap&package-manager=cargo&previous-version=1.3.2&new-version=1.4.0)
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>
Run only a supported set of WPT test types by default.
wptrunner introduced a new test type for print reftests, and by default any unsupported type causes the test runner to report an unexpected error, even if none of those tests are run. These changes avoid similar breakage by limiting the default test types to ones that are supported by our test runners.
Improvements to animation keyframe computation
This pull request contains two changes:
**Caching computed keyframes between animation changes**:
Instead of recomputing keyframe data for every tick of an animation,
cache the computed values when animations change. In addition to being
more efficient, this will allow us to return animation rules as property
declarations because we don't need to consult the final style to produce
them.
**Better computation of keyframe data**:
Instead of naively using `apply_declarations` to compute the style of
each keyframe, use an approach more like Gecko's where we carefully
walk through the animation keyframes and try to extract `AnimationValue`s
for each computed keyframe. In this approach we respect the order with
which the properties are set in the keyframe source and try to deal with
CSS custom properties.
---
<!-- 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] 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. -->
This begins to address #26625 by properly applying CSS variables during
keyframe computation and no longer using `apply_declarations`. Instead,
walk the declarations, combining them into IntermediateComputedKeyframe,
maintaining declarations that modify CSS custom properties. Then compute
a set of AnimationValues for each keyframe and use those to produce
interpolated animation values.