Commit Graph

54089 Commits

Author SHA1 Message Date
Sam
a7094a0521 CI: do not create github check from wpt results
Signed-off-by: Sam <16504129+sagudev@users.noreply.github.com>
2025-12-23 06:11:23 +01:00
dependabot[bot]
9907a176b0 build(deps): bump serde_json from 1.0.145 to 1.0.146 (#41488)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.145 to
1.0.146.
<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.146</h2>
<ul>
<li>Set fast_arithmetic=64 for riscv64 (<a
href="https://redirect.github.com/serde-rs/json/issues/1305">#1305</a>,
thanks <a
href="https://github.com/Xeonacid"><code>@​Xeonacid</code></a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="75ad7e6b4e"><code>75ad7e6</code></a>
Release 1.0.146</li>
<li><a
href="bc6c8276d9"><code>bc6c827</code></a>
Merge pull request <a
href="https://redirect.github.com/serde-rs/json/issues/1305">#1305</a>
from Xeonacid/patch-1</li>
<li><a
href="a09210adf5"><code>a09210a</code></a>
Set fast_arithmetic=64 for riscv64</li>
<li><a
href="01182e54b5"><code>01182e5</code></a>
Update actions/upload-artifact@v5 -&gt; v6</li>
<li><a
href="383b13a45f"><code>383b13a</code></a>
Update actions/upload-artifact@v4 -&gt; v5</li>
<li><a
href="04dd357b99"><code>04dd357</code></a>
Raise required compiler to Rust 1.68</li>
<li><a
href="e047dfbe00"><code>e047dfb</code></a>
Resolve manual_let_else pedantic clippy lint</li>
<li><a
href="a525d9c0c0"><code>a525d9c</code></a>
Raise required compiler to Rust 1.65</li>
<li><a
href="f815793bfd"><code>f815793</code></a>
Remove rustc version badge from readme</li>
<li><a
href="3f17d2c6ea"><code>3f17d2c</code></a>
Update actions/checkout@v5 -&gt; v6</li>
<li>Additional commits viewable in <a
href="https://github.com/serde-rs/json/compare/v1.0.145...v1.0.146">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde_json&package-manager=cargo&previous-version=1.0.145&new-version=1.0.146)](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 show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@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>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-23 00:46:09 +00:00
dependabot[bot]
fbac0e68fc build(deps): bump derive_more from 2.1.0 to 2.1.1 (#41487)
Bumps [derive_more](https://github.com/JelteF/derive_more) from 2.1.0 to
2.1.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/JelteF/derive_more/releases">derive_more's
releases</a>.</em></p>
<blockquote>
<h2>2.1.1</h2>
<p><a href="https://docs.rs/derive_more/2.1.1">API docs</a>
<a
href="https://github.com/JelteF/derive_more/blob/v2.1.1/CHANGELOG.md#211---2025-12-22">Changelog</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/JelteF/derive_more/blob/master/CHANGELOG.md">derive_more's
changelog</a>.</em></p>
<blockquote>
<h2>2.1.1 - 2025-12-22</h2>
<h3>Fixed</h3>
<ul>
<li><code>.as_dyn_error()</code> method hygiene inside
<code>Error</code> derive expansion.
(<a
href="https://redirect.github.com/JelteF/derive_more/pull/527">#527</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="f7bb41ac05"><code>f7bb41a</code></a>
Correct release date</li>
<li><a
href="289988ab67"><code>289988a</code></a>
Prepare 2.1.1 release (<a
href="https://redirect.github.com/JelteF/derive_more/issues/529">#529</a>)</li>
<li><a
href="d820ec6e3a"><code>d820ec6</code></a>
Fix <code>derive(Error)</code> expansion hygiene (<a
href="https://redirect.github.com/JelteF/derive_more/issues/527">#527</a>,
<a
href="https://redirect.github.com/JelteF/derive_more/issues/526">#526</a>)</li>
<li><a
href="5627282784"><code>5627282</code></a>
Remove glob imports in <code>derive(From)</code> tests to mend 1.94
nightly Rust regress...</li>
<li>See full diff in <a
href="https://github.com/JelteF/derive_more/compare/v2.1.0...v2.1.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=derive_more&package-manager=cargo&previous-version=2.1.0&new-version=2.1.1)](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 show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@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>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-23 00:36:32 +00:00
Martin Robinson
55c4f579c9 fonts: Refactor the font fallback code a little bit and remove RwLock around FontGroup (#41449)
This change reworks the logic for finding font fallbacks to make it
simpler. I was involved with writing the code for `FontGroupFamily` and
`FontGroupFamilyMember` and I still struggle a bit with understanding
it, so I've chosen to do this. In addition, the change is in preparation
for more flexible font fallback (#41426).

The main changes here are:
 1. Move the logic for creating a new descriptor with variations into
    the Font constructor.
 2. Add some more general methods to `FontGroupFamily` such as a
    template iterator.
 3. Use `OnceLock` to avoid a convoluted code structure because of
    mutability and also having boolean "loaded" members. This is what
    `OnceLock` and `OnceCell` are for!
 4. Rename `FontGroupFamilyMember` to `FontGroupFamilyTemplate` to
    stress that it is one template of a particular `FontGroupFamily`.

Testing: This should not change behavior so is covered by existing WPT
tests.

---------

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
2025-12-22 15:06:25 +00:00
Euclid Ye
1469c5a3a1 OHOS CI: Resolve TIMEOUT notified by scenario test server (#41470)
Fixes the corner case where server notifies TIMEOUT through JS.
We now enforces WebDriver page load timeout.
Also reduces runtime by eliminating unnecessary wait.

Testing: 15 consecutive successes.
https://github.com/servo/servo/actions/runs/20424254640
https://github.com/servo/servo/actions/runs/20424278175
https://github.com/servo/servo/actions/runs/20424275366
https://github.com/servo/servo/actions/runs/20424009716
https://github.com/servo/servo/actions/runs/20424461693
https://github.com/servo/servo/actions/runs/20424475579
https://github.com/servo/servo/actions/runs/20424957847
https://github.com/servo/servo/actions/runs/20424955422
https://github.com/servo/servo/actions/runs/20424953070
...

How network issue/failure is addressed:
https://github.com/servo/servo/actions/runs/20430835294/job/58701225338

Fixes: #41467

---------

Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
2025-12-22 13:33:57 +00:00
Oriol Brufau
3ee05f7c7d script: Restrict box tree damage from changes in original display (#41475)
When the original display of an absolutely positioned element changes,
the static position can be affected. However, the static position is
only used when both insets in the same axis are `auto`.

Therefore, this patch avoids dirtying the box tree when both axes have a
non-auto inset.

Testing: Not needed, this should have no observable behavior change

Signed-off-by: Oriol Brufau <obrufau@igalia.com>
2025-12-22 12:58:45 +00:00
Jan Varga
f908312750 net: Expose replace_host_table via test_util (#41454)
Expose `replace_host_table` via test_util so it can be reused by other
crates, notably libservo tests.
    
This allows tests to map arbitrary host names to localhost, so loading
of
arbitrary sites can be done via the lightweight http server (without
reaching
the external network).
    
Arbitrary sites are needed for upcoming `SiteDataManager` site grouping
by
domain.

Testing: A new integration test has been added

Signed-off-by: Jan Varga <jvarga@igalia.com>
2025-12-22 11:57:53 +00:00
Kingsley Yung
007f3379c5 script: Add helper functions to handle JsonWebKey common decoding tasks (#41428)
Add several helper functions to JsonWebKey to handle common base64url
decoding tasks across multiple algorithms. Those helper functions
include:

- `JsonWebKey::decode_optional_string_field`: decode optional field
- `JsonWebKey::decode_required_string_field`: decode required field
- `JsonWebKey::decode_primes_from_oth_field`: decode oth field to primes

These help simplify our code for importing keys in JsonWebKey format.

Testing: Refactoring. Existing tests suffice.

Signed-off-by: Kingsley Yung <kingsley@kkoyung.dev>
2025-12-22 04:45:16 +00:00
dependabot[bot]
e156a2ed6d build(deps): bump cc from 1.2.49 to 1.2.50 (#41466)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.49 to 1.2.50.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/rust-lang/cc-rs/releases">cc's
releases</a>.</em></p>
<blockquote>
<h2>cc-v1.2.50</h2>
<h3>Other</h3>
<ul>
<li>Add tests for <code>OUT_DIR</code> escape for '..' file paths (<a
href="https://redirect.github.com/rust-lang/cc-rs/issues/1631">#1631</a>)</li>
<li>Fix <a
href="https://redirect.github.com/rust-lang/cc-rs/issues/283">#283</a>:
Make warnings(false) actually suppress compiler warnings (<a
href="https://redirect.github.com/rust-lang/cc-rs/pull/1633">#1633</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md">cc's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/rust-lang/cc-rs/compare/cc-v1.2.49...cc-v1.2.50">1.2.50</a>
- 2025-12-19</h2>
<h3>Other</h3>
<ul>
<li>Add tests for <code>OUT_DIR</code> escape for '..' file paths (<a
href="https://redirect.github.com/rust-lang/cc-rs/issues/1631">#1631</a>)</li>
<li>Fix <a
href="https://redirect.github.com/rust-lang/cc-rs/issues/283">#283</a>:
Make warnings(false) actually suppress compiler warnings (<a
href="https://redirect.github.com/rust-lang/cc-rs/pull/1633">#1633</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="0f78e0c502"><code>0f78e0c</code></a>
chore(cc): release v1.2.50 (<a
href="https://redirect.github.com/rust-lang/cc-rs/issues/1636">#1636</a>)</li>
<li><a
href="cd1d949d27"><code>cd1d949</code></a>
Fix <a
href="https://redirect.github.com/rust-lang/cc-rs/issues/283">#283</a>:
Make warnings(false) actually suppress compiler warnings (<a
href="https://redirect.github.com/rust-lang/cc-rs/issues/1633">#1633</a>)</li>
<li><a
href="7c01d410c9"><code>7c01d41</code></a>
fix(<a
href="https://redirect.github.com/rust-lang/cc-rs/issues/172">#172</a>):
prevent OUT_DIR escape for '..' file paths (<a
href="https://redirect.github.com/rust-lang/cc-rs/issues/1631">#1631</a>)</li>
<li>See full diff in <a
href="https://github.com/rust-lang/cc-rs/compare/cc-v1.2.49...cc-v1.2.50">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=cc&package-manager=cargo&previous-version=1.2.49&new-version=1.2.50)](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 show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@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>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-22 01:30:14 +00:00
Euclid Ye
81c09a6239 CI: Use requested profile for Benchmark + Do not build/upload duplicate Linux artifact (#41367)
There are two duplicate artifacts for Linux:
1. release-binary-linux
2. linux-release 

When I unzip them, they have exactly same size and number of files, with
slightly different folder structure.

This PR only keeps `linux-release` from `./mach package` to save some
workload/space for the runner. We rename it to `release-binary-linux` to
be consistent with other OS artifacts.

Also fixed a bug where we always used release build for benchmark
instead of requested profile:
For `test-speedometer` and `test-dromaeo`, instead of passing hard-coded
profile `-r`, we use `--bin ${{ inputs.binary-path }} --profile ${{
inputs.profile }}` instead. Both `--bin` and `--profile` are necessary,
as the binary path assumed by the profile is not always correct.

Testing: Try run:
Full:
https://github.com/servo/servo/actions/runs/20330441348

macOS ARM (as it is not included in full profile nowadays):
https://github.com/servo/servo/actions/runs/20331385391

x86_64:
https://github.com/servo/servo/actions/runs/20332775039

Bencher:
https://github.com/servo/servo/actions/runs/20359208540

---------

Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
2025-12-22 01:29:54 +00:00
dependabot[bot]
bf2349092d build(deps): bump mozjs from 0.14.2 to 0.14.3 (#41465)
Bumps [mozjs](https://github.com/servo/mozjs) from 0.14.2 to 0.14.3.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/servo/mozjs/releases">mozjs's
releases</a>.</em></p>
<blockquote>
<h2>SpiderMonkey 140.5 source</h2>
<p>Source code used for the SpiderMonkey 140.5 upgrade.</p>
<p><a
href="https://treeherder.mozilla.org/jobs?repo=mozilla-esr140&amp;revision=26eff341874075f35c3daa42b8e29fa54ff62972&amp;selectedTaskRun=Lbe-fRaZSa2C4MQpKEXFcQ.0">https://treeherder.mozilla.org/jobs?repo=mozilla-esr140&amp;revision=26eff341874075f35c3daa42b8e29fa54ff62972&amp;selectedTaskRun=Lbe-fRaZSa2C4MQpKEXFcQ.0</a></p>
<h2>v140 source</h2>
<p>Source code used for the SpiderMonkey 140 upgrade.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/servo/mozjs/commits">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=mozjs&package-manager=cargo&previous-version=0.14.2&new-version=0.14.3)](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 show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@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>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-22 00:47:07 +00:00
dependabot[bot]
b035ec26e1 build(deps): bump portable-atomic from 1.11.1 to 1.12.0 (#41462)
Bumps [portable-atomic](https://github.com/taiki-e/portable-atomic) from
1.11.1 to 1.12.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/taiki-e/portable-atomic/blob/main/CHANGELOG.md">portable-atomic's
changelog</a>.</em></p>
<blockquote>
<h2>[1.12.0] - 2025-12-19</h2>
<ul>
<li>
<p>Fix build error on no-std pre-v6 Arm targets due to the <a
href="https://redirect.github.com/rust-lang/rust/pull/149241">recent
upstream change</a>. (<a
href="83f6f3e495">83f6f3e</a>)</p>
</li>
<li>
<p>Support <code>unsafe-assume-single-core</code> feature /
<code>portable_atomic_unsafe_assume_single_core</code> cfg for targets
with CAS. (<a
href="38e95722dd">38e9572</a>)</p>
</li>
<li>
<p>Improve compile-time detection of s390x target feature. (<a
href="5ae0ef5ed7">5ae0ef5</a>)</p>
</li>
<li>
<p>Documentation improvements. (<a
href="c84f7203ae">c84f720</a>)</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="b5efed05cf"><code>b5efed0</code></a>
Release portable-atomic 1.12.0</li>
<li><a
href="4a02e1d4ac"><code>4a02e1d</code></a>
Update comments</li>
<li><a
href="9ac4c171ed"><code>9ac4c17</code></a>
Update changelog</li>
<li><a
href="61053bf157"><code>61053bf</code></a>
ci: Temporarily disable thumbv5te test</li>
<li><a
href="c84f7203ae"><code>c84f720</code></a>
Update docs</li>
<li><a
href="38e95722dd"><code>38e9572</code></a>
Support assume-single-core for targets with CAS</li>
<li><a
href="ec16910f26"><code>ec16910</code></a>
ci: Test macos-15-intel</li>
<li><a
href="bbe14f7e3e"><code>bbe14f7</code></a>
Disable doc(auto_cfg)</li>
<li><a
href="8e955db1c7"><code>8e955db</code></a>
ci: Ignore linker_messages on aarch64-pc-windows-msvc</li>
<li><a
href="1f34ae1d59"><code>1f34ae1</code></a>
ci: Test riscv64im-unknown-none-elf</li>
<li>Additional commits viewable in <a
href="https://github.com/taiki-e/portable-atomic/compare/v1.11.1...v1.12.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=portable-atomic&package-manager=cargo&previous-version=1.11.1&new-version=1.12.0)](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 show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@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>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-22 00:40:32 +00:00
dependabot[bot]
ec71f2b46a build(deps): bump ryu from 1.0.20 to 1.0.21 (#41464)
Bumps [ryu](https://github.com/dtolnay/ryu) from 1.0.20 to 1.0.21.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dtolnay/ryu/releases">ryu's
releases</a>.</em></p>
<blockquote>
<h2>1.0.21</h2>
<ul>
<li>Documentation improvements</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="aaa2f8d0e1"><code>aaa2f8d</code></a>
Release 1.0.21</li>
<li><a
href="03f8148581"><code>03f8148</code></a>
Remove supported compiler version statement from readme</li>
<li><a
href="b9121ee2dd"><code>b9121ee</code></a>
Update actions/upload-artifact@v5 -&gt; v6</li>
<li><a
href="56ac8ca8a1"><code>56ac8ca</code></a>
Update actions/upload-artifact@v4 -&gt; v5</li>
<li><a
href="23a82904eb"><code>23a8290</code></a>
Raise minimum tested compiler to rust 1.86</li>
<li><a
href="7d5e43a213"><code>7d5e43a</code></a>
Switch from cargo bench to criterion</li>
<li><a
href="e537df3c5a"><code>e537df3</code></a>
Benchmark using e from consts module</li>
<li><a
href="6199a2b11d"><code>6199a2b</code></a>
Switch from test::black_box to std::hint::black_box</li>
<li><a
href="221e3d4b54"><code>221e3d4</code></a>
Resolve uninlined_format_args pedantic clippy lint</li>
<li><a
href="c667b725fd"><code>c667b72</code></a>
Update to 2021 edition</li>
<li>Additional commits viewable in <a
href="https://github.com/dtolnay/ryu/compare/1.0.20...1.0.21">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=ryu&package-manager=cargo&previous-version=1.0.20&new-version=1.0.21)](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 show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@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>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-22 00:33:43 +00:00
dependabot[bot]
6468b76c76 build(deps): bump itoa from 1.0.15 to 1.0.16 (#41463)
Bumps [itoa](https://github.com/dtolnay/itoa) from 1.0.15 to 1.0.16.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dtolnay/itoa/releases">itoa's
releases</a>.</em></p>
<blockquote>
<h2>1.0.16</h2>
<ul>
<li>Synchronize algorithm improvements from libcore (<a
href="https://redirect.github.com/dtolnay/itoa/issues/65">#65</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="4c18677446"><code>4c18677</code></a>
Release 1.0.16</li>
<li><a
href="2e6134dbb5"><code>2e6134d</code></a>
Exclude benchmark dependencies from being compiled by miri</li>
<li><a
href="2c7311bba9"><code>2c7311b</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/itoa/issues/65">#65</a> from
dtolnay/up</li>
<li><a
href="bb76a9cc0f"><code>bb76a9c</code></a>
Update libcore implementation links</li>
<li><a
href="83539d13dc"><code>83539d1</code></a>
Ignore cast_lossless pedantic clippy lint</li>
<li><a
href="4394758d08"><code>4394758</code></a>
Update benchmark chart</li>
<li><a
href="997a4efeec"><code>997a4ef</code></a>
Write last digit without table lookup</li>
<li><a
href="bae1746a34"><code>bae1746</code></a>
Copy fast divmod100 from zmij</li>
<li><a
href="1087e9d028"><code>1087e9d</code></a>
Remove DECIMAL_PAIRS bounds checks</li>
<li><a
href="200d0640f2"><code>200d064</code></a>
Delete unreachable_unchecked hints</li>
<li>Additional commits viewable in <a
href="https://github.com/dtolnay/itoa/compare/1.0.15...1.0.16">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=itoa&package-manager=cargo&previous-version=1.0.15&new-version=1.0.16)](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 show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@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>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-22 00:33:30 +00:00
dependabot[bot]
2a47689030 build(deps): bump async-lock from 3.4.1 to 3.4.2 (#41461)
Bumps [async-lock](https://github.com/smol-rs/async-lock) from 3.4.1 to
3.4.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/smol-rs/async-lock/releases">async-lock's
releases</a>.</em></p>
<blockquote>
<h2>v3.4.2</h2>
<ul>
<li>Bump MSRV to 1.85. (<a
href="https://redirect.github.com/smol-rs/async-lock/issues/103">#103</a>)</li>
<li>Use Waker::noop() to avoid some unsafe code. (<a
href="https://redirect.github.com/smol-rs/async-lock/issues/103">#103</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/smol-rs/async-lock/blob/master/CHANGELOG.md">async-lock's
changelog</a>.</em></p>
<blockquote>
<h1>Version 3.4.2</h1>
<ul>
<li>Bump MSRV to 1.85. (<a
href="https://redirect.github.com/smol-rs/async-lock/issues/103">#103</a>)</li>
<li>Use Waker::noop() to avoid some unsafe code. (<a
href="https://redirect.github.com/smol-rs/async-lock/issues/103">#103</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="7ad5313184"><code>7ad5313</code></a>
v3.4.2</li>
<li><a
href="759c1a5e71"><code>759c1a5</code></a>
Update flume requirement from 0.11.0 to 0.12.0 (<a
href="https://redirect.github.com/smol-rs/async-lock/issues/106">#106</a>)</li>
<li><a
href="78bf47157e"><code>78bf471</code></a>
doc: Fix test by ignoring it on WASM</li>
<li><a
href="ed9752e141"><code>ed9752e</code></a>
m: Use Waker::noop() instead of NOOP_WAKER</li>
<li><a
href="a579f222d9"><code>a579f22</code></a>
m: Don't re-implement ready! and pin!</li>
<li><a
href="c48c7af42d"><code>c48c7af</code></a>
Merge pull request <a
href="https://redirect.github.com/smol-rs/async-lock/issues/102">#102</a>
from atouchet/rd</li>
<li><a
href="33b1acf3a9"><code>33b1acf</code></a>
Fix build badge</li>
<li>See full diff in <a
href="https://github.com/smol-rs/async-lock/compare/v3.4.1...v3.4.2">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=async-lock&package-manager=cargo&previous-version=3.4.1&new-version=3.4.2)](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 show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@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>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-22 00:24:02 +00:00
dependabot[bot]
42ea8040a0 build(deps): bump the servo-media-related group with 12 updates (#41460)
Bumps the servo-media-related group with 12 updates:

| Package | From | To |
| --- | --- | --- |
| [servo-media](https://github.com/servo/media) | ``5b101dc`` |
``0c7edc7`` |
| [servo-media-dummy](https://github.com/servo/media) | ``5b101dc`` |
``0c7edc7`` |
| [servo-media-gstreamer](https://github.com/servo/media) | ``5b101dc``
| ``0c7edc7`` |
| servo-media-audio | ``5b101dc`` | ``0c7edc7`` |
| servo-media-derive | ``5b101dc`` | ``0c7edc7`` |
| servo-media-gstreamer-render | ``5b101dc`` | ``0c7edc7`` |
| servo-media-gstreamer-render-android | ``5b101dc`` | ``0c7edc7`` |
| servo-media-gstreamer-render-unix | ``5b101dc`` | ``0c7edc7`` |
| servo-media-player | ``5b101dc`` | ``0c7edc7`` |
| servo-media-streams | ``5b101dc`` | ``0c7edc7`` |
| servo-media-traits | ``5b101dc`` | ``0c7edc7`` |
| servo-media-webrtc | ``5b101dc`` | ``0c7edc7`` |

Updates `servo-media` from `5b101dc` to `0c7edc7`
<details>
<summary>Commits</summary>
<ul>
<li><a
href="0c7edc70be"><code>0c7edc7</code></a>
GStreamerPlayer should resume playback only if it was playing on suspend
(<a
href="https://redirect.github.com/servo/media/issues/481">#481</a>)</li>
<li>See full diff in <a
href="5b101dcf3b...0c7edc70be">compare
view</a></li>
</ul>
</details>
<br />

Updates `servo-media-dummy` from `5b101dc` to `0c7edc7`
<details>
<summary>Commits</summary>
<ul>
<li><a
href="0c7edc70be"><code>0c7edc7</code></a>
GStreamerPlayer should resume playback only if it was playing on suspend
(<a
href="https://redirect.github.com/servo/media/issues/481">#481</a>)</li>
<li>See full diff in <a
href="5b101dcf3b...0c7edc70be">compare
view</a></li>
</ul>
</details>
<br />

Updates `servo-media-gstreamer` from `5b101dc` to `0c7edc7`
<details>
<summary>Commits</summary>
<ul>
<li><a
href="0c7edc70be"><code>0c7edc7</code></a>
GStreamerPlayer should resume playback only if it was playing on suspend
(<a
href="https://redirect.github.com/servo/media/issues/481">#481</a>)</li>
<li>See full diff in <a
href="5b101dcf3b...0c7edc70be">compare
view</a></li>
</ul>
</details>
<br />

Updates `servo-media-audio` from `5b101dc` to `0c7edc7`

Updates `servo-media-derive` from `5b101dc` to `0c7edc7`

Updates `servo-media-gstreamer-render` from `5b101dc` to `0c7edc7`

Updates `servo-media-gstreamer-render-android` from `5b101dc` to
`0c7edc7`

Updates `servo-media-gstreamer-render-unix` from `5b101dc` to `0c7edc7`

Updates `servo-media-player` from `5b101dc` to `0c7edc7`

Updates `servo-media-streams` from `5b101dc` to `0c7edc7`

Updates `servo-media-traits` from `5b101dc` to `0c7edc7`

Updates `servo-media-webrtc` from `5b101dc` to `0c7edc7`


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 show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-22 00:17:47 +00:00
PaulTreitel
008ffa6965 script: Add remaining AES error messages (#41442)
Fill in the error messages across
`script/dom/subtlecrypto/aes_operations.rs` that were still left as
`None`.

Testing: No tests added as these are just error messages.
Addressing: #40756

---------

Signed-off-by: PaulTreitel <paul.treitel@gmail.com>
2025-12-21 20:55:22 +00:00
WaterWhisperer
6623cc1dbb feat: gamepad feature flag (#41451)
Put the Gamepad API and its supporting infrastructure behind a `gamepad`
feature flag. This allows embedders to opt-out of gamepad support at
compile time to save on binary size and reduce dependencies.

Testing:
1. `./mach build -d` (Gamepad enabled by default)
2. `cargo build -p servoshell --no-default-features --features
"libservo/clipboard,js_jit,max_log_level,webgpu"` (Gamepad Disabled)
3. `cargo build -p servoshell --features "gamepad,webxr,..."` (Gamepad &
WebXR Enabled)

Fixes: #40897

Signed-off-by: WaterWhisperer <waterwhisperer24@qq.com>
2025-12-21 13:18:06 +00:00
Jan Varga
1a6b18937a libservo: Add initial SiteDataManager::site_data API (#41378)
This PR adds an initial `site_data` API to `SiteDataManager`, allowing
embedders to obtain a unified list of sites that have associated site
data.

The implementation introduces supporting infrastructure across storage
and
`SiteDataManager` layers, including a small helper for obtaining
WebStorage
origins and initial support for filtering by storage type. At this
stage,
sites correspond directly to origins, future work will extend this to
higher
level grouping (e.g. domain or eTLD+1).

Testing: Added a new integration test covering site data behavior across
localStorage and sessionStorage.

---------

Signed-off-by: Jan Varga <jvarga@igalia.com>
2025-12-21 12:45:43 +00:00
WaterWhisperer
a45186675a script: Support --local-script-source for module scripts (#41445)
The `substitute_with_local_script` logic has been refactored into a
standalone function to allow reuse in `script_module.rs` when a module
script's source is fetched and decoded.

Testing: Verified manually by running Servo with a local HTTP server and
a module script, confirming that the local file correctly replaces the
remote one when the `--local-script-source` flag is provided.

Fixes: #41433

Signed-off-by: WaterWhisperer <waterwhisperer24@qq.com>
2025-12-21 12:30:22 +00:00
Simon Wülker
b0734b7f2d script: Make same-origin iframes inherit encoding from their container document (#41450)
Testing: new tests start to pass
Part of https://github.com/servo/servo/issues/6414

---------

Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
2025-12-21 11:03:30 +00:00
Simon Wülker
a58d9727f9 script: Use chardetng to guess encoding when all else fails (#41435)
[`chardetng`](https://github.com/hsivonen/chardetng) is the library used
by gecko to guess encodings.

This makes https://intsys.co.jp/game/panepon/p01/index.html load with
the correct encoding. Notably, that site uses shift-jis but has no
encoding declaration of any kind.

Part of https://github.com/servo/servo/issues/6414

---------

Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
2025-12-21 08:53:42 +00:00
Euclid Ye
6964956110 wpt: Disable proxy for test-wpt unless users know what they are doing (#41441)
Nowadays Servo automatically loads system default proxy. It has enabled
my NSA colleagues to visit external networks without modifying transport
layer, whereas `test-wpt` has been failing after it.

We disable the proxy unless users know what they are doing.

Testing: Tested in different physical locations with different proxy
networks.
Fixes: #41440

Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
2025-12-21 07:22:06 +00:00
Servo WPT Sync
bbacb7e119 Sync WPT with upstream (21-12-2025) (#41438)
Automated downstream sync of changes from upstream as of 21-12-2025
[no-wpt-sync]

Signed-off-by: WPT Sync Bot <ghbot+wpt-sync@servo.org>
2025-12-21 01:20:14 +00:00
Martin Robinson
0b1a398347 fonts: Clean up a little bit of code in h advance determination (#41434)
The comment here is out of date and also using `unwrap_or` is a bit more
idiomatic.

Testing: This doesn't change behavior so is covered by existing tests.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
2025-12-20 19:17:36 +00:00
Euclid Ye
f106f1f0d0 servoshell: Properly handle WindowEvent::Focused (#41401)
There are two bugs listed below. Basically, we never ever set
1b0bd11e11/ports/servoshell/running_app_state.rs (L253-L255)
except by WebDriver command, so it's always been `None`.

This PR lets `WindowEvent::Focused` determine `focused_window` for
`HeadedWindow`.
For those without `winit::Window`, such as
Android/OHOS/`HeadlessWindow`, the newly created window is automatically
focused.

Fixes: #41398
Fixes: #41399

---------

Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
2025-12-20 06:44:42 +00:00
Taym Haddadi
a926260fb0 Clone request/response bodies per Fetch spec concept-body-clone (#40825)
Implement clone_body_stream_for_dom_body to follow
https://fetch.spec.whatwg.org/#concept-body-clone, teeing the
ReadableStream and wiring the branched streams back into the original
and cloned bodies.

Use clone_body_stream_for_dom_body in Request::clone_from and
Response::Clone so their body cloning follows the Fetch spec algorithms
for request/response cloning, including the shared body stream.

Testing: more WPT test should pass.

Fixes: #36503

---------

Signed-off-by: Taym Haddadi <haddadi.taym@gmail.com>
2025-12-19 16:45:13 +00:00
Josh Matthews
083ab31ba3 tidy: Add check for feature annotation format. (#41414)
This new lint checks for some easy mistakes to make with the annotation
format.

Testing: New unit tests added.

Signed-off-by: Josh Matthews <josh@joshmatthews.net>
2025-12-19 16:32:34 +00:00
Tim van der Lippe
fbbfea43d6 script: Implement destroying of top-level navigable (#41355)
Another step towards being spec-compatible. Right now
we can't destroy an unsalvagable document during unloading,
as that breaks all kinds of tests. Before that, we need
to update various machinery to handle destroying correctly.

The first one is a top-level navigable, which explicitly
destroys a document after it is unloaded.

Part of #31973

Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
2025-12-19 16:30:49 +00:00
Tim van der Lippe
b8ea560b47 script: Implement quota computation for deferred fetches (#41408)
For all upcoming and already-processed deferred fetches, we now
implement a quota. We don't support policy headers yet to configure the
quota, hence we use the default quota. That's why we have some tests
failing again.

It involves computing which document to compute the quota for, as well
as computing total length of requests. Additionally, the DevTools
computation for headers now uses the same logic for headers as deferred
fetches.

Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
2025-12-19 16:24:18 +00:00
Narfinger
81a13bbbc5 Switch profile and metric to GenericChannel and Callbacks (#41407)
Switch profile and metric to GenericChannel.

Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>

Testing: If it compiles it should work.

---------

Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
2025-12-19 16:16:59 +00:00
Shubham Gupta
0775c70d41 compositing: Rename Painter::webrender to Painter::webrender_renderer (#41400)
Testing: No testing required, its just a variable rename.

Signed-off-by: Shubham Gupta <shubham.gupta@chromium.org>
2025-12-19 10:30:15 +00:00
Martin Robinson
03aec7cf8e servoshell: Rename desktop Window structs to HeadedWindow and HeadlessWindow (#41406)
It's pretty confusing that these two struct implementations of
`PlatformWindow` are named the same thing. This PR renames them to more
accurately reflect what they are.

Testing: This PR just does a simple rename so existing tests should
suffice.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
2025-12-19 10:22:37 +00:00
Simon Wülker
8c344f5641 script: Prescan byte stream to determine encoding before parsing document (#41376)
Servo currently completely ignores `<meta charset>` tags. When we find
one with an encoding that is incompatible to the current one, then we
should reload the page and start over with the new encoding. A common
optimization that has even made its way into the specification is to
wait for a few bytes to arrive and inspect them for `meta` tags, so the
browser is able to use the correct encoding from the very beginng.

In practice, I've run into problems with our WPT harness when reloading
the page after `meta` tags. Therefore, this change implement the
optimization first, so we never have to reload when running WPT. I've
implemented prescanning in a way where we wait for 1024 bytes to arrive
or for one second to pass, whichever one happens first.

This causes a large number of web platform tests to flip around. I've
looked at most of the new failures and I believe they're reasonable.

Testing: New tests start to pass.
Part of https://github.com/servo/servo/issues/6414

---------

Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
2025-12-19 09:54:19 +00:00
Tim van der Lippe
b02465bc53 script: Mark beacon requests as keepalive (#41405)
This is checked if the body is a stream, but the payload calculation
needs to be in a follow-up PR.

Part of #38302

Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
2025-12-19 09:01:36 +00:00
Tim van der Lippe
5b6509f279 script: Implement customElementRegistry support for document.importNode (#41385)
This method now allows you to pass in a custom registry. The registry
isn't used yet for callers, since we don't support scoped registries.
However, as we now pass in the registry to `Node::clone`, we set the
registry when creating elements and cloning them.

As such, various tests start passing where we set the registry. Some
tests started failing, but they rely on scoped registries which we don't
support yet. These tests thus flipped: those that were erroneously
failing are now passing and vice versa.

Part of #34319

Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
2025-12-19 09:01:08 +00:00
Tim van der Lippe
d8bf293828 script: Remove Drop implementation of FetchCanceller (#41384)
Instead, we now explicitly call `.terminate()` and introduce relevant
methods to FetchCanceller.

Follow-up from review in #41345

---------

Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
Signed-off-by: Tim van der Lippe <TimvdLippe@users.noreply.github.com>
Co-authored-by: Josh Matthews <josh@joshmatthews.net>
2025-12-19 08:31:09 +00:00
Euclid Ye
76691c5ce5 wpt: Fix typo when update wpt results from link (#41403)
This just fixes a typo:
`download_run_resultsa_and_then_run_update` ->
`download_run_results_and_then_run_update`

Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
2025-12-19 08:14:03 +00:00
Kingsley Yung
4539c7efde script: Store HashAlgorithmIdentifier as NormalizedAlgorithm (#41395)
For some dictionaries in SubtleCrypto interface, we store the hash field
of `HashAlgorithmIdentifier` type as a `SubtleKeyAlgorithm`. The
conversion to `SubtleKeyAlgorithm` is unnecessary. Moreover,
`SubtleKeyAlgorithm` is not supposed to be used there.

This patch fixes it by simply storing them as the normalized algorithm
given by Step 10.1.3 of normalization [1], for those hash field of
`HashAlgorithmIdentifier` type.

[1]
https://w3c.github.io/webcrypto/#algorithm-normalization-normalize-an-algorithm

Testing: Refactoring. Existing tests suffice.

---------

Signed-off-by: Kingsley Yung <kingsley@kkoyung.dev>
2025-12-19 07:20:09 +00:00
Tim van der Lippe
e35a4c81d7 script: Implement destroying of documents (#41346)
The specification has a dedicated method for destroying
documents. Parts of that method were scattered around
various parts of Servo machinery.

This patch consolidates these steps and follow the spec.
Additionally, it now correctly unloads iframes when
they are removed from a parent document.

As a result, the fetch-later WPT test now passes, as
it relies on the correct ordering of iframe unloading
to verify the fetch-later requests are sent.

Part of #31973

Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
2025-12-19 07:12:46 +00:00
Josh Matthews
56bd2e289e config: Add annotations to preferences controlling web platform features. (#41397)
Per [this zulip
thread](https://servo.zulipchat.com/#narrow/channel/263398-general/topic/Keeping.20track.20of.20incomplete.20features/with/564402373),
these annotations will allow us to generate a page in [the
book](https://github.com/servo/book/) listing incomplete, pref-gated
platform features.

Testing: Comment-only change.

Signed-off-by: Josh Matthews <josh@joshmatthews.net>
2025-12-19 06:59:46 +00:00
Narfinger
1b0bd11e11 Use GenericSender and GenericReceiver for WebDriver (#40987)
- Use the generic channel for webdriver.
- Implement try_receive_timeout for GenericReceiver.

Testing: WPT should still work.

---------

Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
2025-12-19 03:22:02 +00:00
webbeef
f81c19226f script: set a bloom filter when creating a MatchingContext (#41368)
Uses bloom filters in `MatchingContext` to make selector matching more
efficient. This seems to improve Speedometer score a bit.

Testing: no new test for that small optimization.

Signed-off-by: webbeef <me@webbeef.org>
2025-12-19 03:21:28 +00:00
dependabot[bot]
02cda8d9b0 build(deps): bump toml_parser from 1.0.5+spec-1.0.0 to 1.0.6+spec-1.1.0 (#41392)
Bumps [toml_parser](https://github.com/toml-rs/toml) from
1.0.5+spec-1.0.0 to 1.0.6+spec-1.1.0.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="e32c7a2f9b"><code>e32c7a2</code></a>
chore: Release</li>
<li><a
href="df1c3286de"><code>df1c328</code></a>
docs: Update changelog</li>
<li><a
href="b826cf4914"><code>b826cf4</code></a>
feat(edit)!: Allow <code>set_position(None)</code> (<a
href="https://redirect.github.com/toml-rs/toml/issues/1080">#1080</a>)</li>
<li><a
href="8043f20af7"><code>8043f20</code></a>
feat(edit)!: Allow <code>set_position(None)</code></li>
<li><a
href="a02c0db59f"><code>a02c0db</code></a>
feat: Support TOML 1.1 (<a
href="https://redirect.github.com/toml-rs/toml/issues/1079">#1079</a>)</li>
<li><a
href="5cfb838b15"><code>5cfb838</code></a>
feat(edit): Support TOML 1.1</li>
<li><a
href="1eb4d606d3"><code>1eb4d60</code></a>
feat(toml): Support TOML 1.1</li>
<li><a
href="695d7883d8"><code>695d788</code></a>
feat(edit)!: Multi-line inline tables with trailing commas</li>
<li><a
href="cc4f7acd94"><code>cc4f7ac</code></a>
feat(toml): Multi-line inline tables with trailing commas</li>
<li><a
href="539f8c1242"><code>539f8c1</code></a>
feat(datetime): Make seconds optional</li>
<li>Additional commits viewable in <a
href="https://github.com/toml-rs/toml/compare/toml_parser-v1.0.5...toml_parser-v1.0.6">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=toml_parser&package-manager=cargo&previous-version=1.0.5+spec-1.0.0&new-version=1.0.6+spec-1.1.0)](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 show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@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>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-19 01:01:20 +00:00
dependabot[bot]
0d4774afad build(deps): bump tracing-core from 0.1.35 to 0.1.36 (#41391)
Bumps [tracing-core](https://github.com/tokio-rs/tracing) from 0.1.35 to
0.1.36.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tokio-rs/tracing/releases">tracing-core's
releases</a>.</em></p>
<blockquote>
<h2>tracing-core 0.1.36</h2>
<ul>
<li>Fix <code>record_all</code> panic (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3432">#3432</a>)</li>
</ul>
<p><a
href="https://redirect.github.com/tokio-rs/tracing/issues/3432">#3432</a>:
<a
href="https://redirect.github.com/tokio-rs/tracing/pull/3432">tokio-rs/tracing#3432</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="10a9e838a3"><code>10a9e83</code></a>
chore: prepare tracing-core 0.1.36 (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3440">#3440</a>)</li>
<li><a
href="ee82cf92a8"><code>ee82cf9</code></a>
tracing: fix record_all panic (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3432">#3432</a>)</li>
<li><a
href="9978c3663b"><code>9978c36</code></a>
chore: prepare tracing-mock 0.1.0-beta.3 (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3429">#3429</a>)</li>
<li><a
href="cc44064b3a"><code>cc44064</code></a>
chore: prepare tracing-subscriber 0.3.22 (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3428">#3428</a>)</li>
<li><a
href="64e1c8d3ae"><code>64e1c8d</code></a>
chore: prepare tracing 0.1.43 (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3427">#3427</a>)</li>
<li><a
href="7c44f7bb21"><code>7c44f7b</code></a>
tracing: revert &quot;make <code>valueset</code> macro sanitary&quot;
(<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3425">#3425</a>)</li>
<li><a
href="cdaf661c13"><code>cdaf661</code></a>
chore: prepare tracing-mock 0.1.0-beta.2 (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3422">#3422</a>)</li>
<li><a
href="a164fd3021"><code>a164fd3</code></a>
chore: prepare tracing-journald 0.3.2 (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3421">#3421</a>)</li>
<li><a
href="405397b8cc"><code>405397b</code></a>
chore: prepare tracing-appender 0.2.4 (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3420">#3420</a>)</li>
<li><a
href="a9eeed7394"><code>a9eeed7</code></a>
chore: prepare tracing-subscriber 0.3.21 (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3419">#3419</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/tokio-rs/tracing/compare/tracing-core-0.1.35...tracing-core-0.1.36">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=tracing-core&package-manager=cargo&previous-version=0.1.35&new-version=0.1.36)](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 show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@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>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-19 00:46:53 +00:00
dependabot[bot]
37a1ccb374 build(deps): bump tracing from 0.1.43 to 0.1.44 (#41387)
Bumps [tracing](https://github.com/tokio-rs/tracing) from 0.1.43 to
0.1.44.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tokio-rs/tracing/releases">tracing's
releases</a>.</em></p>
<blockquote>
<h2>tracing 0.1.44</h2>
<h3>Fixed</h3>
<ul>
<li>Fix <code>record_all</code> panic (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3432">#3432</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li><code>tracing-core</code>: updated to 0.1.36 (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3440">#3440</a>)</li>
</ul>
<p><a
href="https://redirect.github.com/tokio-rs/tracing/issues/3432">#3432</a>:
<a
href="https://redirect.github.com/tokio-rs/tracing/pull/3432">tokio-rs/tracing#3432</a>
<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3440">#3440</a>:
<a
href="https://redirect.github.com/tokio-rs/tracing/pull/3440">tokio-rs/tracing#3440</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="2d55f6faf9"><code>2d55f6f</code></a>
chore: prepare tracing 0.1.44 (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3439">#3439</a>)</li>
<li><a
href="10a9e838a3"><code>10a9e83</code></a>
chore: prepare tracing-core 0.1.36 (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3440">#3440</a>)</li>
<li><a
href="ee82cf92a8"><code>ee82cf9</code></a>
tracing: fix record_all panic (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3432">#3432</a>)</li>
<li><a
href="9978c3663b"><code>9978c36</code></a>
chore: prepare tracing-mock 0.1.0-beta.3 (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3429">#3429</a>)</li>
<li><a
href="cc44064b3a"><code>cc44064</code></a>
chore: prepare tracing-subscriber 0.3.22 (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3428">#3428</a>)</li>
<li>See full diff in <a
href="https://github.com/tokio-rs/tracing/compare/tracing-0.1.43...tracing-0.1.44">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=tracing&package-manager=cargo&previous-version=0.1.43&new-version=0.1.44)](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 show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@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>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-19 00:23:12 +00:00
Jan Varga
1b81a7d64d net: Align ResourceThreads::clear_cache with clear_cookies (#41323)
This PR aligns `ResourceThreads::clear_cache` with the existing
`clear_cookies` function by waiting for a response synchronously.

Testing: Unit tests continue to pass.

Signed-off-by: Jan Varga <jvarga@igalia.com>
2025-12-18 22:47:22 +00:00
Oriol Brufau
460334e815 layout: Obey min/max constraints when min/max violations sum to zero when flexing items (#41291)
The old logic had the problem that, if the total violation was zero, we
would just freeze all items without clamping their target main size
between the min and max sizes.

This patch refactors the logic to make it simpler.

Testing: Adding new WPT
Fixes: #41289

Signed-off-by: Oriol Brufau <obrufau@igalia.com>
2025-12-18 22:46:49 +00:00
Freya Arbjerg
c2e7484ef7 layout: Fix caret never rendering following a newline (#41330)
Fixes caret rendering when the caret is placed a the start of a line

```
Hello,

{here}World!
```

Also adds a utility function to the `range` crate.

Note that the rendering of the caret on many non-empty lines is still
broken due to the presence of several other bugs

Testing: I ran unit tests. Add a new reftest
Fixes: Part of #40839

---------

Signed-off-by: Freya Arbjerg <git@arbjerg.dev>
2025-12-18 22:31:25 +00:00
Simon Wülker
e53cc61bbc fonts: Panic less in platform/freetype (#40945)
Testing: Covered by existing tests
Part of https://github.com/servo/servo/issues/40744

Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
2025-12-18 20:52:13 +00:00