Commit graph

52720 commits

Author SHA1 Message Date
Sebastian C
d3809c1024
fix: Store channel reference in CookieStore to prevent panic on unload (#39171)
CookieStore sets up a route with the resource threads to handle async
communication and needs to later unregister itself when the page
unloads. When attempting to do this in the `Drop` of CookieStore we
panic attempting to retrieve the channel via
`self.global().resource_threads()` because global is already null. This
change stores a reference to the core resource thread in the object to
send the unregister on `Drop`.

Testing: manual testing for crash fix, behavior should be unchanged

Signed-off-by: Sebastian C <sebsebmc@gmail.com>
2025-09-05 18:10:41 +00:00
Sebastian C
7ce0bd8575
script: Remove CookieListItem fields that were removed in the spec (#39170)
The spec removed all fields from CookieListItem except for name and
value

Testing: WPT tests cover this already.

Signed-off-by: Sebastian C <sebsebmc@gmail.com>
2025-09-05 17:47:42 +00:00
Oriol Brufau
5b9a23ebdb
layout: Add method to retrieve only the first LayoutBoxBase of a box (#39165)
A LayoutBox typically has one LayoutBoxBase, or none in the case of
`LayoutBox::DisplayContents`. However, `LayoutBox::InlineLevel` can
contain multiple inline items, each one with its base. But since things
like the style or the fragment flags should be the same for all of them,
getting the first base is sometimes enough.

Testing: not needed, no change in behavior.

Signed-off-by: Oriol Brufau <obrufau@igalia.com>
2025-09-05 16:19:58 +00:00
Oriol Brufau
0f9f507b46
layout: Fix scrollParent to skip ancestors with display: contents (#39153)
When encountering such an ancestor, we were returning null instead of
skipping it.

Testing: Adding new subtest for this. And while I'm at it, another one
for the root element, unrelated to this fix.

Signed-off-by: Oriol Brufau <obrufau@igalia.com>
2025-09-05 14:49:21 +00:00
shanehandley
cf1f64e73f
script: remove wpt test added in #39079 (#39164)
Removes a test related to autoplay and sandboxing which will always
fail.

In https://github.com/servo/servo/pull/39079 I introduced a wpt to test
autoplay functionality, but the test was flawed in its approach -
shortly after merge, myself and @TimvdLippe found that this test would
simulataneously require scripts to be enabled, as well as disabled for
the test to pass.

This slipped past me becuase we hadn't correctly implemented whether
scripting was enabled yet in Servo.

Testing: Removes a single WPT - this test has not been merged upstream.

Signed-off-by: Shane Handley <shanehandley@fastmail.com>
2025-09-05 13:36:16 +00:00
dependabot[bot]
0d58c2be76
build(deps): bump windows-sys from 0.59.0 to 0.61.0 (#39156)
Bumps [windows-sys](https://github.com/microsoft/windows-rs) from 0.59.0
to 0.61.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/microsoft/windows-rs/releases">windows-sys's
releases</a>.</em></p>
<blockquote>
<h2>61</h2>
<p>Major crate updates:</p>
<ul>
<li><code>windows</code> 0.59.0</li>
<li><code>windows-core</code> 0.59.0
<ul>
<li><code>windows-implement</code> 0.59.0</li>
<li><code>windows-interface</code> 0.59.0</li>
</ul>
</li>
<li><code>windows-targets</code> 0.53.0
<ul>
<li><code>windows_i686_msvc</code> 0.53.0</li>
<li><code>windows_x86_64_msvc</code> 0.53.0</li>
<li><code>windows_aarch64_msvc</code> 0.53.0</li>
<li><code>windows_i686_gnu</code> 0.53.0</li>
<li><code>windows_x86_64_gnu</code> 0.53.0</li>
<li><code>windows_i686_gnullvm</code> 0.53.0</li>
<li><code>windows_x86_64_gnullvm</code> 0.53.0</li>
<li><code>windows_aarch64_gnullvm</code> 0.53.0</li>
</ul>
</li>
<li><code>windows-bindgen</code> 0.59.0</li>
<li><code>windows-registry</code> 0.4.0</li>
<li><code>windows-result</code> 0.3.0</li>
<li><code>windows-strings</code> 0.3.0</li>
<li><code>cppwinrt</code> 0.2.0</li>
</ul>
<p>Minor crate updates:</p>
<ul>
<li><code>windows-version</code> 0.1.2</li>
</ul>
<p>Excluded:</p>
<ul>
<li><code>windows-sys</code> 0.59.0</li>
</ul>
<p>Things to keep in mind:</p>
<ul>
<li>
<p>The tag/release names no longer map directly to the crate versions,
so to <a
href="https://github.com/microsoft/windows-rs/tree/master/crates/samples">find
samples</a> for a particular release requires looking at <a
href="https://github.com/microsoft/windows-rs/releases">the releases</a>
page and finding the release that most recently updated a particular
crate.</p>
</li>
<li>
<p>The <code>windows-bindgen</code> crate includes the major code
generation overhaul that brings many improvements - be sure to check out
the PR description for more information. The resulting code gen depends
on the new version of <code>windows-core</code> and its dependencies,
unless you include the <code>--sys</code> option. <a
href="https://redirect.github.com/microsoft/windows-rs/issues/3359">#3359</a></p>
</li>
<li>
<p>The <code>cppwinrt</code> crate constitutes a major update due to
streamlining the error handling. <a
href="https://redirect.github.com/microsoft/windows-rs/issues/3415">#3415</a></p>
</li>
<li>
<p>The <code>windows-registry</code>, <code>windows-strings,</code> and
<code>windows-result</code> crates are also major version updates since
they include small breaking changes.</p>
</li>
<li>
<p>The <code>windows-targets</code> crate finally receives a major
version update, the first in over a year. This is due to <a
href="https://redirect.github.com/microsoft/windows-rs/issues/3359">#3359</a>
and <a
href="https://redirect.github.com/microsoft/windows-rs/issues/3342">#3342</a>
potentially introducing breaking changes. Although unlikely, these
updates introduced sufficient changes that make it hard to ensure that
the <code>windows-targets</code> libs don't break existing code. As
we're updating <code>windows-targets</code> anyway, I took the liberty
to bump the MSRV to 1.60 - to match the latest version of
<code>windows-sys</code> - and remove the old but unused doc macro
feature. Both remained for compatibility with very old dependents of the
<code>windows-targets</code> crate.</p>
</li>
<li>
<p>The <code>windows-version</code> crate receives a minor update to
update its dependency on the <code>windows-targets</code> crate.</p>
</li>
<li>
<p>Beyond these specifics, this update is the culmination of around 6
months worth of work on the <code>windows-rs</code> project. The biggest
improvements comes from the new code generation engine, but many other
improvements are now also available for production. This includes
support for many new lints, warnings, and suggestions provided by the
Rust toolchain; much smaller code gen thanks to deriving many more
traits; more efficient code gen; major improvements to WinRT type system
and implementation support; more robust and consistent error handling;
stock collection and async support; improved support for class
hierarchies; and much more!</p>
</li>
</ul>
<p>In addition to &quot;what's changed&quot; below, check out what's
changed for notes for <a
href="https://github.com/microsoft/windows-rs/releases/tag/0.60.0">0.60.0</a>
and <a
href="https://github.com/microsoft/windows-rs/releases/tag/0.59.0">0.59.0</a>
for additional changes that roll up to the crates published as part of
this release.</p>
<h2>What's Changed</h2>
<ul>
<li>Remove improper_ctypes workaround by <a
href="https://github.com/ChrisDenton"><code>@​ChrisDenton</code></a> in
<a
href="https://redirect.github.com/microsoft/windows-rs/pull/3296">microsoft/windows-rs#3296</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="5888c8c472"><code>5888c8c</code></a>
Release 0.61.0 (<a
href="https://redirect.github.com/microsoft/windows-rs/issues/3418">#3418</a>)</li>
<li><a
href="9911fee2a9"><code>9911fee</code></a>
Improve feature search UX, add dark mode, and update deps (<a
href="https://redirect.github.com/microsoft/windows-rs/issues/3422">#3422</a>)</li>
<li><a
href="eed74532cd"><code>eed7453</code></a>
Update GitHub Actions runners (<a
href="https://redirect.github.com/microsoft/windows-rs/issues/3423">#3423</a>)</li>
<li><a
href="284f18906a"><code>284f189</code></a>
Avoid <code>transmute</code> where possible (<a
href="https://redirect.github.com/microsoft/windows-rs/issues/3421">#3421</a>)</li>
<li><a
href="b35dfd1470"><code>b35dfd1</code></a>
Update web workflow to use external origin (<a
href="https://redirect.github.com/microsoft/windows-rs/issues/3420">#3420</a>)</li>
<li><a
href="3566fca8c5"><code>3566fca</code></a>
Fix provenance in direct32 sample (<a
href="https://redirect.github.com/microsoft/windows-rs/issues/3419">#3419</a>)</li>
<li><a
href="382ea566c2"><code>382ea56</code></a>
Use <code>track_caller</code> to make debugging <code>cppwinrt</code>
build script errors easier (#...</li>
<li><a
href="f09c13292a"><code>f09c132</code></a>
Shorten sample crate names (<a
href="https://redirect.github.com/microsoft/windows-rs/issues/3416">#3416</a>)</li>
<li><a
href="5e8ce09c70"><code>5e8ce09</code></a>
<code>cppwinrt</code> should consistently panic on failure (<a
href="https://redirect.github.com/microsoft/windows-rs/issues/3415">#3415</a>)</li>
<li><a
href="d02c977dc8"><code>d02c977</code></a>
Detect unsupported array parameters (<a
href="https://redirect.github.com/microsoft/windows-rs/issues/3402">#3402</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/microsoft/windows-rs/compare/0.59.0...0.61.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=windows-sys&package-manager=cargo&previous-version=0.59.0&new-version=0.61.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>
Signed-off-by: Euclid Ye <euclid.ye@huawei.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Euclid Ye <euclid.ye@huawei.com>
2025-09-05 10:52:17 +00:00
Narfinger
ed66e0b0ca
servoshell: Replace getopts with bpaf for argument parsing (#37194)
This includes some small refactoring and some small breaking changes as
listed below. Other than these I tried to keep the functionality exactly
the same but because in the old code the parsing and settings of
preferences was intermingled it was difficult to figure out.

Small Breaking:
- Size and resources-path were unused but appeared in the help.
- soft-fail and hard-fail: Soft-fail flag got removed because it is too
  difficult to keep both. The default is now soft-fail and hard-fail can
be enabled.
- The help strings are obviously formatted differently now.
- -V does not work anymore but -v and --version.

Ideally, we want to have the ServoShellPreferences and Preferences be
directly the Argument structure but that needs a bit more discussion
because it would break backwards compatibility with the commandline.

This increases the binary size by ~280kb.

Testing: The testcases are still working but they do not cover much.
I added a unit test for the -p flag because it is the most difficult to
parse in general.
Fixes: This will fix a small number of various parsing misshaps. It will
also show if we are removing an option via unused lint.

Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
2025-09-05 08:17:38 +00:00
Kingsley Yung
b29eab0ffe
script: Re-implement evaluate_key_path_on_value in IndexedDB (#38847)
The current implementation of evaluate_key_path_on_value was translated
from gecko, and it is incomplete. The unimplemented part occurs many
crashes in WPT tests.

This PR re-implements it according to the spec. It should eliminate many
crashed WPT tests, and increase the code readability.

Testing: Update WPT test expectation
Fixes: #38817 partially, and #25325

---------

Signed-off-by: Kingsley Yung <kingsley@kkoyung.dev>
2025-09-05 08:00:07 +00:00
Euclid Ye
ebc1282c7a
webdriver: Update .ini to mark unstable subtests in accept_alert/accept.py, forward/forward.py, perform_actions/pointer_mouse.py, send_alert_text/send.py (#39159)
Few webdriver subtests are quite unstable. But it is an overkill to mark
the entire test as intermittent, as the CI would permit buggy PRs that
sabotage other stable subtests. This PR mark these subtests and closes
the related intermittent issues.

Fixes: #39158
Fixes: #39117
Fixes: #39121
Fixes: #39154

---------

Signed-off-by: Euclid Ye <euclid.ye@huawei.com>
2025-09-05 07:59:19 +00:00
Tim van der Lippe
deb7f802df
Refactor loading methods to align with specification (#39146)
This is in preparation of being able to do mime sniffing on the response
data. For that, we first need to introduce separate methods so that we
can decouple them from process_response. In doing so, we introduce a
NavigationParams which mimics what the spec intents. The spec stores
different data (policy container instead of csp list and response
instead of content-type), but it is similar enough.

Part of #14024

Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
2025-09-05 07:57:36 +00:00
shanehandley
989c0d8994
script: Implement document's active sandboxing flag set (#39079)
Implements document's active sandboxing flags. These are currently
populated only from CSP-derived sandboxing flags for a new document,
when defined in the CSP.

Testing: 1 new pass, and some new wpt's are added to test points in the
spec where these flags influence behaviour.

Signed-off-by: Shane Handley <shanehandley@fastmail.com>
2025-09-05 05:02:23 +00:00
Kingsley Yung
f722419861
webcrypto: Reduce usage of standalone helper functions for JWK format (#39084)
Reduce the reliance on standalone helper functions for handling JWK
format. Instead, those functionalities are now integrated into the
`JsonWebKey` type generated by script_binding, via the local trait
`JsonWebKeyExt`, for internal use.

The `parse_jwk` function remains for now. It will be removed when once
we refactor `SubtleCrypto::ImportKey` to support a more generic approach
across different cryptographic algorithms.

Testing: Refactoring. Existing WPT tests should suffice.

---------

Signed-off-by: Kingsley Yung <kingsley@kkoyung.dev>
2025-09-05 04:08:25 +00:00
dependabot[bot]
ae5b40ebf9
build(deps): bump the egui-related group with 7 updates (#39155)
Bumps the egui-related group with 7 updates:

| Package | From | To |
| --- | --- | --- |
| [egui](https://github.com/emilk/egui) | `0.32.1` | `0.32.2` |
| [egui-winit](https://github.com/emilk/egui) | `0.32.1` | `0.32.2` |
| [egui_glow](https://github.com/emilk/egui) | `0.32.1` | `0.32.2` |
| [ecolor](https://github.com/emilk/egui) | `0.32.1` | `0.32.2` |
| [emath](https://github.com/emilk/egui) | `0.32.1` | `0.32.2` |
| [epaint](https://github.com/emilk/egui) | `0.32.1` | `0.32.2` |
| [epaint_default_fonts](https://github.com/emilk/egui) | `0.32.1` |
`0.32.2` |

Updates `egui` from 0.32.1 to 0.32.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/emilk/egui/releases">egui's
releases</a>.</em></p>
<blockquote>
<h2>0.32.2 - Ui::place, Harness::mask and more bug fixes</h2>
<p>egui is an easy-to-use immediate mode GUI for Rust that runs on both
web and native.</p>
<p>Try it now: <a
href="https://www.egui.rs/">https://www.egui.rs/</a></p>
<p>egui development is sponsored by <a
href="https://www.rerun.io/">Rerun</a>, a startup building an SDK for
visualizing streams of multimodal data.</p>
<h3>Add <code>Ui::place</code></h3>
<p><code>Ui::place</code> is similar to <code>Ui::put</code>, but it
doesn't update the current <code>Ui</code>s cursor. This is very useful
when using the new <code>Atom</code>s or making badge-like widgets.
The following breaks with <code>Ui::put</code> but works just fine with
<code>Ui::place</code>:</p>
<!-- raw HTML omitted -->
<!-- raw HTML omitted -->
<h3>Add <code>Harness::mask</code></h3>
<p><code>Harness::mask</code> allows for simple masking of
<code>Rect</code>s you don't want to be visible in snapshot test images.
The rect will be masked with a ugly color to make it obvious whats going
on:</p>
<!-- raw HTML omitted -->
<h2>egui</h2>
<ul>
<li>Add <code>Ui::place</code>, to place widgets without changing the
cursor <a
href="https://redirect.github.com/emilk/egui/pull/7359">#7359</a> by <a
href="https://github.com/lucasmerlin"><code>@​lucasmerlin</code></a></li>
<li>Fix: <code>SubMenu</code> should not display when ui is disabled <a
href="https://redirect.github.com/emilk/egui/pull/7428">#7428</a> by <a
href="https://github.com/ozwaldorf"><code>@​ozwaldorf</code></a></li>
<li>Remove line breaks when pasting into single line TextEdit <a
href="https://redirect.github.com/emilk/egui/pull/7441">#7441</a> by <a
href="https://github.com/YgorSouza"><code>@​YgorSouza</code></a></li>
<li>Panic mutexes that can't lock for 30 seconds, in debug builds <a
href="https://redirect.github.com/emilk/egui/pull/7468">#7468</a> by <a
href="https://github.com/emilk"><code>@​emilk</code></a></li>
<li>Fix: prevent calendar popup from closing on dropdown change <a
href="https://redirect.github.com/emilk/egui/pull/7409">#7409</a> by <a
href="https://github.com/AStrizh"><code>@​AStrizh</code></a></li>
</ul>
<h2>egui_extras</h2>
<ul>
<li>Fix memory leak when <code>forget_image</code> is called while
loading <a
href="https://redirect.github.com/emilk/egui/pull/7380">#7380</a> by <a
href="https://github.com/Vanadiae"><code>@​Vanadiae</code></a></li>
<li>Fix deadlock in <code>ImageLoader</code>, <code>FileLoader</code>,
<code>EhttpLoader</code> <a
href="https://redirect.github.com/emilk/egui/pull/7494">#7494</a> by <a
href="https://github.com/lucasmerlin"><code>@​lucasmerlin</code></a></li>
</ul>
<h2>egui_kittest</h2>
<ul>
<li>Allow masking widgets in kittest snapshots <a
href="https://redirect.github.com/emilk/egui/pull/7467">#7467</a> by <a
href="https://github.com/lucasmerlin"><code>@​lucasmerlin</code></a></li>
</ul>
<h2>epaint</h2>
<ul>
<li>Panic mutexes that can't lock for 30 seconds, in debug builds <a
href="https://redirect.github.com/emilk/egui/pull/7468">#7468</a> by <a
href="https://github.com/emilk"><code>@​emilk</code></a></li>
<li>Skip zero-length layout job sections <a
href="https://redirect.github.com/emilk/egui/pull/7430">#7430</a> by <a
href="https://github.com/HactarCE"><code>@​HactarCE</code></a></li>
</ul>
<h2>Unsorted commits</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/emilk/egui/blob/0.32.2/CHANGELOG.md">egui's
changelog</a>.</em></p>
<blockquote>
<h2>0.32.2 - 2025-09-04</h2>
<ul>
<li>Fix: <code>SubMenu</code> should not display when ui is disabled <a
href="https://redirect.github.com/emilk/egui/pull/7428">#7428</a> by <a
href="https://github.com/ozwaldorf"><code>@​ozwaldorf</code></a></li>
<li>Remove line breaks when pasting into single line TextEdit <a
href="https://redirect.github.com/emilk/egui/pull/7441">#7441</a> by <a
href="https://github.com/YgorSouza"><code>@​YgorSouza</code></a></li>
<li>Panic mutexes that can't lock for 30 seconds, in debug builds <a
href="https://redirect.github.com/emilk/egui/pull/7468">#7468</a> by <a
href="https://github.com/emilk"><code>@​emilk</code></a></li>
<li>Add <code>Ui::place</code>, to place widgets without changing the
cursor <a
href="https://redirect.github.com/emilk/egui/pull/7359">#7359</a> by <a
href="https://github.com/lucasmerlin"><code>@​lucasmerlin</code></a></li>
<li>Fix: prevent calendar popup from closing on dropdown change <a
href="https://redirect.github.com/emilk/egui/pull/7409">#7409</a> by <a
href="https://github.com/AStrizh"><code>@​AStrizh</code></a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="f49e44e9cc"><code>f49e44e</code></a>
Change version to 0.32.2</li>
<li><a
href="0099ee7a78"><code>0099ee7</code></a>
Update changelogs</li>
<li><a
href="b17d716cdb"><code>b17d716</code></a>
Add track_caller to Mutex and RwLock for deadlock_detection</li>
<li><a
href="94e92a0697"><code>94e92a0</code></a>
Fix: prevent calendar popup from closing on dropdown change (<a
href="https://redirect.github.com/emilk/egui/issues/7409">#7409</a>)</li>
<li><a
href="d0bfc616cf"><code>d0bfc61</code></a>
Skip zero-length layout job sections (<a
href="https://redirect.github.com/emilk/egui/issues/7430">#7430</a>)</li>
<li><a
href="052959d7a3"><code>052959d</code></a>
Add <code>Ui::place</code>, to place widgets without changing the cursor
(<a
href="https://redirect.github.com/emilk/egui/issues/7359">#7359</a>)</li>
<li><a
href="299b43e8bf"><code>299b43e</code></a>
Fix deadlock in <code>ImageLoader</code>, <code>FileLoader</code>,
<code>EhttpLoader</code> (<a
href="https://redirect.github.com/emilk/egui/issues/7494">#7494</a>)</li>
<li><a
href="0ddcc85f0c"><code>0ddcc85</code></a>
Panic mutexes that can't lock for 30 seconds, in debug builds (<a
href="https://redirect.github.com/emilk/egui/issues/7468">#7468</a>)</li>
<li><a
href="18dc9dcff4"><code>18dc9dc</code></a>
Fix memory leak when <code>forget_image</code> is called while loading
(<a
href="https://redirect.github.com/emilk/egui/issues/7380">#7380</a>)</li>
<li><a
href="ae94d815e2"><code>ae94d81</code></a>
Remove line breaks when pasting into single line TextEdit (<a
href="https://redirect.github.com/emilk/egui/issues/7441">#7441</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/emilk/egui/compare/0.32.1...0.32.2">compare
view</a></li>
</ul>
</details>
<br />

Updates `egui-winit` from 0.32.1 to 0.32.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/emilk/egui/releases">egui-winit's
releases</a>.</em></p>
<blockquote>
<h2>0.32.2 - Ui::place, Harness::mask and more bug fixes</h2>
<p>egui is an easy-to-use immediate mode GUI for Rust that runs on both
web and native.</p>
<p>Try it now: <a
href="https://www.egui.rs/">https://www.egui.rs/</a></p>
<p>egui development is sponsored by <a
href="https://www.rerun.io/">Rerun</a>, a startup building an SDK for
visualizing streams of multimodal data.</p>
<h3>Add <code>Ui::place</code></h3>
<p><code>Ui::place</code> is similar to <code>Ui::put</code>, but it
doesn't update the current <code>Ui</code>s cursor. This is very useful
when using the new <code>Atom</code>s or making badge-like widgets.
The following breaks with <code>Ui::put</code> but works just fine with
<code>Ui::place</code>:</p>
<!-- raw HTML omitted -->
<!-- raw HTML omitted -->
<h3>Add <code>Harness::mask</code></h3>
<p><code>Harness::mask</code> allows for simple masking of
<code>Rect</code>s you don't want to be visible in snapshot test images.
The rect will be masked with a ugly color to make it obvious whats going
on:</p>
<!-- raw HTML omitted -->
<h2>egui</h2>
<ul>
<li>Add <code>Ui::place</code>, to place widgets without changing the
cursor <a
href="https://redirect.github.com/emilk/egui/pull/7359">#7359</a> by <a
href="https://github.com/lucasmerlin"><code>@​lucasmerlin</code></a></li>
<li>Fix: <code>SubMenu</code> should not display when ui is disabled <a
href="https://redirect.github.com/emilk/egui/pull/7428">#7428</a> by <a
href="https://github.com/ozwaldorf"><code>@​ozwaldorf</code></a></li>
<li>Remove line breaks when pasting into single line TextEdit <a
href="https://redirect.github.com/emilk/egui/pull/7441">#7441</a> by <a
href="https://github.com/YgorSouza"><code>@​YgorSouza</code></a></li>
<li>Panic mutexes that can't lock for 30 seconds, in debug builds <a
href="https://redirect.github.com/emilk/egui/pull/7468">#7468</a> by <a
href="https://github.com/emilk"><code>@​emilk</code></a></li>
<li>Fix: prevent calendar popup from closing on dropdown change <a
href="https://redirect.github.com/emilk/egui/pull/7409">#7409</a> by <a
href="https://github.com/AStrizh"><code>@​AStrizh</code></a></li>
</ul>
<h2>egui_extras</h2>
<ul>
<li>Fix memory leak when <code>forget_image</code> is called while
loading <a
href="https://redirect.github.com/emilk/egui/pull/7380">#7380</a> by <a
href="https://github.com/Vanadiae"><code>@​Vanadiae</code></a></li>
<li>Fix deadlock in <code>ImageLoader</code>, <code>FileLoader</code>,
<code>EhttpLoader</code> <a
href="https://redirect.github.com/emilk/egui/pull/7494">#7494</a> by <a
href="https://github.com/lucasmerlin"><code>@​lucasmerlin</code></a></li>
</ul>
<h2>egui_kittest</h2>
<ul>
<li>Allow masking widgets in kittest snapshots <a
href="https://redirect.github.com/emilk/egui/pull/7467">#7467</a> by <a
href="https://github.com/lucasmerlin"><code>@​lucasmerlin</code></a></li>
</ul>
<h2>epaint</h2>
<ul>
<li>Panic mutexes that can't lock for 30 seconds, in debug builds <a
href="https://redirect.github.com/emilk/egui/pull/7468">#7468</a> by <a
href="https://github.com/emilk"><code>@​emilk</code></a></li>
<li>Skip zero-length layout job sections <a
href="https://redirect.github.com/emilk/egui/pull/7430">#7430</a> by <a
href="https://github.com/HactarCE"><code>@​HactarCE</code></a></li>
</ul>
<h2>Unsorted commits</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/emilk/egui/blob/0.32.2/CHANGELOG.md">egui-winit's
changelog</a>.</em></p>
<blockquote>
<h2>0.32.2 - 2025-09-04</h2>
<ul>
<li>Fix: <code>SubMenu</code> should not display when ui is disabled <a
href="https://redirect.github.com/emilk/egui/pull/7428">#7428</a> by <a
href="https://github.com/ozwaldorf"><code>@​ozwaldorf</code></a></li>
<li>Remove line breaks when pasting into single line TextEdit <a
href="https://redirect.github.com/emilk/egui/pull/7441">#7441</a> by <a
href="https://github.com/YgorSouza"><code>@​YgorSouza</code></a></li>
<li>Panic mutexes that can't lock for 30 seconds, in debug builds <a
href="https://redirect.github.com/emilk/egui/pull/7468">#7468</a> by <a
href="https://github.com/emilk"><code>@​emilk</code></a></li>
<li>Add <code>Ui::place</code>, to place widgets without changing the
cursor <a
href="https://redirect.github.com/emilk/egui/pull/7359">#7359</a> by <a
href="https://github.com/lucasmerlin"><code>@​lucasmerlin</code></a></li>
<li>Fix: prevent calendar popup from closing on dropdown change <a
href="https://redirect.github.com/emilk/egui/pull/7409">#7409</a> by <a
href="https://github.com/AStrizh"><code>@​AStrizh</code></a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="0099ee7a78"><code>0099ee7</code></a>
Update changelogs</li>
<li><a
href="b17d716cdb"><code>b17d716</code></a>
Add track_caller to Mutex and RwLock for deadlock_detection</li>
<li><a
href="94e92a0697"><code>94e92a0</code></a>
Fix: prevent calendar popup from closing on dropdown change (<a
href="https://redirect.github.com/emilk/egui/issues/7409">#7409</a>)</li>
<li><a
href="d0bfc616cf"><code>d0bfc61</code></a>
Skip zero-length layout job sections (<a
href="https://redirect.github.com/emilk/egui/issues/7430">#7430</a>)</li>
<li><a
href="052959d7a3"><code>052959d</code></a>
Add <code>Ui::place</code>, to place widgets without changing the cursor
(<a
href="https://redirect.github.com/emilk/egui/issues/7359">#7359</a>)</li>
<li><a
href="299b43e8bf"><code>299b43e</code></a>
Fix deadlock in <code>ImageLoader</code>, <code>FileLoader</code>,
<code>EhttpLoader</code> (<a
href="https://redirect.github.com/emilk/egui/issues/7494">#7494</a>)</li>
<li><a
href="0ddcc85f0c"><code>0ddcc85</code></a>
Panic mutexes that can't lock for 30 seconds, in debug builds (<a
href="https://redirect.github.com/emilk/egui/issues/7468">#7468</a>)</li>
<li><a
href="18dc9dcff4"><code>18dc9dc</code></a>
Fix memory leak when <code>forget_image</code> is called while loading
(<a
href="https://redirect.github.com/emilk/egui/issues/7380">#7380</a>)</li>
<li><a
href="ae94d815e2"><code>ae94d81</code></a>
Remove line breaks when pasting into single line TextEdit (<a
href="https://redirect.github.com/emilk/egui/issues/7441">#7441</a>)</li>
<li><a
href="c749f372f7"><code>c749f37</code></a>
fix: <code>SubMenu</code> should not display when ui is disabled (<a
href="https://redirect.github.com/emilk/egui/issues/7428">#7428</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/emilk/egui/compare/0.32.1...0.32.2">compare
view</a></li>
</ul>
</details>
<br />

Updates `egui_glow` from 0.32.1 to 0.32.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/emilk/egui/releases">egui_glow's
releases</a>.</em></p>
<blockquote>
<h2>0.32.2 - Ui::place, Harness::mask and more bug fixes</h2>
<p>egui is an easy-to-use immediate mode GUI for Rust that runs on both
web and native.</p>
<p>Try it now: <a
href="https://www.egui.rs/">https://www.egui.rs/</a></p>
<p>egui development is sponsored by <a
href="https://www.rerun.io/">Rerun</a>, a startup building an SDK for
visualizing streams of multimodal data.</p>
<h3>Add <code>Ui::place</code></h3>
<p><code>Ui::place</code> is similar to <code>Ui::put</code>, but it
doesn't update the current <code>Ui</code>s cursor. This is very useful
when using the new <code>Atom</code>s or making badge-like widgets.
The following breaks with <code>Ui::put</code> but works just fine with
<code>Ui::place</code>:</p>
<!-- raw HTML omitted -->
<!-- raw HTML omitted -->
<h3>Add <code>Harness::mask</code></h3>
<p><code>Harness::mask</code> allows for simple masking of
<code>Rect</code>s you don't want to be visible in snapshot test images.
The rect will be masked with a ugly color to make it obvious whats going
on:</p>
<!-- raw HTML omitted -->
<h2>egui</h2>
<ul>
<li>Add <code>Ui::place</code>, to place widgets without changing the
cursor <a
href="https://redirect.github.com/emilk/egui/pull/7359">#7359</a> by <a
href="https://github.com/lucasmerlin"><code>@​lucasmerlin</code></a></li>
<li>Fix: <code>SubMenu</code> should not display when ui is disabled <a
href="https://redirect.github.com/emilk/egui/pull/7428">#7428</a> by <a
href="https://github.com/ozwaldorf"><code>@​ozwaldorf</code></a></li>
<li>Remove line breaks when pasting into single line TextEdit <a
href="https://redirect.github.com/emilk/egui/pull/7441">#7441</a> by <a
href="https://github.com/YgorSouza"><code>@​YgorSouza</code></a></li>
<li>Panic mutexes that can't lock for 30 seconds, in debug builds <a
href="https://redirect.github.com/emilk/egui/pull/7468">#7468</a> by <a
href="https://github.com/emilk"><code>@​emilk</code></a></li>
<li>Fix: prevent calendar popup from closing on dropdown change <a
href="https://redirect.github.com/emilk/egui/pull/7409">#7409</a> by <a
href="https://github.com/AStrizh"><code>@​AStrizh</code></a></li>
</ul>
<h2>egui_extras</h2>
<ul>
<li>Fix memory leak when <code>forget_image</code> is called while
loading <a
href="https://redirect.github.com/emilk/egui/pull/7380">#7380</a> by <a
href="https://github.com/Vanadiae"><code>@​Vanadiae</code></a></li>
<li>Fix deadlock in <code>ImageLoader</code>, <code>FileLoader</code>,
<code>EhttpLoader</code> <a
href="https://redirect.github.com/emilk/egui/pull/7494">#7494</a> by <a
href="https://github.com/lucasmerlin"><code>@​lucasmerlin</code></a></li>
</ul>
<h2>egui_kittest</h2>
<ul>
<li>Allow masking widgets in kittest snapshots <a
href="https://redirect.github.com/emilk/egui/pull/7467">#7467</a> by <a
href="https://github.com/lucasmerlin"><code>@​lucasmerlin</code></a></li>
</ul>
<h2>epaint</h2>
<ul>
<li>Panic mutexes that can't lock for 30 seconds, in debug builds <a
href="https://redirect.github.com/emilk/egui/pull/7468">#7468</a> by <a
href="https://github.com/emilk"><code>@​emilk</code></a></li>
<li>Skip zero-length layout job sections <a
href="https://redirect.github.com/emilk/egui/pull/7430">#7430</a> by <a
href="https://github.com/HactarCE"><code>@​HactarCE</code></a></li>
</ul>
<h2>Unsorted commits</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/emilk/egui/blob/0.32.2/CHANGELOG.md">egui_glow's
changelog</a>.</em></p>
<blockquote>
<h2>0.32.2 - 2025-09-04</h2>
<ul>
<li>Fix: <code>SubMenu</code> should not display when ui is disabled <a
href="https://redirect.github.com/emilk/egui/pull/7428">#7428</a> by <a
href="https://github.com/ozwaldorf"><code>@​ozwaldorf</code></a></li>
<li>Remove line breaks when pasting into single line TextEdit <a
href="https://redirect.github.com/emilk/egui/pull/7441">#7441</a> by <a
href="https://github.com/YgorSouza"><code>@​YgorSouza</code></a></li>
<li>Panic mutexes that can't lock for 30 seconds, in debug builds <a
href="https://redirect.github.com/emilk/egui/pull/7468">#7468</a> by <a
href="https://github.com/emilk"><code>@​emilk</code></a></li>
<li>Add <code>Ui::place</code>, to place widgets without changing the
cursor <a
href="https://redirect.github.com/emilk/egui/pull/7359">#7359</a> by <a
href="https://github.com/lucasmerlin"><code>@​lucasmerlin</code></a></li>
<li>Fix: prevent calendar popup from closing on dropdown change <a
href="https://redirect.github.com/emilk/egui/pull/7409">#7409</a> by <a
href="https://github.com/AStrizh"><code>@​AStrizh</code></a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="0099ee7a78"><code>0099ee7</code></a>
Update changelogs</li>
<li><a
href="b17d716cdb"><code>b17d716</code></a>
Add track_caller to Mutex and RwLock for deadlock_detection</li>
<li><a
href="94e92a0697"><code>94e92a0</code></a>
Fix: prevent calendar popup from closing on dropdown change (<a
href="https://redirect.github.com/emilk/egui/issues/7409">#7409</a>)</li>
<li><a
href="d0bfc616cf"><code>d0bfc61</code></a>
Skip zero-length layout job sections (<a
href="https://redirect.github.com/emilk/egui/issues/7430">#7430</a>)</li>
<li><a
href="052959d7a3"><code>052959d</code></a>
Add <code>Ui::place</code>, to place widgets without changing the cursor
(<a
href="https://redirect.github.com/emilk/egui/issues/7359">#7359</a>)</li>
<li><a
href="299b43e8bf"><code>299b43e</code></a>
Fix deadlock in <code>ImageLoader</code>, <code>FileLoader</code>,
<code>EhttpLoader</code> (<a
href="https://redirect.github.com/emilk/egui/issues/7494">#7494</a>)</li>
<li><a
href="0ddcc85f0c"><code>0ddcc85</code></a>
Panic mutexes that can't lock for 30 seconds, in debug builds (<a
href="https://redirect.github.com/emilk/egui/issues/7468">#7468</a>)</li>
<li><a
href="18dc9dcff4"><code>18dc9dc</code></a>
Fix memory leak when <code>forget_image</code> is called while loading
(<a
href="https://redirect.github.com/emilk/egui/issues/7380">#7380</a>)</li>
<li><a
href="ae94d815e2"><code>ae94d81</code></a>
Remove line breaks when pasting into single line TextEdit (<a
href="https://redirect.github.com/emilk/egui/issues/7441">#7441</a>)</li>
<li><a
href="c749f372f7"><code>c749f37</code></a>
fix: <code>SubMenu</code> should not display when ui is disabled (<a
href="https://redirect.github.com/emilk/egui/issues/7428">#7428</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/emilk/egui/compare/0.32.1...0.32.2">compare
view</a></li>
</ul>
</details>
<br />

Updates `ecolor` from 0.32.1 to 0.32.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/emilk/egui/releases">ecolor's
releases</a>.</em></p>
<blockquote>
<h2>0.32.2 - Ui::place, Harness::mask and more bug fixes</h2>
<p>egui is an easy-to-use immediate mode GUI for Rust that runs on both
web and native.</p>
<p>Try it now: <a
href="https://www.egui.rs/">https://www.egui.rs/</a></p>
<p>egui development is sponsored by <a
href="https://www.rerun.io/">Rerun</a>, a startup building an SDK for
visualizing streams of multimodal data.</p>
<h3>Add <code>Ui::place</code></h3>
<p><code>Ui::place</code> is similar to <code>Ui::put</code>, but it
doesn't update the current <code>Ui</code>s cursor. This is very useful
when using the new <code>Atom</code>s or making badge-like widgets.
The following breaks with <code>Ui::put</code> but works just fine with
<code>Ui::place</code>:</p>
<!-- raw HTML omitted -->
<!-- raw HTML omitted -->
<h3>Add <code>Harness::mask</code></h3>
<p><code>Harness::mask</code> allows for simple masking of
<code>Rect</code>s you don't want to be visible in snapshot test images.
The rect will be masked with a ugly color to make it obvious whats going
on:</p>
<!-- raw HTML omitted -->
<h2>egui</h2>
<ul>
<li>Add <code>Ui::place</code>, to place widgets without changing the
cursor <a
href="https://redirect.github.com/emilk/egui/pull/7359">#7359</a> by <a
href="https://github.com/lucasmerlin"><code>@​lucasmerlin</code></a></li>
<li>Fix: <code>SubMenu</code> should not display when ui is disabled <a
href="https://redirect.github.com/emilk/egui/pull/7428">#7428</a> by <a
href="https://github.com/ozwaldorf"><code>@​ozwaldorf</code></a></li>
<li>Remove line breaks when pasting into single line TextEdit <a
href="https://redirect.github.com/emilk/egui/pull/7441">#7441</a> by <a
href="https://github.com/YgorSouza"><code>@​YgorSouza</code></a></li>
<li>Panic mutexes that can't lock for 30 seconds, in debug builds <a
href="https://redirect.github.com/emilk/egui/pull/7468">#7468</a> by <a
href="https://github.com/emilk"><code>@​emilk</code></a></li>
<li>Fix: prevent calendar popup from closing on dropdown change <a
href="https://redirect.github.com/emilk/egui/pull/7409">#7409</a> by <a
href="https://github.com/AStrizh"><code>@​AStrizh</code></a></li>
</ul>
<h2>egui_extras</h2>
<ul>
<li>Fix memory leak when <code>forget_image</code> is called while
loading <a
href="https://redirect.github.com/emilk/egui/pull/7380">#7380</a> by <a
href="https://github.com/Vanadiae"><code>@​Vanadiae</code></a></li>
<li>Fix deadlock in <code>ImageLoader</code>, <code>FileLoader</code>,
<code>EhttpLoader</code> <a
href="https://redirect.github.com/emilk/egui/pull/7494">#7494</a> by <a
href="https://github.com/lucasmerlin"><code>@​lucasmerlin</code></a></li>
</ul>
<h2>egui_kittest</h2>
<ul>
<li>Allow masking widgets in kittest snapshots <a
href="https://redirect.github.com/emilk/egui/pull/7467">#7467</a> by <a
href="https://github.com/lucasmerlin"><code>@​lucasmerlin</code></a></li>
</ul>
<h2>epaint</h2>
<ul>
<li>Panic mutexes that can't lock for 30 seconds, in debug builds <a
href="https://redirect.github.com/emilk/egui/pull/7468">#7468</a> by <a
href="https://github.com/emilk"><code>@​emilk</code></a></li>
<li>Skip zero-length layout job sections <a
href="https://redirect.github.com/emilk/egui/pull/7430">#7430</a> by <a
href="https://github.com/HactarCE"><code>@​HactarCE</code></a></li>
</ul>
<h2>Unsorted commits</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/emilk/egui/blob/0.32.2/CHANGELOG.md">ecolor's
changelog</a>.</em></p>
<blockquote>
<h2>0.32.2 - 2025-09-04</h2>
<ul>
<li>Fix: <code>SubMenu</code> should not display when ui is disabled <a
href="https://redirect.github.com/emilk/egui/pull/7428">#7428</a> by <a
href="https://github.com/ozwaldorf"><code>@​ozwaldorf</code></a></li>
<li>Remove line breaks when pasting into single line TextEdit <a
href="https://redirect.github.com/emilk/egui/pull/7441">#7441</a> by <a
href="https://github.com/YgorSouza"><code>@​YgorSouza</code></a></li>
<li>Panic mutexes that can't lock for 30 seconds, in debug builds <a
href="https://redirect.github.com/emilk/egui/pull/7468">#7468</a> by <a
href="https://github.com/emilk"><code>@​emilk</code></a></li>
<li>Add <code>Ui::place</code>, to place widgets without changing the
cursor <a
href="https://redirect.github.com/emilk/egui/pull/7359">#7359</a> by <a
href="https://github.com/lucasmerlin"><code>@​lucasmerlin</code></a></li>
<li>Fix: prevent calendar popup from closing on dropdown change <a
href="https://redirect.github.com/emilk/egui/pull/7409">#7409</a> by <a
href="https://github.com/AStrizh"><code>@​AStrizh</code></a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="f49e44e9cc"><code>f49e44e</code></a>
Change version to 0.32.2</li>
<li><a
href="0099ee7a78"><code>0099ee7</code></a>
Update changelogs</li>
<li><a
href="b17d716cdb"><code>b17d716</code></a>
Add track_caller to Mutex and RwLock for deadlock_detection</li>
<li><a
href="94e92a0697"><code>94e92a0</code></a>
Fix: prevent calendar popup from closing on dropdown change (<a
href="https://redirect.github.com/emilk/egui/issues/7409">#7409</a>)</li>
<li><a
href="d0bfc616cf"><code>d0bfc61</code></a>
Skip zero-length layout job sections (<a
href="https://redirect.github.com/emilk/egui/issues/7430">#7430</a>)</li>
<li><a
href="052959d7a3"><code>052959d</code></a>
Add <code>Ui::place</code>, to place widgets without changing the cursor
(<a
href="https://redirect.github.com/emilk/egui/issues/7359">#7359</a>)</li>
<li><a
href="299b43e8bf"><code>299b43e</code></a>
Fix deadlock in <code>ImageLoader</code>, <code>FileLoader</code>,
<code>EhttpLoader</code> (<a
href="https://redirect.github.com/emilk/egui/issues/7494">#7494</a>)</li>
<li><a
href="0ddcc85f0c"><code>0ddcc85</code></a>
Panic mutexes that can't lock for 30 seconds, in debug builds (<a
href="https://redirect.github.com/emilk/egui/issues/7468">#7468</a>)</li>
<li><a
href="18dc9dcff4"><code>18dc9dc</code></a>
Fix memory leak when <code>forget_image</code> is called while loading
(<a
href="https://redirect.github.com/emilk/egui/issues/7380">#7380</a>)</li>
<li><a
href="ae94d815e2"><code>ae94d81</code></a>
Remove line breaks when pasting into single line TextEdit (<a
href="https://redirect.github.com/emilk/egui/issues/7441">#7441</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/emilk/egui/compare/0.32.1...0.32.2">compare
view</a></li>
</ul>
</details>
<br />

Updates `emath` from 0.32.1 to 0.32.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/emilk/egui/releases">emath's
releases</a>.</em></p>
<blockquote>
<h2>0.32.2 - Ui::place, Harness::mask and more bug fixes</h2>
<p>egui is an easy-to-use immediate mode GUI for Rust that runs on both
web and native.</p>
<p>Try it now: <a
href="https://www.egui.rs/">https://www.egui.rs/</a></p>
<p>egui development is sponsored by <a
href="https://www.rerun.io/">Rerun</a>, a startup building an SDK for
visualizing streams of multimodal data.</p>
<h3>Add <code>Ui::place</code></h3>
<p><code>Ui::place</code> is similar to <code>Ui::put</code>, but it
doesn't update the current <code>Ui</code>s cursor. This is very useful
when using the new <code>Atom</code>s or making badge-like widgets.
The following breaks with <code>Ui::put</code> but works just fine with
<code>Ui::place</code>:</p>
<!-- raw HTML omitted -->
<!-- raw HTML omitted -->
<h3>Add <code>Harness::mask</code></h3>
<p><code>Harness::mask</code> allows for simple masking of
<code>Rect</code>s you don't want to be visible in snapshot test images.
The rect will be masked with a ugly color to make it obvious whats going
on:</p>
<!-- raw HTML omitted -->
<h2>egui</h2>
<ul>
<li>Add <code>Ui::place</code>, to place widgets without changing the
cursor <a
href="https://redirect.github.com/emilk/egui/pull/7359">#7359</a> by <a
href="https://github.com/lucasmerlin"><code>@​lucasmerlin</code></a></li>
<li>Fix: <code>SubMenu</code> should not display when ui is disabled <a
href="https://redirect.github.com/emilk/egui/pull/7428">#7428</a> by <a
href="https://github.com/ozwaldorf"><code>@​ozwaldorf</code></a></li>
<li>Remove line breaks when pasting into single line TextEdit <a
href="https://redirect.github.com/emilk/egui/pull/7441">#7441</a> by <a
href="https://github.com/YgorSouza"><code>@​YgorSouza</code></a></li>
<li>Panic mutexes that can't lock for 30 seconds, in debug builds <a
href="https://redirect.github.com/emilk/egui/pull/7468">#7468</a> by <a
href="https://github.com/emilk"><code>@​emilk</code></a></li>
<li>Fix: prevent calendar popup from closing on dropdown change <a
href="https://redirect.github.com/emilk/egui/pull/7409">#7409</a> by <a
href="https://github.com/AStrizh"><code>@​AStrizh</code></a></li>
</ul>
<h2>egui_extras</h2>
<ul>
<li>Fix memory leak when <code>forget_image</code> is called while
loading <a
href="https://redirect.github.com/emilk/egui/pull/7380">#7380</a> by <a
href="https://github.com/Vanadiae"><code>@​Vanadiae</code></a></li>
<li>Fix deadlock in <code>ImageLoader</code>, <code>FileLoader</code>,
<code>EhttpLoader</code> <a
href="https://redirect.github.com/emilk/egui/pull/7494">#7494</a> by <a
href="https://github.com/lucasmerlin"><code>@​lucasmerlin</code></a></li>
</ul>
<h2>egui_kittest</h2>
<ul>
<li>Allow masking widgets in kittest snapshots <a
href="https://redirect.github.com/emilk/egui/pull/7467">#7467</a> by <a
href="https://github.com/lucasmerlin"><code>@​lucasmerlin</code></a></li>
</ul>
<h2>epaint</h2>
<ul>
<li>Panic mutexes that can't lock for 30 seconds, in debug builds <a
href="https://redirect.github.com/emilk/egui/pull/7468">#7468</a> by <a
href="https://github.com/emilk"><code>@​emilk</code></a></li>
<li>Skip zero-length layout job sections <a
href="https://redirect.github.com/emilk/egui/pull/7430">#7430</a> by <a
href="https://github.com/HactarCE"><code>@​HactarCE</code></a></li>
</ul>
<h2>Unsorted commits</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/emilk/egui/blob/0.32.2/CHANGELOG.md">emath's
changelog</a>.</em></p>
<blockquote>
<h2>0.32.2 - 2025-09-04</h2>
<ul>
<li>Fix: <code>SubMenu</code> should not display when ui is disabled <a
href="https://redirect.github.com/emilk/egui/pull/7428">#7428</a> by <a
href="https://github.com/ozwaldorf"><code>@​ozwaldorf</code></a></li>
<li>Remove line breaks when pasting into single line TextEdit <a
href="https://redirect.github.com/emilk/egui/pull/7441">#7441</a> by <a
href="https://github.com/YgorSouza"><code>@​YgorSouza</code></a></li>
<li>Panic mutexes that can't lock for 30 seconds, in debug builds <a
href="https://redirect.github.com/emilk/egui/pull/7468">#7468</a> by <a
href="https://github.com/emilk"><code>@​emilk</code></a></li>
<li>Add <code>Ui::place</code>, to place widgets without changing the
cursor <a
href="https://redirect.github.com/emilk/egui/pull/7359">#7359</a> by <a
href="https://github.com/lucasmerlin"><code>@​lucasmerlin</code></a></li>
<li>Fix: prevent calendar popup from closing on dropdown change <a
href="https://redirect.github.com/emilk/egui/pull/7409">#7409</a> by <a
href="https://github.com/AStrizh"><code>@​AStrizh</code></a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="0099ee7a78"><code>0099ee7</code></a>
Update changelogs</li>
<li><a
href="b17d716cdb"><code>b17d716</code></a>
Add track_caller to Mutex and RwLock for deadlock_detection</li>
<li><a
href="94e92a0697"><code>94e92a0</code></a>
Fix: prevent calendar popup from closing on dropdown change (<a
href="https://redirect.github.com/emilk/egui/issues/7409">#7409</a>)</li>
<li><a
href="d0bfc616cf"><code>d0bfc61</code></a>
Skip zero-length layout job sections (<a
href="https://redirect.github.com/emilk/egui/issues/7430">#7430</a>)</li>
<li><a
href="052959d7a3"><code>052959d</code></a>
Add <code>Ui::place</code>, to place widgets without changing the cursor
(<a
href="https://redirect.github.com/emilk/egui/issues/7359">#7359</a>)</li>
<li><a
href="299b43e8bf"><code>299b43e</code></a>
Fix deadlock in <code>ImageLoader</code>, <code>FileLoader</code>,
<code>EhttpLoader</code> (<a
href="https://redirect.github.com/emilk/egui/issues/7494">#7494</a>)</li>
<li><a
href="0ddcc85f0c"><code>0ddcc85</code></a>
Panic mutexes that can't lock for 30 seconds, in debug builds (<a
href="https://redirect.github.com/emilk/egui/issues/7468">#7468</a>)</li>
<li><a
href="18dc9dcff4"><code>18dc9dc</code></a>
Fix memory leak when <code>forget_image</code> is called while loading
(<a
href="https://redirect.github.com/emilk/egui/issues/7380">#7380</a>)</li>
<li><a
href="ae94d815e2"><code>ae94d81</code></a>
Remove line breaks when pasting into single line TextEdit (<a
href="https://redirect.github.com/emilk/egui/issues/7441">#7441</a>)</li>
<li><a
href="c749f372f7"><code>c749f37</code></a>
fix: <code>SubMenu</code> should not display when ui is disabled (<a
href="https://redirect.github.com/emilk/egui/issues/7428">#7428</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/emilk/egui/compare/0.32.1...0.32.2">compare
view</a></li>
</ul>
</details>
<br />

Updates `epaint` from 0.32.1 to 0.32.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/emilk/egui/releases">epaint's
releases</a>.</em></p>
<blockquote>
<h2>0.32.2 - Ui::place, Harness::mask and more bug fixes</h2>
<p>egui is an easy-to-use immediate mode GUI for Rust that runs on both
web and native.</p>
<p>Try it now: <a
href="https://www.egui.rs/">https://www.egui.rs/</a></p>
<p>egui development is sponsored by <a
href="https://www.rerun.io/">Rerun</a>, a startup building an SDK for
visualizing streams of multimodal data.</p>
<h3>Add <code>Ui::place</code></h3>
<p><code>Ui::place</code> is similar to <code>Ui::put</code>, but it
doesn't update the current <code>Ui</code>s cursor. This is very useful
when using the new <code>Atom</code>s or making badge-like widgets.
The following breaks with <code>Ui::put</code> but works just fine with
<code>Ui::place</code>:</p>
<!-- raw HTML omitted -->
<!-- raw HTML omitted -->
<h3>Add <code>Harness::mask</code></h3>
<p><code>Harness::mask</code> allows for simple masking of
<code>Rect</code>s you don't want to be visible in snapshot test images.
The rect will be masked with a ugly color to make it obvious whats going
on:</p>
<!-- raw HTML omitted -->
<h2>egui</h2>
<ul>
<li>Add <code>Ui::place</code>, to place widgets without changing the
cursor <a
href="https://redirect.github.com/emilk/egui/pull/7359">#7359</a> by <a
href="https://github.com/lucasmerlin"><code>@​lucasmerlin</code></a></li>
<li>Fix: <code>SubMenu</code> should not display when ui is disabled <a
href="https://redirect.github.com/emilk/egui/pull/7428">#7428</a> by <a
href="https://github.com/ozwaldorf"><code>@​ozwaldorf</code></a></li>
<li>Remove line breaks when pasting into single line TextEdit <a
href="https://redirect.github.com/emilk/egui/pull/7441">#7441</a> by <a
href="https://github.com/YgorSouza"><code>@​YgorSouza</code></a></li>
<li>Panic mutexes that can't lock for 30 seconds, in debug builds <a
href="https://redirect.github.com/emilk/egui/pull/7468">#7468</a> by <a
href="https://github.com/emilk"><code>@​emilk</code></a></li>
<li>Fix: prevent calendar popup from closing on dropdown change <a
href="https://redirect.github.com/emilk/egui/pull/7409">#7409</a> by <a
href="https://github.com/AStrizh"><code>@​AStrizh</code></a></li>
</ul>
<h2>egui_extras</h2>
<ul>
<li>Fix memory leak when <code>forget_image</code> is called while
loading <a
href="https://redirect.github.com/emilk/egui/pull/7380">#7380</a> by <a
href="https://github.com/Vanadiae"><code>@​Vanadiae</code></a></li>
<li>Fix deadlock in <code>ImageLoader</code>, <code>FileLoader</code>,
<code>EhttpLoader</code> <a
href="https://redirect.github.com/emilk/egui/pull/7494">#7494</a> by <a
href="https://github.com/lucasmerlin"><code>@​lucasmerlin</code></a></li>
</ul>
<h2>egui_kittest</h2>
<ul>
<li>Allow masking widgets in kittest snapshots <a
href="https://redirect.github.com/emilk/egui/pull/7467">#7467</a> by <a
href="https://github.com/lucasmerlin"><code>@​lucasmerlin</code></a></li>
</ul>
<h2>epaint</h2>
<ul>
<li>Panic mutexes that can't lock for 30 seconds, in debug builds <a
href="https://redirect.github.com/emilk/egui/pull/7468">#7468</a> by <a
href="https://github.com/emilk"><code>@​emilk</code></a></li>
<li>Skip zero-length layout job sections <a
href="https://redirect.github.com/emilk/egui/pull/7430">#7430</a> by <a
href="https://github.com/HactarCE"><code>@​HactarCE</code></a></li>
</ul>
<h2>Unsorted commits</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/emilk/egui/blob/0.32.2/CHANGELOG.md">epaint's
changelog</a>.</em></p>
<blockquote>
<h2>0.32.2 - 2025-09-04</h2>
<ul>
<li>Fix: <code>SubMenu</code> should not display when ui is disabled <a
href="https://redirect.github.com/emilk/egui/pull/7428">#7428</a> by <a
href="https://github.com/ozwaldorf"><code>@​ozwaldorf</code></a></li>
<li>Remove line breaks when pasting into single line TextEdit <a
href="https://redirect.github.com/emilk/egui/pull/7441">#7441</a> by <a
href="https://github.com/YgorSouza"><code>@​YgorSouza</code></a></li>
<li>Panic mutexes that can't lock for 30 seconds, in debug builds <a
href="https://redirect.github.com/emilk/egui/pull/7468">#7468</a> by <a
href="https://github.com/emilk"><code>@​emilk</code></a></li>
<li>Add <code>Ui::place</code>, to place widgets without changing the
cursor <a
href="https://redirect.github.com/emilk/egui/pull/7359">#7359</a> by <a
href="https://github.com/lucasmerlin"><code>@​lucasmerlin</code></a></li>
<li>Fix: prevent calendar popup from closing on dropdown change <a
href="https://redirect.github.com/emilk/egui/pull/7409">#7409</a> by <a
href="https://github.com/AStrizh"><code>@​AStrizh</code></a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="0099ee7a78"><code>0099ee7</code></a>
Update changelogs</li>
<li><a
href="b17d716cdb"><code>b17d716</code></a>
Add track_caller to Mutex and RwLock for deadlock_detection</li>
<li><a
href="94e92a0697"><code>94e92a0</code></a>
Fix: prevent calendar popup from closing on dropdown change (<a
href="https://redirect.github.com/emilk/egui/issues/7409">#7409</a>)</li>
<li><a
href="d0bfc616cf"><code>d0bfc61</code></a>
Skip zero-length layout job sections (<a
href="https://redirect.github.com/emilk/egui/issues/7430">#7430</a>)</li>
<li><a
href="052959d7a3"><code>052959d</code></a>
Add <code>Ui::place</code>, to place widgets without changing the cursor
(<a
href="https://redirect.github.com/emilk/egui/issues/7359">#7359</a>)</li>
<li><a
href="299b43e8bf"><code>299b43e</code></a>
Fix deadlock in <code>ImageLoader</code>, <code>FileLoader</code>,
<code>EhttpLoader</code> (<a
href="https://redirect.github.com/emilk/egui/issues/7494">#7494</a>)</li>
<li><a
href="0ddcc85f0c"><code>0ddcc85</code></a>
Panic mutexes that can't lock for 30 seconds, in debug builds (<a
href="https://redirect.github.com/emilk/egui/issues/7468">#7468</a>)</li>
<li><a
href="18dc9dcff4"><code>18dc9dc</code></a>
Fix memory leak when <code>forget_image</code> is called while loading
(<a
href="https://redirect.github.com/emilk/egui/issues/7380">#7380</a>)</li>
<li><a
href="ae94d815e2"><code>ae94d81</code></a>
Remove line breaks when pasting into single line TextEdit (<a
href="https://redirect.github.com/emilk/egui/issues/7441">#7441</a>)</li>
<li><a
href="c749f372f7"><code>c749f37</code></a>
fix: <code>SubMenu</code> should not display when ui is disabled (<a
href="https://redirect.github.com/emilk/egui/issues/7428">#7428</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/emilk/egui/compare/0.32.1...0.32.2">compare
view</a></li>
</ul>
</details>
<br />

Updates `epaint_default_fonts` from 0.32.1 to 0.32.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/emilk/egui/releases">epaint_default_fonts's
releases</a>.</em></p>
<blockquote>
<h2>0.32.2 - Ui::place, Harness::mask and more bug fixes</h2>
<p>egui is an easy-to-use immediate mode GUI for Rust that runs on both
web and native.</p>
<p>Try it now: <a
href="https://www.egui.rs/">https://www.egui.rs/</a></p>
<p>egui development is sponsored by <a
href="https://www.rerun.io/">Rerun</a>, a startup building an SDK for
visualizing streams of multimodal data.</p>
<h3>Add <code>Ui::place</code></h3>
<p><code>Ui::place</code> is similar to <code>Ui::put</code>, but it
doesn't update the current <code>Ui</code>s cursor. This is very useful
when using the new <code>Atom</code>s or making badge-like widgets.
The following breaks with <code>Ui::put</code> but works just fine with
<code>Ui::place</code>:</p>
<!-- raw HTML omitted -->
<!-- raw HTML omitted -->
<h3>Add <code>Harness::mask</code></h3>
<p><code>Harness::mask</code> allows for simple masking of
<code>Rect</code>s you don't want to be visible in snapshot test images.
The rect will be masked with a ugly color to make it obvious whats going
on:</p>
<!-- raw HTML omitted -->
<h2>egui</h2>
<ul>
<li>Add <code>Ui::place</code>, to place widgets without changing the
cursor <a
href="https://redirect.github.com/emilk/egui/pull/7359">#7359</a> by <a
href="https://github.com/lucasmerlin"><code>@​lucasmerlin</code></a></li>
<li>Fix: <code>SubMenu</code> should not display when ui is disabled <a
href="https://redirect.github.com/emilk/egui/pull/7428">#7428</a> by <a
href="https://github.com/ozwaldorf"><code>@​ozwaldorf</code></a></li>
<li>Remove line breaks when pasting into single line TextEdit <a
href="https://redirect.github.com/emilk/egui/pull/7441">#7441</a> by <a
href="https://github.com/YgorSouza"><code>@​YgorSouza</code></a></li>
<li>Panic mutexes that can't lock for 30 seconds, in debug builds <a
href="https://redirect.github.com/emilk/egui/pull/7468">#7468</a> by <a
href="https://github.com/emilk"><code>@​emilk</code></a></li>
<li>Fix: prevent calendar popup from closing on dropdown change <a
href="https://redirect.github.com/emilk/egui/pull/7409">#7409</a> by <a
href="https://github.com/AStrizh"><code>@​AStrizh</code></a></li>
</ul>
<h2>egui_extras</h2>
<ul>
<li>Fix memory leak when <code>forget_image</code> is called while
loading <a
href="https://redirect.github.com/emilk/egui/pull/7380">#7380</a> by <a
href="https://github.com/Vanadiae"><code>@​Vanadiae</code></a></li>
<li>Fix deadlock in <code>ImageLoader</code>, <code>FileLoader</code>,
<code>EhttpLoader</code> <a
href="https://redirect.github.com/emilk/egui/pull/7494">#7494</a> by <a
href="https://github.com/lucasmerlin"><code>@​lucasmerlin</code></a></li>
</ul>
<h2>egui_kittest</h2>
<ul>
<li>Allow masking widgets in kittest snapshots <a
href="https://redirect.github.com/emilk/egui/pull/7467">#7467</a> by <a
href="https://github.com/lucasmerlin"><code>@​lucasmerlin</code></a></li>
</ul>
<h2>epaint</h2>
<ul>
<li>Panic mutexes that can't lock for 30 seconds, in debug builds <a
href="https://redirect.github.com/emilk/egui/pull/7468">#7468</a> by <a
href="https://github.com/emilk"><code>@​emilk</code></a></li>
<li>Skip zero-length layout job sections <a
href="https://redirect.github.com/emilk/egui/pull/7430">#7430</a> by <a
href="https://github.com/HactarCE"><code>@​HactarCE</code></a></li>
</ul>
<h2>Unsorted commits</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/emilk/egui/blob/0.32.2/CHANGELOG.md">epaint_default_fonts's
changelog</a>.</em></p>
<blockquote>
<h2>0.32.2 - 2025-09-04</h2>
<ul>
<li>Fix: <code>SubMenu</code> should not display when ui is disabled <a
href="https://redirect.github.com/emilk/egui/pull/7428">#7428</a> by <a
href="https://github.com/ozwaldorf"><code>@​ozwaldorf</code></a></li>
<li>Remove line breaks when pasting into single line TextEdit <a
href="https://redirect.github.com/emilk/egui/pull/7441">#7441</a> by <a
href="https://github.com/YgorSouza"><code>@​YgorSouza</code></a></li>
<li>Panic mutexes that can't lock for 30 seconds, in debug builds <a
href="https://redirect.github.com/emilk/egui/pull/7468">#7468</a> by <a
href="https://github.com/emilk"><code>@​emilk</code></a></li>
<li>Add <code>Ui::place</code>, to place widgets without changing the
cursor <a
href="https://redirect.github.com/emilk/egui/pull/7359">#7359</a> by <a
href="https://github.com/lucasmerlin"><code>@​lucasmerlin</code></a></li>
<li>Fix: prevent calendar popup from closing on dropdown change <a
href="https://redirect.github.com/emilk/egui/pull/7409">#7409</a> by <a
href="https://github.com/AStrizh"><code>@​AStrizh</code></a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="0099ee7a78"><code>0099ee7</code></a>
Update changelogs</li>
<li><a
href="b17d716cdb"><code>b17d716</code></a>
Add track_caller to Mutex and RwLock for deadlock_detection</li>
<li><a
href="94e92a0697"><code>94e92a0</code></a>
Fix: prevent calendar popup from closing on dropdown change (<a
href="https://redirect.github.com/emilk/egui/issues/7409">#7409</a>)</li>
<li><a
href="d0bfc616cf"><code>d0bfc61</code></a>
Skip zero-length layout job sections (<a
href="https://redirect.github.com/emilk/egui/issues/7430">#7430</a>)</li>
<li><a
href="052959d7a3"><code>052959d</code></a>
Add <code>Ui::place</code>, to place widgets without changing the cursor
(<a
href="https://redirect.github.com/emilk/egui/issues/7359">#7359</a>)</li>
<li><a
href="299b43e8bf"><code>299b43e</code></a>
Fix deadlock in <code>ImageLoader</code>, <code>FileLoader</code>,
<code>EhttpLoader</code> (<a
href="https://redirect.github.com/emilk/egui/issues/7494">#7494</a>)</li>
<li><a
href="0ddcc85f0c"><code>0ddcc85</code></a>
Panic mutexes that can't lock for 30 seconds, in debug builds (<a
href="https://redirect.github.com/emilk/egui/issues/7468">#7468</a>)</li>
<li><a
href="18dc9dcff4"><code>18dc9dc</code></a>
Fix memory leak when <code>forget_image</code> is called while loading
(<a
href="https://redirect.github.com/emilk/egui/issues/7380">#7380</a>)</li>
<li><a
href="ae94d815e2"><code>ae94d81</code></a>
Remove line breaks when pasting into single line TextEdit (<a
href="https://redirect.github.com/emilk/egui/issues/7441">#7441</a>)</li>
<li><a
href="c749f372f7"><code>c749f37</code></a>
fix: <code>SubMenu</code> should not display when ui is disabled (<a
href="https://redirect.github.com/emilk/egui/issues/7428">#7428</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/emilk/egui/compare/0.32.1...0.32.2">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot 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-09-05 00:42:39 +00:00
Martin Robinson
e5fbb31452
script: Make get_property_jsval a safe function (#39137)
Accept the safe `JSContext` wraper to this function so that it can be
safe. Some callers also become safe as well.

Testing: This does not change behavior and is thus covered by existing
tests.
Fixes: #39129.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
2025-09-04 23:11:15 +00:00
Oriol Brufau
589a750cac
Upgrade Stylo to 2025-09-02 (#39150)
This continues #38429

Changelog:
- Upstream:
ec21cec41c...fd700321cc
- Servo fixups:
30f8960428...64d8521f1b

Stylo tracking issue: https://github.com/servo/stylo/issues/236

---------

Signed-off-by: Oriol Brufau <obrufau@igalia.com>
2025-09-04 21:28:24 +00:00
Shubham Gupta
40ced5bb61
Enable viewport <meta> tag support for mobile platforms only (#39133)
Enable viewport `<meta>` tag support for mobile platforms only.

_Reference:_
[web_preferences.h](https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/public/common/web_preferences/web_preferences.h;l=158?)
_Todo: Enable for when requested desktop site:_
[web_contents_impl.cc](https://source.chromium.org/chromium/chromium/src/+/main:content/browser/web_contents/web_contents_impl.cc;l=3752?)

Testing: Tested Manually
Fixes: #39002

Signed-off-by: Shubham Gupta <shubham13297@gmail.com>
2025-09-04 19:14:53 +00:00
lumiscosity
c7ca281f44
script: implement setMatrixValue for DOMMatrix (#39148)
Even more progress on the geometry suite. Almost there!

Testing: Covered by WPT (css/geometry).

Signed-off-by: lumiscosity <averyrudelphe@gmail.com>
2025-09-04 19:02:54 +00:00
dependabot[bot]
f3a8ad30f1
build(deps): bump cc from 1.2.34 to 1.2.35 (#39136)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.34 to 1.2.35.
<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.34...cc-v1.2.35">1.2.35</a>
- 2025-09-01</h2>
<h3>Fixed</h3>
<ul>
<li>fix building for aarch64-apple-visionos-sim on nightly (<a
href="https://redirect.github.com/rust-lang/cc-rs/pull/1534">#1534</a>)</li>
<li>fix tests apple_sdkroot_wrong (<a
href="https://redirect.github.com/rust-lang/cc-rs/pull/1530">#1530</a>)</li>
</ul>
<h3>Other</h3>
<ul>
<li>Regenerate target info (<a
href="https://redirect.github.com/rust-lang/cc-rs/pull/1536">#1536</a>)</li>
<li>Optimize Tool::to_command (<a
href="https://redirect.github.com/rust-lang/cc-rs/pull/1535">#1535</a>)</li>
<li>Extract find-msvc-tools (<a
href="https://redirect.github.com/rust-lang/cc-rs/pull/1531">#1531</a>)</li>
<li>Add prefer_clang_cl_over_msvc (<a
href="https://redirect.github.com/rust-lang/cc-rs/pull/1516">#1516</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="9b4389c788"><code>9b4389c</code></a>
chore(cc): release v1.2.35 (<a
href="https://redirect.github.com/rust-lang/cc-rs/issues/1533">#1533</a>)</li>
<li><a
href="36948abc38"><code>36948ab</code></a>
Fix semver-checks: Add back functino <code>windows_registry::find</code>
(<a
href="https://redirect.github.com/rust-lang/cc-rs/issues/1539">#1539</a>)</li>
<li><a
href="0a1c2a3b70"><code>0a1c2a3</code></a>
ci: fix crates-io trusted publishing in publish.yml (<a
href="https://redirect.github.com/rust-lang/cc-rs/issues/1538">#1538</a>)</li>
<li><a
href="6a4c4f4459"><code>6a4c4f4</code></a>
ci: use trusted publishing in publish.yml (<a
href="https://redirect.github.com/rust-lang/cc-rs/issues/1537">#1537</a>)</li>
<li><a
href="0c9e396170"><code>0c9e396</code></a>
Regenerate target info (<a
href="https://redirect.github.com/rust-lang/cc-rs/issues/1536">#1536</a>)</li>
<li><a
href="2b264636b9"><code>2b26463</code></a>
Optimize Tool::to_command (<a
href="https://redirect.github.com/rust-lang/cc-rs/issues/1535">#1535</a>)</li>
<li><a
href="1a9c4ca1dc"><code>1a9c4ca</code></a>
fix building for aarch64-apple-visionos-sim on nightly (<a
href="https://redirect.github.com/rust-lang/cc-rs/issues/1534">#1534</a>)</li>
<li><a
href="409b35c645"><code>409b35c</code></a>
Refactor: Extract windows-find-tools (<a
href="https://redirect.github.com/rust-lang/cc-rs/issues/1531">#1531</a>)</li>
<li><a
href="5781d3ea4f"><code>5781d3e</code></a>
fix tests apple_sdkroot_wrong (<a
href="https://redirect.github.com/rust-lang/cc-rs/issues/1530">#1530</a>)</li>
<li><a
href="d264a7c07a"><code>d264a7c</code></a>
Add prefer_clang_cl_over_msvc (<a
href="https://redirect.github.com/rust-lang/cc-rs/issues/1516">#1516</a>)</li>
<li>See full diff in <a
href="https://github.com/rust-lang/cc-rs/compare/cc-v1.2.34...cc-v1.2.35">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.34&new-version=1.2.35)](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-09-04 14:25:08 +00:00
Kingsley Yung
925b7c5dad
script: Queue a microtask in wait_for_all of promise type (#39108)
In the wait-for-all algorithm of the IDL promise type, we need to queue
a microtask to perform successSteps given « » if total is 0.

This step was previously implemented in a workaround, which perform
successSteps immediately.

This patch properly queue the microtask, and remove the workaround.

Testing: Refactoring only. Existing tests are enough.
Fixes: #37259

---------

Signed-off-by: Kingsley Yung <kingsley@kkoyung.dev>
2025-09-04 13:50:41 +00:00
dependabot[bot]
ae2d9674e8
build(deps): bump log from 0.4.27 to 0.4.28 (#39135)
Bumps [log](https://github.com/rust-lang/log) from 0.4.27 to 0.4.28.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/rust-lang/log/releases">log's
releases</a>.</em></p>
<blockquote>
<h2>0.4.28</h2>
<h2>What's Changed</h2>
<ul>
<li>ci: drop really old trick and ensure MSRV for all feature combo by
<a href="https://github.com/tisonkun"><code>@​tisonkun</code></a> in <a
href="https://redirect.github.com/rust-lang/log/pull/676">rust-lang/log#676</a></li>
<li>chore: fix some typos in comment by <a
href="https://github.com/xixishidibei"><code>@​xixishidibei</code></a>
in <a
href="https://redirect.github.com/rust-lang/log/pull/677">rust-lang/log#677</a></li>
<li>Unhide <code>#[derive(Debug)]</code> in example by <a
href="https://github.com/ZylosLumen"><code>@​ZylosLumen</code></a> in <a
href="https://redirect.github.com/rust-lang/log/pull/688">rust-lang/log#688</a></li>
<li>Chore: delete compare_exchange method for AtomicUsize on platforms
without atomics by <a
href="https://github.com/HaoliangXu"><code>@​HaoliangXu</code></a> in <a
href="https://redirect.github.com/rust-lang/log/pull/690">rust-lang/log#690</a></li>
<li>Add <code>increment_severity()</code> and
<code>decrement_severity()</code> methods for <code>Level</code> and
<code>LevelFilter</code> by <a
href="https://github.com/nebkor"><code>@​nebkor</code></a> in <a
href="https://redirect.github.com/rust-lang/log/pull/692">rust-lang/log#692</a></li>
<li>Prepare for 0.4.28 release by <a
href="https://github.com/KodrAus"><code>@​KodrAus</code></a> in <a
href="https://redirect.github.com/rust-lang/log/pull/695">rust-lang/log#695</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/xixishidibei"><code>@​xixishidibei</code></a>
made their first contribution in <a
href="https://redirect.github.com/rust-lang/log/pull/677">rust-lang/log#677</a></li>
<li><a
href="https://github.com/ZylosLumen"><code>@​ZylosLumen</code></a> made
their first contribution in <a
href="https://redirect.github.com/rust-lang/log/pull/688">rust-lang/log#688</a></li>
<li><a
href="https://github.com/HaoliangXu"><code>@​HaoliangXu</code></a> made
their first contribution in <a
href="https://redirect.github.com/rust-lang/log/pull/690">rust-lang/log#690</a></li>
<li><a href="https://github.com/nebkor"><code>@​nebkor</code></a> made
their first contribution in <a
href="https://redirect.github.com/rust-lang/log/pull/692">rust-lang/log#692</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/rust-lang/log/compare/0.4.27...0.4.28">https://github.com/rust-lang/log/compare/0.4.27...0.4.28</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/rust-lang/log/blob/master/CHANGELOG.md">log's
changelog</a>.</em></p>
<blockquote>
<h2>[0.4.28] - 2025-09-02</h2>
<h2>What's Changed</h2>
<ul>
<li>ci: drop really old trick and ensure MSRV for all feature combo by
<a href="https://github.com/tisonkun"><code>@​tisonkun</code></a> in <a
href="https://redirect.github.com/rust-lang/log/pull/676">rust-lang/log#676</a></li>
<li>Chore: delete compare_exchange method for AtomicUsize on platforms
without atomics by <a
href="https://github.com/HaoliangXu"><code>@​HaoliangXu</code></a> in <a
href="https://redirect.github.com/rust-lang/log/pull/690">rust-lang/log#690</a></li>
<li>Add <code>increment_severity()</code> and
<code>decrement_severity()</code> methods for <code>Level</code> and
<code>LevelFilter</code> by <a
href="https://github.com/nebkor"><code>@​nebkor</code></a> in <a
href="https://redirect.github.com/rust-lang/log/pull/692">rust-lang/log#692</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/xixishidibei"><code>@​xixishidibei</code></a>
made their first contribution in <a
href="https://redirect.github.com/rust-lang/log/pull/677">rust-lang/log#677</a></li>
<li><a
href="https://github.com/ZylosLumen"><code>@​ZylosLumen</code></a> made
their first contribution in <a
href="https://redirect.github.com/rust-lang/log/pull/688">rust-lang/log#688</a></li>
<li><a
href="https://github.com/HaoliangXu"><code>@​HaoliangXu</code></a> made
their first contribution in <a
href="https://redirect.github.com/rust-lang/log/pull/690">rust-lang/log#690</a></li>
<li><a href="https://github.com/nebkor"><code>@​nebkor</code></a> made
their first contribution in <a
href="https://redirect.github.com/rust-lang/log/pull/692">rust-lang/log#692</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/rust-lang/log/compare/0.4.27...0.4.28">https://github.com/rust-lang/log/compare/0.4.27...0.4.28</a></p>
<h3>Notable Changes</h3>
<ul>
<li>MSRV is bumped to 1.61.0 in <a
href="https://redirect.github.com/rust-lang/log/pull/676">rust-lang/log#676</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="6e1735597b"><code>6e17355</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/log/issues/695">#695</a>
from rust-lang/cargo/0.4.28</li>
<li><a
href="57719dbef5"><code>57719db</code></a>
focus on user-facing source changes in the changelog</li>
<li><a
href="e0630c6485"><code>e0630c6</code></a>
prepare for 0.4.28 release</li>
<li><a
href="60829b11f5"><code>60829b1</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/log/issues/692">#692</a>
from nebkor/up-and-down</li>
<li><a
href="95d44f8af5"><code>95d44f8</code></a>
change names of log-level-changing methods to be more descriptive</li>
<li><a
href="2b63dfada6"><code>2b63dfa</code></a>
Add <code>up()</code> and <code>down()</code> methods for
<code>Level</code> and <code>LevelFilter</code></li>
<li><a
href="3aa1359e92"><code>3aa1359</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/log/issues/690">#690</a>
from HaoliangXu/master</li>
<li><a
href="1091f2cbd2"><code>1091f2c</code></a>
Chore:delete compare_exchange method for AtomicUsize on platforms</li>
<li><a
href="24c5f44efd"><code>24c5f44</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/log/issues/688">#688</a>
from ZylosLumen/patch-1</li>
<li><a
href="4498495467"><code>4498495</code></a>
Unhide <code>#[derive(Debug)]</code> in example</li>
<li>Additional commits viewable in <a
href="https://github.com/rust-lang/log/compare/0.4.27...0.4.28">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=log&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-09-04 10:30:51 +00:00
Martin Robinson
fa7d6d4004
script: Modify Element::determine_scroll_into_view_position to take a ScrollingBox (#39107)
There is no need to separate the two kinds of scrolling boxes into
`Element` and `Viewport` more than once. This also eliminates a
potentially panicking `unwrap()`. 

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

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
2025-09-04 08:44:57 +00:00
Tim van der Lippe
dab195ca80
Hookup mime classifier to main document loader (#39109)
While we don't perform any sniffing yet, it does now
check all relevant mime types. Before, we would only
check specific versions of specific mime types. However,
the specification is more elaborate, which MimeClassifier
already handles.

There are two new test failures, but they actually fail
in the same way in other browsers. These tests are still
being discussed what the correct behavior should be [1]

Part of #14024

[1]:
https://github.com/whatwg/mimesniff/issues/189#issuecomment-2081559661

---------

Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
2025-09-04 08:30:55 +00:00
lumiscosity
a44b98c358
script: preserve 2D on DOMMatrix invert (#39113)
More small geometry fixes.

Testing: Covered by WPT
(css/geometry/DOMMatrix-invert-preserves-2d.html)

---------

Signed-off-by: lumiscosity <averyrudelphe@gmail.com>
2025-09-04 07:08:37 +00:00
Euclid Ye
ff8be71335
font: Remove unused FontTable constructor for Windows (#39130)
#39112 restricts accessibility for some font functions, exposing some
functions that haven't been used for a long time. Now it is detected by
Lint as dead code.

Signed-off-by: Euclid Ye <euclid.ye@huawei.com>
2025-09-04 06:25:59 +00:00
Tim van der Lippe
fc6bee8b81
Move Element::matches_environment to MediaList (#39034)
It more logically matches `MediaList`, and it allows us to
call this method with a document. This is required when
parsing Link headers, as they don't have an associated
element, but they do have a document.

Part of #35035

Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
2025-09-04 06:21:01 +00:00
Josh Matthews
aac6aa6c70
servoshell: Add button to toggle experimental web platform features. (#39125)
This makes it easier to experiment with the impact of experimental
features when browsing around in servoshell. The toggle is global and
causes all webviews to reload with the new preference values.

Testing: Manually tested; no UI testing for servoshell.

Not enabled:
<img width="317" height="82" alt="Screenshot 2025-09-03 at 9 34 30 PM"
src="https://github.com/user-attachments/assets/ca521ad5-ce1b-434e-a0c3-ea1b75d76d53"
/>

Enabled:
<img width="320" height="82" alt="Screenshot 2025-09-03 at 9 34 36 PM"
src="https://github.com/user-attachments/assets/7b6529b5-1055-4ae0-924a-96d57e115714"
/>

Signed-off-by: Josh Matthews <josh@joshmatthews.net>
2025-09-04 02:53:12 +00:00
dependabot[bot]
912b83b58f
build(deps): bump uuid from 1.18.0 to 1.18.1 (#39116)
Bumps [uuid](https://github.com/uuid-rs/uuid) from 1.18.0 to 1.18.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/uuid-rs/uuid/releases">uuid's
releases</a>.</em></p>
<blockquote>
<h2>v1.18.1</h2>
<h2>What's Changed</h2>
<ul>
<li>Unsafe cleanup by <a
href="https://github.com/KodrAus"><code>@​KodrAus</code></a> in <a
href="https://redirect.github.com/uuid-rs/uuid/pull/841">uuid-rs/uuid#841</a></li>
<li>Prepare for 1.18.1 release by <a
href="https://github.com/KodrAus"><code>@​KodrAus</code></a> in <a
href="https://redirect.github.com/uuid-rs/uuid/pull/842">uuid-rs/uuid#842</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/uuid-rs/uuid/compare/v1.18.0...v1.18.1">https://github.com/uuid-rs/uuid/compare/v1.18.0...v1.18.1</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="50d8e797ed"><code>50d8e79</code></a>
Merge pull request <a
href="https://redirect.github.com/uuid-rs/uuid/issues/842">#842</a> from
uuid-rs/cargo/v1.18.1</li>
<li><a
href="79485925e9"><code>7948592</code></a>
prepare for 1.18.1 release</li>
<li><a
href="6d847c79d0"><code>6d847c7</code></a>
Merge pull request <a
href="https://redirect.github.com/uuid-rs/uuid/issues/841">#841</a> from
uuid-rs/chore/unsafe-cleanup</li>
<li><a
href="675cccc829"><code>675cccc</code></a>
re-gate zerocopy behind unstable feature flag</li>
<li><a
href="4dd5828060"><code>4dd5828</code></a>
Remove some unsafe; stabilize zerocopy</li>
<li>See full diff in <a
href="https://github.com/uuid-rs/uuid/compare/v1.18.0...v1.18.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=uuid&package-manager=cargo&previous-version=1.18.0&new-version=1.18.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-09-04 00:30:21 +00:00
dependabot[bot]
3ac81a994a
build(deps): bump deranged from 0.5.2 to 0.5.3 (#39120)
Bumps [deranged](https://github.com/jhpratt/deranged) from 0.5.2 to
0.5.3.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/jhpratt/deranged/commits">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=deranged&package-manager=cargo&previous-version=0.5.2&new-version=0.5.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-09-03 23:03:17 +00:00
dependabot[bot]
325feaf48e
build(deps): bump bitflags from 2.9.3 to 2.9.4 (#39119)
Bumps [bitflags](https://github.com/bitflags/bitflags) from 2.9.3 to
2.9.4.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/bitflags/bitflags/releases">bitflags's
releases</a>.</em></p>
<blockquote>
<h2>2.9.4</h2>
<h2>What's Changed</h2>
<ul>
<li>Add Cargo features to readme by <a
href="https://github.com/KodrAus"><code>@​KodrAus</code></a> in <a
href="https://redirect.github.com/bitflags/bitflags/pull/460">bitflags/bitflags#460</a></li>
<li>Prepare for 2.9.4 release by <a
href="https://github.com/KodrAus"><code>@​KodrAus</code></a> in <a
href="https://redirect.github.com/bitflags/bitflags/pull/461">bitflags/bitflags#461</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/bitflags/bitflags/compare/2.9.3...2.9.4">https://github.com/bitflags/bitflags/compare/2.9.3...2.9.4</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/bitflags/bitflags/blob/main/CHANGELOG.md">bitflags's
changelog</a>.</em></p>
<blockquote>
<h1>2.9.4</h1>
<h2>What's Changed</h2>
<ul>
<li>Add Cargo features to readme by <a
href="https://github.com/KodrAus"><code>@​KodrAus</code></a> in <a
href="https://redirect.github.com/bitflags/bitflags/pull/460">bitflags/bitflags#460</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/bitflags/bitflags/compare/2.9.3...2.9.4">https://github.com/bitflags/bitflags/compare/2.9.3...2.9.4</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="de0ec28f99"><code>de0ec28</code></a>
Merge pull request <a
href="https://redirect.github.com/bitflags/bitflags/issues/461">#461</a>
from KodrAus/cargo/2.9.4</li>
<li><a
href="c31df3cea8"><code>c31df3c</code></a>
prepare for 2.9.4 release</li>
<li><a
href="3a9cce26c9"><code>3a9cce2</code></a>
Merge pull request <a
href="https://redirect.github.com/bitflags/bitflags/issues/460">#460</a>
from bitflags/doc/cargo-features</li>
<li><a
href="8eb1c7ceb6"><code>8eb1c7c</code></a>
add Cargo features to readme</li>
<li>See full diff in <a
href="https://github.com/bitflags/bitflags/compare/2.9.3...2.9.4">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=bitflags&package-manager=cargo&previous-version=2.9.3&new-version=2.9.4)](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-09-03 21:11:12 +00:00
Simon Wülker
73e39cf085
fonts: Reduce the public API surface (#39112)
This change marks all items that are not used by other crates as
`pub(crate)` instead of `pub`.

Additionally, I've removed all code that turned out to be unused. I
think most of it was used only by `layout-2013`.


Testing: The correctness of these changes is verified by the compiler,
so no tests are needed.

---------

Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
2025-09-03 20:15:51 +00:00
dependabot[bot]
8993235e8f
build(deps): bump clap from 4.5.46 to 4.5.47 (#39118)
Bumps [clap](https://github.com/clap-rs/clap) from 4.5.46 to 4.5.47.
<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.47</h2>
<h2>[4.5.47] - 2025-09-02</h2>
<h3>Features</h3>
<ul>
<li>Added <code>impl FromArgMatches for ()</code></li>
<li>Added <code>impl Args for ()</code></li>
<li>Added <code>impl Subcommand for ()</code></li>
<li>Added <code>impl FromArgMatches for Infallible</code></li>
<li>Added <code>impl Subcommand for Infallible</code></li>
</ul>
<h3>Fixes</h3>
<ul>
<li><em>(derive)</em> Update runtime error text to match
<code>clap</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.47] - 2025-09-02</h2>
<h3>Features</h3>
<ul>
<li>Added <code>impl FromArgMatches for ()</code></li>
<li>Added <code>impl Args for ()</code></li>
<li>Added <code>impl Subcommand for ()</code></li>
<li>Added <code>impl FromArgMatches for Infallible</code></li>
<li>Added <code>impl Subcommand for Infallible</code></li>
</ul>
<h3>Fixes</h3>
<ul>
<li><em>(derive)</em> Update runtime error text to match
<code>clap</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="f046ca6a2b"><code>f046ca6</code></a>
chore: Release</li>
<li><a
href="436949dde1"><code>436949d</code></a>
docs: Update changelog</li>
<li><a
href="1ddab84c32"><code>1ddab84</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/5954">#5954</a>
from epage/tests</li>
<li><a
href="8a66dbf7c2"><code>8a66dbf</code></a>
test(complete): Add more native cases</li>
<li><a
href="76465cf223"><code>76465cf</code></a>
test(complete): Make things more consistent</li>
<li><a
href="232cedbe76"><code>232cedb</code></a>
test(complete): Remove redundant index</li>
<li><a
href="02244a69a3"><code>02244a6</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/5949">#5949</a>
from krobelus/option-name-completions-after-positionals</li>
<li><a
href="2e13847533"><code>2e13847</code></a>
fix(complete): Missing options in multi-val arg</li>
<li><a
href="74388d784b"><code>74388d7</code></a>
test(complete): Multi-valued, unbounded positional</li>
<li><a
href="5b3d45f72c"><code>5b3d45f</code></a>
refactor(complete): Extract function for options</li>
<li>Additional commits viewable in <a
href="https://github.com/clap-rs/clap/compare/clap_complete-v4.5.46...clap_complete-v4.5.47">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.46&new-version=4.5.47)](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-09-03 20:14:42 +00:00
dependabot[bot]
bdb33591d5
build(deps): bump time from 0.3.42 to 0.3.43 (#39115)
Bumps [time](https://github.com/time-rs/time) from 0.3.42 to 0.3.43.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/time-rs/time/releases">time's
releases</a>.</em></p>
<blockquote>
<h2>v0.3.43</h2>
<p>See the <a
href="https://github.com/time-rs/time/blob/main/CHANGELOG.md">changelog</a>
for details.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/time-rs/time/blob/main/CHANGELOG.md">time's
changelog</a>.</em></p>
<blockquote>
<h2>0.3.43 [2025-09-02]</h2>
<h3>Added</h3>
<ul>
<li>Support for <code>rand</code> 0.9</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>In the <code>convert</code> module, any use of <code>per</code> with
types that were not the same (such as
<code>Nanosecond::per(Second)</code>) would not compile due to a bug.
This has been fixed.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="45b9932e57"><code>45b9932</code></a>
v0.3.43 release</li>
<li><a
href="8cbf0dbff0"><code>8cbf0db</code></a>
Fix bug with <code>convert</code></li>
<li><a
href="3343e85826"><code>3343e85</code></a>
Add support for rand 0.9</li>
<li><a
href="afb2574f94"><code>afb2574</code></a>
Add note about MSRV</li>
<li>See full diff in <a
href="https://github.com/time-rs/time/compare/v0.3.42...v0.3.43">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=time&package-manager=cargo&previous-version=0.3.42&new-version=0.3.43)](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-09-03 19:40:46 +00:00
Andrei Volykhin
8a62984c2f
canvas: Use non rooted variant of HTMLCanvasElementOrOffscreenCanvas type (#38970)
Any RenderingContext/OffscreenRenderingContext type has readonly
"canvas" attribute
and associated native-code DOM context objects have reference to target
DOM canvas objects.
https://html.spec.whatwg.org/multipage/canvas.html#renderingcontext
https://html.spec.whatwg.org/multipage/canvas.html#offscreenrenderingcontext

And currently the reference to DOM canvas object is the rooting pointer
on the stack,
which leads to the circular reference problem.

The SpiderMonkey's (SM) garbage collector will not be able to free the
DOM canvas and context
objects (unreacheble from JS) because of the rooting pointer on stack
(see STACK_ROOTS).

And these objects will be stored until the associated script
runtime/thread will be terminated.

SM -> JS Roots -> DOM Canvas* (on heap) -> DOM Context (on heap)
SM -> Rust Roots -> Dom Canvas* (on stack) <- as "canvas" member field

Let's replace the rooting pointer to the traceble pointer (DomRoot ->
Dom)
in the "canvas" member field of DOM context object, which allows to
broke circular referencing problem.

Testing: No changes in existed tests

Signed-off-by: Andrei Volykhin <volykhin.andrei@huawei.com>
Co-authored-by: Andrei Volykhin <volykhin.andrei@huawei.com>
2025-09-03 19:24:48 +00:00
Martin Robinson
2c7866eb24
script/layout: Implement HTMLElement.scrollParent (#39110)
This new API allows getting the element which establishes an element's
scroll container. This will be used to properly implement
`scrollIntoView`. There is still work to do for this API and
`offsetParent` to properly handle ancestors which are
closed-shadow-hidden from the original query element.

In addition, fix an issue where inline boxes were establishing scrolling
containers (they shouldn't do that).

Testing: There are tests for this change.
Fixes: #39096.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Oriol Brufau <obrufau@igalia.com>
2025-09-03 18:52:15 +00:00
Narfinger
5c7ea4bdee
constellation: Use FnvHashMap for hashmaps that use ids as keys (#39106)
FNV is faster for hashing less than 16 bytes of data and the
cryptographic properties of the default HashMap are not needed for the
various ids.

Testing: This does not change functionality.

Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
2025-09-03 18:15:19 +00:00
Martin Robinson
0ae9ee28d5
script: More consistently use f32 and have scrolling methods follow the specification more closely (#39104)
This clarifies the units for scrolling:

 - `f32` is used for internal Servo scrolling APIs as that is the unit
   used in WebRender.
 - `f64` is used for the web-exposed scrolling APIs as that is what the
   WebIDL code generator gives us.

Conversions are done consistently at the boundaries of the two APIs.

In addition, web-exposed scrolling methods are refactored a bit to more
closely follow the specification text. In addition, specification text
is added to those methods so that it is clearer that we are following
it.

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

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
2025-09-03 17:29:56 +00:00
Narfinger
b73c81630a
Change BrowingContextId from WebViewId explicitly (#39095)
There were still some accesses to the inner BrowsingContextId from the
WebViewId. This changes it to completely rely on the From trait for
these methods. This also means we can make the field private.

For testing we add a way to create arbitrary WebViewIds.

Testing: Does not change functionality.

Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
2025-09-03 12:18:08 +00:00
Ashwin Naren
4ea714e6d2
script: Calculate proper border box for resizeobserver (#38988)
Implements more of calculate_box_size, ensuring that the proper
rectangle is returned when the border box is requested.

Testing: WPT
Fixes: Partially #38811

---------

Signed-off-by: Ashwin Naren <arihant2math@gmail.com>
Co-authored-by: Jo Steven Novaryo <65610990+stevennovaryo@users.noreply.github.com>
2025-09-03 12:16:20 +00:00
Josh Matthews
433a461044
indexeddb: Serialize all cloned values when storing data. (#39081)
We were performing a structured clone but throwing away any serializable
DOM interfaces included in the result. We need to instead serialize the
full structured clone result so we can deserialize the DOM interfaces
when getting the data out of the object store.

Testing: Existing WPT coverage is sufficient.
Fixes: #38818
Fixed: #38842

Signed-off-by: Josh Matthews <josh@joshmatthews.net>
2025-09-03 12:06:14 +00:00
Martin Robinson
6b208124dc
script: Always dirty nodes when changing node state (#39102)
With incremental layout adding a restyle to a node isn't enough to force
its layout to update. We also need to explicitly mark the node as dirty
so that its contents are updated when layout is run. This change makes
this consistent for all node state changes. This might be a bit too
conservative as all node state may not affect layout, but should catch
issues in the future.

Testing: This is very hard to test as it requires moving the mouse over
the
WebView, and the moving it away, and then testing the rendered contents.
This
kind of coordination would be difficult to manage with unit tests.
Fixes: #38989.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
2025-09-03 08:50:01 +00:00
Ashwin Naren
4dcf4ef07a
Fix step ordering for MicrotaskQueue checkpoint (#39099)
The steps were incorrectly numbered, this PR fixes that and copies over
the description of each step.

Testing: None, just expanding on the comments/fixing the step numbering

---------

Signed-off-by: Ashwin Naren <arihant2math@gmail.com>
Co-authored-by: Jonathan Schwender <55576758+jschwe@users.noreply.github.com>
2025-09-03 06:05:35 +00:00
Kenzie Raditya Tirtarahardja
9c840b05bc
CI: Enable webdriver classic on wpt workflow (#39087)
Since WebDriver is quite stable now, enable the `webdriver/classic`
tests on wpt CI.

---------

Signed-off-by: PotatoCP <Kenzie.Raditya.Tirtarahardja@huawei.com>
2025-09-03 03:50:44 +00:00
Martin Robinson
2fc816d561
script: Make scrollIntoView more similar to the specification (#39094)
Rework the flow of code in `Element:scroll_into_view_with_options` to
more closely follow the specification. This also simplifies the code a
bit and adds some TODOs about future improvements.

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

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Oriol Brufau <obrufau@igalia.com>
2025-09-02 22:11:02 +00:00
Ashwin Naren
b0b70ec6b7
Throw SyntaxError from Location::SetHref (#39051)
It was originally throwing a TypeError, which was making WPT fail.

Testing: Many happy WPT subtests
Fixes: #39050

---------

Signed-off-by: Ashwin Naren <arihant2math@gmail.com>
Co-authored-by: Sam <16504129+sagudev@users.noreply.github.com>
2025-09-02 17:19:10 +00:00
Ashwin Naren
47551fc6fa
indexeddb: Finish implementation of key_type_to_jsval (#39008)
Uses clipped time to convert dates that are stored as `f64`s into JS
values.

Testing: WPT
Fixes: #25327

---------

Signed-off-by: Ashwin Naren <arihant2math@gmail.com>
2025-09-02 16:36:41 +00:00
Tim van der Lippe
a1f9e3e133
Move LinkProcessingOptions into separate file (#39033)
This makes future implementations easier where we will reuse most of
this code to parse Link headers.

Part of #35035

Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
2025-09-02 16:31:39 +00:00
Martin Robinson
efe9ea2306
layout: Gracefully handle script queries on nodes with uninvertible transforms (#39075)
Instead of panicking when doing a geometry script query on a node with
an uninvertible transform, return a zero-sized rectangle at the
untransformed position. This is similar to what Gecko and Blink do
(though it seems there are some differences in positioning this
zero-sized rectangle). Mostly importantly, do not panic.

Testing: This change adds a new WPT crash test.
Fixes: #38848.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
2025-09-02 13:27:43 +00:00
Jerens Lensun
4de84b0ca5
script_bindings(python): Fix all the rest of type annotation in script_bindings codegen (#39070)
This will complete the type annotation on `codegen.py` so we can safely
remove the ignore from `pyproject` configurataion

---------

Signed-off-by: Jerens Lensun <jerensslensun@gmail.com>
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
Co-authored-by: Mukilan Thiyagarajan <mukilan@igalia.com>
2025-09-02 12:47:38 +00:00
JoeDow
f8c0746c44
layout: Move hit testing for scrollable areas to display list construction (#39066)
Move the construction of hit test items for scroll nodes to the display
list construction stage. This way they respect the `z-index` of their
originating fragments and stacking context ordering in general.

Testing: We currently do not have great testing for this as this tests
the combination of hit testing of input events and scrolling at that
point. The completion of WebDriver support should make this easier to
test.
Fixes: #38967

Signed-off-by: coding-joedow <ibluegalaxy_taoj@163.com>
Co-authored-by: kongbai1996 <1782765876@qq.com>
2025-09-02 11:57:23 +00:00
Euclid Ye
802fdd9068
webdriver: Focus browsing context when switch frame (#39086)
#38889 adds back the mechanism to focus the window when [switch to
window](https://w3c.github.io/webdriver/#switch-to-window). After that,
it causes many flaky TIMEOUT. Turns out the real reason is same as the
phenomenon which I thought was unrelated:
https://github.com/servo/servo/pull/38889#issuecomment-3217512339: we
need to focus the browsing context as well according to spec. This is
important for Servo because it relies on
f4dd2960b8/components/constellation/constellation_webview.rs (L64)
to determine which pipeline to send `InputEvent` to.

Testing: Before, there are 9 ~ 13 flaky results. [Before
1](https://github.com/yezhizhen/servo/actions/runs/17379170889), [Before
2](https://github.com/yezhizhen/servo/actions/runs/17392219417), [Before
3](https://github.com/yezhizhen/servo/actions/runs/17379172612).
Now there are 2 ~ 4 flaky results. [After
1](https://github.com/yezhizhen/servo/actions/runs/17394359570), [After
2](https://github.com/yezhizhen/servo/actions/runs/17394358218), [After
3](https://github.com/yezhizhen/servo/actions/runs/17394357400).
Fixes: https://github.com/servo/servo/pull/38889#issuecomment-3218600566
Fixes: #38906, which is last blocking point to enable WebDriver CI.

---------

Signed-off-by: Euclid Ye <euclid.ye@huawei.com>
2025-09-02 08:57:45 +00:00