Commit graph

52588 commits

Author SHA1 Message Date
Jonathan Schwender
5a9034cd5a
dependabot: Specify time and reduce PR limit (#38947)
The merge queue today was greatly affected by many dependabot PRs in the
European morning, which caused a long merge queue for the rest of the
day.
Let's attempt to schedule dependabot updates during less busy times, and
also reduce the limit of open PRs.
[Dependabot
documentation](https://docs.github.com/en/code-security/dependabot/working-with-dependabot/dependabot-options-reference#schedule-)

Testing: No testing.

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2025-08-27 06:22:05 +00:00
Tim van der Lippe
3708d493b9
script: Implement trusted types for Range.createContextualFragment (#38874)
Part of #36258

Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
2025-08-27 06:18:04 +00:00
Tim van der Lippe
d94929dbed
script: Implement trusted types for DOMParser.parseFromString (#38872)
Part of #36258

Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
2025-08-27 06:10:16 +00:00
dependabot[bot]
4e85353472
build(deps): bump clap from 4.5.45 to 4.5.46 (#38958)
Bumps [clap](https://github.com/clap-rs/clap) from 4.5.45 to 4.5.46.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap/releases">clap's
releases</a>.</em></p>
<blockquote>
<h2>v4.5.46</h2>
<h2>[4.5.46] - 2025-08-26</h2>
<h3>Features</h3>
<ul>
<li>Expose <code>StyledStr::push_str</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">clap's
changelog</a>.</em></p>
<blockquote>
<h2>[4.5.46] - 2025-08-26</h2>
<h3>Features</h3>
<ul>
<li>Expose <code>StyledStr::push_str</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="acf9abbc1b"><code>acf9abb</code></a>
chore: Release</li>
<li><a
href="9186a1872c"><code>9186a18</code></a>
docs: Update changelog</li>
<li><a
href="233c316d11"><code>233c316</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/5926">#5926</a>
from sorairolake/feature/value-parser-factory-for-sa...</li>
<li><a
href="13931a25e7"><code>13931a2</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/5923">#5923</a>
from Reverier-Xu/master</li>
<li><a
href="536e29fb85"><code>536e29f</code></a>
feat(builder): Add <code>ValueParserFactory</code> for
<code>Saturating\&lt;T&gt;</code></li>
<li><a
href="45ed71c0f2"><code>45ed71c</code></a>
chore: Avoid using gen for rust 2024 preserved keyword</li>
<li><a
href="5029bb3d11"><code>5029bb3</code></a>
chore: Avoid using <code>gen</code> for rust 2024 preserved keyword</li>
<li><a
href="8a1d59bbb0"><code>8a1d59b</code></a>
chore(deps): Update Rust Stable to v1.85 (<a
href="https://redirect.github.com/clap-rs/clap/issues/5921">#5921</a>)</li>
<li><a
href="9caee534e0"><code>9caee53</code></a>
docs(changelog): Clarify 5.0.0</li>
<li><a
href="cb2352f84a"><code>cb2352f</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/5918">#5918</a>
from epage/test</li>
<li>Additional commits viewable in <a
href="https://github.com/clap-rs/clap/compare/clap_complete-v4.5.45...clap_complete-v4.5.46">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap&package-manager=cargo&previous-version=4.5.45&new-version=4.5.46)](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-08-27 04:35:37 +00:00
dependabot[bot]
c2f664d16e
build(deps): bump data-url from 0.3.1 to 0.3.2 (#38862)
Bumps [data-url](https://github.com/servo/rust-url) from 0.3.1 to 0.3.2.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/servo/rust-url/commits">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=data-url&package-manager=cargo&previous-version=0.3.1&new-version=0.3.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>
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Signed-off-by: Euclid Ye <euclid.ye@huawei.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Euclid Ye <euclid.ye@huawei.com>
2025-08-27 03:22:13 +00:00
Jo Steven Novaryo
10ca3b6fde
layout: Parameterize content box query (#38935)
Parameterize and rename both `Layout::content_box_query` and
`Layout::content_boxes_query` to support the query of rendered padding
area and content area that accounts for transform and scroll. Both of
these query have been misleading for a time since they are using border
box, instead of content box of a Node.

This PR adds a new type `layout_api::BoxAreaType` to be passed from
`ScriptThread` to `LayoutThread` to query the respective area. It is
then used for the query within `IntersectionObserver` to pass several
WPTs.

Testing: Existing WPT Coverage.

---------

Signed-off-by: Jo Steven Novaryo <jo.steven.novaryo@huawei.com>
2025-08-27 02:27:53 +00:00
Jonathan Schwender
32aba08be7
Port StorageThreadMsg to GenericChannel (#38932)
This change includes the following additions to GenericChannel:
- Add a GenericSend trait which is meant to replace the `IpcSend` trait
over time, as channels are migrated. For the time being this means, that
we often need to use `GenericSend::send()` to disambiguate from the
`IpcSend::send` function, until all usages of `IpcSend` have been
replaced.
- Add an OpaqueSender impl for GenericSender
- Add a profiled version of GenericChannel. The profiling is 1:1 the
same as for the existing profiled IPC channel, namely that only the
blocked time during `recv` is measured.


Testing: No functional changes, covered by existing tests
Part of #38912

---------

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2025-08-27 01:58:43 +00:00
Simon Wülker
c4dcd17214
Update image to 0.25 (#38950)
Testing: These changes should be covered by existing web platform tests
and `image`'s own test suite.

---------

Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
2025-08-27 00:51:14 +00:00
dependabot[bot]
ffe690c2dd
build(deps): bump zvariant from 5.6.0 to 5.7.0 (#38954)
Bumps [zvariant](https://github.com/dbus2/zbus) from 5.6.0 to 5.7.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dbus2/zbus/releases">zvariant's
releases</a>.</em></p>
<blockquote>
<h2>🔖 zvariant 5.7.0</h2>
<ul>
<li>🐛 Reduce allocations in OwnedValue::try_from.</li>
<li> Add Value::try_into_owned. Doing as few allocations as
possible.</li>
<li>📝 Document when ObjectPath::into_owned clones.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="0e33c8e4d1"><code>0e33c8e</code></a>
Merge pull request <a
href="https://redirect.github.com/dbus2/zbus/issues/1476">#1476</a> from
zeenix/releases</li>
<li><a
href="f1aa56ac7e"><code>f1aa56a</code></a>
🔖 zb: Release 5.10.0</li>
<li><a
href="b6f6d81d7e"><code>b6f6d81</code></a>
🔖 zv: Release 5.7.0</li>
<li><a
href="70edef0415"><code>70edef0</code></a>
🔖 zu: Release 3.2.1</li>
<li><a
href="62122f5561"><code>62122f5</code></a>
⬆️ micro: Update quick-xml to v0.38.3 (<a
href="https://redirect.github.com/dbus2/zbus/issues/1475">#1475</a>)</li>
<li><a
href="568375fe5d"><code>568375f</code></a>
⬆️ micro: Update url to v2.5.7 (<a
href="https://redirect.github.com/dbus2/zbus/issues/1474">#1474</a>)</li>
<li><a
href="6550f22a90"><code>6550f22</code></a>
Merge pull request <a
href="https://redirect.github.com/dbus2/zbus/issues/1472">#1472</a> from
swick/wip/fix-creds-group-lookup</li>
<li><a
href="c5cd9ccfbb"><code>c5cd9cc</code></a>
🐛 zb: Fall back to no groups rather than erroring out for peer
creds</li>
<li><a
href="a24251f7ba"><code>a24251f</code></a>
⬆️ micro: Update winnow to v0.7.13 (<a
href="https://redirect.github.com/dbus2/zbus/issues/1473">#1473</a>)</li>
<li><a
href="54ec4ba569"><code>54ec4ba</code></a>
⬆️ micro: Update url to v2.5.6 (<a
href="https://redirect.github.com/dbus2/zbus/issues/1471">#1471</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/dbus2/zbus/compare/zvariant-5.6.0...zvariant-5.7.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=zvariant&package-manager=cargo&previous-version=5.6.0&new-version=5.7.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-08-27 00:44:54 +00:00
Simon Wülker
de6feb469a
script: Move operations in window_named_properties::get_own_property_descriptor & webdriver_handlers::clone_an_object into unsafe blocks (#38951)
Testing: Covered by existing tests
Part of https://github.com/servo/servo/issues/35955

Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
2025-08-26 21:48:25 +00:00
Martin Robinson
87fe202ded
script: Integrate animated image updates into ScriptThread event loop (#38941)
Instead of manually triggering `ScriptThread::update_the_rendering`,
have animated images trigger rendering updates via the `ScriptThread`
event loop. This should result in fewer calls to
`ScriptThread::update_the_rendering`.

Testing: This should not change behavior and is thus covered by existing
tests.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Mukilan Thiyagarajan <mukilan@igalia.com>
2025-08-26 17:24:12 +00:00
Martin Robinson
e7a963cca0
script: Generate only a single frame during "update the rendering" (#38858)
Instead of generating a frame for every display list, which might be one
rendered frame per `<iframe>`, generate only a single frame per call to
"update the rendering." This should make rendering more efficient when
there are `<iframe>`s present and also open up optimizations for
non-display list frames.

Testing: This could potentially reduce flashing of content during
rendering
updates, but that is very difficult to test.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
2025-08-26 16:09:10 +00:00
Martin Robinson
4f68508624
script: Move FontContext from Window to GlobalScope (#38918)
This change makes it so that every `GlobalScope` can contain an optional
`FontContext`. This will be necessary for every `GlobalScope` that
accesses canvas. Currently, `FontContext` is created and accessed via
the canvas worker thread, but this means that web fonts are not
available to canvas. This change will eventually make it possible for
canvas to share web fonts with the `Document` that owns them.

Testing: This should not change behavior and is thus covered by existing
tests.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
2025-08-26 15:56:50 +00:00
Gregory Terzian
909ceee830
constellation: send EmbedderMsg::ShutdownComplete as last (#38923)
To help ensure our internal threads have shut-down before we deinit
Servo, the last thing the constellation should do, is sending the
`EmbedderMsg::ShutdownComplete`.

Testing: Manual testing by starting Servo and then closing the window. 
Fixes: Part of https://github.com/servo/servo/issues/30849

---------

Signed-off-by: gterzian <2792687+gterzian@users.noreply.github.com>
Signed-off-by: Gregory Terzian <2792687+gterzian@users.noreply.github.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
2025-08-26 15:22:11 +00:00
Mukilan Thiyagarajan
c75995ec87
Revert "GenericChannel: Migrate compositor channels to GenericChannel (#38782)" (#38940)
This reverts commit fb1c0a4c48.

Previously in `create_compositor_channel`, the [routing callback][1] was
setup so that a message received on the Compositor's IPC receiver will
be
forwarded to the local receiver using the `CompositorProxy` which also
takes care of waking up the event loop. In #38782, this was changed so
that the routing callbacks simply forwards the message directly without
going via the `CompositorProxy`. This breaks behaviours that rely on the
event loop being woken up on message sending, e.g. updating image frames
for animated gifs.

Since the GenericChannel API doesn't allow custom routing callbacks,
revert this change until we figure out a better solution.

[1]:
d2ccce6052/components/servo/lib.rs (L1114)

Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>

Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
2025-08-26 14:16:58 +00:00
Euclid Ye
26fb603d15
script: Fix wrong procedure when deserializing JSValue from mozjs HandleValue (#38943)
Spec: https://w3c.github.io/webdriver/#dfn-internal-json-clone

This PR 
1. moves [clone an
object](https://w3c.github.io/webdriver/#dfn-clone-an-object) to `fn
clone_an_object` to make things clearer.
2. Fixes the bug where we wrongly put `element` and `WindowProxy` as
part of [clone an
object](https://w3c.github.io/webdriver/#dfn-clone-an-object), which
leads to false-positive `JSError` before.
3. Update spec links to correct ones.

Testing: New passing in `{execute_async_script,execute_script}/node.py`

---------

Signed-off-by: Euclid Ye <euclid.ye@huawei.com>
2025-08-26 13:48:48 +00:00
Gregory Terzian
08b9eb818c
layout: Shut down style thread-pool when exiting a content process / shutting down the Constellation (#38924)
To ensure a clean-shutdown of Servo, we need to shutdown our internal
threading before deinit. This shuts down the style thread pool either
using the constellation(in single-process mode), or when a content
process exits.

Testing: Manual testing by opening a window, opening and closing
multiple tabs, and closing the window, with a sleep added before deinit
and a sample taken to ensure the loose threads previously noticed are
gone.
Fixes: part of https://github.com/servo/servo/issues/30849

---------

Signed-off-by: gterzian <2792687+gterzian@users.noreply.github.com>
2025-08-26 13:10:03 +00:00
criskell
7339e2b421
Add scroll tree measurement in IOCompositor (#38922)
Adds a new memory report that aggregates the size of all scroll trees
from within all pipelines for each web view.

Testing: Acessing `about:memory`
Fixes: #38726

---------

Signed-off-by: criskell <96352451+criskell@users.noreply.github.com>
2025-08-26 12:47:04 +00:00
dependabot[bot]
55be274777
build(deps): bump async-compression from 0.4.27 to 0.4.28 (#38930)
Bumps async-compression from 0.4.27 to 0.4.28.


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=async-compression&package-manager=cargo&previous-version=0.4.27&new-version=0.4.28)](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-08-26 12:39:52 +00:00
shuppy
7aad72838a
devtools: Reland test improvements from #38614 minus CI changes (#38933)
#38614 was reverted due to CI flakiness, but it also included several
improvements to the devtools tests. this patch relands those
improvements, described below.

we make three changes that speed up the devtools tests from 73 → 65 → 56
→ 51 seconds:

- we replace the hardcoded sleep(1) after starting servoshell with a
loop that waits until the devtools port is open (this also fixes
intermittent failures when servoshell starts too slowly, especially on
macOS)
- we start the internal web servers once, and reuse them across all
tests
- we run servoshell in headless mode (this is also required because most
CI runners have no GUI)

and we fix two bugs that cause very noisy but not very interesting error
messages:

- in the test code, we use a [context
manager](https://docs.python.org/3/reference/datamodel.html#context-managers)
to ensure the devtools client is disconnected unconditionally, even if
test methods or assert helper methods raise exceptions (this was causing
errors on all platforms)
- in the devtools server, we treat “connection reset” errors when
reading from the client like a normal EOF, rather than as a failure
(this was causing errors on Windows)

on self-hosted linux builds, there are still spurious error messages
like the following, but we can fix them later:

```
error: XDG_RUNTIME_DIR not set in the environment.
libEGL warning: egl: failed to create dri2 screen
```

Testing: this patch improves the devtools tests, but does not change
their coverage
Fixes: part of #36325

---------

Signed-off-by: Delan Azabani <dazabani@igalia.com>
Signed-off-by: atbrakhi <atbrakhi@igalia.com>
Co-authored-by: atbrakhi <atbrakhi@igalia.com>
2025-08-26 10:06:51 +00:00
dependabot[bot]
476c501de7
build(deps): bump regex from 1.11.1 to 1.11.2 (#38937)
Bumps [regex](https://github.com/rust-lang/regex) from 1.11.1 to 1.11.2.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/rust-lang/regex/blob/master/CHANGELOG.md">regex's
changelog</a>.</em></p>
<blockquote>
<h1>1.11.2 (2025-08-24)</h1>
<p>This is a new patch release of <code>regex</code> with some minor
fixes. A larger number
of typo or lint fix patches were merged. Also, we now finally recommend
using
<code>std::sync::LazyLock</code>.</p>
<p>Improvements:</p>
<ul>
<li>[BUG <a
href="https://redirect.github.com/rust-lang/regex/issues/1217">#1217</a>](<a
href="https://redirect.github.com/rust-lang/regex/issues/1217">rust-lang/regex#1217</a>):
Switch recommendation from <code>once_cell</code> to
<code>std::sync::LazyLock</code>.</li>
<li>[BUG <a
href="https://redirect.github.com/rust-lang/regex/issues/1225">#1225</a>](<a
href="https://redirect.github.com/rust-lang/regex/issues/1225">rust-lang/regex#1225</a>):
Add <code>DFA::set_prefilter</code> to <code>regex-automata</code>.</li>
</ul>
<p>Bug fixes:</p>
<ul>
<li>[BUG <a
href="https://redirect.github.com/rust-lang/regex/issues/1165">#1165</a>](<a
href="https://redirect.github.com/rust-lang/regex/pull/1150">rust-lang/regex#1150</a>):
Remove <code>std</code> dependency from
<code>perf-literal-multisubstring</code> crate feature.</li>
<li>[BUG <a
href="https://redirect.github.com/rust-lang/regex/issues/1165">#1165</a>](<a
href="https://redirect.github.com/rust-lang/regex/pull/1165">rust-lang/regex#1165</a>):
Clarify the meaning of <code>(?R)$</code> in the documentation.</li>
<li>[BUG <a
href="https://redirect.github.com/rust-lang/regex/issues/1281">#1281</a>](<a
href="https://redirect.github.com/rust-lang/regex/pull/1281">rust-lang/regex#1281</a>):
Remove <code>fuzz/</code> and <code>record/</code> directories from
published crate on crates.io.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="d0aa586a4c"><code>d0aa586</code></a>
1.11.2</li>
<li><a
href="a3bf4ad84f"><code>a3bf4ad</code></a>
regex-cli-0.2.2</li>
<li><a
href="25a15e272b"><code>25a15e2</code></a>
rure-0.2.3</li>
<li><a
href="45c3da7681"><code>45c3da7</code></a>
regex-lite-0.1.7</li>
<li><a
href="873ed800c5"><code>873ed80</code></a>
regex-automata-0.4.10</li>
<li><a
href="ea834f8e1f"><code>ea834f8</code></a>
regex-syntax-0.8.6</li>
<li><a
href="86836fbe84"><code>86836fb</code></a>
changelog: 1.11.2</li>
<li><a
href="63a26c1a7f"><code>63a26c1</code></a>
cargo: ensure that 'perf' doesn't enable 'std' implicitly (<a
href="https://redirect.github.com/rust-lang/regex/issues/1150">#1150</a>)</li>
<li><a
href="dd96592be2"><code>dd96592</code></a>
doc: clarify CRLF mode effect</li>
<li><a
href="931dae0192"><code>931dae0</code></a>
cargo: point <code>repository</code> metadata to clonable URLs</li>
<li>Additional commits viewable in <a
href="https://github.com/rust-lang/regex/compare/1.11.1...1.11.2">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=regex&package-manager=cargo&previous-version=1.11.1&new-version=1.11.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-08-26 08:44:38 +00:00
dependabot[bot]
15beea5911
build(deps): bump indexmap from 2.10.0 to 2.11.0 (#38934)
Bumps [indexmap](https://github.com/indexmap-rs/indexmap) from 2.10.0 to
2.11.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/indexmap-rs/indexmap/blob/main/RELEASES.md">indexmap's
changelog</a>.</em></p>
<blockquote>
<h2>2.11.0 (2025-08-22)</h2>
<ul>
<li>Added <code>insert_sorted_by</code> and
<code>insert_sorted_by_key</code> methods to <code>IndexMap</code>,
<code>IndexSet</code>, and <code>VacantEntry</code>, like customizable
versions of <code>insert_sorted</code>.</li>
<li>Added <code>is_sorted</code>, <code>is_sorted_by</code>, and
<code>is_sorted_by_key</code> methods to
<code>IndexMap</code> and <code>IndexSet</code>, as well as their
<code>Slice</code> counterparts.</li>
<li>Added <code>sort_by_key</code> and <code>sort_unstable_by_key</code>
methods to <code>IndexMap</code> and
<code>IndexSet</code>, as well as parallel counterparts.</li>
<li>Added <code>replace_index</code> methods to <code>IndexMap</code>,
<code>IndexSet</code>, and <code>VacantEntry</code>
to replace the key (or set value) at a given index.</li>
<li>Added optional <code>sval</code> serialization support.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="91d53adb32"><code>91d53ad</code></a>
Merge pull request <a
href="https://redirect.github.com/indexmap-rs/indexmap/issues/409">#409</a>
from cuviper/release-2.11.0</li>
<li><a
href="cf566a7060"><code>cf566a7</code></a>
Release 2.11.0</li>
<li><a
href="2e173dcf75"><code>2e173dc</code></a>
Merge pull request <a
href="https://redirect.github.com/indexmap-rs/indexmap/issues/408">#408</a>
from cuviper/is_sorted</li>
<li><a
href="e4bb7d03b9"><code>e4bb7d0</code></a>
Add <code>is_sorted</code>{,<code>_by</code>,<code>_by_key</code>}</li>
<li><a
href="0f40489b1a"><code>0f40489</code></a>
Merge pull request <a
href="https://redirect.github.com/indexmap-rs/indexmap/issues/407">#407</a>
from cuviper/sort_by_key</li>
<li><a
href="ab9e461b89"><code>ab9e461</code></a>
Add <code>sort_by_key</code> and <code>sort_unstable_by_key</code></li>
<li><a
href="a468ca41bb"><code>a468ca4</code></a>
Normalize to ASCII apostrophes</li>
<li><a
href="7939ae9c21"><code>7939ae9</code></a>
Merge pull request <a
href="https://redirect.github.com/indexmap-rs/indexmap/issues/406">#406</a>
from cuviper/more-insert_sorted_by</li>
<li><a
href="354345b5a2"><code>354345b</code></a>
Take <em>two</em> entries in <code>insert_sorted_by</code></li>
<li><a
href="314ec7dbda"><code>314ec7d</code></a>
Add quick checks for <code>insert_sorted_by</code></li>
<li>Additional commits viewable in <a
href="https://github.com/indexmap-rs/indexmap/compare/2.10.0...2.11.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=indexmap&package-manager=cargo&previous-version=2.10.0&new-version=2.11.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-08-26 08:17:42 +00:00
dependabot[bot]
442eec2d5f
build(deps): bump zvariant_derive from 5.6.0 to 5.7.0 (#38931)
Bumps [zvariant_derive](https://github.com/dbus2/zbus) from 5.6.0 to
5.7.0.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="32f3a317f3"><code>32f3a31</code></a>
Merge pull request <a
href="https://redirect.github.com/dbus2/zbus/issues/1374">#1374</a> from
zeenix/zbus-release</li>
<li><a
href="731d658792"><code>731d658</code></a>
🔖 zb,zm: Release 5.7.0</li>
<li><a
href="2a4d53d2aa"><code>2a4d53d</code></a>
Merge pull request <a
href="https://redirect.github.com/dbus2/zbus/issues/1373">#1373</a> from
dbus2/zv-release</li>
<li><a
href="8cfdf90e5f"><code>8cfdf90</code></a>
🔖 zv,zd: Release 5.5.2</li>
<li><a
href="b08ec81b9a"><code>b08ec81</code></a>
⬆️ all: Bump micro version in Cargo.lock</li>
<li><a
href="6cced13d58"><code>6cced13</code></a>
Merge pull request <a
href="https://redirect.github.com/dbus2/zbus/issues/1372">#1372</a> from
zeenix/split-zv-tests</li>
<li><a
href="48d397c003"><code>48d397c</code></a>
♻️ zv: Split out zvariant tests into separate files</li>
<li><a
href="222248321c"><code>2222483</code></a>
Merge pull request <a
href="https://redirect.github.com/dbus2/zbus/issues/1369">#1369</a> from
zeenix/undeprecate-dict-derives</li>
<li><a
href="f4e9586cd3"><code>f4e9586</code></a>
📝 book: Remove 2 redundant comments</li>
<li><a
href="c187e2404e"><code>c187e24</code></a>
📝 book: Update FAQ section on dict (de)serialization</li>
<li>Additional commits viewable in <a
href="https://github.com/dbus2/zbus/compare/zbus-5.6.0...zbus-5.7.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=zvariant_derive&package-manager=cargo&previous-version=5.6.0&new-version=5.7.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-08-26 08:03:47 +00:00
Rodion Borovyk
3f6e2679dc
indexeddb: Initialize DB version to zero in unit tests (#38911)
Continuation of https://github.com/servo/servo/pull/38819

Testing: Fixes indexeddb unit tests

---------

Signed-off-by: Rodion Borovyk <rodion.borovyk@gmail.com>
2025-08-26 08:02:40 +00:00
dependabot[bot]
814fa8ff2b
build(deps): bump libdbus-sys from 0.2.5 to 0.2.6 (#38927)
Bumps [libdbus-sys](https://github.com/diwic/dbus-rs) from 0.2.5 to
0.2.6.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/diwic/dbus-rs/commits">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=libdbus-sys&package-manager=cargo&previous-version=0.2.5&new-version=0.2.6)](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-08-26 07:55:54 +00:00
Euclid Ye
8683f97fcc
webdriver: Raise WebView to top when focus (#38909)
- Add a helper function `focus_and_raise_to_top` to `WebView`.
- For webdriver, raise webview to top when focus, to make it consistent
with user interaction.

Testing: Should reduce some flaky TIMEOUT when combined with another PR
later.
Fixes: A small patch before the PR for #38906.

---------

Signed-off-by: Euclid Ye <euclid.ye@huawei.com>
2025-08-26 07:48:38 +00:00
Martin Robinson
01a9b317d4
deps: Upgrade surfman to 0.10.0 (#38914)
Fixes: #38902

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
2025-08-26 07:42:23 +00:00
dependabot[bot]
db401a2641
build(deps): bump jobserver from 0.1.33 to 0.1.34 (#38929)
Bumps [jobserver](https://github.com/rust-lang/jobserver-rs) from 0.1.33
to 0.1.34.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="4bcd123ffc"><code>4bcd123</code></a>
chore: bump to 0.1.34</li>
<li><a
href="8d04a3f7e0"><code>8d04a3f</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/jobserver-rs/issues/113">#113</a>
from bjorn3/miri_fixes</li>
<li><a
href="5f0b099b69"><code>5f0b099</code></a>
Disable helper thread cleanup signals in miri</li>
<li><a
href="c5f6152ead"><code>c5f6152</code></a>
Fix a warning</li>
<li><a
href="588c01d1c5"><code>588c01d</code></a>
Use pipe2 libc wrapper rather than a raw syscall</li>
<li><a
href="fcb91379ba"><code>fcb9137</code></a>
Pipe2 is always available on Linux</li>
<li>See full diff in <a
href="https://github.com/rust-lang/jobserver-rs/compare/0.1.33...0.1.34">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=jobserver&package-manager=cargo&previous-version=0.1.33&new-version=0.1.34)](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-08-26 07:35:19 +00:00
Tim van der Lippe
d38533530b
script: Add remaining unique element event listeners (#38888)
This adds the remaining window as well as specific svg and animation
listeners. The test suite was erroring before, as we don't implement
`SVGAnimationElement` yet. Now, the test gracefully checks if the
interface exists before doing a lookup.

Part of #36258

Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
2025-08-26 06:51:27 +00:00
Jonathan Schwender
c4b2f3af56
script: send StorageThreadMsg directly (#38921)
Remove the intermediate clone of an IpcSender, by directly sending.

Testing: No functional changes

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2025-08-26 06:12:28 +00:00
dependabot[bot]
91c08f49e1
build(deps): bump zvariant_utils from 3.2.0 to 3.2.1 (#38926)
Bumps [zvariant_utils](https://github.com/dbus2/zbus) from 3.2.0 to
3.2.1.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="4d256bdf2a"><code>4d256bd</code></a>
zv,zd: Bugfix release 3.2.1</li>
<li><a
href="3bca315742"><code>3bca315</code></a>
Merge branch 'ease-cargo-publish' into 'main'</li>
<li><a
href="341f943eae"><code>341f943</code></a>
zm,zd: Don't specify version of dev-dep on main crates</li>
<li><a
href="3d77b0a7b2"><code>3d77b0a</code></a>
Merge branch 'fix-struct-enum-deser' into 'main'</li>
<li><a
href="0852989857"><code>0852989</code></a>
zv: More robust check for non-unit enum deserialization</li>
<li><a
href="ebba64e6fb"><code>ebba64e</code></a>
zv: Add a test case for issue#265</li>
<li><a
href="84a28d073e"><code>84a28d0</code></a>
Release 2.0.2</li>
<li><a
href="31ea805186"><code>31ea805</code></a>
Merge branch 'fix-polkit-features' into 'main'</li>
<li><a
href="fc134fb61c"><code>fc134fb</code></a>
zp: Fix build by adding features like zbus</li>
<li><a
href="5b1063a96a"><code>5b1063a</code></a>
Merge branch 'polkit-tokio-support' into 'main'</li>
<li>Additional commits viewable in <a
href="https://github.com/dbus2/zbus/compare/zvariant_utils-3.2.0...zvariant-3.2.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=zvariant_utils&package-manager=cargo&previous-version=3.2.0&new-version=3.2.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-08-26 06:05:01 +00:00
criskell
9082217272
Move unsafe to the wrap method for global objects (#38896)
The method now doesn't need unsafe in its signature because it no longer
accepts unsafe pointers as arguments. We move the unsafe marker to the
method itself.

Testing: I opened the browser and went to google.com; I ran some WPT
(IndexedDB) tests.
Fixes: #38361

---------

Signed-off-by: criskell <96352451+criskell@users.noreply.github.com>
2025-08-25 22:02:55 +00:00
Jonathan Schwender
b9dc228e51
script: Clean-up IpcSend .sender().send() pattern (#38919)
The IpcSend trait defines a `send()` method, so doing .sender().send()
seems like it just adds a useless clone of the sender, when we could
just `send()` directly.
This only cleans up the direct usages of this pattern, there are more
instances, where a helper method is defined, which returns the
IpcSender, and the only usages also just directly call send.

Testing: No functional changes

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2025-08-25 19:16:12 +00:00
Gregory Terzian
ddf5f1eb2f
script: when handling page headers, stop if pipeline closed already (#38739)
Previously, the script-thread would assert the pipeline was closed if no
pending load was found, but it did not check whether the pipeline was
closed before processing the page headers. Since incomplete loads are
removed only when page headers are processed, this means the page
headers were processed even if the pipeline had been closed before the
page headers were available. If the pipeline had been closed as part of
exiting the constellation, it was possible for the constellation to have
exited by the time the page headers became available(since the
script-thread closes a pipeline independently from ongoing navigation
fetches), which would produce a panic on trying to communicate with the
constellation to obtain the browsing context info.

Note: due to the nature of the problem, I cannot verify that this fixes
the crash test, although logically this appears to make sense, and a
couple of days of WPT runs should tell us more.

Testing: A crash test was added; unfortunately the crash was
intermittent.
Fixes: https://github.com/servo/servo/issues/36747

---------

Signed-off-by: gterzian <2792687+gterzian@users.noreply.github.com>
2025-08-25 19:04:39 +00:00
Jonathan Schwender
ebf8a35c84
webdriver: Port WebDriverLoadStatus to Generic Channel (#38915)
Ports the channel for WebDriverLoadStatus to GenericChannel.

Testing: No functional changes - Covered by existing webdriver tests
Part of #38912

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2025-08-25 18:11:03 +00:00
JoeDow
4a19f66c31
script: mark image-related node dirty only when image resource loaded (#38916)
Previously, we would always mark the image-related nodes as dirty
whenever the fetch status of the image resources changed. However, the
corresponding `ImageDisplayItem`s for these image resources are only
generated after the image resources have been fully fetched and decoded.
Therefore, we only mark the corresponding DOM nodes as dirty when the
image resources are completely loaded, thereby reducing the occurrence
of reflows.

Signed-off-by: sharpshooter_pt <ibluegalaxy_taoj@163.com>
2025-08-25 16:22:05 +00:00
Jonathan Schwender
cf13fd4628
constellation: Migrate namespace channel to GenericChannel (#38913)
Migrates the namespace sender and receiver to use GenericChannel

Testing: Covered by existing tests
Part of #38912

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2025-08-25 14:12:27 +00:00
Martin Robinson
e21ea2a135
script: Wrap unsafe code in globalscope.rs in unsafe {} blocks (#38908)
This is a step toward fixing Rust warnings about unsafe code needing to
be wrapped in `unsafe {}` blocks.

Testing: This does not change behavior is thus covered by existing
tests.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
2025-08-25 12:31:51 +00:00
Jonathan Schwender
fb1c0a4c48
GenericChannel: Migrate compositor channels to GenericChannel (#38782)
Besides migrating the channel to GenericChannel, this PR adds
`routed_channel_with_local_sender()` to `generic_channel`. This is for
existing use-cases, where we want to provide both an IPC capable
GenericSender, as well as a crossbeam Sender, for efficient sending if
the sender is in the same process.

Testing: All of our channels should send / receive at least some
messages during WPT tests.

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2025-08-25 11:05:21 +00:00
Jonathan Schwender
7441944e36
generic_channel: Support sending GenericChannel::Crossbeam over IPC (#38873)
In Single-process mode, sending crossbeam channels over an ipc channel
is perfectly safe to do (since everything is in the same process) and
allows us to more easily incrementally port channels.

In Multi-process mode, GenericChannels will always be IPC channels, so
we won't hit the "serialize crossbeam channels" branch (since the only
way to construct channels, checks the process mode). This property is
ensured by `channel()` being the only way to construct a `GenericSender`
and Receiver pair. To achieve this, we make the previously `pub` enum
private, and wrap it in a newtype, so that the type can't be constructed
from outside the module.
To be extra safe, we still check if we are in multiprocess mode or not
during (de-)serialization and emit an error.


Testing: Add a new unit-test to ensure sending GenericSender / Receivers
over an ipc_channel works.

---------

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2025-08-25 08:11:09 +00:00
Martin Robinson
11bea7303d
canvas: Make clippy allow statements more fine-grained in canvas_paint_thread.rs (#38897)
Move `allow(too_many_arguments)` to the functions that have that issue
and remove `allow(unreachable_pattern)`. Since the `Canvas` enum is also
using conditional compilation the default pattern is not necessary.

Testing: This should not change any behavior and thus is covered by
existing tests.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
2025-08-25 05:12:19 +00:00
Jonathan Schwender
ea5d786506
generic_channel: Preserve IPC errors (#38854)
We should not be using `route_ipc_receiver_to_new_crossbeam_receiver` or
similar methods, that `unwrap()` on the ROUTER thread if they encounter
IPC errors. Instead, we now propagate the error to the crossbeam
receiver.
In the GenericChannel::Crossbeam case this means, that we need to use a
`Result<T>` as the data type, even though the Result variant is always
okay, so that the receiver type is the same regardless of `IPC` or not.
This is required, so we have the same channel type, and can pass the
inner crossbeam channel into e.g. `select!`, without having to wrap or
re-implement select.

This also means, that as we switch towards GenericChannel, we will
gradually improve our error handling and eventually remove the existing
panics on IPC errors.

These changes were extracted out of
https://github.com/servo/servo/pull/38782

Testing: Covered by existing tests. No new panics were introduced.

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2025-08-25 04:19:41 +00:00
Sam
2b7186893f
CODEOWNERS: add sagudev for canvas and WebGPU components (#38899)
Not sure how useful it is given that I usually deal with these two
components, but at least it will keep stuff from other people on my
radar.

Testing: Not needed, just github stuff

Signed-off-by: Sam <16504129+sagudev@users.noreply.github.com>
2025-08-25 02:41:24 +00:00
Martin Robinson
3a97d4eed2
fonts: Add more types to fonts_traits (#38898)
This is necessary so that `constellation_traits` can get these types via
a
dependency on `fonts_traits`. This will allow sending IPC channels to
shared
workers so that they can have access to a shared `FontContext` from
`script`.

Testing: This just moves code between crates, so is covered by existing
tests.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
2025-08-24 19:36:59 +00:00
Euclid Ye
0b5bcfbf17
webdriver: Focus when "switch to window" (#38889)
Add logic that was accidentally removed in #38745. Otherwise it is very
weird when using webdriver as a human, as we still stays on the original
tab.

Testing: ~this should not affect any test. Even if the tab is not
"visible" previously, all programmatic interaction works fine.~ Stably
pass `test_history_pushstate` in `back.py` and `forward.py`.

---------

Signed-off-by: Euclid Ye <euclid.ye@huawei.com>
2025-08-24 13:36:58 +00:00
dependabot[bot]
71db9494bb
build(deps): bump url from 2.5.3 to 2.5.6 (#38879)
Bumps [url](https://github.com/servo/rust-url) from 2.5.3 to 2.5.6.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/servo/rust-url/releases">url's
releases</a>.</em></p>
<blockquote>
<h2>v2.5.5</h2>
<h2>What's Changed</h2>
<ul>
<li>ci: downgrade crates when building for Rust 1.67.0 by <a
href="https://github.com/mxinden"><code>@​mxinden</code></a> in <a
href="https://redirect.github.com/servo/rust-url/pull/1003">servo/rust-url#1003</a></li>
<li>ci: run unit tests with sanitizers by <a
href="https://github.com/mxinden"><code>@​mxinden</code></a> in <a
href="https://redirect.github.com/servo/rust-url/pull/1002">servo/rust-url#1002</a></li>
<li>fix small typo by <a
href="https://github.com/hkBst"><code>@​hkBst</code></a> in <a
href="https://redirect.github.com/servo/rust-url/pull/1011">servo/rust-url#1011</a></li>
<li>chore: fix clippy errors on main by <a
href="https://github.com/dsherret"><code>@​dsherret</code></a> in <a
href="https://redirect.github.com/servo/rust-url/pull/1019">servo/rust-url#1019</a></li>
<li>perf: remove heap allocation in parse_query by <a
href="https://github.com/dsherret"><code>@​dsherret</code></a> in <a
href="https://redirect.github.com/servo/rust-url/pull/1020">servo/rust-url#1020</a></li>
<li>perf: slightly improve parsing a port by <a
href="https://github.com/dsherret"><code>@​dsherret</code></a> in <a
href="https://redirect.github.com/servo/rust-url/pull/1022">servo/rust-url#1022</a></li>
<li>perf: improve to_file_path() by <a
href="https://github.com/dsherret"><code>@​dsherret</code></a> in <a
href="https://redirect.github.com/servo/rust-url/pull/1018">servo/rust-url#1018</a></li>
<li>perf: make parse_scheme slightly faster by <a
href="https://github.com/dsherret"><code>@​dsherret</code></a> in <a
href="https://redirect.github.com/servo/rust-url/pull/1025">servo/rust-url#1025</a></li>
<li>update LICENSE-MIT by <a
href="https://github.com/wmjae"><code>@​wmjae</code></a> in <a
href="https://redirect.github.com/servo/rust-url/pull/1029">servo/rust-url#1029</a></li>
<li>perf: url encode path segments in longer string slices by <a
href="https://github.com/dsherret"><code>@​dsherret</code></a> in <a
href="https://redirect.github.com/servo/rust-url/pull/1026">servo/rust-url#1026</a></li>
<li>Disable the default features on serde by <a
href="https://github.com/rilipco"><code>@​rilipco</code></a> in <a
href="https://redirect.github.com/servo/rust-url/pull/1033">servo/rust-url#1033</a></li>
<li>docs: base url relative join by <a
href="https://github.com/tisonkun"><code>@​tisonkun</code></a> in <a
href="https://redirect.github.com/servo/rust-url/pull/1013">servo/rust-url#1013</a></li>
<li>perf: remove heap allocation in parse_host by <a
href="https://github.com/dsherret"><code>@​dsherret</code></a> in <a
href="https://redirect.github.com/servo/rust-url/pull/1021">servo/rust-url#1021</a></li>
<li>Update tests to Unicode 16.0 by <a
href="https://github.com/hsivonen"><code>@​hsivonen</code></a> in <a
href="https://redirect.github.com/servo/rust-url/pull/1045">servo/rust-url#1045</a></li>
<li>Add some some basic functions to <code>Mime</code> by <a
href="https://github.com/mrobinson"><code>@​mrobinson</code></a> in <a
href="https://redirect.github.com/servo/rust-url/pull/1047">servo/rust-url#1047</a></li>
<li>ran <code>cargo clippy --fix -- -Wclippy::use_self</code> by <a
href="https://github.com/mrobinson"><code>@​mrobinson</code></a> in <a
href="https://redirect.github.com/servo/rust-url/pull/1048">servo/rust-url#1048</a></li>
<li>Fix MSRV and clippy CI by <a
href="https://github.com/Manishearth"><code>@​Manishearth</code></a> in
<a
href="https://redirect.github.com/servo/rust-url/pull/1058">servo/rust-url#1058</a></li>
<li>Update <code>Url::domain</code> docs to show that it includes
subdomain by <a
href="https://github.com/supercoolspy"><code>@​supercoolspy</code></a>
in <a
href="https://redirect.github.com/servo/rust-url/pull/1057">servo/rust-url#1057</a></li>
<li>set_hostname should error when encountering colon ':' by <a
href="https://github.com/edgul"><code>@​edgul</code></a> in <a
href="https://redirect.github.com/servo/rust-url/pull/1060">servo/rust-url#1060</a></li>
<li>version bump to 2.5.5 by <a
href="https://github.com/edgul"><code>@​edgul</code></a> in <a
href="https://redirect.github.com/servo/rust-url/pull/1061">servo/rust-url#1061</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/mxinden"><code>@​mxinden</code></a> made
their first contribution in <a
href="https://redirect.github.com/servo/rust-url/pull/1003">servo/rust-url#1003</a></li>
<li><a href="https://github.com/hkBst"><code>@​hkBst</code></a> made
their first contribution in <a
href="https://redirect.github.com/servo/rust-url/pull/1011">servo/rust-url#1011</a></li>
<li><a href="https://github.com/wmjae"><code>@​wmjae</code></a> made
their first contribution in <a
href="https://redirect.github.com/servo/rust-url/pull/1029">servo/rust-url#1029</a></li>
<li><a href="https://github.com/rilipco"><code>@​rilipco</code></a> made
their first contribution in <a
href="https://redirect.github.com/servo/rust-url/pull/1033">servo/rust-url#1033</a></li>
<li><a href="https://github.com/tisonkun"><code>@​tisonkun</code></a>
made their first contribution in <a
href="https://redirect.github.com/servo/rust-url/pull/1013">servo/rust-url#1013</a></li>
<li><a
href="https://github.com/supercoolspy"><code>@​supercoolspy</code></a>
made their first contribution in <a
href="https://redirect.github.com/servo/rust-url/pull/1057">servo/rust-url#1057</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/servo/rust-url/compare/v2.5.4...v2.5.5">https://github.com/servo/rust-url/compare/v2.5.4...v2.5.5</a></p>
<h2>v2.5.4</h2>
<h2>What's Changed</h2>
<ul>
<li>Revert &quot;Normalize URL paths: convert /.//p, /..//p, and //p to
p (<a
href="https://redirect.github.com/servo/rust-url/issues/943">#943</a>)&quot;
by <a href="https://github.com/valenting"><code>@​valenting</code></a>
in <a
href="https://redirect.github.com/servo/rust-url/pull/999">servo/rust-url#999</a></li>
<li>Updates the MSRV to 1.63 required though the libc v0.2.164
dependency</li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/servo/rust-url/compare/v2.5.3...v2.5.4">https://github.com/servo/rust-url/compare/v2.5.3...v2.5.4</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/servo/rust-url/commits">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=url&package-manager=cargo&previous-version=2.5.3&new-version=2.5.6)](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>
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
2025-08-24 11:27:40 +00:00
Ashwin Naren
b4a454aaea
script: Move webaudio DOM interfaces to script/dom/audio/ (#38894)
Moves interfaces defined by the webaudio spec (27 files) to the new
`script/dom/audio/` module from the `script/dom/` module.

Testing: Just a refactor shouldn't need any testing
Fixes: N/A

Signed-off-by: Ashwin Naren <arihant2math@gmail.com>
2025-08-24 05:15:44 +00:00
Ashwin Naren
6ae61d796e
cargo: Remove unused workspace dependencies (#38892)
These aren't referenced anywhere, so they needlessly clutter the
`workspace.dependencies` section.

Testing: N/A
Fixes: None

Signed-off-by: Ashwin Naren <arihant2math@gmail.com>
2025-08-24 04:41:58 +00:00
Servo WPT Sync
fa42968a61
Sync WPT with upstream (24-08-2025) (#38893)
Automated downstream sync of changes from upstream as of 24-08-2025
[no-wpt-sync]

Signed-off-by: WPT Sync Bot <ghbot+wpt-sync@servo.org>
2025-08-24 01:41:18 +00:00
Nico Burns
1fc857865f
Use Tag type from font-types crate to represent opentype tags (#38870)
The `font-types` crate is the tiny type-only base crate of `fontations`.
This uses a strongly typed representation of open type tags, and allows
us to remove our custom macro for creating them.

---------

Signed-off-by: Nico Burns <nico@nicoburns.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
2025-08-23 20:32:47 +00:00