Move hit testing information out of WebRender
Store hit testing information in a data structure that sits alongside the display list in the compositor. This will allow the compositor to store more information per-node. The data structure also takes care of de-duplicating information between successive display list entries. In the future, the data structure can be even more aggressive in producing smaller side hit testing lists, if necessary.
<!-- 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] These changes do not require tests because they should not change behavior.
<!-- 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. -->
HACKING_QUICKSTART: update vscode guide
This patch updates the vscode section of the hacking quickstart guide to document how to fix the UnsupportedABI proc macro resolution error in rust-analyzer (rust-lang/rust-analyzer#13322).
For example, following these steps will fix the errors on each `#[derive(JSTraceable, MallocSizeOf)]` line in components/script/dom/document.rs.
---
- [x] `./mach build -d` does not report any errors
- [x] `./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 they only affect the docs
Fix the `update-wpt` command for Layout2020
After a recent refactor, layout2020 related arguments are no longer being processed. This change fixes that.
<!-- 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] These changes do not require tests because they affect scripts.
<!-- 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. -->
Store hit testing information in a data structure that sits alongside
the display list in the compositor. This will allow the compositor to
store more information per-node. The data structure also takes care of
de-duplicating information between successive display list entries. In
the future, the data structure can be even more aggressive in producing
smaller side hit testing lists, if necessary.
Move more code into ClipScrollState during WebRender DL building
This change moves a bit more code into the `ClipScrollState` helper during WR display list building as well as inlines build_common_item_properties. This is all in preparation of modifications to this code which will build a Compositor-side scroll tree. It should not change any behavior.
<!-- 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] These changes do not require tests because they do not change behavior.
<!-- 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 change moves a bit more code into the `ClipScrollState` helper
during WR display list building as well as inlines
build_common_item_properties. This is all in preparation of
modifications to this code which will build a Compositor-side scroll
tree. It should not change any behavior.
Package and upload linux w/ layout-2020 engine.
The layout-2020 variant will be consumed by the internal WPT trend [dashboard][1] only and won't be made available on servo.org.
This change will be removed once the layout engine we will use going forward is finalized.
[1]: https://servo.github.io/internal-wpt-dashboard/
<!-- 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
- [ ] These changes fix #___ (GitHub issue number if applicable)
<!-- Either: -->
- [ ] There are tests for these changes OR
- [x] These changes do not require tests because they modify the nightly CI job.
<!-- 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. -->
The layout-2020 variant will be consumed by the
internal WPT trend [dashboard][1] only and won't
be made available on servo.org.
This change will be removed once the layout
engine we will use going forward is finalized.
[1]: https://servo.github.io/internal-wpt-dashboard/
Signed-off-by: Mukilan Thiyagarajan <me@mukilan.in>
Bump zune-inflate from 0.2.50 to 0.2.51
Bumps [zune-inflate](https://github.com/etemesi254/zune-image) from 0.2.50 to 0.2.51.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a href="https://github.com/etemesi254/zune-image/commits">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
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)
</details>
Bump string_cache from 0.8.6 to 0.8.7
Bumps [string_cache](https://github.com/servo/string-cache) from 0.8.6 to 0.8.7.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a href="https://github.com/servo/string-cache/commits">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
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)
</details>
Bump rayon from 1.6.1 to 1.7.0
Bumps [rayon](https://github.com/rayon-rs/rayon) from 1.6.1 to 1.7.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/rayon-rs/rayon/blob/master/RELEASES.md">rayon's changelog</a>.</em></p>
<blockquote>
<h1>Release rayon 1.7.0 / rayon-core 1.11.0 (2023-03-03)</h1>
<ul>
<li>The minimum supported <code>rustc</code> is now 1.59.</li>
<li>Added a fallback when threading is unsupported.</li>
<li>The new <code>ParallelIterator::take_any</code> and <code>skip_any</code> methods work like
unordered <code>IndexedParallelIterator::take</code> and <code>skip</code>, counting items in
whatever order they are visited in parallel.</li>
<li>The new <code>ParallelIterator::take_any_while</code> and <code>skip_any_while</code> methods work
like unordered <code>Iterator::take_while</code> and <code>skip_while</code>, which previously had
no parallel equivalent. The "while" condition may be satisfied from anywhere
in the parallel iterator, affecting all future items regardless of position.</li>
<li>The new <code>yield_now</code> and <code>yield_local</code> functions will cooperatively yield
execution to Rayon, either trying to execute pending work from the entire
pool or from just the local deques of the current thread, respectively.</li>
</ul>
<h1>Release rayon-core 1.10.2 (2023-01-22)</h1>
<ul>
<li>Fixed miri-reported UB for SharedReadOnly tags protected by a call.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="7ffaf3463b"><code>7ffaf34</code></a> Merge <a href="https://github-redirect.dependabot.com/rayon-rs/rayon/issues/716">#716</a></li>
<li><a href="163003e0e3"><code>163003e</code></a> bump the release date</li>
<li><a href="f7d75532fc"><code>f7d7553</code></a> Release rayon 1.3.0 / rayon-core 1.7.0</li>
<li><a href="b98bb23f05"><code>b98bb23</code></a> Remove unneeded extern crate statements</li>
<li><a href="9b92c7deb9"><code>9b92c7d</code></a> cargo fmt</li>
<li><a href="e02f439bbf"><code>e02f439</code></a> Remove useless 'use crate;' in favor of the crate prelude</li>
<li><a href="a1db0fe390"><code>a1db0fe</code></a> Fix clippy::flat_map_identity</li>
<li><a href="4e4025693f"><code>4e40256</code></a> Update ci/compat-Cargo.lock</li>
<li><a href="1f9d117d51"><code>1f9d117</code></a> Remove cfg(rayon_unstable)</li>
<li><a href="198ca7f6aa"><code>198ca7f</code></a> Remove rayon-futures</li>
<li>Additional commits viewable in <a href="https://github.com/rayon-rs/rayon/compare/rayon-core-v1.6.1...rayon-core-v1.7.0">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
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)
</details>
Fix the layout 2020 build after euclid upgrade
The euclid upgrade included some backward incompatible changes to the API. This changes updates a few function calls that used the old names.
<!-- 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] These changes do not require tests because they do not change behavior.
<!-- 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. -->
Bump winit from 0.28.1 to 0.28.2
Bumps [winit](https://github.com/rust-windowing/winit) from 0.28.1 to 0.28.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/rust-windowing/winit/releases">winit's releases</a>.</em></p>
<blockquote>
<h2>Winit Version v0.28.2</h2>
<ul>
<li>Implement <code>HasRawDisplayHandle</code> for <code>EventLoop</code>.</li>
<li>On macOS, set resize increments only for live resizes.</li>
<li>On Wayland, fix rare crash on DPI change.</li>
<li>On Web, add support for <code>Window::theme</code>.</li>
<li>On Wayland, fix rounding issues when doing resize.</li>
<li>On macOS, fix wrong focused state on startup.</li>
<li>On Windows, fix crash on setting taskbar when using Visual Studio debugger.</li>
<li>On macOS, resize simple fullscreen windows on windowDidChangeScreen events.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/rust-windowing/winit/blob/master/CHANGELOG.md">winit's changelog</a>.</em></p>
<blockquote>
<h1>0.28.2</h1>
<ul>
<li>Implement <code>HasRawDisplayHandle</code> for <code>EventLoop</code>.</li>
<li>On macOS, set resize increments only for live resizes.</li>
<li>On Wayland, fix rare crash on DPI change</li>
<li>Web: Added support for <code>Window::theme</code>.</li>
<li>On Wayland, fix rounding issues when doing resize.</li>
<li>On macOS, fix wrong focused state on startup.</li>
<li>On Windows, fix crash on setting taskbar when using Visual Studio debugger.</li>
<li>On macOS, resize simple fullscreen windows on windowDidChangeScreen events.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="d102c21792"><code>d102c21</code></a> Winit version 0.28.2</li>
<li><a href="68ed564def"><code>68ed564</code></a> On macOS, resize simple fullscreen on window move</li>
<li><a href="339d57b646"><code>339d57b</code></a> On Windows, check whether CoCreateInstance succeeds</li>
<li><a href="2e4dafc9fe"><code>2e4dafc</code></a> On macOS, fix initial focused state</li>
<li><a href="0fbba02318"><code>0fbba02</code></a> Update FEATURES.md</li>
<li><a href="41e524f12c"><code>41e524f</code></a> On Wayland, fix rounding issue in resizes</li>
<li><a href="644c47a6f8"><code>644c47a</code></a> Add support for <code>Window::theme</code> on the web (<a href="https://github-redirect.dependabot.com/rust-windowing/winit/issues/2687">#2687</a>)</li>
<li><a href="0be08e574d"><code>0be08e5</code></a> On Wayland, fix rare crash on DPI change</li>
<li><a href="811cc5cdb7"><code>811cc5c</code></a> On macOS, set resize increments only for live resize</li>
<li><a href="230b37df56"><code>230b37d</code></a> Implement <code>HasRawDisplayHandle</code> for <code>EventLoop</code> (<a href="https://github-redirect.dependabot.com/rust-windowing/winit/issues/2677">#2677</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/rust-windowing/winit/compare/v0.28.1...v0.28.2">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
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)
</details>
Bump unicode-ident from 1.0.5 to 1.0.8
Bumps [unicode-ident](https://github.com/dtolnay/unicode-ident) from 1.0.5 to 1.0.8.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/dtolnay/unicode-ident/releases">unicode-ident's releases</a>.</em></p>
<blockquote>
<h2>1.0.8</h2>
<ul>
<li>Set html_root_url attribute</li>
</ul>
<h2>1.0.7</h2>
<ul>
<li>Documentation improvements</li>
</ul>
<h2>1.0.6</h2>
<ul>
<li>Documentation improvements</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="c4f455414f"><code>c4f4554</code></a> Release 1.0.8</li>
<li><a href="ba9f7812cc"><code>ba9f781</code></a> Set html_root_url</li>
<li><a href="90a7433bd4"><code>90a7433</code></a> Release 1.0.7</li>
<li><a href="90954572e0"><code>9095457</code></a> Ignore let_underscore_untyped pedantic clippy lint</li>
<li><a href="6fd6b654dd"><code>6fd6b65</code></a> Revert "Resolve let_underscore_untyped pedantic clippy lint"</li>
<li><a href="d739d18f92"><code>d739d18</code></a> Resolve let_underscore_untyped pedantic clippy lint</li>
<li><a href="d91b5d9b58"><code>d91b5d9</code></a> Enable type layout randomization in CI on nightly</li>
<li><a href="006eb756e3"><code>006eb75</code></a> Support a manual trigger on CI workflow</li>
<li><a href="bfa5c91ffc"><code>bfa5c91</code></a> Opt out -Zrustdoc-scrape-examples on docs.rs</li>
<li><a href="d23c2d64dd"><code>d23c2d6</code></a> Prevent actions duplication on noop merge commits</li>
<li>Additional commits viewable in <a href="https://github.com/dtolnay/unicode-ident/compare/1.0.5...1.0.8">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
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)
</details>
Bump string_cache from 0.8.4 to 0.8.6
Bumps [string_cache](https://github.com/servo/string-cache) from 0.8.4 to 0.8.6.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a href="https://github.com/servo/string-cache/commits">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
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)
</details>
script: fix BorrowError in (new Blob).slice(0,0).text()
When getting the text of a sliced Blob, we call GlobalScope.get_blob_url_id, which borrows the blob_state field mutably and calls the get_blob_size method (aka [Blob#size](https://w3c.github.io/FileAPI/#dfn-size)), which tries to borrow the same field immutably, causing a panic.
This patch inlines the relevant parts of get_blob_size into get_blob_url_id, so we can reuse the mutable borrow.
* /FileAPI/Blob-methods-from-detached-frame.html was 4/4 FAIL, will be 4/4 PASS once #29396 also lands
* /fetch/api/basic/scheme-blob.sub.any.html was CRASH, now 10/17 PASS and 7/17 FAIL
* /fetch/api/basic/scheme-blob.sub.any.worker.html was CRASH, now 10/17 PASS and 7/17 FAIL
---
<!-- 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#29450
<!-- Either: -->
- [x] There are tests for these changes OR
- [ ] These changes do not require tests because ___
Make HTMLInputElement.list an HTMLDataListElement
<!-- 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] These changes fix#29097
<!-- Either: -->
- [ ] There are tests for these changes OR
- [x] These changes do not require tests because the only change is the return type.
<!-- 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 URLSearchParams's size
<!-- 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] These changes fix#29425
<!-- 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. -->