Remove the `WebGLCommandSender` wrapper and return `Option<WebGLChan>`
directly from the `webgl_chan` method.
Testing: no tests required as runtime behavior is not affected
Fixes: #44193
Signed-off-by: Niya Gupta <niyabits@disroot.org>
Bumps [indexmap](https://github.com/indexmap-rs/indexmap) from 2.11.4 to
2.14.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/indexmap-rs/indexmap/blob/main/RELEASES.md">indexmap's
changelog</a>.</em></p>
<blockquote>
<h2>2.14.0 (2026-04-09)</h2>
<ul>
<li><strong>MSRV</strong>: Rust 1.85.0 or later is now required.</li>
<li>Updated the <code>hashbrown</code> dependency to 0.17.</li>
<li>Made more <code>map::Slice</code> methods <code>const</code>:
<code>new_mut</code>, <code>first_mut</code>, <code>last_mut</code>,
<code>split_at_mut</code>, <code>split_at_mut_checked</code>,
<code>split_first_mut</code>, <code>split_last_mut</code></li>
</ul>
<h2>2.13.1 (2026-04-02)</h2>
<ul>
<li>Made some <code>Slice</code> methods <code>const</code>:
<ul>
<li><code>map::Slice::{first,last,split_at,split_at_checked,split_first,split_last}</code></li>
<li><code>set::Slice::{first,last,split_at,split_at_checked,split_first,split_last}</code></li>
</ul>
</li>
</ul>
<h2>2.13.0 (2026-01-07)</h2>
<ul>
<li>Implemented <code>Clone</code> for <code>IntoKeys</code> and
<code>IntoValues</code>.</li>
<li>Added <code>map::Slice::split_at_checked</code> and
<code>split_at_mut_checked</code>.</li>
<li>Added <code>set::Slice::split_at_checked</code>.</li>
</ul>
<h2>2.12.1 (2025-11-20)</h2>
<ul>
<li>Simplified a lot of internals using <code>hashbrown</code>'s new
bucket API.</li>
</ul>
<h2>2.12.0 (2025-10-17)</h2>
<ul>
<li><strong>MSRV</strong>: Rust 1.82.0 or later is now required.</li>
<li>Updated the <code>hashbrown</code> dependency to 0.16 alone.</li>
<li>Error types now implement <code>core::error::Error</code>.</li>
<li>Added <code>pop_if</code> methods to <code>IndexMap</code> and
<code>IndexSet</code>, similar to the
method for <code>Vec</code> added in Rust 1.86.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="bcd165baeb"><code>bcd165b</code></a>
Merge pull request <a
href="https://redirect.github.com/indexmap-rs/indexmap/issues/439">#439</a>
from cuviper/release-2.14.0</li>
<li><a
href="4ef06a729e"><code>4ef06a7</code></a>
Release 2.14.0</li>
<li><a
href="d21826ca93"><code>d21826c</code></a>
Merge pull request <a
href="https://redirect.github.com/indexmap-rs/indexmap/issues/438">#438</a>
from cuviper/hashbrown-0.17</li>
<li><a
href="2566bec20d"><code>2566bec</code></a>
Upgrade to <code>hashbrown v0.17</code></li>
<li><a
href="4b62776c3f"><code>4b62776</code></a>
Merge pull request <a
href="https://redirect.github.com/indexmap-rs/indexmap/issues/437">#437</a>
from cuviper/disjoint-panic</li>
<li><a
href="478fba2eb0"><code>478fba2</code></a>
Normalize the panic doc of <code>get_disjoint_mut</code></li>
<li><a
href="fb6dafda4e"><code>fb6dafd</code></a>
Merge pull request <a
href="https://redirect.github.com/indexmap-rs/indexmap/issues/436">#436</a>
from cuviper/const-slice-mut</li>
<li><a
href="5c237a2ab7"><code>5c237a2</code></a>
Make <code>Slice::{first,last,split_*}_mut</code> methods
<code>const</code></li>
<li><a
href="48ff9ce2e3"><code>48ff9ce</code></a>
Merge pull request <a
href="https://redirect.github.com/indexmap-rs/indexmap/issues/435">#435</a>
from cuviper/edition-2024</li>
<li><a
href="648be98a31"><code>648be98</code></a>
<code>cargo fmt</code> with edition 2024</li>
<li>Additional commits viewable in <a
href="https://github.com/indexmap-rs/indexmap/compare/2.11.4...2.14.0">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot 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>
Bumps [thin-vec](https://github.com/mozilla/thin-vec) from 0.2.15 to
0.2.16.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/mozilla/thin-vec/blob/main/RELEASES.md">thin-vec's
changelog</a>.</em></p>
<blockquote>
<h1>Version 0.2.16 (2026-04-14)</h1>
<ul>
<li>Fix reserve() on auto arrays in gecko-ffi mode.</li>
<li>Fix two double-drop issues with ThinVec::clear() and
ThinVec::into_iter()
when the Drop implementation of the item panics.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="3c96f1e335"><code>3c96f1e</code></a>
chore: Bump version to v0.2.16</li>
<li><a
href="df64748355"><code>df64748</code></a>
Fix two panic=unwind issues.</li>
<li><a
href="4e3a217b7f"><code>4e3a217</code></a>
ci: Ignore msrv job for now since it just hangs trying to pull
deps.</li>
<li><a
href="63c2f5fcf2"><code>63c2f5f</code></a>
gecko-ffi: Fix auto-t-array push.</li>
<li><a
href="6797813209"><code>6797813</code></a>
tests: Appease clippy.</li>
<li><a
href="af81b17ad5"><code>af81b17</code></a>
ci: Don't use actions-rs/{cargo,clippy-check} as it's not allowed in
mozilla/...</li>
<li><a
href="360f9ef0c9"><code>360f9ef</code></a>
Update repository URL and various cleanups</li>
<li>See full diff in <a
href="https://github.com/mozilla/thin-vec/compare/v0.2.15...v0.2.16">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot 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>
Bumps [rayon](https://github.com/rayon-rs/rayon) from 1.11.0 to 1.12.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/rayon-rs/rayon/blob/main/RELEASES.md">rayon's
changelog</a>.</em></p>
<blockquote>
<h1>Release rayon 1.12.0 (2026-04-13)</h1>
<ul>
<li>Fixed a bug in parallel <code>Range<char></code> when the end
is 0xE000, just past the
surrogate boundary, which was unsafely producing invalid
<code>char</code> values.</li>
<li>The new method <code>ParallelSlice::par_array_windows</code> works
like <code>par_windows</code>
but with a constant length, producing <code>&[T; N]</code>
items.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="7449d7dfed"><code>7449d7d</code></a>
Merge <a
href="https://redirect.github.com/rayon-rs/rayon/issues/1093">#1093</a></li>
<li><a
href="b3d9e3f473"><code>b3d9e3f</code></a>
Release rayon 1.8.0 and rayon-core 1.12.0</li>
<li><a
href="3fe51e5cbd"><code>3fe51e5</code></a>
Fix clippy::let_and_return</li>
<li><a
href="082f2152d2"><code>082f215</code></a>
Merge <a
href="https://redirect.github.com/rayon-rs/rayon/issues/1087">#1087</a></li>
<li><a
href="ea0c06df26"><code>ea0c06d</code></a>
core: registry: Factor out "wait till out of work" part of the
main loop.</li>
<li><a
href="75524e2957"><code>75524e2</code></a>
Merge <a
href="https://redirect.github.com/rayon-rs/rayon/issues/1063">#1063</a></li>
<li><a
href="01d2800376"><code>01d2800</code></a>
Ignore the multi-threaded test on emscripten/wasm</li>
<li><a
href="40b59c0e44"><code>40b59c0</code></a>
core: Make use_current_thread error rather than panic when already in
the pool.</li>
<li><a
href="f4db4d711e"><code>f4db4d7</code></a>
core: tests: Add some basic tests for
ThreadPoolBuilder::use_current_thread.</li>
<li><a
href="87274ad093"><code>87274ad</code></a>
core: registry: Add some more documentation for
ThreadPoolBuilder::use_curren...</li>
<li>Additional commits viewable in <a
href="https://github.com/rayon-rs/rayon/compare/rayon-core-v1.11.0...rayon-core-v1.12.0">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot 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>
This change introduces the `accessibility_tree` module, containing code
to build an in-memory representation of a very basic accessibility tree
for web contents. Currently, the tree for a given document contains:
- a `RootWebArea` which has the document root node as its sole child,
- an `Unknown` node for the root DOM node,
- a `GenericContainer` node for each DOM element, and
- a `TextRun` node for each text node.
This allows us to make basic assertions about the tree contents in the
`accessibility` test by doing a tree walk to find text nodes and
checking their contents.
Right now, the tree is rebuilt from scratch when accessibility is
enabled and when a navigation occurs (via
`Constellation::set_frame_tree_for_webview()` sending
`ScriptThreadMessage::SetAccessibilityActive`); it's not responsive to
changes in the page.
This change also changes the way we handle updating the graft node
between the webview's accessibility tree and its top level pipeline's
accessibility tree.
Previously, `Constellation::set_frame_tree_for_webview()` would send a
`ConstellationToEmbedderMsg::DocumentAccessibilityTreeIdChange` method
informing the webview of the accesskit TreeId of the top-level pipeline.
However, this resulted in flaky timing as we couldn't depend on that
message being handled before the message containing the TreeUpdate from
the WebContents, which would lead to a panic as the new TreeId wasn't
grafted into the combined tree yet.
This change introduces an epoch value which flows from the
ConstellationWebview, where it's updated every time the
`active_top_level_pipeline_id` changes, to the layout accessibility
tree, and finally to the webview with each TreeUpdate. Whenever a
TreeUpdate arrives at the webview which has a newer epoch than the last
known epoch, the webview-to-contents graft node is updated before the
TreeUpdate is forwarded. If a TreeUpdate arrives at the webview with an
epoch _older_ than the last known epoch, it's dropped, as it must be for
a no-longer-active pipeline.
Fixes: Part of #4344
---------
Signed-off-by: delan azabani <dazabani@igalia.com>
Signed-off-by: Alice Boxhall <alice@igalia.com>
Co-authored-by: delan azabani <dazabani@igalia.com>
Co-authored-by: Luke Warlow <lwarlow@igalia.com>
Previously the code was computing a prefix sum over the number of
preceding elements in tree order to get the index that the node should
be inserted in.
That's not great if the DOM tree is big. Instead, we can compare two
nodes individually by looking at their ancestor chain and then find the
correct position with binary search.
On https://262.ecma-international.org/16.0/index.html, this reduces the
time it takes for content to appear from around 33s to 16s.
Part of https://github.com/servo/servo/issues/44113
---------
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
The upgrade to egui 0.34.0 in #44053 replaced the usage of the
deprecated `Ui::available_rect` method with `Ui::content_rect` as
suggested in the deprecation notice in egui. However, `content_rect` is
not equivalent to `available_rect` and doesn't seem to account for the
area occupied by the egui panels.
Since `content_rect` returns the window's inner dimensions, we don't ask
the webview to resize itself to the correct dimension that excludes the
toolbar (tabs and url). We also pass the correct dimension to egui's
paint callback, which meant that the WebView appeared vertically
squashed.
Fix this by using `available_rect_before_wrap` method instead of
`content_rect`. This seems to return the correct area that we need for
the WebView's dimenstion. The code in egui also seems closer to what we
want as it relies on a cursor that is advanced after each widget is
added. However, I'm not sure in which scenario the wrapping matters as
there is no documentation for this method.
Testing: Tested manually as we don't have automated tests for the shell.
Fixes: #44136
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
Fixes CSS Grid auto-repeat track count resolution in CSS Grid. This
caused an integer underflow in some cases and in others simply computed
the incorrect number of tracks.
Hopefully fixes: #44201
---------
Signed-off-by: Nico Burns <nico@nicoburns.com>
The main goal here is to have layout not depend on `ServoLayoutElement`
directly and instead use the layout DOM interface exposed by
`layout-api`.
This change allows layout to determine if replaced content
is the root of a user agent widget without having to access
`ServoDangerousStyleShadowRoot` which isn't really safe to use in layout
code. `LayoutElement::shadow_root()` is now no longer exposed to layout.
Testing: This should not change behavior, so should be covered by
existing test.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
This returns the `PerformanceMark` object from Performance.mark()
Testing: More WPT tests passed
---------
Signed-off-by: Shubham Gupta <shubham.gupta@chromium.org>
This change is a minor cleanup of the way that layout flushes the
stylesheets of shadow roots. This avoids exposing so many public methods
in our and gradually to stop using Stylo's `TShadowRoot` in layout
entirely.
Testing: This should not change behavior, so should be covered by
existing tests.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Add a check for formatting of the `Cargo.toml` files to CI, and run
`taplo format` to fix existing formatting issues.
---------
Signed-off-by: Martin Garton <garton@gmail.com>
This puts in most of the required machinery for underline. There are
still remaining test failures, but tackling these in separate PR's to
keep things manageable.
Part of #25005
Testing: WPT
---------
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
Signed-off-by: Tim van der Lippe <TimvdLippe@users.noreply.github.com>
In https://github.com/servo/servo/pull/43600, we introduce the new
`CoreResourceMsg::GetCookiesForUrl`.
However after some updates, it is exactly the same with an existing one
`CoreResourceMsg::GetCookiesDataForUrl` which is used by `webdriver`.
This PR removes the duplication.
Signed-off-by: batu_hoang <longvatrong111@gmail.com>
Bumps [rustls](https://github.com/rustls/rustls) from 0.23.37 to
0.23.38.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="6b116bc5e8"><code>6b116bc</code></a>
Bump version of rustls</li>
<li><a
href="a1da268c89"><code>a1da268</code></a>
client: allow skipping selected ALPN validation</li>
<li><a
href="5b3ef11c60"><code>5b3ef11</code></a>
Fix ambiguous panic! warning</li>
<li><a
href="0f0fbf5a59"><code>0f0fbf5</code></a>
Fix <code>clippy::result_large_err</code></li>
<li><a
href="7e99b52071"><code>7e99b52</code></a>
Update semver-compatible dependencies</li>
<li>See full diff in <a
href="https://github.com/rustls/rustls/compare/v/0.23.37...v/0.23.38">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot 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>
Bumps [lru](https://github.com/jeromefroe/lru-rs) from 0.16.3 to 0.16.4.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/jeromefroe/lru-rs/blob/master/CHANGELOG.md">lru's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/jeromefroe/lru-rs/tree/0.16.4">v0.16.4</a> -
2026-04-13</h2>
<ul>
<li>Add <code>get_or_insert_with_key</code> and variants.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="d8c7f5ca51"><code>d8c7f5c</code></a>
Merge pull request <a
href="https://redirect.github.com/jeromefroe/lru-rs/issues/230">#230</a>
from jeromefroe/jerome/prepare-0-16-4-release</li>
<li><a
href="bd5261b499"><code>bd5261b</code></a>
Prepare 0.16.4 release</li>
<li><a
href="16e161d5ed"><code>16e161d</code></a>
Merge pull request <a
href="https://redirect.github.com/jeromefroe/lru-rs/issues/229">#229</a>
from pikatos/get_or_insert_with_key</li>
<li><a
href="5135e8eb26"><code>5135e8e</code></a>
Apply suggestions from code review</li>
<li><a
href="81c2ef05fd"><code>81c2ef0</code></a>
Add get_or_insert_with_key variants</li>
<li>See full diff in <a
href="https://github.com/jeromefroe/lru-rs/compare/0.16.3...0.16.4">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot 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>
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.184 to 0.2.185.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/rust-lang/libc/releases">libc's
releases</a>.</em></p>
<blockquote>
<h2>0.2.185</h2>
<h3>Added</h3>
<ul>
<li>EspIDF: Add <code>espidf_picolibc</code> cfg for picolibc
<code>O_*</code> flag values (<a
href="https://redirect.github.com/rust-lang/libc/pull/5035">#5035</a>)</li>
<li>Hexagon: add missing constants and fix types for linux-musl (<a
href="https://redirect.github.com/rust-lang/libc/pull/5042">#5042</a>)</li>
<li>Redox: Add semaphore functions (<a
href="https://redirect.github.com/rust-lang/libc/pull/5051">#5051</a>)</li>
<li>Windows: Add <code>sprintf</code>, <code>snprintf</code>, and the
<code>scanf</code> family (<a
href="https://redirect.github.com/rust-lang/libc/pull/5024">#5024</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Hexagon: Decouple <code>time64</code> types from musl symbol
redirects (<a
href="https://redirect.github.com/rust-lang/libc/pull/5040">#5040</a>)</li>
<li>Horizon: Change <code>POLL</code> constants from
<code>c_short</code> to <code>c_int</code> (<a
href="https://redirect.github.com/rust-lang/libc/pull/5045">#5045</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/rust-lang/libc/blob/0.2.185/CHANGELOG.md">libc's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/rust-lang/libc/compare/0.2.184...0.2.185">0.2.185</a>
- 2026-04-13</h2>
<h3>Added</h3>
<ul>
<li>EspIDF: Add <code>espidf_picolibc</code> cfg for picolibc
<code>O_*</code> flag values (<a
href="https://redirect.github.com/rust-lang/libc/pull/5035">#5035</a>)</li>
<li>Hexagon: add missing constants and fix types for linux-musl (<a
href="https://redirect.github.com/rust-lang/libc/pull/5042">#5042</a>)</li>
<li>Redox: Add semaphore functions (<a
href="https://redirect.github.com/rust-lang/libc/pull/5051">#5051</a>)</li>
<li>Windows: Add <code>sprintf</code>, <code>snprintf</code>, and the
<code>scanf</code> family (<a
href="https://redirect.github.com/rust-lang/libc/pull/5024">#5024</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Hexagon: Decouple <code>time64</code> types from musl symbol
redirects (<a
href="https://redirect.github.com/rust-lang/libc/pull/5040">#5040</a>)</li>
<li>Horizon: Change <code>POLL</code> constants from
<code>c_short</code> to <code>c_int</code> (<a
href="https://redirect.github.com/rust-lang/libc/pull/5045">#5045</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="71d5bfcc1b"><code>71d5bfc</code></a>
libc: Release 0.2.185</li>
<li><a
href="1027d1c23b"><code>1027d1c</code></a>
Revert "ci: Pin nightly to 2026-04-01"</li>
<li><a
href="0e9c6e53cc"><code>0e9c6e5</code></a>
redox: Add semaphore functions</li>
<li><a
href="24ef457ddd"><code>24ef457</code></a>
feat: add back support for gnu windows x86 in ci</li>
<li><a
href="aa75caf30c"><code>aa75caf</code></a>
horizon: Change POLL constants from c_short to c_int</li>
<li><a
href="b7eda5a40c"><code>b7eda5a</code></a>
hexagon: add missing constants and fix types for linux-musl</li>
<li><a
href="d4613f96a5"><code>d4613f9</code></a>
newlib/espidf: Add espidf_picolibc cfg for picolibc O_* flag values</li>
<li><a
href="c89fd76cc7"><code>c89fd76</code></a>
Fix typo in Padding comments</li>
<li><a
href="b3264b292a"><code>b3264b2</code></a>
hexagon: decouple time64 types from musl symbol redirects</li>
<li><a
href="db1ebee456"><code>db1ebee</code></a>
ci: Pin nightly to 2026-04-01</li>
<li>Additional commits viewable in <a
href="https://github.com/rust-lang/libc/compare/0.2.184...0.2.185">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot 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>
Refactor AudioContext methods to use &mut JSContext
Testing: Just refactor.
Fixes: Part of #42638
---------
Signed-off-by: Emmanuel Paul Elom <elomemmanuel007@gmail.com>
Also build an arm64 version of the devcontainer and combine both into a
multi platform image.
This also fixes the upload step, which was broken on main by
b5d454eca0.
We also allow triggering the publish job on forks via manual workflow
trigger, which allows more convenient testing.
[Manually triggered
workflow](https://github.com/servo/servo/actions/runs/24336772082)
Testing: This is a CI change.
---------
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
When `mach bootstrap` is run without `--yes` or `--force` on macos:
Add warning that `mach bootstrap` command is being run without elevated
permissions.
Stop execution and ask user to run the command with `--yes` or install
GStreamer manually.
Testing: mach does not have testing
Fixes: #44021
---------
Signed-off-by: Niya Gupta <niyabits@disroot.org>
When mutating window-reflecting event handler attributes on <body>,
HTMLBodyElement::attribute_mutated forwarded handlers to owner_window()
even for documents without a browsing context.
This caused handlers such as onload to be attached to the wrong window
in cases involving createHTMLDocument() and node cloning.
Only forward these handlers when the owner document has a browsing
context. This matches the has_browsing_context() check used by
window_event_handlers!(ForwardToWindow) and the spec algorithm.
The Range WPT expectations added for this issue are removed, as those
tests now pass. The onerroreventhandler.html test is marked as TIMEOUT
as its failure is a separate issue tracked in #44157 .
Testing:
- ./mach fmt
- ./mach test-tidy
- ./mach test-wpt -r dom/ranges
- ./mach test-wpt -r
html/webappapis/scripting/events/onerroreventhandler.html
- ./mach try linux-wpt ( Try run
[#24328414549](https://github.com/arabson99/servo/actions/runs/24328414549))
Reproduced locally with the parent.html/child.html testcase from #36561.
Before this change, Servo logged "foo is not defined".
After this change, the error no longer appears.
Fixes: #36561
Signed-off-by: arabson99 <arabiusman99@gmail.com>
I noticed that those links' fragments are all "off-by-one". This is due
to https://github.com/KhronosGroup/WebGL/pull/3762, that added a section
at the top of the specification. This patch fixes those links.
Testing: This is a comment-only change, so not covered by any automated
test. I manually navigated to a random subset of those links and checked
they do take to the correct section.
Signed-off-by: Simon Martin <simon@nasilyan.com>
Previously the headless/mock device was just defaulting to opaque for
its environmentBlendMode,, but this value is actually not allowed for
immersive-ar sessions. This adds an override for
environment_blend_mode() on the headless DeviceAPI to return alpha blend
for immersive-ar sessions and opaque otherwise.
Testing: Fixes WPT test
`webxr/ar-module/xrSession_environmentBlendMode.https.html.ini`
Signed-off-by: Daniel Adams <msub2official@gmail.com>
\`has_sent_idle_message\` was declared and initialized in \`Window\` but
never read anywhere. Removed the field and its initialization.
Fixes#44151
Signed-off-by: thebabalola <t.babalolajoseph@gmail.com>
Configured fonts for Linux referring to the same pattern used for
Windows in #44055.
CJK font files are loaded from standard system font paths, trying
Noto Sans CJK (Ubuntu/Debian and Fedora/Arch paths) with WenQuanYi
Micro Hei as a fallback. Fonts that are not present on the system
are silently skipped.
Testing: Loaded `cjk_test.html` with the following content in servoshell
on Linux:
```html
<!DOCTYPE html>
<html>
<head>
<title>ご利用ガイド - 경애하는</title>
</head>
<body>
<p>Test</p>
</body>
</html>
Before: Tab title showed boxes (□□□□ - □□□□)
After: Tab title renders correctly (ご利用ガイド - 경애하는)
```
Fixes part of #44066
---------
Signed-off-by: CynthiaOketch <cynthiaoketch6@gmail.com>
Bumps [hyper-rustls](https://github.com/rustls/hyper-rustls) from 0.27.7
to 0.27.8.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/rustls/hyper-rustls/releases">hyper-rustls's
releases</a>.</em></p>
<blockquote>
<h2>0.27.8</h2>
<h2>What's Changed</h2>
<ul>
<li>Added HttpsConnector::new function by <a
href="https://github.com/0xIO32"><code>@0xIO32</code></a> in <a
href="https://redirect.github.com/rustls/hyper-rustls/pull/301">rustls/hyper-rustls#301</a></li>
<li>Exclude development scripts from published package by <a
href="https://github.com/weiznich"><code>@weiznich</code></a> in <a
href="https://redirect.github.com/rustls/hyper-rustls/pull/320">rustls/hyper-rustls#320</a></li>
<li>Drop dependency on rustls-pemfile by <a
href="https://github.com/djc"><code>@djc</code></a> in <a
href="https://redirect.github.com/rustls/hyper-rustls/pull/323">rustls/hyper-rustls#323</a></li>
<li>Fix tests to run on a random port by <a
href="https://github.com/erickt"><code>@erickt</code></a> in <a
href="https://redirect.github.com/rustls/hyper-rustls/pull/330">rustls/hyper-rustls#330</a></li>
<li>Upgrade to rustls-platform-verifier 0.7 by <a
href="https://github.com/djc"><code>@djc</code></a> in <a
href="https://redirect.github.com/rustls/hyper-rustls/pull/338">rustls/hyper-rustls#338</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="6b94ec3ef1"><code>6b94ec3</code></a>
Bump version to 0.27.8</li>
<li><a
href="df300cfe7c"><code>df300cf</code></a>
Upgrade rustls-platform-verifier to 0.7</li>
<li><a
href="1c063f5e21"><code>1c063f5</code></a>
Take semver-compatible dependency updates</li>
<li><a
href="c66d2839df"><code>c66d283</code></a>
Bump MSRV to 1.85 (for rustls-platform-verifier -> jni)</li>
<li><a
href="4b90026cb6"><code>4b90026</code></a>
Bump hyper from 1.8.1 to 1.9.0</li>
<li><a
href="4376d76423"><code>4376d76</code></a>
Take semver-compatible updates</li>
<li><a
href="8eaab3e6e6"><code>8eaab3e</code></a>
Take semver-compatible dependency updates</li>
<li><a
href="0deafa57c3"><code>0deafa5</code></a>
Bump rustls from 0.23.36 to 0.23.37</li>
<li><a
href="003b96e690"><code>003b96e</code></a>
Check for unexpected output if examples fail</li>
<li><a
href="81e75a4ba9"><code>81e75a4</code></a>
Fail <code>custom_ca_store</code> if <code>server</code> errors out</li>
<li>Additional commits viewable in <a
href="https://github.com/rustls/hyper-rustls/compare/v/0.27.7...v/0.27.8">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot 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: Euclid Ye <yezhizhenjiakang@gmail.com>
Co-authored-by: Euclid Ye <yezhizhenjiakang@gmail.com>
Bumps [rustls-webpki](https://github.com/rustls/webpki) from 0.103.10 to
0.103.11.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/rustls/webpki/releases">rustls-webpki's
releases</a>.</em></p>
<blockquote>
<h2>0.103.11</h2>
<p>In response to <a
href="https://redirect.github.com/rustls/webpki/issues/464">#464</a>,
we've slightly relaxed requirements for
<code>anchor_from_trust_cert()</code> to ignore unknown extensions even
if they're marked as critical. This only affects parsing a
<code>TrustAnchor</code> from DER, for which most extensions are ignored
anyway.</p>
<h2>What's Changed</h2>
<ul>
<li>Backport parsing trust anchors with unknown critical extensions to
0.103 by <a href="https://github.com/djc"><code>@djc</code></a> in <a
href="https://redirect.github.com/rustls/webpki/pull/466">rustls/webpki#466</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="57bc62ce53"><code>57bc62c</code></a>
Bump version to 0.103.11</li>
<li><a
href="d0fa01ee0a"><code>d0fa01e</code></a>
Allow parsing trust anchors with unknown criticial extensions</li>
<li>See full diff in <a
href="https://github.com/rustls/webpki/compare/v/0.103.10...v/0.103.11">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot 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>
Bumps [pkg-config](https://github.com/rust-lang/pkg-config-rs) from
0.3.32 to 0.3.33.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/rust-lang/pkg-config-rs/blob/master/CHANGELOG.md">pkg-config's
changelog</a>.</em></p>
<blockquote>
<h2>[0.3.33] - 2026-04-12</h2>
<h3>Changed</h3>
<ul>
<li>Error output from <code>pkg-config</code> is included in the message
again to
help with finding the cause (<a
href="https://redirect.github.com/rust-lang/pkg-config-rs/issues/187">#187</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/rust-lang/pkg-config-rs/commits">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot 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>
The parsed relations of a element don't depend on its position in the
DOM tree at all, so this does nothing.
Testing: This should not change observable behaviour, WPT should catch
regressions
---------
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
It fixes two new tests, but also regresses 4. That's because we don't
handle xx-small (we shouldn't, at least browsers are inconsistent on
what to do with that) and pre-existing issues where a `<font>` element
is already present as parent of the selected node. These are
pre-existing issues that are now correctly exposed.
Part of #25005
Testing: WPT
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
Adds `BlackboxingActor` boilerplate and implements `getBlackboxingActor`
Testing: Added a geckordp test for `getBlackboxingActor`
Fixes: Part of https://github.com/servo/servo/issues/36027
Signed-off-by: Freya Arbjerg <git@arbjerg.dev>
There seem to be some common misconceptions about how to use the pull
request template such as:
- The `Fixes` field going before the pull request description.
- The `Testing` field being used to describe how the fix was tested
locally.
This change attmepts to make the meaning of the fields of the template a
little bit more explicit to avoid confusion.
Testing: This is just updating the pull request template so no tests
necessary.
Signed-off-by: Martin Robinson <mrobinson@fastmail.fm>
Co-authored-by: Martin Robinson <mrobinson@fastmail.fm>