This ensures that the selection after the move is as expected.
It mostly fixes tests that had fully passing implementation, but
the after fontsize was incorrect, since the selection wasn't
properly updated.
Some new regressions were false positives.
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>
Bumps libredox from 0.1.15 to 0.1.16.
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot 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>
Do not `cancel_animations_for_node` for this function.
We can then reuse it more often.
Testing: Just a refactor.
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
Added a `register` method to `NodeActor` following the same pattern used
by other actors in the devtools codebase. Updated
`NodeInfoToProtocol::get_or_register_node_actor` to use it instead of
constructing `NodeActor` directly.
Testing:
Ran `./mach try linux-unit-tests` and `./mach test-devtools`. No new
failures introduced.
Fixes:part of #43800
---------
Signed-off-by: Emmanuel Paul Elom <elomemmanuel007@gmail.com>
font: Use `read_fonts` module to generate font list on OpenHarmony
platform. Specifically:
- `Family name` is obtained from the font's `name` table.
- `width` & `weight` is obtained from the font's `os2` table.
- `style` is obtained from the font's `postscript` table.
Additionally, I'd like to mention that I plan to add a caching mechanism
to store the font list in the near future (as mentioned in the related
issue)
Reference: [TrueType reference
manual](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6.html)
Testing: No behavior changes expected.
Fixes: Part of [#43596](https://github.com/servo/servo/issues/43596)
---------
Signed-off-by: Richard Tjokroutomo <richard.tjokro2@gmail.com>
Added a `register` method to `PageStyleActor` following the same pattern
used by other actors in the devtools codebase. Updated
`InspectorActor::register` to use it instead of constructing
`PageStyleActor` directly.
Testing:
Ran `./mach try linux-unit-tests` and `./mach test-devtools`. No new
failures introduced.
Fixes:part of #43800
Signed-off-by: Emmanuel Paul Elom <elomemmanuel007@gmail.com>
Signed-off-by: eri <eri@igalia.com>
Co-authored-by: eri <eri@igalia.com>
Instead of panicking when pressing a keyboard shortcut for an uknown
WebView, just silently ignore the request. This code path is only
followed when using keyboard shortcuts, so this isn't going to hide any
unexpected behavior.
Testing: We do not have testing at this level of servoshell.
Fixes: #44056.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
When media controls are removed (either by removing the controls
attribute or by removing the element from the DOM), the shadow root's
children are now cleared. This breaks the reference cycle between the js
mediacontrols instance and the media element, the event listeners and
this.media reference in the controls script would otherwise keep the
element alive and prevent garbage collection.
I tested the controls and it renders correctly and deleting a video with
controls doesn't crash.
Fixes: #43828
Signed-off-by: Messi002 <rostandmessi2@gmail.com>
Added a `register` method to `HighlighterActor` following the same
pattern used by other actors in the devtools codebase. Updated
`InspectorActor::register` to use it instead of onstructing
`HighlighterActor` directly.
Testing:
Ran `./mach try linux-unit-tests` and `./mach test-devtools`. No new
failures introduced.
Fixes:part of #43800
---------
Signed-off-by: CynthiaOketch <cynthiaoketch6@gmail.com>
Make `isAsync` and `isGenerator` optional
Testing: Current tests as passing
Fixes: part of #36027
Signed-off-by: atbrakhi <atbrakhi@igalia.com>
Signed-off-by: eri <eri@igalia.com>
Co-authored-by: eri <eri@igalia.com>
Handle different number values and their types
Testing: Current tests are passing
Fixes: part of #36027
Signed-off-by: atbrakhi <atbrakhi@igalia.com>
Co-authored-by: eri <eri@igalia.com>
There are two times that Servo needs to ask other `Document`s to either
focus or blur.
- During processing of the "focusing steps". When a new element gains
focus this may cause focus to be lost or gained in parent `<iframe>`s.
- When calling `focus()` on a DOM Window from another origin.
In both of these cases we need to request that a `Document` gain or lose
focus via the Constellation, but in the second case we may have a
`BrowsingContextId` of the `<iframe>` gaining focus and a
`FocusSequence`. This change splits those cases into two kinds of
messages.
Finally, run the entire focusing steps when calling `window.focus()`
instead of going to the constellation immediately. This will be
important in a followup changes where messaging order is made more
consistent.
Testing: This should not change behavior so is covered by existing
tests.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
This PR removes support for passing direct test file paths (e.g.,
`./mach test-unit <test_file.rs>`) to `mach test-unit`.
Previously, this shorthand was supported in `test-unit` but was
subsequently broken in #39897. Supporting this behavior now requires
extracting test names from a generic parameter list, which is
error-prone due to the presence of arbitrary arguments and inconsistent
argument ordering.
With this change, `mach test-unit` aligns more closely with standard
Cargo test patterns. Users are expected to specify test modules or
patterns instead (e.g., `./mach test-unit <module>::` or using
Cargo-compatible arguments).
This simplifies the implementation and avoids maintaining fragile logic
for shorthand support that was not widely used.
---
### Testing
* Ran `./mach test-unit` with various valid patterns and module-based
inputs
* Verified that tests execute correctly across supported use cases
* Confirmed that removal of direct file path support does not affect
standard workflows
---
Fixes: #41065
---------
Signed-off-by: Emmanuel Paul Elom <elomemmanuel007@gmail.com>
Our implementation of [fetch a single module
script](https://html.spec.whatwg.org/multipage/webappapis.html#fetch-a-single-module-script)
was missing the task queueing steps:
```
5. If moduleMap[(url, moduleType)] is "fetching", wait in parallel until that entry's value changes,
then queue a task on the networking task source to proceed with running the following steps.
6. If moduleMap[(url, moduleType)] exists, run onComplete given moduleMap[(url, moduleType)], and return.
```
Instead we appended a `PromiseNativeHandler`, which would run
`on_complete` when resolved, on the promise of the pending fetch.
Testing: This change shouldn't be observable since modules are evaluated
in sync, but it's required for #39417.
Signed-off-by: Gae24 <96017547+Gae24@users.noreply.github.com>
The initial interpretation of "convert the font size to the value in
pixels" was completely off. I thought it meant the existing font
elements in the DOM, but instead it implied that you would have to
convert these into pixels according to the HTML size table.
Therefore, use the implementation in Stylo to convert the html size to a
keyword and then compute the value for the keyword.
To make that work, we need to compute the pixel size as fallback when
resolving the CSS value on the node. We check if it were pixels and then
go through the conversion. If they aren't pixels, we can skip all that
logic and directly convert, saving a few cycles.
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>
Co-authored-by: Josh Matthews <josh@joshmatthews.net>
Bumps [thin-vec](https://github.com/gankra/thin-vec) from 0.2.14 to
0.2.15.
<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.15 (2025-02-19)</h1>
<ul>
<li>Support AutoTArrays created from rust in Gecko FFI mode.</li>
<li>Add extract_if.</li>
<li>Add const new() support behind feature flag.</li>
<li>Fix <code>thin_vec</code> macro not being hygienic when
recursing</li>
<li>Improve extend() performance.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="70bcca0960"><code>70bcca0</code></a>
chore: Bump version to v0.2.15</li>
<li><a
href="322423b7a6"><code>322423b</code></a>
Fix miri error on extract_if().</li>
<li><a
href="eca5334c29"><code>eca5334</code></a>
Don't make push_unchecked public.</li>
<li><a
href="90e23c39cc"><code>90e23c3</code></a>
Minor nits, go back to call push_reserved push_unchecked.</li>
<li><a
href="ee9d6bb28f"><code>ee9d6bb</code></a>
Optimize extend() to avoid unnecessary capacity checks</li>
<li><a
href="7fd47080c0"><code>7fd4708</code></a>
feat: add const_new feature for const ThinVec::new()</li>
<li><a
href="beb652d66b"><code>beb652d</code></a>
Merge pull request <a
href="https://redirect.github.com/gankra/thin-vec/issues/75">#75</a>
from jtracey/patch-1</li>
<li><a
href="6f3da2525d"><code>6f3da25</code></a>
Merge pull request <a
href="https://redirect.github.com/gankra/thin-vec/issues/73">#73</a>
from emilio/auto-array-tweaks</li>
<li><a
href="d3d7475118"><code>d3d7475</code></a>
gecko: Keep the auto-bit across relocations.</li>
<li><a
href="faa01eb790"><code>faa01eb</code></a>
Merge pull request <a
href="https://redirect.github.com/gankra/thin-vec/issues/66">#66</a>
from GnomedDev/extract-if</li>
<li>Additional commits viewable in <a
href="https://github.com/gankra/thin-vec/compare/v0.2.14...v0.2.15">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 [zerofrom-derive](https://github.com/unicode-org/icu4x) from 0.1.6
to 0.1.7.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/unicode-org/icu4x/blob/main/CHANGELOG.md">zerofrom-derive's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<h2>icu 2.2.x</h2>
<p>Several crates have had patch releases in the 2.2 stream:</p>
<ul>
<li>Components
<ul>
<li>(2.2.1) <code>icu_calendar</code>
<ul>
<li>Fix extended year calculations in Gregorian-like and Coptic-like
calendars (unicode-org#7849)</li>
</ul>
</li>
</ul>
</li>
</ul>
<h2>icu4x 2.2</h2>
<ul>
<li>Components
<ul>
<li>General
<ul>
<li>Use HTTPS links in docs (unicode-org#7212)</li>
<li>Update MSRV to 1.86 (unicode-org#7576)</li>
<li>Updated to CLDR 48.2 (unicode-org#7792)</li>
<li>Replace <code>experimental</code> features with
<code>unstable</code> features (unicode-org#7566)</li>
<li>Add categories and keywords to Cargo.toml for all components
(unicode-org#7737)</li>
</ul>
</li>
<li><code>icu_calendar</code>
<ul>
<li>Add <code>Date::try_new</code>, which replaces
<code>Date::try_new_from_codes</code>, and takes typed year/month
values. (unicode-org#7773, unicode-org#7764)</li>
<li>New methods: <code>Date::try_new</code> (and primarily-internal
<code>Calendar::new_date</code>)</li>
<li>New types: <code>InputYear</code>, <code>DateNewError</code></li>
<li>Handle possible <code>Overflow</code> values on individual calendars
(unicode-org#7795)</li>
<li>New <code>Date::try_from_fields</code> API for fully general date
construction from various choices of year and month values
(unicode-org#7798)</li>
<li>New methods: <code>Date::try_from_fields()</code></li>
<li>New types: <code>DateFields</code>,
<code>DateFromFieldsOptions</code>, <code>Overflow</code>,
<code>MissingFieldsStrategy</code>,
<code>DateFromFieldsError</code></li>
<li>New associated method: <code>Calendar::from_fields()</code></li>
<li>New Date arithmetic APIs for adding and subtracting dates
(unicode-org#7798, unicode-org#7355, unicode-org#7257)</li>
<li>New methods: <code>Date::try_add_with_options</code>,
<code>Date::try_added_with_options</code>,
<code>Date::try_until_with_options</code></li>
<li>New types: <code>DateDuration</code>, <code>DateAddOptions</code>,
<code>DateDifferenceOptions</code>, <code>DateDurationUnit</code>,
<code>DateDurationParseError</code>, <code>DateAddError</code>,
<code>MismatchedCalendarError</code></li>
<li>New associated items: <code>Calendar::add</code>,
<code>Calendar::until</code>,
<code>Calendar::DateCompatibilityError</code></li>
<li>Introduce a new <code>Month</code> type, preferred over using month
codes (unicode-org#7147, unicode-org#7756)
<ul>
<li>New type: <code>Month</code></li>
<li>New method: <code>MonthInfo::to_input()</code></li>
</ul>
</li>
<li>Introduce year/date ranges to all APIs, documented on the APIs
themselves. <code>Date</code> now has a fundamental range (ISO years
between ±999,999), and most constructors enforce a stricter range of
±9999 years for input years. (unicode-org#7676, unicode-org#7062,
unicode-org#7629, unicode-org#7753, unicode-org#7219,
unicode-org#7227)</li>
<li>Add constructors with <code>Month</code> for lunisolar calendars
(unicode-org#7485)</li>
<li>New methods: <code>Date::try_new_korean_traditional()</code>,
<code>Date::try_new_chinese_traditional()</code>,
<code>Date::try_new_hebrew_v2()</code></li>
<li>Expose <code>LeapStatus</code> on <code>MonthInfo</code>
(unicode-org#7667)</li>
<li>New method: <code>MonthInfo::leap_status()</code></li>
<li>New enum: <code>LeapStatus</code></li>
<li>(Unstable) Integrate with <code>chrono</code>, <code>jiff</code>,
and <code>time</code> (unicode-org#7617, unicode-org#7711)</li>
<li>New impls: <code>From<chrono::NaiveDate></code>,
<code>From<jiff::civil::Date></code>,
<code>From<time::Date></code> for
<code>Date<Gregorian></code></li>
<li>Replace <code>Date::day_of_week</code> by <code>Date::weekday</code>
(unicode-org#7288)
<ul>
<li>New method: <code>Date::weekday()</code></li>
</ul>
</li>
<li>Deprecate <code>Date::new_from_iso</code>/<code>Date::to_iso</code>
(unicode-org#7287)</li>
<li>Deprecate <code>Date::extended_year()</code> (use
<code>Date::year().extended_year()</code>) (unicode-org#7289)</li>
<li>Remove <code>YearInfo: PartialEq</code> bound
(unicode-org#7743)</li>
<li>Start producing Meiji era only after Meiji 6 (unicode-org#7503)</li>
</ul>
</li>
</ul>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/unicode-org/icu4x/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>
Bumps [cryptography](https://github.com/pyca/cryptography) from 46.0.6
to 46.0.7.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst">cryptography's
changelog</a>.</em></p>
<blockquote>
<p>46.0.7 - 2026-04-07</p>
<pre><code>
* **SECURITY ISSUE**: Fixed an issue where non-contiguous buffers could
be
passed to APIs that accept Python buffers, which could lead to buffer
overflow. **CVE-2026-39892**
* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL
3.5.6.
<p>.. _v46-0-6:<br />
</code></pre></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="622d672e42"><code>622d672</code></a>
46.0.7 release (<a
href="https://redirect.github.com/pyca/cryptography/issues/14602">#14602</a>)</li>
<li>See full diff in <a
href="https://github.com/pyca/cryptography/compare/46.0.6...46.0.7">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)
You can disable automated security fix PRs for this repo from the
[Security Alerts page](https://github.com/servo/servo/network/alerts).
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
This will be needed for ensuring that shaped text is valid during
relayout. It duplicates some information, but the hope is that when all
of these change are done, there will be many fewer individual shaped
segments of text.
Testing: This should not really change observable behavior so is covered
by existing tests.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
While debugging test failures, I discovered that I had reversed the
`is_allowed_child` arguments. That made a bunch more tests pass, but
then also started to fail tests as we weren't clearing the previous
value and computing loose equivalence.
Therefore, this PR fixes the reversal and implements the relevant parts
of some algorithms as to not regress too much. There are two new
failures related to how integers should be parsed, but tackling that
separately.
Part of #25005
Testing: WPT
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
Despite using `jemalloc` by default on macos as the Rust global
allocator, the default system allocator will still be used by some C/C++
libraries.
Using `malloc_zone_statistics` on macos allows us to get information
about the system allocator heap usage.
Since the macos statistic also provides information about reserved, but
currently unused memory, we also expose that and attempt to calculate
the same metric on Linux, which should be
arena (Non-mmapped space allocated (bytes)) + hblkhd (Space allocated in
mmapped regions (bytes)) See
https://man7.org/linux/man-pages/man3/mallinfo.3.html
Loading `servo.org` in a debug build on macOS and then navigating to
about:memory, I see 31MB system-heap-allocated and 92 MB
system-heap-reserved.
Testing: Manually tested on macOS. Not tested on Linux.
---------
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
CacheMode, CredentialsMode, Destination, RedirectMode, and Referrer were
imported with NetTraitsRequest* aliases to avoid naming conflicts. These
conflicts no longer exist; their original names do not clash with any
other imports or types in this file, so the aliases are restored.
Testing: Pure refactor with no behavior change. Ran `./mach try
linux-unit-tests` to verify existing tests continue to pass.
Fixes: #42981
Signed-off-by: CynthiaOketch <cynthiaoketch6@gmail.com>
Refer to https://github.com/servo/servo/pull/43746 for a description of
the problem. This change ensures that video posters can be loaded from
blob URLs, even if the URL is revoked right after.
Testing: This change adds a test
---------
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
Fix recursion causing panic in debugger
Testing: Current tests are passing, also manual testing
Fixes: part of #36027
Signed-off-by: atbrakhi <atbrakhi@igalia.com>
Co-authored-by: eri <eri@igalia.com>
Returns an error on `RenderingContext` constructors when size is 0 in
either dimension. Also adds panics to resize functions in the same case.
Testing: Added a unit test for the new error on
`SoftwareRenderingContext::new()`.
Fixes: https://github.com/servo/servo/issues/36061
Signed-off-by: Freya Arbjerg <git@arbjerg.dev>
Co-authored-by: Martin Robinson <martin@abandonedwig.info>
Implement Player Trait in ohos backend using Harmony OS MediaKit's[
AVPlayer](https://developer.huawei.com/consumer/en/doc/harmonyos-references/capi-avplayer-h).
The modular design of `VideoSink`, `InnerPlayer`, and `MediaSource` is
taken from the GStreamer backend.
Only support HarmonyOS SDK API 21, because the
`OH_AVPlayer_SetDataSource` only started to be exposed on API 21.
Testing: N/A, as there are no platform specific task.
Fixes: N/A, now we can play video on HarmonyOS phone using `<video>`
---------
Signed-off-by: rayguo17 <rayguo17@gmail.com>
The `IONFLAGS` environment variable configure logging for the JIT, but
it must be enabled in spidermonkey at compile time. The prebuilt mozjs
binaries don't enable it, so we must build from source.
Companion PR for https://github.com/servo/mozjs/pull/728
Testing: We don't have tests for the build process
---------
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
During traversal, exclude shadow roots.
Analysis:
Each shadow root is processed twice:
- via host: Element::bind_to_tree()
- Via iterator
In total, this would be
```math
\sum_{i=0}^{N-1} 2^i = 2^N - 1
```
Testing: Added a test.
Fixes: https://github.com/servo/servo/issues/43998
---------
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
Co-authored-by: webbeef <me@webbeef.org>
Fixes: #43968
made get callable property accept ` &CStr ` instead of `&str`
Testing: no behaviour change expected, so existing WPT tests are
sufficient.
Signed-off-by: Rover track <rishan.pgowda@gmail.com>
Bumps [async-signal](https://github.com/smol-rs/async-signal) from
0.2.13 to 0.2.14.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/smol-rs/async-signal/releases">async-signal's
releases</a>.</em></p>
<blockquote>
<h2>v0.2.14</h2>
<ul>
<li>Fix build error on haiku. (<a
href="https://redirect.github.com/smol-rs/async-signal/issues/59">#59</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/smol-rs/async-signal/blob/master/CHANGELOG.md">async-signal's
changelog</a>.</em></p>
<blockquote>
<h1>Version 0.2.14</h1>
<ul>
<li>Fix build error on haiku. (<a
href="https://redirect.github.com/smol-rs/async-signal/issues/59">#59</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="d750e57adc"><code>d750e57</code></a>
Release 0.2.14</li>
<li><a
href="eb72cfd64a"><code>eb72cfd</code></a>
Fix build error on haiku</li>
<li><a
href="1ffadd3db8"><code>1ffadd3</code></a>
Update signal-hook requirement from 0.3.14 to 0.4.1 (<a
href="https://redirect.github.com/smol-rs/async-signal/issues/57">#57</a>)</li>
<li><a
href="a43dca7fd1"><code>a43dca7</code></a>
Fix clippy::io_other_error warning</li>
<li><a
href="c00258a4a6"><code>c00258a</code></a>
Bump MSRV to 1.85</li>
<li><a
href="3fdfdee177"><code>3fdfdee</code></a>
ci: Use taiki-e/checkout-action action</li>
<li><a
href="0f8053d9af"><code>0f8053d</code></a>
ci: Use cargo-hack's --rust-version flag for msrv check</li>
<li>See full diff in <a
href="https://github.com/smol-rs/async-signal/compare/v0.2.13...v0.2.14">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>
`global.api_base_url().origin()` returns a unique opaque origin when the
base URL is an opaque origin. When we use the global's origin instead,
requests for claimed blobs can now pass the same-origin check.
Testing: Newly passing tests.
Fixes: #43326Fixes: #43973
---------
Signed-off-by: Josh Matthews <josh@joshmatthews.net>
Removed ```introduction_type_override``` field from
```HTMLScriptElement``` & passed the new variable to
```fetch_inline_module_script```
Testing: No testing required, compiles successfully.
Fixes: #43980
Signed-off-by: Sabb <sarafaabbas@gmail.com>
The origin of a `file` URL is unspecified. Engines act like they're
opaque except in a few special cases - one of which is the "is
potentially trustworthy" algorithm. This change allows consumers of
`servo-url` to distinguish between regular opaque origins and file
origins. Then we use that to mark file origins as "potentially
trustworthy" which is what the spec wants.
For now we can get away without changes to the `url` crate (the one used
in the wider ecosystem, not just servo), but I'm unsure if that will be
the case in the future.
Testing: This change adds a test
Fixes: https://github.com/servo/servo/issues/42540
---------
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
ParseFromString currently complains that it matches multiple trace
lines. The reason for that is a bit unclear as it should only produce
one alert. Local testing shows that it produces multiple (even for one
run). This should at least give us the metric back.
Testing: This is currently untested. As it is a small CI change that
can't break a broken test it should be fine.
Fixes: https://github.com/servo/servo/issues/42992
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
DevTools was collecting CSS rules by walking stylesheets and matching
selector text. This ignored cascade order and did not correctly handle
rules inside layer blocks.
This change uses computed values (rule tree) to get the actual applied
rules in cascade order. It then maps those rules back to CSSStyleRule
using the declaration block identity, and walks the CSSOM to get
selector text and layer ancestry.
This fills ancestor_data with layer names and lets the inspector show
layered rules correctly.
Testing:
- Verified using the minimized testcase from the issue
- Verified on https://www.sharyap.com/
- Confirmed that rules inside layer blocks are now shown with correct
order and hierarchy.
Fixes: #43541
Signed-off-by: arabson99 <arabiusman99@gmail.com>
`performance.timing` is not going anywhere anytime soon. Deprecating it
is none of servo's concern. The spec links are also outdated.
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
Fixes crashes when stepping in certain situations.
Testing: Ran `mach test-devtools` and manual testing
Part of: #36027
Signed-off-by: eri <eri@igalia.com>
Co-authored-by: atbrakhi <atbrakhi@igalia.com>
Check if rustup is available before calling it.
If it is not found, skip the step with a warning instead of crashing.
This allows users who installed Rust through their distribution's
package manager (without rustup) to build Servo without errors.
Three places were updated:
- In command_base.py I added a skip automatic target installation for
cross-compilation
- In base.py, I added the skip toolchain installation
- In, bootstrap_commands.py , it is a skip clean-nightlies if rustup not
found
Fixes: #43871
Signed-off-by: Messi002 <rostandmessi2@gmail.com>
Testing: We do not currently have a way to test signal handling in the
servoshell binary, so this change does not include tests.
Fixes: #43836
---------
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
Bumps [zerofrom](https://github.com/unicode-org/icu4x) from 0.1.6 to
0.1.7.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/unicode-org/icu4x/blob/main/CHANGELOG.md">zerofrom's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<h2>icu 2.2.x</h2>
<p>Several crates have had patch releases in the 2.2 stream:</p>
<ul>
<li>Components
<ul>
<li>(2.2.1) <code>icu_calendar</code>
<ul>
<li>Fix extended year calculations in Gregorian-like and Coptic-like
calendars (unicode-org#7849)</li>
</ul>
</li>
</ul>
</li>
</ul>
<h2>icu4x 2.2</h2>
<ul>
<li>Components
<ul>
<li>General
<ul>
<li>Use HTTPS links in docs (unicode-org#7212)</li>
<li>Update MSRV to 1.86 (unicode-org#7576)</li>
<li>Updated to CLDR 48.2 (unicode-org#7792)</li>
<li>Replace <code>experimental</code> features with
<code>unstable</code> features (unicode-org#7566)</li>
<li>Add categories and keywords to Cargo.toml for all components
(unicode-org#7737)</li>
</ul>
</li>
<li><code>icu_calendar</code>
<ul>
<li>Add <code>Date::try_new</code>, which replaces
<code>Date::try_new_from_codes</code>, and takes typed year/month
values. (unicode-org#7773, unicode-org#7764)</li>
<li>New methods: <code>Date::try_new</code> (and primarily-internal
<code>Calendar::new_date</code>)</li>
<li>New types: <code>InputYear</code>, <code>DateNewError</code></li>
<li>Handle possible <code>Overflow</code> values on individual calendars
(unicode-org#7795)</li>
<li>New <code>Date::try_from_fields</code> API for fully general date
construction from various choices of year and month values
(unicode-org#7798)</li>
<li>New methods: <code>Date::try_from_fields()</code></li>
<li>New types: <code>DateFields</code>,
<code>DateFromFieldsOptions</code>, <code>Overflow</code>,
<code>MissingFieldsStrategy</code>,
<code>DateFromFieldsError</code></li>
<li>New associated method: <code>Calendar::from_fields()</code></li>
<li>New Date arithmetic APIs for adding and subtracting dates
(unicode-org#7798, unicode-org#7355, unicode-org#7257)</li>
<li>New methods: <code>Date::try_add_with_options</code>,
<code>Date::try_added_with_options</code>,
<code>Date::try_until_with_options</code></li>
<li>New types: <code>DateDuration</code>, <code>DateAddOptions</code>,
<code>DateDifferenceOptions</code>, <code>DateDurationUnit</code>,
<code>DateDurationParseError</code>, <code>DateAddError</code>,
<code>MismatchedCalendarError</code></li>
<li>New associated items: <code>Calendar::add</code>,
<code>Calendar::until</code>,
<code>Calendar::DateCompatibilityError</code></li>
<li>Introduce a new <code>Month</code> type, preferred over using month
codes (unicode-org#7147, unicode-org#7756)
<ul>
<li>New type: <code>Month</code></li>
<li>New method: <code>MonthInfo::to_input()</code></li>
</ul>
</li>
<li>Introduce year/date ranges to all APIs, documented on the APIs
themselves. <code>Date</code> now has a fundamental range (ISO years
between ±999,999), and most constructors enforce a stricter range of
±9999 years for input years. (unicode-org#7676, unicode-org#7062,
unicode-org#7629, unicode-org#7753, unicode-org#7219,
unicode-org#7227)</li>
<li>Add constructors with <code>Month</code> for lunisolar calendars
(unicode-org#7485)</li>
<li>New methods: <code>Date::try_new_korean_traditional()</code>,
<code>Date::try_new_chinese_traditional()</code>,
<code>Date::try_new_hebrew_v2()</code></li>
<li>Expose <code>LeapStatus</code> on <code>MonthInfo</code>
(unicode-org#7667)</li>
<li>New method: <code>MonthInfo::leap_status()</code></li>
<li>New enum: <code>LeapStatus</code></li>
<li>(Unstable) Integrate with <code>chrono</code>, <code>jiff</code>,
and <code>time</code> (unicode-org#7617, unicode-org#7711)</li>
<li>New impls: <code>From<chrono::NaiveDate></code>,
<code>From<jiff::civil::Date></code>,
<code>From<time::Date></code> for
<code>Date<Gregorian></code></li>
<li>Replace <code>Date::day_of_week</code> by <code>Date::weekday</code>
(unicode-org#7288)
<ul>
<li>New method: <code>Date::weekday()</code></li>
</ul>
</li>
<li>Deprecate <code>Date::new_from_iso</code>/<code>Date::to_iso</code>
(unicode-org#7287)</li>
<li>Deprecate <code>Date::extended_year()</code> (use
<code>Date::year().extended_year()</code>) (unicode-org#7289)</li>
<li>Remove <code>YearInfo: PartialEq</code> bound
(unicode-org#7743)</li>
<li>Start producing Meiji era only after Meiji 6 (unicode-org#7503)</li>
</ul>
</li>
</ul>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/unicode-org/icu4x/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>
Renames local variables holding a `ThreadActor` instance to
`thread_actor`, following the `{}_actor` convention for actor variables
as described in #43606.
Changes:
- `actors/thread.rs`: `actor` → `thread_actor` in
`ThreadActor::register()`
- `lib.rs`: `thread` → `thread_actor` in
`handle_notifyscriptinterrupted` and `handle_create_frame_actor`
Part of #43606.
Signed-off-by: thebabalola <t.babalolajoseph@gmail.com>
Signed-off-by: eri <eri@igalia.com>
Co-authored-by: eri <eri@igalia.com>
Renames local variable holding a `SourceActor` instance to
`source_actor`, following the `{}_actor` convention for actor variables
as described in #43606.
Changes:
- `actors/source.rs`: `actor` → `source_actor` in
`SourceActor::register()`
Part of #43606.
Signed-off-by: thebabalola <t.babalolajoseph@gmail.com>
Renames local variable `worker` to `worker_actor` in `lib.rs` and
`root.rs`, following the `{}_actor` convention for actor struct
variables and `{}_name` for actor name string variables established in
#43606.
Also adds a `WorkerActor::register()` method (part of #43800), replacing
the inline struct construction in `lib.rs` with a consistent pattern
pattern matching other actors like `ThreadActor` and `SourceActor`.
**Changes:**
- `actors/worker.rs`: Add `WorkerActor::register()` method
- `actors/root.rs`: Rename `worker` → `worker_actor` in
`listServiceWorkerRegistrations` handler
- `lib.rs`: Replace inline struct construction with
`WorkerActor::register()` call
**Testing:** No testing required, compiles successfully.
Fixes: Part of #43606
Fixes: Part of #43800
Signed-off-by: thebabalola <t.babalolajoseph@gmail.com>
Add an internal macro to avoid duplication, and use that to implement
the existing two `trace` and `info` macros and add `debug_span`. We skip
`warn` and `error` (from the tracing-rs library), since those names
don't fit our profiling usage too well, and 3 different levels should
also be enough. If we need more levels in the future we could still add
more macros than (after deciding on better names than warn and error)
Testing: Servo is built with the tracing feature in CI (for HarmonyOS)
---------
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
`blob` URLs have a implicit blob URL entry attached, which stores the
data contained in the blob. The specification requires this entry to be
resolved as the URL is parsed. We only resolve it inside `net` when
loading the URL. That causes problems if the blob entry has been revoked
in the meantime - see https://github.com/servo/servo/issues/25226.
Ideally we would want to resolve blobs at parse-time as required. But
because `ServoUrl` is such a fundamental type, I've not managed to do
this change without having to touch hundreds of files at once.
Thus, we now require passing a `UrlWithBlobClaim` instead of a
`ServoUrl` when `fetch`-ing. This type proves that the caller has
acquired the blob beforehand.
As a temporary escape hatch, I've added
`UrlWithBlobClaim::from_url_without_having_claimed_blob`. That method
logs a warning if its used unsafely. This method is currently used in
most places to keep this change small. Only workers now acquire the blob
beforehand.
Testing: A new test starts to pass
Part of https://github.com/servo/servo/issues/43326
Part of https://github.com/servo/servo/issues/25226
---------
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
Co-authored-by: Josh Matthews <josh@joshmatthews.net>
This makes the most basic tests pass for the font-size command. Future
PR's will continue the work,
but since this is already large enough, this is a good save point.
Part of #25005
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
Removed the ```.unwrap()``` in ```add_new_environment``` causing the
storage thread to panic on SQLite failures
Testing: Ran ```./mach test-wpt tests/wpt/tests/webstorage/```
Result;
```
▶ TIMEOUT [expected OK] /webstorage/storage_local_setitem_quotaexceedederr.window.html
Ran 53 tests finished in 63.9 seconds.
• 52 ran as expected.
• 1 tests timed out unexpectedly
```
Fixes: #43880
---------
Signed-off-by: Sabb <sarafaabbas@gmail.com>
Let `word_spacing` be optional in `ShapingOptions` like
`letter_spacing`. In addition, send `None` for Canvas rendering instead
of the width of the space character. It is supposed to represent *extra*
space added between words. Finally, remove duplicated code that applied
word and letter spacing for the fast shaper. This can just reuse the
code from the Harfbuzz shaper.
Testing: This causes some canvas tests to start passing.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Fix object-store key range handling
Testing: key range handling wpt test fixed.
Fixes: part of #40983
---------
Signed-off-by: Taym Haddadi <haddadi.taym@gmail.com>
Replaced new with register for LayoutInspectorActor in walker.rs &
layout.rs
Testing: No testing required, compiles successfully.
Fixes: Part of #43800
Signed-off-by: Sabb <sarafaabbas@gmail.com>
Replaced new with register for TargetConfigurationActor in
target_configuration.rs & watcher.rs
Testing: No testing required, compiles successfully.
Fixes: Part of #43800
Signed-off-by: Sabb <sarafaabbas@gmail.com>
Implement render-blocking option for script fetch and load events
## Testing:
### Test summary on main branch
```bash
▶ OK [expected CRASH] /html/semantics/scripting-1/the-script-element/moving-between-documents/move-back-createHTMLDocument-success-external-module.html
Ran 470 tests finished in 217.9 seconds.
• 453 ran as expected.
• 4 tests crashed unexpectedly
• 1 tests timed out unexpectedly
• 11 tests unexpectedly okay
• 2 tests had unexpected subtest results
/home/elomscansio/.local/share/uv/python/cpython-3.11.15-linux-x86_64-gnu/lib/python3.11/multiprocessing/resource_tracker.py:254: UserWarning: resource_tracker: There appear to be 3 leaked semaphore objects to clean up at shutdown
warnings.warn('resource_tracker: There appear to be %d '
```
### Test summary for this commits
```bash
Ran 470 tests finished in 488.0 seconds.
• 397 ran as expected.
• 15 tests crashed unexpectedly
• 27 tests timed out unexpectedly
• 11 tests unexpectedly okay
• 28 tests had unexpected subtest results
```
Fixes: #43697Fixes: #43354
---------
Signed-off-by: Emmanuel Paul Elom <elomemmanuel007@gmail.com>
Signed-off-by: elomscansio <163124154+elomscansio@users.noreply.github.com>
Signed-off-by: Gae24 <96017547+Gae24@users.noreply.github.com>
Co-authored-by: Gae24 <96017547+Gae24@users.noreply.github.com>
Replaced new with register for AccessibleWalkerActor in accessibility.rs
Testing: No testing required, compiles successfully.
Fixes: Part of #43800
Signed-off-by: Sabb <sarafaabbas@gmail.com>
Servo may hide and show IME when handling `blur` and `focus` events, but
those events can be fired asynchronously when `<iframe>`s are involved.
This change ensures that we only dismiss the IME when it was the
most-recently opened one, making it so that an asynchronously fired
'blur' event for another control doesn't dismiss a newly opened one.
Testing: We don't really have testing for this level of servoshell.
Signed-off-by: Martin Robinson <mrobinson@fastmail.fm>
Co-authored-by: Martin Robinson <mrobinson@fastmail.fm>
Replaced new with register for PauseActor in pause.rs & lib.rs
Testing: No testing required, compiles successfully.
Fixes: Part of #43800
Signed-off-by: Sabb <sarafaabbas@gmail.com>
Replaced new with register for WatcherActor in browsing_context &
watcher.rs
Testing: No testing required, compiles successfully.
Fixes: Part of #43800
---------
Signed-off-by: Sabb <sarafaabbas@gmail.com>
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
Co-authored-by: Mukilan Thiyagarajan <mukilan@igalia.com>
Stores the compiled JSScript pointer in a rooted location that is
traceable by the GC. This fixes a crash observed in an experimental C#
Servo binding that could not be reproduced in servoshell.
Testing: No automated deterministic way to trigger this problem.
---------
Signed-off-by: Tim Miller <innerlogic4321@gmail.com>
TL;DR: We increase stack size of `ScriptThread` to 8MiB, and set Stylo
stack size environment var
to 8 MiB for all builds. This only reserves virtual memory space which
is
basically unlimited for 64-bit machine,
matches the recursion depth of Chromium for the example, which also uses
8MiB.
Stylo stack increase is necessary to prevent overflow when
refreshing/navigating to the example,
probably because initial load restyle incrementally but not refresh.
Testing: Added a Servo-specific test.
---
For example in #43845, we get stack overflow when we got more than 394
nested shadow roots.
For Chromium, it happens for more than 1631:
<img width="290" height="127" alt="image"
src="https://github.com/user-attachments/assets/b3d75627-4e80-4586-9b85-4b58d8a0cd33"
/>
For Firefox, it overflows for more than 1052.
Initially I thought we didn't implement this optimally, and have
unnecessary recursion depth.
But the real reason is explained in Rust std:
> The default stack size is platform-dependent and subject to change.
Currently, it is 2 MiB on all Tier-1 platforms.
For Chromium, the visual studio dumpbin shows the stack size :
```
Dump of file C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe
OPTIONAL HEADER VALUES
800000 size of stack reserve
```
This is hex value, which is $8*16^5$, exactly 8MiB.
After we make the same change in Servo, we are fine at 1601 and
overflows at 1602.
This matches Chromium behaviour, defeating firefox, and should not
create much overhead,
as this only reserves virtual memory space:
I tried to increase the value to 512MiB, but task manager still says
73MB RAM used,
and we won't crash even with 10000 nested shadow roots.
But that is just for more evidence and uncalled for.
Fixes: #43845
---------
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
[//]: # (dependabot-start)
⚠️ **Dependabot is rebasing this PR** ⚠️
Rebasing might not happen immediately, so don't worry if this takes some
time.
Note: if you make any changes to this PR yourself, they will take
precedence over the rebase.
---
[//]: # (dependabot-end)
Bumps [semver](https://github.com/dtolnay/semver) from 1.0.27 to 1.0.28.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dtolnay/semver/releases">semver's
releases</a>.</em></p>
<blockquote>
<h2>1.0.28</h2>
<ul>
<li>Documentation improvements</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="7625c7aa3f"><code>7625c7a</code></a>
Release 1.0.28</li>
<li><a
href="fd404d082c"><code>fd404d0</code></a>
Merge pull request 351 from czy-29/master</li>
<li><a
href="f75f26e984"><code>f75f26e</code></a>
The <code>doc_auto_cfg</code> and <code>doc_cfg</code> features have
been merged</li>
<li><a
href="9e2bfa2ec8"><code>9e2bfa2</code></a>
Enable <code>serde</code> on <code>docs.rs</code> and automatically add
<code>serde</code> flag to the docs</li>
<li><a
href="8591f2344b"><code>8591f23</code></a>
Unpin CI miri toolchain</li>
<li><a
href="66bdd2ce5f"><code>66bdd2c</code></a>
Pin CI miri to nightly-2026-02-11</li>
<li><a
href="324ffce5d9"><code>324ffce</code></a>
Switch from cargo bench to criterion</li>
<li><a
href="34133a568a"><code>34133a5</code></a>
Update actions/upload-artifact@v5 -> v6</li>
<li><a
href="7f935ffc72"><code>7f935ff</code></a>
Update actions/upload-artifact@v4 -> v5</li>
<li><a
href="c07fb91353"><code>c07fb91</code></a>
Switch from test::black_box to std::hint::black_box</li>
<li>Additional commits viewable in <a
href="https://github.com/dtolnay/semver/compare/1.0.27...1.0.28">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 [arc-swap](https://github.com/vorner/arc-swap) from 1.9.0 to
1.9.1.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/vorner/arc-swap/blob/master/CHANGELOG.md">arc-swap's
changelog</a>.</em></p>
<blockquote>
<h1>1.9.1</h1>
<ul>
<li>One more SeqCst :-| (<a
href="https://redirect.github.com/vorner/arc-swap/issues/204">#204</a>).</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="f100e6c2ee"><code>f100e6c</code></a>
One more SeqCst</li>
<li>See full diff in <a
href="https://github.com/vorner/arc-swap/compare/v1.9.0...v1.9.1">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 the gstreamer-related group with 1 update:
[glib](https://github.com/gtk-rs/gtk-rs-core).
Updates `glib` from 0.22.3 to 0.22.4
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/gtk-rs/gtk-rs-core/releases">glib's
releases</a>.</em></p>
<blockquote>
<h2>0.22.4</h2>
<pre><code>Bilal Elmoussaoui:
glib: Allow setting FINAL/DEPRECATED flags
ci: Only run compile tests on glib crate
Fix typos job
<p>Ignacio Casal Quinteiro:
glib-win32: fix export of function</p>
<p>Sebastian Dröge:
Update gir / gir-files
Regenerate with latest gir / gir-files
rustfmt: Update to 2024 edition
glib: Make sure to acquire the main context and make it thread default
in <code>MainContext::block_on()</code>
glib: Add various <code>#[allow(deprecated)]</code> to
<code>glib::wrapper!</code> for when the parent class/interface is
deprecated
Update versions to 0.22.4
</code></pre></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="48b79229f2"><code>48b7922</code></a>
Revert "gio: Add "D-Bus" and "DBus" to
Cargo.toml keywords and description"</li>
<li><a
href="42be84cb2e"><code>42be84c</code></a>
Update versions to 0.22.4</li>
<li><a
href="0835bbce70"><code>0835bbc</code></a>
glib: Add various <code>#[allow(deprecated)]</code> to
<code>glib::wrapper!</code> for when the par...</li>
<li><a
href="dc7961a302"><code>dc7961a</code></a>
gio: Add "D-Bus" and "DBus" to Cargo.toml keywords
and description</li>
<li><a
href="8377bd2cc7"><code>8377bd2</code></a>
glib-win32: fix export of function</li>
<li><a
href="d77af0b6c3"><code>d77af0b</code></a>
Fix typos job</li>
<li><a
href="9ea24d8403"><code>9ea24d8</code></a>
ci: Only run compile tests on glib crate</li>
<li><a
href="a9d5040cb4"><code>a9d5040</code></a>
glib: Allow setting FINAL/DEPRECATED flags</li>
<li><a
href="aae7fcb22c"><code>aae7fcb</code></a>
glib: Make sure to acquire the main context and make it thread default
in `Ma...</li>
<li><a
href="fac3d07f2a"><code>fac3d07</code></a>
rustfmt: Update to 2024 edition</li>
<li>Additional commits viewable in <a
href="https://github.com/gtk-rs/gtk-rs-core/compare/0.22.3...0.22.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 <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>
Enable `CJK-aware` line breaking in inline layout so Chinese/Japanese
text gets proper wrap opportunities instead of overflowing containers.
Testing: some WPT are now passing
---------
Signed-off-by: SharanRP <z8903830@gmail.com>
Replaced new with register for TabDescriptorActor in browsing_context &
tab.rs
Testing: No testing required, compiles successfully.
Fixes: Part of #43800
Signed-off-by: Sabb <sarafaabbas@gmail.com>
A lot (and I mean, really a lot) depends on these constructors.
Therefore, this is the one spaghetti ball that I could extract and
convert all `can_gc` to `cx`. There are some new introductions of
`temp_cx` in the callbacks of the servo parser, but we already had some
in other callbacks.
Part of #40600
Testing: It compiles
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
Migrates all but one `CanGc::note()` to `cx`. The
last one requires `invoke_script_environment_preparer` to have a safe
hook in mozjs.
Part of #40600
Testing: It compiles
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
This change makes it so that when you press alt or control (depending on
the platform) while backspacing, entire words are deleted. This matches
the behavior of the major desktop platforms.
Testing: This change adds a Servo-specific test for this behavior as
well
as for normal backspacing.
Signed-off-by: Martin Robinson <mrobinson@fastmail.fm>
Co-authored-by: Martin Robinson <mrobinson@fastmail.fm>
Move interfaces defined by the Web Crypto specification to the
`script/dom/webcrypto/` from `script/dom/`. This includes `Crypto`,
`CryptoKey` and `SubtleCrypto` (with its submodules).
Testing: No behavior changes.
Fixes: Part of #38901
Signed-off-by: Kingsley Yung <kingsley@kkoyung.dev>
This commit removes some unneeded lines from README.md in the
linux_packages folder. This will trigger `book-export` to run, since it
creates a diff in that folder.
Since the export only happens if there is a diff, and there have been
not changes since the auto sync PR landed, the formatting related
changes never got upstreamed (sorting the packages).
This also duplicates as a test of the #43920 (merged), to be absolutely
sure that it works as intended.
Testing: not required / in a way this is a test of our book-export
action.
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
Replaced new with register for ThreadConfigurationActor in
thread_configuration.rs & watcher.rs
Testing: No testing required, compiles successfully.
Fixes: Part of #43800
Signed-off-by: Sabb <sarafaabbas@gmail.com>
Previously the mode is always "". Now we set it to the real profile.
Note that previously, all the build has 2MiB stylo thread stack size,
which is unintended.
What we wanted is to make it so for debug build, and 8MiB for ASAN.
Now, those other than debug/ASAN would have 512KiB default stack size
again.
Testing: Manually tested and printed the mode at
0b6b97384d/python/servo/command_base.py (L419-L420).
Fixes: #43927
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
Replaced the hand-written CONTENT_EVENT_HANDLER_NAMES list in
eventtarget.rs with an auto-generated version. A new
ContentEventHandlerNames method in codegen.py iterates through WebIDL
descriptors whose prototype chain includes Node, collects attribute
members with EventHandler callback types, and generates a sorted,
duplicate free Rust array. The list is included from eventtarget.rs
eliminating manual maintenance and ensuring it stays in sync
automatically.
Testing: Build passes with cargo build -j2 -p servo-script. The
generated ContentEventHandlerNames.rs produces the same set of event
handler names as the previous hand-written list. No new runtime tests
are needed since this is a compile time change.
Fixes: #43611
Signed-off-by: staysafe020 <jambongralpher@gmail.com>
Replaced new with register for ProcessActor in process.rs & root.rs
Testing: No testing required, compiles successfully.
Fixes: Part of #43800
Signed-off-by: Sabb <sarafaabbas@gmail.com>
Replaced new with register for AccessibilityActor in browsing_context &
accessibility.rs
Testing: No testing required, compiles successfully.
Fixes: Part of #43800
---------
Signed-off-by: Sabb <sarafaabbas@gmail.com>
We defined a github environment `book-sync` which contains the required
secrets.
After merging this PR we can remove the secrets from the per-repository
secrets, which reduces the scope the secrets are available in, and has
the added restriction of only being available on protected branches.
Testing: Prior to this PR, the functionality was tested on the
`environments` branch and discussed in the maintainers chat. After this
PR is merged, a manual check should be done to ensure the book-export
workflow still continues to work as expected.
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
This is an initial implementation for `relatedTarget` of `focus` and
`blur` events. As the code doesn't yet follow the specification this is
a bit tricky to associate with specification text, but this should be
correct. A later change will adapt the code to the "focusing steps" part
of the specification.
In addition, a duplicated call to `Element::set_focus_state` is removed.
Testing: This gets one more WPT test passing.
Signed-off-by: Martin Robinson <mrobinson@fastmail.fm>
Co-authored-by: Martin Robinson <mrobinson@fastmail.fm>
Replaced new with register for NetworkEventActor in network_event.rs &
lib.rs
Testing: No testing required, compiles successfully.
Fixes: Part of #43800
Signed-off-by: Sabb <sarafaabbas@gmail.com>
Replaced new with register for BrowsingContextActor in
browsing_context.rs & lib.rs
Testing: No testing required, compiles successfully.
Fixes: Part of #43800
---------
Signed-off-by: Sabb <sarafaabbas@gmail.com>
This name was mistyped during the rename of the servo crates to be
`servo-` prefixed.
Testing: Manual testing with `./mach build --with-asan`. This is not run
in CI.
Signed-off-by: Jonathan Schwender <55576758+jschwe@users.noreply.github.com>
Replaced new with register for PerformanceActor in performance.rs &
root.rs
Testing: No testing required, compiles successfully.
Fixes: Part of #43800
---------
Signed-off-by: Sabb <sarafaabbas@gmail.com>
Replaced new with register for ThreadActor in browsing_context,
thread.rs & lib.rs
Testing: No testing required, compiles successfully.
Fixes: Part of #43800
---------
Signed-off-by: Sabb <sarafaabbas@gmail.com>
Replaced new with register for BreakpointListActor in breakpoint.rs &
watcher.rs
Testing: No testing required, compiles successfully.
Fixes: Part of #43800
Signed-off-by: Sabb <sarafaabbas@gmail.com>
Rather than specifying a cx for every single CSS property from Stylo, we
instead make it implicit. This allows us to remove the `CanGc::note()`
from the macro and pass in the `cx` as normal.
We can use a similar approach for setters in other elements where we use
the setter macros.
Part of #42812
Testing: It compiles
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
Replaced new with register for CssPropertiesActor in browsing_context &
css_properties.rs
Testing: No testing required, compiles successfully.
Fixes: Part of #43800
Signed-off-by: Sabb <sarafaabbas@gmail.com>
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
Co-authored-by: Mukilan Thiyagarajan <mukilan@igalia.com>
Replaced new with register for NetworkParentActor in network_parent.rs &
watcher.rs
Testing: No testing required, compiles successfully.
Fixes: Part of #43800
Signed-off-by: Sabb <sarafaabbas@gmail.com>
Replaced new with register for ReflowActor in browsing_context &
reflow.rs
Testing: No testing required, compiles successfully.
Fixes: Part of #43800
Signed-off-by: Sabb <sarafaabbas@gmail.com>
<https://heycam.github.io/webidl/#es-operations>
<https://html.spec.whatwg.org/multipage/#integration-with-idl>
This PR implements the IDL security check, which is an important (but
not only) mechanism to restrict cross-origin DOM accesses.
This implementation follows WebKit's behavior and not the specification
for the following reasons:
- Neither Gecko nor WebKit implements the specification's behavior.
- This would require a relatively elaborate mechanism *just* to have
access to the target object's `CrossOriginProperties`.
---
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [ ] These changes fix #___ (GitHub issue number if applicable)
---
- [x] There are tests for these changes OR
- [ ] These changes do not require tests because ___
---------
Signed-off-by: Josh Matthews <josh@joshmatthews.net>
Co-authored-by: Josh Matthews <josh@joshmatthews.net>
This removes from the output of `./mach test-unit` hundreds of lines
like:
```
PASS [ 0.011s] style_tests str::test_str_join_empty
```
Signed-off-by: Simon Sapin <simon@igalia.com>
Abort pending upgrade requests when a worker closes, correctly roll back
newlyy created databases by deleting backend state on old_version == 0.
Testing: IndexedDB/worker-termination-aborts-upgrade.window.js.ini test
pass.
part of https://github.com/servo/servo/issues/40983
---------
Signed-off-by: Taym Haddadi <haddadi.taym@gmail.com>
Part of a larger refactor to name all actors and variables consistently,
#43800.
Testing: not necessary beyond `mach test-devtools` per #43800 / #43606
Fixes: `#43800` ((not linking because it's one of many PR's).
Signed-off-by: Martijn Gribnau <garm@ilumeo.com>
The WebIDL file for `HTMLElement` was quite out of date. This change
makes it match the current HTML specification and also moves `blur()` to
`HTMLOrSVGElement` as it is in the spec. The implementation is just a
copy of the one for `HTMLElement` as we do for `focus()`.
Testing: This should not change behavior (other than adding a `blur()`
method
for SVG -- which we don't support), so should be covered by existing
tests.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
We support these setting these as attributes on the `<table>` element
itself, so I suppose it also makes sense to support their DOM APIs as
well. This trades a teensy bit of code for compatability with a some old
web content.
Testing: This causes a handful of reflection subtests to start passing.
There
isn't much testing for the behavior of the attributes, but this is
legacy
behavior so it sort of makes sense.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Replace new with register for ConsoleActor in console & lib.rs
Testing: No testing required, compiles successfully.
Fixes: Part of #43800
Signed-off-by: Sabb <sarafaabbas@gmail.com>
We receive the `Ime::Disabled` event both when the user dismisses the
IME and
when Servo itself dismisses it (for instance, when changing focus on the
page).
Servo will blur the current element upon receiving
`ImeEvent::Dismissed`,
leading to spurious focus behavior. Address this by only sending this
message
to Servo when it was triggered by the user (as best as we can tell).
This
problem was revealed by improvements in the internal focus APIs.
This is a bit of a bandaid until we have a more robust IME API. There
are
still missing pieces in both Servo and in winit.
Testing: This is a bit tricky to test as it depends a lot on when
messages are
sent to servoshell from winit / the windowing system and when Servo
processes
focus events.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
This functionality was moved to the `GamepadDelegate`, but the old
delegate methods were never removed. They are currently unused.
Testing: This change just removes dead code, so no tests are necessary.
Fixes: #43743
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
One warning remains:
```
warning: public documentation for `intercept` links to private item `InterceptedWebResourceLoad`
--> components/servo/webview_delegate.rs:240:11
|
240 | /// [`InterceptedWebResourceLoad`].
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ this item is private
|
= note: this link resolves only because you passed `--document-private-items`, but will break without
= note: `#[warn(rustdoc::private_intra_doc_links)]` on by default
warning: `servo` (lib doc) generated 1 warning
```
I think that's a false positive, because `InterceptedWebResourceLoad`
*is* public.
Testing: We don't run `./mach doc` in CI, so there's no way to test this
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
Replace new with register for DeviceActor in device & root.rs
Testing: No testing required, compiles successfully.
Fixes: Part of #43800
Signed-off-by: Sabb <sarafaabbas@gmail.com>
This fixes the assertion failure (`!JS_IsExceptionPending(*cx)`) that
happens when `console.log()` is called on a cross-origin location object
(e.g. `console.log(frame.contentWindow.location)`).
The problem was that `maybe_stringify_dom_object` calls `ToString` on
cross-origin objects, which throws a JS exception via the
`DissimilarOriginLocation` stringifier. That exception was never
cleared, so subsequent JS API calls would hit the assertion.
The fix refactors `console_argument_from_handle_value` using an
inner/outer function pattern based on @jdm's suggestion:
- The inner function returns `Result<ConsoleArgument, ()>` and returns
`Err(())` when `console_object_from_handle_value` returns `None` for an
object, instead of falling through to `stringify_handle_value` which
could trigger the same crash
- The outer function catches the `Err`, reports any pending JS exception
via `report_pending_exception`, and returns a fallback `ConsoleArgument`
Fixes#43530
---
- [x] `./mach build -d` does not report any errors
- [x] `./mach fmt` produces no changes
- [x] There are tests for these changes
---------
Signed-off-by: thebabalola <t.babalolajoseph@gmail.com>
Replaced new with register for StyleSheetsActor in browsing_context &
stylesheets
Testing: No testing required, compiles successfully.
Fixes: Part of #43800
Signed-off-by: Sabb <sarafaabbas@gmail.com>
Implement the `SubtleCrypto.supports` method in our WebCrypto API. The
*check support for an algorithm* algorithm is also implemented to
support the functionality of the `SubtleCrypto.supports` method.
The `SubtleCrypto.supports` method has two overloads. One of them has a
union containing a non-object value at the distinguishing index. Our
`codegen.py` currently does not support unions of non-object values at
distinguish index. So, `codegen.py` is also patched to extend its
support to unions of objects, strings, numbers and boolean values.
Specification of `SubtleCrypto.supports`:
https://wicg.github.io/webcrypto-modern-algos/#SubtleCrypto-method-supports
Specification of "check support for an algorithm":
https://wicg.github.io/webcrypto-modern-algos/#dfn-check-support-for-algorithm
Testing:
- Pass WPT tests related to `supports` method.
- Add new tests for IDL operation overloading with unions of various
types.
Fixes: Part of #40687
---------
Signed-off-by: Kingsley Yung <kingsley@kkoyung.dev>
Changes the error message for illegal HTML element constructors like
`new HTMLElement()` from `new.target must not be the active function
object` to `Illegal constructor.`, matching Chrome, Firefox, and the
HTML spec.
Ran `./mach test-wpt tests/wpt/tests/custom-elements`. 180 tests passed
as expected, 1 pre-existing unrelated crash in `HTMLMediaElement`.
#41107
Signed-off-by: Eli Bowman <asdfup@protonmail.com>
The EventSource interface is unrelated to the other code in the event
module.
Testing: Just moving code around; no runtime impact.
Signed-off-by: Josh Matthews <josh@joshmatthews.net>
Added the top-level `/infrastructure` WPT directory to `include.ini`,
which was previously excluded by the root `skip: true` default.
- Skipped `[reftest]` as I was unsure whether the failures indicate a
real bug in Servo's reftest engine
- Skipped `[testdriver][bidi]` as BiDi WebDriver is not supported
- Added metadata for known expected failures (service workers, shared
workers, expected-fail harness tests, etc.)
- Removed stale metadata for tests that now pass
Testing:
Ran` ./mach test-wpt infrastructure/ ` before and after the change.
Before: 114 ran as expected, 69 unexpected results.
After: 166 ran as expected. Remaining 15 unexpected results are
all in /infrastructure/reftest/ which is skipped in include.ini.
Fixes: #20889
---------
Signed-off-by: CynthiaOketch <cynthiaoketch6@gmail.com>
This continues #43045
Changelog:
- Upstream:
74ddab4091...6de1071549
- Servo fixups:
9f2f4f3f1b...6cfce6f329
Stylo tracking issue: https://github.com/servo/stylo/issues/347
Summary of improvements:
- Adding support for the CSS-wide `revert-rule` keyword
- `::details-content` becomes element-backed, thus accepting nested
pseudo-elements like `::details-content::before`.
- Custom properties can now be registered using dashed idents in their
syntax
- Various `attr()` improvements
Testing: Various WPT improvements
---------
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
Rename variables associated with `PropertyIteratorActor`
Testing: Tested locally with `mach test-devtools`
Fixes: A part of #43606
Signed-off-by: Niya Gupta <niyabits@disroot.org>
The specification says that `:focus` should be active on all shadow
hosts of ancestors of focused areas. This change does that by exposing a
new `DocumentFocusHandler::set_focused_element` method and also using it
during the "removing steps." This is important because unlike the
"focusing steps" `set_focused_element` does not cause focus and blur
events.
Testing: This leads to a progression in results on 8 WPT tests.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
This continues the work to split up the large DOM structs. In this case
we create a helper struct to store focus-related state much like
`DocumentEventHandler`.
Testing: This is mostly code motion, so should be covered by existing
tests.
Fixes: #43720
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
`hyper_serde` currently has no dependants on crates.io. We give up the
independant versioning and simplify our setup by using the same version
as our workspace. The new crate is servo-hyper-serde.
Testing: Not required, policy change.
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
`DocumentOrShadowRoot#activeElement` should return retargeted results.
What that means is that if the DOM anchor of the `Document`'s focused
focusable area is within a shadow root, `Document#activeElement` should
return the shadow host. This change implements that behavior, properly
returning the `activeElement` from both `Document` and `ShadowRoot`.
Testing: This causes a decent number of WPT tests and subtests to start
passing. One subtest starts to fail, because it uses the `autofocus`
attribute
which we do not yet support.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Before we had seperate parsing functions for preview and scopes. In this
change we merge them into one.
Testing: current tests are passing, also tested manually.
Fixes: #36027
Signed-off-by: atbrakhi <atbrakhi@igalia.com>
Co-authored-by: eri <eri@igalia.com>
When navigating to a fragment the specification says to run the focusing
steps. This is possible now that the focusing steps are properly
exposed. This change also adds support for the fallback option, which is
used when the focus target is not associated with a focuable area. In
this case the fallback is to focus the viewport.
Testing: This change adds a new WPT for this behavior, which was
seemingly not tested before.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
This implements MallocSizeOf for a couple more types and removes some
"ignore_malloc_size_of" throughout the codebase.
- std::path::PathBuf
- tokio::sync::oneshot::Sender
- http::HeaderMap (with a reasonable approximation of iterating over all
headers)
- data_url::Mime by looking at the inner type
- http::Method: Is an enum internally
- urlpattern::Urlpattern: Iterating over all public fields that are
strings as an approximation.
Testing: We cannot test if MallocSizeOf is correct currently.
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
This moves step 23 to the end of the algorithm and also updates the spec
steps related to JavaScript navigations.
Testing: WPT
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
These were here 10 years ago.
1. All Actor names are already immutable:
- All actor implementations store a name: String field set at
construction and never mutate it.
- The name is only used as key by `ActorRegistry` to look up
2. There is no `register_later`
---------
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
Added a "Creating a WebView" section to the `WebView` doc comment
explaining that `WebViewBuilder` is the correct way to create a
`WebView`, with a usage example. Also expanded the `WebViewBuilder` doc
comment to be more descriptive.
Fixes: #43712
Signed-off-by: Kelechi Ebiri <ebiritg@gmail.com>
Bumps the wayland-related group with 5 updates:
| Package | From | To |
| --- | --- | --- |
| [wayland-client](https://github.com/smithay/wayland-rs) | `0.31.13` |
`0.31.14` |
| [wayland-cursor](https://github.com/smithay/wayland-rs) | `0.31.13` |
`0.31.14` |
| [wayland-protocols](https://github.com/smithay/wayland-rs) | `0.32.11`
| `0.32.12` |
| [wayland-protocols-plasma](https://github.com/smithay/wayland-rs) |
`0.3.11` | `0.3.12` |
| [wayland-protocols-wlr](https://github.com/smithay/wayland-rs) |
`0.3.11` | `0.3.12` |
Updates `wayland-client` from 0.31.13 to 0.31.14
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/smithay/wayland-rs/commits">compare
view</a></li>
</ul>
</details>
<br />
Updates `wayland-cursor` from 0.31.13 to 0.31.14
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/smithay/wayland-rs/commits">compare
view</a></li>
</ul>
</details>
<br />
Updates `wayland-protocols` from 0.32.11 to 0.32.12
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/smithay/wayland-rs/commits">compare
view</a></li>
</ul>
</details>
<br />
Updates `wayland-protocols-plasma` from 0.3.11 to 0.3.12
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/smithay/wayland-rs/commits">compare
view</a></li>
</ul>
</details>
<br />
Updates `wayland-protocols-wlr` from 0.3.11 to 0.3.12
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/smithay/wayland-rs/commits">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 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>
Standardize variable naming in `WalkerActor` (`walker.rs`), renaming
`node` → `node_name` in `find_child` to follow the `{}_name` convention.
Testing: `./mach test-devtools`, all 60 tests pass.
Fixes: Part of #43606
Signed-off-by: Eli Bowman <asdfup@protonmail.com>
Fix child element disappearing when parent has mixed overflow
clip/visible
When a parent element clips overflow on one axis but not the other (e.g.
overflow-y: clip with overflow-x: visible), the non-clipped axis was
using f32::MIN/f32::MAX. On screens with a device pixel ratio above 1,
this causes child elements to disappear.
The fix uses LayoutRect::max_rect() instead.
Testing: Reproduced the bug using --device-pixel-ratio 2 on Linux and
the child disappears on main branch but renders correctly with this fix.
fixes: #43599
Signed-off-by: Messi002 <rostandmessi2@gmail.com>
Even if we can reuse the box, its column group index may have changed,
e.g. due to the removal of a previous column group. So just update it.
Testing: Adding crash test
Fixes: #39142
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
`HTMLOrSVGElement#focus` specifies the "scroll into view" steps should
be run after focusing. This was happening implicitly as part of the
`Document`'s implementation of the "focusing steps." That behavior is
not in the specification, so this change moves the scrolling call to
where it is specified. Along with making the code match the
specification, this change simplifies it as well.
Testing: This should not modify behavior, so existing tests should
suffice.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
The relevant changes are in `Performance::Measure`, the rest are
comments I added.
Testing: New tests start to pass
---------
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
Changes `name` to `long_string_name`
`long_string` to `long_string_actor`
Testing: Tested locally with mach test-devtools
Fixes: A part of #43606
---------
Signed-off-by: Niya Gupta <niyabits@disroot.org>
Co-authored-by: Niya Gupta <niyabits@disroot.org>
For years Servo has had the concept of a focus transaction which was
used only to allow falling back to focusing the viewport when focusing a
clicked element failed. As this concept isn't part of the specification,
this change removes it.
Instead, a `FocusableArea` (a specification concept) is passed to
the `Document` focusing code. A `FocusableArea` might also be the
`Document`'s viewport.
As part of this change, some focus-related methods are moved to `Node`
from `Element` as the `Document` is not an `Element`. This brings the
code closer to implementing the "focusing steps" from the specification.
Testing: This should not change behavior and is thus covered by existing
tests.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Follow up of https://github.com/servo/servo/pull/43226
This also allows us to remove some `mut` declaration.
Fix some unintended Chinese quotation mark.
Testing: This is a micro-optimization which does not change visible
behaviour.
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
Remove the dependency on the `webgpu` crate if the feature is disabled.
Note: This doesn't seem to improve the binary size in production mode,
so presumably dead code elimination is already working well.
Nevertheless, it's preferable to correctly feature guard and it should
save a bit of compile-time (when not building with the webgpu feature).
Testing: `webgpu` feature is enabled by default in CI, and we test
`--no-default-features` too in the HOS build in CI. `cargo tree -p servo
--no-default-features` does not show webgpu anymore after this change.
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
In addition to making it so that textual `<input>` and `<textarea>`
share a common shadow DOM structure, this allows styling the
`<textarea>` placeholder. It is now properly shown in grey.
Testing: This fixes a few WPT tests.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
We have been working on the DevTools code and would like to have
notifications of new patches so we can review them.
Signed-off-by: eri <eri@igalia.com>
Add more tests with values other than non-default values.
Earlier tests were curated around default value. So, we never know if
anything is wrong.
Testing: Add more tests and update test expectations. Tests fail right
now, which will be dealt with in next patches. It requires two PRs to
properly fix.
---------
Signed-off-by: Shubham Gupta <shubham.gupta@chromium.org>
this patch cleans up a few minor issues in our accessibility code:
- we remove the initial synchronous TreeUpdate in
[WebView::set_accessibility_active()](https://doc.servo.org/servo/struct.WebView.html#method.set_accessibility_active).
it’s not actually necessary, because AccessKit only requires that
subtree updates happen after the graft node is created in the parent,
but those subtree updates can be delayed indefinitely. removing it
simplifies our API a bit.
- we rename notify_accessibility_tree_id() to
notify_document_accessibility_tree_id(), and do the same to the
underlying ConstellationToEmbedderMsg variant. this helps clarify that
we’re referring to the (active top-level) document’s accessibility tree.
- we make that method pub(crate) too. it doesn’t need to be pub.
- we remove the label property from webview-to-pipeline graft nodes.
properties set on graft nodes are only visible in the accesskit_consumer
API, not in the platform accessibility API, and we don’t need it in our
tests, so there’s no longer any reason to keep setting it.
Testing: updated the relevant libservo accessibility tests
Fixes: part of #4344
Signed-off-by: delan azabani <dazabani@igalia.com>
Co-authored-by: Alice Boxhall <alice@igalia.com>
this patch plumbs the webview accessibility trees (#43029, #43556) into
servoshell. we add a global flag in servoshell, which is set when the
platform activates accessibility and cleared when the platform
deactivates accessibility. the flag in turn [activates
accessibility](https://doc.servo.org/servo/struct.WebView.html#method.set_accessibility_active)
in existing and new webviews.
Testing: none in this patch, but will be covered by end-to-end platform
a11y tests in WPT
Fixes: part of #4344, extracted from our work in #42338
Signed-off-by: delan azabani <dazabani@igalia.com>
Co-authored-by: Luke Warlow <lwarlow@igalia.com>
Co-authored-by: Alice Boxhall <alice@igalia.com>
Remove a duplicate `ObjectPreview` and use `ObjectActor::encode` for
serialization.
Testing: Ran mach test-devtools and manual tests.
Part of: #36027
Signed-off-by: eri <eri@igalia.com>
Co-authored-by: atbrakhi <atbrakhi@igalia.com>
In preparation for the next release, bump the version number to 0.1. 0.1
will be an LTS release, which receives extended support in terms of
security updates (e.g. spidermonkey security updates). Please keep in
mind that as always no specific guarantees or response times are given,
and any updated are provided on a best effort basis.
Previously some projects had a demo integration of servo based on some
version of servo, and then never or rarely updated it. Providing an LTS
release offers an option to embedders to integrate servo, while reducing
API churn and having a somewhat fixed schedule to adhere to in terms of
upgrades. Currently, the plan is for a new LTS release every 6 months,
with additional documentation regarding API changes and recommended
migration patterns (best-effort and subject to change).
Testing: No functional changes. Additional testing will be performed
post-merge on the newly created release branch.
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
Testing: gstreamer feature is enable in CI, and we test both mac and
windows, which guard the elements in the module.
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
Scenario proposed should be best tested using unit tests.
Testing: TODO (Waiting for #43160)
Fixes: #41582
Signed-off-by: Shubham Gupta <shubham.gupta@chromium.org>
Part of #43800 and #43606.
I removed the `new` method from `SourceActor` entirely, as it was only
used internally by `new_registered`. I renamed `new_registered` to
`register`, inlined the struct construction directly using `Self { ...
}`, and updated the registration call to use
`registry.register::<Self>(actor)` to match the standard pattern
established across other actors.
I also standardized variable names throughout `SourceActor` and its call
sites to follow the conventions set in #43606:
- Renamed `name` and `source` to `source_name` and `source_actor`
respectively in `SourceManager::find_source`
- Renamed `actor_name` to `source_name` in `SourceManager::source_forms`
- Renamed `actor_name` to `source_name` in
`handle_update_source_content` in lib.rs
Testing: Built with cargo and ran ./mach test-devtools. 59/60 tests
pass; the one failure (test_manual_pause) is a pre-existing intermittent
timeout unrelated to these changes.
Fixes: part of #43606 and #43800
Signed-off-by: CynthiaOketch <cynthiaoketch6@gmail.com>
- Changes `breakpoint_list` to `breakpoint_list_actor`
Testing: Tested locally with `mach test-devtools`
Fixes: A part of #43606
---------
Signed-off-by: Niya Gupta <niyabits@disroot.org>
Co-authored-by: Niya Gupta <niyabits@disroot.org>
upcast::<Type>() is costly in general, but in some cases we can avoid
that call and use a direct field access instead.
Testing: no test change expected.
Signed-off-by: webbeef <me@webbeef.org>
This PR considers the following constraints:
- Resources must be available when building servo via a published
crates.io package (i.e. no `../../../resources/<file>` file references).
- Minimal setup when writing tests (`nextest` spawns each test in its
own process, so we don't want to explicitly initialize the resource
handler for every `#[test]` fn)
- Use local resources when developing locally
- Support loading the resources from a proper resource directory if the
embedder wishes so, including via a custom mechanism, not necessarily as
files
(File) Resources that are only accessed from servoshell are out of scope
of this PR, since it mainly focusses on unblocking publishing `libservo`
to crates.io.
Baking the resources into the binary by default simplifies the setup a
lot. We already supported that before, but only for testing purposes and
explicitly not for production builds.
Using [`inventory`](https://crates.io/crates/inventory) adds a simple
way for the embedder to replace the default baked in resources, while
also keeping the test usage of baked in resources simple.
rippy.png is also referenced from image_cache - We simply duplicate it,
since the image is small, to avoid adding unnecessarily complex
solutions like adding a dedicated crate.
Testing: Covered by existing tests. [mach try
full](https://github.com/jschwe/servo/actions/runs/23811669469)
Fixes: Part of #43145
---------
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
- `PauseActor` is passed as a generic for only `new_name`
- Update the variable `pause` to `pause_name`
**Testing**: Tested locally with `mach test-devtools`
```
Ran 60 tests in 74.781s
OK (expected failures=6)
```
**Fixes**: A part of #43606
Signed-off-by: Niya Gupta <niyabits@disroot.org>
Co-authored-by: Niya Gupta <niyabits@disroot.org>
This set of changes introduces a type matching the spec's "target
snapshot params" and uses it as part of determining the origin of new
documents. This has a side benefit of making our sandbox flag
determination more accurate, which leads to a bunch of sandboxing tests
passing as well as some new failures due to spec confusion about
origins.
Testing: Many new passing tests.
Part of the long road to #43149
---------
Signed-off-by: Josh Matthews <josh@joshmatthews.net>
Bumps [uuid](https://github.com/uuid-rs/uuid) from 1.22.0 to 1.23.0.
<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.23.0</h2>
<h2>What's Changed</h2>
<ul>
<li>feat: add support for 'hyphenated' format in the serde module by <a
href="https://github.com/FrenchDilettante"><code>@FrenchDilettante</code></a>
in <a
href="https://redirect.github.com/uuid-rs/uuid/pull/865">uuid-rs/uuid#865</a></li>
<li>Fix a number of bugs in time-related code by <a
href="https://github.com/KodrAus"><code>@KodrAus</code></a> in <a
href="https://redirect.github.com/uuid-rs/uuid/pull/872">uuid-rs/uuid#872</a></li>
<li>Reword invalid char error message by <a
href="https://github.com/KodrAus"><code>@KodrAus</code></a> in <a
href="https://redirect.github.com/uuid-rs/uuid/pull/873">uuid-rs/uuid#873</a></li>
<li>Impl cleanups by <a
href="https://github.com/KodrAus"><code>@KodrAus</code></a> in <a
href="https://redirect.github.com/uuid-rs/uuid/pull/874">uuid-rs/uuid#874</a></li>
<li>Use LazyLock to synchronize v1/v6 context initialization by <a
href="https://github.com/KodrAus"><code>@KodrAus</code></a> in <a
href="https://redirect.github.com/uuid-rs/uuid/pull/875">uuid-rs/uuid#875</a></li>
<li>Prepare for 1.23.0 release by <a
href="https://github.com/KodrAus"><code>@KodrAus</code></a> in <a
href="https://redirect.github.com/uuid-rs/uuid/pull/876">uuid-rs/uuid#876</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/FrenchDilettante"><code>@FrenchDilettante</code></a>
made their first contribution in <a
href="https://redirect.github.com/uuid-rs/uuid/pull/865">uuid-rs/uuid#865</a></li>
</ul>
<h2>Special thanks</h2>
<p><a href="https://github.com/meng-xu-cs"><code>@meng-xu-cs</code></a>
raised a series of bugs against the timestamp logic in <code>uuid</code>
using automated tooling. The issues themselves were reasonably and
responsibly presented and the end result is a better <code>uuid</code>
library for everyone. Thanks!</p>
<h1>Deprecations</h1>
<p>This release includes the following deprecations:</p>
<ul>
<li><code>Context</code>: Renamed to <code>ContextV1</code></li>
<li><code>Timestamp::from_gregorian</code>: Renamed to
<code>Timestamp::from_gregorian_time</code></li>
</ul>
<h1>Change to <code>Version::Max</code></h1>
<p><code>Version::Max</code>'s <code>u8</code> representation has
changed from <code>0xff</code> to <code>0x0f</code> to match the value
returned by <code>Uuid::get_version_num</code>.</p>
<h1>Change to <code>Uuid::get_version</code> for the max UUID</h1>
<p><code>Uuid::get_version</code> will only return
<code>Some(Version::Max)</code> if the UUID is actually the max UUID
(all bytes are <code>0xff</code>). Previously it would return
<code>Some</code> if only the version field was <code>0x0f</code>. This
change matches the behaviour of the nil UUID, which only returns
<code>Some(Version::Nil)</code> if the UUID is the nil UUID (all bytes
are <code>0x00</code>).</p>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/uuid-rs/uuid/compare/v1.22.0...v1.23.0">https://github.com/uuid-rs/uuid/compare/v1.22.0...v1.23.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="00ab922d53"><code>00ab922</code></a>
Merge pull request <a
href="https://redirect.github.com/uuid-rs/uuid/issues/876">#876</a> from
uuid-rs/cargo/v1.23.0</li>
<li><a
href="726ba45fe3"><code>726ba45</code></a>
prepare for 1.23.0 release</li>
<li><a
href="996dadea02"><code>996dade</code></a>
Merge pull request <a
href="https://redirect.github.com/uuid-rs/uuid/issues/875">#875</a> from
uuid-rs/fix/context-ordering</li>
<li><a
href="e14047993b"><code>e140479</code></a>
simplify a use stmt</li>
<li><a
href="8ed9142847"><code>8ed9142</code></a>
reorganize and document more v7 context internals</li>
<li><a
href="e09a3225a8"><code>e09a322</code></a>
use LazyLock to synchronize v1/v6 context initialization</li>
<li><a
href="0f260cc671"><code>0f260cc</code></a>
Merge pull request <a
href="https://redirect.github.com/uuid-rs/uuid/issues/874">#874</a> from
uuid-rs/chore/impl-cleanups</li>
<li><a
href="1419e91097"><code>1419e91</code></a>
clean up and refactor main lib tests</li>
<li><a
href="ceeaf4b7b5"><code>ceeaf4b</code></a>
ensure we don't overflow on counters less than 12</li>
<li><a
href="63bc8f52e5"><code>63bc8f5</code></a>
Merge pull request <a
href="https://redirect.github.com/uuid-rs/uuid/issues/873">#873</a> from
uuid-rs/fix/error-msg</li>
<li>Additional commits viewable in <a
href="https://github.com/uuid-rs/uuid/compare/v1.22.0...v1.23.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 [simd-adler32](https://github.com/mcountryman/simd-adler32) from
0.3.8 to 0.3.9.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/mcountryman/simd-adler32/commits/v0.3.9">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 the wayland-related group with 3 updates:
[wayland-backend](https://github.com/smithay/wayland-rs),
[wayland-scanner](https://github.com/smithay/wayland-rs) and
[wayland-sys](https://github.com/smithay/wayland-rs).
Updates `wayland-backend` from 0.3.14 to 0.3.15
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/smithay/wayland-rs/commits">compare
view</a></li>
</ul>
</details>
<br />
Updates `wayland-scanner` from 0.31.9 to 0.31.10
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/smithay/wayland-rs/commits">compare
view</a></li>
</ul>
</details>
<br />
Updates `wayland-sys` from 0.31.10 to 0.31.11
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/smithay/wayland-rs/commits">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 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>
This change has two main interdependent parts:
1. It starts to align Servo's focus code with what is written in the
HTML specification. This is going to be a gradual change, so there
are still many parts that do not match the specification yet. Still,
this adds the major pieces.
2. It adds initial support for the `ShadowRoot.delegatesFocus` property
which controls how focusing a shadow DOM root can delegate focus to
one of its children.
Testing: This causes a few WPT tests to start passing.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
We should compare HMAC signatures in constant time when validating
user-provided signatures, to prevent leaking timing information
proportional to the number of matching bytes. The WebCrypto
specification has also updated to require to use constant-time
comparison in HMAC signatures.
We update our implementation accordingly. Since we are still using the
`aws-lc-rs` crate for our HMAC implementation, we use the function
`verify_slices_are_equal` provided by `aws_lc_rs::constant_time` to
guarantees the comparison is constant-time.
Specification Update:
c962bc7ebb
Testing: Existing tests suffice.
Signed-off-by: Kingsley Yung <kingsley@kkoyung.dev>
This workaround was only necessary when click focusing didn't look up
the ancestry chain for an applicable focusable area. Now that this
happens (via the code directly after), the workaround is no longer
necessary.
Testing: This should not change behvior so is covered by existing tests.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
# Checklist
Relevant methods in Document are:
- [x] enter_fullscreen
- [x] exit_fullscreen
- [x] get_allow_fullscreen
Relevant method in DocumentOrShadowRoot is:
- [x] get_fullscreen_element
Relevant methods in Element are:
- [x] fullscreen_element_ready_check
Relevant structs in element.rs are:
- [x] ElementPerformFullscreenExit
- [x] ElementPerformFullscreenEnter
Testing: The PR moves functions around and we don't need to modify any
tests
Fixes: #43719
---------
Signed-off-by: Niya Gupta <niyabits@disroot.org>
Co-authored-by: Niya Gupta <niyabits@disroot.org>
Add the minimum amount of FreeBSD-specific code to Servo, where no
platform-neutral fallback exists.
Testing: I've succesfully built and run Servo on FreeBSD with these
changes (and some fixes to dependencies). There's no functional change
to any other targets. This pull request was created with Servo running
on FreeBSD.
Fixes: #11625
---------
Signed-off-by: Juhani Krekelä <juhani@krekelä.fi>
Co-authored-by: Juhani Krekelä <juhani@krekelä.fi>
This script shows any issue which has not received any updates for over
a month. This means it is no longer intermittent and therefore can be
closed.
---------
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
Signed-off-by: Tim van der Lippe <TimvdLippe@users.noreply.github.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
Use constant variable to define the `PipelineNamespaceId` for
`Constellation` and `Embedder`, and fix the comment describing the
declaration `next_pipeline_namespace_id`.
Testing: A successful build should be enough for the minimal
refactoring.
Signed-off-by: Jo Steven Novaryo <steven.novaryo@gmail.com>
In general, for a normal `BoxFragment`, a `ExternalScrollId` is created
by directly using the `OpaqueNode::id` which is the heap address of the
`Node`. But for a `BoxFragment` from a `::before` or `::after` pseudo
element, we are using the next unused id (starting from zero) with an
increment of two.
This patch modifies so that we are using the bitwise or of
`OpaqueNode::id` and `FragmentType` as the `ExternalScrollId`. With
these changes, the `ExternalScrollId` for the pseudo elements would
remain the same after reflow (instead of getting a new scroll id).
Testing: New WPT test
Fixes: #43308
---------
Signed-off-by: Jo Steven Novaryo <steven.novaryo@gmail.com>
All callers were constructing a DOMString only to have it immediately
converted back to String inside internal_warn, resulting in an
unnecessary allocation and clone. This changes the parameter type to
String and updates all call sites to pass the result of format! or
.to_string() directly.
Fixes: #43091
---------
Signed-off-by: Kelechi Ebiri <ebiritg@gmail.com>
Initialize unminified_css_dir directly in Window::new instead of storing
a separate unminify_css bool and lazily setting the dir in
init_document.
Testing: Ran ```./mach run --unminify-css google.com``` also checked
```ls unminified-css/``` result was ```www.google.com www.gstatic.com```
Fixes: #43730
Signed-off-by: Sabb <sarafaabbas@gmail.com>
Implement the layout of `<input type="range">`. Support automatically
calculating the position of thumb based on the current input value, and
the size of range-track and range-thumb. Added a
document.has_script_or_layout_blocker function to detect whether it is
possible to run box_area_query during bind_to_tree, add delay_task if
there are blocker.
Here are some of the fixes made in this PR:
1. Fixed the structure for input type range's pseudo elements.
2. Fixed the positioning of input type range's thumb based on current
value, width, and direction.
3. Allow input type range to stretch vertically in a bigger container.
Original PR: #41024
Stylo PR: https://github.com/servo/stylo/pull/310
Testing: Some improvements in WPT tests, with a few regressions. This
change includes a Servo-specific appearance test to detect unexpected
changes to the look and feel of range widgets.
Fixes: #22728
---------
Signed-off-by: Budiman Arbenta <arbenta6@gmail.com>
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: rayguo17 <tin.tun.aung1@huawei.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
Expose set_cookie_for_url, get_cookie_for_url, allow applications to
get/set cookies.
Testing: Unit test for `SiteDataManager` and manual test with
ServoShell.
---------
Signed-off-by: batu_hoang <longvatrong111@gmail.com>
Following #43714, which moved the element interfaces into the `element/`
directory and extracted `get_int_attribute` into `attributes.rs` as a
proof-of-concept, this PR moves the remaining attribute getter/setter
methods out of `element.rs` into the separate `attributes.rs` file.
The following methods were moved:
- `set_atomic_attribute`
- `set_bool_attribute`
- `get_url_attribute` / `set_url_attribute`
- `get_trusted_type_url_attribute`
- `get_trusted_html_attribute`
- `get_string_attribute` / `set_string_attribute`
- `get_nullable_string_attribute` / `set_nullable_string_attribute`
- `get_tokenlist_attribute` / `set_tokenlist_attribute`
- `set_atomic_tokenlist_attribute`
- `set_int_attribute`
- `get_uint_attribute` / `set_uint_attribute`
This reduces the size of `element.rs` and groups all attribute-related
helper methods together in one place.
Testing:
No tests required as this is a pure code move with no behavioural
changes. The existing test suite covers the moved methods indirectly
through their callers. `cargo check` passes cleanly.
part of #38901
part of #43709
part of #43714
Signed-off-by: CynthiaOketch <cynthiaoketch6@gmail.com>
1. Broken Images are skipped for FirstContentfulPaint as per specs.
2. Update the WPT test.
Testing: `tests/wpt/tests/paint-timing/fcp-only/fcp-broken-image.html`
---------
Signed-off-by: Shubham Gupta <shubham.gupta@chromium.org>
This starts splitting out commonly shared data into a new data structure
that will make it easier to compare old shaping results to new ones in
the future. This eliminates some memory usage during inline layout, but
adds 8 bytes per segment (usually one per inline box). We hope to
recover this memory by storing one `GlyphStore` per `TextRunSegment`,
which
should recover 16 bytes.
Testing: This should not change behavior so is covered by existing
tests.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Luke Warlow <lwarlow@igalia.com>
Co-authored-by: Oriol Brufau <obrufau@igalia.com>
The "deriveBits" operation of X25519 in WebCrypto throws an
OperationError when the secret is all-zero value. The check must be done
in constant time.
Although our implementation enforces comparing all bytes one-by-one
without early exit, it still does not guarantee the `u8` comparison is
constant-time due to compiler optimization and CPU microarchitectural
effects.
We switch to using the function `was_contributory` provided by the
`x25519-dalek` crate to check whether the secret is all-zero value, as
it guarantees constant-time execution. This enhances the security of our
WebCrypto API.
Testing: Security enhancement. Existing tests suffice.
Signed-off-by: Kingsley Yung <kingsley@kkoyung.dev>
This change merges the first letter implementation into the
`InlineFormattingContextBuilder` as its more associated with inline
layout. The downside is that, due to ownership issues in Rust, the
builder must be unwrapped after ensuring it. Additionally, ensure
that `::first-letter` boxes are properly stored in a box slot meaning
that restyles work properly.
This change also makes a few small cleanups to the `first_letter_range`
function in addition to moving it to the inline code.
Testing: This does not change behavior and so should be covered by
existing tests.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Luke Warlow <lwarlow@igalia.com>
Co-authored-by: Oriol Brufau <obrufau@igalia.com>
Renamed FrameActor variable names to match standards in thread & lib.rs
Testing: No testing required.
Fixes: Part of #43606
Signed-off-by: Sabb <sarafaabbas@gmail.com>
Renamed ThreadConfigurationActor variable names in watcher.rs.
Testing: No testing required.
Fixes: Part of #43606
Signed-off-by: Sabb <sarafaabbas@gmail.com>
Renamed InspectorActor variable names in browsing_context, inspector &
lib.rs
Testing: No testing required.
Fixes: Part of #43606
Signed-off-by: Sabb <sarafaabbas@gmail.com>
Implement the missing IDBObjectStore.name duplicate name checks so
renaming an object store to an existing store now throw ConstraintError
Testing: more indexeddb WPT test passed.
Signed-off-by: Taym Haddadi <haddadi.taym@gmail.com>
Bumps [rustc-hash](https://github.com/rust-lang/rustc-hash) from 2.1.1
to 2.1.2.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/rust-lang/rustc-hash/blob/master/CHANGELOG.md">rustc-hash's
changelog</a>.</em></p>
<blockquote>
<h1>2.1.2</h1>
<ul>
<li><a
href="https://redirect.github.com/rust-lang/rustc-hash/pull/65">Refactor
byte hashing to remove unreachable panic</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="fdb275c8a0"><code>fdb275c</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/rustc-hash/issues/67">#67</a>
from Noratrieb/new-version</li>
<li><a
href="acafa431e9"><code>acafa43</code></a>
Prepare 2.1.2</li>
<li><a
href="140e525344"><code>140e525</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/rustc-hash/issues/65">#65</a>
from morrisonlevi/split_first_chunk</li>
<li><a
href="f061387ad7"><code>f061387</code></a>
style: use consistent range format</li>
<li><a
href="211455cb39"><code>211455c</code></a>
refactor!: use split_first_chunk to help optimizer</li>
<li><a
href="464a82f557"><code>464a82f</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/rustc-hash/issues/63">#63</a>
from estebank/const-Default</li>
<li><a
href="2170d5e2a0"><code>2170d5e</code></a>
On nightly, <code>impl const Default</code></li>
<li><a
href="1a998d5b89"><code>1a998d5</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/rustc-hash/issues/62">#62</a>
from CryZe/128-bit-on-more-platforms</li>
<li><a
href="6849c16d79"><code>6849c16</code></a>
Use 128-bit Widening Multiply on More Platforms</li>
<li>See full diff in <a
href="https://github.com/rust-lang/rustc-hash/compare/v2.1.1...v2.1.2">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot 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>
Renamed CssPropertiesActor variable names in browsing_context
Testing: No testing required.
Fixes: Part of #43606
Signed-off-by: Sabb <sarafaabbas@gmail.com>
Bumps [mio](https://github.com/tokio-rs/mio) from 1.1.1 to 1.2.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/tokio-rs/mio/blob/master/CHANGELOG.md">mio's
changelog</a>.</em></p>
<blockquote>
<h1>1.2.0</h1>
<ul>
<li>Support was added for WASM Preview 2
(<a
href="https://redirect.github.com/tokio-rs/mio/pull/1931">tokio-rs/mio#1931</a>).</li>
<li>Implement <code>AsFd</code> for <code>Registry</code>
(<a
href="https://redirect.github.com/tokio-rs/mio/pull/1936">tokio-rs/mio#1936</a>).</li>
<li>The backlog size for listeners were changed to match std lib
(<a
href="https://redirect.github.com/tokio-rs/mio/pull/1934">tokio-rs/mio#1934</a>).</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="ce39a6be2c"><code>ce39a6b</code></a>
Release v1.2</li>
<li><a
href="a7b3210db7"><code>a7b3210</code></a>
Update FreeBSD 14 CI image to 14.4-RELEASE</li>
<li><a
href="adfeb3ea00"><code>adfeb3e</code></a>
Merge libc defining dependency</li>
<li><a
href="eaed9a08c7"><code>eaed9a0</code></a>
Update libc to v0.2.183</li>
<li><a
href="44d63ee7ba"><code>44d63ee</code></a>
Simplify backlog value for UnixListener</li>
<li><a
href="a87e41ece5"><code>a87e41e</code></a>
Use the same backlog size for TcpListener as std lib</li>
<li><a
href="c1bc4f8981"><code>c1bc4f8</code></a>
Fix the build on minority platforms</li>
<li><a
href="68c315cb80"><code>68c315c</code></a>
Fix FreeBSD by working around a cargo bug</li>
<li><a
href="8b6021f4dd"><code>8b6021f</code></a>
implement AsFd for Registry</li>
<li><a
href="2bb6fca39a"><code>2bb6fca</code></a>
docs: add note about zero timeout for <code>Poll::poll</code></li>
<li>Additional commits viewable in <a
href="https://github.com/tokio-rs/mio/compare/v1.1.1...v1.2.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>
indexeddb: make put() overwrite existing SQLite records
Testing: more indexeddb test should pass.
Fixes: #43707
---------
Signed-off-by: Taym Haddadi <haddadi.taym@gmail.com>
Renamed HighlighterActor variable names in inspector.rs.
Testing: No testing required
Fixes: Part of #43606
Signed-off-by: Sabb <sarafaabbas@gmail.com>
Renamed LayoutInspectorActor variable names in walker.rs
Testing: No testing required
Fixes: Part of #43606
Signed-off-by: Sabb <sarafaabbas@gmail.com>
Renamed AccessibilityActor variable names in browsing_context
Testing: No testing required
Fixes: Part of #43606
Signed-off-by: Sabb <sarafaabbas@gmail.com>
Renamed StyleSheetsActor variable names in browsing_context
Testing: Ran `./mach test-devtools` locally.
Fixes: Part of #43606
---------
Signed-off-by: Sabb <sarafaabbas@gmail.com>
This change adds support for `background-blend-mode` to Servo by
creating one stacking context per blend and a single stacking context to
serve as the blend container. This matches the approach that Gecko
takes.
Stylo PR: servo/stylo#344
Testing: This change causes some WPT tests to start passing. In general
this feature
is not well exercised by tests. I suspect that blending is hard to test
properly.
Fixes: #43621
Signed-off-by: Martin Robinson <mrobinson@fastmail.fm>
Co-authored-by: Martin Robinson <mrobinson@fastmail.fm>
Bumps [cryptography](https://github.com/pyca/cryptography) from 46.0.5
to 46.0.6.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst">cryptography's
changelog</a>.</em></p>
<blockquote>
<p>46.0.6 - 2026-03-25</p>
<pre><code>
* **SECURITY ISSUE**: Fixed a bug where name constraints were not
applied
to peer names during verification when the leaf certificate contains a
wildcard DNS SAN. Ordinary X.509 topologies are not affected by this
bug,
including those used by the Web PKI. Credit to **Oleh Konko (1seal)**
for
reporting the issue. **CVE-2026-34073**
<p>.. _v46-0-5:<br />
</code></pre></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="91d728897b"><code>91d7288</code></a>
Cherry-pick <a
href="https://redirect.github.com/pyca/cryptography/issues/14542">#14542</a>
(<a
href="https://redirect.github.com/pyca/cryptography/issues/14543">#14543</a>)</li>
<li>See full diff in <a
href="https://github.com/pyca/cryptography/compare/46.0.5...46.0.6">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)
You can disable automated security fix PRs for this repo from the
[Security Alerts page](https://github.com/servo/servo/network/alerts).
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
We were previously conflating the concept of a navigation request's
origin with the origin of the resulting document. These changes ensure
that the navigation request's origin is based on the navigation
initiator's origin, and the document's origin is not computed until
after the navigation response is received.
The most visible effect of these changes is that documents in sandboxed
iframes now correctly have an opaque origin.
Testing: Lots of new passing tets.
Signed-off-by: Josh Matthews <josh@joshmatthews.net>
Requires communication between the script thread and the constellation
to be able to retrieve the origin of a cross-origin document. However,
in the fast-path where the document resides in the same script-thread,
we use the `frame_element` instead.
If no CSP list is active, then we skip all this logic, to have a minimal
impact on document navigation.
Part of #4577Fixes#36468
---------
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
Signed-off-by: Tim van der Lippe <TimvdLippe@users.noreply.github.com>
UA widgets (such as textual `<input>`) create a shadow DOM to contain
their various parts. When clicking on these parts (such as the text node
of the widget contents), we should use the root node of the widget as
the activable node. This means that wehen you click on the inside of an
`<input>` element, the input matches the `:active` pseudo-selector.
Testing: This improves WPT tests.
Fixes: #41102
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Also move the related `navigate_to_fragment` method next to it.
Part of #40600
Testing: It compiles
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
Renamed NetworkEventActor variables in network_handler & lib.rs
Testing: No testing required
Fixes: Part of #43606
Signed-off-by: Sabb <sarafaabbas@gmail.com>
This is the first step toward implementing the Web Animations
specification. It adds support for the `AnimationTimeline` and
`DocumentTimeline` specification concepts. Note that there was already
an `AnimationTimeline`, but it did not implement the specification.
Testing: Various WPT start to pass or no longer error / timeout.
Signed-off-by: Martin Robinson <mrobinson@abandonedwig.info>
Co-authored-by: Martin Robinson <mrobinson@abandonedwig.info>
As titled. The `Vec<UnshapedTextRun>` produced by `fn
build_unshaped_text_runs`
is only used by `into_shaped_text_run`, which filters out those without
string or font.
It is better to not allocate them in the first place.
Testing: [Try](https://github.com/servo/servo/actions/runs/23642089615).
Added a Servo-specific crash test to ensure we will not have empty
font/string in a text run.
---------
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
It moves `Element.rs` into a subdirectory and turns on dead code
detection (found 4 methods that could be removed). Then it also extracts
the first attribute-related method into a separate file, to reduce the
file size of `Element` and add more structure as part of #43709.
Part of #38901
Part of #43709
Testing: It compiles
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
This prevents unintended updates the `uv.lock` file which must be
reverted locally.
Testing: As this just fixes a runtime issue when running `test-tidy`,
this
probably doesn't deserve a test.
Signed-off-by: Martin Robinson <mrobinson@abandonedwig.info>
Co-authored-by: Martin Robinson <mrobinson@abandonedwig.info>
If there are multiple header values and one of them is empty, we should
append the empty string rather than skipping it. The algorithm was
incorrectly advancing the operation and continuing the loop, rather than
appending and later returning the `values`.
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
Both `Window::load_url` and `ScriptThread::navigate` implement parts of
the same navigate algorithm from the HTML spec
(https://html.spec.whatwg.org/multipage/browsing-the-web.html#navigate).
`ScriptThread::navigate` had only one caller: `Window::load_url`.
This merges both methods into a single `navigate` function in
`navigation.rs`, which is the appropriate home for navigation logic. All
previous callers of `Window::load_url` now call `navigation::navigate`
directly.
Testing: This is a pure refactor with no behaviour changes, so no new
tests are needed. Existing tests cover the navigation paths affected.
Fixes: #43494
---------
Signed-off-by: thebabalola <t.babalolajoseph@gmail.com>
Renamed BrowsingContext in tab, network_event, watcher actors & lib.rs
Testing: No testing required - only renaming done
Fixes: Part o #43606
Signed-off-by: Sabb <sarafaabbas@gmail.com>
Refactor Constellation module to use GenericEmbedderProxy
- [X] create the new enum in components/<component>
- [X] for each use of EmbedderMsg::<something> in
components/<component>, extract that enum variant into the new enum
- [X] replace uses of EmbedderProxy in components/<component> with
GenericEmbedderProxy<<component>ToEmbedderMsg>
- [X] create a new instance of the generic embedder proxy in
[Servo::new](c023d8edc7/components/servo/servo.rs (L755-L756));
store the receiver in a new field in Servo and pass the sender to the
appropriate code that instantiates the component
- [X] add a new variant to the
[Message](c023d8edc7/components/servo/servo.rs (L137))
enum for the new component enum type
- [X] update
[receive_one_message](c023d8edc7/components/servo/servo.rs (L224))
to use the new receiver and return the new enum variant
- [X] extract the code from
[handle_embedder_message](c023d8edc7/components/servo/servo.rs (L345))
that handles the component-specific variants into a new method
Testing: Just a refactor shouldn't need any testing
Fixes: #42097
---------
Signed-off-by: Emmanuel Paul Elom <elomemmanuel007@gmail.com>
Signed-off-by: elomscansio <163124154+elomscansio@users.noreply.github.com>
Co-authored-by: Mukilan Thiyagarajan <mukilanthiagarajan@gmail.com>
The WebIDLs for values were duplicated in PropertyDescriptor and
EvalResultValue, with duplicated handlers across the code.
General cleanup of how debugger values are passed from debugger.js and
how the conversion from JS and to JSON happens.
There shouldn't be a behaviour change.
Testing: Existing devtools tests and manual testing
Part of: #36027
---------
Signed-off-by: eri <eri@igalia.com>
Co-authored-by: atbrakhi <atbrakhi@igalia.com>
Renamed WorkerActor variables in watcher, console, root and lib.rs
Testing: No testing required
Fixes: Part of #43606
Signed-off-by: Sabb <sarafaabbas@gmail.com>
Fixes#43629.
The `EventSource` constructor was resolving input URLs with
`api_base_url().join(...)`, which is not the same as the HTML spec’s
encoding-parsing step for URLs relative to the relevant settings object.
This change updates `components/script/dom/eventsource.rs` to use
`global.encoding_parse_a_url(&url.str())` when constructing the
`EventSource` request URL. That makes the constructor follow the spec
more
closely while keeping the existing failure behavior of returning
`Error::Syntax(None)` when parsing fails.
Using `GlobalScope::encoding_parse_a_url` also reuses the existing
parsing
path for both window and worker globals, instead of handling
`EventSource`
URL resolution through `api_base_url().join(...)` directly.
Testing:
* Ran ./mach check
* Ran ./mach test-wpt tests/wpt/tests/eventsource/
* Checked relevant coverage under
tests/wpt/tests/html/infrastructure/urls/resolving-urls/query-encoding/
---------
Signed-off-by: veercodeprog <veerpratap945050@gmail.com>
For any enabled command, we should fire corresponding
beforeinput and input events.
Also update a WPT test to make it clearer what the
expected behavior is. None of the test expect a
beforeinput event. Before, it would fail with
"expected undefined, but got", which is not descriptive
as a failure to what's happening.
We are failing these tests, since this behavior is
currently unspecced and also requires changes in
the input element to work with text edits.
Part of #25005
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
in #43029, we defined an accessibility tree for each webview. we create
those trees when accessibility is activated for that webview, then the
embedder can graft it into their main accessibility tree. at the time,
this accessibility tree was empty, but we ultimately want it to contain
the accessibility tree of the documents loaded in the webview at any
given time. to do that, we need to graft the active top-level pipeline’s
accessibility tree into the webview accessibility tree. we should be
able to ignore nested documents inside iframes here, and leave it to
their parent documents to graft those in as part of layout
accessibility.
this patch hooks into the moment in the constellation where we detect
that the top-level document has changed (#43013), and notifies libservo
of the new AccessKit TreeId for the webview-to-pipeline graft node. this
moment covers navigating to a new top-level document and navigating back
or forward, but not the initial document loaded in the webview, so we
also hook into the moment a ConstellationWebView is created, and do the
same for that initial document. now the accessibility tree for a webview
with accessibility activated should look like this:
- embedder’s main tree
- graft node for webview tree → webview tree
- ~~graft node for document back in history~~
- graft node for active top-level document → (nothing yet)
- ~~graft node for document forward in history~~
Testing: this patch updates the relevant accessibility test in libservo
Fixes: part of #4344, extracted from our work in #42338
---------
Signed-off-by: Alice Boxhall <alice@igalia.com>
Signed-off-by: delan azabani <dazabani@igalia.com>
Co-authored-by: Alice Boxhall <alice@igalia.com>
This update makes service workers properly show up in DevTools and
behave more like dedicated workers.
- Added an is_service_worker field to DevtoolsPageInfo so the devtools
server can tell service workers apart from dedicated workers
- Triggered a NewGlobal message when a service worker is created in
serviceworker_manager.rs, similar to what already happens for dedicated
workers
- Routed service workers to root.service_workers so they appear under
"Service Workers" in about:debugging instead of "Other Workers"
- Implemented listServiceWorkerRegistrations with the expected response
format (activeWorker, installingWorker, waitingWorker, evaluatingWorker)
to match Firefox’s LegacyServiceWorkersWatcher
- Added support for getPushSubscription in WorkerActor, currently
returning subscription: null
Enabled the service_worker target type in the watcher’s SessionContext
and handled watchTargets("service_worker")
Testing
Start Servo with:
`RUST_LOG="error,devtools=debug" ./mach run --
--pref=dom_serviceworker_enabled --devtools=6080
"https://mdn.github.io/dom-examples/service-worker/simple-service-worker/"
`
In Firefox, go to about:debugging and connect to localhost:6080
Confirm the service worker shows up under "Service Workers"
Fixes#43574
---------
Signed-off-by: CynthiaOketch <cynthiaoketch6@gmail.com>
These are mostly formatting changes to make them consistent.
Testing: Not required as there are no code changes.
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
Rename page_style in inspector .
Testing: ran `./mach test-devtools`.
Fixes: Part of #43606
Signed-off-by: Jayanta Pradhan <pradhanjayanta91@gmail.com>
Introduces a new type `DevtoolsConnection`, which implements the
`JsonPacketStream` trait with proper coordination of I/O across threads.
This replaces the implementation of `JsonPacketStream` for raw
`TcpStream`s, which was susceptible to interleaving writes when cloned
across threads.
`DevtoolsConnection` also defensively synchronizes read operations.
These are less likely to cause issues: in practice actors should never
independently pull incoming messages without centralized coordination.
Testing: No new tests, as interleaving writes are difficult to evoke
deterministically. Removing the `JsonPacketStream` implementation for
`TcpStream` should discourage regressions due to improper use of raw
streams.
---------
Signed-off-by: Brent Schroeter <contact@brentsch.com>
Co-authored-by: eri <eri@igalia.com>
Rename `DeviceActor` local variable in `root.rs` from `device` to
`device_actor` for naming consistency across the devtools crate.
This follows the convention discussed in #43557:
- `{}_actor` for variables holding the actor
- `{}_name` for variables holding the actor name string
The `device_actor` field in the `GlobalActors` struct was not renamed,
as it is part of a `#[derive(Serialize)]` struct used for devtools
message serialization.
Testing: `./mach test-devtools` all 60 tests pass (6 expected failures).
One unrelated flaky test
(`test_breakpoint_at_invalid_entry_point_does_not_crash`) occasionally
fails due to a race condition tracked separately. opened an isssue for
it at #43667
fixes part of #43606
Signed-off-by: staysafe020 <jambongralpher@gmail.com>
Renamed TabDescriptorActor variable names in browsing_context, root &
target_configuration
Cleaned up a few more names as suggested by eerii
Testing: No testing required
Fixes: Part of #43606
Signed-off-by: Sabb <sarafaabbas@gmail.com>
Rename NetworkParent in watcher actors.
Testing: ran `./mach test-devtools`.
Fixes: Part of #43606
---------
Signed-off-by: Jayanta Pradhan <pradhanjayanta91@gmail.com>
The commit contains several related changes:
* iframes that load javascript: URLs as part of the initial insertion
(ie. `<iframe src='javascript:...'>`) get a synchronous load event
dispatched
* javascript: URL evaluation that does not result in a string no longer
treated like a 204 response
* iframes that perform a javascript: URL navigation that does not result
in a new document no longer block the parent document load event
Testing: Lots of new tests passing.
Fixes: #24901
---------
Signed-off-by: Josh Matthews <josh@joshmatthews.net>
Moves the cleanup logic to a separate helper struct to comply with the
prohibition of manual `Drop` implementations for DOM types.
Testing: WebGL tests cover these cases
Fixes: Partially #26488
Signed-off-by: Domenico Rizzo <domenico.rizzo@gmail.com>
There were two issues here:
1. We weren't firing the `load` event when we would show an error page
because of a CSP failure. This is to avoid web pages knowing wheter a
page has failed because of CSP.
2. We were reporting the violations in the wrong global. We shouldn't
fire these in the global of the child, but instead in the parent.
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
Rename console_actor and console in actors.
Testing: ran `./mach test-devtools`.
Fixes: Part of #43606
---------
Signed-off-by: Jayanta Pradhan <pradhanjayanta91@gmail.com>
Checks the web font sources and filter out the ones that are already
downloaded in the `FontContext` before starting to load new ones
Testing: Existing WPT tests.
---------
Signed-off-by: Minghua Wu <michael.wu1107@gmail.com>
This change has 2 parts:
- adding `BluetoothPickDeviceRequest`, similar to other request structs
used to communicate with the embedder.
- switch from a `Vec<String>` that expected 2 * <device count> strings
to `Vec<BluetoothDeviceDescription>` which is easier to reason about.
Testing: Manual testing with a build that has the `native-bluetooth`
feature enabled.
---------
Signed-off-by: webbeef <me@webbeef.org>
Moves node interfaces into script/dom/node/ module from script/dom/.
Testing: Just a refactor shouldn't need any testing.
Fixes: Part of #38901
Signed-off-by: Jayanta Pradhan <pradhanjayanta91@gmail.com>
Renamed ReflowActor in browsing_context actor.
Testing: `./mach test-devtools`, All test passed.
Fixes: Part of #43606
Signed-off-by: arabson99 <arabiusman99@gmail.com>
Add `readme` field to libservo's Cargo.toml, pointing to the repository
root
README via `../../README.md`. This ensures the crates.io page displays
content
when the crate is published, as Cargo copies the referenced file into
the
package during `cargo publish`.
Testing: This change only adds a metadata field to Cargo.toml and does
not
affect build output or runtime behavior. No tests are required.
fixes#43143
Signed-off-by: staysafe020 <jambongralpher@gmail.com>
Moves interfaces defined by the resizeobserver spec to the
script/dom/resizeobserver/ module from script/dom/.
Testing: Just a refactor shouldn't need any testing
Fixes: Partially https://github.com/servo/servo/issues/38901
Signed-off-by: Emmanuel Paul Elom <elomemmanuel007@gmail.com>
Enable WebRender gradient dithering to reduce color banding
WebRender has a built-in dithering system for gradients that applies a
small amount of ordered noise to RGB channels before the framebuffer
quantizes to 8-bit.
The dithering was already fully implemented in WebRender (shader
support, dither texture, feature flag) but was disabled by default
(enable_dithering: false in WebRenderOptions).
Testing: Tested manually with the reproduction case from the issue (40
stacked divs with `linear-gradient(rgba(90, 138, 100, 0.04) 0%,
transparent 60%)`). Before the change, Servo showed harsh horizontal
bands. After the change, the gradient renders smoothly, matching Firefox
and Chrome behavior.
Fixes: #43568
<img width="740" height="471" alt="Screenshot from 2026-03-24 04-42-42"
src="https://github.com/user-attachments/assets/0caea525-e5d9-46a7-817d-2b420246f19c"
/>
---------
Signed-off-by: Messi002 <rostandmessi2@gmail.com>
Refactored the lib.rs file to replace ``actors``` & ```self.actors```
variables with ```registry``` and ```self.registry```
No testing required, compiles successfully.
Part o the #43605
---------
Signed-off-by: Sabb <sarafaabbas@gmail.com>
Implements a fix for #43036
- Renders content for `::marker`
- If content is not present render marker_image/marker_string
Here's a small webpage I wrote to test if my implementation works :)
<img width="1136" height="880" alt="Screenshot 2026-03-21 at 4 50 43 PM"
src="https://github.com/user-attachments/assets/91ccbfd9-2c18-446d-bac5-d559f483b08c"
/>
# Testing
The existing WPT ones should be sufficient, the tests need to be
updated.
## (WPT) Stable Unexpected Results that are failing:
| Test | Issue | Remark |
|--------|--------|--------|
| /css/css-lists/marker-dynamic-content-change.html | #43120 | |
| /css/css-lists/marker-quotes.html | #30365 | Test File: Ordered List
showing '0' for all `li` |
| /css/css-pseudo/marker-content-001.html | #30365 | Ref file: Ordered
List showing '0' for all `li` |
| /css/css-pseudo/marker-content-001b.html | #30365 | Ref file: Ordered
List showing '0' for all `li` |
| /css/css-pseudo/marker-content-001c.html | #30365 | Ref file: Ordered
List showing '0' for all `li` |
| /css/css-pseudo/marker-content-020.html | | Test File: JavaScript
dynamically toggles the `no-marker` class, but it doesn't update the DOM
when called from inside `addEventListener()` and
`requestAnimationFrame()` functions. |
| /css/selectors/has-style-sharing-pseudo-007.html | #25133 | Test file
uses `has` to remove `content` from a `li`; `has` pseudo-class has not
been implemented yet |
| /css/selectors/has-style-sharing-pseudo-008.html | #25133 | Test file
uses `has` to remove `content` from a `li`; `has` pseudo-class has not
been implemented yet |
---------
Signed-off-by: Niya Gupta <niyabits@gmail.com>
Signed-off-by: niya <niyabits@gmail.com>
Co-authored-by: Oriol Brufau <obrufau@igalia.com>
Bumps libredox from 0.1.14 to 0.1.15.
[](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>
Renamed actors to registry in source, node, & network_handler.
Testing: No tests were required, however compilation was successful
Part of #43605
Signed-off-by: Sabb <sarafaabbas@gmail.com>
This adds the WebIDl and implementation for the HTMLMarqueeElement type.
The `<marquee>` HTML is now assigned this type.
None of the contained properties or methods are implemented yet.
Testing: Existing WPTs
Signed-off-by: Luke Warlow <lwarlow@igalia.com>
This partially reverts 017b12a627. The
intermittent issues should be resolved now.
./mach build --release results in ~3GiB of sccache size locally. Since
we build multiple configurations (with crown, tests, profiles) we will
easily hit the 10GiB cache limit even with just one architecture. Hence,
it doesn't make sense to add sccache to more workflows, at least not
before we decide to buy more cache or not.
This should hopefully make the macos-arm64 workflows faster. Locally the
speed-up on clean builds is significant.
Testing: [mach try (no existing
cache)](https://github.com/jschwe/servo/actions/runs/23507308462/job/68418624068),
[mach try
#2](https://github.com/jschwe/servo/actions/runs/23508733572/job/68423715413)
- i.e. 34 minutes vs. 19 minutes total runtime, and 30 m vs 15 m build
time (with ideal conditions for the caching)
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
We were resolving `justify-self: auto` according to the `justify-items`
of the containing block. However, the CSSWG resolved to instead use the
parent box; and if the parent is an inline box, then `justify-items`
doesn't apply, so `justify-self: auto` behaves as `normal`.
Testing: Adding WPT test
Fixes: #43624
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
- canvas
- constellation_traits
- canvas_traits
- constellation
Testing: This should not change any behaviour.
---------
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
Renamed BrowsingContext in breakpoint, console & thread actors
Testing: No testing required.
Fixes: Part of #43606
Signed-off-by: Sabb <sarafaabbas@gmail.com>
Renamed `actors` to `registry` in `actors/tab.rs`, `actors/watcher.rs`
and `actors/browsing_context.rs`.
Testing: No tests were required, however compilation was successful
Part of: #43605
Signed-off-by: Sabb <sarafaabbas@gmail.com>
Moves url interfaces into script/dom/url/ module from script/dom/.
Testing: Just a refactor shouldn't need any testing.
Part of #38901
---------
Signed-off-by: Jayanta Pradhan <pradhanjayanta91@gmail.com>
Moves interfaces defined by the datatransfer spec to the
script/dom/datatransfer/ module from script/dom/.
Testing: Just a refactor shouldn't need any testing
Fixes: Partially #38901
Signed-off-by: Emmanuel Paul Elom <elomemmanuel007@gmail.com>
Moves xpath interfaces into script/dom/xpath/ module from script/dom/.
Testing: Just a refactor.
Fixes: Part of #38901
Signed-off-by: Jayanta Pradhan <pradhanjayanta91@gmail.com>
Updated api base url to encoding_parse_a_url and wrote tests referencing
the suggested format
Fixes: #43557
Testing: new passing test
Signed-off-by: Sabb <sarafaabbas@gmail.com>
When encountering a block-level inside an inline box, we would wrap it
(together with other block-level siblings, if any) inside an anonymous
block box.
That was complicating the logic for no real benefit, so just get rid of
these anonymous wrappers, and allow block-levels as direct children of
inlines.
This aligns Servo with WebKit, which did the same refactoring:
https://commits.webkit.org/304357@main
Blink still generates these wrappers, but its design doc acknowledges
that "the anonymous box is not strictly required".
Testing: No existing test fails. But note that, while minimal, this may
have some observable implications. For example, as an accidental
side-effect of #41492, Servo aligned with the CSSWG resolution in
https://github.com/w3c/csswg-drafts/issues/11462, but now we will revert
to the previous behavior. I will address it in a follow-up, and add a
test.
Fixes: #41636
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
Moves interfaces defined by the document spec to the
script/dom/document/ module from script/dom/.
Testing: Just a refactor shouldn't need any testing
Fixes: Partially #38901
---------
Signed-off-by: Emmanuel Paul Elom <elomemmanuel007@gmail.com>
Moves interfaces defined by the file spec to the script/dom/file/ module
from script/dom/.
Testing: Just a refactor shouldn't need any testing
Fixes: Partially #38901
Signed-off-by: Emmanuel Paul Elom <elomemmanuel007@gmail.com>
Lets the `width` and `height` attributes of `<svg>` set presentational
hints for the CSS properties of the same name.
Also bumps Stylo to servo/stylo#343, in order to also set the preshints
for percentage values. However, layout will ignore percentages for the
purpose of computing the natural sizes and aspect ratio.
Testing: Improves WPT
---------
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
Moves interfaces defined by the clipboard spec to the
script/dom/clipboard/ module from script/dom/.
Testing: Just a refactor shouldn't need any testing
Fixes: Partially #38901
---------
Signed-off-by: Emmanuel Paul Elom <elomemmanuel007@gmail.com>
Currently, the `web_font_finished_loading_callback` sends a
`ScriptThreadMessage::WebFontLoaded` message regardless of whether web
font loading succeeds or not, which leads to dirtying all nodes in
`script_thread.rs`. This creates unnecessary reflow. This PR removes the
boolean field from the `WebFontLoaded` message and only sends the
message when the web font loading is successful.
Testing: Existing WPT tests
Signed-off-by: Minghua Wu <michael.wu1107@gmail.com>
According to spec we should fetch worker modules using the _outside
settings_, however we can't use it directly since we are on a different
thread. To fix it, a new struct `ModuleFetchClient` is now part of
`LoadState` and replace the `with_global_scope` call done in
`fetch_a_single_module_script`.
This also tidy worker classic script related code.
Testing: There are new passes
---------
Signed-off-by: Gae24 <96017547+Gae24@users.noreply.github.com>
Bumps [itoa](https://github.com/dtolnay/itoa) from 1.0.17 to 1.0.18.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dtolnay/itoa/releases">itoa's
releases</a>.</em></p>
<blockquote>
<h2>1.0.18</h2>
<ul>
<li>Simplify pointer usage in Buffer::format method (<a
href="https://redirect.github.com/dtolnay/itoa/issues/67">#67</a>,
thanks <a
href="https://github.com/xtqqczze"><code>@xtqqczze</code></a>)</li>
<li>Optimize 128-bit integer formatting (<a
href="https://redirect.github.com/dtolnay/itoa/issues/68">#68</a>,
thanks <a
href="https://github.com/jhpratt"><code>@jhpratt</code></a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="af77385d0d"><code>af77385</code></a>
Release 1.0.18</li>
<li><a
href="73a7c03e23"><code>73a7c03</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/itoa/issues/68">#68</a> from
jhpratt/master</li>
<li><a
href="7b4c86b03e"><code>7b4c86b</code></a>
Optimize 128-bit integer formatting</li>
<li><a
href="0d8a4899bf"><code>0d8a489</code></a>
Fill in pointer cast type</li>
<li><a
href="e693c49e60"><code>e693c49</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/itoa/issues/67">#67</a> from
xtqqczze/as_mut_ptr</li>
<li><a
href="29b34100d5"><code>29b3410</code></a>
Simplify pointer usage in Buffer::format method</li>
<li><a
href="bbf077faeb"><code>bbf077f</code></a>
Switch to 9975WX benchmark data</li>
<li><a
href="65bc721a0d"><code>65bc721</code></a>
Delete old chart code</li>
<li>See full diff in <a
href="https://github.com/dtolnay/itoa/compare/1.0.17...1.0.18">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 [jni-sys](https://github.com/jni-rs/jni-sys) from 0.3.0 to 0.3.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/jni-rs/jni-sys/releases">jni-sys's
releases</a>.</em></p>
<blockquote>
<h2>v0.3.1</h2>
<p>This release applies the <a
href="https://github.com/dtolnay/semver-trick">semver trick</a> to
re-export compatible types from <code>jni-sys 0.4</code> (namely
<code>jobject</code>) to make it easier for <code>jobject</code>
references to be passed around between APIs depending on different
versions of <code>jni-sys</code></p>
<p>The MSRV was bumped to 1.77</p>
<h2>What's Changed</h2>
<h3>Added</h3>
<ul>
<li>GetModule was added to <code>JNINativeInterface</code> (<a
href="https://redirect.github.com/jni-rs/jni-sys/pull/22">#22</a>)</li>
<li><code>JNI_VERSION_{9,10,19,20,21,24}</code> version definitions were
added</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Compatible types are now re-exported from <code>jni-sys 0.4</code>
to make it easier for <code>jobject</code> references
to be passed around between APIs depending on different versions of
<code>jni-sys</code></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/jni-rs/jni-sys/compare/v0.3.0...v0.3.1">https://github.com/jni-rs/jni-sys/compare/v0.3.0...v0.3.1</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/jni-rs/jni-sys/blob/v0.3.1/CHANGELOG.md">jni-sys's
changelog</a>.</em></p>
<blockquote>
<h2>[0.3.1] - 2026-03-22</h2>
<h3>Added</h3>
<ul>
<li>GetModule was added to <code>JNINativeInterface</code> (<a
href="https://redirect.github.com/jni-rs/jni-sys/pull/22">#22</a>)</li>
<li><code>JNI_VERSION_{9,10,19,20,21,24}</code> version definitions were
added</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Compatible types are now re-exported from <code>jni-sys 0.4</code>
to make it easier for <code>jobject</code> references
to be passed around between APIs depending on different versions of
<code>jni-sys</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="1985e8bdd0"><code>1985e8b</code></a>
Release v0.3.1</li>
<li><a
href="0a512a07ec"><code>0a512a0</code></a>
Add .vscode/ to .gitignore</li>
<li><a
href="a77b608cd0"><code>a77b608</code></a>
Add minimal test for invocation API + JNI</li>
<li><a
href="df992c4a78"><code>df992c4</code></a>
remove systest</li>
<li><a
href="0e7f6b8d7c"><code>0e7f6b8</code></a>
Use semver trick to re-export compatible types from jni-sys 0.4</li>
<li><a
href="be20758a9c"><code>be20758</code></a>
systest: update to ctest 0.5</li>
<li><a
href="1f539f53c2"><code>1f539f5</code></a>
Systest build fix for darwin/linux</li>
<li><a
href="4caf07d5c5"><code>4caf07d</code></a>
Add JNI_VERSION_24</li>
<li><a
href="e75db1c2e0"><code>e75db1c</code></a>
Use SPDX license format</li>
<li><a
href="34245b2b0b"><code>34245b2</code></a>
Update Readme</li>
<li>Additional commits viewable in <a
href="https://github.com/jni-rs/jni-sys/compare/v0.3.0...v0.3.1">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>
Move CookieStore methods from CanGc to &mut JSContext.
Testing: Just refactor.
Fixes: Part of #42638
Signed-off-by: Jayanta Pradhan <pradhanjayanta91@gmail.com>
Move `CSSGroupingRule` methods from `CanGc` to `&mut JSContext`.
Testing: Just refactor.
Fixes: Part of #42638
Signed-off-by: Jayanta Pradhan <pradhanjayanta91@gmail.com>
Fixes build errors when the `native-bluetooth` feature is enable:
```
error[E0308]: mismatched types
--> components/bluetooth/bluetooth.rs:91:9
|
90 | pub async fn is_connected(&self) -> Result<bool, Box<dyn Error>> {
| ---------------------------- expected `Result<bool, Box<(dyn StdError + 'static)>>` because of return type
91 | self.peripheral.is_connected().await.map_err(Box::new)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `Result<bool, Box<dyn Error>>`, found `Result<bool, Box<Error>>`
|
= note: expected enum `Result<_, Box<(dyn StdError + 'static)>>`
found enum `Result<_, Box<btleplug::Error>>`
= help: `btleplug::Error` implements `Error` so you could box the found value and coerce it to the trait object `Box<dyn Error>`, you will have to change the expected type as well
help: use `?` to coerce and return an appropriate `Err`, and wrap the resulting value in `Ok` so the expression remains of type `Result`
|
91 | Ok(self.peripheral.is_connected().await.map_err(Box::new)?)
| +++ ++
```
Testing: `./mach build --features native-bluetooth` doesn't fail.
Signed-off-by: webbeef <me@webbeef.org>
Instead of using the default object width of 300px, use the inline-axis
stretch size, or zero when computing the intrinsic contribution.
Note browsers don't completely agree in the details of how to do this.
This implements a behavior very similar to Blink, but without having
different behaviors for min/max-content depending on which property they
are used (which doesn't make much sense to me).
The biggest part of the patch is for block-level boxes that establish an
independent formatting context and need to avoid overlapping floats. In
that case we may need to try laying out multiple times, varying the
stretch size. Previously the code assumed that this wouldn't affect the
intrinsic inline sizes, but now we have this dependency, so the logic
had to be refactored.
Testing: Some tests pass. One test results in an error, but that happens
in all browsers.
Fixes: #38653
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
Some values of the WebIDL were wrapped two types in nullable (from not
having `required` and having a `?`). Simplify that so we don't get
`Option<Option<...>>`.
Testing: Existing tests
Part of: #36027
Depends on: #43566
Signed-off-by: eri <eri@igalia.com>
Co-authored-by: atbrakhi <atbrakhi@igalia.com>
Fixes incorrect static positioning of absolutely positioned elements
nested within a block that has `margin-top` inside an inline element.
Added two lines of code to `AnonymousBlockBox::layout_into_line_items`
in components/layout/flow/inline/mod.rs:
- We snapshot the current positioning_context_length before laying out
the block.
- We call `adjust_static_position_of_hoisted_fragments` on the
positioning_context after the block fragment is placed by the state.
Testing:
Tested the fix using the manual reproduction HTML provided in the issue,
Also ran the existing WPT tests in `tests/wpt/tests/css/css-position/`
to ensure there are no regressions.
Fixes: #42890
---------
Signed-off-by: vinayak sharma <vinayaks0111@gmail.com>
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
Co-authored-by: Oriol Brufau <obrufau@igalia.com>
btleplug depends on tokio so we use a bridge thread to interface with
Servo thread based messaging.
We keep feature parity except for BtleplugGATTService::get_includes()
that will require upstream implementation.
In terms of OS support, I verified on Linux and MacOS. Android is
untested, but btleplug claims support.
Testing: No test failures, green try run at
https://github.com/webbeef/servo/actions/runs/23390850825Fixes: #43254.
Signed-off-by: webbeef <me@webbeef.org>
Move `CSSStyleRule::Style` from `CanGc` to `&mut JSContext`. Also fix
the caller in `devtools.rs` to pass `cx` directly.
Testing: Refactoring, It compiles.
Fixes: Part of #42638
Signed-off-by: arabson99 <arabiusman99@gmail.com>
Testing: This should not change existing behaviour and these methods are
covered by existing tests
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
Plotting RAM usage on `etc/ci/scenario` OHOS scenarios
I've did a class that can be optionally added into scenarios to records
RAM usage on ohos platform by using the `hdc` tool to checkout
`/proc/{pid}/status` and can store the recorded data into `.csv` or plot
as `.png`
The tool can also be used on its own
```
UV_PROJECT=etc/ci/scenario uv run etc/ci/scenario/memory_usage_plotter.py -h
```
Testing:
```
UV_PROJECT=etc/ci/scenario uv run etc/ci/scenario/servo_test_slide.py
```
Example output:
<img width="1500" height="750" alt="memory_usage_plotter"
src="https://github.com/user-attachments/assets/27e85787-51df-4c6b-8ad7-c6fcfc380304"
/>
---------
Signed-off-by: jane <5373400+janeoa@users.noreply.github.com>
Signed-off-by: janeoa <5373400+janeoa@users.noreply.github.com>
Moves the cleanup logic to a separate helper struct to comply with the
prohibition of manual `Drop` implementations for DOM types.
Testing: WebGL tests just cover its cases
Fixes: Partially #26488
Signed-off-by: Domenico Rizzo <domenico.rizzo@gmail.com>
This completes the service-worker side while addressing earlier panic
concerns by avoiding unconditional unwrap/expect paths.
Testing: No dedicated tests were added for this change.
Fixes: #43317
Signed-off-by: SharanRP <z8903830@gmail.com>
This PR fixes iframe URL parsing to use document encoding, so non-UTF-8
pages reflect iframe.src correctly, and adds a WPT test for it.
Testing: added Test file
Fixes: #43559
Signed-off-by: SharanRP <z8903830@gmail.com>
Replace all `Error::*(None)` instances in `hmac_operation.rs` with
descriptive error messages, covering sign, verify, generate_key,
import_key, and export_key operations.
Testing: Existing WPT tests cover all HMAC operations and check error
types, not message strings. No behavioral change.
Fixes: Part of #40756
---------
Signed-off-by: Eyüp Can Akman <eyupcanakman@gmail.com>
Move `CSSKeyframesRule` methods (`CssRules`, `AppendRule`, `DeleteRule`,
`FindRule`) from `CanGc` to `&mut JSContext`.
Testing: It compiles.
Fixes: Part of #42638
Signed-off-by: arabson99 <arabiusman99@gmail.com>
Move `CSSNestedDeclarations::Style` from `CanGc` to `&mut JSContext`.
Testing: It compiles.
Fixes: Part of #42638
Signed-off-by: arabson99 <arabiusman99@gmail.com>
Just adds some imports under gamepad cfg flag.
Testing: Successful compilation is enough to verify the change.
Signed-off-by: Shubham Gupta <shubham.gupta@chromium.org>
Fonts: Added `language` field in the struct `ShapingOptions` so Harfbuzz
can also consider language when shaping glyphs.
Testing: Existing WPT. Most recent try run:
[link](https://github.com/RichardTjokroutomo/servo/actions/runs/23334049878)
2 new passes, 5 new fails.
Failures:
- `/css/css-text-decor/text-emphasis-punctuation-2.html` should be a
false positive since `text-emphasis` shorthand hasn't been supported on
stylo yet.
- Not quite sure about this, but
`/css/css-text/text-spacing-trim/text-spacing-trim-quote-001.html?class=halt,htb&lang=ja`
tests `text-spacing-trim` default behavior on `JA` texts. Since this
property is not defined in Stylo, I believe that this property's
behavior (including default) hasn't been considered in Servo. So Servo
previously passing the test should be a false positive. As a side note,
this test also fails on Firefox.
- `/html/canvas/element/manual/text/canvas.2d.lang.dynamic.html`,
`/html/canvas/element/manual/text/canvas.2d.lang.html`,
`/html/canvas/element/manual/text/canvas.2d.lang.inherit.disconnected.canvas.html`
fail because canvas' experimental [`lang`
attribute](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lang)
hasn't been supported yet.
credits to @mrobinson for figuring out the reason for last 3 failing WPT
tests!
Fixes: #41825
---------
Signed-off-by: Richard Tjokroutomo <richard.tjokro2@gmail.com>
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
Migrate from `utf_8` to `encoding_rs` in `EventSource`. The `utf_8`
crate is archived and unmaintained. We already use `encoding_rs`, so it
makes sense to switch.
Testing: A new WPT test
(`tests/wpt/meta/eventsource/format-bom.any.js.ini`) is now passing.
Fixes: #42094.
Signed-off-by: mishop-15 <tanaybhutada03@gmail.com>
Follow up of #43526. This addresses Nico's comment:
https://github.com/servo/servo/pull/43526#issuecomment-4104953308
- `bluetooth_traits` -> `servo_bluetooth_traits`
- `base` -> `servo_base`
- `bluetooth` -> `servo_bluetooth`
- `background_hang_monitor` -> `servo_background_hang_monitor`
Testing: This should not change any behaviour.
---------
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
For a network fetch, the body chunk request sender keeps being alive as
long as the request is alive. This leads to a big resource leak as this
keeps a couple of IpcChannels and SharedMemory around. These would only
be cleaned up when the Gc cleans up the Request which can be too long
for tight fetch loops.
This gives a method to destroy the channel at the end of the complete
fetch (keeping in mind redirects). Currently we have to do this by hand
as a simple guard structure did not work correctly.
Additionally, this renames `RequestBody::take_stream` to the correct
clone_stream and cleans up some smaller names and documentation.
Testing: WPT should catch anything that is not spec conform.
Fixes: https://github.com/servo/servo/issues/41202
---------
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
Signed-off-by: Taym Haddadi <haddadi.taym@gmail.com>
Co-authored-by: Taym Haddadi <haddadi.taym@gmail.com>
`dispatch_input_event_with_hit_testing` already returns a `bool` to
indicate whether the dispatch failed.
However, for some reason this was used nowhere. When it fails, embedder
is not informed.
This is fine for embedder as right now it only handles keyboard
shortcuts for headed window,
but a disaster for WebDriver as it is synchornously waiting for the
feedback.
Testing: Several tests no longer CRASH.
Fixes: #43379
---------
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
Implement TurboSHAKE algorithm in our WebCrypto API. This includes a
WebIDL dictionary `TurboSHAKE` and the "digest" operation of TurboSHAKE.
Specification: https://wicg.github.io/webcrypto-modern-algos/#turboshake
Testing: Pass TurboSHAKE-related WPT tests.
Fixes: Part of #40687
Signed-off-by: Kingsley Yung <kingsley@kkoyung.dev>
Verified that this test fails before #43521 and passes after it, and
matches behaviour of other browsers.
Testing: Adds a new test.
Part of #43507
Signed-off-by: Josh Matthews <josh@joshmatthews.net>
We now check for this header and corresponding logic. The WPT tests
mostly pass, but rely on the `contentDocument` of the iframe to be
`null`. This is not something we did before, which means that iframes
were able to access the contents of error pages.
Instead, we now mark the document as internal with an opaque origin
according to the spec [1]. We shouldn't do this post-fact, but is
required since we first need to construct the document and enter its
realm, before we determine that it is an invalid document.
Fixes#16103
[1]:
https://html.spec.whatwg.org/multipage/document-lifecycle.html#navigate-ua-inline
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
`iframe` should be considered for `first-paint`.
TODO of: #42975
Synced: https://github.com/web-platform-tests/wpt/pull/58243
Refer for some history: #42498
Testing:
- `wpt/paint-timing/first-paint-only/child-painting-first-image.html`
- `wpt/paint-timing/first-paint-only/sibling-painting-first-image.html`
Fixes: #42455
---------
Signed-off-by: Shubham Gupta <shubham.gupta@chromium.org>
Add a new method to components/script/dom/globalscope.rs which checks if
the global is a Window , then uses
window.Document().encoding_parse_a_url(..) if so. For non-Window
globals, just use the existing logic of getting the api_base_url() value
and calling join(..) on it.
Testing: Existing WPTs.
Fixes: #43509
---------
Signed-off-by: Jayanta Pradhan <pradhanjayanta91@gmail.com>
Move `CSSKeyframeRule::Style` from `CanGc` to `&mut JSContext`.
Testing: Just a refactor, Existing tests suffice.
Fixes: Part of #42638
Signed-off-by: arabson99 <arabiusman99@gmail.com>
Bumps [arc-swap](https://github.com/vorner/arc-swap) from 1.8.2 to
1.9.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/vorner/arc-swap/blob/master/CHANGELOG.md">arc-swap's
changelog</a>.</em></p>
<blockquote>
<h1>1.9.0</h1>
<ul>
<li>Promote certain orderings to SeqCst. Original proofs based on wrong
reading of
standard :-(. Expect some performance degradation (<a
href="https://redirect.github.com/vorner/arc-swap/issues/198">#198</a>,
<a
href="https://redirect.github.com/vorner/arc-swap/issues/200">#200</a>).</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="873fbf2e72"><code>873fbf2</code></a>
Test file for the <a
href="https://redirect.github.com/vorner/arc-swap/issues/198">#198</a></li>
<li><a
href="ffb2808f59"><code>ffb2808</code></a>
Release of 1.9.0</li>
<li><a
href="9d87160c32"><code>9d87160</code></a>
Promote several Orderings to SeqCst</li>
<li>See full diff in <a
href="https://github.com/vorner/arc-swap/compare/v1.8.2...v1.9.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 the tungstenite-related group with 2 updates:
[async-tungstenite](https://github.com/sdroege/async-tungstenite) and
[tungstenite](https://github.com/snapview/tungstenite-rs).
Updates `async-tungstenite` from 0.33.0 to 0.34.0
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/sdroege/async-tungstenite/blob/main/CHANGELOG.md">async-tungstenite's
changelog</a>.</em></p>
<blockquote>
<h2>[0.34.0] - 2026-03-20</h2>
<h3>Changed</h3>
<ul>
<li>Update to tungstenite 0.29.</li>
<li>Update to async-native-tls 0.6.</li>
</ul>
<h3>Added</h3>
<ul>
<li>smol runtime support including smol-native-tls.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="f37ab0a072"><code>f37ab0a</code></a>
Update CHANGELOG.md for 0.34.0</li>
<li><a
href="b62b375515"><code>b62b375</code></a>
Update version to 0.34.0</li>
<li><a
href="e7612f41f5"><code>e7612f4</code></a>
Update to async-native-tls 0.6</li>
<li><a
href="2b81693011"><code>2b81693</code></a>
Update dev-dependencies.</li>
<li><a
href="c6bdd383f3"><code>c6bdd38</code></a>
Update tungstenite to 0.29.</li>
<li><a
href="f88c3ef099"><code>f88c3ef</code></a>
ci: Add smol-runtime tests</li>
<li><a
href="4e760cdd20"><code>4e760cd</code></a>
examples: Add smol echo example</li>
<li><a
href="da5e725dc9"><code>da5e725</code></a>
runtimes: Add smol runtime support</li>
<li>See full diff in <a
href="https://github.com/sdroege/async-tungstenite/compare/0.33.0...0.34.0">compare
view</a></li>
</ul>
</details>
<br />
Updates `tungstenite` from 0.28.0 to 0.29.0
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/snapview/tungstenite-rs/blob/master/CHANGELOG.md">tungstenite's
changelog</a>.</em></p>
<blockquote>
<h1>0.29.0</h1>
<ul>
<li>Update MSRV to <code>1.71</code> due to <code>syn</code> (the
dependency of <code>thiserror</code>) requiring it.</li>
<li>Allow users to send headers with non-visible ASCII values (as long
as they constitute a correct <code>HeaderValue</code>).</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="c2921718b7"><code>c292171</code></a>
Suppress clippy warnings in tests/</li>
<li><a
href="0938f1c79b"><code>0938f1c</code></a>
Bump version</li>
<li><a
href="4a457f65d9"><code>4a457f6</code></a>
Add missing word to the comment (<a
href="https://redirect.github.com/snapview/tungstenite-rs/issues/521">#521</a>)</li>
<li><a
href="aef32231f5"><code>aef3223</code></a>
Fix grammar in <code>WebSocketContext::from_partially_read</code> docs
(<a
href="https://redirect.github.com/snapview/tungstenite-rs/issues/534">#534</a>)</li>
<li><a
href="ad6539bcb9"><code>ad6539b</code></a>
Inline the utf-8 crate (<a
href="https://redirect.github.com/snapview/tungstenite-rs/issues/536">#536</a>)</li>
<li><a
href="df722bd668"><code>df722bd</code></a>
Update the CI to accomodate for the new MSRV</li>
<li><a
href="9833bdec33"><code>9833bde</code></a>
Bump MSRV</li>
<li><a
href="59bee6404f"><code>59bee64</code></a>
Fix formatting in CHANGELOG.md</li>
<li><a
href="3f2f222cd8"><code>3f2f222</code></a>
Update CHANGELOG.md</li>
<li><a
href="84eaba964d"><code>84eaba9</code></a>
Fixing issue with non-ASCII header values</li>
<li>Additional commits viewable in <a
href="https://github.com/snapview/tungstenite-rs/compare/v0.28.0...v0.29.0">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 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>
Two comment typos in indexeddb.rs and generic_channelset.rs. Skipped the
`independant` function name in layout.rs since renaming it would be
breaking.
Signed-off-by: Charlie Tonneslan <cst0520@gmail.com>
This is follow-up of #41459.
We replace some of these:
```rust
let mut cx = unsafe { script_bindings::script_runtime::temp_cx() };
```
..by passing a `cx: &mut JSContext` instead.
---
Testing: existing WPT tests
Fixes: #43453
Signed-off-by: pylbrecht <pylbrecht@mailbox.org>
Moves the cleanup logic to a separate helper struct to comply with the
prohibition of manual `Drop` implementations for DOM types.
Testing: WebGL tests just cover its parts
Fixes: Partially #26488
Signed-off-by: Domenico Rizzo <domenico.rizzo@gmail.com>
Remove `referrer` field from `ScriptFetchOptions` and pass it directly
to `script_fetch_request`.
This keeps ScriptFetchOptions aligned with the HTML
fixes#42875
---------
Signed-off-by: Kelechi Ebiri <ebiritg@gmail.com>
Fixes: #43360
This PR makes `<select>` behave like other browsers by only opening the
picker for trusted user clicks, and adds a regression test to ensure
synthetic `.click()/dispatchEvent('click')` won’t open it.
---------
Signed-off-by: SharanRP <z8903830@gmail.com>
The CSP crate was incorrectly using the request URL for both checking if
policies were matching, as well as reporting that URL. However, the CSP
specification uses the current URL to check for policies and the url for
reporting a violation.
Therefore, set the new current_url field for these requests, leaving the
ws scheme URLs as a special case. We also should take redirects into
account for navigations (which is only relevant for forms), but LoadData
currently has no notion of keeping track of that.
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
Pass `&mut JSContext` to `CustomElementReaction::invoke` and
`upgrade_element` algorithm.
Testing: A successful build is enough
Part of #40600
Signed-off-by: Gae24 <96017547+Gae24@users.noreply.github.com>
Modern Algorithms in WebCrypto API specification was updated to rename
the `length` parameter of the `CShakeParams` dictionary to
`outputLength`. We update our implementation accordingly.
Specification update:
41434899e8
WPT update:
0acea989ac
The final step of the "digest" operation of cSHAKE was also updated to
clarify that it outputs a byte sequence, rather than a bit sequence.
This matches our current implementation. No change in our implementation
is needed. The specification text in our code is updated.
Specification update:
5dd19e3a9f
Testing: Pass updated WPT tests.
Signed-off-by: Kingsley Yung <kingsley@kkoyung.dev>
script: Add navigation and traversal task source
Testing: This shouldn't be something that's observable through tests, so
a successful build is enough to verify the change.
Fixes: #43497
---------
Signed-off-by: Jayanta Pradhan <pradhanjayanta91@gmail.com>
Parse form action URLs using the document's encoding-aware URL parser.
Testing: Verified with the WPT form-action tests `./mach test-wpt
tests/wpt/tests/html/semantics/forms/the-form-element`, all relevant
tests passed.
Fixes: #43507
Signed-off-by: SharanRP <z8903830@gmail.com>
This pulls one bit of navigation logic out into a method that is easier
to cross-reference against the spec, and drops a bunch of custom logic
that is better served by the existing LoadOrigin infrastructure.
Testing: Existing WPT coverage is sufficient.
Signed-off-by: Josh Matthews <josh@joshmatthews.net>
The change makes it so that `<marquee>` elements render more like the do
in Chrome. The text will not animate, but likewise it does not wrap and
the element will stretch to fill the inline space in its containing
block.
Testing: This change adds a Servo-specific appearance test. This
essentially
just replicates the user agent style of `<marquee>`. It's quite
difficult to
write tests for appearance. Some WPT tests start to pass, but
`/html/obsolete/requirements-for-implementations/the-marquee-element-0/marquee-min-intrinsic-size.html`
starts to fail. This is due to the fact that though the `<marquee>`
style
is improved, we do not yet correctly handle the minimum intrinsic size
properly.
Fixes: #43517
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
script: Add longdesc reflection to HTMLIFrameElement and
HTMLFrameElement
Also corrects the reflection for HTMLImageElement to use USVString.
Testing: Covered by WPTs
Signed-off-by: Luke Warlow <lwarlow@igalia.com>
Add a check for a valid key path when create index on idb object store
Testing: `./mach test-wpt
tests/wpt/tests/IndexedDB/keypath_invalid.any.js`
Fixes: #42434
---------
Signed-off-by: Jerens Lensun <jerensslensun@gmail.com>
Our existing `SubtleCrypto::normalize_algorithm` implementation converts
the input dictionary from a JavaScript object to a Rust struct twice.
The first conversion (Step 2 to 4) under WebIDL dictionary `Algorithm`
is for retrieving the `name` property to determine the desired
dictionary type, and the second conversion (Step 9 to 10) is for
retrieving the whole dictionary of desired WebIDL dictionary type.
If the `name` property of the input dictionary is a JavaScript getter
method, the getter will be triggered twice and leads to some undesired
side effects. For example, WPT contains some tests that the `name`
property is a getter method which transfers a buffer source. Triggering
it twice leads to a TypeError of accessing detached buffer at the second
time. Those tests then fail.
5bb4f9f103/tests/wpt/tests/WebCryptoAPI/digest/cshake.tentative.https.any.js (L215-L219)
This patch includes two changes to fix this problem.
First, the algorithm name retrieved in Step 2 to 4 is now passed to
`Op::RegisteredAlgorithm::from_object` in Step 9 to 10 so that we don't
need to read the `name` property and trigger the getter method again.
Second, we no longer use `dictionary_from_jsval` for converting the
dictionary, since it reads the whole dictionary including the `name`
property, triggering the getter method again. Instead, we add some
custom helper functions (`get_optional_parameter`,
`get_required_parameter`, `get_optional_parameter_in_box`,
`get_required_parameter_in_box`, `get_optional_buffer_source`,
`get_required_buffer_source`) to manually read properties other the
`name` property one by one, in a way that matches the specification.
Hence, each property of the input dictionary will only be read once, to
avoid this issue.
Testing: Pass some WPT tests that were expected to fail.
---------
Signed-off-by: Kingsley Yung <kingsley@kkoyung.dev>
## Summary
Fixes#43328
When `OsRng.try_fill_bytes` fails in `crypto.getRandomValues`, the code
previously returned `Error::JSFailed`. This error type asserts that a
JavaScript exception is already pending on the context — but `OsRng` is
a Rust library that never sets a JS exception, causing Servo to panic
with `assertion failed: JS_IsExceptionPending(*cx)`.
This PR replaces `Error::JSFailed` with `Error::Operation`, which throws
a proper `OperationError` DOMException instead of crashing. This is
consistent with how Servo's SubtleCrypto handles the same scenario
(e.g., `ed25519_operation.rs`).
## Testing
Tested by unconditionally taking the error branch (`if true`):
**Before (panic):**
<img width="960" alt="Screenshot From 2026-03-20 23-42-35"
src="https://github.com/user-attachments/assets/f15150ce-aa26-46c9-a381-985e6d850904"
/>
---
**After (fix):**
<img width="960" alt="Screenshot From 2026-03-20 23-43-05"
src="https://github.com/user-attachments/assets/99490b06-aeaa-4dcc-b10a-56336efad87d"
/>
Signed-off-by: rogerkorantenng <rogerkorantenng@gmail.com>
This fixes two assertions observed in Servo using debug mozjs builds:
* `Assertion failure: !IsInsideNursery(obj)` for every promise object
reflected into Rust code
* `Missing calls to JS::RemoveAssociatedMemory` when shutting down the
browser
Testing: Verified locally that WPT tests can run to completion in debug
mozjs builds, but we don't run those on CI.
Fixes: #43486
Signed-off-by: Josh Matthews <josh@joshmatthews.net>
The spec has explicit steps for it, where we were calling a different
algorithm before. This passes more assertions in
`content-security-policy/securitypolicyviolation/securitypolicyviolation-block-image.sub.html`
but since line numbers aren't correct, the test isn't fully passing yet.
Testing: WPT
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
This change implements the `scrollend` event. Since there is no support
for asynchronous / smooth scrolling, with this change all `scroll`
events simply send a `scrollend` event in a way that looks a bit like
what the specification says. Note that there are currently some serious
issues (w3c/csswg-drafts#8396) with specification, so things are still a
bit weird overall.
In addition, this organizes and reduces duplication in some of the
existing scroll event code.
Testing: This causes some WPT tests to start passing or to stop timing
out.
---------
Signed-off-by: abdelrahman1234567 <abdelrahman.hossameldin.awadalla@huawei.com>
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: abdelrahman1234567 <abdelrahman.hossameldin.awadalla@huawei.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
This uses UnrootedSimpleNodeIterator in a couple of places, namely
- delete_cell_or_row
- children_changed
- move_fn
More importantly this implements upcast and downcast for `UnrootedDom`.
These methods work the same as the DomRoot methods except that they
carry the no_gc and, hence,
keep the lifetime.
Testing: WPT tests will see if this breaks something.
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
This is no longer present in the spec. Instead, the
`process_request_body` is the new way. These two
methods were called right after each other and there was only 1
implementation in `htmlvideoelement`. That implementation is now moved
to `process_request_body` and hence we can remove the unnecessary
method.
Testing: It compiles
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
Pass `&mut JSContext` to `HTMLScriptElement::execute`, propagate it
inside `global_scope_script_execution.rs` and then switch to wrappers2
bindings.
Testing: A successful build is enough.
Part of #40600
---------
Signed-off-by: Gae24 <96017547+Gae24@users.noreply.github.com>
This PR involves cleaning up the unused GlobalScope argument in
UnderlyingSourceContainer::call_pull_algorithm. This PR involves changes
across three files. Only removing the unused GlobalScope and suppressed
reference with underscore prefix.
Testing: This PR involves cleanup of the unused GlobalScope argument in
UnderlyingSourceContainer::call_pull_algorithm. The argument was
suppressed using underscore earlier. Thus it was not involved in any
runtime instances. Thus this PR does not require additional testing. I
was able to successfully build the repo after changes. There is no other
dependency of removed variable, thus no impact outside.
Fixes: #43460
Signed-off-by: Nishant-k-sagar <147799872+Nishant-k-sagar@users.noreply.github.com>
Previously arrays were falling back to Object previewer which was
showing indices as properties- which was not correct. This PR implements
dedicated `ArrayPreviewer` that follows Firefox's `ArrayLike` pattern.
Currently array preview support only length display, it does not
implement showing array items yet.
Now(Correct and follows Firefox pattern, Array items coming in a
follow-up PR):
<img width="510" height="167" alt="image"
src="https://github.com/user-attachments/assets/a51f04d4-333c-4d7c-8159-18121c967670"
/>
Before(We shouldn't see these values- it's incorrect):
<img width="1294" height="721" alt="image"
src="https://github.com/user-attachments/assets/2218a622-c791-4436-958e-1a5553de7864"
/>
Testing: Current tests are passing.
Fixes: Part of #36027
Signed-off-by: atbrakhi <atbrakhi@igalia.com>
This moves some easy elements in Script from IpcChannel and related
methods to GenericChannel and related methods and some callbacks.
Testing: This will be covered by WPT if the channels behave differently.
---------
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
The width and height should be guaranteed to be non-negative according
to CSSOM regardless of the writing mode.
Testing: Existing tests.
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
This PR comprises
1. Segregate `paintable` and `contentful`.
2. Adds Checking of non-default background for eligibility to mark
`first-paint`.
3. Adds a bool `is_paintable` to `display_list` and use same for marking
`first-paint`.
TODO: This doesn't consider `iframes`. Will add PR after fixing WPT
tests.
Raised an issue for some incomplete definitions:
https://github.com/w3c/paint-timing/issues/122
Testing:
- `wpt/tests/paint-timing/first-paint-only/first-paint-bg-color.html`
- Updated WPT tests expectations.
- `wpt/paint-timing/first-image-child.html`
- `wpt/paint-timing/first-paint-only/sibling-painting-first-image.html`
- Unit Test: `servo/tests/performance_paint_timings.rs`. Following Tests
Cases are covered:
Background Pref |Root Background|FP|TC
--|--|--|--
|Default|Unset|❌ | `test_default_pref_with_unset_background`
|Non-Default|Unset|❌ | `test_non_default_pref_with_unset_background`
|Default|Transparent|❌|`test_default_pref_with_transparent_background`
|Non-Default|Unset|❌|`test_non_default_pref_with_transparent_background`
|Default|Set|✅|`test_default_pref_with_background`
|Non-Default|Set|✅|`test_non_default_pref_with_background`
|Non-Default|Set (same as
pref)|❌|`test_non_default_pref_with_same_background`
Fixes: #42148
---------
Signed-off-by: Shubham Gupta <shubham.gupta@chromium.org>
Found when building with Rust 1.94. The lint itself only complains about
the direct function ptr to usize cast and recommends an intermediate `as
*const ()` cast. We also don't need provenance here, so we can also use
the more explicit .addr() cast.
Testing: Covered by compilation in CI.
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
Fix compile error when compiling the crate (on macos). Discovered
because cargo-publish --dry-run failed.
The trait expects an `Option<>` for `to_vec`
Testing: Not tested in CI. Compiled the crate locally, but without
cross-compiling for android
Fixes: #43462
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
While we now pass a lot of worker tests, we still fail a bunch:
```
% fd '^worker-.*.html.ini'
tests/wpt/meta/content-security-policy/gen/top.http-rp/script-src-self/worker-import.http.html.ini
tests/wpt/meta/content-security-policy/gen/top.http-rp/script-src-self/worker-import.https.html.ini
tests/wpt/meta/content-security-policy/gen/top.http-rp/worker-src-self/worker-import.http.html.ini
tests/wpt/meta/content-security-policy/gen/top.http-rp/worker-src-self/worker-import.https.html.ini
tests/wpt/meta/content-security-policy/gen/top.meta/script-src-self/worker-import.http.html.ini
tests/wpt/meta/content-security-policy/gen/top.meta/script-src-self/worker-import.https.html.ini
tests/wpt/meta/content-security-policy/gen/top.meta/worker-src-self/worker-import.http.html.ini
tests/wpt/meta/content-security-policy/gen/top.meta/worker-src-self/worker-import.https.html.ini
tests/wpt/meta/content-security-policy/script-src/worker-data-set-timeout.sub.html.ini
tests/wpt/meta/content-security-policy/script-src/worker-importscripts.sub.html.ini
tests/wpt/meta/content-security-policy/script-src/worker-set-timeout.sub.html.ini
tests/wpt/meta/fetch/metadata/generated/worker-dedicated-constructor.sub.html.ini
tests/wpt/meta/fetch/metadata/generated/worker-dedicated-importscripts.https.sub.html.ini
tests/wpt/meta/fetch/metadata/generated/worker-dedicated-importscripts.sub.html.ini
tests/wpt/meta/mixed-content/gen/top.http-rp/opt-in/worker-import-data.https.html.ini
tests/wpt/meta/mixed-content/gen/top.http-rp/opt-in/worker-import.https.html.ini
tests/wpt/meta/referrer-policy/generic/subresource-test/worker-messaging.html.ini
tests/wpt/meta/service-workers/service-worker/worker-client-id.https.html.ini
tests/wpt/meta/service-workers/service-worker/worker-in-sandboxed-iframe-by-csp-fetch-event.https.html.ini
tests/wpt/meta/service-workers/service-worker/worker-interception-redirect.https.html.ini
tests/wpt/meta/service-workers/service-worker/worker-interception.https.html.ini
tests/wpt/meta/upgrade-insecure-requests/gen/worker-classic.http-rp/upgrade/worker-classic.https.html.ini
tests/wpt/meta/upgrade-insecure-requests/gen/worker-classic.http-rp/upgrade/worker-module.https.html.ini
tests/wpt/meta/upgrade-insecure-requests/gen/worker-module.http-rp/upgrade/worker-classic.https.html.ini
tests/wpt/meta/upgrade-insecure-requests/gen/worker-module.http-rp/upgrade/worker-module.https.html.ini
tests/wpt/meta/wasm/webapi/esm-integration/worker-import-source-phase.tentative.html.ini
tests/wpt/meta/wasm/webapi/esm-integration/worker-import.tentative.html.ini
tests/wpt/meta/workers/Worker-creation-happens-in-parallel.https.html.ini
tests/wpt/meta/workers/Worker-postMessage-happens-in-parallel.https.html.ini
tests/wpt/meta/workers/Worker-terminate-forever-during-evaluation.html.ini
tests/wpt/meta/workers/worker-request-animation-frame.html.ini
```
Also, we are passing `Option<PolicyContainer>` down the call stack
through `LoadState`, which is more of a workaround. However, since
maintaining this long-lived branch is becoming a bit painful (merge
conflicts) and I was starting to lose momentum because of that, I would
like get this merged rather sooner than later.
We will address the failing tests and find the right place for
`PolicyContainer` in follow-ups, including the added
`#[allow(clippy::too_many_arguments)]`.
# See also
* https://html.spec.whatwg.org/multipage/#worker-processing-model
*
https://html.spec.whatwg.org/multipage/#fetch-a-module-worker-script-tree
---
Fixes: #23308
Testing: WPT tests
Signed-off-by: pylbrecht <pylbrecht@mailbox.org>
Co-authored-by: Gae24 <96017547+Gae24@users.noreply.github.com>
Fixes the following error:
```
error: failed to verify package tarball
Caused by:
Source directory was modified by build.rs during cargo publish. Build scripts should not modify anything outside of OUT_DIR.
Added: /Users/jschwender/Dev/servo/target/package/servo-script-bindings-0.0.6/codegen/__pycache__
/Users/jschwender/Dev/servo/target/package/servo-script-bindings-0.0.6/codegen/__pycache__/codegen.cpython-311.pyc
/Users/jschwender/Dev/servo/target/package/servo-script-bindings-0.0.6/codegen/__pycache__/configuration.cpython-311.pyc
/Users/jschwender/Dev/servo/target/package/servo-script-bindings-0.0.6/third_party/WebIDL/__pycache__
/Users/jschwender/Dev/servo/target/package/servo-script-bindings-0.0.6/third_party/WebIDL/__pycache__/WebIDL.cpython-311.pyc
/Users/jschwender/Dev/servo/target/package/servo-script-bindings-0.0.6/third_party/ply/ply/__pycache__
/Users/jschwender/Dev/servo/target/package/servo-script-bindings-0.0.6/third_party/ply/ply/__pycache__/__init__.cpython-311.pyc
/Users/jschwender/Dev/servo/target/package/servo-script-bindings-0.0.6/third_party/ply/ply/__pycache__/lex.cpython-311.pyc
/Users/jschwender/Dev/servo/target/package/servo-script-bindings-0.0.6/third_party/ply/ply/__pycache__/yacc.cpython-311.pyc
```
Testing: Manual testing. The same approach was already successfully
applied in `mozjs`.
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
Without these features, the crate does not build standalone. It worked
in servo because of feature unification.
It seems like we should be able to refactor this crate quite easily to
be able to disable some of the features again.
Testing: Manual build: `cargo build -p servo-dom-struct`
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
Add further missing repository keys / descriptions, which I missed in
#43451 due to a suboptimal grep (assuming that rust-version.workspace is
always the last item).
Additionally fix crate self-references, which caused cargo-publish to
fail, due to it trying to fetch the crate from crates.io.
When specifying the current crate in `[dev-dependencies]` to enable a
test feature or similar, apparently one should not use `workspace =
true` and instead use `path`.
This requires extending the previously added `tidy` check, to allow
`path` dependencies in this specific case outside of the workspace
Cargo.toml.
Testing: Covered by existing tests
---------
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
Instead of always doing the newline fixup on the `<textarea>`
placeholder, only do it when the placeholder attribute itself changes.
This avoids doing string replacements when they are not necessary (such
as when a `<textarea>` switches from having text to only having the
placeholder and viceversa).
In addition make it so that `DOMString::clear` preserves the string
allocation when called.
Testing: This is just a small optimization so testing should not be
necessary. Existing behavior is verified via WPT tests.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Pass `&mut JsContext` to `TransformStreamDefaultController::enqueue`, in
preparation of porting the remaining BlobMethods.
Testing: Just a refactor, ./mach test-unit still passes.
Fixes: Part of #42638
---------
Signed-off-by: Uiniel <174327181+uiniel@users.noreply.github.com>
On visual viewport scroll, fire the scroll event to the `VisualViewport`
instances. Incidentaly, fix a bug where the pinch zoom update should be
propagated to the script.
Testing: New unit test and manual WPT.
---------
Signed-off-by: Jo Steven Novaryo <steven.novaryo@gmail.com>
Wrap `BoxFragment` rare data with `AtomicRefCell` and move
`resolved_sticky_offset` to the `BoxFragmentRareData` since it is
relevant only for `position: sticky`. It reduce the size of
`BoxFragment` from 296 to 264. This allow us to add more rare data to
`BoxFragment` after the reflow, such as the calculation of scrollbar
that requires scrollable overflow to be calculated beforehand.
Testing: No WPT change.
---------
Signed-off-by: Jo Steven Novaryo <steven.novaryo@gmail.com>
Added dedicated worker side handling, followed the same pattern used in
main script handling by wiring worker global scope to
`DebuggerGlobalScope` and invoking `fire_eval`
fixes: Part of #43317
Signed-off-by: SharanRP <z8903830@gmail.com>
On Windows and Linux the control key is expected to move the text caret
by word. In addition, it seems like the alt wasn't working properly on
Linux. This change makes the modifier key for word movement dependent on
the platform.
Testing: This change adds a Servo-specific keyboard motion test.
Keyboard motion events are not specified AFAIK.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
This fixes a warning of `cargo publish`:
```
warning: manifest has no description, documentation, homepage or repository
```
Testing: Compiling. Manual testing of `cargo publish --dry-run` (with
some additional patches, and until the next error, shows this warning
has been fixed)
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
in #42336, we added a
[Servo](https://doc.servo.org/servo/struct.Servo.html)-global API for
controlling whether accessibility is active. the idea was that when the
embedder activates accessibility, all webviews and documents activate
accessibility and start sending AccessKit tree updates, and vice versa
when they deactivate.
we found a problem with this approach in #42338. global activation of
accessibility makes it too easy to accidentally cause a panic in
AccessKit, and harder than it needs to be for embedders to learn that
they are responsible for grafting each webview’s subtree into their main
AccessKit tree as soon as accessibility is activated. this is due to an
invariant of the AccessKit subtree API: if a subtree starts sending
updates before the graft node is created, the program panics.
this patch reworks accessibility activation to make it per-webview. by
requiring embedders to explicitly activate accessibility for a webview,
we can communicate the AccessKit invariant via our API docs.
Testing: this patch includes an initial accessibility test in libservo
Fixes: part of #4344, extracted from our work in #42338
---------
Signed-off-by: Alice Boxhall <alice@igalia.com>
Signed-off-by: delan azabani <dazabani@igalia.com>
Co-authored-by: Alice Boxhall <alice@igalia.com>
Add the cx parameter to `fn process_response` in the
`FetchResponseListener` trait and the traits that that interface change
requires. Chose to add it as the first parameter, following the same
order that `FetchResponseListener::process_response_eof` uses.
Testing: Checked that servo builds locally as well as `./mach fmt` and
`./mach test-tidy`. I don't think more tests are needed as we are not
introducing new functionality
Fixes: #42840
---------
Signed-off-by: Javier Olaechea <pirata@gmail.com>
Bumps [euclid](https://github.com/servo/euclid) from 0.22.13 to 0.22.14.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/servo/euclid/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>
Bumps [clap](https://github.com/clap-rs/clap) from 4.5.60 to 4.6.0.
<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.6.0] - 2026-03-12</h2>
<h3>Compatibility</h3>
<ul>
<li>Update MSRV to 1.85</li>
</ul>
<h2>[4.5.61] - 2026-03-12</h2>
<h3>Internal</h3>
<ul>
<li>Update dependencies</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="9ab6dee710"><code>9ab6dee</code></a>
chore: Release</li>
<li><a
href="374a30dac6"><code>374a30d</code></a>
docs: Update changelog</li>
<li><a
href="d0c8aabc00"><code>d0c8aab</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/6306">#6306</a>
from epage/update</li>
<li><a
href="686ce2f665"><code>686ce2f</code></a>
chore: Upgrade compatible</li>
<li><a
href="8203238de6"><code>8203238</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/6305">#6305</a>
from epage/msrv</li>
<li><a
href="c774a892ba"><code>c774a89</code></a>
docs: Reduce main's in doctests</li>
<li><a
href="73534f6ed3"><code>73534f6</code></a>
chore: Upgrade to 2025 edition</li>
<li><a
href="dfe05a9bfe"><code>dfe05a9</code></a>
chore: Bump MSRV to 1.85</li>
<li><a
href="8b41d0b849"><code>8b41d0b</code></a>
chore: Release</li>
<li><a
href="518220f102"><code>518220f</code></a>
docs: Update changelog</li>
<li>Additional commits viewable in <a
href="https://github.com/clap-rs/clap/compare/clap_complete-v4.5.60...clap_complete-v4.6.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>
Instead of using ASCII character to process the `accesskey` attribute
use the hardware key code that comes with the platform key event. This
aligns our implementation closer to the spec and allows `accesskey` to
work properly with lowercase letters on Linux machines (where shift is
part of the access key sequence). This might introduce some issues with
non-US keyboards, but those issues are inherent in the specification --
one reason why `accesskey` is not recommended for use.
Testing: A Servo-specific accesskey test is extended to cover this case.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Elements with `visibility: hidden` or `visibility: collapse` could
receive focus via both sequential navigation and the JS `focus()` API,
and already-focused elements did not lose focus when becoming invisible.
Per the CSS Display spec, invisible elements ”are removed from
navigation”, which we can interpret to mean sequential focus navigation.
In practical terms, all popular user agents also prevent elements with
`visibility: hidden` from being focusable via click/the JS API, so this
PR makes servo match that behaviour as well.
Specifically, this adds a visibility check to
`Element::focusable_area_kind()` so that invisible elements are excluded
from all focusable area kinds.
Fixes#41312.
---------
Signed-off-by: Jacob Adam <software@jacobadam.net>
Pass `&mut JSContext` to `ReadableStream::cancel`, in preparation of
porting the remaining `BlobMethods`.
Testing: Just a refactor, ./mach test-unit still passes.
Fixes: Part of #42638
Signed-off-by: Uiniel <174327181+uiniel@users.noreply.github.com>
When clicking just to the left of a text fragment, we should return the
first index in that fragment. This means that when you click on the
border of a text input, the first fragment is selected. We do this by
improving the distance calculation logic to account for this situation.
Testing: This allows us to remove the "fudge factor" that we were adding
to
mouse handling input tests. In addition, the content rectangle
calculation
function is improved and made more general for these tests. In addition,
two new Servo-specific tests are added to verify the behavior when
clicking
in the padding of various text inputs.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
It pushes the `temp_cx` 1 level up to `element.rs` where the calling
chain begins. Other than that this was purely a mechanical change where
I used regexes to replace all patterns with the new ones.
Part of #42812
Testing: It compiles
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
Previously CONTENT_EVENT_HANDLER_NAMES was a array of more than 100
elements where we were doing a linear search.
This replaces it with a FxHashSet and a O(1) search. In most cases this
should not improve performance as the first few elements seem to be the
most common event handler names. But even these were a couple of costly
string away.
In the case that somebody specifies a later event or an event that does
not exist, we increase the performance significantly.
Currently I do not have numbers as I am away from my workstation.
Testing: This does not change behavior, just speed.
---------
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
Previously the `pinch_zoom` method on `WebView` would be used to update
the page's pinch zoom level, however there was no way for the embedder
to retrieve the current pinch zoom.
This patch renames the existing `pinch_zoom` method to
`adjust_pinch_zoom` and changes the `pinch_zoom` method to instead
return the current pinch zoom level.
---
Decided to go for the breaking change since I'd find `pinch_zoom`
combined with `get_pinch_zoom` to be confusing, however I'm happy to
change that if a non-breaking change is preferred.
Motivation for this patch is just that I'd like to display the zoom
level in my UI while rendering.
Testing: Since this change adds a simple getter to the API, we can
probably avoid a unit test in this case.
---------
Signed-off-by: Christian Duerr <contact@christianduerr.com>
Broken Image Icons are not worthy for LCP candidates.
Waiting for WPT Sync to update test from upstream and expectations as
well.
Testing:
`tests/wpt/tests/largest-contentful-paint/broken-image-icon.html`
Fixes: #42832Fixes: #43030
---------
Signed-off-by: Shubham Gupta <shubham.gupta@chromium.org>
Bumps [bpaf](https://github.com/pacak/bpaf) from 0.9.23 to 0.9.24.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pacak/bpaf/blob/master/Changelog.md">bpaf's
changelog</a>.</em></p>
<blockquote>
<h2>bpaf [0.9.24] - 2026-03-13</h2>
<ul>
<li>
<p>a less confusing error message when invalid user input mixes with
parsers that
can succeed with no input, see <a
href="https://redirect.github.com/pacak/bpaf/issues/442">#442</a>
thanks <a href="https://github.com/tonky"><code>@tonky</code></a> for a
solution prototype</p>
</li>
<li>
<p>CI test for older rustc now uses 1.71, MSRV should still be 1.60 for
now</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/pacak/bpaf/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>
Bumps [colorchoice](https://github.com/rust-cli/anstyle) from 1.0.4 to
1.0.5.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="0fe6f0ff6d"><code>0fe6f0f</code></a>
chore: Release</li>
<li><a
href="332016ed16"><code>332016e</code></a>
docs: Update changelog</li>
<li><a
href="dd73f64cf6"><code>dd73f64</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-cli/anstyle/issues/301">#301</a>
from Muscraft/fix-some-escape-codes</li>
<li><a
href="e2d2fb53a7"><code>e2d2fb5</code></a>
fix: Make 4:0 removes all underline styles</li>
<li><a
href="d82d083aa0"><code>d82d083</code></a>
feat: Support SGR 59 (reset underline color to default)</li>
<li><a
href="85c9a86d4c"><code>85c9a86</code></a>
feat: Support SGR 22-29 (off codes)</li>
<li><a
href="ac5c23b732"><code>ac5c23b</code></a>
refactor: Reorder SGR match arms to follow numerical order</li>
<li><a
href="2234b680fb"><code>2234b68</code></a>
test: Add tests for SGR off codes, underline subparams, and underline
color r...</li>
<li><a
href="ffb555fe2b"><code>ffb555f</code></a>
chore: Release</li>
<li><a
href="55de8a6470"><code>55de8a6</code></a>
chore: Download libc to match cargo</li>
<li>Additional commits viewable in <a
href="https://github.com/rust-cli/anstyle/compare/colorchoice-v1.0.4...colorchoice-v1.0.5">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>
Pass `&mut JSContext` and `&mut CurrentRealm` to more functions in
`dom/stream`, focusing on functions that need to be ported to finish
porting the remaining methods in `Blob`.
Testing: Just a refactor, ./mach test-unit still passes.
Fixes: Part of #42638
---------
Signed-off-by: Uiniel <174327181+uiniel@users.noreply.github.com>
Propagate the had_duplicate_attributes flag from html5ever's
ElementFlags through to the Element struct, enabling step 3 of the
CSP "is element nonceable" algorithm. Elements with duplicate
attributes are now correctly marked as "Not Nonceable", preventing
scripts with duplicate attributes from bypassing CSP nonce checks.
Testing: We still need https://github.com/servo/html5ever/issues/118 to
fully pass the
`content-security-policy/script-src/nonce-enforce-blocked.html` wpt
test. But I was able to uncomment some of the remaining tests on
`mozilla/csp/nonce-external-script-malformed-blocked.html`
---------
Signed-off-by: Dyego Aurélio <dyegoaurelio@gmail.com>
This adds a delay of 2 seconds for loading a valid image. This is added
to potentially overcome the race condition happening while reporting
LCP, to save from false positive result.
Testing: WPT tests is `TIMED OUT` as expected.
Signed-off-by: Shubham Gupta <shubham.gupta@chromium.org>
Testing: Not tested, it's difficult to test try-label related changes.
The fix is trivial though.
Fixes: #43345
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
RustRover flags unused dependencies gray in Cargo.toml, which works well
except for macro / derive related crates (false-positives). Based on
that I removed the flagged crates (after double checking with grep based
search).
There is one weird case in `storage`, where `tokio` was added as a
dependency with multiple feature flags enabled, without tokio actually
being used. Since the same feature combination is present in `net`,
probably this is a remnant of migrating storage from net.
Testing: If CI passes, this is fine. I additionally also searched for
references of the packages I removed in the respective crate (I hope I
didn't forget any, but should be 90% good).
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
Pass `&mut JSContext` to `Element::create` and `create_html_element`
Testing: No functionality changes, covered by existing tests.
Part of #40600
Signed-off-by: Gae24 <96017547+Gae24@users.noreply.github.com>
This workaround was added in 2016
(90e970a6d2) when the architecture of
Servo, macOS, and Apple hardware was very different. It has been
highlighted as causing issues on Linux machines (#42065). I've confirmed
that removing it does not seem degrade behavior when scrolling with a
Macbook touchpad. I think we should just remove it for now as it seems
like a workaround rather than a real fix for the original problem.
Testing: There isn't a very good way to test this unfortunately.
Closes#42065.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Christian Duerr <contact@christianduerr.com>
This change allows pressing the spacebar to cause a page down or page up
scroll. This matches the behavior of other browsers. In addition,
keyboard
scrolling tests are moved to the same directory as other input method
tests.
Testing: This change adds some additional testing to Servo-specific
keyboard scrolling tests.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Servo has for years implemented a behavior where spacebar or enter click
on a focused element will trigger a click. That behavior used to be
unspecified, but now it is. The specification says that this should only
happen on state-changing elements. This change makes this happen using
activatable elements as a heuristic (as state-changing elements are not
defined in the specification). In addition, the behavior is integrated
into the default keyboard event handler code.
Testing: This change adds a Servo-specific test due to the ambiguities
in the specification.
Fixes: #39028.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Implement `PropertyIteratorActor` boilerplate
This is prerequisite for implementing object property enumeration in the
debugger. It is part of popup preview work in debugger.
Testing: Should not change behavior
Fixes: part of #36027
Signed-off-by: atbrakhi <atbrakhi@igalia.com>
Correct data type of poster in `HTMLVideoElement` interface
Successful compilation is enough to verify the change.
Testing: `tests/wpt/meta/html/dom/reflection-embedded.html`
---------
Signed-off-by: Shubham Gupta <shubham.gupta@chromium.org>
Add support to modulepreload link elements. Currently we only fetch the
root module, as I think it is needs to be discussed whether we should
always fetch module dependencies, or if it should be limited due to
network constraints.
Inside `bind_to_tree` I ended up calling
`fetch_and_process_modulepreload` inside a delayed task, since it would
cause a crash due to DOM not being in a stable state when firing an
event (queueing the event seems to also do the trick).
Remaining tests failures are due to not supporting CSS modules and
performance entries's `transfer_size` being 0.
Testing: Covered by existing tests
---------
Signed-off-by: Gae24 <96017547+Gae24@users.noreply.github.com>
Latest ohos CI scenario tests are failing, due to a type error (int
instead of str).
This was presumably broken by #42509, where the type change. I'm a bit
confused why my try run succeeded, and the failure only recently started
happening (on an unrelated commit). This might be an effect of caching
hiding / avoiding the failure.
Testing: Tested in CI. Apparently this file is not covered by the python
type checker yet.
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
I've also refactored the relevant function a bit, because it was
unnecessarily nested and inside a huge `unsafe` block.
Testing: Regressions are covered by existing tests, but we can't test
for the presence of `log::error!` statements
Fixes (the most relevant) part of
https://github.com/servo/servo/issues/26667
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
Blob URLs created with opaque origins (like those in
https://github.com/servo/servo/issues/43326) were rejected when parsed
during `fetch`.
Testing: This doesn't have an impact on WPT but I've added a unit test
---------
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
Bumps [anstyle](https://github.com/rust-cli/anstyle) from 1.0.13 to
1.0.14.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="0fe6f0ff6d"><code>0fe6f0f</code></a>
chore: Release</li>
<li><a
href="332016ed16"><code>332016e</code></a>
docs: Update changelog</li>
<li><a
href="dd73f64cf6"><code>dd73f64</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-cli/anstyle/issues/301">#301</a>
from Muscraft/fix-some-escape-codes</li>
<li><a
href="e2d2fb53a7"><code>e2d2fb5</code></a>
fix: Make 4:0 removes all underline styles</li>
<li><a
href="d82d083aa0"><code>d82d083</code></a>
feat: Support SGR 59 (reset underline color to default)</li>
<li><a
href="85c9a86d4c"><code>85c9a86</code></a>
feat: Support SGR 22-29 (off codes)</li>
<li><a
href="ac5c23b732"><code>ac5c23b</code></a>
refactor: Reorder SGR match arms to follow numerical order</li>
<li><a
href="2234b680fb"><code>2234b68</code></a>
test: Add tests for SGR off codes, underline subparams, and underline
color r...</li>
<li><a
href="ffb555fe2b"><code>ffb555f</code></a>
chore: Release</li>
<li><a
href="55de8a6470"><code>55de8a6</code></a>
chore: Download libc to match cargo</li>
<li>Additional commits viewable in <a
href="https://github.com/rust-cli/anstyle/compare/v1.0.13...v1.0.14">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 the wayland-related group with 5 updates:
| Package | From | To |
| --- | --- | --- |
| [wayland-client](https://github.com/smithay/wayland-rs) | `0.31.12` |
`0.31.13` |
| [wayland-cursor](https://github.com/smithay/wayland-rs) | `0.31.12` |
`0.31.13` |
| [wayland-protocols](https://github.com/smithay/wayland-rs) | `0.32.10`
| `0.32.11` |
| [wayland-protocols-plasma](https://github.com/smithay/wayland-rs) |
`0.3.10` | `0.3.11` |
| [wayland-protocols-wlr](https://github.com/smithay/wayland-rs) |
`0.3.10` | `0.3.11` |
Updates `wayland-client` from 0.31.12 to 0.31.13
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/smithay/wayland-rs/commits">compare
view</a></li>
</ul>
</details>
<br />
Updates `wayland-cursor` from 0.31.12 to 0.31.13
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/smithay/wayland-rs/commits">compare
view</a></li>
</ul>
</details>
<br />
Updates `wayland-protocols` from 0.32.10 to 0.32.11
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/smithay/wayland-rs/commits">compare
view</a></li>
</ul>
</details>
<br />
Updates `wayland-protocols-plasma` from 0.3.10 to 0.3.11
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/smithay/wayland-rs/commits">compare
view</a></li>
</ul>
</details>
<br />
Updates `wayland-protocols-wlr` from 0.3.10 to 0.3.11
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/smithay/wayland-rs/commits">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 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>
Bumps [pyopenssl](https://github.com/pyca/pyopenssl) from 25.3.0 to
26.0.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pyca/pyopenssl/blob/main/CHANGELOG.rst">pyopenssl's
changelog</a>.</em></p>
<blockquote>
<h2>26.0.0 (2026-03-15)</h2>
<p>Backward-incompatible changes:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^</p>
<ul>
<li>Dropped support for Python 3.7.</li>
<li>The minimum <code>cryptography</code> version is now 46.0.0.</li>
</ul>
<p>Deprecations:
^^^^^^^^^^^^^</p>
<p>Changes:
^^^^^^^^</p>
<ul>
<li>Added support for using aws-lc instead of OpenSSL.</li>
<li>Properly raise an error if a DTLS cookie callback returned a cookie
longer than <code>DTLS1_COOKIE_LENGTH</code> bytes. Previously this
would result in a buffer-overflow. Credit to <strong>dark_haxor</strong>
for reporting the issue. <strong>CVE-2026-27459</strong></li>
<li>Added <code>OpenSSL.SSL.Connection.get_group_name</code> to
determine which group name was negotiated.</li>
<li><code>Context.set_tlsext_servername_callback</code> now handles
exceptions raised in the callback by calling <code>sys.excepthook</code>
and returning a fatal TLS alert. Previously, exceptions were silently
swallowed and the handshake would proceed as if the callback had
succeeded. Credit to <strong>Leury Castillo</strong> for reporting this
issue. <strong>CVE-2026-27448</strong></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="358cbf29c4"><code>358cbf2</code></a>
Prepare for 26.0.0 release (<a
href="https://redirect.github.com/pyca/pyopenssl/issues/1487">#1487</a>)</li>
<li><a
href="a8d28e7069"><code>a8d28e7</code></a>
Bump actions/cache from 4 to 5 (<a
href="https://redirect.github.com/pyca/pyopenssl/issues/1486">#1486</a>)</li>
<li><a
href="6fefff0556"><code>6fefff0</code></a>
Add aws-lc compatibility to tests and CI (<a
href="https://redirect.github.com/pyca/pyopenssl/issues/1476">#1476</a>)</li>
<li><a
href="a739f9661d"><code>a739f96</code></a>
Bump actions/download-artifact from 8.0.0 to 8.0.1 (<a
href="https://redirect.github.com/pyca/pyopenssl/issues/1485">#1485</a>)</li>
<li><a
href="8b4c66b1b5"><code>8b4c66b</code></a>
Bump actions/upload-artifact in /.github/actions/upload-coverage (<a
href="https://redirect.github.com/pyca/pyopenssl/issues/1484">#1484</a>)</li>
<li><a
href="02a5c78435"><code>02a5c78</code></a>
Bump actions/upload-artifact from 6.0.0 to 7.0.0 (<a
href="https://redirect.github.com/pyca/pyopenssl/issues/1483">#1483</a>)</li>
<li><a
href="d9733878d6"><code>d973387</code></a>
Bump actions/download-artifact from 7.0.0 to 8.0.0 (<a
href="https://redirect.github.com/pyca/pyopenssl/issues/1482">#1482</a>)</li>
<li><a
href="57f09bb4bb"><code>57f09bb</code></a>
Fix buffer overflow in DTLS cookie generation callback (<a
href="https://redirect.github.com/pyca/pyopenssl/issues/1479">#1479</a>)</li>
<li><a
href="d41a814759"><code>d41a814</code></a>
Handle exceptions in set_tlsext_servername_callback callbacks (<a
href="https://redirect.github.com/pyca/pyopenssl/issues/1478">#1478</a>)</li>
<li><a
href="7b29beba77"><code>7b29beb</code></a>
Fix not using a cryptography wheel on uv (<a
href="https://redirect.github.com/pyca/pyopenssl/issues/1475">#1475</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/pyca/pyopenssl/compare/25.3.0...26.0.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)
You can disable automated security fix PRs for this repo from the
[Security Alerts page](https://github.com/servo/servo/network/alerts).
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
In preparation for a release to crates.io, bump the workspace version to
match the current servoshell version, and let the servoshell version use
the workspace version again. This makes versioning for us easier, and
makes more sense since servoshell is considered to be just a demo for
servo.
The `./mach release` command is updated to support bumping the workspace
version, and patch the version requirement of all workspace-versioned
workspace dependencies.
Testing: Can be manually verified by running `./mach release
<new_version>`. Note that this just bumps the version numbers, and
doesn't release anything, so it's perfectly safe to run.
---------
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
I noticed while investigating #42636 that whenever servoshell displays a
link target URL, the associated tooltip is sometimes shown with some
kind of transparency, that is usually - but not always - "fixed" after a
bit of time.
The first problem is that we create the tooltip in the background, while
we should put it on top of everything else. This is however not
sufficient to fix the "flickering", hence the explicit call to
set_needs_repaint, like was done for dialogs in 6d4937b5d6.
Testing: manual (servoshell's visual aspects not covered by any test)
Fixes: https://github.com/servo/servo/issues/42636
Signed-off-by: Simon Martin <simon@nasilyan.com>
The specification of Modern Algorithms in WebCrypto API has updated to
specify how to handle ML-KEM/DSA PKCS8 keys in non-seed-only formats.
In the updated specification:
- When importing a key in the `expandedKey` format, throw a
`NotSupportedError`.
- When importing a key in the `both` format, *optionally* throw a
`NotSupportedError`.
- Alternatively, when importing a key in the `both` format, require
checking that the seed and expanded key match.
Our implementation matches the updated specification, with support of
the `both` format. Therefore, this patch only updates the specification
text, without changing the code.
Related commit in specification repository:
6543db893e
Testing: Only changes in spec text. No code change.
Signed-off-by: Kingsley Yung <kingsley@kkoyung.dev>
This change implements showing scope variable in Debugger tab. This is
still early and we have more work to do.
Next step is building correct data structure and showing different types
of variables.
Testing: Manual as well as current tests are passing.
Fixes: part of #36027
Signed-off-by: atbrakhi <atbrakhi@igalia.com>
Co-authored-by: eri <eri@igalia.com>
The console actor sends `Eval` via debugger.js, not `EvaluateJS`.
Workers only handled `EvaluateJS` which was never sent. We would want to
use `Eval` for workers as well. The worker evaluation was already
non-functional.
One more motivation behind not keeping this legacy path is because it
requires passing `None` for all new fields added to
`EvaluateJSReplyValue`, that is extra burden.
Testing: All existing tests are passing.
Signed-off-by: atbrakhi <atbrakhi@igalia.com>
Previously we called queue_dialog_toggle_break_event_task with
DOMStrings which converted them to strings to then convert them back to
DOMStrings.
Because DOMString is !Send we cannot use the DOMString directly so we
just change queue_dialog_toggle_break_event_task to get &str.
Testiing: Compilation is the test.
---------
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
This is a hot path:
- there is a lot of processing in `handle_pending_input_events`: JS
realm entry, temporary variable creation, value assignment etc.
- we acquire a RAII guard before calling the function.
If the event queue is empty, this would result in unnecessary overhead
on the hot path.
We skip all above work in this case.
Testing: This is an optimization that should not change visible
behaviour,
thus covered by all the testdriver tests.
---------
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
Mission No.2
Divided into three parts
- Import `js::context::JSContext;` and use it. This is fine as we
already renamed the traditional one.
- Major mission of porting
- Add space between functions
Testing: It compiles
---------
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
Updates the wayland crates and adds a new exemption for the quick-xml
duplication. This prevents dependabot opening a PR every day for these
crates which can never be merged.
Closes: #43294
Signed-off-by: Josh Matthews <josh@joshmatthews.net>
Bumps
[portable-atomic-util](https://github.com/taiki-e/portable-atomic-util)
from 0.2.5 to 0.2.6.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/taiki-e/portable-atomic-util/releases">portable-atomic-util's
releases</a>.</em></p>
<blockquote>
<h2>0.2.6</h2>
<p>portable-atomic-util has been extracted from the portable-atomic
repository into its own repository: <a
href="https://github.com/taiki-e/portable-atomic-util">https://github.com/taiki-e/portable-atomic-util</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/taiki-e/portable-atomic-util/blob/main/CHANGELOG.md">portable-atomic-util's
changelog</a>.</em></p>
<blockquote>
<h2>[0.2.6] - 2026-03-14</h2>
<p>portable-atomic-util has been extracted from the portable-atomic
repository into its own repository: <a
href="https://github.com/taiki-e/portable-atomic-util">https://github.com/taiki-e/portable-atomic-util</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="08e9d6c3e9"><code>08e9d6c</code></a>
Release 0.2.6</li>
<li><a
href="01bc732b19"><code>01bc732</code></a>
Update changelog</li>
<li><a
href="0a4125322f"><code>0a41253</code></a>
Apply clippy to doctest</li>
<li><a
href="7f3d9e0a16"><code>7f3d9e0</code></a>
Extract portable-atomic-util from portable-atomic repository</li>
<li><a
href="d1465ffa69"><code>d1465ff</code></a>
Add comment about rust-version field to Cargo.toml</li>
<li><a
href="0708e89053"><code>0708e89</code></a>
Update allowed lint list</li>
<li><a
href="e49c8894f1"><code>e49c889</code></a>
Adjust strict_provenance polyfill used on old rustc</li>
<li>See full diff in <a
href="https://github.com/taiki-e/portable-atomic-util/compare/v0.2.5...v0.2.6">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 [tinyvec](https://github.com/Lokathor/tinyvec) from 1.10.0 to
1.11.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/Lokathor/tinyvec/blob/main/CHANGELOG.md">tinyvec's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<h2>1.11</h2>
<ul>
<li>switched from <code>serde</code> dep to <code>serde_core</code> dep,
which should allow more
parallelization in builds for downstream users.</li>
<li>add <code>as_mut_inner</code> method when the
<code>latest_stable_rust</code> feature is enabled</li>
<li>add <code>is_full</code> method to check if the size is equal to the
capacity</li>
<li>add <code>defmt</code> support</li>
</ul>
<h2>1.10</h2>
<ul>
<li>Minimum rust version is now 1.55, and the non-const-generic impls
are removed.
This reduces build times by over a second on average, which is
significant enough for a library crate.</li>
</ul>
<h2>1.9</h2>
<ul>
<li>Adds a <code>latest_stable_rust</code> cargo feature, which will
automatically pull in
other cargo features related to the latest Stable version of rust.</li>
<li>Adds <code>ArrayVec::try_from_array_len</code></li>
<li>Adds <code>TinyVec::into_vec</code> and
<code>TinyVec::into_boxed_slice</code></li>
<li>Adds support for <code>generic-array</code> crate</li>
<li>Adds support for the <code>borsh</code> crate</li>
</ul>
<h2>1.8.1</h2>
<ul>
<li><a href="https://github.com/e00E">e00E</a> updated the rustc
features so that they all
correctly depend on the lower version feature.
<a href="https://redirect.github.com/Lokathor/tinyvec/pull/199">pr
199</a></li>
</ul>
<h2>1.8</h2>
<ul>
<li><a href="https://github.com/Fuuzetsu">Fuuzetsu</a> added the
<code>ArrayVec::as_inner</code> method.
<a href="https://redirect.github.com/Lokathor/tinyvec/pull/197">pr
197</a></li>
</ul>
<h2>1.7</h2>
<ul>
<li><a href="https://github.com/Fuuzetsu">Fuuzetsu</a> added the
<code>rustc_1_61</code> cargo feature, which adds the
<code>retain_mut</code> method.
<a href="https://redirect.github.com/Lokathor/tinyvec/pull/198">pr
198</a></li>
</ul>
<h2>1.6.1</h2>
<ul>
<li><a href="https://github.com/e00E">e00E</a> fixed the Arbitrary impl
to work on Stable
without using a feature gate.
<a href="https://redirect.github.com/Lokathor/tinyvec/pull/180">pr
180</a></li>
</ul>
<h2>1.6.0</h2>
<ul>
<li><a href="https://github.com/i509VCB">i509VCB</a> added the
<code>try_</code> functions for fallable reallocation.</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="d6c8a5f222"><code>d6c8a5f</code></a>
chore: Release</li>
<li><a
href="4348329ebe"><code>4348329</code></a>
changelog</li>
<li><a
href="834172bbcd"><code>834172b</code></a>
changelog</li>
<li><a
href="01b7a9fe9d"><code>01b7a9f</code></a>
Add defmt support (<a
href="https://redirect.github.com/Lokathor/tinyvec/issues/216">#216</a>)</li>
<li><a
href="bb18ff1618"><code>bb18ff1</code></a>
Add is_full method (<a
href="https://redirect.github.com/Lokathor/tinyvec/issues/217">#217</a>)</li>
<li><a
href="219f2874bd"><code>219f287</code></a>
Add as_mut_inner method (<a
href="https://redirect.github.com/Lokathor/tinyvec/issues/215">#215</a>)</li>
<li><a
href="5809985ddf"><code>5809985</code></a>
chore: switch to serde_core (<a
href="https://redirect.github.com/Lokathor/tinyvec/issues/213">#213</a>)</li>
<li><a
href="10f783e57a"><code>10f783e</code></a>
Remove leftover comment from before the const generic days (<a
href="https://redirect.github.com/Lokathor/tinyvec/issues/214">#214</a>)</li>
<li><a
href="842e1692b3"><code>842e169</code></a>
chore: improve code comments clarity (<a
href="https://redirect.github.com/Lokathor/tinyvec/issues/212">#212</a>)</li>
<li><a
href="a6db082130"><code>a6db082</code></a>
Make Debug instances behave like those for slices (<a
href="https://redirect.github.com/Lokathor/tinyvec/issues/211">#211</a>)</li>
<li>See full diff in <a
href="https://github.com/Lokathor/tinyvec/compare/v1.10.0...v1.11.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 [once_cell](https://github.com/matklad/once_cell) from 1.21.3 to
1.21.4.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/matklad/once_cell/blob/master/CHANGELOG.md">once_cell's
changelog</a>.</em></p>
<blockquote>
<h2>1.21.4</h2>
<ul>
<li>
<p>Fix unsoundness in <code>OnceCell::wait</code> under
<code>--features=parking_lot</code>, <a
href="https://redirect.github.com/matklad/once_cell/pull/295">#295</a>.</p>
<p>If thread A calls <code>wait</code>, while thread B calls
<code>get_or_try_init(f)</code>, and, furthermore, <code>f</code>
panics,
the <code>wait</code> incorrectly returns and thread A observes
uninitialized memory.</p>
<p>Kudos to <a
href="https://github.com/meng-xu-cs"><code>@meng-xu-cs</code></a> for a
nice find!</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="80fe900b21"><code>80fe900</code></a>
Merge pull request <a
href="https://redirect.github.com/matklad/once_cell/issues/296">#296</a>
from matklad/matklad/plfix</li>
<li><a
href="a5e09c971c"><code>a5e09c9</code></a>
release 1.21.4</li>
<li><a
href="2426d45d85"><code>2426d45</code></a>
Merge pull request <a
href="https://redirect.github.com/matklad/once_cell/issues/295">#295</a>
from matklad/matklad/plfix</li>
<li><a
href="a1441215db"><code>a144121</code></a>
Merge pull request <a
href="https://redirect.github.com/matklad/once_cell/issues/290">#290</a>
from alexanderkjall/run-tests-with-no-default-features</li>
<li><a
href="232a1a49b5"><code>232a1a4</code></a>
Merge pull request <a
href="https://redirect.github.com/matklad/once_cell/issues/292">#292</a>
from phil-opp/doc-fix</li>
<li><a
href="d31767bbcd"><code>d31767b</code></a>
fix OnceCell::wait with features=parking_lot</li>
<li><a
href="28d29ae1c1"><code>28d29ae</code></a>
Fix: <code>sync::OnceCell::try_insert</code> docs should import
<code>sync</code> variant</li>
<li><a
href="0f78fb0d6d"><code>0f78fb0</code></a>
make the command 'cargo test --no-default-features' work</li>
<li><a
href="fda60a6c70"><code>fda60a6</code></a>
Merge pull request <a
href="https://redirect.github.com/matklad/once_cell/issues/287">#287</a>
from AbeZbm/add-tests</li>
<li><a
href="b5b98c09eb"><code>b5b98c0</code></a>
Add tests for OnceRef</li>
<li>See full diff in <a
href="https://github.com/matklad/once_cell/compare/v1.21.3...v1.21.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 the gstreamer-related group with 2 updates:
[glib](https://github.com/gtk-rs/gtk-rs-core) and
[glib-sys](https://github.com/gtk-rs/gtk-rs-core).
Updates `glib` from 0.22.2 to 0.22.3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/gtk-rs/gtk-rs-core/releases">glib's
releases</a>.</em></p>
<blockquote>
<h2>0.22.3</h2>
<pre><code>Carlos Martín Nieto:
glib: use `pointer::addr()` to resolve strict provenance lint
glib: use exposed provenance when we cannot copy one
glib: make use of `mem::offset_of!()`
<p>Sebastian Dröge:<br />
Update gir-files<br />
Regenerate with latest gir-files<br />
Update versions to 0.22.3<br />
</code></pre></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="90288b72a8"><code>90288b7</code></a>
Update versions to 0.22.3</li>
<li><a
href="14f0216940"><code>14f0216</code></a>
glib: make use of <code>mem::offset_of!()</code></li>
<li><a
href="cc3db0cc9e"><code>cc3db0c</code></a>
glib: use exposed provenance when we cannot copy one</li>
<li><a
href="9f43fe528f"><code>9f43fe5</code></a>
glib: use <code>pointer::addr()</code> to resolve strict provenance
lint</li>
<li><a
href="2762c59973"><code>2762c59</code></a>
Regenerate with latest gir-files</li>
<li><a
href="685bf1beef"><code>685bf1b</code></a>
Update gir-files</li>
<li>See full diff in <a
href="https://github.com/gtk-rs/gtk-rs-core/compare/0.22.2...0.22.3">compare
view</a></li>
</ul>
</details>
<br />
Updates `glib-sys` from 0.22.0 to 0.22.3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/gtk-rs/gtk-rs-core/releases">glib-sys's
releases</a>.</em></p>
<blockquote>
<h2>0.22.3</h2>
<pre><code>Carlos Martín Nieto:
glib: use `pointer::addr()` to resolve strict provenance lint
glib: use exposed provenance when we cannot copy one
glib: make use of `mem::offset_of!()`
<p>Sebastian Dröge:<br />
Update gir-files<br />
Regenerate with latest gir-files<br />
Update versions to 0.22.3<br />
</code></pre></p>
<h2>0.22.2</h2>
<pre><code>Julian Sparber:
glib: Implement From<PtrSlice<GStringPtr> for StrV
glib: Implement From<StrV> for PtrSlice<GStringPtr>
<p>Sebastian Dröge:<br />
gio: Mark <code>Socket::from_raw_socket()</code> as unsafe</p>
<p>Wladimir Palant:<br />
glib-macros: Silence “redundant closure” clippy warning in
closure!/closure_local!<br />
</code></pre></p>
<h2>0.22.1</h2>
<pre><code>Sebastian Dröge:
gio: Re-add accidentally removed UNIX APIs that are still part of gio
itself
gio: Remove non-existing UNIX functions from Gir.toml
</code></pre>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="90288b72a8"><code>90288b7</code></a>
Update versions to 0.22.3</li>
<li><a
href="14f0216940"><code>14f0216</code></a>
glib: make use of <code>mem::offset_of!()</code></li>
<li><a
href="cc3db0cc9e"><code>cc3db0c</code></a>
glib: use exposed provenance when we cannot copy one</li>
<li><a
href="9f43fe528f"><code>9f43fe5</code></a>
glib: use <code>pointer::addr()</code> to resolve strict provenance
lint</li>
<li><a
href="2762c59973"><code>2762c59</code></a>
Regenerate with latest gir-files</li>
<li><a
href="685bf1beef"><code>685bf1b</code></a>
Update gir-files</li>
<li><a
href="484fbe01e7"><code>484fbe0</code></a>
Update Cargo.lock</li>
<li><a
href="77ce5c64ea"><code>77ce5c6</code></a>
Update versions to 0.22.2</li>
<li><a
href="a5a6b9f659"><code>a5a6b9f</code></a>
glib: Implement From<StrV> for PtrSlice<GStringPtr></li>
<li><a
href="1870acb44c"><code>1870acb</code></a>
glib: Implement From<PtrSlice<!-- raw HTML omitted --> for StrV</li>
<li>Additional commits viewable in <a
href="https://github.com/gtk-rs/gtk-rs-core/compare/0.22.0...0.22.3">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 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>
Implementing `Drop` for DOM types is being forbidden. This moves the
resource cleanup logic for `GPUShaderModule`, `GPUTexture`, and
`GPUTextureView` to separate helper structs and removes the
`allowDropImpl` flag from the bindings configuration.
Testing: WebGpu tests just cover their cases
Fixes: Partially #26488
Signed-off-by: Domenico Rizzo <domenico.rizzo@gmail.com>
fixes#43280
This PR in lines the dispatch_load_event and dispatch_error_event
wrappers directly into their call sites and removes the unused function
definitions
Signed-off-by: SharanRP <z8903830@gmail.com>
There is a chicken and egg problem here: to be able to restore the state
of nodes, we need the implementation of several other commands. However,
those commands then need some of the algorithms that are implemented for
storing the state.
Therefore, this PR has no behavioral changes, but includes preparations
to be able to first implement the functionality of the relevant
commands.
To that end, several changes were necessary:
1. Remove BaseCommand and instead use CommandName enum to define
behavior. The majority of the action part of the commands still exists
in separate files for readability (turn off whitespace changes in the
diff to make things readable)
2. Change the usages of a DOMString to the new CommandName enum in the
methods of execCommand. Both to make the enum work, but also as an
improvement to avoid operating on strings.
3. The {value,state}_override values in document need to be a map, not a
single boolean. I didn't understand these when I first implemented it,
but now it's clearer to me what their structure is.
In the end, the relevant recording and restoring state is implemented,
to the extent that it is possible. It does some light-weight
interaction, but most of the code doesn't do anything yet since the
relevant commands aren't implemented.
Part of #25005
Testing: no behavioral changes, only preparations for future work
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
Also moves some relevant methods from GlobalScope that were only used
within ReportingObserver.
Part of #38901
Testing: It compiles
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
ScriptWindowProxies's find_window_proxy and get methods are exactly the
same; remove the latter.
Testing: Existing WPT tests should cover the script_thread.rs change
Fixes: https://github.com/servo/servo/issues/43251
Signed-off-by: Simon Martin <simon@nasilyan.com>
Add support for the "sequential focus navigation starting point" which
allows clicking on an unfocuable part of the part and then having
sequential focus start from that part when it is triggered later. In
addition:
1. Start moving the sequential focus code match the specification more
more closely.
2. Generalize the
`Element::find_click_focusable_shadow_host_if_necessary` method to be
able to find the appropriate focuable area after a click and
correctly handle clicking on children of focusable elements.
Testing: This adds two Servo-specific tests as sequential focus
navigation
behavior is so lightly specified. In addition, on WPT subtest starts to
fail
for `<label>`s in `<summary>`, but this just exposes existing issues we
have
with two unimplemented features:
1. Clicking on activable elements in `<summary>` should not expand the
`<details>`.
2. Clicking on a `<label>` should activate its target.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
This remove `sm-player` and `sm-gst-render` that point to the same
crates as `servo-media-player` and `servo-media-gstreamer-render`
Testing: a successful build is enough
---------
Signed-off-by: webbeef <me@webbeef.org>
This was the only struct leftover in security_manager. Therefore, this
both moves and renames the files.
Part of #38901
Testing: It compiles
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
Currently it is possible to define an `EventLoopWaker` which does
nothing on `wake`, however there's no reason for a consumer to define a
waker that does nothing on wake, since that is its only purpose. To make
it a little bit harder to use the `EventLoopWaker` incorrectly, this
makes the `wake` function on the trait mandatory for downstream to
implement.
Testing: This just removes a default implementation for an exposed trait
and updates documentation so new tests are not necessary.
---------
Signed-off-by: Christian Duerr <contact@christianduerr.com>
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
`cargo publish --workspace` should ignore this crate, we currently don't
plan to release it.
Testing: Not tested
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
This is a follow-up to 69d4353, which attempted to make the
`ClipboardDelegate` trait implementable, but missed that the
`StringRequest` type required by this trait was still private.
*Describe the changes that this pull request makes here. This will be
the commit message.*
Testing: I ran this against my browser to make sure this time pasting
works end-to-end, which it did. So hopefully this should be all.
Signed-off-by: Christian Duerr <contact@christianduerr.com>
In order to prepare for publishing this PR does the following steps (see
commits):
- Move all `path` dependencies to the workspace Cargo.toml, and
reference that.
- Move all path dependencies in the workspace Cargo.toml into a
dedicated section, to make bumping version numbers easier later.
- Add the version requirement. Note that we currently only version bump
servoshell. There was agreement to version everything with the same
version as servoshell, but that be done in a follow-up. The diff is
already large enough as is.
- Add a tidy lint to catch `path` usages outside the root Cargo.toml. I
switched to [`tomllib`] (which was added to the python stdlib in 3.11),
since the third-party `toml` library failed to parse Cargo.toml files
with `workspace.version` (did not like the `.` in a `key`).
[`tomllib`]: https://docs.python.org/3/library/tomllib.html
Testing: Should be covered by regular CI testing.
---------
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
Testing: This just implements `Debug` on an API exposed type, so tests
are not necessary.
---------
Signed-off-by: Christian Duerr <contact@christianduerr.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
Instead of just focusing elements that are the target of tab navigation,
also scroll them into view. Though this is unspecified, this is what all
other browsers do.
Testing: This change adds a new Servo-specific test. The behavior isn't
really specified.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
There is a `handle_event` virtual method on `Node` that triggers the
default event handler. Typically the "superclass" virtual method is
called and then the specific type runs its default event handler. This
isn't good for form controls, because typically the event handler should
prevent further event handlers from running. This badness can be
observed by pressing down in a text input, which will both move the
cursor as well as scroll the page. 🙃
This change makes it so that the default form control event handler
consistently calls the `Event::mark_as_handled` method and triggers the
"superclass" event handler *after* running its own. In addition, the
scrolling default event handler on `Node` now doesn't run if the `Event`
was already handled.
Finally, a little bit of dead event handling code is removed.
Testing: This change adds a Servo-specific test for this behavior.
Fixes: #40785
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
While it is possible to acquire the embedder ID through
`EmbedderControl::id`, it is no longer possible once the type is
destructured into `InputMethodControl`.
Since `InputMethodControl` stores the `id` field internally anyway, it
seems consistent with the other embedder controls to have a method to
return this ID.
Testing: This is a simple addition to the API, so tests are probably not
necessary.
Signed-off-by: Christian Duerr <contact@christianduerr.com>
`reply_unchecked` was added in #42007 since `getEnvironment` from the
frame actor has a `type` field but it already counts as a final reply,
unlike every other message like it. Since it is only used there, we can
revert the `reply_unchecked` change and use the new `mark_handled`
instead.
Depends on: #43230
Testing: DevTools tests
Signed-off-by: eri <eri@igalia.com>
Also rename the method and consolidate the sink to be consistent with
both `TrustedHTML` and `TrustedScript`
Part of #42638
Testing: It compiles
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
Switch `VirtualMethods::children_changed` and
`VirtualMethods::adopting_steps` to `&mut JSContext`.
Testing: No behaviour change, a successful build is enough.
Part of #40600
---------
Signed-off-by: Gae24 <96017547+Gae24@users.noreply.github.com>
Some Remote Debugging Protocol message types are specified as `oneway`,
meaning that they expect no reply. Sending anything—including an
error—in response to these messages throws the devtools client and actor
out of sync.
As noted in the `ClientRequest` docstring, most client messages expect
exactly one reply, so `ClientRequest::handle()` includes a fail-safe
that automatically sends an error message if none of the `reply()`,
`reply_unchecked()`, or `reply_final()` methods have been called.
This change introduces an additional method,
`ClientRequest::mark_handled()`, which allows the actor handling the
request to disarm the fail-safe without sending a reply over the wire,
and it adds handling logic for 3 one-way message types that are
frequently emitted by the Firefox Toolbox.
Testing: This change introduces no new tests. Unless we take the unusual
step of enumerating all supported one-way message types and validating
each, automated tests provide little assurance of correctness.
Meaningfully testing this feature would be cumbersome, and it would
likely hamper future development more than it would help.
Signed-off-by: Brent Schroeter <contact@brentsch.com>
CI: ohos blink_perf_test scenario
Background:
There are so called blink_perf_tests in the `tests/blink_perf_tests/`
that can be used to bench servo. Those are 100+ unitary test .html pages
that result in either "ms" or "runs/s".
There is also a python script that is currently used to run those tests
`etc/blink-perf-test-runner/main.py`, but it runs the tests on the host
(tested on linux).
Goal of this PR:
I want to also be able to run the tests on ohos. So I created a .py
script in etc/ci/scenario/ that is very similar to the script that is
already on servo. The script produces `results.json` and it can be
included into the bencher.dev ci and run on the ci ohos devices.
~~Testing: within `etc/ci/scenatio` directory do `uv run
blink_perf_test.py`~~
Testing: within servo project root do `UV_PROJECT=etc/ci/scenario uv run
etc/ci/scenario/blink_perf_test.py -vem`
For `help` use `-h`
---------
Signed-off-by: jane <5373400+janeoa@users.noreply.github.com>
Signed-off-by: Asset Malik <5373400+janeoa@users.noreply.github.com>
Co-authored-by: Narfinger <Narfinger@users.noreply.github.com>
Co-authored-by: Jonathan Schwender <55576758+jschwe@users.noreply.github.com>
This makes the name of the `GamepadDelegate` consistent with the other
delegates.
Testing: No tests necessary as this is just renaming some structs and
members. Compilation should be enough.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
The `InspectorActor` and its children now query the
`BrowsingContextActor` for the active pipeline ID and script sender
instead of storing their own copies, which become outdated on
navigation. Previously, the inspector remained permanently stuck to the
pipeline that was active upon launch. Now, connecting a fresh devtools
client session after navigation allows inspection of each
`BrowsingContext`'s active DOM.
Navigation within a continuous remote debugging session still breaks the
Firefox inspector panel. This is due to multiple compatibility issues
with the protocol implementation, which will be addressed in separate
PRs.
This PR does not touch `TimelineActor` or `FramerateActor`. These are
theoretically affected by the same issue as the `InspectorActor`, but in
practice neither is ever instantiated. It seems both have been
effectively unreachable code since 1aab10f2 and will require more
extensive work and testing that is beyond the scope of this change.
Testing: Updates to the `WalkerActor` and `BrowsingContextActor` are
unit tested via the new `test_walker_observes_new_dom_after_nav` case in
`devtools_tests.py`. There are no existing unit tests to reference for
the highlighter and style actors; these have been tested manually but
this PR does not introduce further automated tests. This PR also
improves handling of `tabNavigated` messages to simplify the unit test
written for 4c69d85.
---------
Signed-off-by: Brent Schroeter <contact@brentsch.com>
This PR makes public and private storage thread groups independent.
previously, `new_storage_threads()` returned two `StorageThreads`
handles, but both handles were backed by the same underlying storage
worker group. this meant Servo carried a public/private distinction
through the API and wiring layers, while both sides still talked to the
same storage backend threads.
Testing: Added shutdown_storage_group test, and should not effect WTP
test.
---------
Signed-off-by: Taym Haddadi <haddadi.taym@gmail.com>
The spec expects us to check for render blocking (among some other
state) before we start procesing a document. Therefore, add those checks
and also check in the
stylesheet loader that we should only do so when we are allowed to do
so.
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
This option controls whether progressive web metrics are printed to the
system console, which is essentially the purpose of
`DiagnosticsLogging`. This makes the API a bit more uniform.
Testing: We do not really have automated testing for this kind of
feature of the API.
Fixes: This is part of #34967.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
This change makes it so that all of these things are set on the
`WebView` via the `WebViewBuilder`. This does make it impossible to
change the delegate after the `WebView` is constructed, but that does
mean that we can now count on that fact internally in Servo. This change
just seeks to standardize the way that these kind of structs are given
to Servo to make the API easier to understand.
Testing: There aren't currently tests for the clipboard delegate, but
this
change should work as the corresponding parts in servoshell still
compile.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Implementing `Drop` for DOM types is being forbidden. This moves the
resource cleanup logic for `GPUSampler` to a separate
`DroppableGPUSampler` struct and removes the `allowDropImpl` flag from
the bindings configuration.
Testing: WebGpu tests just cover its cases
Fixes: Partially #26488
Signed-off-by: Domenico Rizzo <domenico.rizzo@gmail.com>
This is a hot path. This way we free the unused memory earlier.
Didn't realize the difference in #43202.
Testing: This is a memory optimization that does not change visible
behaviour.
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
Bumps [clap_lex](https://github.com/clap-rs/clap) from 1.0.0 to 1.1.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">clap_lex's
changelog</a>.</em></p>
<blockquote>
<h2>v1.1.0 (2015-07-16)</h2>
<h4>Features</h4>
<ul>
<li>allows creating unified help messages, a la docopt or getopts (<a
href="52bcd892ea">52bcd892</a>,
closes <a
href="https://redirect.github.com/clap-rs/clap/issues/158">#158</a>)</li>
<li>allows stating all subcommands should <em>not</em> have --version
flags (<a
href="336c476f63">336c476f</a>,
closes <a
href="https://redirect.github.com/clap-rs/clap/issues/156">#156</a>)</li>
<li>allows setting version number to auto-propagate through subcommands
(<a
href="bc66d3c6de">bc66d3c6</a>,
closes <a
href="https://redirect.github.com/clap-rs/clap/issues/157">#157</a>)</li>
</ul>
<h4>Improvements</h4>
<ul>
<li><strong>Help Strings</strong> properly aligns and handles newlines
in long help strings (<a
href="f9800a2969">f9800a29</a>,
closes <a
href="https://redirect.github.com/clap-rs/clap/issues/145">#145</a>)</li>
</ul>
<h4>Performance</h4>
<ul>
<li><strong>Help Messages</strong> big performance improvements when
printing help messages (<a
href="52bcd892ea">52bcd892</a>)</li>
</ul>
<h4>Documentation</h4>
<ul>
<li>updates readme with new features (<a
href="8232f7bb52">8232f7bb</a>)</li>
<li>fix incorrect code example for <code>App::subcommand_required</code>
(<a
href="8889689dc6">8889689d</a>)</li>
</ul>
<h2>v1.0.3 (2015-07-11)</h2>
<h4>Improvements</h4>
<ul>
<li><strong>Errors</strong> writes errors to stderr (<a
href="cc76ab8c2b">cc76ab8c</a>,
closes <a
href="https://redirect.github.com/clap-rs/clap/issues/154">#154</a>)</li>
</ul>
<h4>Documentation</h4>
<ul>
<li><strong>README.md</strong> updates example help message to new
format (<a
href="0aca29bd5d">0aca29bd</a>)</li>
</ul>
<h2>v1.0.2 (2015-07-09)</h2>
<h4>Improvements</h4>
<ul>
<li><strong>Usage</strong> re-orders optional arguments and required to
natural standard (<a
href="dc7e1fcea5">dc7e1fce</a>,
closes <a
href="https://redirect.github.com/clap-rs/clap/issues/147">#147</a>)</li>
</ul>
<h2>v1.0.1 (2015-07-08)</h2>
<h4>Bug Fixes</h4>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="9ab6dee710"><code>9ab6dee</code></a>
chore: Release</li>
<li><a
href="374a30dac6"><code>374a30d</code></a>
docs: Update changelog</li>
<li><a
href="d0c8aabc00"><code>d0c8aab</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/6306">#6306</a>
from epage/update</li>
<li><a
href="686ce2f665"><code>686ce2f</code></a>
chore: Upgrade compatible</li>
<li><a
href="8203238de6"><code>8203238</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/6305">#6305</a>
from epage/msrv</li>
<li><a
href="c774a892ba"><code>c774a89</code></a>
docs: Reduce main's in doctests</li>
<li><a
href="73534f6ed3"><code>73534f6</code></a>
chore: Upgrade to 2025 edition</li>
<li><a
href="dfe05a9bfe"><code>dfe05a9</code></a>
chore: Bump MSRV to 1.85</li>
<li><a
href="8b41d0b849"><code>8b41d0b</code></a>
chore: Release</li>
<li><a
href="518220f102"><code>518220f</code></a>
docs: Update changelog</li>
<li>Additional commits viewable in <a
href="https://github.com/clap-rs/clap/compare/clap_lex-v1.0.0...clap_lex-v1.1.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 orbclient from 0.3.50 to 0.3.51.
[](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>
Move from CanGc to &mut js::context:JSContext. `ArrayBuffer` and `Bytes`
require many changes in `dom/stream` for which I'm going to create a
seperate pull request before porting the two methods.
Testing: Just a refactor, `./mach test-unit` still passes.
Fixes: Part of #42638
---------
Signed-off-by: Uiniel <174327181+uiniel@users.noreply.github.com>
The same issue also affects check and other commands that support `--`,
but I'm not sure if it makes sense to document it everywhere.
Testing: Changes the help message, manual testing required.
Fixes: #43214
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
This setting is used to control whether or not incremental legacy layout
was enabled. Nowadays incremental layout is always enabled as it is a
fundamental feature of how layout works. The setting also controls
whether or not nodes are traversed in Style, but that's also something
that's much less interesting today. This change just removes this
setting as it just controls the Stylo setting. A corresponding change in
Stylo will also remove the setting there.
Testing: This just removes a setting so existing tests should suffice.
Fixes: This is part of #34967.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Follow the spec and tightenings storage event routing in Constellation
by validating that a BroadcastStorageEvent comes from the same origin as
its source pipeline, while preserving existing localStorage fanout
behavior.
---------
Signed-off-by: Taym Haddadi <haddadi.taym@gmail.com>
Initial work to support scopes in the debugger. They don't show at the
moment since we are not processing variables yet. Depends on #43166.
Testing: Ran `mach test-devtools` and manual testing.
Part of: #36027
Signed-off-by: eri <eri@igalia.com>
Co-authored-by: atbrakhi <atbrakhi@igalia.com>
Notify embedder the coalesced wheel/mousemove event.
We also stop cloning every single entry in `pending_input_event`.
Testing: This should unblock the potential WebDriver thread deadlock
when receiving simultaneous wheel or pointer inputs from multiple
sources.
We added a new test that stably deadlock on
74c16ffd8a.
Firefox/Safari/Chrome all pass the new test.
Fixes:
https://github.com/servo/servo/issues/43136#issuecomment-4031702204
---------
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
This change adds support for a blinking text caret using WebRender
`DynamicProperties` updates. This ensures that text caret updates are as
lightweight as possible. As part of this change, the initial framework
for paint-side animations is added. Though this is driven by a timer for
now (in order to not have to run full speed animations for text carets),
the idea is that more animations can be driven by `Paint` in the future
(in order to avoid doing layouts during animations).
In addition, a preference is added which controls the caret blink speed.
This is used to disable caret blinking during WPT testing.
Testing: There are no tests for this change. We do not currently have a
good
way to test caret blinking as the caret is render only and fully testing
blinking would require well timed screenshot creation.
Fixes: #33237.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Right now this is not documented and really confusing. I believe these
decisions
are made to align with
[winit](e9809ef54b/src/event.rs (L957-L958)):
> /// Positive values indicate that the content that is being scrolled
should move
> /// right and down (revealing more content left and up).
I don't know about other people emebedding Servo, but I have always been
thinking reversely.
---------
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
This concept does not need to be exposed to `Opts` any longer as it just
controls how servoshell uses the `WebView` API.
Testing: A successful compilation is enough here as this is just moving
an option.
Fixes: This is part of #34967.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
A published or vendored package will not have access to gstreamer.py.
Hence, we move the package list into libservo, and modify the remaining
usage of gstreamer.py (in mach) to read the same list.
Testing: Covered by CI testing, which involves building servo and the
macos dmg and windows installer.
Fixes: Part of #43145
---------
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
Remove command invokers preference
This now passes most of the relevant tests. Most of the remaining
failures are due to missing functionality such as the popover API,
element reflection properties (see
https://github.com/servo/servo/issues/42884), and issues with the event
retargeting code that doesn't handle shadow dom correctly.
Signed-off-by: Luke Warlow <lwarlow@igalia.com>
This is required to publish script_bindings, since all files used during
codegen need to be there.
It might also be possible to generate the bindings ahead of time and
vendor them in-tree, but this seems painful to setup from a CI
perspective.
Since there don't seem to be any other users in-tree we can just vendor
into the script-bindings directory.
`ply` is licensed under the BSD 3 clause, and WebIDL under MPL-2.0, with
the licenses available in our cargo package. Both tools won't end up in
`servo` since they are build-time dependencies, so I believe we don't
need to adjust the crate license, or configure `about.toml`.
Testing: Should be covered by existing tests. We don't test if this
allows vendored builds or published builds.
Fixes: Partial fix for #43145
---------
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
The script execution code has changed a bit in the last months so some
things that used to work don't anymore.
This change ensures that when an exception is thrown it is logged to the
console.
Testing: Regressions are covered by wpt, but we can't run tests for the
presence of `log::error!` calls
---------
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
Some WPT tests [^1] rely on the user agent reflecting that of a real
browser or platform. This change makes it so that the user agent that
Servo uses when running the WPT is the default one, which includes the
platform.
[^1]:
aae5c4cd97/tests/wpt/tests/resources/accesskey.js (L16)
Testing: This causes some access key tests to pass on macOS.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Simplify the `KeyboardEvent` constructor by taking the actual
`keyboard_types` `KeyboardEvetnt` as an argument. This means that we do
not have to repeat the logic for extracting all the data from the
platform event.
Testing: This should not change behavior and is thus covered by existing
tests.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Follow-up to #43131.
Testing: Tested locally. Note: This only works for x86_64 based systems.
Arm Linux users will need to build from source, but building in the
devcontainer on arm linux is anyway not working currently.
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
For the longest time we've had a `dispatch_event` boolean flag in our
error reporting code that determines whether or not to fire an `error`
event. It was only set to `false` in the event handler code due to a
double borrow that would occur otherwise. It seems that this is no
longer a problem, so we can remove the flag and correctly fire the event
in that case too.
Testing: A new test starts to pass and
`html/webappapis/scripting/processing-model-2/runtime-error-in-body-onerror.html`
does not crash
Fixes: https://github.com/servo/servo/issues/13152
---------
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
This functionality will be used in a follow up patch to implement the
getEnvironment message.
Testing: Check `mach test-devtools` and manual test
Part of: #36027
Signed-off-by: eri <eri@igalia.com>
Co-authored-by: atbrakhi <atbrakhi@igalia.com>
This and the accompanying stylo PR
(https://github.com/servo/stylo/pull/320) is a partial implementation of
the `first-letter` pseudo element.
Testing: Existing WPT tests. There is one WPT test
(fcp-typographic-pseudo.html) that servo currently fails would timeout
with this PR because opacity of `TextFragment` is taken from the
`InlineFormattingContext` instead of the pseudo element.
Fixes: #43008
Part of: #15413
---------
Signed-off-by: Minghua Wu <michael.wu1107@gmail.com>
Signed-off-by: minghuaw <michael.wu1107@gmail.com>
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
Co-authored-by: Xiaocheng Hu <xiaochengh.work@gmail.com>
Co-authored-by: Oriol Brufau <obrufau@igalia.com>
Bumps Stylo to https://github.com/servo/stylo/pull/329, and modifies the
code accordingly:
- Implements basic `counter()` and `counters()`, instead of treating
them as empty string.
- For `list-style-type`, uses normal space instead of non-breaking space
in the suffix, since `::marker` has `white-space: pre` anyways.
`counter()` and `counters()` don't get a suffix.
- Changes `disclosure-closed` to use ▸ (U+25B8 Black Right-Pointing
Small Triangle) instead of ‣ (U+2023 Triangular Bullet).
- Implements `list-style-type: <string>`.
- Implements basic `<counter-style-name> | <symbols()>` for both
counters and `list-style-type`.
However, since `@counter-style` and `counter-*` properties are still
unsupported, non-predefined keywords just default to decimal, and
counters are assumed to have a value of 0.
The UA stylesheet is tweaked to avoid a problem when `list-style-type`
is set to a string with multiple lines.
Testing: 63 tests improve, 17 tests worsen (they were falsely passing
beforehand)
- #43117
-
`tests/wpt/tests/css/css-lists/content-property/marker-text-matches-circle.html`
-
`tests/wpt/tests/css/css-lists/content-property/marker-text-matches-disc.html`
-
`tests/wpt/tests/css/css-lists/content-property/marker-text-matches-square.html`
- #43118
- `tests/wpt/tests/css/css-lists/nested-marker-dynamic.html`
- `tests/wpt/tests/css/css-lists/nested-marker.html`
- #43036
-
`tests/wpt/tests/css/css-lists/list-style-type-decimal-line-height.html`
- `tests/wpt/tests/css/css-pseudo/marker-content-002.html`
- `tests/wpt/tests/css/css-pseudo/marker-content-003.html`
- `tests/wpt/tests/css/css-pseudo/marker-content-003b.html`
- `tests/wpt/tests/css/css-pseudo/marker-content-004.html`
- `tests/wpt/tests/css/css-pseudo/marker-content-005.html`
- `tests/wpt/tests/css/css-pseudo/marker-content-015.html`
- `tests/wpt/tests/css/css-pseudo/marker-content-016.html`
- `tests/wpt/tests/css/css-pseudo/marker-content-018.html`
- #30365
-
`tests/wpt/tests/css/css-pseudo/marker-font-variant-numeric-default.html`
- `tests/wpt/tests/css/css-pseudo/marker-line-height.html`
- #43119
- `tests/wpt/tests/css/css-pseudo/marker-tab-size.html`
Fixes: #43037
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
We send back input events handling results in batch. This reduces IPC,
and make the following **TODO** possible in a follow-up.
Testing: I hope existing tests results won't change.
Part of
https://github.com/servo/servo/issues/43136#issuecomment-4031915873
**TODO**: We have not done
> collect ids and send back a reply for each of them once the coalesced
event has been handled.
yet.
---------
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
The CVE doesn't impact us, so we can ignore it safely. This improves the
comment above the ignored entry in deny.toml. We test our own code via
`clippy` and we aren't using the vulnerable type. Our dependencies could
in theory use it, but that seems rather unlikely.
Testing: test-tidy is tested in CI.
---------
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
the `-p servo` (formerly libservo) lib target was busted for anyone
genuinely consuming it as a library, but we didn’t catch it because the
CI job designed to check it built `-p servo` with --all-targets, which
unlike library consumers pulls in [dev-dependencies].
this patch fixes the compile error, and fixes the CI check to build `-p
servo` in a more realistic configuration.
Testing: tested in CI, and locally with `cargo build -p servo --locked`
Fixes: #43168
Signed-off-by: delan azabani <dazabani@igalia.com>
#43114 made the action error if the artifact is not found, which exposed
an issue with uploading the wrong path. We don't really care about
uploading the x86_64 version of the ohos library, since it is not used
in the release (not now at least), but it's better to fix the condition
anyway.
Fixes nightly upload failures like in
https://github.com/servo/servo/actions/runs/22927035640/job/66539862051
Testing: Not tested
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
While we are not there yet, this is the majority of the implementation
of the delete command.
What's missing:
1. Handling of style attributes (most of the test failures)
2. Handling of lists
Since these are quite complicated on their own, deferring that to their
own PR.
Also added more assertions regarding parent nodes, which should always
exist in the spec. By adding those, discovered that the logic for
`is_visible` was wrong where its display value wasn't checked for
`"none"`.
Part of #25005
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
Scroll and PointerMove is quite similar. We did so for `PointeMove` in
https://github.com/servo/servo/pull/42289 +
https://github.com/servo/servo/pull/42946.
Imagine having 3 non-zero duration scroll actions with origin at
different Elements.
Previously we would wait for one to be fully dispatched before moving to
next action,
instead of interspersed.
We also consolidate `PendingPointerMove` and
newly added `PendingScroll` into `enum PendingActions`.
Testing:
[Existing tests behaviour not
changing.](https://github.com/servo/servo/actions/runs/22887005716).
Added a wdspec test.
Previously: `['wheel', 'wheel', 'wheel', 'wheel', 'wheel', 'wheel',
'wheel', 'wheel', 'wheel', 'move']`
Now: `['wheel', 'move', 'wheel', 'move', 'wheel', 'move', 'move',
'wheel', 'wheel', 'move', 'move', 'wheel', 'wheel', 'move', 'move',
'wheel']`
---------
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
Bumps [schannel](https://github.com/steffengy/schannel-rs) from 0.1.28
to 0.1.29.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="ff7ffd3061"><code>ff7ffd3</code></a>
Release v0.1.29</li>
<li><a
href="3530cff984"><code>3530cff</code></a>
Merge pull request <a
href="https://redirect.github.com/steffengy/schannel-rs/issues/121">#121</a>
from nateprewitt/fix_tls13_data_corruption</li>
<li><a
href="a13669743d"><code>a136697</code></a>
add test for tls renegotiation (TLS1.3, <a
href="https://redirect.github.com/steffengy/schannel-rs/issues/121">#121</a>)</li>
<li><a
href="6e817dbd9c"><code>6e817db</code></a>
Fix TLS 1.3 data corruption from double-send during renegotiation</li>
<li><a
href="f75095d87c"><code>f75095d</code></a>
Merge pull request <a
href="https://redirect.github.com/steffengy/schannel-rs/issues/120">#120</a>
from steffengy/feature/119-wrong-ncrypt-check</li>
<li><a
href="42692500ff"><code>4269250</code></a>
Fix condition <a
href="https://redirect.github.com/steffengy/schannel-rs/issues/119">#119</a>
for CERT_NCRYPT_KEY_SPEC check</li>
<li><a
href="6cc5637214"><code>6cc5637</code></a>
Merge pull request <a
href="https://redirect.github.com/steffengy/schannel-rs/issues/117">#117</a>
from 42triangles/master</li>
<li><a
href="ed24fe264b"><code>ed24fe2</code></a>
Use <code>package.include</code> to only include necessary data for
using the crate</li>
<li>See full diff in <a
href="https://github.com/steffengy/schannel-rs/compare/v0.1.28...v0.1.29">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>
We can clamp the `initial-scale` while processing `ViewportDescription`.
No need to have a long route to clamp it and removes circular
dependency.
Testing: This is just a minor refactoring. No change in behavior
expected.
Signed-off-by: Shubham Gupta <shubham.gupta@chromium.org>
The equality check used to detect whether an element has an access key
assigned was reversed. This meant that access keys did not work on
non-form control elements. This change fixes the equality sign and adds
a test for this behavior.
Testing: A new Servo-specific test is added. Access key behavior
activation
behavior is very lightly specified so the way we deal with it is
Servo-specific at the moment.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
We should measure the time it takes to fire the `DOMContentLoaded`
event, but we were including the time it takes for the task on the
relevant task source to be run.
Testing: The timing should be slightly more accurate but that is hard to
measure or test for. Therefore this PR does not include a test.
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
As discussed on zulip we would like to rename `libservo` to `servo`
(again) before a future crates.io release.
Servo is a library, so the `lib` prefix is somewhat redundant. We
already renamed the binary of ServoShell to `servoshell`, to reduce
confusion of users of what servo is.
Note: This PR does not touch all occurrences of `libservo`. Specifically
CI job names remain untouched, since the risk of breaking something is
higher here, harder to test for and the name not user facing.
Testing: CI testing of this change should give us good confidence.
Manual testing of `./mach doc` and `./mach build` showed no issues on
macos. [Full try
run](https://github.com/jschwe/servo/actions/runs/22909562747)
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
Continuation of #43108, two new `temp_cx()` calls were required:
- inside `maybe_clone_an_option_into_selectedcontent` since it's part of
a markup5ever trait
- inside `serialize_and_cache_subtree` replacing a `CanGc::note()` call,
propagating it inside reflow code will require even more effort.
Testing: No behaviour change, a successful build is enough.
Part of #40600
---------
Signed-off-by: Gae24 <96017547+Gae24@users.noreply.github.com>
We previously changed the asset name format in
84d0919a7f.
We kept the old asset name to support bisection scripts. It's been 5
months since that change, so remove the old asset names.
Note: We never changed the asset names for our S3 upload, and this PR
doesn't touch S3.
Testing: Not tested, trivial change.
Fixes: #42101
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
We should only send previews of ordinary objects[^1] (i think that's the
correct term) objects to the devtools. The code is not designed to
handle other objects, which currently causes crashes.
Testing: This change adds a devtools test that crashes without this
change.
[^1]: https://tc39.es/ecma262/#ordinary-object
---------
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
This change just updates the version of Stylo to a version which
restores the original Servo theme colors.
Stylo PR: servo/stylo#327
Testing: This just restore the original form control theme colors, so
should
not change test results. Manual testing was performed with the
`form-controls-visual.html` test. One form tests starts to fail due to
subpixel differences. This test was failing originally (before form
control style was inadvertently changed). This likely happens due to
the rounded grey borders of buttons. This PR changes them back to
gray from black.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
This PR adds a test for `StepIn`, `StepOut` and `StepOver` hooks.
This test is intentionally designed to include all three `StepIn`,
`StepOut` and `StepOver` hooks in one test. This could be tested
separately but in a real use case one is mostly using these hooks
together in a single debugging session, not in isolation.
It is important we mirror that workflow. Also considering this area is
actively under development, it would be easier to catch regressions with
this flow test.
Testing: Added a new test
Fixes: Part of #36027
Signed-off-by: atbrakhi <atbrakhi@igalia.com>
Co-authored-by: eri <eri@igalia.com>
Extends the SVG support for `border-image-source`
> The logic is almost identical to `build_background_image`
Testing: Following WPT Tests Passed
- `tests/wpt/tests/css/css-backgrounds/border-image-image-type-002.htm`
- `tests/wpt/tests/css/css-backgrounds/border-image-image-type-004.htm`
- `tests/wpt/tests/css/css-backgrounds/border-image-image-type-005.htm`
- `tests/wpt/tests/css/css-backgrounds/border-image-repeat-1.html`
- `tests/wpt/tests/paint-timing/fcp-only/fcp-border-image-with-svg.html`
Fixes: #42098
---------
Signed-off-by: Shubham Gupta <shubham.gupta@chromium.org>
Rename the dockerfile and add a dockerignore. This reduces the size of
the build-context greatly.
Renaming is a preparation for later adding more possible dockerfiles
(e.g. fedora based etc).
We choose the filename based `.dockerignore` files over a
`.dockerignore` in the root folder mainly to reduce clutter in the root
folder.
This addresses the problem of large build context raised on zulip by
@glyn.
Testing: Manually tested by building the image locally.
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
This aligns with behavior with spec, by selecting `BOLD` for the weights
greater than 500.
- W3C Specs:
[font-style-matching](https://www.w3.org/TR/css-fonts-4/#font-style-matching)
> If the desired weight is greater than 500, weights greater than or
equal to the desired weight are checked in ascending order followed by
weights below the desired weight in descending order until a match is
found.
- Firefox: https://phabricator.services.mozilla.com/D274775
Testing: This causes a WPT test to start passing.
---------
Signed-off-by: Shubham Gupta <shubham.gupta@chromium.org>
- Rename instead of copy the `cargo-timings` folder
- Fail the action if artifact not found in upload-artifact. This should
prevent things like #43102
- Update `actions/upload-artifact` to v7
Testing: If this can merge, it is successful.
---------
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
Implement node.moveBefore()
This implements the atomic move method for DOM nodes. This allows moving
elements within the DOM without running the full remove and insertion
steps, allowing more seamless behaviour such as CSS transitions
continuing from where they are rather than restarting.
Spec: https://dom.spec.whatwg.org/#dom-parentnode-movebefore
Testing: Existing WPTs
---------
Signed-off-by: Luke Warlow <lwarlow@igalia.com>
This change simplifies some of the internals of `DOMString` by doing two
things:
1. Removing `EncodedBytesView`. This was almost always used to get
`EncodedBytes` so its functionality is merged into `EncodedBytes`
and `DOMString::encoded_bytes` returns it directly.
2. Have `StringView` hold a reference to a `&str` instead of a
`DOMString`. This type is used to represent a Rust `&str` anyway, so
it doesn't make sense to hold a `DOMString`.
These changes simplify the code.
Testing: These changes should not modify behavior and are thus covered
by existing tests.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Implement "getPublicKey" operations of ECDSA and ECDH. The steps are
implemented at the new submodule `ec_common` shared by ECDSA and ECDH.
To make the operations functioning, they are also registered at
`GetPublicKeyAlgorithm`.
Specification:
https://wicg.github.io/webcrypto-modern-algos/#SubtleCrypto-method-getPublicKey
Testing: Pass WPT tests that were expected to fail.
Fixes: Part of #43072
Signed-off-by: Kingsley Yung <kingsley@kkoyung.dev>
For many operations, `DOMString` needs to convert the internal string
storage to a Rust `String` and then borrow again to actually do the
operation in question. This change makes it so that this borrow can be
done once, by transforming `DOMString::make_rust` into
`DOMString::ensure_rust_string` which returns a reference to the inner
`String` which can then be use directly. In many cases this eliminates
an entire mutable borrow of the inner `RefCell`.
Testing: This is just a minor optimization, so should be covered by
existing tests.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Follow-up to https://github.com/servo/servo/pull/41775
This allows syncing our package list to the book automatically, keeping
the documented required packages in sync with what bootstrap installs.
We use two personal access token of the `servo-bot` account. One PAT
with the Resource-owner `servo-bot` for the repository `servo-bot/book`,
to push the branch to the bots fork. This PAT should be created with the
following permissions:
Choose "Only select repositories", select the forked book repo and give
the token Contents: Read and write permissions.
The second PAT must have the resource owner `servo`, and access to the
repository `servo/servo` as well as the permissions "Pull-Request: Read
and Write".
This split has the advantag of limiting the PAT permissions for the
upstream repo, avoiding `Content: Write` permissions for the
`servo/book` repository.
Testing: Manually tested by letting the action run on this branch.
[successfull
run](https://github.com/servo/servo/actions/runs/22387422307/job/64800999782?pr=42063),
[created upstream PR](https://github.com/servo/book/pull/207)
---------
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
Signed-off-by: Jonathan Schwender <55576758+jschwe@users.noreply.github.com>
Co-authored-by: shuppy <dazabani@igalia.com>
I believe that these changes (part of #42529) were likely made in error.
Servo
button controls do not follow the system theme, so system colors should
not be
used. These changes degraded the look of the buttons, so this change
reverts to the previous state.
### Before (with unintended change):
<img width="520" height="115" alt="Screenshot 2026-03-09 at 08 47 15"
src="https://github.com/user-attachments/assets/cff5fc1a-bfd0-4785-8326-91e735390176"
/>
### After (restored style):
<img width="499" height="113" alt="Screenshot 2026-03-09 at 08 46 02"
src="https://github.com/user-attachments/assets/99660c7f-9eb6-4ee8-905e-f7a594bd363d"
/>
Testing: These changes are really only testable via the manual test
`tests/html/form-control-visuals.html`.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
This PR modifies the text layout in such a way that text carets can
render on empty lines (other than the first if the textarea is empty).
Zero-length segments are added to support caret rendering. The last
line, if it is without content, does not currently render a caret
correctly
This corresponds to cases 0, 1, and 3 in #41338
Testing: WPT subset `tests/wpt/tests/css/css-text/` ran as expected, one
internal WPT test was added
Fixes: Partially addresses https://github.com/servo/servo/issues/41338
---------
Signed-off-by: Freya Arbjerg <git@arbjerg.dev>
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
Bumps [uds_windows](https://github.com/haraldh/rust_uds_windows) from
1.1.0 to 1.2.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/haraldh/rust_uds_windows/releases">uds_windows's
releases</a>.</em></p>
<blockquote>
<h2>v1.2.0</h2>
<ul>
<li>Migrate from unmaintained <code>winapi</code> crate to official
Microsoft <code>windows-sys</code> crate</li>
<li>Set minimum Rust version (MSRV) to 1.85</li>
<li>Update to Rust edition 2021</li>
<li>Remove unused <code>NetInt</code> trait</li>
<li>Fix clippy warnings and use explicit lifetime syntax</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/haraldh/rust_uds_windows/blob/master/CHANGELOG.md">uds_windows's
changelog</a>.</em></p>
<blockquote>
<h2>[1.2.0] - 2026-03-04</h2>
<ul>
<li>Migrate from unmaintained <code>winapi</code> crate to official
Microsoft <code>windows-sys</code> crate</li>
<li>Set minimum Rust version (MSRV) to 1.85</li>
<li>Update to Rust edition 2021</li>
<li>Remove unused <code>NetInt</code> trait</li>
<li>Fix clippy warnings and use explicit lifetime syntax</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="d47604cdab"><code>d47604c</code></a>
chore: bump version to 1.2.0 and add CHANGELOG.md</li>
<li><a
href="6edc47a997"><code>6edc47a</code></a>
fix: resolve clippy warnings for Rust 1.85</li>
<li><a
href="6fcd095d20"><code>6fcd095</code></a>
chore: set minimum Rust version to 1.85 and add rust-toolchain.toml</li>
<li><a
href="16db1c9451"><code>16db1c9</code></a>
chore: migrate from winapi to windows-sys</li>
<li><a
href="1c57469aea"><code>1c57469</code></a>
fix: use explicit lifetime syntax to fix mismatched_lifetime_syntaxes
warnings</li>
<li><a
href="b90d51b297"><code>b90d51b</code></a>
chore: remove unused NetInt trait</li>
<li><a
href="f02fd0762c"><code>f02fd07</code></a>
chore: remove extern in lib.rs</li>
<li><a
href="c13ffb38bf"><code>c13ffb3</code></a>
chore: set edition to 2021</li>
<li>See full diff in <a
href="https://github.com/haraldh/rust_uds_windows/compare/v1.1.0...v1.2.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 [winnow](https://github.com/winnow-rs/winnow) from 0.7.14 to
0.7.15.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/winnow-rs/winnow/blob/main/CHANGELOG.md">winnow's
changelog</a>.</em></p>
<blockquote>
<h2>[0.7.15] - 2026-03-05</h2>
<h3>Compatibility</h3>
<ul>
<li>Deprecate <code>combinator::permutation</code> in favor of
<code>combinator::unordered_seq!</code></li>
</ul>
<h3>Features</h3>
<ul>
<li>Add <code>combinator::unordered_seq!</code>, like <code>seq!</code>
but where the order of values does not matter</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="eae4d4a23c"><code>eae4d4a</code></a>
chore: Release</li>
<li><a
href="5769b89038"><code>5769b89</code></a>
docs: Update changelog</li>
<li><a
href="329c13b6d2"><code>329c13b</code></a>
Merge pull request <a
href="https://redirect.github.com/winnow-rs/winnow/issues/876">#876</a>
from epage/unordered_seq</li>
<li><a
href="c169964b33"><code>c169964</code></a>
fix(comb): Deprecate permutation</li>
<li><a
href="2f972799f8"><code>2f97279</code></a>
fix(macros): Preserve original failure location</li>
<li><a
href="5926ad3527"><code>5926ad3</code></a>
feat(comb): Add unordered support to unordered_seq</li>
<li><a
href="6d7e8d4f98"><code>6d7e8d4</code></a>
feat(comb): Add baseline for unordered_seq</li>
<li><a
href="cfcd411cff"><code>cfcd411</code></a>
refactor(macros): Be consistent on indentation</li>
<li><a
href="716f2a7f6b"><code>716f2a7</code></a>
Merge pull request <a
href="https://redirect.github.com/winnow-rs/winnow/issues/869">#869</a>
from winnow-rs/renovate/crate-ci-committed-1.x</li>
<li><a
href="7cc73432d4"><code>7cc7343</code></a>
Merge pull request <a
href="https://redirect.github.com/winnow-rs/winnow/issues/870">#870</a>
from winnow-rs/renovate/crate-ci-typos-1.x</li>
<li>Additional commits viewable in <a
href="https://github.com/winnow-rs/winnow/compare/v0.7.14...v0.7.15">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>
Servo side of https://github.com/servo/stylo/pull/322.
Update the WPT expectation following the changes to make `::placeholder`
public and adding property restriction to `::placeholder` and
`::marker`. Additionally ensure that `getComputedStyle` works for
`::placeholder`.
Testing: Existing WPTs
Fixes: #43034Fixes: #43035Fixes: #19808
Signed-off-by: Jo Steven Novaryo <steven.novaryo@gmail.com>
Implement "getPublicKey" operations of RSASSA-PKCS1-v1_5, RSA-PSS and
RSA-OAEP. The steps are implemented at `rsa_common.rs` shared by the
three RSA algorithms.
To make the operations functioning, they are also registered at
`GetPublicKeyAlgorithm`.
Specification:
https://wicg.github.io/webcrypto-modern-algos/#SubtleCrypto-method-getPublicKey
Testing: Pass WPT tests that were expected to fail.
Fixes: Part of #43072
Signed-off-by: Kingsley Yung <kingsley@kkoyung.dev>
This is just a minor cleanup that uses the `derive` macro to implement
more of the `Default` functionality of `DOMString`.
Testing: This does not change functionality, so should be covered by
existing tests.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
WebRender is now a crates.io dependency so the previous lines need to
be updated to be like the ones for other crates.io. dependnecies.
Testing: This just updates a comment, so includes no behavior changes.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
This method is the same as `DOMString::from` with a `String` argument
and `From` and `Into` are preferred when writing modern Rust.
Testing: This should not change behavior and is thus covered by existing
tests.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
The conversion to atoms types uses a lot of copy and pasted code that
can be put into a generic function. This PR does that.
Testing: This should not change behavior so is covered by existing
tests.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
The workspace `publish` key is currently also set to false, but we will
probably start publishing in the future. To prepare for that we
explicitly prevent publishing in these crates, instead of following the
workspace setting.
Testing: No functional changes, covered by cargo build still working.
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
We used to create a `tick_start` timestamp at each
`dispatch_scroll_action` and `dispatch_pointermove_action`.
This is really bad, as the variable should represent the start of
current tick,
but we may end up with distinct values for different actions, since we
can sleep for some pointers:
d6fdd30c19/components/webdriver_server/actions.rs (L535-L537)
Testing:
This makes all actions in the current tick share the same `tick_start`,
and changes the number of actions dispatched.
A test for this would be really contrived.
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
Implement the `getPublicKey` method of the `SubtleCrypto` interface.
This patch includes:
- Implementing the steps of the `getPublicKey` method.
- Adding the new "getPublicKey" operation to the internal object
`supportedAlgorithms`, for registering cryptographic algorithms that
support "getPublicKey" operation, and used by the `getPublicKey` method
to check whether the cryptographic algorithm supports "getPublicKey"
operation and perform the operation if it is supported.
- Implementing the "getPublicKey" operation of X25519 for demonstrating
and testing the functionality of the `getPublicKey` method.
Specification:
<https://wicg.github.io/webcrypto-modern-algos/#SubtleCrypto-method-getPublicKey>
Testing: Pass WPT tests that were expected to fail.
Fixes: Part of #43072
Signed-off-by: Kingsley Yung <kingsley@kkoyung.dev>
Moves the `Drop` logic for `GPURenderPipeline` into a dedicated helper
struct, `DroppableGPURenderPipeline`.
The associated `Bindings.conf` entry is
removed as direct `Drop` is no longer needed for this type.
Testing: WebGpu tests just cover its cases
Fixes: Partially #26488
Signed-off-by: Domenico Rizzo <domenico.rizzo@gmail.com>
This introduces a `CollectionSource` trait as an alternative to
`CollectionFilter` in `HTMLCollection`, allowing collections to provide
elements directly via a custom iterator rather than filtering a full
subtree traversal, which would otherwise be rather inefficient for
smaller iterable sequences of options that can be determined without
traversing the whole subtree again.
The newly implemented `selectedOptions` attribute on the `<select>`
element uses this to iterate only the element's list of options that are
marked as selected.
Testing: 14 assertions in the existing WPT went from failing to passing.
Fixes#15522.
---------
Signed-off-by: Jacob Adam <software@jacobadam.net>
- Use modern Rust conveniences such as `unwrap_or_default`
- Unabbreviate `attr`
- Unify the lowercase ASCII name assertion and make it a debug assertion
- Use `unreachable!` instead of panic
- Expose two attribute getters that follow the behavior of two
specification concepts and what we expect internally in Servo:
- One that takes a namespace, but does not require lowercase attribute
names. ([specification
concept](https://dom.spec.whatwg.org/#concept-element-attributes-get-by-namespace>))
- One that does not take a namespace, but does require lowercase
attribute names. ([specification
concept](https://dom.spec.whatwg.org/#concept-element-attributes-get-by-name))
Testing: This should not really change behavior so should be covered by
existing tests.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Accepting the name of the event as a `DOMString` means that when events
are constructed from within Servo (for instance via input event
handling), the static strings are converted to an owned `String`
wrapped in a `DOMString` and then finally converted to an `Atom` in
`Event`. This makes it so that all non-generated `Event` constructors
accept `Atom`, which can avoid a conversion entirely when the atom
already exists on the Stylo atoms list and eliminate one in-memory copy
in the case that it isn't on the atom list.
Eventually, all event names can be on the atom list and we can eliminate
all copies. This is a tiny optimization, but also makes the code much
friendlier everywhere.
Testing: This should not change behavior so should be covered by
existing test.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
This change makes it possible to focus boxes with overflow via the
keyboard. These boxes should be focusable areas, yet are not focusable
via the mouse. Instead they can be focused via sequential tab
navigation.
Testing: This fixes a WPT test.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Oriol Brufau <obrufau@igalia.com>
These two commands are intertwined with the delete command. By
implementing them now, it becomes easier to triage actual
implementation issues in the delete command.
Part of #25005
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
Rather than overwriting the CSP list from a fetch header response, we
should add a policy from a meta element to the global CSP list (if it
exists).
Fixes#36822
Supersedes and closes#36828
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
Co-authored-by: Emmanuel Paul Elom <elomemmanuel007@gmail.com>
This abstracts out a common helper to determine focusable area kind
which is used by `Element::is_click_focusable`,
`Element::is_sequentially_focusable`, and `Element::is_focusable_area`.
This avoid having the latter depend on the former two, which was the
reverse of what the specification said. The helper is necessary because
the specification defines click and sequential focusability as subsets
of focusable elements, but going from "This is a focusable element" to
determining what kind of focusable element something is requires
duplicating a lot of the logic that was used to determine that something
is a focusable area.
It's likely that the specification needs more work here to improve the
definition (and indeed to unify all of the places that talk about what
elements are focusable areas). For now, this just tries to make our code
more similar to the text.
See: whatwg/html#4607
Testing: This shouldn't change behavior, so should be tested by existing
tests.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
This change adds support for the `accesskey` HTML attribute the
corresponding behavior defined by the HTML standard. In addition to a
new map holding a mapping between access key characters and a rooted
reference to elements that use them, it adds a struct to represent the
"Command" concept from the specification [^1], which seems to be used
for `accesskey`. Not all command facets are implemented as some seem to
be unused in the specification.
[^1]:
https://html.spec.whatwg.org/multipage/interactive-elements.html#commands
Testing: This causes most access key tests to start passing. One test
now
only partially completes, because of a bug in the way that we fire
synthetic
mouse events.
Fixes: This is part of #25001.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
This requires updating to a new version of Stylo.
Corresponding Stylo PR: servo/stylo#319
Testing: This just upgrades a dependency so existing tests should
suffice.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
whenever a browsing context loads a new document or otherwise navigates,
the constellation sends a new frame tree to the compositor, giving us a
nice, relatively central way to detect when we may need to update the
graft node in a webview’s AccessKit subtree. but we only want to update
that graft node when the pipeline in its *top-level* browsing context
has changed, not just when the pipeline in *any* of its browsing
contexts has changed.
this patch adds a field to the ConstellationWebView that tracks the
active top-level pipeline for each webview, allowing us to check when a
set_frame_tree_for_webview() call actually involves navigation in the
top-level browsing context.
Testing: will be covered by accessibility tree tests in a later patch
Fixes: part of #4344, extracted from our work in #42338
Signed-off-by: delan azabani <dazabani@igalia.com>
Co-authored-by: Alice Boxhall <alice@igalia.com>
each webview will have an AccessKit subtree, and each pipeline
representing a document will have an AccessKit subtree for its layout.
but to graft the subtree of a pipeline into that of a webview (for
top-level documents) or another pipeline (for documents in iframes etc),
the parent tree needs to know the
[TreeId](https://docs.rs/accesskit/0.24.0/accesskit/struct.TreeId.html)
of the child tree.
this is annoying for pipelines, because they run in a separate thread
(or process) to the constellation, and they may run in a separate script
thread (or web content process) to other pipelines. if the pipeline
generates a random (UUIDv4) TreeId as internal state, it has to
communicate that to the constellation (or parent pipeline) over IPC,
which takes time and makes it harder for us to obey AccessKit’s subtree
invariants (notably, the subtree must not send updates before a graft
node is created for it in some other subtree).
this patch defines a deterministic and pure conversion from PipelineId
to a UUIDv5-based TreeId, allowing anyone that knows a PipelineId to
derive its TreeId. one consequence of this approach is that it precludes
having multiple instances of
[Servo](https://doc.servo.org/servo/struct.Servo.html) in a single
application, but i’m not sure that was an intended use case (or even
possible).
Testing: this patch includes a unit test
Fixes: part of #4344, extracted from our work in #42338
<img width="521" height="400" alt="grafts drawio"
src="https://github.com/user-attachments/assets/39efa426-ba21-41dc-874b-c3e4fcb17593"
/>
Signed-off-by: delan azabani <dazabani@igalia.com>
Co-authored-by: Alice Boxhall <alice@igalia.com>
The conversion of strings was wrong for `--foo` where it should become
`-Foo`. Instead, it was consuming both the `--` and then would encounter
a `f`.
This moves the relevant algorithms to DOMStringMap and adds
corresponding spec comments to explain what's going on.
This does make us closer to passing
`html/dom/elements/global-attributes/dataset-delete.html` but
unfortunately it still fails because of #12978
Prior to this fix, the value of `d.dataset['-foo']` wasn't undefined.
However, we now fail the assertion where the attribute should remain,
despite the call to delete.
That's because per `LegacyOverrideBuiltIns` we should be checking the
existence of which properties it can delete, before it actually deletes
the attribute. Right now, we do it regardless if it is a valid property
and thus we incorrectly delete the attribute.
Testing: No change in tests, since the test in question has more
assertions that require more fixes
---------
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
Signed-off-by: Tim van der Lippe <TimvdLippe@users.noreply.github.com>
Add support for navigation requests ("navigateTo", "goBack", and
"goForward") over the Remote Debugging Protocol. These may be sent by a
UI client in response to user input (for example the address bar in the
Firefox inspector), or they can be used to automate navigation during
unit tests.
This currently only supports navigation within the URL domain at which
servoshell is initially launched, due to a bug in servo's
`BrowsingContextActor` implementation. (Unit tests covering a fix for
that issue will depend on this change.)
Testing: The behavior of all 3 new message types is covered by a new
test case—`test_navigation`—in the devtools unit test suite.
Fixes: #38668
---------
Signed-off-by: Brent Schroeter <contact@brentsch.com>
Co-authored-by: eri <eri@igalia.com>
Pass `ListFrames` back to devtools
Testing: existing test passes
Fixes: part of #36027
Signed-off-by: atbrakhi <atbrakhi@igalia.com>
Co-authored-by: eri <eri@igalia.com>
Fixes resuming after stepping.
Testing: Ran existing DevTools test
Part of: #36027
Signed-off-by: eri <eri@igalia.com>
Co-authored-by: atbrakhi <atbrakhi@igalia.com>
We currently use `String` to store cryptographic algorithm name in
subtle dictionaries in WebCrypto code. The algorithm normalization
guarantees that there are only a limited number of possible strings that
can be assigned to the name fields.
We switch to use the `CryptoAlgorithm` enum, which contains all possible
algorithm names, to represent these values. This reduces string
comparison and saves a small amount of memory.
The constant string `ALG_*` in `subtlecrypto.rs`, which are the
recognized algorithm name for the algorithms, are also removed since
they are already embedded in the `CryptoAlgorithm` enum.
Testing: Refactoring. Existing tests suffice.
Fixes: Part of #42579
Signed-off-by: Kingsley Yung <kingsley@kkoyung.dev>
These were some of the remaining failures for link elements. They
concern attribute handling and when to run fetches.
1. We shouldn't refetch on media changes, but immediately apply the
effect. This is already the case for style elements
2. We shouldn't refetch when attribute values are the same
3. We shouldn't fetch when the type attribute doesn't match
4. We should fetch, even if the media doesn't match. Only when the media
is then changed, we should re-evaluate.
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
This implements an two types:
- Efficient Tree Iterator that can be used without rooting when
possible.
- UnrootedDom that can be used while not rooting while capturing a NoGC.
We:
- introduce new methods in 'script/dom/node.rs' to get the correct
iterator.
- introduce methods in 'script/dom/node.rs' to get the unrooted children
in an 'UnrootedDom' container.
We use the new TreeIterator in 'script/dom/document.rs' Open.
Testing: WPT tests should catch this but careful review is required.
---------
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
This script automates the signing, packaging and notarization of
servoshell on macOS.
This is a first step towards: #40031 and #12532. While we could let a
maintainer code-sign and upload the signed release, probably this should
be integrated into CI, which would require additional work.
This script started out quite simple as part of `./mach package`.
However, since the script has access to secrets, it shouldn't be part of
mach (to minimize the amout of code that needs to be trusted).
We also needed to save state and be able to resume operations, since
notarizing can take quite long and the stapling needs to wait until
notarization has completed.
Since notarizing can take long (up to a day has been observed during
first tests), we save artifacts and the notarization ID, and add a
`--check-status` command that can be used to poll if notarization has
been finished.
Testing: Manually testing required. A signed and notarized `.dmg`
artifact has [been
uploaded](https://servo.zulipchat.com/#narrow/channel/500774-tsc/topic/Signing.20macos.20Servoshell/near/576256648)
to zulip, allowing others to verify the notarization worked.
---------
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
This continues implementation of the delete command for
document.execCommand. Unfortunately, since these algorithms are vast
(30+ steps) and partial implementation leads to lots of issues, this PR
is "draw the rest of the owl".
I have tried to keep things manageable, by only implementing a couple of
extra steps in the delete command, so that we can focus on the "Delete
the selection" part.
To do that, several algorithms had to be implemented. Most of these
algorithms are required both by commands and by algorithms themselves,
which is why they are now exposed on a trait.
Additionally, all code now uses `cx`, to make sure it is up-to-date with
the ongoing migration and since some of the DOM API's it needs to call
already require `cx`.
Part of #25005
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
This change implements listing all frames from youngest to oldest. This
is in order to send correct frame message from thread actor
This is needed for our upcoming work!
Testing: Current tests are passing + manual test
Fixes: #36027
Signed-off-by: atbrakhi <atbrakhi@igalia.com>
Co-authored-by: eri <eri@igalia.com>
As requested during the review of
https://github.com/servo/servo/pull/42991. These functions are currently
called `{to, from}_layout_js` or sometimes `get_jsmanaged` - this change
unifies them as `{to, from}_layout_dom` for clarity.
Testing: Covered by existing tests
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
In layout calculation within script, Instead of relying on the computed
values for overflow, query the overflow from layout for its used value
to accurately reflect whether an element establish a scroll container.
This query will be used for `IntersectionObserver` as well.
Testing: There are new `IntersectionObserver` WPT failures:
- `intersection-observer/isIntersecting-change-events.html`
- `intersection-observer/containing-block.html`
The failures are more than likely a false positive because intersection
observation steps wasn't supposed to trigger a reflow, but it was
before. It could be caused by the implementation of
`IntersectionObserver` in major UAs being a little bit different from
the spec in the calculation of `threshold` and `isIntersecting` .
---------
Signed-off-by: Jo Steven Novaryo <steven.novaryo@gmail.com>
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
Fixed a typo in the comment documentation in
`ports/servoshell/prefs.rs`. Changed "arugment" to "argument" on line
291.
Testing: This change does not need testing because it just fixes a typo
in a rustdoc comment.
Signed-off-by: hobostay <110hqc@gmail.com>
This changes makes it so that keyboard and click focusability are two
separate concepts in `script`. Some elements may be focusable only by
the keyboard and some only by the click events.
In addition, the `SEQUENTIALLY_FOCUSABLE` `Node` flag is removed in
favor of a
more specification-aligned approach of checking lazily if an element is
a focusable area. This allows moving the focus fixup steps to their
correct place, asynchronously during "update the rendering" and
synchronously during `unbind_from_tree`.
Testing: This causes some WPT tests to start passing and some to start
failing:
- Two subtests tests in
`tests/wpt/meta/css/css-conditional/container-queries/` because
we do not implement support for container queries. These are legitimate
failures
and they are compensated by a good subtest pass in the same file.
- A few subtests in `/html/interaction/focus/tabindex-focus-flag.html`
because now
we do not allow focusing non-rendering elements. The failures are HTML
elements with
`<svg>` which we do not rendering and `<summary>` elements of
`<details>` which
need special handling we do not implement yet.
- `html/semantics/forms/the-fieldset-element/disabled-003.html`: Some of
these tests
start to fail, but they are not spec compliant and browser properly
implementing
the asynchronous focus fixup rule also fail them.
Fixes: #31870.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Oriol Brufau <obrufau@igalia.com>
Bumps [pin-project](https://github.com/taiki-e/pin-project) from 1.1.10
to 1.1.11.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/taiki-e/pin-project/releases">pin-project's
releases</a>.</em></p>
<blockquote>
<h2>1.1.11</h2>
<ul>
<li>Enable <a
href="https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/immutable-releases">release
immutability</a>.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/taiki-e/pin-project/blob/main/CHANGELOG.md">pin-project's
changelog</a>.</em></p>
<blockquote>
<h2>[1.1.11] - 2026-02-27</h2>
<ul>
<li>Enable <a
href="https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/immutable-releases">release
immutability</a>.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="3aa50f9ae9"><code>3aa50f9</code></a>
Release 1.1.11</li>
<li><a
href="bd565cfa1c"><code>bd565cf</code></a>
Update changelog</li>
<li><a
href="90389fca80"><code>90389fc</code></a>
Update allowed lint list</li>
<li><a
href="67339afec3"><code>67339af</code></a>
tests: Update ui test output to nightly-2026-02-16</li>
<li><a
href="d5de5f6d21"><code>d5de5f6</code></a>
tools: Update tidy.sh</li>
<li><a
href="afceb72c9d"><code>afceb72</code></a>
Fix clippy::unnecessary_map_or warning</li>
<li><a
href="e985eee188"><code>e985eee</code></a>
Bump MSRV to 1.71</li>
<li><a
href="b66e5d98ca"><code>b66e5d9</code></a>
tests: Update ui test output to nightly-2026-02-07</li>
<li><a
href="3c707845da"><code>3c70784</code></a>
Apply clippy to doctest</li>
<li><a
href="ade4308d3e"><code>ade4308</code></a>
tests: Update ui test output to nightly-2026-01-22</li>
<li>Additional commits viewable in <a
href="https://github.com/taiki-e/pin-project/compare/v1.1.10...v1.1.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 the accesskit-related group with 2 updates:
[accesskit_windows](https://github.com/AccessKit/accesskit) and
[accesskit_winit](https://github.com/AccessKit/accesskit).
Updates `accesskit_windows` from 0.32.0 to 0.32.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/AccessKit/accesskit/releases">accesskit_windows's
releases</a>.</em></p>
<blockquote>
<h2>accesskit_windows: v0.32.1</h2>
<h2><a
href="https://github.com/AccessKit/accesskit/compare/accesskit_windows-v0.32.0...accesskit_windows-v0.32.1">0.32.1</a>
(2026-03-04)</h2>
<h3>Dependencies</h3>
<ul>
<li>The following workspace dependencies were updated
<ul>
<li>dependencies
<ul>
<li>accesskit_consumer bumped from 0.34.0 to 0.35.0</li>
</ul>
</li>
</ul>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="1bbcf10094"><code>1bbcf10</code></a>
chore: release main (<a
href="https://redirect.github.com/AccessKit/accesskit/issues/692">#692</a>)</li>
<li><a
href="33fc4f0669"><code>33fc4f0</code></a>
feat: Implement text attributes for AT-SPI (<a
href="https://redirect.github.com/AccessKit/accesskit/issues/695">#695</a>)</li>
<li><a
href="b5979a4c88"><code>b5979a4</code></a>
fix: Correctly register interfaces on Unix after Hyperlink was added (<a
href="https://redirect.github.com/AccessKit/accesskit/issues/694">#694</a>)</li>
<li><a
href="7342525b8a"><code>7342525</code></a>
refactor: Use TreeState::locate_node in adapters</li>
<li><a
href="941a96d161"><code>941a96d</code></a>
refactor!: Allow locating nodes without Tree access</li>
<li><a
href="641b05b10d"><code>641b05b</code></a>
feat: Expose text attributes on macOS (<a
href="https://redirect.github.com/AccessKit/accesskit/issues/691">#691</a>)</li>
<li><a
href="da70097f57"><code>da70097</code></a>
chore: release main (<a
href="https://redirect.github.com/AccessKit/accesskit/issues/688">#688</a>)</li>
<li><a
href="8392850941"><code>8392850</code></a>
fix: Don't report selected state when toggled on Android (<a
href="https://redirect.github.com/AccessKit/accesskit/issues/689">#689</a>)</li>
<li><a
href="6146089404"><code>6146089</code></a>
fix: Populate range info on Android (<a
href="https://redirect.github.com/AccessKit/accesskit/issues/686">#686</a>)</li>
<li><a
href="67590283b0"><code>6759028</code></a>
fix: Update bytes dependency to fix RUSTSEC-2026-0007 (<a
href="https://redirect.github.com/AccessKit/accesskit/issues/687">#687</a>)</li>
<li>See full diff in <a
href="https://github.com/AccessKit/accesskit/compare/accesskit_windows-v0.32.0...accesskit_windows-v0.32.1">compare
view</a></li>
</ul>
</details>
<br />
Updates `accesskit_winit` from 0.32.1 to 0.32.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/AccessKit/accesskit/releases">accesskit_winit's
releases</a>.</em></p>
<blockquote>
<h2>accesskit_winit: v0.32.2</h2>
<h2><a
href="https://github.com/AccessKit/accesskit/compare/accesskit_winit-v0.32.1...accesskit_winit-v0.32.2">0.32.2</a>
(2026-03-04)</h2>
<h3>Dependencies</h3>
<ul>
<li>The following workspace dependencies were updated
<ul>
<li>dependencies
<ul>
<li>accesskit_windows bumped from 0.32.0 to 0.32.1</li>
<li>accesskit_macos bumped from 0.25.0 to 0.26.0</li>
<li>accesskit_unix bumped from 0.20.0 to 0.21.0</li>
<li>accesskit_android bumped from 0.7.1 to 0.7.2</li>
</ul>
</li>
</ul>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="1bbcf10094"><code>1bbcf10</code></a>
chore: release main (<a
href="https://redirect.github.com/AccessKit/accesskit/issues/692">#692</a>)</li>
<li><a
href="33fc4f0669"><code>33fc4f0</code></a>
feat: Implement text attributes for AT-SPI (<a
href="https://redirect.github.com/AccessKit/accesskit/issues/695">#695</a>)</li>
<li><a
href="b5979a4c88"><code>b5979a4</code></a>
fix: Correctly register interfaces on Unix after Hyperlink was added (<a
href="https://redirect.github.com/AccessKit/accesskit/issues/694">#694</a>)</li>
<li><a
href="7342525b8a"><code>7342525</code></a>
refactor: Use TreeState::locate_node in adapters</li>
<li><a
href="941a96d161"><code>941a96d</code></a>
refactor!: Allow locating nodes without Tree access</li>
<li><a
href="641b05b10d"><code>641b05b</code></a>
feat: Expose text attributes on macOS (<a
href="https://redirect.github.com/AccessKit/accesskit/issues/691">#691</a>)</li>
<li>See full diff in <a
href="https://github.com/AccessKit/accesskit/compare/accesskit_winit-v0.32.1...accesskit_winit-v0.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 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>
Improvements to command button implementation
- Correctly handle the button's optional value concept
- Add the button as the source value for the CommandEvent
- Fix handling of buttons in auto state
Testing: Existing tests
Signed-off-by: Luke Warlow <lwarlow@igalia.com>
Moves the `Drop` logic for `GPURenderPassEncoder` into a dedicated
helper struct, `DroppableGPURenderPassEncoder`. This ensures that DOM
types do not directly implement `Drop`, aligning with the policy for
resource management in the DOM. The associated `Bindings.conf` entry is
removed as direct `Drop` is no longer needed for this type.
Testing: WebGPU tests just cover its cases
Fixes: Partially #26488
Signed-off-by: Domenico Rizzo <domenico.rizzo@gmail.com>
Stylo has ready-to-use apis for `Node::querySelector` and
`Node::querySelectorAll`. We currently instead set up our own selector
queries, which is neither as correct nor as performant, so this change
makes servo use the stylo interfaces instead.
This change contains a fair amount of unsafe code - review with caution!
Notably, this makes the tab component from the astro framework work
correctly in servo (https://starlight.astro.build/components/tabs/).
I've seen that (broken) component on multiple websites.
Fixes https://github.com/servo/servo/issues/41105
Testing: New tests start to pass
---------
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
We introduce a new type of callback, LazyGenericCallback and use it in
websocket initialization.
The basic requirement is that for websocket the place where the callback
is called and where it is constructed are over several functions,
including async functions. To make this generic, we implement
LazyGenericCallback and a GeneralCallbackSetter. The CallbackSetter can
be used to set the callback which then will be transfered to the
LazyGenericCallback which calls it on messages send to it.
Finally, we use this to "Generify" the initialization of WebSockets.
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
Testing: We have new tests for LazyGenericCallback and wpt test run
here: https://github.com/Narfinger/servo/actions/runs/21246091767
---------
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
Co-authored-by: Jonathan Schwender <55576758+jschwe@users.noreply.github.com>
The frontend connection metadata was not consistently synchronized with
backend object store state during open/upgrade, and upgrade abort did
not fully restore the connection object store set in all cases.
Testing: More indexeddb tests should pass.
part of https://github.com/servo/servo/issues/40983
---------
Signed-off-by: Taym Haddadi <haddadi.taym@gmail.com>
Bumps [range-alloc](https://github.com/gfx-rs/range-alloc) from 0.1.4 to
0.1.5.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/gfx-rs/range-alloc/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>
DomRefCell::borrow inside of layout code is risky because it leads to
memory races if the code is ever called from layout worker threads. This
can be caught via TSAN, but we can also catch it deterministically in CI
by using our existing thread state debug assertions correctly.
Testing: Existing WPT test coverage is sufficient.
Fixes: #42962
---------
Signed-off-by: Josh Matthews <josh@joshmatthews.net>
Ensure that the screenshot rectangle is bounded by the width and height
of the viewport.
Testing: The WPT test `test_clip_huge_element_to_viewport` now passes
instead of crashing. It is also fixed so that the returned screenshot
size is the expected 800x600; it would otherwise be 792x600 due to the
body margin.
Fixes: #42530
---------
Signed-off-by: Loic Denuziere <loic@denuziere.net>
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
Co-authored-by: Euclid Ye <yezhizhenjiakang@gmail.com>
Bumps [jiff](https://github.com/BurntSushi/jiff) from 0.2.22 to 0.2.23.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/BurntSushi/jiff/blob/master/CHANGELOG.md">jiff's
changelog</a>.</em></p>
<blockquote>
<h1>0.2.23 (2026-03-03)</h1>
<p>This release updates Jiff's bundled copy of the [IANA Time Zone
Database]
to <code>2026a</code>. See the <a
href="https://lists.iana.org/hyperkitty/list/tz-announce@iana.org/thread/ASPLBE3A4BAEXIOQ3KZ6EJSJWBU6L53G/"><code>2026a</code>
release announcement</a> for more details.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="e5b7f0d061"><code>e5b7f0d</code></a>
0.2.23</li>
<li><a
href="ff23414041"><code>ff23414</code></a>
jiff-tzdb-0.1.6</li>
<li><a
href="225d54b3fa"><code>225d54b</code></a>
jiff-tzdb: update to tzdb 2026a</li>
<li>See full diff in <a
href="https://github.com/BurntSushi/jiff/compare/jiff-static-0.2.22...jiff-static-0.2.23">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 [quote](https://github.com/dtolnay/quote) from 1.0.44 to 1.0.45.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dtolnay/quote/releases">quote's
releases</a>.</em></p>
<blockquote>
<h2>1.0.45</h2>
<ul>
<li>Add ToTokens impl for Arc<T> (<a
href="https://redirect.github.com/dtolnay/quote/issues/326">#326</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="842ffde933"><code>842ffde</code></a>
Release 1.0.45</li>
<li><a
href="93d691cce9"><code>93d691c</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/quote/issues/326">#326</a>
from dtolnay/arc</li>
<li><a
href="d27d589652"><code>d27d589</code></a>
ToTokens for Arc</li>
<li><a
href="24d10826cf"><code>24d1082</code></a>
Update ui test suite to nightly-2026-02-18</li>
<li><a
href="26b127632c"><code>26b1276</code></a>
Unpin CI miri toolchain</li>
<li><a
href="c5e1c9ef46"><code>c5e1c9e</code></a>
Pin CI miri to nightly-2026-02-11</li>
<li><a
href="58e21550d8"><code>58e2155</code></a>
Remove compiler version support from readme</li>
<li><a
href="1fc6b50769"><code>1fc6b50</code></a>
Raise required compiler to Rust 1.71</li>
<li><a
href="515480a434"><code>515480a</code></a>
Update ui test suite to nightly-2026-02-01</li>
<li><a
href="2c5e7709dd"><code>2c5e770</code></a>
Update ui test suite to nightly-2026-01-30</li>
<li>See full diff in <a
href="https://github.com/dtolnay/quote/compare/1.0.44...1.0.45">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 Stylo to https://github.com/servo/stylo/pull/314
In particular, we would now get a compile error because we were setting
`layout.flexbox.enabled` and `layout.css.transition-behavior.enabled`,
even if Stylo removed at some point. So stop setting them.
Testing: Not needed, no behavior change
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
This change includes two related fixes for flakiness revealed by #42847.
1. When caching fonts, try harder to not re-cache a font. This could
happen due to a race condition with the read-write lock on the font
cache. This change improves memory usage in some cases as it prevents
a font from being loaded twice.
2. Incorporate both the strut size and the block size contribution of a
previously unused font in an inline container. Before the code was
incorporating one or the other. In addition, *only* incorporate the
block contribution of a previously unused font if its metrics
meaningfully differ from the container's default font. This was the
case triggered by failing to have the fix in part one of the change.
Testing: This fixes flakiness in an internal WPT-style test.
Fixes: #42908.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Oriol Brufau <obrufau@igalia.com>
Co-authored-by: Luke Warlow <lwarlow@igalia.com>
Wraps data related to iframe in `IFrameInfo` struct.
Testing: This is just a little refactor. No change in behavior expected.
Successful compilation is enough to verify.
Signed-off-by: Shubham Gupta <shubham.gupta@chromium.org>
This message appeared in a backtrace without any format replacement
taking place.
Testing: No tests for error messages.
---------
Signed-off-by: Josh Matthews <josh@joshmatthews.net>
Renaming the job in #42929 silently broke the evaluation here.
Testing: Can only be tested on main / in priviledge contexts / otherwise
the unsigned binary is anyway built.
Fixes: ohos bencher failing on main (since the wrong binary name is
chosen)
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
In the WebCrypto modern algorithm specification, the issue
(https://github.com/WICG/webcrypto-modern-algos/issues/47) on algorithm
name referencing in the export key operation of ML-KEM had been resolved
by the following commit in the specification repository:
705f8ec6ce
Our implementation actually matches the new specification. We simply
update the specification text, with some minor refactoring accordingly.
This is equivalent the changes on ML-KEM in #42918 in which I forgot to
include the counterpart for ML-DSA :(
Testing: Refactoring. Existing tests suffice.
Signed-off-by: Kingsley Yung <kingsley@kkoyung.dev>
Testing: New tests start to pass. Most related tests still fail because
we dispatch mouse and pointer events in the wrong order.
---------
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
We had two `Info.plist` files. The maintained one is in the root
directory of this repository.
There is no reason for two plist files, so remove the unmaintained one.
Additionally, we also move the maintained version from the root
directory to the servoshell directory.
Testing: We don't test the contents of the plist file.
---------
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
Because of the move of the reporting function to
update_user_interface_state and the multiple events of
LoadStatus::Complete, the previous reporting did not work correctly
anymore.
This fixes it by manually summing up the reports for
'resident-according-to-smaps' and using the hitrace-bencher
point_filter_type Largest.
This should restore the bencher graph.
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
Testing: No automatic test but manual test here:
https://github.com/Narfinger/servo/actions/runs/22617931816
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
Renaming the openharmony build job in #42929 caused artifact_ids to be
empty, which caused release failures.
Additionally, we add a validation step to the upload workflow, to
quickly pinpoint the issue of a missing input parameter,
since apparently github won't throw an error if a required input
parameter is empty.
This should make it easier to pinpoint the issue if it happens again.
Testing: Not tested.
---------
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
Moves the `Drop` logic for `GPURenderBundle` into a dedicated helper
struct, `DroppableGPURenderBundle`. This change ensures that
`GPURenderBundle` itself does not directly implement `Drop`, aligning
with the policy to prevent direct `Drop` implementations on DOM types.
Removes the `allowDropImpl` configuration for `GPURenderBundle` from
script bindings.
Testing: WebGPU tests cover all related cases
Fixes: Partially #26488
Signed-off-by: Domenico Rizzo <domenico.rizzo@gmail.com>
See #42956. It's quite likely that this code has bitrotted and if this
feature is desired, should probably download the nightlies from GitHub
and also be updated to support our current packaging output.
Testing: This is just removing unused code from our build scripts.
Fixes: #42956.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
This changes `Element::selector_flags` from `Cell<ElementSelectorFlags>`
to `AtomicUsize`, thus avoiding the risk of data races.
Testing: Tested manually. We don't run tests using TSAN builds.
Fixes: #37495
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
Adds support for more pointer events: pointerenter, pointerout,
pointerleave, pointerover
Also add global event handlers that were missing.
Testing: WPT expectations are updated.
cc @yezhizhen
Signed-off-by: webbeef <me@webbeef.org>
Bumps [ipnet](https://github.com/krisprice/ipnet) from 2.11.0 to 2.12.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/krisprice/ipnet/releases">ipnet's
releases</a>.</em></p>
<blockquote>
<p>Backwards compatible schemars 1.* support using version specific
features#67</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/krisprice/ipnet/blob/master/RELEASES.md">ipnet's
changelog</a>.</em></p>
<blockquote>
<h2>Version 2.12.0</h2>
<ul>
<li>Backwards compatible schemars 1.* support using version specific
features#67</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="65c04c3556"><code>65c04c3</code></a>
Update version number.</li>
<li><a
href="397bf726e7"><code>397bf72</code></a>
Merge pull request <a
href="https://redirect.github.com/krisprice/ipnet/issues/67">#67</a>
from StefanTerdell/schemars-1</li>
<li><a
href="687f2703d9"><code>687f270</code></a>
Add support for schemars 1, deprecate old features</li>
<li>See full diff in <a
href="https://github.com/krisprice/ipnet/compare/2.11.0...2.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>
Bumps [jiff](https://github.com/BurntSushi/jiff) from 0.2.21 to 0.2.22.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/BurntSushi/jiff/blob/master/CHANGELOG.md">jiff's
changelog</a>.</em></p>
<blockquote>
<h1>0.2.22 (2026-02-28)</h1>
<p>This release includes a bug fix where fallible conversions from
signed
durations to unsigned durations could panic in some cases.</p>
<p>Bug fixes:</p>
<ul>
<li><a
href="https://redirect.github.com/BurntSushi/jiff/issues/526">#526</a>:
Fix a panicking bug that occurs for
<code>std::time::Duration::try_from(SignedDuration::new(0,
-1))</code>.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="4fb63be9c2"><code>4fb63be</code></a>
0.2.22</li>
<li><a
href="47f5abf9ee"><code>47f5abf</code></a>
signed_duration: fix a panicking bug in `TryFrom<SignedDuration>
for std::tim...</li>
<li><a
href="c3d960e192"><code>c3d960e</code></a>
fuzz: update dependencies</li>
<li>See full diff in <a
href="https://github.com/BurntSushi/jiff/compare/jiff-static-0.2.21...jiff-static-0.2.22">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 [winit](https://github.com/rust-windowing/winit) from 0.30.12 to
0.30.13.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/rust-windowing/winit/releases">winit's
releases</a>.</em></p>
<blockquote>
<h2>Winit version 0.30.13</h2>
<h3>Added</h3>
<ul>
<li>On Wayland, add <code>Window::set_resize_increments</code>.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>On macOS, fixed crash when dragging non-file content onto
window.</li>
<li>On X11, fix <code>set_hittest</code> not working on some window
managers.</li>
<li>On X11, fix debug mode overflow panic in
<code>set_timestamp</code>.</li>
<li>On macOS, fix crash in <code>set_marked_text</code> when native
Pinyin IME sends out-of-bounds <code>selected_range</code>.</li>
<li>On Windows, fix <code>WM_IME_SETCONTEXT</code> IME UI flag masking
on <code>lParam</code>.</li>
<li>On Android, populate <code>KeyEvent::text</code> and
<code>KeyEvent::text_with_all_modifiers</code> via
<code>Key::to_text()</code>.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="e9809ef54b"><code>e9809ef</code></a>
Winit version 0.30.13</li>
<li><a
href="efb5b37fff"><code>efb5b37</code></a>
chore: fix ci</li>
<li><a
href="a9baf5ecda"><code>a9baf5e</code></a>
fix(android): Populate <code>KeyEvent.text</code> via
<code>Key::to_text()</code></li>
<li><a
href="6bb43fd130"><code>6bb43fd</code></a>
wayland: implement resize increments</li>
<li><a
href="17a73f4dd4"><code>17a73f4</code></a>
win32: fix ime setcontext lparam</li>
<li><a
href="bccc568345"><code>bccc568</code></a>
fix(macOS): clamp IME selected_range to prevent substringToIndex
crash</li>
<li><a
href="69b8a07ae0"><code>69b8a07</code></a>
winit-x11: fix debug mode overflow panic in
<code>set_timestamp</code></li>
<li><a
href="3eb731f8b5"><code>3eb731f</code></a>
winit-x11: replace xfixes with x11rb in set_hittest</li>
<li><a
href="7035dd554f"><code>7035dd5</code></a>
winit-win32: Fix ABI mismatch in INIT_MAIN_THREAD_ID</li>
<li><a
href="ab4c6bfc82"><code>ab4c6bf</code></a>
macOS: fix a crash when dragging non-file content onto window</li>
<li>See full diff in <a
href="https://github.com/rust-windowing/winit/compare/v0.30.12...v0.30.13">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 adds very basic support for tab navigation, but without
support for focus scopes. Followup changes will refine the behavior of
this implementation to follow the specification around focus scopes,
shadow DOM, and slots. In particular `delegatesFocus` is not supported
here yet.
Testing: This causes quite a few WPT tests to start passing.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Oriol Brufau <obrufau@igalia.com>
This change checks whether a character belongs to the `Cf` category of
unicode characters before applying `letter-spacing`. The `fonts` crate
now depends on `icu_properties`, but that crate is already in our
dependency tree (with the same features enabled).
Testing: New tests start to pass
Fixes https://github.com/servo/servo/issues/38781
---------
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
This just adds URL to pass to ImageFragment for LargestContentfulPaint
Entry
Rebased on: #42948
Testing: No expected change in behavior, Successful Compilation is
enough to verify.
Signed-off-by: Shubham Gupta <shubham.gupta@chromium.org>
Moves the `Drop` implementation for `GPUPipelineLayout` to a dedicated
private helper struct, `DroppableGPUPipelineLayout`. This ensures that
DOM types do not directly implement `Drop`, aligning with best practices
for resource management in the DOM. The associated `Bindings.conf` entry
is removed as direct `Drop` is no longer needed for this type.
Testing: WebGpu just coverages cases with proper tests
Fixes: Partially #26488
Signed-off-by: Domenico Rizzo <domenico.rizzo@gmail.com>
In ac24cd6139 we started asking for people
to use **private** github security reports, but kept the wording from
before, which was related to accepting such reports as **public**
issues.
The wording doesn't make sense in the context of asking people for
private reports, so update the wording to reflect that.
This is not a policy change, just making the wording more clear.
Testing: Not required, policy description.
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
When the async parser thread finds a `<meta charset>` tag then it asks
the main thread whether parsing should restart. The main thread wasn't
responding, so the parser got stuck.
Part of https://github.com/servo/servo/issues/37418
Testing: This change adds a test
---------
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
Encapsulating Image related data in ImageInfo in NodeExt impl.
Testing: This is just a little refactor. No change in behavior expected.
Successful compilation is enough to verify.
Signed-off-by: Shubham Gupta <shubham.gupta@chromium.org>
Bumps [dlib](https://github.com/elinorbgr/dlib) from 0.5.2 to 0.5.3.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/elinorbgr/dlib/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>
Bumps the gstreamer-related group with 3 updates:
[glib](https://github.com/gtk-rs/gtk-rs-core), gstreamer and
[glib-macros](https://github.com/gtk-rs/gtk-rs-core).
Updates `glib` from 0.22.0 to 0.22.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/gtk-rs/gtk-rs-core/releases">glib's
releases</a>.</em></p>
<blockquote>
<h2>0.22.2</h2>
<pre><code>Julian Sparber:
glib: Implement From<PtrSlice<GStringPtr> for StrV
glib: Implement From<StrV> for PtrSlice<GStringPtr>
<p>Sebastian Dröge:<br />
gio: Mark <code>Socket::from_raw_socket()</code> as unsafe</p>
<p>Wladimir Palant:<br />
glib-macros: Silence “redundant closure” clippy warning in
closure!/closure_local!<br />
</code></pre></p>
<h2>0.22.1</h2>
<pre><code>Sebastian Dröge:
gio: Re-add accidentally removed UNIX APIs that are still part of gio
itself
gio: Remove non-existing UNIX functions from Gir.toml
</code></pre>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="484fbe01e7"><code>484fbe0</code></a>
Update Cargo.lock</li>
<li><a
href="77ce5c64ea"><code>77ce5c6</code></a>
Update versions to 0.22.2</li>
<li><a
href="a5a6b9f659"><code>a5a6b9f</code></a>
glib: Implement From<StrV> for PtrSlice<GStringPtr></li>
<li><a
href="1870acb44c"><code>1870acb</code></a>
glib: Implement From<PtrSlice<!-- raw HTML omitted --> for StrV</li>
<li><a
href="dd77db24ee"><code>dd77db2</code></a>
Fixes <a
href="https://redirect.github.com/gtk-rs/gtk-rs-core/issues/1912">#1912</a>
- Silence “redundant closure” clippy warning in
closure!/closure_...</li>
<li><a
href="a764a0fe5b"><code>a764a0f</code></a>
gio: Mark <code>Socket::from_raw_socket()</code> as unsafe</li>
<li><a
href="aa0dee233f"><code>aa0dee2</code></a>
Update versions to 0.22.1</li>
<li><a
href="a65fe5c356"><code>a65fe5c</code></a>
gio: Remove non-existing UNIX functions from Gir.toml</li>
<li><a
href="aa8a69805a"><code>aa8a698</code></a>
gio: Re-add accidentally removed UNIX APIs that are still part of gio
itself</li>
<li>See full diff in <a
href="https://github.com/gtk-rs/gtk-rs-core/compare/0.22.0...0.22.2">compare
view</a></li>
</ul>
</details>
<br />
Updates `gstreamer` from 0.25.0 to 0.25.1
Updates `glib-macros` from 0.22.0 to 0.22.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/gtk-rs/gtk-rs-core/releases">glib-macros's
releases</a>.</em></p>
<blockquote>
<h2>0.22.2</h2>
<pre><code>Julian Sparber:
glib: Implement From<PtrSlice<GStringPtr> for StrV
glib: Implement From<StrV> for PtrSlice<GStringPtr>
<p>Sebastian Dröge:<br />
gio: Mark <code>Socket::from_raw_socket()</code> as unsafe</p>
<p>Wladimir Palant:<br />
glib-macros: Silence “redundant closure” clippy warning in
closure!/closure_local!<br />
</code></pre></p>
<h2>0.22.1</h2>
<pre><code>Sebastian Dröge:
gio: Re-add accidentally removed UNIX APIs that are still part of gio
itself
gio: Remove non-existing UNIX functions from Gir.toml
</code></pre>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="484fbe01e7"><code>484fbe0</code></a>
Update Cargo.lock</li>
<li><a
href="77ce5c64ea"><code>77ce5c6</code></a>
Update versions to 0.22.2</li>
<li><a
href="a5a6b9f659"><code>a5a6b9f</code></a>
glib: Implement From<StrV> for PtrSlice<GStringPtr></li>
<li><a
href="1870acb44c"><code>1870acb</code></a>
glib: Implement From<PtrSlice<!-- raw HTML omitted --> for StrV</li>
<li><a
href="dd77db24ee"><code>dd77db2</code></a>
Fixes <a
href="https://redirect.github.com/gtk-rs/gtk-rs-core/issues/1912">#1912</a>
- Silence “redundant closure” clippy warning in
closure!/closure_...</li>
<li><a
href="a764a0fe5b"><code>a764a0f</code></a>
gio: Mark <code>Socket::from_raw_socket()</code> as unsafe</li>
<li><a
href="aa0dee233f"><code>aa0dee2</code></a>
Update versions to 0.22.1</li>
<li><a
href="a65fe5c356"><code>a65fe5c</code></a>
gio: Remove non-existing UNIX functions from Gir.toml</li>
<li><a
href="aa8a69805a"><code>aa8a698</code></a>
gio: Re-add accidentally removed UNIX APIs that are still part of gio
itself</li>
<li>See full diff in <a
href="https://github.com/gtk-rs/gtk-rs-core/compare/0.22.0...0.22.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 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>
Bumps [piper](https://github.com/smol-rs/piper) from 0.2.4 to 0.2.5.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/smol-rs/piper/releases">piper's
releases</a>.</em></p>
<blockquote>
<h2>v0.2.5</h2>
<ul>
<li>Add functions to allow for buffered reading and writing. (<a
href="https://redirect.github.com/smol-rs/piper/issues/27">#27</a>)</li>
<li>Fix a bug where closing the <code>Writer</code> after writing can
cause the <code>Reader</code> to
lose bytes. (<a
href="https://redirect.github.com/smol-rs/piper/issues/31">#31</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/smol-rs/piper/blob/main/CHANGELOG.md">piper's
changelog</a>.</em></p>
<blockquote>
<h1>Version 0.2.5</h1>
<ul>
<li>Add functions to allow for buffered reading and writing. (<a
href="https://redirect.github.com/smol-rs/piper/issues/27">#27</a>)</li>
<li>Fix a bug where closing the <code>Writer</code> after writing can
cause the <code>Reader</code> to
lose bytes. (<a
href="https://redirect.github.com/smol-rs/piper/issues/31">#31</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="85da45edce"><code>85da45e</code></a>
v0.2.5</li>
<li><a
href="6dd31ba3b5"><code>6dd31ba</code></a>
Add a test to verify that closing the write side doesn't break the
reader side.</li>
<li><a
href="f07220867f"><code>f072208</code></a>
Switch ordering of <code>closed</code> load to use <code>Acquire</code>
instead of <code>Relaxed</code>.</li>
<li><a
href="a7614f259a"><code>a7614f2</code></a>
Fix ordering of available data check.</li>
<li><a
href="aa05148ed9"><code>aa05148</code></a>
Update criterion requirement from 0.7 to 0.8 (<a
href="https://redirect.github.com/smol-rs/piper/issues/29">#29</a>)</li>
<li><a
href="3d62a59c24"><code>3d62a59</code></a>
feat: Implement AsyncBufRead and related methods on Reader and Writer
for dir...</li>
<li><a
href="6581c84a7b"><code>6581c84</code></a>
Update criterion requirement from 0.6 to 0.7 (<a
href="https://redirect.github.com/smol-rs/piper/issues/28">#28</a>)</li>
<li><a
href="e198ca3e47"><code>e198ca3</code></a>
Update criterion requirement from 0.4 to 0.6 (<a
href="https://redirect.github.com/smol-rs/piper/issues/25">#25</a>)</li>
<li><a
href="db2dcb8366"><code>db2dcb8</code></a>
Fix crates.io description for v0.2 reduced scope (<a
href="https://redirect.github.com/smol-rs/piper/issues/26">#26</a>)</li>
<li><a
href="30dd8ecd9c"><code>30dd8ec</code></a>
Fix typo (<a
href="https://redirect.github.com/smol-rs/piper/issues/21">#21</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/smol-rs/piper/compare/v0.2.4...v0.2.5">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 libredox from 0.1.12 to 0.1.14.
[](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 [pin-project-lite](https://github.com/taiki-e/pin-project-lite)
from 0.2.16 to 0.2.17.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/taiki-e/pin-project-lite/releases">pin-project-lite's
releases</a>.</em></p>
<blockquote>
<h2>0.2.17</h2>
<ul>
<li>Enable <a
href="https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/immutable-releases">release
immutability</a>.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/taiki-e/pin-project-lite/blob/main/CHANGELOG.md">pin-project-lite's
changelog</a>.</em></p>
<blockquote>
<h2>[0.2.17] - 2026-02-27</h2>
<ul>
<li>Enable <a
href="https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/immutable-releases">release
immutability</a>.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="3bdf763446"><code>3bdf763</code></a>
Release 0.2.17</li>
<li><a
href="17437026e9"><code>1743702</code></a>
Update changelog</li>
<li><a
href="be3eb1a180"><code>be3eb1a</code></a>
Add comment about rust-version field to Cargo.toml</li>
<li><a
href="2b5f66d9bc"><code>2b5f66d</code></a>
Update allowed lint list</li>
<li><a
href="c7495a0d46"><code>c7495a0</code></a>
tools: Update tidy.sh</li>
<li><a
href="aa30a9fba2"><code>aa30a9f</code></a>
Apply clippy to doctest</li>
<li><a
href="0944bb974c"><code>0944bb9</code></a>
Update .deny.toml</li>
<li><a
href="401bd71ac2"><code>401bd71</code></a>
rustfmt: Set hex_literal_case = "Upper"</li>
<li><a
href="28c4feccd5"><code>28c4fec</code></a>
test: Update lint test</li>
<li><a
href="67a04498e4"><code>67a0449</code></a>
tests: Update ui test output to nightly-2025-12-04</li>
<li>Additional commits viewable in <a
href="https://github.com/taiki-e/pin-project-lite/compare/v0.2.16...v0.2.17">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>
Found this while analysing module preload test failures. In particular a
subtest of `modulepreload.html` was recently
[updated](https://github.com/web-platform-tests/wpt/pull/57243) to catch
this.
We need to ensure that SRI hash follows the base64 grammar specified by
CSP.
Testing: Updated test expectations of a test
---------
Signed-off-by: Gae24 <96017547+Gae24@users.noreply.github.com>
This is a preparation for publishing to crates.io. Changes include:
- Add `servo-` prefixes to avoid name collisions on crates.io
- Use `-` instead of `_` in package names.
- Rename the crates to their original names in Cargo.toml,
to keep the diff minimal
- Rename `media` to `servo-media-thread` to avoid name collision with
`servo-media` (originally from the media repository).
This is an outcome of the previous discussion at [#general > Switch
remaining git dependencies to
crates.io](https://servo.zulipchat.com/#narrow/channel/263398-general/topic/Switch.20remaining.20git.20dependencies.20to.20crates.2Eio/with/576336288)
Testing: This should be mostly covered by our CI, but some amount of
breakage is to be expected, since some package names could still be
referenced from scripts which are not tested or run in CI. [mach try
run](https://github.com/jschwe/servo/actions/runs/22502945949)
---------
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
There's some hanged scenarios with mitmproxy:
https://github.com/servo/servo/actions/runs/22539387007/job/65292396178
1. We rename `build` to `build-openharmony`.
2. We add
- 60 minutes timeout for each Build profile
- 40 minutes for bencher (Normally finish under 10 mins)
- 20 mins for scenario tests. (Normally finish under 4 mins)
---------
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
The specification of WebCrypto and Modern Algorithms in WebCrypto has
updated to reorder reading algorithm and data arguments in "encrypt",
"decrypt", "sign", "verify", "digest", "importKey", "unwrapKey",
"decapsulateKey" and "decapsulateBits" methods. This patch updates our
implementation accordingly.
The relevant commits in specification repositories:
- WebCrypto:
5b57233c0a
- Modern Algorithms in WebCrypto:
ae72ee6cf4
Testing: Pass new WPT tests added in
https://github.com/web-platform-tests/wpt/pull/57614 and
https://github.com/servo/servo/pull/42925
Signed-off-by: Kingsley Yung <kingsley@kkoyung.dev>
The change in 2d3a7c87c2 dropped the camelCase formatting of
is_main_process. As a result the about:memory page claims that all
processes are content processes.
Testing: run `./mach run -M` and open `about:memory` . The first process
listed will be "Main process" with this change.
Signed-off-by: webbeef <me@webbeef.org>
Add `./mach print-env` to export the environment variables mach sets to
stdout and `./mach exec` to execute an arbitrary command in the custom
environment. This allows users to easily run custom commands, or tools
in the same environment as mach would create without adding support
every tool. Note: `./mach print-env` is only targeting UNIX shells for
now, although probably one could detect the shell and e.g. also support
PowerShell (in theory).
In principle, simple commands like `./mach cargo-fix` could be removed
and instead used via `./mach exec cargo fix`.
The execution of commands via `./mach exec my_command` (e.g. running
custom tools like cargo-flamegraph) still has some limitations, since
arguments that the user might have meant to pass to the command, might
be eaten by `./mach` (if mach expects that parameter, e.g. `--target
<triple>`. It's recommended to delimit explicitly by adding `--`., e.g.
`./mach exec --ohos -- cargo build --target aarch64-unknown-linux-ohos`.
Without the `--` delimiter, `./mach would interpret `--target` instead
of passing it to `cargo build`.
Testing: Manual testing of `./mach print-env --ohos`.
Fixes: #25473#38223
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
WPT creates `epochs/daily` either at 2 or 3AM. This means that if a fix
land on day 1, then WPT is tagged earlier than the nightly release, so
it can take 24-48 hours before a change is reflected on wpt.fyi
If instead we create the nightly release in time before epoch, we can
see those results within 24 hours.
Testing: GitHub workflow change
---------
Signed-off-by: Tim van der Lippe <TimvdLippe@users.noreply.github.com>
We don't use the CLOBBER file anywhere. The CLOBBER was introduced in
d03e52d240, but without any commit
message. Judging by the CLOBBER file in that commit, this was related to
the CI machines at the time. Should be safe to remove.
Testing: Well, this probably should be reviewed by someone who is
familiar with the background. Not covered by any tests.
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
In the WebCrypto modern algorithm specification, the issue
(https://github.com/WICG/webcrypto-modern-algos/issues/47) on algorithm
name referencing in the export key operation of ML-KEM had been resolved
by the following commit in the specification repository:
705f8ec6ce
Our implementation actually matches the new specification. We simply
update the specification text, with some minor refactoring accordingly.
Testing: Refactoring. Existing tests suffice.
Signed-off-by: Kingsley Yung <kingsley@kkoyung.dev>
As said in
https://github.com/servo/servo/issues/42803#issuecomment-3957052680,
there's been a weird discrepancy between running wdspec tests in:
1. local / Linux WPT workflow
2. WebDriver Try
For 2, it triggers FAIL/ERROR that never happen in 1. It is not
intermittent, but always happens.
This PR makes 2 have same behaviour as running locally: default number
of processes (CPU count. For self-hosted runner workflow, this is
double. Hyperthreading?), single chunk.
This improves the running time by 2 mins as well.
Testing: The test results now work same as Linux WPT and local.
https://github.com/servo/servo/actions/runs/22385441028/job/64795317878#step:11:552Fixes: #39097Fixes: #42803
---------
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
The warning occurs when compiling the script bindings unit-tests `./mach
test-unit -p script_bindings --lib`.
Presumably in some contexts the inner macro is already imported, which
triggers the warning.
Directly using `crate::` avoids this.
The fixed warning:
```
warning: unused import: `$crate::match_domstring_ascii_inner`
--> components/script_bindings/domstring.rs:1050:17
|
1050 | use $crate::match_domstring_ascii_inner;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...
1352 | let _res = match_domstring_ascii!(s,
| ____________________-
1353 | | "❤" => true,
1354 | | _ => false,);
| |________________________- in this macro invocation
|
= note: this warning originates in the macro `match_domstring_ascii` (in Nightly builds, run with -Z macro-backtrace for more info)
```
Testing: Manually tested the warning is fixed by running `./mach
test-unit -p script_bindings --lib`.
---------
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
This is exposes the `tabIndex` property for `HTMLOrSVGElement` according
to the HTML specification. This is the first step toward implementation
of tab navigation in Servo.
Testing: This causes many WPT subtests to start passing, but causes a
few to
start failing. This is likely because we do not have a full
implementation of
the `delegatesFocus` parameter of `attachShadow` yet.
Fixes: This is part of #25001 and #32169.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Oriol Brufau <obrufau@igalia.com>
`NormalizedAlgorithm::encrypt`, `NormalizedAlgorithm::decrypt` and other
similar functions have some catch-all `match` arms that are unreachable.
They are unreachable because we rely on the name attribute in `String`
of the subtle dictionaries and the `NormalizedAlgorithm` enum to
determine which cryptographic algorithm to use, while the algorithm
normalization mechanism guarantees that some combinations of name and
enum variants won't exist.
This patch tries to get rid of those unreachable `match` arms to make
our WebCrypto code more idiomatic so that the Rust compiler can help us
ensure the correctness in the future.
To achieve this, we break the enum `NormalizedAlgorithm` into multiple
enums: `EncryptAlgorithm`, `DecryptAlgorithm`, `SignAlgorithm`, etc.
Each one is associated to a cryptographic operation, and its variants
are the cryptographic algorithms that support the associated operation.
The inner type of each variant is the desired parameter dictionary.
Therefore, when the call `EncryptAlgorithm::encrypt`,
`DecryptAlgorithm::decrypt` and other similar functions, we can have
`match` statements that cover all patterns since those enums only
contains necessary variants.
To make this change, we also need to change the algorithm registration
mechanism. Instead of using the `SupportedAlgorithm` enum and its method
`SupportedAlgorithm::support` to register the operations of the
algorithms, the algorithm registration is now done in the function
`from_object_value` of a new trait named `NormalizedAlgorithm`, which
the new enums `EncryptAlgorithm`, `DecryptAlgorithm` and so implement.
(Note that the existing enum named `NormalizedAlgorithm` is removed.)
Some refactoring in also done in the `normalize_algorithm` function to
adapt the above changes.
This new design of algorithm registration is also closer to the
WebCrypto specification, as explained in the comment block below the
`normalize_algorithm` function.
The crate `strum` is also used to reduce some boilerplate code.
Testing: Refactoring. Existing tests suffice.
Fixes: Part of #42579
---------
Signed-off-by: Kingsley Yung <kingsley@kkoyung.dev>
Instead of unwrapping in `GStreamerMediaStream::encoded`, properly
propagate errors to callers. This prevents panics when we fail to
build GStreamer pipelines in this code path. This is probably the first
of many changes to avoid `unwrap()`ing in this code.
Testing: This change adds a WPT crash test.
Fixes: #36844.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Before we were creating a new frame actor each time we paused, even if
the frame object in debugger.js was the same. Now we avoid this by
reusing the same frame actor id.
This helps our upcoming work on onStep, onPop, and onEnterFrame hooks.
Testing: Ran `mach test-devtools` and manually check that it works
Part of: #36027
Signed-off-by: eri <eri@igalia.com>
Co-authored-by: atbrakhi <atbrakhi@igalia.com>
This fixes a crash on the attached testcase when running with the async
html parser enabled. The crash also triggers on wpt. When executing
parse ops received from the async parser, we were not considering the
case where one of these operations causes the parser to abort (in the
case above, said operation is the `<popup-info></popup-info>`).
```html
<body>
<script>
class PopupInfo extends HTMLElement {
connectedCallback() {
document.open();
}
}
customElements.define('popup-info', PopupInfo);
</script>
<popup-info></popup-info>
</body>
```
The bug is very obscure and only triggers if `document.open` is called
while there is no parser-blocking script **and** the document parser is
still active.
Testing: We don't run tests on the async parser yet
Fixes: Part of https://github.com/servo/servo/issues/37418
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
This PR fixes two related issues with Content Security Policy (CSP)
nonce validation for external scripts:
1. Missing nonce validation for external scripts with malformed
attributes
2. Incorrect violation event reporting for blocked external resources
This makes servo closer to passing the `nonce-enforce-blocked` wpt test.
The remaining failures are blocked by required changes in the html
parser.
1. Svg script support (https://github.com/servo/html5ever/issues/118)
```html
<svg xmlns="http://www.w3.org/2000/svg">
<script attribute attribute nonce="abc">
t.unreached_func("Duplicate attribute in SVG, no execution.")();
</script>
</svg>
```
2. Duplicate attrs check
the html parser needs to provide this flag, as mentioned on the original
commit message
(4821bc0ab0)
```html
<script attribute attribute nonce="abc">
t.unreached_func("Duplicate attribute, no execution.")();
</script>
<script attribute attribute=<style nonce="abc">
t.unreached_func("2# Duplicate attribute, no execution.")();
</script>
[...]
<script src="../support/nonce-should-be-blocked.js?5" attribute attribute nonce="abc"></script>
```
I've also created a PR to implement the duplicate attrs flag on
html5ever https://github.com/servo/html5ever/pull/695
Testing: doesn't fixes the aforementioned wpt test yet.
Fixes: part of #36437
---------
Signed-off-by: Dyego Aurélio <dyegoaurelio@gmail.com>
Since `evaluate_js_on_global` called `enter_realm` and there were
already some callee that did it, I've actually passed `&mut
CurrentRealm`.
Also converted `Window::WebdriverException` to pass `&mut JSContext`
inside `javascript_error_info_from_error_info`.
Testing: A successful build is enough
Part of #40600
---------
Signed-off-by: Gae24 <96017547+Gae24@users.noreply.github.com>
> This was overlooked earlier in #41169
Simulate a mouse click before loading the page so that it should trigger
input events before populating any LCP entries for this `webview`.
- When mouse click event is received before/while loading, it should not
report LCP for webview.
When Page is reloaded, LCp should be reinstated for webview.
- Verify the Successful reporting of LCP entry after the reload.
Testing: `tests/largest_contentful_paint.rs`
Fixes: #42759
Signed-off-by: Shubham Gupta <shubham.gupta@chromium.org>
As per spec, mouse movement should not be treated as user interaction,
so LCP will be reported after those events. This was overlooked in
#41999. This change calls
`show_webview_and_wait_for_rendering_to_be_ready` before evaluating a
script to determine whether or not any LCP entries were fired.
Testing: This should reduce flakiness
in`test_largest_contentful_paint_js_api_with_mouse_move`.
Fixes: #42801
Signed-off-by: Shubham Gupta <shubham.gupta@chromium.org>
In order to know whether a block box can collapse its bottom margin with
the bottom margin of its last child, we need to check its tentative
block size. Most usually, this will be the block size of the containing
block that is used when laying out the children.
However, anonymous blocks do not establish a containing block. So using
the containing block for children meant that we were using the tentative
block size of its parent. If that parent had a definite size, this would
prevent the anonymous block from collapsing bottom margins with its
children. This situation could happen when placing a block-level inside
of an inline box.
This patch fixes the problem by using an indefinite tentative block size
for anonymous blocks, instead of the containing block for children.
Testing: Adding new test
Fixes: #42469
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
devtools: Make `why` attribute use `PauseReasons`
Currently we have why attribute hardcoded as per the event. In this PR
we introduce `PAUSE_REASON` and make sure `why` attribute is using
`PAUSE_REASONS`.
This is in order to support the upcoming work on `onStep`, `onPop`, and
`onEnterFrame` hook.
Testing: all existing tests are passing
Fixes: Part of #36027
Signed-off-by: atbrakhi <atbrakhi@igalia.com>
Co-authored-by: eri <eri@igalia.com>
This patch removes `js_*` preferences that are not currently wired up to
the SM engine. The `js_mem_gc_allocation_threshold_factor` was being
used previously but got that usage was commented out in #28092, so the
dead code is removed.
The `dom_worklet_blockingsleep` preference is also renamed to
`dom_worklet_blockingsleep_enabled` to match the declared name in
`PaintWorkletGlobalScope.idl` which also matches the naming convention
of the other the boolean preferences.
Finally, the `network_mime_sniff` is also unused and remmoved in this
patch.
Testing: Should be covered by existing tests.
Fixes: #42868
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
Bumps [dispatch2](https://github.com/madsmtm/objc2) from 0.3.0 to 0.3.1.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="8852b42419"><code>8852b42</code></a>
Bump objc2 0.6.3 -> 0.6.4</li>
<li><a
href="2d39cba1f9"><code>2d39cba</code></a>
Cherry-pick ae1c875 for objc2 v0.6.4</li>
<li><a
href="2ace80ba71"><code>2ace80b</code></a>
Cherry-pick relevant parts of 9bd26ee for objc2 v0.6.4</li>
<li><a
href="67808515c2"><code>6780851</code></a>
Bump dispatch2 0.3.0 -> 0.3.1</li>
<li><a
href="ad963172ff"><code>ad96317</code></a>
Cherry-pick e429f0a for dispatch2 v0.3.1</li>
<li><a
href="ee273d9d14"><code>ee273d9</code></a>
Cherry-pick a4821be for dispatch2 v0.3.1</li>
<li><a
href="b4167b582b"><code>b4167b5</code></a>
Fix documentation on docs.rs</li>
<li><a
href="f5df468edf"><code>f5df468</code></a>
Bump objc2 0.6.1 -> 0.6.2</li>
<li><a
href="1942c3e3ff"><code>1942c3e</code></a>
Allow unpredictable_function_pointer_comparisons</li>
<li><a
href="f6eb40db08"><code>f6eb40d</code></a>
Relax signed encoding checks for register-sized integers</li>
<li>Additional commits viewable in <a
href="https://github.com/madsmtm/objc2/compare/dispatch2-0.3.0...dispatch2-0.3.1">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 cleans up some of the informational print statement during
`build_env()` to go to stderr instead.
This opens up stdout usage to print information to stdout for
consumption (in a follow-up PR)
Testing: Covered by `./mach build --ohos` in CI.
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
Bumps the objc2-related group with 1 update:
[objc2](https://github.com/madsmtm/objc2).
Updates `objc2` from 0.6.3 to 0.6.4
<details>
<summary>Commits</summary>
<ul>
<li><a
href="8852b42419"><code>8852b42</code></a>
Bump objc2 0.6.3 -> 0.6.4</li>
<li><a
href="2d39cba1f9"><code>2d39cba</code></a>
Cherry-pick ae1c875 for objc2 v0.6.4</li>
<li><a
href="2ace80ba71"><code>2ace80b</code></a>
Cherry-pick relevant parts of 9bd26ee for objc2 v0.6.4</li>
<li><a
href="67808515c2"><code>6780851</code></a>
Bump dispatch2 0.3.0 -> 0.3.1</li>
<li><a
href="ad963172ff"><code>ad96317</code></a>
Cherry-pick e429f0a for dispatch2 v0.3.1</li>
<li><a
href="ee273d9d14"><code>ee273d9</code></a>
Cherry-pick a4821be for dispatch2 v0.3.1</li>
<li>See full diff in <a
href="https://github.com/madsmtm/objc2/compare/objc2-0.6.3...objc2-0.6.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 <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>
The current implementation treats an SVG element that needs a new
serialized tree as non-replaced content, so we attempt to lay out all of
the children. If serialization is successful, subsequent layouts treat
the SVG as replaced content and ignore the children, but the children's
layout data is never cleaned up. This means that layout queries against
those children can return stale data, which can lead to unexpected
results. By always treating SVG elements as replaced content, we remove
this footgun and improve consistency.
Testing: New crashtest added. It doesn't make sense to upstream this
because our SVG implementation is very nonstandard.
Fixes: #42291Fixes: #40900
---------
Signed-off-by: Josh Matthews <josh@joshmatthews.net>
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
Co-authored-by: Oriol Brufau <obrufau@igalia.com>
This fixes an oversight from #42783: when detecting that a box can be
reused, we weren't clearing the box damage propagated to ancestors, so
ancestors were still recollecting children.
This exposed some problems in
`rebuild_box_tree_from_independent_formatting_context()`:
1. When reusing a block-level box that established an independent
formatting context, we weren't checking that the new style was still
block-level.
2. When reusing a block-level abspos box, we weren't checking if the new
original display was inline-level, preventing it from being handled as a
block-level because of the static position.
3. When reusing a flex item, we weren't checking if the `order` had
changed.
Testing: we have test coverage for the 3 problems above:
1. Covered by
`/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-display.html`,
and also adding a new `/css/css-display/display-flow-root-dynamic.html`.
2. Covered by `/css/CSS2/abspos/hypothetical-box-dynamic.html`
3. Covered by `/css/css-display/order-dynamic.html`.
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
Co-authored-by: Luke Warlow <lwarlow@igalia.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
The static position of an abspos is the hypothetical position that it
would have had in the normal flow. If the abspos is inside inline layout
and it had a block-level original display, then the static position is
computed as if the abspos was a block-level that breaks the inline.
Usually this places the static position after the current line. However,
if the abspos is not preceded by any text, padding, border, margin,
preserved newline or atomic inline, then the static position should be
as if the abspos was preceded by a 0px tall phantom line. Previously we
weren't taking that into account.
Note that browsers aren't completely interoperable in corner cases.
Testing: Adding 3 new tests. Blink fails the 2nd one and Gecko fails the
3rd one. WebKit and Servo pass them all.
Fixes: #41990
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
This change adds more debugging output when failing to create an OpenGL
context upon starting Servo. In particular, the debugging output tries
to create a very old OpenGL context (version 1.0) in order to print the
context version created -- to more easily identify situations where the
driver is too old.
Testing: This just prints debugging information. It would be difficult
to
test this as we would need to mock OpenGL context creation failure and
test simply running `prinltln!`.
Fixes: #42824.
Fixes: #39987.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
When creating a HTML tokenizer then we check the
`dom_servoparser_async_html_tokenizer_enabled` preference and create a
sync or async tokenizer accordingly. We don't do that in `document.open`
though, this change fixes that.
Part of https://github.com/servo/servo/issues/37418
Testing: We don't run tests for the async tokenizer yet
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
Add Image related Info into `ImageInfo`.
This will help in processing some other attributes like URL which are
needed for `PaintTiming`.
Testing: This is just a little refactor. No change in behavior expected.
Successful compilation is enough to verify.
Signed-off-by: Shubham Gupta <shubham.gupta@chromium.org>
Moves the `Drop` implementation for `GPUDevice` into a private
`DroppableGPUDevice` struct.
Also updates `Bindings.conf` to prevent the generation of `Drop`
implementations for `GPUDevice`.
Testing: WebGpu tests just cover the cases
Fixes: Partially #26488
Signed-off-by: Domenico Rizzo <domenico.rizzo@gmail.com>
When fragment tree layout is going to run for a node that starts an
independent formatting context, but only because an ancestor was
damaged, preserve the fragment cache. This means that in the optimistic
case we do not need to re-run fragment tree layout for this independent
formatting context. Previously this was only done for the children of
the independent formatting context, but the fragment cache is robust
enough to detect any layout changes necessary for the IFC fragment
itself as well. This helps to avoid so much fragment reconstruction
during incremental layout.
Testing: `basic-fragment-tree-layout.html` is updated reflecting the
decrease
in the number of fragments rebuilt.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Luke Warlow <lwarlow@igalia.com>
Co-authored-by: Oriol Brufau <obrufau@igalia.com>
This reverts commit 1f42551042.
This change led to a decrease in Speedometer performance and needs to be
reworked to avoid that.
Testing: This is just a revert.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
`OutsideMarker` was storing the `BlockFormattingContext` and the
`LayoutBoxBase` in separate fields. Now it will store an entire
`IndependentFormattingContext` in a single field.
In particular, this fixes the issue that `OutsideMarker::repair_style()`
wasn't calling `BlockFormattingContext::repair_style()`. Now we can just
rely on `IndependentFormattingContext::repair_style()`, which correctly
repairs the style of both the `BlockFormattingContext` and the
`LayoutBoxBase`.
Also, the `BlockLevelBox::repair_style()` was repairing the style of the
`LayoutBoxBase` twice, for all kinds of block-level boxes. This removes
the duplication.
Testing: Adding a new test
Fixes: #42779
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
We need a map between frame actor ids (from devtools) and frame objects
(from debugger.js) to implement stepping hooks in the future.
To achieve this, we register the frame actor with a call to the devtools
before entering the event loop when the debugger is paused. Instead of
creating the frame actor in `handle_debugger_pause`, we create it
before.
Testing: It passes existing devtools tests
Part of: #36027
Signed-off-by: eri <eri@igalia.com>
Co-authored-by: atbrakhi <atbrakhi@igalia.com>
This changes does three things:
- Updates all specification links to reflect version 3 of the
specification
- Renames the `IDBDatabase::close` member to
`IDBDatabase::close_pending` to better match the specification
- Adds a `OpenRequest::processed` member, again to better match the
specification
Testing: This should not change behavior, so is covered by existing
IndexedDB WPT tests.
Fixes: Part of #40983
---------
Signed-off-by: Taym Haddadi <haddadi.taym@gmail.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
Remove embedder defined `ScrollEvent` and merge the payload of it to the
`SetScrollStates` message which tell the `ScriptThread` to update the
scroll state.
In the past, `ScrollEvent` is defined as a embedder's `InputEvent` and
being used only to forward the external scroll node id for a node that
is considered scrolled. This make us sends an additional message to
constellation and additionally, `ScrollEvent` went through lengthy
pipelines as it was deemed as an embedder input event, albeit being a
synthetic input fired by `WebviewRenderer`.
Subsequently, we could introduce a flag to detect whether the scrolling
is still ongoing or not (like whether it is still flinging) for
`scrollend` event.
Testing: No WPT changes
---------
Signed-off-by: Jo Steven Novaryo <steven.novaryo@gmail.com>
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
Makes standardized to `CanvasInfo`
Testing: This is just a little refactor. No change in behavior expected.
Successful compilation is enough to verify.
Signed-off-by: Shubham Gupta <shubham.gupta@chromium.org>
Removes kinda redundant spin loop, because it is being already evaluated
in `common::evaluate_javascript`
Testing: `components/servo/tests/user_content_manager.rs`
Signed-off-by: Shubham Gupta <shubham.gupta@chromium.org>
Bumps [rgb](https://github.com/kornelski/rust-rgb) from 0.8.52 to
0.8.53.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="f453adedbb"><code>f453ade</code></a>
Bump</li>
<li><a
href="6ce01b6d40"><code>6ce01b6</code></a>
Fixes tests for unstable-experimental feature flag</li>
<li><a
href="1ee08f0fc9"><code>1ee08f0</code></a>
Deprecate as_slice</li>
<li><a
href="ee7c6e2862"><code>ee7c6e2</code></a>
Fixed docs.rs</li>
<li><a
href="c07c23212c"><code>c07c232</code></a>
Future-proof as_slice() in tests</li>
<li><a
href="8ee2544019"><code>8ee2544</code></a>
Moved tests</li>
<li>See full diff in <a
href="https://github.com/kornelski/rust-rgb/compare/v0.8.52...v0.8.53">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 the accesskit-related group with 1 update:
[accesskit_winit](https://github.com/AccessKit/accesskit).
Updates `accesskit_winit` from 0.32.0 to 0.32.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/AccessKit/accesskit/releases">accesskit_winit's
releases</a>.</em></p>
<blockquote>
<h2>accesskit_winit: v0.32.1</h2>
<h2><a
href="https://github.com/AccessKit/accesskit/compare/accesskit_winit-v0.32.0...accesskit_winit-v0.32.1">0.32.1</a>
(2026-02-25)</h2>
<h3>Dependencies</h3>
<ul>
<li>The following workspace dependencies were updated
<ul>
<li>dependencies
<ul>
<li>accesskit_android bumped from 0.7.0 to 0.7.1</li>
</ul>
</li>
</ul>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="da70097f57"><code>da70097</code></a>
chore: release main (<a
href="https://redirect.github.com/AccessKit/accesskit/issues/688">#688</a>)</li>
<li><a
href="8392850941"><code>8392850</code></a>
fix: Don't report selected state when toggled on Android (<a
href="https://redirect.github.com/AccessKit/accesskit/issues/689">#689</a>)</li>
<li><a
href="6146089404"><code>6146089</code></a>
fix: Populate range info on Android (<a
href="https://redirect.github.com/AccessKit/accesskit/issues/686">#686</a>)</li>
<li><a
href="67590283b0"><code>6759028</code></a>
fix: Update bytes dependency to fix RUSTSEC-2026-0007 (<a
href="https://redirect.github.com/AccessKit/accesskit/issues/687">#687</a>)</li>
<li>See full diff in <a
href="https://github.com/AccessKit/accesskit/compare/accesskit_winit-v0.32.0...accesskit_winit-v0.32.1">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 <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>
Now `ServoTestUtils.forceLayout()` will provide the number of fragments
that have been restyled and rebuilt. This will be useful to test that
incremental layout works well.
Testing: Adds a test using this new API
---------
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Luke Warlow <lwarlow@igalia.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
Align with the spec and implement part of its lazy loading
steps. Most tests use non-srcdoc lazy loading URLs, so most
tests will not pass until the other parts are implemented
as well.
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
The span needs to be assigned to a variable, so that it drops at the end
of scope.
This was introduced in #42715.
Additionally also switch tho the profile_traits macro to simplify the
statement.
Testing: Manually verified the warning is fixed.
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
`OutsideMarker::repair_style()` was setting `list_item_style` to the
style of the marker, not the style of the list item.
This patch sets it to `node.parent_style(context)` instead, and it fixes
`ServoThreadSafeLayoutNode::parent_style()` to take the pseudo-element
chain into account. This requires modifying a bunch of logic to pass the
`SharedStyleContext` around.
Testing: Adding a new test
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
Currently, `script` and `devtools` use a node's unique id to identify it
across requests. The unique ID is part of a node's rare data field and
is really only meant for debugging. Instantiating it on a node causes
it's memory usage to go up significantly. Now, when the devtools ask for
information about a specific `Node` then they send the unique ID to
`script`, and the script thread then walks the whole DOM tree searching
for that specific ID. This happens here:
6d0b651218/components/script/devtools.rs (L142-L153)
So, in the worst case, all of the nodes in the tree now have a unique
ID. That's not great!
Also, when `script` notifies `devtools` about changes to a DOM node then
`devtools` expects a `NodeActor` to exist for that Node. The actor might
not exist if the inspector doesn't know about that node yet - that
happens when the user hasn't expanded their parent yet.
That is an oversight from https://github.com/servo/servo/pull/42601 and
causes problems now(https://github.com/servo/servo/issues/42784) because
for the longest time, `devtools` was mostly the one sending requests. Of
course, we could make `devtools` simply ignore updates for nodes that it
doesn't know about, but ideally we shouldn't send these updates in the
first place.
This change implements a lookup map on the `ScriptThread` that contains
all nodes that have been sent to the devtools inspector. The map allows
us to efficiently resolve a unique ID to a `Node` in O(1), without
creating unique IDs for the whole tree. It also allows us to only send
DOM updates for nodes that the inspector cares about.
For now, entries from the cache are not evicted unless the relevant
pipeline is closed. That reflects reality, because the inspector also
keeps using them forever.
In the future we will tell the inspector when nodes are removed from the
tree - then it can't interact with them anymore, and we can remove them
from the script-side map.
This is change is not all that complicated but it involves moving a lot
of code around, so feel free to ask for clarification when something is
unclear!
Testing: This change adds a test
Fixes part of https://github.com/servo/servo/issues/42784
---------
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
on NixOS, under X11 at least, many libservo tests panic:
```
$ ./mach test-unit -p libservo test_create_webview
[...]
thread 'test_create_webview' (3589026) panicked at /home/delan/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/wayland-sys-0.31.8/src/client.rs:110:103:
Library libwayland-client.so could not be loaded.
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
```
this patch fixes that by adding `wayland` to the LD_LIBRARY_PATH in
shell.nix.
Testing: tested manually as above
Signed-off-by: delan azabani <dazabani@igalia.com>
When processing `elementFromPoint` on a `Document` or a `ShadowRoot`,
better handle the situation where the result of the hit test is the root
element, fixing a crash.
Testing: This fixes a crash in the WPT tests.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Oriol Brufau <obrufau@igalia.com>
Co-authored-by: Luke Warlow <lwarlow@igalia.com>
Previously, when a float box had rebuild damage from its own (not from
ancestors), we weren't reusing it. Now we will reuse them just like we
do for other independent formatting context roots.
Testing: Not needed, just an optimization, there should be no behavior
change
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
Co-authored-by: Luke Warlow <lwarlow@igalia.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
This is part of replacing can_gc with the new &JSContext/&mut JSContext
method.
We modify CheckValidity and ReportValidity in various HTML Elements to
use the context instead of CanGc.
Testing: Compilation is the test as this is mostly mechanical.
---------
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
As started in https://github.com/servo/servo/issues/42168 let's report
memory pressure for webgl objects. CanvasContexts report memory twice:
once because of underlying texture object and once by themself, but
that's okay as we also need to account for swapchain textures.
Computing exact size would be to much work and code so we report rough
estimations.
Testing: None
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
As mentioned in #40600 we will need this to properly handle &mut
JSContext (we cannot pass it to drop) and I think this wrappers are
preferred ways of doing this in rust as it is safe to forget (not call
drop) which is unsound in this case (due to realm stack at least).
Revieable per commits.
Testing: Just a refactor, but should be covered by WPT
---------
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
We have a partial implementation of LargestContentfulPaint , so we
should run the tests associated with them.
Testing: New tests enabled.
---------
Signed-off-by: Shubham Gupta <shubham.gupta@chromium.org>
I only wanted to get `&mut JSContext` in microtask chunk and checkpoint,
but this in turn needed `&mut JSContext` in servoparser, which then
caused need for even more changes in script.
I tried to limit the size by putting some `temp_cx` in:
- drops of `LoadBlocker`, `GenericAutoEntryScript`
- methods of `VirtualMethods`
- methods of `FetchResponseListener`
Testing: Just refactor, but should be covered by WPT tests.
Part of #40600
---------
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
Bumps [rustls](https://github.com/rustls/rustls) from 0.23.36 to
0.23.37.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="4b455b8199"><code>4b455b8</code></a>
Bump version of rustls</li>
<li><a
href="245963b151"><code>245963b</code></a>
Add ML-KEM-1024 key encapsulation mechanism</li>
<li><a
href="e1886fd05a"><code>e1886fd</code></a>
Take semver-compatible updates</li>
<li><a
href="86ad94b64b"><code>86ad94b</code></a>
Refresh verify-bench certificates</li>
<li><a
href="4df9216e57"><code>4df9216</code></a>
Do not "warm up" aws-lc-rs RNG in other benchmarks</li>
<li><a
href="ff6f7985aa"><code>ff6f798</code></a>
ci-bench: "pre-warm" per-thread entropy source</li>
<li><a
href="3c1841c732"><code>3c1841c</code></a>
chore(deps): update actions/cache action to v5</li>
<li><a
href="1735677c85"><code>1735677</code></a>
chore(deps): update actions/upload-artifact action to v6</li>
<li><a
href="c91fce039a"><code>c91fce0</code></a>
chore(deps): update taiki-e/cache-cargo-install-action action to v3</li>
<li><a
href="c3a6a11a61"><code>c3a6a11</code></a>
upgrade to zlib-rs 0.6.0</li>
<li>Additional commits viewable in <a
href="https://github.com/rustls/rustls/compare/v/0.23.36...v/0.23.37">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 [bumpalo](https://github.com/fitzgen/bumpalo) from 3.20.1 to
3.20.2.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/fitzgen/bumpalo/blob/main/CHANGELOG.md">bumpalo's
changelog</a>.</em></p>
<blockquote>
<h2>3.20.2</h2>
<p>Released 2026-02-19.</p>
<h3>Fixed</h3>
<ul>
<li>Restored <code>Send</code> and <code>Sync</code> implementations for
<code>Box<T></code> for <code>T: ?Sized</code> types
as well.</li>
</ul>
<hr />
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="1aad072f93"><code>1aad072</code></a>
Bump to version 3.20.2 (<a
href="https://redirect.github.com/fitzgen/bumpalo/issues/312">#312</a>)</li>
<li><a
href="2fb1d6ae40"><code>2fb1d6a</code></a>
Add more tests for send and sync behavior, support unsized types (<a
href="https://redirect.github.com/fitzgen/bumpalo/issues/311">#311</a>)</li>
<li>See full diff in <a
href="https://github.com/fitzgen/bumpalo/compare/v3.20.1...v3.20.2">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot 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
[security-framework](https://github.com/kornelski/rust-security-framework)
from 3.6.0 to 3.7.0.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="5f6e65114b"><code>5f6e651</code></a>
Bump</li>
<li><a
href="0b6b4ecff6"><code>0b6b4ec</code></a>
Key attributes</li>
<li><a
href="73cf464542"><code>73cf464</code></a>
Mark deprecated</li>
<li><a
href="91e22a9c73"><code>91e22a9</code></a>
Deprecate trait</li>
<li><a
href="1aab2fc212"><code>1aab2fc</code></a>
Cache more</li>
<li><a
href="61d8c9d02d"><code>61d8c9d</code></a>
Cache registry</li>
<li><a
href="229dfd46dd"><code>229dfd4</code></a>
Re-enable tests</li>
<li><a
href="6829c2ecc7"><code>6829c2e</code></a>
Regenerate test certs</li>
<li><a
href="758d045b6a"><code>758d045</code></a>
Rename tests</li>
<li><a
href="31d29f8d8e"><code>31d29f8</code></a>
Allow string-like alpn</li>
<li>Additional commits viewable in <a
href="https://github.com/kornelski/rust-security-framework/compare/v3.6.0...v3.7.0">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot 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 [regex-syntax](https://github.com/rust-lang/regex) from 0.8.9 to
0.8.10.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="839d16bc65"><code>839d16b</code></a>
regex-syntax-0.8.10</li>
<li><a
href="c4865a0c84"><code>c4865a0</code></a>
syntax: fix negation handling in HIR translation</li>
<li><a
href="d8761c00ed"><code>d8761c0</code></a>
cargo: also include <code>benches</code></li>
<li><a
href="2aaa18dfae"><code>2aaa18d</code></a>
rure-0.2.5</li>
<li><a
href="b028e4f40e"><code>b028e4f</code></a>
1.12.3</li>
<li><a
href="5e195de266"><code>5e195de</code></a>
regex-automata-0.4.14</li>
<li>See full diff in <a
href="https://github.com/rust-lang/regex/compare/regex-syntax-0.8.9...regex-syntax-0.8.10">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 should prevent recurring issues with exported WPT changes being
prevented from merging due to failing linting checks upstream.
Testing: Can't test WPT linting integration at this point in time.
Fixes: #40662
Signed-off-by: Josh Matthews <josh@joshmatthews.net>
This change makes it so that selection changes driven by user input
events also fire the `select` event and not just selection changes from
script. In addition the change eliminate the `SelectionState` data
structure instead opting to store the `SelectionDirection` in the
`SharedSelection`. That way there is a centralized place that selection
changes are handled.
Testing: This change adds a Servo-specific WPT test. This is
Servo-specific as
it relies on engine-specific text selection behavior.
Fixes: #41308.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Move `UserContentManager` tests to a separate file as `tests/webview.rs`
is getting too cluttered.
Testing: Existing Tests Passed
Signed-off-by: Shubham Gupta <shubham.gupta@chromium.org>
This patch changes the method of `Crypto` interface to use the new `&mut
JSContext`.
The method `crypto.subtle` calls `SubtleCrypto::new` to create an
instance of `SubtleCrypto` and the new `&mut JSContext` is passed to
`SubtleCrypto::new`. Therefore, the new `reflect_dom_object_with_cx`
method is also used in `SubtleCrypto::new`.
Testing: Refactoring. Existing tests suffice.
Fixes: Part of #42638
Signed-off-by: Kingsley Yung <kingsley@kkoyung.dev>
Previously, the resolution loop would break immediately after running
`resolve_imports_match` against the first module specifier map of the
import map's scopes, regardless of whether a match was actually found.
Testing: All sub-tests of `resolving.html` now pass
Part of #37553
---------
Signed-off-by: Gae24 <96017547+Gae24@users.noreply.github.com>
Previously, when a formatting context root had rebuild damage from its
own (not from ancestors), we weren't reusing it. Now we check if the
level of the box (i.e. whether it's inline-level, block-level, a table
cell, a table caption, or absolutely positioned) that will be generated
by the new style is compatible with the old box. And if so, we reuse it.
Testing: Not needed, there should be no behavior change
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
Co-authored-by: Luke Warlow <lwarlow@igalia.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
Previous we had multiple calls to
`servo_config::opts::get().multiprocess ||
servo_config::opts::get().force_ipc` scattered
throughout the code base for GenericChannel etc. This replaces it with a
simple function and a LazyLock to get more consistency.
Testing: Compilation is the test.
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
This eliminates some code duplication.
Testing: This change is just moving code and should not change
functionality, so should be covered by existing tests.
Signed-off-by: Shubham Gupta <shubham.gupta@chromium.org>
The variable names and comments around the code refer to the main thread
as the "tokenizer" and the parser thread as the "html tokenizer". This
confuses me every time I look at the code, because both tokenize html
and neither can do it without the other.
I've renamed things to be a bit more clear, mostly referring to things
as the "main thread" and the "parser thread".
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
In preparation of introducing traits for some of these methods,
let's separate them from the basecommand trait. They are not
related to each other and it was making reasoning about where
lives what more difficult.
Part of #25005
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
Simplified the TestPage using DataURL for Image
This makes sure we load the page completely before evaluating LCP.
Testing: `tests/largest_contentful_paint.rs`
Fixes: #42758
Signed-off-by: Shubham Gupta <shubham.gupta@chromium.org>
Following the convention of other major UAs of gating the virtual
keyboard by certain user activation, adding a flags to let the embedder
knows about the user activation. This would be used to determine whether
the virtual keyboard needs to be shown or not in android and ohos.
Testing: Manual testing.
---------
Signed-off-by: Jo Steven Novaryo <steven.novaryo@gmail.com>
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
These were introduced in #39159, #39644 to close intermittent issues.
They are no longer reproducible.
This will prevent potential regression.
Testing: ~I~ Harness ran them for a whole night locally.
---------
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
Bumps [chrono](https://github.com/chronotope/chrono) from 0.4.43 to
0.4.44.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/chronotope/chrono/releases">chrono's
releases</a>.</em></p>
<blockquote>
<h2>0.4.44</h2>
<h2>What's Changed</h2>
<ul>
<li>docs: match MSRV with <code>Cargo.toml</code> contents by <a
href="https://github.com/coryan"><code>@coryan</code></a> in <a
href="https://redirect.github.com/chronotope/chrono/pull/1772">chronotope/chrono#1772</a></li>
<li>Add track_caller to non-deprecated functions by <a
href="https://github.com/svix-jplatte"><code>@svix-jplatte</code></a>
in <a
href="https://redirect.github.com/chronotope/chrono/pull/1774">chronotope/chrono#1774</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="c14b4599d0"><code>c14b459</code></a>
Bump version to 0.4.44</li>
<li><a
href="ea832c5090"><code>ea832c5</code></a>
Add track_caller to non-deprecated functions</li>
<li><a
href="cfae889a3a"><code>cfae889</code></a>
Fix panic message in to_rfc2822</li>
<li><a
href="f8900b5a44"><code>f8900b5</code></a>
docs: match MSRV with <code>Cargo.toml</code> contents</li>
<li>See full diff in <a
href="https://github.com/chronotope/chrono/compare/v0.4.43...v0.4.44">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 [clap](https://github.com/clap-rs/clap) from 4.5.59 to 4.5.60.
<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.60</h2>
<h2>[4.5.60] - 2026-02-19</h2>
<h3>Fixes</h3>
<ul>
<li><em>(help)</em> Quote empty default values, possible values</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.60] - 2026-02-19</h2>
<h3>Fixes</h3>
<ul>
<li><em>(help)</em> Quote empty default values, possible values</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="33d24d844b"><code>33d24d8</code></a>
chore: Release</li>
<li><a
href="9332409f4a"><code>9332409</code></a>
docs: Update changelog</li>
<li><a
href="b7adce5a17"><code>b7adce5</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/6166">#6166</a>
from fabalchemy/fix-dynamic-powershell-completion</li>
<li><a
href="009bba44ec"><code>009bba4</code></a>
fix(clap_complete): Improve powershell registration</li>
<li><a
href="d89d57dfb4"><code>d89d57d</code></a>
chore: Release</li>
<li><a
href="f18b67ec3d"><code>f18b67e</code></a>
docs: Update changelog</li>
<li><a
href="9d218eb418"><code>9d218eb</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/6165">#6165</a>
from epage/shirt</li>
<li><a
href="126440ca84"><code>126440c</code></a>
fix(help): Correctly calculate padding for short-only args</li>
<li><a
href="9e3c05ef38"><code>9e3c05e</code></a>
test(help): Show panic with short, valueless arg</li>
<li><a
href="c9898d0fec"><code>c9898d0</code></a>
test(help): Verify short with value</li>
<li>Additional commits viewable in <a
href="https://github.com/clap-rs/clap/compare/clap_complete-v4.5.59...clap_complete-v4.5.60">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
[security-framework-sys](https://github.com/kornelski/rust-security-framework)
from 2.16.0 to 2.17.0.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/kornelski/rust-security-framework/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>
Bumps [deranged](https://github.com/jhpratt/deranged) from 0.5.6 to
0.5.8.
<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 />
[](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 [ohos-abilitykit-sys](https://github.com/openharmony-rs/ohos-sys)
from 0.1.4 to 0.1.5.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/openharmony-rs/ohos-sys/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>
Bumps [syn](https://github.com/dtolnay/syn) from 2.0.116 to 2.0.117.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dtolnay/syn/releases">syn's
releases</a>.</em></p>
<blockquote>
<h2>2.0.117</h2>
<ul>
<li>Fix parsing of <code>self::</code> pattern in first function
argument (<a
href="https://redirect.github.com/dtolnay/syn/issues/1970">#1970</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="7bcb37cdb3"><code>7bcb37c</code></a>
Release 2.0.117</li>
<li><a
href="9c6e7d3b8d"><code>9c6e7d3</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/syn/issues/1970">#1970</a>
from dtolnay/receiver</li>
<li><a
href="019a84847e"><code>019a848</code></a>
Fix self:: pattern in first function argument</li>
<li><a
href="23f54f3cf6"><code>23f54f3</code></a>
Update test suite to nightly-2026-02-18</li>
<li><a
href="b99b9a627c"><code>b99b9a6</code></a>
Unpin CI miri toolchain</li>
<li>See full diff in <a
href="https://github.com/dtolnay/syn/compare/2.0.116...2.0.117">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 the zbus-related group with 1 update:
[zbus](https://github.com/z-galaxy/zbus).
Updates `zbus` from 5.13.2 to 5.14.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/z-galaxy/zbus/releases">zbus's
releases</a>.</em></p>
<blockquote>
<h2>zbus-5.14.0</h2>
<h3>Added</h3>
<ul>
<li>✨ Add helper for IBus connection creation. <a
href="https://redirect.github.com/z-galaxy/zbus/issues/964">#964</a></li>
<li>🚸 Add Display trait to D-Bus name request reply types.</li>
</ul>
<h3>Changed</h3>
<ul>
<li>🔧 Extend process module run() to all Unix platforms.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>🐛 Do not use SendFlags::NOSIGNAL on Redox.</li>
</ul>
<h3>Other</h3>
<ul>
<li>📦️ Add async-recursion for Unix targets.</li>
<li>🚨 silence unused import on windows.</li>
<li>🚨 silence unused warning on windows test.</li>
</ul>
<h2>zbus_macros-5.14.0</h2>
<ul>
<li>New release to go with zbus 5.14.0</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="02f48c4948"><code>02f48c4</code></a>
Merge pull request <a
href="https://redirect.github.com/z-galaxy/zbus/issues/1725">#1725</a>
from zeenix/releasing</li>
<li><a
href="3467d53f6f"><code>3467d53</code></a>
🔖 zbus_xmlgen: Release 5.3.0</li>
<li><a
href="b59017cbe0"><code>b59017c</code></a>
🔖 zb,zm: Release 5.14.0</li>
<li><a
href="7287f27b6d"><code>7287f27</code></a>
🔖 zv,zd: Release 5.10.0</li>
<li><a
href="bd81484eb4"><code>bd81484</code></a>
🤖 release-plz: <code>🚸</code> commits treated as additions</li>
<li><a
href="f0ae963458"><code>f0ae963</code></a>
⬆️ micro: Update quick-xml to v0.39.2 (<a
href="https://redirect.github.com/z-galaxy/zbus/issues/1724">#1724</a>)</li>
<li><a
href="3e73afb306"><code>3e73afb</code></a>
⬆️ micro: Update syn to v2.0.117 (<a
href="https://redirect.github.com/z-galaxy/zbus/issues/1723">#1723</a>)</li>
<li><a
href="734d258ed4"><code>734d258</code></a>
Merge pull request <a
href="https://redirect.github.com/z-galaxy/zbus/issues/1721">#1721</a>
from jackpot51/redox</li>
<li><a
href="9e276dd016"><code>9e276dd</code></a>
⬆️ micro: Update clap to v4.5.60 (<a
href="https://redirect.github.com/z-galaxy/zbus/issues/1722">#1722</a>)</li>
<li><a
href="91e2ae7894"><code>91e2ae7</code></a>
🐛 Do not use SendFlags::NOSIGNAL on Redox</li>
<li>Additional commits viewable in <a
href="https://github.com/z-galaxy/zbus/compare/zbus-5.13.2...zbus-5.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 <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>
Unless the feature `preserve_order` is enabled, serde_json will sort the
map's entries in an alphanumerical order.
The specification instead expect the entries to be visited by the order
they are listed, a latter entry should replace a previous one when they
are resolved to the same url.
I've also removed a couple of `CanGc` introduced in #37405, unless I've
missed something there is not code that can trigger a GC.
Testing: A subtest now pass
Part of #37553
---------
Signed-off-by: Gae24 <96017547+Gae24@users.noreply.github.com>
`TableSlotCell` was storing the `BlockFormattingContext` and the
`LayoutBoxBase` in separate fields. Now it will store an entire
`IndependentFormattingContext` in a single field.
In particular, this fixes the issue that `TableSlotCell::repair_style()`
wasn't calling `BlockFormattingContext::repair_style()`. Now we can just
rely on the correct `IndependentFormattingContext::repair_style()`.
Testing: Adding a new test
Fixes: #42777
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
This changes the GenericSharedMemory which was previous an alias for
IpcSharedMemory to a custom type. Similar to GenericChannel
it distinguishes between Inprocess mode and Ipc mode. For Inprocess mode
we use an Arc<Vec<u8>>.
This technically reduces the utility of GenericSharedMemory because we
are not implementing DerefMut.
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
Testing: We have new simple tests for GenericSharedMemory and WPT
(https://github.com/Narfinger/servo/actions/runs/21253723622) should
cover the general usage.
---------
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
As a last resort, as the system font API to find a suitable fallback
font on macOS. This allows macOS to use the fonts that are found in the
`/System/Library/Fonts/Supplemental` directory, which normally aren't
available. This is currently used as a last resort because these fonts
cannot currently be shared between font groups. A future change will try
to make this possible and prefer this API to the old system font lists.
For now, this allows text to render in exchange for a bit more memory
usage.
This fixes the rendering of Adlam and many other scripts on macOS.
Testing: WPT tests are not currently run for macOS, but I've verified
that this
improves rendering of Adlam and, in general, in the `alluni.txt`
testcase.
Fixes: #38403. This is part of #41426.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
These two types of boxes should also be able to isolate damage during
propagation and serve as roots for box tree reconstruction, as their
contents are independent of their containing box.
Testing: This should not change testable behavior so is covered by
existing WPT tests.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Oriol Brufau <obrufau@igalia.com>
Co-authored-by: Luke Warlow <lwarlow@igalia.com>
That respects the user locale better than hardcoding en-US. This can
also be manually set with the `LANG` environment variable.
Testing: Manual testing with the devtools to check the header sent and
the value of `navigator.language`
Signed-off-by: webbeef <me@webbeef.org>
We previously clonsed the CSP list unnecessarily which consisted of
roughly 2.7%. 1.2% spend in Document::get_csp_list.
We can easily avoid it with Ref and cloning it deliberately when needed.
Testing: This is functionally identical to the previous code as it is a
change from clone to a Ref<>.
---------
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
Remove the placeholder way of getting a debuggee in `eval` and finds the
correct one in the map. Another way of doing this would be to have two
maps, `debuggeesToPipelineIds` and `pipelineIdsToDebuggees`, I'm open to
both approaches. I think this might be fine since the reverse operation
is only used here, but if it becomes a performance issue we can change
it.
Testing: Ran mach test-devtools
Part of: #36027
cc @atbrakhi
Signed-off-by: eri <eri@igalia.com>
`align-self: last baseline` should be treated as `safe end` in absolute
position box. Given the `baseline` require a group of box, and in the
context of absolute position box, there always would be only one box, we
can follow the [spec of baseline fallback
spec](https://drafts.csswg.org/css-align-3/#ref-for-fallback-alignment),
make `last baseline` fallback to `end`.
Testing: More WPT test is passing.
Fixes: N/A
---------
Signed-off-by: rayguo17 <rayguo17@gmail.com>
The pause debugger screen should be shown for both pausing manually
(interrupt) and hitting a breakpoint.
Reuse the logic for pausing breakpoints to pause the debugger when the
user manually clicks the pause button.
Rename the pause event to interrupt to match the language of the
DevTools client and to avoid confusion with paused frames, which can
happen on interrupt or on a breakpoint.
https://github.com/user-attachments/assets/ceb0007d-0e57-44d6-a159-55980ff8b517
Testing: New DevTools test and manual testing.
Part of: #36027
cc @atbrakhi
---------
Signed-off-by: eri <eri@igalia.com>
Co-authored-by: atbrakhi <atbrakhi@igalia.com>
The workflow is now used both for regular releases and nightly releases.
Testing: Not tested, it's a simple rename and nothing should rely on the
name `nightly.yml` (grep search)
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
I like `servo` runner, or better known as its previous name
`servodriver` to some people.
However, it is getting quite often that I use `legacy`, or better known
as its previous name `servo`.
This is because `servo (previously servodriver)` harness shutdown very
slowly due to its shutdown command
https://github.com/servo/servo/pull/40455
- This PR improves the shutdown command in the way as titled.
- Avoids accidental Prockill that may happen after regular shutdown.
This may be related to @jschwe's report that coverage for WPT still
reports empty more often than it should.
Previously, shutdown is like:
```
0:15.06 INFO Trying to shut down gracefully by extension command
0:18.13 DEBUG Servo has shut down normally. HTTPConnectionPool(host='127.0.0.1', port=8378): Max retries exceeded with url: /status (Caused by NewConnectionError("HTTPConnection(host='127.0.0.1', port=8378): Failed to establish a new connection: [WinError 10061] No connection could be made because the target machine actively refused it"))
0:18.13 DEBUG Stopping WebDriver
0:20.19 DEBUG Servo has shut down normally. HTTPConnectionPool(host='127.0.0.1', port=8378): Max retries exceeded with url: /status (Caused by NewConnectionError("HTTPConnection(host='127.0.0.1', port=8378): Failed to establish a new connection: [WinError 10061] No connection could be made because the target machine actively refused it"))
0:22.24 DEBUG Servo has shut down normally. HTTPConnectionPool(host='127.0.0.1', port=8378): Max retries exceeded with url: /status (Caused by NewConnectionError("HTTPConnection(host='127.0.0.1', port=8378): Failed to establish a new connection: [WinError 10061] No connection could be made because the target machine actively refused it"))
0:14.99 DEBUG Hanging up on WebDriver session
```
Now:
```
INFO Trying to shut down gracefully by extension command
0:18.41 DEBUG Servo has shut down normally. HTTPConnectionPool(host='127.0.0.1', port=9098): Max retries exceeded with url: /status (Caused by NewConnectionError("HTTPConnection(host='127.0.0.1', port=9098): Failed to establish a new connection: [WinError 10061] No connection could be made because the target machine actively refused it"))
0:18.41 DEBUG TestRunnerManager cleanup
0:15.30 DEBUG Hanging up on WebDriver session
```
Testing: Locally, this reduce shutdown time from about 5 sec to 1 sec,
counting from "Trying to shut down gracefully by extension command".
[Try](https://github.com/servo/servo/actions/runs/22295662553/job/64492009162).
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
Bumps the gstreamer-related group with 29 updates:
| Package | From | To |
| --- | --- | --- |
| [glib](https://github.com/gtk-rs/gtk-rs-core) | `0.21.5` | `0.22.0` |
| [glib-sys](https://github.com/gtk-rs/gtk-rs-core) | `0.21.5` |
`0.22.0` |
| gstreamer | `0.24.4` | `0.25.0` |
| gstreamer-app | `0.24.4` | `0.25.0` |
| gstreamer-audio | `0.24.4` | `0.25.0` |
| gstreamer-base | `0.24.4` | `0.25.0` |
| gstreamer-gl | `0.24.4` | `0.25.0` |
| gstreamer-gl-egl | `0.24.4` | `0.25.0` |
| gstreamer-gl-sys | `0.24.4` | `0.25.0` |
| gstreamer-gl-wayland | `0.24.4` | `0.25.0` |
| gstreamer-gl-x11 | `0.24.4` | `0.25.0` |
| gstreamer-play | `0.24.4` | `0.25.0` |
| gstreamer-sdp | `0.24.4` | `0.25.0` |
| gstreamer-sys | `0.24.4` | `0.25.0` |
| gstreamer-video | `0.24.4` | `0.25.0` |
| gstreamer-webrtc | `0.24.4` | `0.25.0` |
| [gio-sys](https://github.com/gtk-rs/gtk-rs-core) | `0.21.5` | `0.22.0`
|
| [glib-macros](https://github.com/gtk-rs/gtk-rs-core) | `0.21.5` |
`0.22.0` |
| [gobject-sys](https://github.com/gtk-rs/gtk-rs-core) | `0.21.5` |
`0.22.0` |
| gstreamer-app-sys | `0.24.4` | `0.25.0` |
| gstreamer-audio-sys | `0.24.4` | `0.25.0` |
| gstreamer-base-sys | `0.24.4` | `0.25.0` |
| gstreamer-gl-egl-sys | `0.24.4` | `0.25.0` |
| gstreamer-gl-wayland-sys | `0.24.4` | `0.25.0` |
| gstreamer-gl-x11-sys | `0.24.4` | `0.25.0` |
| gstreamer-play-sys | `0.24.4` | `0.25.0` |
| gstreamer-sdp-sys | `0.24.4` | `0.25.0` |
| gstreamer-video-sys | `0.24.4` | `0.25.0` |
| gstreamer-webrtc-sys | `0.24.4` | `0.25.0` |
Updates `glib` from 0.21.5 to 0.22.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/gtk-rs/gtk-rs-core/releases">glib's
releases</a>.</em></p>
<blockquote>
<h2>0.22.0</h2>
<pre><code>Bernhard M. Wiedemann:
glib-macros: Use BTreeMap instead of HashMap
<p>Biagio Festa:<br />
glib-macros/async_test: unwrap result when setting default context<br />
glib-macros/async_test: dont move main context within closure<br />
glib/bytes: relax start offset constraint for
<code>from_bytes</code></p>
<p>Bilal Elmoussaoui:<br />
ci: Switch from gsvbuild to MSVC<br />
Generate bindings for win32/unix GLib/Gio<br />
Build new crates on CI<br />
gio/unix: Remove the manual fallback for MountEntry<br />
glib: Lower host dep requirement<br />
glib/unix: Add missing futures feature<br />
gio/unix: Ignore a clippy lint<br />
gio: Comment out a test & drop UnixFdMessage<br />
gio/tests: Remove no longer useful headers<br />
gio: Move various config options to gio-unix<br />
glib: Remove no longer needed manual ffi functions<br />
glib/sys: Don't generate UnixPipe<br />
Regenerate with fixed GIR files<br />
glib/source: Fix imports on Win32<br />
glib/win32: Add missing imports<br />
gio/win32: Manually implement streams<br />
gio/win32: Add a type for GNetworkMonitorBase and drop duplicated manual
ones<br />
gio/win32: Add missing dep<br />
deny: Drop no longer needed skips<br />
Add missing licenses<br />
Adapt to rust nightly docs changes<br />
gio: Move test to gio-unix<br />
gdk-pixbuf: Ignore another clippy lint<br />
Fix docs for new crates<br />
Force update windows-sys for new crates<br />
win32: Always depend on windows-sys<br />
win32: Guard std::os::windows usage<br />
gio/win32: Add missing feature<br />
Re-export preludes<br />
glib: Use 'static lifetime for nick/name<br />
Use 'a lifetime instead<br />
glib: Mark push_thread_default as renamed</p>
<p>Casey Jao:<br />
Clarify the GObject subclass mechanism<br />
Add missing comment markers<br />
Update glib/src/subclass/mod.rs<br />
Clarify Rust-C analogy for external interface<br />
Improve diagram<br />
</tr></table><br />
</code></pre></p>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="5b440606f1"><code>5b44060</code></a>
Update versions to 0.22.0</li>
<li><a
href="838d4400c0"><code>838d440</code></a>
Update dependencies</li>
<li><a
href="0cac69d45e"><code>0cac69d</code></a>
Regenerate with latest gir</li>
<li><a
href="7f631810e2"><code>7f63181</code></a>
Update gir</li>
<li><a
href="f52ab6bdda"><code>f52ab6b</code></a>
glib: Mark push_thread_default as renamed</li>
<li><a
href="e93a49c354"><code>e93a49c</code></a>
build(deps): bump futures-task from 0.3.31 to 0.3.32</li>
<li><a
href="f2d29d9f92"><code>f2d29d9</code></a>
build(deps): bump futures-channel from 0.3.31 to 0.3.32</li>
<li><a
href="46dda5ff4b"><code>46dda5f</code></a>
build(deps): bump libc from 0.2.180 to 0.2.182</li>
<li><a
href="dcc35f7144"><code>dcc35f7</code></a>
build(deps): bump tempfile from 3.24.0 to 3.25.0</li>
<li><a
href="f86b993073"><code>f86b993</code></a>
build(deps): bump futures-core from 0.3.31 to 0.3.32</li>
<li>Additional commits viewable in <a
href="https://github.com/gtk-rs/gtk-rs-core/compare/0.21.5...0.22.0">compare
view</a></li>
</ul>
</details>
<br />
Updates `glib-sys` from 0.21.5 to 0.22.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/gtk-rs/gtk-rs-core/releases">glib-sys's
releases</a>.</em></p>
<blockquote>
<h2>0.22.0</h2>
<pre><code>Bernhard M. Wiedemann:
glib-macros: Use BTreeMap instead of HashMap
<p>Biagio Festa:<br />
glib-macros/async_test: unwrap result when setting default context<br />
glib-macros/async_test: dont move main context within closure<br />
glib/bytes: relax start offset constraint for
<code>from_bytes</code></p>
<p>Bilal Elmoussaoui:<br />
ci: Switch from gsvbuild to MSVC<br />
Generate bindings for win32/unix GLib/Gio<br />
Build new crates on CI<br />
gio/unix: Remove the manual fallback for MountEntry<br />
glib: Lower host dep requirement<br />
glib/unix: Add missing futures feature<br />
gio/unix: Ignore a clippy lint<br />
gio: Comment out a test & drop UnixFdMessage<br />
gio/tests: Remove no longer useful headers<br />
gio: Move various config options to gio-unix<br />
glib: Remove no longer needed manual ffi functions<br />
glib/sys: Don't generate UnixPipe<br />
Regenerate with fixed GIR files<br />
glib/source: Fix imports on Win32<br />
glib/win32: Add missing imports<br />
gio/win32: Manually implement streams<br />
gio/win32: Add a type for GNetworkMonitorBase and drop duplicated manual
ones<br />
gio/win32: Add missing dep<br />
deny: Drop no longer needed skips<br />
Add missing licenses<br />
Adapt to rust nightly docs changes<br />
gio: Move test to gio-unix<br />
gdk-pixbuf: Ignore another clippy lint<br />
Fix docs for new crates<br />
Force update windows-sys for new crates<br />
win32: Always depend on windows-sys<br />
win32: Guard std::os::windows usage<br />
gio/win32: Add missing feature<br />
Re-export preludes<br />
glib: Use 'static lifetime for nick/name<br />
Use 'a lifetime instead<br />
glib: Mark push_thread_default as renamed</p>
<p>Casey Jao:<br />
Clarify the GObject subclass mechanism<br />
Add missing comment markers<br />
Update glib/src/subclass/mod.rs<br />
Clarify Rust-C analogy for external interface<br />
Improve diagram<br />
</tr></table><br />
</code></pre></p>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="5b440606f1"><code>5b44060</code></a>
Update versions to 0.22.0</li>
<li><a
href="838d4400c0"><code>838d440</code></a>
Update dependencies</li>
<li><a
href="0cac69d45e"><code>0cac69d</code></a>
Regenerate with latest gir</li>
<li><a
href="7f631810e2"><code>7f63181</code></a>
Update gir</li>
<li><a
href="f52ab6bdda"><code>f52ab6b</code></a>
glib: Mark push_thread_default as renamed</li>
<li><a
href="e93a49c354"><code>e93a49c</code></a>
build(deps): bump futures-task from 0.3.31 to 0.3.32</li>
<li><a
href="f2d29d9f92"><code>f2d29d9</code></a>
build(deps): bump futures-channel from 0.3.31 to 0.3.32</li>
<li><a
href="46dda5ff4b"><code>46dda5f</code></a>
build(deps): bump libc from 0.2.180 to 0.2.182</li>
<li><a
href="dcc35f7144"><code>dcc35f7</code></a>
build(deps): bump tempfile from 3.24.0 to 3.25.0</li>
<li><a
href="f86b993073"><code>f86b993</code></a>
build(deps): bump futures-core from 0.3.31 to 0.3.32</li>
<li>Additional commits viewable in <a
href="https://github.com/gtk-rs/gtk-rs-core/compare/0.21.5...0.22.0">compare
view</a></li>
</ul>
</details>
<br />
Updates `gstreamer` from 0.24.4 to 0.25.0
Updates `gstreamer-app` from 0.24.4 to 0.25.0
Updates `gstreamer-audio` from 0.24.4 to 0.25.0
Updates `gstreamer-base` from 0.24.4 to 0.25.0
Updates `gstreamer-gl` from 0.24.4 to 0.25.0
Updates `gstreamer-gl-egl` from 0.24.4 to 0.25.0
Updates `gstreamer-gl-sys` from 0.24.4 to 0.25.0
Updates `gstreamer-gl-wayland` from 0.24.4 to 0.25.0
Updates `gstreamer-gl-x11` from 0.24.4 to 0.25.0
Updates `gstreamer-play` from 0.24.4 to 0.25.0
Updates `gstreamer-sdp` from 0.24.4 to 0.25.0
Updates `gstreamer-sys` from 0.24.4 to 0.25.0
Updates `gstreamer-video` from 0.24.4 to 0.25.0
Updates `gstreamer-webrtc` from 0.24.4 to 0.25.0
Updates `gio-sys` from 0.21.5 to 0.22.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/gtk-rs/gtk-rs-core/releases">gio-sys's
releases</a>.</em></p>
<blockquote>
<h2>0.22.0</h2>
<pre><code>Bernhard M. Wiedemann:
glib-macros: Use BTreeMap instead of HashMap
<p>Biagio Festa:<br />
glib-macros/async_test: unwrap result when setting default context<br />
glib-macros/async_test: dont move main context within closure<br />
glib/bytes: relax start offset constraint for
<code>from_bytes</code></p>
<p>Bilal Elmoussaoui:<br />
ci: Switch from gsvbuild to MSVC<br />
Generate bindings for win32/unix GLib/Gio<br />
Build new crates on CI<br />
gio/unix: Remove the manual fallback for MountEntry<br />
glib: Lower host dep requirement<br />
glib/unix: Add missing futures feature<br />
gio/unix: Ignore a clippy lint<br />
gio: Comment out a test & drop UnixFdMessage<br />
gio/tests: Remove no longer useful headers<br />
gio: Move various config options to gio-unix<br />
glib: Remove no longer needed manual ffi functions<br />
glib/sys: Don't generate UnixPipe<br />
Regenerate with fixed GIR files<br />
glib/source: Fix imports on Win32<br />
glib/win32: Add missing imports<br />
gio/win32: Manually implement streams<br />
gio/win32: Add a type for GNetworkMonitorBase and drop duplicated manual
ones<br />
gio/win32: Add missing dep<br />
deny: Drop no longer needed skips<br />
Add missing licenses<br />
Adapt to rust nightly docs changes<br />
gio: Move test to gio-unix<br />
gdk-pixbuf: Ignore another clippy lint<br />
Fix docs for new crates<br />
Force update windows-sys for new crates<br />
win32: Always depend on windows-sys<br />
win32: Guard std::os::windows usage<br />
gio/win32: Add missing feature<br />
Re-export preludes<br />
glib: Use 'static lifetime for nick/name<br />
Use 'a lifetime instead<br />
glib: Mark push_thread_default as renamed</p>
<p>Casey Jao:<br />
Clarify the GObject subclass mechanism<br />
Add missing comment markers<br />
Update glib/src/subclass/mod.rs<br />
Clarify Rust-C analogy for external interface<br />
Improve diagram<br />
</tr></table><br />
</code></pre></p>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="5b440606f1"><code>5b44060</code></a>
Update versions to 0.22.0</li>
<li><a
href="838d4400c0"><code>838d440</code></a>
Update dependencies</li>
<li><a
href="0cac69d45e"><code>0cac69d</code></a>
Regenerate with latest gir</li>
<li><a
href="7f631810e2"><code>7f63181</code></a>
Update gir</li>
<li><a
href="f52ab6bdda"><code>f52ab6b</code></a>
glib: Mark push_thread_default as renamed</li>
<li><a
href="e93a49c354"><code>e93a49c</code></a>
build(deps): bump futures-task from 0.3.31 to 0.3.32</li>
<li><a
href="f2d29d9f92"><code>f2d29d9</code></a>
build(deps): bump futures-channel from 0.3.31 to 0.3.32</li>
<li><a
href="46dda5ff4b"><code>46dda5f</code></a>
build(deps): bump libc from 0.2.180 to 0.2.182</li>
<li><a
href="dcc35f7144"><code>dcc35f7</code></a>
build(deps): bump tempfile from 3.24.0 to 3.25.0</li>
<li><a
href="f86b993073"><code>f86b993</code></a>
build(deps): bump futures-core from 0.3.31 to 0.3.32</li>
<li>Additional commits viewable in <a
href="https://github.com/gtk-rs/gtk-rs-core/compare/0.21.5...0.22.0">compare
view</a></li>
</ul>
</details>
<br />
Updates `glib-macros` from 0.21.5 to 0.22.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/gtk-rs/gtk-rs-core/releases">glib-macros's
releases</a>.</em></p>
<blockquote>
<h2>0.22.0</h2>
<pre><code>Bernhard M. Wiedemann:
glib-macros: Use BTreeMap instead of HashMap
<p>Biagio Festa:<br />
glib-macros/async_test: unwrap result when setting default context<br />
glib-macros/async_test: dont move main context within closure<br />
glib/bytes: relax start offset constraint for
<code>from_bytes</code></p>
<p>Bilal Elmoussaoui:<br />
ci: Switch from gsvbuild to MSVC<br />
Generate bindings for win32/unix GLib/Gio<br />
Build new crates on CI<br />
gio/unix: Remove the manual fallback for MountEntry<br />
glib: Lower host dep requirement<br />
glib/unix: Add missing futures feature<br />
gio/unix: Ignore a clippy lint<br />
gio: Comment out a test & drop UnixFdMessage<br />
gio/tests: Remove no longer useful headers<br />
gio: Move various config options to gio-unix<br />
glib: Remove no longer needed manual ffi functions<br />
glib/sys: Don't generate UnixPipe<br />
Regenerate with fixed GIR files<br />
glib/source: Fix imports on Win32<br />
glib/win32: Add missing imports<br />
gio/win32: Manually implement streams<br />
gio/win32: Add a type for GNetworkMonitorBase and drop duplicated manual
ones<br />
gio/win32: Add missing dep<br />
deny: Drop no longer needed skips<br />
Add missing licenses<br />
Adapt to rust nightly docs changes<br />
gio: Move test to gio-unix<br />
gdk-pixbuf: Ignore another clippy lint<br />
Fix docs for new crates<br />
Force update windows-sys for new crates<br />
win32: Always depend on windows-sys<br />
win32: Guard std::os::windows usage<br />
gio/win32: Add missing feature<br />
Re-export preludes<br />
glib: Use 'static lifetime for nick/name<br />
Use 'a lifetime instead<br />
glib: Mark push_thread_default as renamed</p>
<p>Casey Jao:<br />
Clarify the GObject subclass mechanism<br />
Add missing comment markers<br />
Update glib/src/subclass/mod.rs<br />
Clarify Rust-C analogy for external interface<br />
Improve diagram<br />
</tr></table><br />
</code></pre></p>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="5b440606f1"><code>5b44060</code></a>
Update versions to 0.22.0</li>
<li><a
href="838d4400c0"><code>838d440</code></a>
Update dependencies</li>
<li><a
href="0cac69d45e"><code>0cac69d</code></a>
Regenerate with latest gir</li>
<li><a
href="7f631810e2"><code>7f63181</code></a>
Update gir</li>
<li><a
href="f52ab6bdda"><code>f52ab6b</code></a>
glib: Mark push_thread_default as renamed</li>
<li><a
href="e93a49c354"><code>e93a49c</code></a>
build(deps): bump futures-task from 0.3.31 to 0.3.32</li>
<li><a
href="f2d29d9f92"><code>f2d29d9</code></a>
build(deps): bump futures-channel from 0.3.31 to 0.3.32</li>
<li><a
href="46dda5ff4b"><code>46dda5f</code></a>
build(deps): bump libc from 0.2.180 to 0.2.182</li>
<li><a
href="dcc35f7144"><code>dcc35f7</code></a>
build(deps): bump tempfile from 3.24.0 to 3.25.0</li>
<li><a
href="f86b993073"><code>f86b993</code></a>
build(deps): bump futures-core from 0.3.31 to 0.3.32</li>
<li>Additional commits viewable in <a
href="https://github.com/gtk-rs/gtk-rs-core/compare/0.21.5...0.22.0">compare
view</a></li>
</ul>
</details>
<br />
Updates `gobject-sys` from 0.21.5 to 0.22.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/gtk-rs/gtk-rs-core/releases">gobject-sys's
releases</a>.</em></p>
<blockquote>
<h2>0.22.0</h2>
<pre><code>Bernhard M. Wiedemann:
glib-macros: Use BTreeMap instead of HashMap
<p>Biagio Festa:<br />
glib-macros/async_test: unwrap result when setting default context<br />
glib-macros/async_test: dont move main context within closure<br />
glib/bytes: relax start offset constraint for
<code>from_bytes</code></p>
<p>Bilal Elmoussaoui:<br />
ci: Switch from gsvbuild to MSVC<br />
Generate bindings for win32/unix GLib/Gio<br />
Build new crates on CI<br />
gio/unix: Remove the manual fallback for MountEntry<br />
glib: Lower host dep requirement<br />
glib/unix: Add missing futures feature<br />
gio/unix: Ignore a clippy lint<br />
gio: Comment out a test & drop UnixFdMessage<br />
gio/tests: Remove no longer useful headers<br />
gio: Move various config options to gio-unix<br />
glib: Remove no longer needed manual ffi functions<br />
glib/sys: Don't generate UnixPipe<br />
Regenerate with fixed GIR files<br />
glib/source: Fix imports on Win32<br />
glib/win32: Add missing imports<br />
gio/win32: Manually implement streams<br />
gio/win32: Add a type for GNetworkMonitorBase and drop duplicated manual
ones<br />
gio/win32: Add missing dep<br />
deny: Drop no longer needed skips<br />
Add missing licenses<br />
Adapt to rust nightly docs changes<br />
gio: Move test to gio-unix<br />
gdk-pixbuf: Ignore another clippy lint<br />
Fix docs for new crates<br />
Force update windows-sys for new crates<br />
win32: Always depend on windows-sys<br />
win32: Guard std::os::windows usage<br />
gio/win32: Add missing feature<br />
Re-export preludes<br />
glib: Use 'static lifetime for nick/name<br />
Use 'a lifetime instead<br />
glib: Mark push_thread_default as renamed</p>
<p>Casey Jao:<br />
Clarify the GObject subclass mechanism<br />
Add missing comment markers<br />
Update glib/src/subclass/mod.rs<br />
Clarify Rust-C analogy for external interface<br />
Improve diagram<br />
</tr></table><br />
</code></pre></p>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="5b440606f1"><code>5b44060</code></a>
Update versions to 0.22.0</li>
<li><a
href="838d4400c0"><code>838d440</code></a>
Update dependencies</li>
<li><a
href="0cac69d45e"><code>0cac69d</code></a>
Regenerate with latest gir</li>
<li><a
href="7f631810e2"><code>7f63181</code></a>
Update gir</li>
<li><a
href="f52ab6bdda"><code>f52ab6b</code></a>
glib: Mark push_thread_default as renamed</li>
<li><a
href="e93a49c354"><code>e93a49c</code></a>
build(deps): bump futures-task from 0.3.31 to 0.3.32</li>
<li><a
href="f2d29d9f92"><code>f2d29d9</code></a>
build(deps): bump futures-channel from 0.3.31 to 0.3.32</li>
<li><a
href="46dda5ff4b"><code>46dda5f</code></a>
build(deps): bump libc from 0.2.180 to 0.2.182</li>
<li><a
href="dcc35f7144"><code>dcc35f7</code></a>
build(deps): bump tempfile from 3.24.0 to 3.25.0</li>
<li><a
href="f86b993073"><code>f86b993</code></a>
build(deps): bump futures-core from 0.3.31 to 0.3.32</li>
<li>Additional commits viewable in <a
href="https://github.com/gtk-rs/gtk-rs-core/compare/0.21.5...0.22.0">compare
view</a></li>
</ul>
</details>
<br />
Updates `gstreamer-app-sys` from 0.24.4 to 0.25.0
Updates `gstreamer-audio-sys` from 0.24.4 to 0.25.0
Updates `gstreamer-base-sys` from 0.24.4 to 0.25.0
Updates `gstreamer-gl-egl-sys` from 0.24.4 to 0.25.0
Updates `gstreamer-gl-wayland-sys` from 0.24.4 to 0.25.0
Updates `gstreamer-gl-x11-sys` from 0.24.4 to 0.25.0
Updates `gstreamer-play-sys` from 0.24.4 to 0.25.0
Updates `gstreamer-sdp-sys` from 0.24.4 to 0.25.0
Updates `gstreamer-video-sys` from 0.24.4 to 0.25.0
Updates `gstreamer-webrtc-sys` from 0.24.4 to 0.25.0
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 <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>
Bumps [jiff](https://github.com/BurntSushi/jiff) from 0.2.20 to 0.2.21.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/BurntSushi/jiff/blob/master/CHANGELOG.md">jiff's
changelog</a>.</em></p>
<blockquote>
<h1>0.2.21 (2026-02-22)</h1>
<p>This release contains a performance improvement and a bug fix for
<code>civil::Date::new</code> where it could panic on some inputs.</p>
<p>Bug fixes:</p>
<ul>
<li><a
href="https://redirect.github.com/BurntSushi/jiff/issues/523">#523</a>:
Fix a bug where <code>Date::new</code> could panic. This was a
regression introduced in
<code>jiff 0.2.20</code>.</li>
</ul>
<p>Performance:</p>
<ul>
<li><a
href="https://redirect.github.com/BurntSushi/jiff/pull/518">#518</a>:
Improve <code>Timestamp</code> to <code>civil::DateTime</code>
conversion performance by ~15%.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="6019162783"><code>6019162</code></a>
0.2.21</li>
<li><a
href="7c2b3cd4f1"><code>7c2b3cd</code></a>
changelog: 0.2.21</li>
<li><a
href="9e766682f9"><code>9e76668</code></a>
civil: check for <code>days < 1</code> in <code>Date::new</code></li>
<li><a
href="243d8a04cc"><code>243d8a0</code></a>
changelog: add <a
href="https://redirect.github.com/BurntSushi/jiff/issues/518">#518</a></li>
<li><a
href="d57657ab90"><code>d57657a</code></a>
perf: optimize timestamp -> datetime conversion</li>
<li>See full diff in <a
href="https://github.com/BurntSushi/jiff/compare/jiff-static-0.2.20...jiff-static-0.2.21">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 the zbus-related group with 3 updates:
[zbus_macros](https://github.com/z-galaxy/zbus),
[zvariant](https://github.com/z-galaxy/zbus) and
[zvariant_derive](https://github.com/z-galaxy/zbus).
Updates `zbus_macros` from 5.13.2 to 5.14.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/z-galaxy/zbus/releases">zbus_macros's
releases</a>.</em></p>
<blockquote>
<h2>zbus_macros-5.14.0</h2>
<ul>
<li>New release to go with zbus 5.14.0</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="02f48c4948"><code>02f48c4</code></a>
Merge pull request <a
href="https://redirect.github.com/z-galaxy/zbus/issues/1725">#1725</a>
from zeenix/releasing</li>
<li><a
href="3467d53f6f"><code>3467d53</code></a>
🔖 zbus_xmlgen: Release 5.3.0</li>
<li><a
href="b59017cbe0"><code>b59017c</code></a>
🔖 zb,zm: Release 5.14.0</li>
<li><a
href="7287f27b6d"><code>7287f27</code></a>
🔖 zv,zd: Release 5.10.0</li>
<li><a
href="bd81484eb4"><code>bd81484</code></a>
🤖 release-plz: <code>🚸</code> commits treated as additions</li>
<li><a
href="f0ae963458"><code>f0ae963</code></a>
⬆️ micro: Update quick-xml to v0.39.2 (<a
href="https://redirect.github.com/z-galaxy/zbus/issues/1724">#1724</a>)</li>
<li><a
href="3e73afb306"><code>3e73afb</code></a>
⬆️ micro: Update syn to v2.0.117 (<a
href="https://redirect.github.com/z-galaxy/zbus/issues/1723">#1723</a>)</li>
<li><a
href="734d258ed4"><code>734d258</code></a>
Merge pull request <a
href="https://redirect.github.com/z-galaxy/zbus/issues/1721">#1721</a>
from jackpot51/redox</li>
<li><a
href="9e276dd016"><code>9e276dd</code></a>
⬆️ micro: Update clap to v4.5.60 (<a
href="https://redirect.github.com/z-galaxy/zbus/issues/1722">#1722</a>)</li>
<li><a
href="91e2ae7894"><code>91e2ae7</code></a>
🐛 Do not use SendFlags::NOSIGNAL on Redox</li>
<li>Additional commits viewable in <a
href="https://github.com/z-galaxy/zbus/compare/zbus_macros-5.13.2...zbus_macros-5.14.0">compare
view</a></li>
</ul>
</details>
<br />
Updates `zvariant` from 5.9.2 to 5.10.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/z-galaxy/zbus/releases">zvariant's
releases</a>.</em></p>
<blockquote>
<h2>zvariant-5.10.0</h2>
<h3>Added</h3>
<ul>
<li>✨ Implement Basic for more types. <a
href="https://redirect.github.com/z-galaxy/zbus/issues/1681">#1681</a></li>
</ul>
<h3>Changed</h3>
<ul>
<li>🚚 Rename an internal macro.</li>
</ul>
<h3>Dependencies</h3>
<ul>
<li>⬆️ Update libfuzzer-sys to v0.4.12 (<a
href="https://redirect.github.com/z-galaxy/zbus/issues/1709">#1709</a>).</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>🐛 Encode bool as single byte in GVariant.</li>
</ul>
<h3>Testing</h3>
<ul>
<li>✅ Add test case for bool encoding.</li>
</ul>
<h2>zvariant_derive-5.10.0</h2>
<ul>
<li>New release to go with zvariant 5.10.0</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="02f48c4948"><code>02f48c4</code></a>
Merge pull request <a
href="https://redirect.github.com/z-galaxy/zbus/issues/1725">#1725</a>
from zeenix/releasing</li>
<li><a
href="3467d53f6f"><code>3467d53</code></a>
🔖 zbus_xmlgen: Release 5.3.0</li>
<li><a
href="b59017cbe0"><code>b59017c</code></a>
🔖 zb,zm: Release 5.14.0</li>
<li><a
href="7287f27b6d"><code>7287f27</code></a>
🔖 zv,zd: Release 5.10.0</li>
<li><a
href="bd81484eb4"><code>bd81484</code></a>
🤖 release-plz: <code>🚸</code> commits treated as additions</li>
<li><a
href="f0ae963458"><code>f0ae963</code></a>
⬆️ micro: Update quick-xml to v0.39.2 (<a
href="https://redirect.github.com/z-galaxy/zbus/issues/1724">#1724</a>)</li>
<li><a
href="3e73afb306"><code>3e73afb</code></a>
⬆️ micro: Update syn to v2.0.117 (<a
href="https://redirect.github.com/z-galaxy/zbus/issues/1723">#1723</a>)</li>
<li><a
href="734d258ed4"><code>734d258</code></a>
Merge pull request <a
href="https://redirect.github.com/z-galaxy/zbus/issues/1721">#1721</a>
from jackpot51/redox</li>
<li><a
href="9e276dd016"><code>9e276dd</code></a>
⬆️ micro: Update clap to v4.5.60 (<a
href="https://redirect.github.com/z-galaxy/zbus/issues/1722">#1722</a>)</li>
<li><a
href="91e2ae7894"><code>91e2ae7</code></a>
🐛 Do not use SendFlags::NOSIGNAL on Redox</li>
<li>Additional commits viewable in <a
href="https://github.com/z-galaxy/zbus/compare/zvariant-5.9.2...zvariant-5.10.0">compare
view</a></li>
</ul>
</details>
<br />
Updates `zvariant_derive` from 5.9.2 to 5.10.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/z-galaxy/zbus/releases">zvariant_derive's
releases</a>.</em></p>
<blockquote>
<h2>zvariant_derive-5.10.0</h2>
<ul>
<li>New release to go with zvariant 5.10.0</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="02f48c4948"><code>02f48c4</code></a>
Merge pull request <a
href="https://redirect.github.com/z-galaxy/zbus/issues/1725">#1725</a>
from zeenix/releasing</li>
<li><a
href="3467d53f6f"><code>3467d53</code></a>
🔖 zbus_xmlgen: Release 5.3.0</li>
<li><a
href="b59017cbe0"><code>b59017c</code></a>
🔖 zb,zm: Release 5.14.0</li>
<li><a
href="7287f27b6d"><code>7287f27</code></a>
🔖 zv,zd: Release 5.10.0</li>
<li><a
href="bd81484eb4"><code>bd81484</code></a>
🤖 release-plz: <code>🚸</code> commits treated as additions</li>
<li><a
href="f0ae963458"><code>f0ae963</code></a>
⬆️ micro: Update quick-xml to v0.39.2 (<a
href="https://redirect.github.com/z-galaxy/zbus/issues/1724">#1724</a>)</li>
<li><a
href="3e73afb306"><code>3e73afb</code></a>
⬆️ micro: Update syn to v2.0.117 (<a
href="https://redirect.github.com/z-galaxy/zbus/issues/1723">#1723</a>)</li>
<li><a
href="734d258ed4"><code>734d258</code></a>
Merge pull request <a
href="https://redirect.github.com/z-galaxy/zbus/issues/1721">#1721</a>
from jackpot51/redox</li>
<li><a
href="9e276dd016"><code>9e276dd</code></a>
⬆️ micro: Update clap to v4.5.60 (<a
href="https://redirect.github.com/z-galaxy/zbus/issues/1722">#1722</a>)</li>
<li><a
href="91e2ae7894"><code>91e2ae7</code></a>
🐛 Do not use SendFlags::NOSIGNAL on Redox</li>
<li>Additional commits viewable in <a
href="https://github.com/z-galaxy/zbus/compare/zvariant_derive-5.9.2...zvariant_derive-5.10.0">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 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>
Bumps the tungstenite-related group with 1 update:
[async-tungstenite](https://github.com/sdroege/async-tungstenite).
Updates `async-tungstenite` from 0.32.1 to 0.33.0
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/sdroege/async-tungstenite/blob/main/CHANGELOG.md">async-tungstenite's
changelog</a>.</em></p>
<blockquote>
<h2>[0.33.0] - 2026-02-20</h2>
<h3>Changed</h3>
<ul>
<li>Update GLib/gio support to version 0.22 of the bindings.</li>
<li>Update MSRV to 1.85.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="faf5ecce65"><code>faf5ecc</code></a>
Update MSRV to 1.85</li>
<li><a
href="fc919693f1"><code>fc91969</code></a>
Release 0.33.0</li>
<li>See full diff in <a
href="https://github.com/sdroege/async-tungstenite/compare/0.32.1...0.33.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 <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>
In `NormalizedAlgorithm::from_object_value`, we use
`dictionary_from_jsval` to convert `HandleValue` into IDL dictionary
types generated by `script_bingings`, and immediately use `From`,
`TryFrom`, `TryFromWithCx` trait implementation to convert them into
webcrypto's subtle dictionary types.
Since our webcrypto implementation doesn't directly use the dictionary
types generated by `script_bingings`, this patch combines the 2 steps of
this conversion into one step, by using `TryFromWithCx` trait
implementation for those dictionaries and moving the
`dictionary_from_jsval` calls into `try_from_with_cx`.
Testing: Refactoring. Existing tests suffice.
Fixes: Preparation for #42579
Signed-off-by: Kingsley Yung <kingsley@kkoyung.dev>
This implements a baseline for these tests. By implementing these dummy
methods, we avoid a lot of test expectation clutter when debugging these
tests to figure out why they aren't passing yet.
For the delete command, since it doesn't have any state or is
indeterminate, we always return the same.
Part of #25005
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
Queue the "complete" event before unblocking later transactions in the
backend. This preserves event ordering for overlapping transactions
created on the same connection.
Fixes#42730Fixes#42718
Signed-off-by: Taym Haddadi <haddadi.taym@gmail.com>
This actually happens at a very early stage:
https://w3c.github.io/webdriver/#dfn-process-a-wheel-action
However, for some reason webdriver crate does not check it for this
particular case.
This PR moves the check to the beginning of dispatch scroll action.
Testing: Added a wdspec test.
---------
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
- Use `FxHashMap` for `active_pointer_ids`
- Refactor and fix logging message for touch, especially
`update_active_touch_points_when_early_return`
- Randomly fix some typos
Testing: This changes logging message but no other observable
behaviours. The logging should be more accurate, but I didn't test.
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
That way, we correctly run it whenever we invoke WPT. This is relevant
for wpt.fyi, where currently we are not seeing any test coverage in the
`/editing` tests. To make tracking of progress possible, it should be
defined in prefs, not in the `.ini` configuration.
Part of #25005
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
There is no specification for this, but there are relevant
WPT tests in `selection/contenteditable`. This PR implements
the required changes to make sure that when such an element
is focused (programmatically), it selects the correct node.
The implementation is therefore entirely reverse-engineered
based on existing browser behavior and commented to hopefully
make it make sense.
Part of #7492
Part of #12776
Part of #25005
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
Prerequisite for #40365.
Moving `run_a_module_script()` to `GlobalScope` will allow us to execute
module scripts on `WorkerGlobalScope`.
---
Relates to #23308
Signed-off-by: pylbrecht <pylbrecht@mailbox.org>
They need to be under `[patch.crates-io]`. At the previous position,
they wouldn't be patched when e.g. uncommenting the section for patching
Stylo crates.
Testing: Not needed, no behavior change
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
This method was already present on the document, but
wasn't implemented yet. Note that now more tests are
failing, since before they weren't running. The tests
check if a command is enabled before they started
running.
The selection API doesn't yet take into account
contenteditable containers, which is why these
tests don't consider a command enabled, since the
range of the selection is empty.
Part of #25005
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
Use the new `reflect_dom_object_with_cx` introduced in #42725 in
`CryptoKey::new`.
Testing: Refactoring. Existing tests suffice.
Signed-off-by: Kingsley Yung <kingsley@kkoyung.dev>
Follow-up PR to #42720 (addressing nits by @sagudev)
Testing: It compiles without any errors
Fixes: Part of issue #42638 and PR #42720
Signed-off-by: TimurBora <timurborisov5561@gmail.com>
What I thought would be a small algorithm turns out required tons of
other implementations of various definitions, most of it around nodes.
Therefore, to keep things manageable, it only implements this algorithm
and relevant parts, but leaves the other parts of the delete command
untouched. For now, it is good if tests keep on working without
crashing. Later, once the full delete command is implemented, more tests
should be passing.
Part of #25005
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
These three methods date back from the very early history of Servo and
are no longer necessary:
1. `Window.debug`: `console.log` is a better replacement for this method
now. A manual test that tests the very basics of JavaScript used
this. This test is removed as well.
2. `Window.gc`: This can be replaced with `TestUtils.gc`, which is part
of a W3C specification.
3. `Window.js_backtrace`: This method is moved to `ServoTestUtils`.
Testing: Tests are updated to reflect these changes.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Just to complement existing with_proto method introduced in #42699.
Justification for arg ordering: reflect_dom_* have arguments reversed,
so first one is Box (the most important) then global, proto and lastly
cx.
---------
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
`process_response_eof` is the only method that needs cx at least right
now. This PR removes one temp_cx and introduces one, removing that one
will is hard (needs VirtualMethods and a lot of work)
Testing: Just refactor
Part of #40600
---------
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
This introduces a new `ServoTestUtils` namespace with a `forceLayout()`
function. This `forceLayout()` function returns an object which
currently has an array of the phases ran by layout. Also moves
`panic()`, `crashHard()` and `advanceClock()` from `TestBinding` to this
new namespace. `TestBinding` is meant to test the bindings generation,
but these are more generic helpers for Servo-only tests.
Testing: This change adds a series of Servo-only tests that verify the
behavior of the new `forceLayout()` function. Tests that rely on the
moved interfaces are updated and should continue to pass.
Signed-off-by: Luke Warlow <lwarlow@igalia.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
This patch changes the methods of `SubtleCrypto` to use the new `&mut
JSContext` and `&mut CurrentRealm`, Those methods are `Encrypt`,
`Decrypt`, `Sign`, `Verify`, `GenerateKey`, `DeriveKey`, `DeriveBits`,
`Digest`, `ImportKey`, `ExportKey`, `WrapKey`, `UnwrapKey`,
`EncapsulateKey`, `EncapsulateBits`, `DecapsulateKey`,
`DecapsulateBits`.
The change also propagate to the all internal methods within the
`subtlecrypto` module.
Testing: Refactoring. Existing tests suffice.
Fixes: Part of #42638
---------
Signed-off-by: Kingsley Yung <kingsley@kkoyung.dev>
Move from `InRealm` to `&mut CurrentRealm` and from `CanGc` to `&mut
js::context::JSContext`
Testing: `/mach build`, `/mach test-unit` and `/mach test-tidy`
Fixes: Part of #42638
Signed-off-by: TimurBora <timurborisov5561@gmail.com>
this patch adds a Servo::set_accessibility_active() method that
embedders can use to tell Servo to start building and sending
accessibility trees to the platform, as long as the pref is enabled
(#42333). doing so sets a global flag in the constellation, which is
then propagated to the layout of all existing and future pipelines.
Testing: none yet, no functional change
Fixes: part of #4344
---------
Signed-off-by: delan azabani <dazabani@igalia.com>
Signed-off-by: Alice Boxhall <alice@igalia.com>
Co-authored-by: Alice Boxhall <alice@igalia.com>
Bumps [werkzeug](https://github.com/pallets/werkzeug) from 3.1.5 to
3.1.6.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pallets/werkzeug/releases">werkzeug's
releases</a>.</em></p>
<blockquote>
<h2>3.1.6</h2>
<p>This is the Werkzeug 3.1.6 security fix release, which fixes a
security issue but does not otherwise change behavior and should not
result in breaking changes compared to the latest feature release.</p>
<p>PyPI: <a
href="https://pypi.org/project/Werkzeug/3.1.6/">https://pypi.org/project/Werkzeug/3.1.6/</a>
Changes: <a
href="https://werkzeug.palletsprojects.com/page/changes/#version-3-1-6">https://werkzeug.palletsprojects.com/page/changes/#version-3-1-6</a></p>
<ul>
<li><code>safe_join</code> on Windows does not allow special devices
names in multi-segment paths. <a
href="https://github.com/pallets/werkzeug/security/advisories/GHSA-29vq-49wr-vm6x">GHSA-29vq-49wr-vm6x</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pallets/werkzeug/blob/main/CHANGES.rst">werkzeug's
changelog</a>.</em></p>
<blockquote>
<h2>Version 3.1.6</h2>
<p>Released 2026-02-19</p>
<ul>
<li><code>safe_join</code> on Windows does not allow special devices
names in
multi-segment paths. :ghsa:<code>29vq-49wr-vm6x</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="04da1b5221"><code>04da1b5</code></a>
release version 3.1.6</li>
<li><a
href="f407712fdc"><code>f407712</code></a>
Merge commit from fork</li>
<li><a
href="f54fe98026"><code>f54fe98</code></a>
safe_join prevents Windows special device names in multi-segment
paths</li>
<li><a
href="d005985ef6"><code>d005985</code></a>
start version 3.1.6</li>
<li><a
href="8565c2cbd6"><code>8565c2c</code></a>
document rule priority (<a
href="https://redirect.github.com/pallets/werkzeug/issues/3102">#3102</a>)</li>
<li><a
href="3febc7e900"><code>3febc7e</code></a>
document rule priority</li>
<li><a
href="2525b82764"><code>2525b82</code></a>
remove state machine docs</li>
<li><a
href="4abfbd553c"><code>4abfbd5</code></a>
rewrite build docstring (<a
href="https://redirect.github.com/pallets/werkzeug/issues/3097">#3097</a>)</li>
<li><a
href="161c18b2a8"><code>161c18b</code></a>
rewrite build docstring</li>
<li><a
href="86e11c29e4"><code>86e11c2</code></a>
release version 3.1.5 (<a
href="https://redirect.github.com/pallets/werkzeug/issues/3085">#3085</a>)</li>
<li>See full diff in <a
href="https://github.com/pallets/werkzeug/compare/3.1.5...3.1.6">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)
You can disable automated security fix PRs for this repo from the
[Security Alerts page](https://github.com/servo/servo/network/alerts).
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
We need to bump the accesskit version in order to use
[subtrees](https://docs.rs/accesskit/latest/accesskit/struct.Node.html#method.tree_id),
which are required to join the servo tree into the embedder tree.
We need to patch egui for servoshell, as we're waiting for them to land
the patch bumping their version of accesskit.
Once https://github.com/emilk/egui/pull/7850 lands and a new version of
egui is pushed out, we'll be able to remove the patch.
Testing: No tests.
Fixes: Part of #4344
Signed-off-by: Alice Boxhall <alice@igalia.com>
Add a comment to the preference session_history_max_size that explains
the current behavi
Testing: Comments do not have tests.
---------
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
Replace the old dirty root box tree layout approach with one that works
based on independent formatting contexts. Instead of just allowing a
single dirty root to be the source of box tree reconstruction, allow box
tree reconstruction to happen anywhere in the tree that can isolate box
tree damage from ancestors. This essentially combines damage propagation
and box tree construction into a single step.
There is currently one downside to this approach compared to the dirty
root approach which is that we currently cannot detect and start box
tree layout when the dirty has a compatible `display` and `position`
value. This can mean the scope of box tree layout extends further up the
tree. We will address this in a followup -- but have not noticed any
major performance implications (currently fragment tree layout is much
more expensive than box tree layout).
Benefits:
1. Damage propagation now only happens under the dirty root.
2. Future changes can limit the scope of damage up the tree and perhaps
preserve the inline content size cache between box tree rebuilds.
Testing: This should not change behavior in a testable way (we currently
do
not have robust performance tests), so WPT test results should not
change.
---------
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Oriol Brufau <obrufau@igalia.com>
Co-authored-by: Luke Warlow <lwarlow@igalia.com>
Indexeddb: transaction lifecycle
Testing: more Indexeddb test should pass
part of #40983
---------
Signed-off-by: Taym Haddadi <haddadi.taym@gmail.com>
#42681 did not actually allowed using cx in Constructor, but it did most
heavy lifting. Now we need to pass cx to Constructor call (and skip
CanGc) if cx is requested in Bindings.conf. This PR also test this on
testbindings.
Also we now always use `let cx = &mut cx`, so we can always use just cx
(compiler will automatically deref it into &cx if needed). This is
important because codegen stuff is called from many places to it make
sense/easier to just unify this.
Testing: It compiles
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
Previously we listened to 0.0.0.0. which means any connection coming to
a specific port. That seems a bit ill advised as not everybody has a
good firewall setup. Now we default listen only on 127.0.0.1 but
optionally can describe a full SocketAddr such as "192.168.1.23:1234".
Side note: Cleaned up the ipc-channel syntax.
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
Testing: Currently we don't have an automatic way to test this. Manually
run devtools and it connects.
---------
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
This adds a simple script to vendor all the dependencies and creating a
servo.tar.gz archive that should build without downloading.
Note: `./mach bootstrap` is still assumed to have been run to setup the
build environment.
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
Testing: I tested the creation of the archive.
This is the first part of #40189
---------
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
Co-authored-by: Jonathan Schwender <schwenderjonathan@gmail.com>
Bumps [bumpalo](https://github.com/fitzgen/bumpalo) from 3.19.1 to
3.20.1.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/fitzgen/bumpalo/blob/main/CHANGELOG.md">bumpalo's
changelog</a>.</em></p>
<blockquote>
<h2>3.20.1</h2>
<p>Released 2026-02-18.</p>
<h3>Fixed</h3>
<ul>
<li>Restored <code>Send</code> and <code>Sync</code> implementations for
<code>Box<T></code> when <code>T: Send</code> and <code>T:
Sync</code> respectively.</li>
</ul>
<hr />
<h2>3.20.0</h2>
<p>Released 2026-02-18.</p>
<h3>Added</h3>
<ul>
<li>Added the <code>bumpalo::collections::Vec::pop_if</code>
method.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fixed a bug in the <code>bumpalo::collections::String::retain</code>
method in the face
of panics.</li>
<li>Made <code>bumpalo::collections::Box<T></code> covariant with
<code>T</code> (just like
<code>std::boxed::Box<T></code>).</li>
</ul>
<hr />
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="7c8d1f3870"><code>7c8d1f3</code></a>
Bump to 3.20.1 (<a
href="https://redirect.github.com/fitzgen/bumpalo/issues/310">#310</a>)</li>
<li><a
href="e06b36ba0c"><code>e06b36b</code></a>
Restore Send and Sync for Box (<a
href="https://redirect.github.com/fitzgen/bumpalo/issues/309">#309</a>)</li>
<li><a
href="cb7f03318f"><code>cb7f033</code></a>
Bump to 3.20.0 (<a
href="https://redirect.github.com/fitzgen/bumpalo/issues/307">#307</a>)</li>
<li><a
href="d97d31cdc5"><code>d97d31c</code></a>
Make box covariant (<a
href="https://redirect.github.com/fitzgen/bumpalo/issues/304">#304</a>)</li>
<li><a
href="f9256f785d"><code>f9256f7</code></a>
Pin quickcheck (<a
href="https://redirect.github.com/fitzgen/bumpalo/issues/306">#306</a>)</li>
<li><a
href="a006efb3a1"><code>a006efb</code></a>
Fix String::retain panic safety yielding invalid UTF-8 (<a
href="https://redirect.github.com/fitzgen/bumpalo/issues/302">#302</a>)</li>
<li><a
href="96ba386514"><code>96ba386</code></a>
Add pop_if() to Vec (<a
href="https://redirect.github.com/fitzgen/bumpalo/issues/301">#301</a>)</li>
<li>See full diff in <a
href="https://github.com/fitzgen/bumpalo/compare/v3.19.1...v3.20.1">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>
Small possible performance increase to use iterator chaining instead of
allocating and extending the vector.
Testing: This is equal behavior so it does not need a test.
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
This PR fixes the blink_perf_test_runner's issues with parsing in
* flexbox-lots-of-data.html
* nested-blocks-with-percent-height-and-max-height.html
And also changes `results.json` values from str to float to be
compatible with bencher.dev format
Testing: run `uv run etc/blink-perf-test-runner/main.py -w 13002
./target/production/servo` to get results.json
---------
Signed-off-by: janeoa <5373400+janeoa@users.noreply.github.com>
Signed-off-by: jane <5373400+janeoa@users.noreply.github.com>
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.181 to 0.2.182.
<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.182</h2>
<h3>Added</h3>
<ul>
<li>Android, Linux: Add <code>tgkill</code> (<a
href="https://redirect.github.com/rust-lang/libc/pull/4970">#4970</a>)</li>
<li>Redox: Add <code>RENAME_NOREPLACE</code> (<a
href="https://redirect.github.com/rust-lang/libc/pull/4968">#4968</a>)</li>
<li>Redox: Add <code>renameat2</code> (<a
href="https://redirect.github.com/rust-lang/libc/pull/4968">#4968</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/rust-lang/libc/blob/0.2.182/CHANGELOG.md">libc's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/rust-lang/libc/compare/0.2.181...0.2.182">0.2.182</a>
- 2026-02-13</h2>
<h3>Added</h3>
<ul>
<li>Android, Linux: Add <code>tgkill</code> (<a
href="https://redirect.github.com/rust-lang/libc/pull/4970">#4970</a>)</li>
<li>Redox: Add <code>RENAME_NOREPLACE</code> (<a
href="https://redirect.github.com/rust-lang/libc/pull/4968">#4968</a>)</li>
<li>Redox: Add <code>renameat2</code> (<a
href="https://redirect.github.com/rust-lang/libc/pull/4968">#4968</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="e879ee90b6"><code>e879ee9</code></a>
chore: Release libc 0.2.182</li>
<li><a
href="2efe72f4da"><code>2efe72f</code></a>
remove copyright year in LICENSE-MIT</li>
<li><a
href="634bc4e66e"><code>634bc4e</code></a>
ci: Update the list of tested and documented targets</li>
<li><a
href="d7aa109ab5"><code>d7aa109</code></a>
Revert "Disable hexagon-unknown-linux-musl testing for
now"</li>
<li><a
href="14e2f5641e"><code>14e2f56</code></a>
Revert "ci: Skip hexagon-unknown-linux-musl"</li>
<li><a
href="b7807c369b"><code>b7807c3</code></a>
Revert "aix: Temporarily skip checking powerpc64-ibm-aix
builds"</li>
<li><a
href="abe93a0bfe"><code>abe93a0</code></a>
feat(linux): add <code>tgkill</code> for Linux and Android</li>
<li><a
href="25f7dde943"><code>25f7dde</code></a>
feat(redox): add <code>RENAME_NOREPLACE</code></li>
<li><a
href="4b4ce4f220"><code>4b4ce4f</code></a>
feat(redox): add <code>renameat2</code></li>
<li><a
href="ab8c36c493"><code>ab8c36c</code></a>
build(deps): bump vmactions/solaris-vm from 1.2.8 to 1.3.0</li>
<li>Additional commits viewable in <a
href="https://github.com/rust-lang/libc/compare/0.2.181...0.2.182">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>
Instead of clearing the fragment tree layout cache in a clean subtree of
a node that needs a new fragment, preserve caches when crossing
(roughly) independent formatting context boundaries [^1]. This should
allow layout to preserve more fragments when, for instance, a node
changes size, but its children do not.
[^1]: Currently things like table cells and captions do not do this.
Support for these will be added gradually.
Testing: This should not change behavior in a testable way, but should
result in less work done during layout.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Oriol Brufau <obrufau@igalia.com>
Co-authored-by: Luke Warlow <lwarlow@igalia.com>
If the number of layout threads is set to 1, then there sometimes is no
style thread pool. Instead of panicking in this case, we should just run
the code in question on the main thread with no thread pool. This fixes
a crash when `-y 1` is passed to servoshell.
Testing: This fixes a crash, but we currently do not run any automated
tests
with a single layout thread.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Oriol Brufau <obrufau@igalia.com>
Co-authored-by: Luke Warlow <lwarlow@igalia.com>
Currently the bencher tests for harmonyos have a suspiciously low ram
usage. However, Scenario tests and speedometer work.
The most likely explanation is that we forgot to add the certificate
while switching hitrace-bencher to use mitmproxy.
Hence, we add the flag.
Testing: This does not have an automatic test but manually testing shows
that we will have the certificate errors otherwise.
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
This is a foundational repo from rust-lang. Things should get bumped
together.
Otherwise you would see #42645, #42646, #42648, #42673 at same time.
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
Moves the drop implementation for `GPUComputePipeline` to a separate
`DroppableGPUComputePipeline` struct.
Removes `allowDropImpl` from the bindings configuration.
Testing: No tests added because of webgpu tests existent coverage
Fixes: Partially #26488
Signed-off-by: Domenico Rizzo <domenico.rizzo@gmail.com>
Bumps [unicode-ident](https://github.com/dtolnay/unicode-ident) from
1.0.23 to 1.0.24.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dtolnay/unicode-ident/releases">unicode-ident's
releases</a>.</em></p>
<blockquote>
<h2>1.0.24</h2>
<ul>
<li>Compress trie even further by 1.9% using bipartite matching (<a
href="https://redirect.github.com/dtolnay/unicode-ident/issues/46">#46</a>,
thanks <a
href="https://github.com/yongqli"><code>@yongqli</code></a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="5b54a63270"><code>5b54a63</code></a>
Release 1.0.24</li>
<li><a
href="e55318f8fb"><code>e55318f</code></a>
Ignore unwrap_or_default clippy lint</li>
<li><a
href="51554021d2"><code>5155402</code></a>
Touch up PR 46</li>
<li><a
href="57872e39a4"><code>57872e3</code></a>
Wrap PR 46 comments to 80 columns</li>
<li><a
href="98ccaf88b9"><code>98ccaf8</code></a>
Format PR 46 with rustfmt</li>
<li><a
href="e0549d6ef6"><code>e0549d6</code></a>
Ignore items_after_statements pedantic clippy lint</li>
<li><a
href="73d7aaa3f0"><code>73d7aaa</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/unicode-ident/issues/46">#46</a>
from yongqli/master</li>
<li><a
href="5aed8996ef"><code>5aed899</code></a>
Replace greedy half-chunk compression with optimal bipartite
matching</li>
<li>See full diff in <a
href="https://github.com/dtolnay/unicode-ident/compare/1.0.23...1.0.24">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 [ml-kem](https://github.com/RustCrypto/KEMs) from 0.2.2 to 0.2.3.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="72dbb072b7"><code>72dbb07</code></a>
ml-kem v0.2.3</li>
<li>See full diff in <a
href="https://github.com/RustCrypto/KEMs/compare/ml-kem/v0.2.2...ml-kem/v0.2.3">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>
We do not need to clone the vector just to clone it again for an
GenericSharedMemory to take it.
In real life tests this copy can take up to 30% of the
`webrender_image_descriptor_and_data_for_frame` function.
Testing: This does not change functionality and just reorders the
allocation.
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
- `resolved_module_set_mut()` was replaced by
`add_module_to_resolved_module_set`
- `send_to_constellation()`, all code use
`script_to_constellation_chan()` and optionally handle errors
- `from_object_maybe_wrapped` one usage was removed in #36966, not clear
if that was the only one or more were removed later on
Testing: A successful build is enough
Part of #40882
---------
Signed-off-by: Gae24 <96017547+Gae24@users.noreply.github.com>
After debugging some of the failing tests, it appears spec text is
wrong.
Inside [merge existing and new import
maps](https://html.spec.whatwg.org/multipage/#merge-existing-and-new-import-maps)
algorithm, when checking which imports needs to be ignored,
specification will check if each _specifier_ of _newImportMap's imports_
will override any specifier of [resolved module
set](https://html.spec.whatwg.org/multipage/#resolved-module-set), by
checking if specifier starts with `record.specifier`.
Since each specifier gets normalized before they are inserted in the
resolved module set, the are cases where the check fails and we end up
overriding a module resolution.
This was an oversight, since for _newImportMap's scopes_ specification
performs the right check:
`specifierKey is a code unit prefix of record's specifier;`
Testing: More tests are now passing
Part of #37553
---------
Signed-off-by: Gae24 <96017547+Gae24@users.noreply.github.com>
Pass down `&mut JSContext` in `post_connection_steps`
Testing: No functionality change, a successful build is enough
Part of #40600
Signed-off-by: Gae24 <96017547+Gae24@users.noreply.github.com>
The first step of `execCommand` commands is to figure out
if they are supported and enabled. Therefore, implement
these two pieces with only 1 command: delete.
The implementation of `delete` is currently mostly dummy,
to have at least something going. But the main part of
this change is to setup the infrastructure to figure out
when commands are supported and enabled.
For the first part, its simply the list of commands we
currently have implemented, which is only delete.
For the second part, we need to consider the active range
of the current selection and do various checks, as well as
check the presence of `contenteditable`.
Part of #25005
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
The inspector view allows modifying the attributes of DOM elements.
However, we lie to the devtools client: While it looks like the
attributes change, the changes are never actually applied to the DOM.
This change fixes that, and also makes it so attribute modifications
from non-inspector sources are shown in the inspector.
Testing: This change adds two tests
---------
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
- Remove deps on `futures@0.1.31`. Update deny
- Remove `compat` features of futures. This is not used anywhere and
introduces duplication.
- Move deps to root. Fix weird field like `futures = { version = "0.3",
package = "futures" }`. Use 0.3 instead of minor version as recommended
by
[README](https://github.com/rust-lang/futures-rs/tree/master/futures-executor#readme)
- Use workspace version for sha2
- Update `futures` & `futures-executor` to 0.3.32
- Disable default features of `futures`: this decreases binary size by
12KB in release.
Testing: Existing UT.
---------
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
This enables type checking for Python files under etc/ci by adding
etc/ci/*.py to pyrefly's project-includes in pyproject.toml.
Enabling these checks surfaced a few type issues, which are addressed
here :
a) Use text=True in subprocess usage to avoid bytes/str mismatches
b) Remove unnecessary encode/decode calls
c) Guard against None stdout in chaos_monkey_test.py
d) Suppress unresolved optional imports in upload_nightly.py
(runtime dependencies declared via uv script metadata)
After these changes, ./mach test-tidy passes successfully locally.
Fixes: #42653
Signed-off-by: Keerti Gupta <24bsm032@iiitdmj.ac.in>
Bumps [clap](https://github.com/clap-rs/clap) from 4.5.58 to 4.5.59.
<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.59</h2>
<h2>[4.5.59] - 2026-02-16</h2>
<h3>Fixes</h3>
<ul>
<li><code>Command::ignore_errors</code> no longer masks help/version on
subcommands</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.59] - 2026-02-16</h2>
<h3>Fixes</h3>
<ul>
<li><code>Command::ignore_errors</code> no longer masks help/version on
subcommands</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="0bb3ad7e12"><code>0bb3ad7</code></a>
chore: Release</li>
<li><a
href="5cb5ce3873"><code>5cb5ce3</code></a>
docs: Update changelog</li>
<li><a
href="245c8ba75a"><code>245c8ba</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/6149">#6149</a>
from epage/wrap</li>
<li><a
href="dd17a418a9"><code>dd17a41</code></a>
fix(help): Correctly calculate wrap points with ANSI escape codes</li>
<li><a
href="2cc4e350b9"><code>2cc4e35</code></a>
test(ui): Avoid override term width</li>
<li><a
href="93e3559b1e"><code>93e3559</code></a>
refactor(help): Clarify that we're carrying over indentation</li>
<li><a
href="b1c46e633c"><code>b1c46e6</code></a>
refactor(help): Clarify var name</li>
<li><a
href="03b9b38df0"><code>03b9b38</code></a>
test(help): Show styled wrapping behavior</li>
<li><a
href="c9a39a534c"><code>c9a39a5</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/6146">#6146</a>
from clap-rs/renovate/actions-checkout-5.x</li>
<li><a
href="58599fb7bf"><code>58599fb</code></a>
chore(deps): Update actions/checkout action to v5</li>
<li>Additional commits viewable in <a
href="https://github.com/clap-rs/clap/compare/clap_complete-v4.5.58...clap_complete-v4.5.59">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 [memmap2](https://github.com/RazrFalcon/memmap2-rs) from 0.9.9 to
0.9.10.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/RazrFalcon/memmap2-rs/blob/master/CHANGELOG.md">memmap2's
changelog</a>.</em></p>
<blockquote>
<h2>[0.9.10] - 2026-02-15</h2>
<h3>Fixed</h3>
<ul>
<li>Fix compilation on AIX targets.
<a
href="https://github.com/xingxue-ibm"><code>@xingxue-ibm</code></a></li>
</ul>
<h3>Changed</h3>
<ul>
<li>Return <code>ErrorKind::Unsupported</code> on unsupported platforms
to allow reliable runtime detection.
<a href="https://github.com/daxpedda"><code>@daxpedda</code></a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="1f0196ab31"><code>1f0196a</code></a>
Merge pull request <a
href="https://redirect.github.com/RazrFalcon/memmap2-rs/issues/163">#163</a>
from RazrFalcon/release/v0.9.10</li>
<li><a
href="341bc13e04"><code>341bc13</code></a>
Bump version to 0.9.10.</li>
<li><a
href="01273a7c4a"><code>01273a7</code></a>
Merge pull request <a
href="https://redirect.github.com/RazrFalcon/memmap2-rs/issues/161">#161</a>
from daxpedda/stable-unsupported</li>
<li><a
href="b51beb58c9"><code>b51beb5</code></a>
Address review</li>
<li><a
href="8de56f3579"><code>8de56f3</code></a>
Return <code>ErrorKind::Unsupported</code> from stub implementation</li>
<li><a
href="a36f67f764"><code>a36f67f</code></a>
Merge pull request <a
href="https://redirect.github.com/RazrFalcon/memmap2-rs/issues/159">#159</a>
from xingxue-ibm/fix-madvise</li>
<li><a
href="d2054a2c92"><code>d2054a2</code></a>
Cast the 'addr' argument of 'madvise()' to match the AIX function
signature i...</li>
<li>See full diff in <a
href="https://github.com/RazrFalcon/memmap2-rs/compare/v0.9.9...v0.9.10">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
[security-framework](https://github.com/kornelski/rust-security-framework)
from 3.5.1 to 3.6.0.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="265c53be73"><code>265c53b</code></a>
Bye, Intel</li>
<li><a
href="03bbc73bfc"><code>03bbc73</code></a>
Bump</li>
<li><a
href="e801003645"><code>e801003</code></a>
Mark macOS-only APIs</li>
<li><a
href="7ef06e4f5d"><code>7ef06e4</code></a>
Support accessRef in SecItemImport</li>
<li><a
href="bc2a966f04"><code>bc2a966</code></a>
Support explicit pkcs12 format in SecItemImport</li>
<li><a
href="13e63a8766"><code>13e63a8</code></a>
Bump</li>
<li><a
href="8e9258ad0e"><code>8e9258a</code></a>
Real non_exhaustive</li>
<li><a
href="c2d848c215"><code>c2d848c</code></a>
Fewer casts</li>
<li><a
href="b030081246"><code>b030081</code></a>
Use match ergonomics</li>
<li><a
href="3f8a8f12fe"><code>3f8a8f1</code></a>
Simplify shared ImportedIdentity</li>
<li>Additional commits viewable in <a
href="https://github.com/kornelski/rust-security-framework/compare/v3.5.1...v3.6.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 [toml_parser](https://github.com/toml-rs/toml) from
1.0.8+spec-1.1.0 to 1.0.9+spec-1.1.0.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="500b26979f"><code>500b269</code></a>
chore: Release</li>
<li><a
href="daeba3e10b"><code>daeba3e</code></a>
docs: Update changelog</li>
<li><a
href="0f40c40b0c"><code>0f40c40</code></a>
fix(parser): Report errors for <code>-_1</code> (<a
href="https://redirect.github.com/toml-rs/toml/issues/1104">#1104</a>)</li>
<li><a
href="447b05c964"><code>447b05c</code></a>
fix(parser): Report errors for <code>-_1</code></li>
<li><a
href="5a7b742018"><code>5a7b742</code></a>
fix(parser): Improve error location for digit sep after prefix</li>
<li><a
href="5c978e57be"><code>5c978e5</code></a>
refactor(parser): Improve consistency in error calcs</li>
<li><a
href="8a3c0b029f"><code>8a3c0b0</code></a>
fix(parser): Be consistent about digit sep error</li>
<li><a
href="3e63bc4a2e"><code>3e63bc4</code></a>
test(parser): Check different digit separator cases</li>
<li>See full diff in <a
href="https://github.com/toml-rs/toml/compare/toml_parser-v1.0.8...toml_parser-v1.0.9">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 is required for `document.execCommand`, since it needs to check the
active range of the selection whether it has the attribute or not.
It also turns on the relevant WPT tests, with 1
pre-existing failure for absolute positioned pseudo elements. These
currently do not render correctly, regardless of the existence of
contenteditable.
Fixes#12776
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
This changes makes it so that tracing accesses the `ScriptThread` via a
weak reference set on the `Runtime` rather than thread local storage.
The idea is to use TLS less and less as time goes on. This is done by
creating a new data structure that holds all the data that is necessary
for SpiderMonkey callbacks in the `ScriptThread`.
Testing: This should not change behavior in a way that is observable
via testing.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
We have test for border-image with svg. Adding this with png
Testing: `wpt/tests/paint-timing/fcp-only/fcp-border-image.html`
Fixes: #42618
---------
Signed-off-by: Shubham Gupta <shubham.gupta@chromium.org>
Instead of waiting until the box tree construction phase of layout to
clear node damage, clear it during the damage traversal. This means that
damage is cleared in the same way in all types of situations, which
simplifies the code and will make it easier to implement future
optimizations.
Testing: This should not really change behavior (other than being
marginally more
efficient when there is a dirty root), so existing tests should suffice.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Oriol Brufau <obrufau@igalia.com>
Co-authored-by: Luke Warlow <lwarlow@igalia.com>
Moves the drop logic for `GPUComputePassEncoder` to a separate
`DroppableGPUComputePassEncoder` struct.
Testing: Tests that coverages webgpu just exist
Fixes: Partially #26488
Signed-off-by: Domenico Rizzo <domenico.rizzo@gmail.com>
This is a first step to compile scripts using `&mut JSContext`.
Testing: Refactor, covered by existing WPT tests.
Part of #40600
---------
Signed-off-by: Gae24 <96017547+Gae24@users.noreply.github.com>
Bumps [arc-swap](https://github.com/vorner/arc-swap) from 1.8.1 to
1.8.2.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/vorner/arc-swap/blob/master/CHANGELOG.md">arc-swap's
changelog</a>.</em></p>
<blockquote>
<h1>1.8.2</h1>
<ul>
<li>Proper gate of <code>Pin</code> (since 1.39 - we are not using only
<code>Pin</code>, but also
<code>Pin::into_inner</code>, <a
href="https://redirect.github.com/vorner/arc-swap/issues/197">#197</a>).</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="19f0d661a2"><code>19f0d66</code></a>
Version 1.8.2</li>
<li>See full diff in <a
href="https://github.com/vorner/arc-swap/compare/v1.8.1...v1.8.2">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot 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 [syn](https://github.com/dtolnay/syn) from 2.0.115 to 2.0.116.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dtolnay/syn/releases">syn's
releases</a>.</em></p>
<blockquote>
<h2>2.0.116</h2>
<ul>
<li>Optimize parse_fn_arg_or_variadic for less lookahead on erroneous
receiver (<a
href="https://redirect.github.com/dtolnay/syn/issues/1968">#1968</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="a62e54a48b"><code>a62e54a</code></a>
Release 2.0.116</li>
<li><a
href="5a8ed9f32e"><code>5a8ed9f</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/syn/issues/1968">#1968</a>
from dtolnay/receiver</li>
<li><a
href="813afcc773"><code>813afcc</code></a>
Optimize parse_fn_arg_or_variadic for less lookahead on erroneous
receiver</li>
<li><a
href="c172150113"><code>c172150</code></a>
Add regression test for issue 1718</li>
<li><a
href="0071ab367c"><code>0071ab3</code></a>
Ignore type_complexity clippy lint</li>
<li>See full diff in <a
href="https://github.com/dtolnay/syn/compare/2.0.115...2.0.116">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>
Demonstrate how to change some methods:
- [from `InRealm` to `&mut
CurrentRealm`](0132fc0fbe)
- [from `CanGc` to `&mut
JSContext`](36e5b32ee1)
Testing: Just refactor, should be covered by WPT.
Part of #40600
---------
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
We should only do this for the `insertHTML` command.
All other commands are unaffected.
Part of #25005
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
In preparation of the actual implementation.
Also had to update the codegen to be able to handle default values for
DOMString.
Part of #25005
---------
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
`ImportMap` _integrity_ entry was practically unused, since it is only
needed for [resolving a module integrity
metadata](https://html.spec.whatwg.org/multipage/#resolving-a-module-integrity-metadata).
Now, we correctly initialize `ScriptFetchOptions` when loading a
module's descendants.
I slightly modified `nonimport-integrity.html` test to run
`modulepreload` test cases at the end. Since we haven't an
implementation for it, the test timeout, making the test cases that
comes after them not run.
Testing: More tests start passing
Part of #37553
---------
Signed-off-by: Gae24 <96017547+Gae24@users.noreply.github.com>
Use helper function to evaluate non-zero bounding rect size
Testing: Existing WPT Tests Passed. No change in behaviour.
Signed-off-by: Shubham Gupta <shubham13297@gmail.com>
I just wanted to do abort signal, but then this happend.
Testing: Just refactor, should be covered by WPT tests
Part of #40600
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
Bumps [toml_parser](https://github.com/toml-rs/toml) from
1.0.7+spec-1.1.0 to 1.0.8+spec-1.1.0.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="767747fe1a"><code>767747f</code></a>
chore: Release</li>
<li><a
href="c68aa8705c"><code>c68aa87</code></a>
fix(parser): Plug another whole in synthetic events (<a
href="https://redirect.github.com/toml-rs/toml/issues/1102">#1102</a>)</li>
<li><a
href="17dc3ddbc5"><code>17dc3dd</code></a>
fix(parser): Plug another whole in synthetic events</li>
<li><a
href="0f32a02fc8"><code>0f32a02</code></a>
test(parse): Add another test case</li>
<li><a
href="9fef741aa7"><code>9fef741</code></a>
docs: Update changelog</li>
<li><a
href="3c596112ef"><code>3c59611</code></a>
fix(edit): Remove panics on bad input (<a
href="https://redirect.github.com/toml-rs/toml/issues/1101">#1101</a>)</li>
<li><a
href="796812017d"><code>7968120</code></a>
fix(edit): On missing value, ensure a span is used</li>
<li><a
href="b91d460cc8"><code>b91d460</code></a>
fix(edit): Don't panic on inline table keys without values</li>
<li><a
href="c8087a6bc6"><code>c8087a6</code></a>
fix(parser): Improve unclosed array messages</li>
<li><a
href="f0a47d4a1f"><code>f0a47d4</code></a>
fix(parser): Improve unclosed inline table messages</li>
<li>Additional commits viewable in <a
href="https://github.com/toml-rs/toml/compare/toml_parser-v1.0.7...toml_parser-v1.0.8">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot 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
[security-framework-sys](https://github.com/kornelski/rust-security-framework)
from 2.15.0 to 2.16.0.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/kornelski/rust-security-framework/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>
Bumps [zmij](https://github.com/dtolnay/zmij) from 1.0.20 to 1.0.21.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="6531ba31cc"><code>6531ba3</code></a>
Release 1.0.21</li>
<li><a
href="ec5058e88d"><code>ec5058e</code></a>
Sync to vitaut/zmij@b35b64a</li>
<li><a
href="968821350f"><code>9688213</code></a>
Restore support for rustc older than 1.83</li>
<li><a
href="1daaf0c258"><code>1daaf0c</code></a>
Sync to vitaut/zmij@f59cbcf</li>
<li><a
href="afc76e9c2c"><code>afc76e9</code></a>
Pin CI miri to nightly-2026-02-11</li>
<li><a
href="3812b15cd4"><code>3812b15</code></a>
Sync to vitaut/zmij@e458b55</li>
<li>See full diff in <a
href="https://github.com/dtolnay/zmij/compare/1.0.20...1.0.21">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 [jiff](https://github.com/BurntSushi/jiff) from 0.2.19 to 0.2.20.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/BurntSushi/jiff/blob/master/CHANGELOG.md">jiff's
changelog</a>.</em></p>
<blockquote>
<h1>0.2.20 (2026-02-11)</h1>
<p>This release contains a major internal refactor that moves off of
using ranged
integers internally. There are also some small bug fixes and added
support for
finding the system time zone on emscripten targets.</p>
<p>Enhancements:</p>
<ul>
<li><a
href="https://redirect.github.com/BurntSushi/jiff/issues/11">#11</a>:
Stop using ranged integers internally.</li>
<li><a
href="https://redirect.github.com/BurntSushi/jiff/issues/490">#490</a>:
Add support for retrieving the system time zone on emscripten
targets.</li>
<li><a
href="https://redirect.github.com/BurntSushi/jiff/issues/500">#500</a>:
Update comparison with the <code>time</code> crate in the Jiff
documentation.</li>
<li><a
href="https://redirect.github.com/BurntSushi/jiff/issues/502">#502</a>:
Enable some non-default features for the Rust Playground
deployment.</li>
</ul>
<p>Bug fixes:</p>
<ul>
<li><a
href="https://redirect.github.com/BurntSushi/jiff/issues/485">#485</a>:
Fix bug with padding for negative integers in
<code>strftime</code>.</li>
<li><a
href="https://redirect.github.com/BurntSushi/jiff/issues/486">#486</a>:
Make <code>%^c</code> result in uppercase strings where
appropriate.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="76f2a9eb65"><code>76f2a9e</code></a>
0.2.20</li>
<li><a
href="28e9b16485"><code>28e9b16</code></a>
changelog: 0.2.20</li>
<li><a
href="1e492c8428"><code>1e492c8</code></a>
strtime: fix padding with negative values in strftime</li>
<li><a
href="0cfd63b4f7"><code>0cfd63b</code></a>
strtime: apply uppercase flag to compound specifiers</li>
<li><a
href="7ed75bf197"><code>7ed75bf</code></a>
docs: tighten up the MSRV policy</li>
<li><a
href="b6977a12f2"><code>b6977a1</code></a>
examples: add program demonstrating Diesel footgun with `TIMESTAMP
WITHOUT TI...</li>
<li><a
href="b303488ae9"><code>b303488</code></a>
readme: update note about Jiff 1.0</li>
<li><a
href="e9e07b700a"><code>e9e07b7</code></a>
tz: add support for <code>emscripten</code> system timezone</li>
<li><a
href="4c33013130"><code>4c33013</code></a>
cargo: remove <code>js</code> feature from Playground metadata</li>
<li><a
href="2a884b8424"><code>2a884b8</code></a>
ci: tweak msrv build</li>
<li>Additional commits viewable in <a
href="https://github.com/BurntSushi/jiff/compare/jiff-static-0.2.19...jiff-static-0.2.20">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 Stylo to servo/stylo#309
Testing: no behavior change, though this will allow Servo to override
Stylo preferences in the future.
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
Store a list of recently used fallbacks in the `FontGroups`, keyed by
`lang` property and the detected `UnicodeBlock` and `Script` of the
character in question. This should mean that less work is done when
switching between falling back and not falling back. In addition, this
will allow better caching of `FontRef`s that come directly from the
platform font backend -- something necessary for the next generation
font fallback code.
Testing: This should not change rendering output so is covered by
existing
tests. It might have a minor affect on performance.
Fixes: This is part of #41426.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Both the `DevtoolsInstance` and the `BrowsingContextActor` maintain a
list of live connections. When a new global is created, its
`BrowsingContextActor` copies the list of active connections from the
`DevtoolsInstance`. When a client handler thread exits, the
`BrowsingContextActor`s remove the connection from their list of
connections.
This has two implications:
* `BrowsingContextActor`s don't know about connections that are created
after they were constructed, causing them to possibly incorrectly tell
script that it doesn't need to send devtools updates anymore
* the `DevtoolsInstance` never notices when connections are closed and
panics when writing to them.
To fix this, I've removed the list of connections from the
`BrowsingContextActor` and adjusted the logic to notify script when
updates aren't needed anymore accordingly.
For some reason, our tests always open two connections and close the
first one immediately, which is how I found this bug in the first place.
Part of https://github.com/servo/servo/issues/42454 - previously
d5d400c7d6/components/script/dom/globalscope.rs (L240-L242)
was always false during our tests.
---------
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
Instead of keeping dirty box tree nodes around after the damage
traversal, clear them readily (like `display: none` nodes). This
simplifies the logic during box tree reconstruction and also prepares
the damage traversal for future work.
In addition, restructure the logic of the damage traversal to make it a
bit easier to follow.
Testing: This shouldn't change observable behavior so should be covered
by existing
tests.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Oriol Brufau <obrufau@igalia.com>
Co-authored-by: Luke Warlow <lwarlow@igalia.com>
After commit 4539c7e, we no longer use `From<NormalizedAlgorithm>` trait
implementation for `SubtleAlgorithm` and `KeyAlgorithmAndDerivatives`.
We can remove these unused code.
Testing: Cleaning up. Existing tests suffice.
Signed-off-by: Kingsley Yung <kingsley@kkoyung.dev>
It turns out the HarmonyOS version numbers can be confusing. This now
puts it as the same as the OpenHarmony version numbers.
As the SDKs are backwards compatible everything should still work with
newer SDKs.
Testing: CI will test compilation and installation and manually tested
by me.
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
This PR aims to open doors for common handler for all `PaintTiming`
protocols.
Will add more logic related to `PaintTiming` here targeting completeness
of it.
Changes included in this PR.
1. Ports existing `LargestContentfulPaintCandidateCollector` to
`PaintTimingHandler`.
2. Aligns more close to **W3C** specs, added few steps as well.
3. Adding helper functions.
Testing: No change in behavior expected.
- `components/servo/tests/largest_contentful_paint.rs`
Signed-off-by: Shubham Gupta <shubham13297@gmail.com>
When decoding static image, change the layout of rgba value based on
exif orientation metadata.
Testing: More wpt are passing
Fixes: N/A
Note:
This change will make the wpt test related to `image-orientation: none`
failed, because this change apply the exif orientation unconditionally.
But, given the [`image-orientation`
spec](https://drafts.csswg.org/css-images/#the-image-orientation):
> This property is optional for implementations.
And there are more wpt tests passing, we may be able to deprioritize the
tests for `image-orientation`.
---------
Signed-off-by: rayguo17 <rayguo17@gmail.com>
Bumps [syn](https://github.com/dtolnay/syn) from 2.0.114 to 2.0.115.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dtolnay/syn/releases">syn's
releases</a>.</em></p>
<blockquote>
<h2>2.0.115</h2>
<ul>
<li>Enable GenericArgument::Constraint parsing in non-full mode (<a
href="https://redirect.github.com/dtolnay/syn/issues/1966">#1966</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="3610c34ebd"><code>3610c34</code></a>
Release 2.0.115</li>
<li><a
href="f22e80627f"><code>f22e806</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/syn/issues/1966">#1966</a>
from dtolnay/constraint</li>
<li><a
href="a3faba715b"><code>a3faba7</code></a>
Enable GenericArgument::Constraint parsing in non-full mode</li>
<li><a
href="90651578ef"><code>9065157</code></a>
Pin CI miri to nightly-2026-02-11</li>
<li><a
href="530e7e7601"><code>530e7e7</code></a>
Update toml from 0.9 to 1.0</li>
<li><a
href="0b9544a877"><code>0b9544a</code></a>
Update test suite to nightly-2026-02-11</li>
<li><a
href="6142490071"><code>6142490</code></a>
Update test suite to nightly-2026-02-09</li>
<li><a
href="92a0aa4096"><code>92a0aa4</code></a>
Raise required compiler to Rust 1.71</li>
<li><a
href="f85f4ac895"><code>f85f4ac</code></a>
Resolve unnecessary_map_or clippy lint</li>
<li><a
href="a9c0919d57"><code>a9c0919</code></a>
Raise required compiler to Rust 1.70</li>
<li>Additional commits viewable in <a
href="https://github.com/dtolnay/syn/compare/2.0.114...2.0.115">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>
There is no need to wait until box tree layout to do this and we want to
make clearing boxes a thing that happens in the damage traversal.
Testing: This should not change behavior in an observable way, so should
be covered by existing tests.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Oriol Brufau <obrufau@igalia.com>
Co-authored-by: Luke Warlow <lwarlow@igalia.com>
Whenever I open Servoshell and reload, I want to hit F5. Alas it does
nothing.
Now it will.
Testing: This level of functionality in servoshell is not tested at the
moment.
---------
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
If a replaced element has a natural width and a natural height, then the
natural width wins, and the intrinsic height is computed thru the
preferred aspect ratio.
If it has no natural width and no natural height, then the width falls
back to 300px, and again compute the intrinsic height thru the ratio.
However, if it has a natural height but no natural width, then we should
compute the intrinsic width from the natural height thru the ratio. We
were still letting the 300px fallback width win.
Testing: Some tests pass
Fixes: #42573
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
#42442 triggered a bunch of intermittent panics due to DBs being cleaned
up while tests were still trying to use them. This is very difficult to
test reliably, but replacing calls to unwrap with sending error values
to the script thread is clearly an improvement.
Testing: Some intermittent crashes now turn into intermittent timeouts.
---------
Signed-off-by: Josh Matthews <josh@joshmatthews.net>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
Writing `termination_reason` in the closure in `http_network_fetch()`
had no effect, as the response is captured by value, and cannot be
captured by mutable reference as it is needed later in the outer
function.
This is flagged as a warning with Rust 1.92:
https://github.com/servo/servo/actions/runs/21750902723/job/62748597306?pr=42402
Note: I don't understand this code deeply, I was just trying my best to
fix the warning. I'm more than happy to close this PR or change the code
if someone more familiar has a better idea of how to fix it.
Testing: Existing tests, no behaviour change.
Signed-off-by: Alice Boxhall <alice@igalia.com>
When a box needs to be rebuilt due to a style change, it previously
would rebuild the entire box subtree, including all descendants. This is
probably unnecessary when crossing independent formatting context
boundaries. This change limits box tree damage pushed downward when
entering certain types of independent formatting contexts. The types can
be expanded later, but this is just a first conservative step. This is
necessary in order to start preserving fragments in these subtrees.
Testing: This should not change observable layout behavior. We do not
really
have tests to verify these kind of optimizations.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Oriol Brufau <obrufau@igalia.com>
Co-authored-by: Luke Warlow <lwarlow@igalia.com>
Continuation of https://github.com/servo/servo/pull/42135, switch
Error::Type and Error::Range to also use CStrings internally, as they
are converted to CString for throwing JS exceptions (other get thrown as
DomException object, which uses rust string internally).
Changes in script crate are mechanical.
Testing: Should be covered by WPT tests.
Part of #42126
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
This change fixes an issue where layout damage to a node was not
clearing the inline content size cache of the parent node. In addition
it starts to clean up the damage traversal logic in preparation for
changes to the way that damage is processed and box tree layout is done.
Testing: This change adds a new WPT test.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Oriol Brufau <obrufau@igalia.com>
Co-authored-by: Luke Warlow <lwarlow@igalia.com>
When laying out the box tree from a dirty root, we were replacing the
inner layout
box contents of the dirty root, but not updating its parent. This change
fixes
that. This is important because any sort of operation that will need the
parent
will subsequently fail unless it is properly set. We do not use the
parent now, but
we will in the future.
Testing: The parent is currently unused, but it will be used in the
future. This
shouldn't change the functioning of Servo currently.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Use snakecase to be consistent. Also these names are normally quite long
already.
Testing: Just renaming.
---------
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
This is companion to https://github.com/servo/mozjs/pull/703 which makes
mozjs to use CStr(ing) in the API (where we would silently do conversion
in mozjs). This way we can avoid rust string -> c string allocations.
In the followup PR we should switch Error::Type and Error::Range to also
use CStrings internally, as they are converted to CString for throwing
JS exceptions (other get thrown as DomException object, which uses rust
string internally - although this gets converted to JSString somewhere).
Testing: It should be just refactor without any side effects so there
should be no changes to WPT results.
Try run: https://github.com/sagudev/servo/actions/runs/21328878448
Part of #42126
---------
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
Re-enable LCP calculation on WebViews after they have been
reloaded/navigated.
Scenario: LCP calculation is stopped when user interaction is detected.
When page is reloaded. No, LCP is observed. So, can't develop the
performance or benchmark tools.
Motivation: No explicit specs found for this, but this was missed during
implementation from my side. And also observed inconsistent with Chrome.
Testing: `components/servo/tests/largest_contentful_paint.rs`
Fixes: #42533
---------
Signed-off-by: Shubham Gupta <shubham.gupta@chromium.org>
We still keep the key performance optimization. But it is important to
send the event to script, if other conditions are still satisfied.
Testing:
- `multi-touch-interfaces.html` no longer TIMEOUT, which contains 494
subtests.
-
`pointerevent_pointerout_after_pointercancel_touch.html`/`pointerevent_pointerleave_after_pointercancel_touch.html`
no longer scroll **indefinitely**. These two tests will work once we
have `pointerout` and `pointerleave`.
Part of #41923.
---------
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
Bumps [avif-serialize](https://github.com/kornelski/avif-serialize) from
0.8.6 to 0.8.8.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="78fbc09753"><code>78fbc09</code></a>
Bump</li>
<li><a
href="42646cd8d9"><code>42646cd</code></a>
Fix tests</li>
<li><a
href="84601afbbf"><code>84601af</code></a>
feat: add clli and mdcv HDR metadata box support</li>
<li>See full diff in <a
href="https://github.com/kornelski/avif-serialize/compare/v0.8.6...v0.8.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: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [deranged](https://github.com/jhpratt/deranged) from 0.5.5 to
0.5.6.
<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 />
[](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 logic was (accidentally?) changed in #40761. Revert it back to the
original one, which is simpler, and matches Blink and WebKit.
Testing: Adding new test
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
Bumps [clap](https://github.com/clap-rs/clap) from 4.5.57 to 4.5.58.
<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.58</h2>
<h2>[4.5.58] - 2026-02-11</h2>
</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.58] - 2026-02-11</h2>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="88f13cb4b0"><code>88f13cb</code></a>
chore: Release</li>
<li><a
href="fe2d731605"><code>fe2d731</code></a>
docs: Update changelog</li>
<li><a
href="b256739045"><code>b256739</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/6131">#6131</a>
from mernen/do-not-suggest-opts-after-escape</li>
<li><a
href="8aaf704f56"><code>8aaf704</code></a>
fix(complete): Do not suggest options after "--"</li>
<li><a
href="4a86fee1b5"><code>4a86fee</code></a>
test(complete): Illustrate current behavior</li>
<li><a
href="281f8aec7c"><code>281f8ae</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/6126">#6126</a>
from epage/p</li>
<li><a
href="3cbce42cc2"><code>3cbce42</code></a>
docs(cookbook): Make typed-derive easier to maintain</li>
<li><a
href="9fd4dc9e4e"><code>9fd4dc9</code></a>
docs(cookbook): Provide a custom TypedValueParser</li>
<li><a
href="8f8e861345"><code>8f8e861</code></a>
docs(cookbook): Add local enum to typed-derive</li>
<li><a
href="926bafef0b"><code>926bafe</code></a>
docs(cookbook): Hint at overriding value_name</li>
<li>Additional commits viewable in <a
href="https://github.com/clap-rs/clap/compare/clap_complete-v4.5.57...clap_complete-v4.5.58">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>
Since the steps for
https://html.spec.whatwg.org/multipage/parsing.html#the-end are
scattered throughout various pieces, it has been difficult to figure out
when to run what.
To remedy that, introduce the concept of phases. These phases are
checked in every method that needs to
"Spin the event loop" to know whether
1. It is the appropriate time to continue with #the-end
2. It has fully achieved its goal
For example, when processing deferred scripts, we need to do this after
a deferred script has finished loading. But we also need to do it at the
start of parsing, since we might not have any deferred scripts at all.
Therefore, each previous step sets the appropriate phase and calls the
corresponding next step. Each step then verifies its conditions and
continues if required.
Part of #41972
---------
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
Signed-off-by: Tim van der Lippe <TimvdLippe@users.noreply.github.com>
When the servo window is closed while there is an active devtools
connection then the devtools threads reliably panics because it can't
talk to script anymore. We can simply ignore the `Disconnected` error
when shutting down. If the script thread already shut down then there's
nothing meaningful for the devtools to send anyways.
Testing: This kind of interaction is hard to test. I've not written an
automated test.
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
The `#[expect(dead_code)]` annotations in
`components/servo/tests/common/mod.rs` and
`components/servo/tests/multiprocess.rs` were no longer valid because
the related helpers are currently used by tests. Removed unfulfilled
`#[expect(dead_code)]` annotations from the above files.
Testing: Tests compile cleanly after this change.
Fixes: #42412
Signed-off-by: Keerti Gupta <24bsm032@iiitdmj.ac.in>
This change makes the devtools inspector show any event listeners that
are attached to a node. The primary motivation is making the devtools
more useful for debugging real-world websites.
<img width="536" height="268" alt="image"
src="https://github.com/user-attachments/assets/5ba13e41-14b4-4202-b994-eadff5d1c6b5"
/>
You can also click on the event listener to show some more info, though
most of that (everything except the event type and the event phase) is
currently just placeholder text:
<img width="1360" height="456" alt="image"
src="https://github.com/user-attachments/assets/ec025847-43fc-489c-8b26-46afb6dada64"
/>
Testing: This change adds a new test
---------
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
Move Javascript tests to a separate file as `tests/webview.rs` is
getting too cluttered.
Testing: Existing Tests Passed
Signed-off-by: Shubham Gupta <shubham.gupta@chromium.org>
- Redirect stdin to null device when testing Python command. This fixes
the issue with Windows.
- Use `--frozen` for both test command and actual command used in build.
This is what we've been doing for `mach`.
Before this PR, uv fails due to the missing `--frozen` and we fall back
to python3 in CI for various platforms.
Fixes: #42527
---------
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
Implement MallocSizeOf for most of WebXr. Mostly uncontroversal changes.
Of note:
- Implementation of size_of for euclid::RigidTransform
- Implementation of size_of for euclid::Vector3D
- Join is currently ignored as the type is very complicated.
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
*Describe the changes that this pull request makes here. This will be
the commit message.*
Testing: Compilation is the test.
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
Bumps [cryptography](https://github.com/pyca/cryptography) from 46.0.4
to 46.0.5.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst">cryptography's
changelog</a>.</em></p>
<blockquote>
<p>46.0.5 - 2026-02-10</p>
<pre><code>
* An attacker could create a malicious public key that reveals portions
of your
private key when using certain uncommon elliptic curves (binary curves).
This version now includes additional security checks to prevent this
attack.
This issue only affects binary elliptic curves, which are rarely used in
real-world applications. Credit to **XlabAI Team of Tencent Xuanwu Lab
and
Atuin Automated Vulnerability Discovery Engine** for reporting the
issue.
**CVE-2026-26007**
* Support for ``SECT*`` binary elliptic curves is deprecated and will be
removed in the next release.
<p>.. v46-0-4:<br />
</code></pre></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="06e120e682"><code>06e120e</code></a>
bump version for 46.0.5 release (<a
href="https://redirect.github.com/pyca/cryptography/issues/14289">#14289</a>)</li>
<li><a
href="0eebb9dbb6"><code>0eebb9d</code></a>
EC check key on cofactor > 1 (<a
href="https://redirect.github.com/pyca/cryptography/issues/14287">#14287</a>)</li>
<li><a
href="bedf6e186b"><code>bedf6e1</code></a>
fix openssl version on 46 branch (<a
href="https://redirect.github.com/pyca/cryptography/issues/14220">#14220</a>)</li>
<li>See full diff in <a
href="https://github.com/pyca/cryptography/compare/46.0.4...46.0.5">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)
You can disable automated security fix PRs for this repo from the
[Security Alerts page](https://github.com/servo/servo/network/alerts).
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
We now use a replay recorded via mitmproxy to run the benchmarks.
1. Check the GitHub cache for a mitmproxy dump.
2. If it does not exists create it with update_mitmproxy_dump and store
it in the GitHub cache
3. Run mitmproxy in Replay mode instead of Forward mode with the above
given dump.
This should reduce the jitter of tests that depend on network.
This works currently for the scenariotests and speedometer with
hitrace-bencher soon to follow.
Testing: Tested with two separate runs.
https://github.com/Narfinger/servo/actions/runs/21828840808 has the
cache already populated.
The noisy output of mitmdump actually shows that it is answering the
queries from replay for all scenario tests.
https://github.com/Narfinger/servo/actions/runs/21831381306/job/62991977638
shows how before the scenario tests the cache is created and stored.
---------
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
In https://github.com/servo/servo/pull/42296 i made a mistake during the
final changes, accidentally inverting a condition. This was not caught
by CI because we don't run devtools tests in CI.
Testing: `./mach test-devtools` now passes again
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
Bumps [quickcheck](https://github.com/BurntSushi/quickcheck) from 1.0.3
to 1.1.0.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="d58e3cffb7"><code>d58e3cf</code></a>
quickcheck_macros-1.1.0</li>
<li><a
href="03ab585865"><code>03ab585</code></a>
Fix README examples</li>
<li><a
href="826f10baa1"><code>826f10b</code></a>
Add shrinking support for arrays (<a
href="https://redirect.github.com/BurntSushi/quickcheck/issues/330">#330</a>)</li>
<li><a
href="87b46b90ec"><code>87b46b9</code></a>
Update some links (<a
href="https://redirect.github.com/BurntSushi/quickcheck/issues/332">#332</a>)</li>
<li><a
href="a0216c932f"><code>a0216c9</code></a>
Revert <code>Gen</code> renaming, rename <code>gen</code> method</li>
<li><a
href="2c2cd21935"><code>2c2cd21</code></a>
Update to rand 0.9</li>
<li><a
href="9ddbbd6b68"><code>9ddbbd6</code></a>
deps: update to syn 2.0 (<a
href="https://redirect.github.com/BurntSushi/quickcheck/issues/317">#317</a>)</li>
<li><a
href="238f340a36"><code>238f340</code></a>
Bump MSRV to 1.71</li>
<li><a
href="32d7bc4edf"><code>32d7bc4</code></a>
Upgrade to 2021 edition</li>
<li><a
href="44b81bebcf"><code>44b81be</code></a>
deps: update to env_logger 0.11 (<a
href="https://redirect.github.com/BurntSushi/quickcheck/issues/327">#327</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/BurntSushi/quickcheck/compare/1.0.3...quickcheck_macros-1.1.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 [toml_parser](https://github.com/toml-rs/toml) from
1.0.6+spec-1.1.0 to 1.0.7+spec-1.1.0.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="e3c7aa75eb"><code>e3c7aa7</code></a>
chore: Release</li>
<li><a
href="2dabe11acd"><code>2dabe11</code></a>
docs: Update changelog</li>
<li><a
href="fb98198faf"><code>fb98198</code></a>
fix(parser): Don't panic on bad hex characters (<a
href="https://redirect.github.com/toml-rs/toml/issues/1097">#1097</a>)</li>
<li><a
href="85761c401d"><code>85761c4</code></a>
fix(parser): Avoid panic</li>
<li><a
href="5edb4770ad"><code>5edb477</code></a>
fix(parser): Don't panic on bad hex characters</li>
<li><a
href="cac04afcdd"><code>cac04af</code></a>
test(parser): Show another assert case</li>
<li><a
href="d96417a06f"><code>d96417a</code></a>
fix(parser): Consistently assume spaces mean strings</li>
<li><a
href="88b657fee9"><code>88b657f</code></a>
test(parser): Show assert case</li>
<li><a
href="0bf5c6dc3a"><code>0bf5c6d</code></a>
refactor(parser): Clarify index arithmetic</li>
<li><a
href="f115dcb966"><code>f115dcb</code></a>
refactor(parser): Reduce decode/scalar visibility</li>
<li>Additional commits viewable in <a
href="https://github.com/toml-rs/toml/compare/toml_parser-v1.0.6...toml_parser-v1.0.7">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 [libfuzzer-sys](https://github.com/rust-fuzz/libfuzzer) from
0.4.10 to 0.4.12.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/rust-fuzz/libfuzzer/blob/main/CHANGELOG.md">libfuzzer-sys's
changelog</a>.</em></p>
<blockquote>
<h2>0.4.12</h2>
<p>Released 2026-02-10.</p>
<h3>Changed</h3>
<ul>
<li>Recommend <code>SmallRng</code> over <code>StdRng</code> in the
examples for faster, more lightweight
seeding and sampling</li>
<li>Updated <code>rand</code> dependency from 0.8.5 to 0.10</li>
<li>Updated <code>flate2</code> dependency from 1.0.24 to 1.1</li>
<li>Rename <code>gen</code> variable to <code>rng</code> for better 2024
Edition compatibility</li>
</ul>
<hr />
<h2>0.4.11</h2>
<p>Released 2026-02-10.</p>
<h3>Changed</h3>
<ul>
<li>Updated to <code>libFuzzer</code> commit <code>a47b42eb9f9b</code>
(<code>release/22.x</code>).</li>
</ul>
<hr />
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/rust-fuzz/libfuzzer/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>
`local_storage_origins` is ~2-3kb of memory, which is probably large
enough to be included in the report, given that it likely can grow much
more. A much bigger memory user is sqlite3, but I'm still working on
finding a way to extract memory usage for it.
Testing: Manual
Signed-off-by: Ashwin Naren <arihant2math@gmail.com>
This implements MallocSizeOf for DevtoolsInstance. Major changes:
- Newtype for ActorRegistry because AtomicRefCell<HashMap<String,
Arc<dyn Actor>>> did not like mallocsizeof (even with trait bound on
Actor)
- Implement MallocSizeOf for BTreeSet.
- Implement MallocSizeOf of 0 for AtomicU32 and TcpStream
- Ignore a couple of MallocSizeof for http::Method, http::HeaderMap and
json::Value
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
Testing: Compilation is the test.
Fixes: Part of addressing https://github.com/servo/servo/issues/42453
---------
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
Implement MallocSizeOf for most of former servo media crate.
Most of this should be uncontroversal as it is just adding derives.
Of note are implementation of std::sync::mpsc::Sender<T> with currently
size_of=0 and an ignored Box<[f32, MAX_FFT_SIZE]>.
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
Testing: Compilation is the test.
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
Moves the `Drop` implementation for `GPUCommandBuffer` to a separate
struct, `DroppableGPUCommandBuffer`. Updates bindings config to remove
`allowDropImpl` which is no longer needed.
Testing: No tests added
Fixes: Partially #26488
Signed-off-by: Domenico Rizzo <domenico.rizzo@gmail.com>
This adds a pref which will be used to enable the experimental
accessibility tree.
Testing: No testing: just adds a pref which is currently unused.
Fixes: part of #4344
Signed-off-by: Alice Boxhall <alice@igalia.com>
Co-authored-by: delan azabani <dazabani@igalia.com>
This PR checks if `ImageKey` is available, then it marks it as
`Contentful`. For Videos, if valid `poster` or `first frame`, it will be
stored in `ImageKey`.
Hence, appropriate way to mark `Contentful`.
Testing:
- `/paint-timing/fcp-only/fcp-video-poster.html`
- `/paint-timing/fcp-only/fcp-video-frame.html`
Fixes#42359Fixes#42360
Signed-off-by: Shubham Gupta <shubham13297@gmail.com>
No longer allow showing two context menus as once. Instead only allow a
single context menu at a time. Multiple context menus cause issues with
egui, so it's quite likely that this will cause issues with even more
embedders. This fixes an issue where egui draws scary runtime errors all
over servoshell when opening multiple context menus.
Testing: This changes adds a new WebView API test.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
This allows us to `console.log` objects from JS and have a preview of
them appear in the console.
Interacting with said preview doesn't work yet, because the devtools
object actor is a stub.
<img width="600" height="78" alt="image"
src="https://github.com/user-attachments/assets/d896471f-3982-4406-94d4-b13eebabe337"
/>
Testing: This change adds a test
---------
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
Build hangs on Windows because running `python` with no arguments in
non-TTY context waits for stdin indefinitely.
Python's behavior differs by platform:
- Linux: Detects non-TTY stdin, exits immediately
- Windows: Waits for stdin regardless, hangs forever
Fix: Add `--version` to probe so it exits immediately on all platforms.
Since `--version` is now part of the probe, return fresh Command to
prevent it from persisting into actual script invocation.
---------
Signed-off-by: npiesco <ngpiesco@gmail.com>
This struct is only ever used by Servo so there is not reason to have it
defined in stylo. A follow-up PR in stylo will remove the struct.
Testing: This change simply moves an existing struct from stylo, so
shouldn't have any behavioral changes.
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
Tests are implicitly detected by `cargo`. So, it is not required to
mention them unless required custom requirments.
Testing: Existing Unit Tests Passed.
Signed-off-by: Shubham Gupta <shubham.gupta@chromium.org>
Remaining failures are due to the missing implementation of the pointer
capture and pointer lock APIs, as well as:
Requires User Activation support:
/html/user-activation/activation-trigger-pointerevent.html?mouse
Blocked on https://github.com/servo/servo/issues/41227 :
/pointerevents/compat/pointerevent_mouse-pointer-on-scrollbar.html
Requires persistentDeviceId:
/pointerevents/persistentDeviceId/get-persistendeviceid-from-pointer-event.tentative.html
/pointerevents/persistentDeviceId/get-persistendeviceid-from-pointer-mouse-event.tentative.html
Requires pointerenter, pointerover, pointerout, pointerleave events:
/pointerevents/pointerevent_pointerId_scope.html
Requires pointerrawupdate event:
/pointerevents/pointerevent_pointerrawupdate.html
/pointerevents/pointerevent_pointerrawupdate.https.html
Consider implementing non-standard attributes toElement and fromElement:
See https://w3c.github.io/pointerevents/#attributes-and-default-actions
Fails because the pointerId is always 0 for pointermove, maybe caused by
commit 7b00b54ee8 :
/pointerevents/pointerevent_pointermove_isprimary_same_as_pointerdown.html?touch
https://github.com/servo/servo/issues/41250
Testing: Updated wpt expectations
Fixes: https://github.com/servo/servo/issues/38435
Signed-off-by: webbeef <me@webbeef.org>
Most likely a regression introduced in #42208 where the pending loads
counter has been reset. For successful request this wasn't an issue, but
for failed requests it was. Therefore, guard against these generation
request problems by bailing out as soon as we post-process the request
(which we do for all failed requests).
Fixes#42477
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
Bumps [unicode-ident](https://github.com/dtolnay/unicode-ident) from
1.0.22 to 1.0.23.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dtolnay/unicode-ident/releases">unicode-ident's
releases</a>.</em></p>
<blockquote>
<h2>1.0.23</h2>
<ul>
<li>Update <code>rand</code> dev dependency to 0.10</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="94f16bda86"><code>94f16bd</code></a>
Release 1.0.23</li>
<li><a
href="4fb03ab205"><code>4fb03ab</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/unicode-ident/issues/45">#45</a>
from dtolnay/rand</li>
<li><a
href="93f6598c48"><code>93f6598</code></a>
Raise required compiler to Rust 1.71</li>
<li><a
href="b8973569fb"><code>b897356</code></a>
Update rand from 0.9 to 0.10</li>
<li><a
href="189659d596"><code>189659d</code></a>
Exclude benchmark dependencies from being compiled by miri</li>
<li><a
href="4a21330970"><code>4a21330</code></a>
Update actions/upload-artifact@v5 -> v6</li>
<li><a
href="8c3d7d7121"><code>8c3d7d7</code></a>
Update actions/upload-artifact@v4 -> v5</li>
<li><a
href="c96169e542"><code>c96169e</code></a>
Update to 2021 edition</li>
<li><a
href="8f51926b02"><code>8f51926</code></a>
Raise required compiler to Rust 1.68</li>
<li><a
href="88c4aec114"><code>88c4aec</code></a>
Raise minimum tested compiler to rust 1.86</li>
<li>Additional commits viewable in <a
href="https://github.com/dtolnay/unicode-ident/compare/1.0.22...1.0.23">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 [zmij](https://github.com/dtolnay/zmij) from 1.0.19 to 1.0.20.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="41df483ad3"><code>41df483</code></a>
Release 1.0.20</li>
<li><a
href="4d804ff133"><code>4d804ff</code></a>
Sync to vitaut/zmij@378575c</li>
<li><a
href="5a8a035dd5"><code>5a8a035</code></a>
Shrink unused Pow10SignificandsTable data</li>
<li><a
href="b7080177a3"><code>b708017</code></a>
Sync to vitaut/zmij@e9bf7b3</li>
<li><a
href="cb145cccda"><code>cb145cc</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/zmij/issues/20">#20</a> from
dtolnay/rand</li>
<li><a
href="1fe8dffd51"><code>1fe8dff</code></a>
Raise required compiler to Rust 1.71</li>
<li><a
href="87278a4090"><code>87278a4</code></a>
Update rand from 0.9 to 0.10</li>
<li><a
href="871d1e2d7f"><code>871d1e2</code></a>
Sync to vitaut/zmij@9415751</li>
<li><a
href="4043fa767b"><code>4043fa7</code></a>
Ignore modulo_one clippy lint</li>
<li><a
href="077ffb362c"><code>077ffb3</code></a>
Sync to vitaut/zmij@7dede32</li>
<li>Additional commits viewable in <a
href="https://github.com/dtolnay/zmij/compare/1.0.19...1.0.20">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>
Implements the `set_a_cookie` behavior from the cookiestore spec.
Testing: cookiestore WPT tests cover this
---------
Signed-off-by: Sebastian C <sebsebmc@gmail.com>
We implemented many more MallocSizeOf tests (even if some such as
channels are zero).
Meaning we can not ignore more of it making the code cleaner.
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
Testing: Compilation is the test.
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
Similar to about:config from firefox. All preferences are editable;
editing them mid-runtime is not guaranteed to cause any effects. This is
separate from servo:preferences, which selectively groups and exposes
preferences. This probably would become more useful if/when preferences
become persistent.
<img width="1136" height="880" alt="Screenshot 2025-10-31 at 10 19
57 PM"
src="https://github.com/user-attachments/assets/2ef759d8-06a4-457f-b9df-331cc3525338"
/>
Followup work:
- Remove `getStringPreference`, `getIntPreference`, and
`getBoolPreference`. Using `getPreference` and `preferenceType` is more
flexible.
- Make more of these config options work on the fly.
- Allow for reverting config options.
---------
Signed-off-by: Ashwin Naren <arihant2math@gmail.com>
Update ohos.yml hitrace-bench and runs.json to 0.10.0
Testing: This should be testing using CI
Signed-off-by: jane <5373400+janeoa@users.noreply.github.com>
`contextdir.chdir` is not thread-safe, but the formatting runs
synchronously in a single thread, so it's fine.
Testing: Made some changes to various `.rs`, `.py`, and `.toml` files,
and ran `../mach fmt` from a few different subdirectories to ensure it
picks up the files to reformat.
Fixes: #42472
Signed-off-by: pralkarz <pralkarz@tuta.com>
After the changes from #42443, there are no longer any unhandled errors
in the`idbobjectstore_createIndex.any.worker.html` tests, so the result
is `TIMEOUT` rather than `ERROR`.
Also remove the now-passing test labels for consistency with other
`.ini` files.
Testing: No unexpected results in
`idbobjectstore_createIndex.any.worker.html`, the tests now run as
expected.
Fixes: #42445
Signed-off-by: pralkarz <pralkarz@tuta.com>
`start_trace_ex` includes not only name, but fields and values of the
trace
Testing: I've passed LargestContentfulPaint pref and got it in the
hitrace.
---------
Signed-off-by: jane <5373400+janeoa@users.noreply.github.com>
This continues #41916
Changelog:
- Upstream:
360787fff5...7cd2a178d3
- Servo fixups:
e4d50e905e...d9831d464b
Stylo tracking issue: https://github.com/servo/stylo/issues/305
In particular, this adds support for `alignment-baseline` and
`baseline-shift`, and turns `vertical-align` into a shorthand of them.
This also introduces `vertical-align: center`.
Testing: Various tests improve. Some internal tests are updated because
they were wrong. And some fail because we don't support presentation
attributes on SVG elements.
---------
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
When doing event handling on desktop servoshell, ensure that
`WindowEvent::Focused(true)` is forwarded to egui. This makes it so that
egui knows to show the text cursor in the URL bar input field.
Testing: We currently do not have a way to test visual behavior at this
level of servoshell.
Fixes: #42091.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
As you can tell from branch name, the initial goal is to add multi-touch
support for touchmove.
But things get too messy, so I decide to split into two PRs.
This PR
- Track `TouchId` in `PendingTouchInputEvent`
- Rename `id` to `touch_id` for `TouchId`. This is to make distinction
from `id: InputEventId`,
which became very confusing while implementing the initial goal.
Testing: No behaviour change.
Part of #41923
---------
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
This updates the Openharmony required version to API lvl 21 (6.0.0.1
OpenHarmony and 6.0.1 HarmonyOS).
We need API level 19+ for https://github.com/servo/servo/pull/41738,
however an API level 19 SDK was never released for OpenHarmony. API-20
seems to be the same as the the 6.0-beta release, so we are playing it
safe and directly going for the API-21 release, which is also the 6.0.1
release that the actual HarmonyOS 6 update was, so it should be the most
polished.
This also has the update for the version used in CI.
The HarmonyOS runners are already updated.
Testing: Successful openharmony run here:
https://github.com/Narfinger/servo/actions/runs/21755920480
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
Bumps [memchr](https://github.com/BurntSushi/memchr) from 2.7.6 to
2.8.0.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="886ca4ca48"><code>886ca4c</code></a>
2.8.0</li>
<li><a
href="7de50d0f7a"><code>7de50d0</code></a>
memmem: add owned finder constructor variants</li>
<li><a
href="1230fc5c63"><code>1230fc5</code></a>
benchmarks: fix date in file name</li>
<li><a
href="43300c6cb6"><code>43300c6</code></a>
benchmarks: add latest x86-64 benchmark results</li>
<li><a
href="9bf2301912"><code>9bf2301</code></a>
benchmarks: update everything</li>
<li>See full diff in <a
href="https://github.com/BurntSushi/memchr/compare/2.7.6...2.8.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 [clap](https://github.com/clap-rs/clap) from 4.5.56 to 4.5.57.
<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.57</h2>
<h2>[4.5.57] - 2026-02-03</h2>
<h3>Fixes</h3>
<ul>
<li>Regression from 4.5.55 where having an argument with
<code>.value_terminator("--")</code> caused problems with an
argument with <code>.last(true)</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.57] - 2026-02-03</h2>
<h3>Fixes</h3>
<ul>
<li>Regression from 4.5.55 where having an argument with
<code>.value_terminator("--")</code> caused problems with an
argument with <code>.last(true)</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="69c0ddbbfb"><code>69c0ddb</code></a>
chore: Release</li>
<li><a
href="8206bba73f"><code>8206bba</code></a>
docs: Update changelog</li>
<li><a
href="c109d67ea4"><code>c109d67</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/6104">#6104</a>
from epage/hide</li>
<li><a
href="9d7f2128f7"><code>9d7f212</code></a>
fix(complete): Hide dot files on dynamic completer</li>
<li><a
href="77b3fdbbea"><code>77b3fdb</code></a>
test(complete): Show dot file behavior</li>
<li><a
href="f89b9b8d1b"><code>f89b9b8</code></a>
test(derive): Make stable across upgrade</li>
<li><a
href="58eb8a937a"><code>58eb8a9</code></a>
chore: Release</li>
<li><a
href="10a2a7559b"><code>10a2a75</code></a>
docs: Update changelog</li>
<li><a
href="a42eebf56b"><code>a42eebf</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/6103">#6103</a>
from epage/mut_subcommands</li>
<li><a
href="5335f54d73"><code>5335f54</code></a>
feat: Add Command::mut_subcommands</li>
<li>Additional commits viewable in <a
href="https://github.com/clap-rs/clap/compare/clap_complete-v4.5.56...clap_complete-v4.5.57">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 [ryu](https://github.com/dtolnay/ryu) from 1.0.22 to 1.0.23.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dtolnay/ryu/releases">ryu's
releases</a>.</em></p>
<blockquote>
<h2>1.0.23</h2>
<ul>
<li>Update <code>rand</code> dev dependency to 0.10</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="f0b52bb194"><code>f0b52bb</code></a>
Release 1.0.23</li>
<li><a
href="631348be50"><code>631348b</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/ryu/issues/62">#62</a> from
dtolnay/rand</li>
<li><a
href="e9960fd2cd"><code>e9960fd</code></a>
Raise required compiler to Rust 1.71</li>
<li><a
href="04a394cdfa"><code>04a394c</code></a>
Update rand from 0.9 to 0.10</li>
<li><a
href="a3085c5842"><code>a3085c5</code></a>
Update rand_xorshift dev-dependency to 0.5 release candidate</li>
<li><a
href="989ed6173d"><code>989ed61</code></a>
Ignore rand_xorshift 0.5.0 until release of rand 0.10.0</li>
<li><a
href="8fa153cd97"><code>8fa153c</code></a>
Sync to ulfjack/ryu@e3e090c</li>
<li><a
href="03cc7950de"><code>03cc795</code></a>
Switch to 9975WX benchmark data</li>
<li><a
href="b236111376"><code>b236111</code></a>
Sync to ulfjack/ryu@1264a94</li>
<li><a
href="e4cdd4988c"><code>e4cdd49</code></a>
Delete old chart code</li>
<li>See full diff in <a
href="https://github.com/dtolnay/ryu/compare/1.0.22...1.0.23">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 the sea-query-related group with 1 update:
[sea-query](https://github.com/SeaQL/sea-query).
Updates `sea-query` from 1.0.0-rc.30 to 1.0.0-rc.31
<details>
<summary>Commits</summary>
<ul>
<li><a
href="94d7e90cf1"><code>94d7e90</code></a>
1.0.0-rc.31</li>
<li><a
href="11afe6845e"><code>11afe68</code></a>
Add Expr eq_any and ne_all</li>
<li><a
href="3100ce95c0"><code>3100ce9</code></a>
Add Value::array_type</li>
<li><a
href="66d422749b"><code>66d4227</code></a>
Revert "Support &[String]"</li>
<li><a
href="5d8c2f9141"><code>5d8c2f9</code></a>
Support &[String]</li>
<li><a
href="d3bcb0dfd1"><code>d3bcb0d</code></a>
Fix GENERATED ALWAYS</li>
<li><a
href="0000060896"><code>0000060</code></a>
clarify default behaviour on StringLen</li>
<li><a
href="af866a9d69"><code>af866a9</code></a>
Implement SELECT INTO for Postgres</li>
<li><a
href="cf2e79ad21"><code>cf2e79a</code></a>
sea-query-sqlx 0.8.0-rc.14</li>
<li>See full diff in <a
href="https://github.com/SeaQL/sea-query/compare/1.0.0-rc.30...1.0.0-rc.31">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 <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>
There has been a weird discrepancy between headed/headless test
automation,
as stated in #42386 and
https://github.com/servo/servo/issues/42320#issuecomment-3846005540.
The problem identified is more general than the intial issue:
we need to use CSS Pixel and Device Pixel consistently in these cases.
- Convert threshold unit to ensure cross-platform consistency.
- Adjust `TOUCH_PAN_MIN_SCREEN_PX`: this is tested on Android/Ohos,
to match the pinch/scrolling threshold of Firefox/Chrome.
This is critical for test automation which always relies on CSS pixel.
Testing: Added which ensures pinch zoom does happen, and there is no
crash for #42320.
Fixes: #42386
---------
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
The implementation of `attr()` in Stylo is not complete, but this way we
can start testing for it.
Bumps Stylo to https://github.com/servo/stylo/pull/306
Testing: Various tests pass, also a few failures. No impact on users,
even with experimental features enabled.
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
This PR adds a check to ensure that createIndex and deleteIndex throw an
InvalidStateError if the object store has been deleted, aligning with
the W3C spec.
I checked the spec to make sure the error check happens in the right
order (checking the transaction mode before the deleted state). I've
verified this with the Web Platform Tests, and the createIndex test is
now passing.
Fixes#42436
---------
Signed-off-by: bulltickr <verbroekj@gmail.com>
Retrieve already stored indexes from the backend when querying for other
object store data.
Also removes the extraneous blocking IPC call when creating an
`IDBObjectStore` object by batching all the info into a single struct.
Testing: WPT
Fixes: #42438
---------
Signed-off-by: Ashwin Naren <arihant2math@gmail.com>
This is in preparation of #42361, which will add support for
`baseline-shift`, so we shouldn't skip these tests.
The `animation` and `model` and `parsing` subdirectories also seem
relevant.
Thus this only skips `initial-letter` and `text-box-trim`.
Testing: Just enabling more tests
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
Servo does not yet calculate the ink overflow area, as this sort of
thing is usually a result of `contain: paint` which Servo does not
support yet. We just need to ensure that text clipping is large
enough to contain the ink of all of the glyphs in the run. This change
just expands the rectangle based on glyph advances by 2 times the
largest advance, which should be big enough for most glyphs.
This is a big of a workaround until we have support for `contain:
paint`.
Testing:
- This change adds a Servo-specific test to ensure glyphs are fully
inked. While this test would run just fine in other browsers, it isn't
very
useful to them as this is test is very specific to the way that Servo
draws
glyphs.
- This also fixes a variety of existing WPT tests.
Fixes: #41413.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Implements `createIndex` and `deleteIndex`, they have already been
implemented in the backend.
Testing: WPT
Fixes: Partially #38100
---------
Signed-off-by: Ashwin Naren <arihant2math@gmail.com>
Replace `crate::script_runtime::JSContext` with `js::context::JSContext`
in `BroadcastChannel::PostMessage` and update interface binding.
Testing: Builds and runs locally.
Part of: https://github.com/servo/servo/issues/42347
---------
Signed-off-by: BryanSmith00 <bryansmith8023@tuta.com>
Trims leading and trailing spaces and tabs for names and values in
Get/GetAll/Set. The specification does this in the query/set cookie
methods but those functions are split across the script, resource
thread, and cookie storage. Instead I'm normalize the values at the API
entry points so we have the normalized values everywhere.
Testing: Cookiestore WPT tests cover this
Signed-off-by: Sebastian C <sebsebmc@gmail.com>
Skip push hooks for try command. This speeds up try for me, which
normally means waiting for clippy a second time. The commit step is
already using `--no-verify`.
Testing: tested this change locally and it works
Signed-off-by: Sebastian C <sebsebmc@gmail.com>
Implement steps 1. and 2. of the websocket constructor to resolve the
url against the current settings API base URL.
Testing: Some WPT tests are now passing
Signed-off-by: webbeef <me@webbeef.org>
The import key operations of
- RSASSA-PKCS1-v1_5 (`rsassa_pkcs1_v1_5_operation::import_key`)
- RSA-PSS (`rsa_pss::import_key`)
- RSA_OAEP (`rsa_oaep::import_key`)
only differ from each other by a few steps. This patch combines them
into a single function (`rsa_common::import_key`) shared among them.
The enum variant `RsaAlgorithm::RsaSsaPkcs1v15` is also renamed as
`RsaAlgorithm::RsassaPkcs1v1_5` for clarity.
Testing: Refactoring. Existing tests suffice.
Signed-off-by: Kingsley Yung <kingsley@kkoyung.dev>
Start with implementing the new algorithms per the spec. This fixes the
case where the load event should be fired, but only if a src exists and
it is about:blank and it is connected for the very first time.
Part of #31973
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
Also fixes propagating expiry clamping to underlying cookie object. This
matters when attempting to inspect expiry time from a retrieved cookie.
According to the WPT tests, setting max-age in a cookie string is
supposed to be visible in the retrieved expiry.
Testing: cookiestore WPT tests cover this behavior
Signed-off-by: Sebastian C <sebsebmc@gmail.com>
This was the last failure in this directory. To fix it, I had to spelunk
into a couple of places:
1. We shouldn't use the `base_element()` of the document, but select the
first base element, regardless if it has an empty href or not
2. We didn't implement target checking for elements. Only some values
are valid and an empty target (which the test also confusingly uses) is
not valid. Hence, it should fallback to the base element
3. We weren't sanitizing the value in case it contains an ASCII tab or
newline + U+003C. This is true for both the form target as well as for
other link elements.
All in all, added a lot more specification text to figure out what was
going on.
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
Smoketest is subsumed by scenario test and can be removed.
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
Testing: *Describe how this pull request is tested or why it doesn't
require tests*
---------
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
This change merges http://github.com/servo/media into this repository.
It is only used by Servo and version upgrades are complicated by having
two repositories. In addition, this avoids the need to refer to
individual commit hashes in the Servo `Cargo.toml`. The hope is that
merging these two repositories will lead to better code organization /
simplification like we have seen with the WebXR support. Initiailly, the
idea was that this media support could be shared with the wider Rust
ecosystem, but I think that hasn't worked out as planned due to the fact
that it is difficult to use the various media packaes outside of the
Servo project and the fact that no one seems to be doing this.
Some changes were made when importing the code:
- The second commit in this PR addresses new clippy warnings from the
imported code.
- GStreamer Packages are no longer renamed in the media code, so that
they are named the same as they are currently in Servo.
- Some examples are not ported as they require being run interactively
and depend on older version of important libraries like winit.
Having these dependencies in the core part of Servo isn't very
convenient. Removed examples:
- `audio_decoder.rs`: This is meant to be run interactively with a
file so isn't very useful for testing.
- Depended on winit GUI (`player` subdirectory):
- `media_element_source_node.rs`
- `play_media_stream.rs`
- `simple_player.rs`
- `muted_player.rs`
- `siple_webrtc.rs`: Depended on `webrtc` library:
Testing: This is covered by existing tests. In addition, the job which
runs
the media examples is added to the unit test workflow.
---------
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
when generating rust bindings for webidl typedef, the `<D>` generic Type
would not be added for record<Key, DomInterface> because
`containsDomInterface` does not take record into account. This change
add the is_Record check in `containsDomInterface`, so `typedef
record<Key, DomInterface>` can be successfully build.
Testing: Manually tested with
https://github.com/servo/servo/issues/42362, and building from scratch
with `./mach build` is successful.
Fixes: https://github.com/servo/servo/issues/42362
---------
Signed-off-by: rayguo17 <rayguo17@gmail.com>
When a `<link>` element loads a stylesheet then it calls
`ElementStylesheetLoader::new`, followed immediately by
calling `load` on the new loader. This is the only place where these
functions are used, so we can coalesce them together and avoid an
unreachable assertion in the process.
This should have no impact on the end user, it's just a cleanup.
Testing: Regressions should be covered by existing tests
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
There was a bug where characters were not properly counted when
segmeting IFC text. Immediately incrementing the
`current_character_index` meant that the count was always one character
off. This character count is mainly used for drawing selections and
really matters when multiple text segments are in a single IFC. This
change fixes that by counting characters in the same way we were
counting byte indices for the text.
Testing: This change adds a Servo-specific WPT-style test. As it is
quite
difficult to reproduce the correct display in a different way, a
mismatch test
is used. Since this is mainly about appearance and is very specific to
our
implementation the test is Servo-specific.
Fixes: #42354.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Previous IntersectionObserver had only connect_to_owner_unchecked
method. We replace this with a checked method to not add the same
IntersectionObserver to the same document multiple times.
This should improve performance as the same IntersectionObserver was
tested multiple times.
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
Testing: Compilation and println statements to see if we do not add us
again to the document.
---------
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
This PR addresses a dead code warning removed during test builds by
ensuring the servo test helper constructor is exercised. None of the
functional behaviors are changed and this only improves test clarity and
keeps the compiler output warning-free.
Fixes: #42364
---------
Signed-off-by: Keerti Gupta this side!! <24bsm032@iiitdmj.ac.in>
Signed-off-by: Keerti Gupta <24bsm032@iiitdmj.ac.in>
Instead of immediately looking for the top-level browsing context's
`Document` in the `ScriptThread`, check whether `Window` is top-level
beforehand. This is a small optimization.
Testing: Existing WPTs (no behavior changes)
---------
Signed-off-by: Jo Steven Novaryo <steven.novaryo@gmail.com>
Profiling a speedometer run showed significant time spent in some layout
function in vector allocations. The main change is to switch the result
of `query_box_areas()` from a Vec<T> to and iterator.
Testing: refactoring with no expected test changes
Signed-off-by: webbeef <me@webbeef.org>
Unblock the CI.
We cannot upgrade time right now due to MSRV.
This thing has high attack complexity.
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
Bumps [jiff](https://github.com/BurntSushi/jiff) from 0.2.18 to 0.2.19.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/BurntSushi/jiff/blob/master/CHANGELOG.md">jiff's
changelog</a>.</em></p>
<blockquote>
<h1>0.2.19 (2026-02-05)</h1>
<p>This is a small release with a performance optimization (with respect
to doing
heavily contended arithmetic on <code>Zoned</code> values) and a bug fix
for a panic
that can occur when using <code>%2s</code> in <code>strftime</code>.</p>
<p>Enhancements:</p>
<ul>
<li><a
href="https://redirect.github.com/BurntSushi/jiff/issues/491">#491</a>:
Avoid cloning <code>TimeZone</code> for consuming operations on
<code>Zoned</code>.</li>
</ul>
<p>Bug fixes:</p>
<ul>
<li><a
href="https://redirect.github.com/BurntSushi/jiff/issues/497">#497</a>:
Fix a panic in <code>timestamp.strftime("%2s")</code>.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="52b2b0fcf6"><code>52b2b0f</code></a>
0.2.19</li>
<li><a
href="ef47ecc17f"><code>ef47ecc</code></a>
changelog: 0.2.19</li>
<li><a
href="196442da64"><code>196442d</code></a>
fmt: fix panic in <code>strftime</code> for <code>%2s</code></li>
<li><a
href="3c9ba66739"><code>3c9ba66</code></a>
zoned: kinda optimize <code>Zoned::default()</code></li>
<li><a
href="4c9c982269"><code>4c9c982</code></a>
ci: fix emscripten build</li>
<li><a
href="d41b397367"><code>d41b397</code></a>
zoned: optimize <code>Zoned::{add,sub,add_assign,sub_assign}</code> when
<code>Zoned</code> is cons...</li>
<li><a
href="66ba0fe164"><code>66ba0fe</code></a>
fmt: rip ranged integers out of Temporal RFC 9557 parser</li>
<li><a
href="a651ac7326"><code>a651ac7</code></a>
error: update <code>Error::is_range</code> predicate</li>
<li><a
href="c2dcbca9f8"><code>c2dcbca</code></a>
fmt: refactor Temporal parser to get rid of input capture</li>
<li><a
href="d439a66e87"><code>d439a66</code></a>
fmt: rename <code>strtime::format</code> to
<code>strtime::print</code></li>
<li>Additional commits viewable in <a
href="https://github.com/BurntSushi/jiff/compare/jiff-static-0.2.18...jiff-static-0.2.19">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>
We have a implementation of PaintTiming , so we should run the tests
associated with them.
Testing: New tests enabled.
---------
Signed-off-by: Shubham Gupta <shubham.gupta@chromium.org>
When doing a Stylo upgrade, it may happen that a commit imported from
upstream accidentally enables a CSS property on Servo. That is even more
likely after https://phabricator.services.mozilla.com/D280900, since the
new default is that properties are enabled everywhere.
Therefore, this test will help detect these accidents. Ideally, the test
would only track CSS properties exposed to stable, but that requires
running the test without experimental features, or using internal APIs.
So for now, the test will also track experimental properties.
Testing: just adding a new test, no behavior change
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
There is currently [a bug in
UV](https://github.com/astral-sh/uv/issues/12906) that results in it
using the x64 flavor of Python when running on Arm64 Windows. This then
causes all Python scripts to believe they are on an x64 device and so
Server installs the wrong dependencies and builds for the wrong
architecture.
Testing: Local on my Arm64 Windows device
Contributes to fixing #40611
Signed-off-by: Daniel Paoliello <daniel@meta-sys.info>
Windows ARM64 (aarch64, MSVC) does not support native profiling. PR
updates platform configuration to route Windows ARM64 to DummySampler,
aligning it with other unsupported targets (e.g., Linux musl) and fixing
build compatibility.
PR #42312
- Updates platform configuration + conditional compilation
- Background hang monitor (lib.rs) now selects DummySampler on Windows
ARM64
- Uses DummySampler as SamplerImpl for aarch64 Windows
build/compatibility fix only.
---------
Signed-off-by: npiesco <ngpiesco@gmail.com>
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.100 to
1.0.101.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dtolnay/anyhow/releases">anyhow's
releases</a>.</em></p>
<blockquote>
<h2>1.0.101</h2>
<ul>
<li>Add #[inline] to anyhow::Ok helper (<a
href="https://redirect.github.com/dtolnay/anyhow/issues/437">#437</a>,
thanks <a
href="https://github.com/Ibitier"><code>@Ibitier</code></a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="80bfe291b1"><code>80bfe29</code></a>
Release 1.0.101</li>
<li><a
href="dff8c432f9"><code>dff8c43</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/anyhow/issues/437">#437</a>
from Ibitier/inline-ok-helper</li>
<li><a
href="85d9ea9a1c"><code>85d9ea9</code></a>
Add #[inline] to anyhow::Ok helper</li>
<li><a
href="54036cc289"><code>54036cc</code></a>
Update ui test suite to nightly-2026-01-21</li>
<li><a
href="cce0579d85"><code>cce0579</code></a>
Update actions/upload-artifact@v5 -> v6</li>
<li><a
href="f2c598ca0e"><code>f2c598c</code></a>
Update actions/upload-artifact@v4 -> v5</li>
<li><a
href="2c0bda4ce9"><code>2c0bda4</code></a>
Update to 2021 edition</li>
<li><a
href="0d82268129"><code>0d82268</code></a>
Remove rustc version requirement from readme</li>
<li><a
href="67df01216d"><code>67df012</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/anyhow/issues/436">#436</a>
from dtolnay/up</li>
<li><a
href="c8984880a8"><code>c898488</code></a>
Raise required compiler to Rust 1.68</li>
<li>Additional commits viewable in <a
href="https://github.com/dtolnay/anyhow/compare/1.0.100...1.0.101">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
[ohos-sys-opaque-types](https://github.com/openharmony-rs/ohos-sys) from
0.1.8 to 0.1.9.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/openharmony-rs/ohos-sys/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>
This change moves Servo's macOS font code away from using our homegrown
`core-*` crates and toward the more general-purpose `objc2-*` crates.
Development of these crates is more active and they use automatic code
generation to have more complete coverage of the relevant platform APIs.
In
addition, this means that it is easier to understand Servo's code if you
are familiar with the platform APIs as the `objc2` crate are a more
direct Rust wrapper over them. In comparison, our wrappers had more
batteries-included behavior that was less flexible.
This change:
- is the first step toward more flexible font fallback on macOS (#41426)
- means we can now remove our manually FFI bindings for font variation
code.
Testing: This should not change behavior and macOS is currently untested
via WPT on the Ci.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
When an element has an image content value or list-style-image value
they end up duplicating the content of the element inside the generated
'::marker'.
This is caused by code inside IndependentFormattingContext for user
agent widgets (all user agent shadow dom), this code is specifically
aimed at video and audio elements.
This patch adapts that code to be more specific to elements without a
pseudo-element chain (e.g. audio and video)
Testing: newly added test crashes on main servo (slightly flakily), but
passes consistently now.
Fixes: #42329Fixes: #41231
---------
Signed-off-by: Luke Warlow <lwarlow@igalia.com>
The patch adds the following functionality to the per-WebView
`UserContentManager` API.
- Removing a `UserScript` at that was previously added.
- Adding a new `UserStyleSheet` representing a user-origin style sheet.
allow removing user script
- Removing a previously added `UserStyleSheet`.
There might be scope for some improvements in the API:
- `UserScript` and `UserStyleSheet` have different ways of representing
the source location - a `PathBuf` and `Url` respectively. This is due to
how those values are used by the underlying evaluation APIs in script
and stylo. More investigation is needed here and could be addressed in
future patches.
Testing: New unit tests are added for the user stylesheet APIs. Existing
tests have been updated to test the removal of user scripts.
`pending_input_event_receivers` is the last thing that uses `RefCell`.
This PR improves safety as we rely on static check, and performance
slightly too.
Testing: Just refactor.
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
Touch sequence may have already been removed before stopping potential
fling during Paint update.
This can happen when we touch up both fingers quickly after the touch
move,
before updates are performed in Paint.
We should not play with fire and `unwrap`.
Testing: Tested with Android, ohos and WebDriver. I can no longer
replicate the panic with Pinch Zoom.
Fixes: #42320, which is very verbose but provides the entire story.
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
- Catch MaxRetryError exception and retry, to avoid logging warnings.
This was observed on macos and can happen during startup of servo.
- Change the default port, since 7000 was reported by multiple people to
cause "port in use" errors.
Testing: Manual testing
---------
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
Bumps [bpaf](https://github.com/pacak/bpaf) from 0.9.22 to 0.9.23.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pacak/bpaf/blob/master/Changelog.md">bpaf's
changelog</a>.</em></p>
<blockquote>
<h2>bpaf [0.9.23], bpaf_derive [0.5.23] - 2026-02-03</h2>
<ul>
<li>code produced by derive macro is now won't trigger missing-docs
lint</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/pacak/bpaf/commits/v0.9.23">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>
Leaving the entries sitting around both unnecessarily increases memory
usage and breaks code that looks up window proxies by name and reuses
names for iframes within the same page.
Testing: Newly-passing tests.
Fixes: #15258
Signed-off-by: Josh Matthews <josh@joshmatthews.net>
Switch `PostMessage` of `Worker`, `DedicatedWorkerGlobalScope` and
`ServiceWoker` to use `&mut JSContext`, propagating it to
`post_message_impl`.
Testing: A successful build is enough
Signed-off-by: Gae24 <96017547+Gae24@users.noreply.github.com>
In addition, clean-up the UA stylesheet for dialogs.
Stylo PR: servo/stylo#301
Testing: change causes several WPT tests to start passing.
Signed-off-by: Luke Warlow <lwarlow@igalia.com>
This has a couple of changes to use mitmproxy (see more
https://book.servo.org/contributing/profiling.html?highlight=mitmproxy#webpage-snapshots)
in the ohos benchmarking CI.
- We include an easy script to create a mitmproxy dump
(etc/ci/scenario/update-mitmproxy-dump.py).
- We set the port forwarding in the common_function_for_servo_test (with
a refactor of the code).
- We added the use of mitmproxy to scenario test and bencher runs. This
currently runs in strictly forwarding mode. But because we skip the wifi
connection and use a wired connection, this should defeat jitter a bit.
- This does _not_ include the smoketest and hitrace-bench.
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
Testing:
https://github.com/Narfinger/servo/actions/runs/21630846381/job/62343433828
In the future we will add smoketest and hitrace-bench to use mitmproxy
and finally switch mitmproxy to record and replay mode.
---------
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
Co-authored-by: Euclid Ye <yezhizhenjiakang@gmail.com>
- Retain capacity of `pending_touch_move_actions` with `fn
remove_pending_touch_move_actions`
- Remove unnecessary mutable getter in `fn move_allowed`
- Reduces visibility of functions in `touch.rs`
Just a refactor.
---------
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
This adds a `cfg` to servo that uses the llvm profile-runtime function
for writing the coverage file to disk.
When the webdriver shuts down we should make sure to write the
llvm_coverage file. This is only required on platforms like android or
ohos, where there is no real exiting of the process, so we need to
manually dump the profile to disk.
See also https://clang.llvm.org/docs/SourceBasedCodeCoverage.html
Testing: Tested '/mach build -r --coverage && ./mach test-wpt -r
--coverage' and there do not seem any parsing errors anymore.
Fixes: https://github.com/servo/servo/issues/40942
---------
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
This helps buddies from MI5, MI6, NSA etc. to run tests behind proxy.
Testing: Tested locally behind proxy. For some reason, I already set
`127.0.0.1` and `localhost` in `no_proxy`, but it does not work.
Fixes: #42321
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
This change organizes the rest of the media-related interfaces by moving
the WebVTT-related[^1] interfaces into their own directory and two more
media-related interfaces into the `media` directory.
Testing: This just moves source files around, so a successful build
should be a good enough test.
Fixes: This is part of #38901.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
The specification says that the rounding of the tile size should only
happen
when the positioning size is not zero. This change makes us follow the
specification in this case.
Testing: This PR adds a new WPT crash test.
Fixes: #42216
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Move some common/similar steps of the import key operations of AES-CTR,
AES-CBC, AES-GCM, AES-KW and AES-OCB to the shared module `aes_common`.
Some comments are also added to the shared module `aes_common` to
explain the small difference in the specification of AES-OCB operations.
Testing: Refactoring. Existing tests suffice.
Signed-off-by: Kingsley Yung <kingsley@kkoyung.dev>
Start using `&mut JSContext` and wrappers2 functions for module script
code.
Testing: A successful build should be enough
---------
Signed-off-by: Gae24 <96017547+Gae24@users.noreply.github.com>
Bumps [flate2](https://github.com/rust-lang/flate2-rs) from 1.1.8 to
1.1.9.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="19ddb18bf1"><code>19ddb18</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/flate2-rs/issues/529">#529</a>
from folkertdev/update-zlib-rs-0.6.0</li>
<li><a
href="c956e127d6"><code>c956e12</code></a>
upgrade zlib-rs to version <code>0.6.0</code></li>
<li><a
href="21d5eebe91"><code>21d5eeb</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/flate2-rs/issues/528">#528</a>
from wgyt/wgyt/patch</li>
<li><a
href="54f848477c"><code>54f8484</code></a>
update LICENSE-MIT</li>
<li><a
href="f4924fefb3"><code>f4924fe</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/flate2-rs/issues/527">#527</a>
from jongiddy/crc-tests</li>
<li><a
href="8b9b7a6db6"><code>8b9b7a6</code></a>
Add tests to check data CRC</li>
<li><a
href="fd17c74baa"><code>fd17c74</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/flate2-rs/issues/526">#526</a>
from folkertdev/zlib-rs-crc32</li>
<li><a
href="aef26ac674"><code>aef26ac</code></a>
check that zlib-rs no longer compiles crc32fast</li>
<li><a
href="5ec7647e67"><code>5ec7647</code></a>
make <code>crc32fast</code> an optional dependency</li>
<li><a
href="c584e97041"><code>c584e97</code></a>
use <code>zlib-rs</code> for crc32 (when available)</li>
<li>See full diff in <a
href="https://github.com/rust-lang/flate2-rs/compare/1.1.8...1.1.9">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 [regex](https://github.com/rust-lang/regex) from 1.12.2 to 1.12.3.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/rust-lang/regex/blob/master/CHANGELOG.md">regex's
changelog</a>.</em></p>
<blockquote>
<h1>1.12.3 (2025-02-03)</h1>
<p>This release excludes some unnecessary things from the archive
published to
crates.io. Specifically, fuzzing data and various shell scripts are now
excluded. If you run into problems, please file an issue.</p>
<p>Improvements:</p>
<ul>
<li><a
href="https://redirect.github.com/rust-lang/regex/pull/1319">#1319</a>:
Switch from a Cargo <code>exclude</code> list to an <code>include</code>
list, and exclude some
unnecessary stuff.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="b028e4f40e"><code>b028e4f</code></a>
1.12.3</li>
<li><a
href="5e195de266"><code>5e195de</code></a>
regex-automata-0.4.14</li>
<li><a
href="a3433f6918"><code>a3433f6</code></a>
regex-syntax-0.8.9</li>
<li><a
href="0c07fae444"><code>0c07fae</code></a>
regex-lite-0.1.9</li>
<li><a
href="6a810068f0"><code>6a81006</code></a>
cargo: exclude development scripts and fuzzing data</li>
<li><a
href="4733e28ba4"><code>4733e28</code></a>
automata: fix <code>onepass::DFA::try_search_slots</code> panic when too
many slots are ...</li>
<li>See full diff in <a
href="https://github.com/rust-lang/regex/compare/1.12.2...1.12.3">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 [regex-syntax](https://github.com/rust-lang/regex) from 0.8.8 to
0.8.9.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="a3433f6918"><code>a3433f6</code></a>
regex-syntax-0.8.9</li>
<li><a
href="0c07fae444"><code>0c07fae</code></a>
regex-lite-0.1.9</li>
<li><a
href="6a810068f0"><code>6a81006</code></a>
cargo: exclude development scripts and fuzzing data</li>
<li><a
href="4733e28ba4"><code>4733e28</code></a>
automata: fix <code>onepass::DFA::try_search_slots</code> panic when too
many slots are ...</li>
<li><a
href="5ea3eb1e95"><code>5ea3eb1</code></a>
1.12.2</li>
<li><a
href="ab0b07171b"><code>ab0b071</code></a>
regex-automata-0.4.13</li>
<li>See full diff in <a
href="https://github.com/rust-lang/regex/compare/regex-syntax-0.8.8...regex-syntax-0.8.9">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>
User activation is a concept used to prevents annoying usage of specific
API (Fullscreen API, Virtual Keyboard) to the user by states that the
API needs to have in order to process. This PR implements the
`UserActivation` interface and keep track of the last user interaction.
Each `Window` will keep track the [last activation time
stamp](https://html.spec.whatwg.org/multipage/interaction.html#last-activation-timestamp),
which will be set if there are a triggering input event firing in the
`Window` and propagating across the browsing contexts ancestors and
descendants. These timestamp could be consumed, and the timestamp will
be set to negative infinite.
It is then used to gate some APIs within browser that is determined as
transient activation consuming-gated APIs, which needs transient
activation to be true and consumes the activation. For the purpose of
testing, this PR would implement this behavior on fullscreen API which
is used to test activation consuming behavior.
Spec:
https://html.spec.whatwg.org/multipage/interaction.html#the-useractivation-interface
Testing: Existing WPT
---------
Signed-off-by: Jo Steven Novaryo <steven.novaryo@gmail.com>
- Rename `wait_for_user_agent_handling_complete` to
`wait_for_input_event_handled`
- Reduce the time-complexity from $O(N^2)$ to $O(N)$: we are waiting for
all `pending_input_event_receivers` anyway. There is no need for
`crossbeam_channel::Select` as the sender won't block, and channel is
`unbound`.
- Add a TODO: Some DOM events may not have been produced at the end of
wait.
Testing: This is refactor.
https://github.com/servo/servo/actions/runs/21627646437
---------
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
This is a simple webdriver script that can run a folder of the
blink_perf_tests and output a bmf json file.
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
Testing: Does not require testing as it is a separate tool.
---------
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
This version bump is a bit delayed, since I forgot to open the PR before
FOSDEM. The actual release will thus likely not be based on this commit,
but backported to the release branch, to stay in sync with our monthly
report.
There still has been no resolution on the `0.1` version bump situation,
hence another bump of the patch version.
Testing: Not required
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
This will avoid updating the lockfile during regular operations. Also
ignore the `servo.egg-info` directory, which
the new python requirement installation mechanism via setuptools
creates.
To update the lockfile one can run `uv lock`. This is also done
automatically, when syncing requirements from WPT.
This PR also updates the uv version in CI to a newer one. If you
encounter any issues with the lockfile after this PR, it might be
necessary to update your local instance of uv.
Testing: Build still works. [mach try
full](https://github.com/servo/servo/actions/runs/21624364040)
---------
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
Debugger.js had many repetitive code, this change creates 2 helper
functions and renames some functions/variables to make it more clear.
Testing: This should not change any functionality
Signed-off-by: atbrakhi <atbrakhi@igalia.com>
Bumps [bytemuck](https://github.com/Lokathor/bytemuck) from 1.24.0 to
1.25.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/Lokathor/bytemuck/blob/main/changelog.md">bytemuck's
changelog</a>.</em></p>
<blockquote>
<h1><code>bytemuck</code> changelog</h1>
<h2>1.25</h2>
<ul>
<li><a
href="https://redirect.github.com/Lokathor/bytemuck/pull/333">Remove
extern "stdcall" fn ptr impls on non-x86-32 windows.</a></li>
<li><a href="https://redirect.github.com/Lokathor/bytemuck/pull/344">Fix
nightly_portable_simd after LaneCount removal.</a></li>
</ul>
<h2>1.24</h2>
<ul>
<li><a href="https://redirect.github.com/Lokathor/bytemuck/pull/322">use
new stable avx512 types from rust 1.89</a></li>
<li><a
href="https://redirect.github.com/Lokathor/bytemuck/pull/317">impl
AnyBitPattern for [MaybeUninit<T: AnyBitPattern>; N]</a></li>
<li>bump <code>derive</code> minimum version.</li>
</ul>
<h2>1.23.2</h2>
<ul>
<li>bump <code>derive</code> minimum version.</li>
</ul>
<h2>1.23.1</h2>
<ul>
<li>Added a windows-only <code>ZeroableInOption</code> impl for
"stdcall" functions.</li>
</ul>
<h2>1.23</h2>
<ul>
<li><code>impl_core_error</code> crate feature adds
<code>core::error::Error</code> impl.</li>
<li>More <code>ZeroableInOption</code> impls.</li>
</ul>
<h2>1.22</h2>
<ul>
<li>Add the <code>pod_saturating</code> feature, which adds
<code>Pod</code> impls for <code>Saturating<T></code>
when <code>T</code> is already <code>Pod</code>.</li>
<li>A bump in the minimum <code>bytemuck_derive</code> dependency from
1.4.0 to 1.4.1 to
avoid a bug if you have a truly ancient <code>cargo.lock</code> file
sitting around.</li>
<li>Adds <code>Send</code> and <code>Sync</code> impls to
<code>BoxBytes</code>.</li>
</ul>
<h2>1.21</h2>
<ul>
<li>Implement <code>Pod</code> and <code>Zeroable</code> for
<code>core::arch::{x86, x86_64}::__m512</code>, <code>__m512d</code> and
<code>__m512i</code> without nightly.
Requires Rust 1.72, and is gated through the <code>avx512_simd</code>
cargo feature.</li>
<li>Allow the use of <code>must_cast_mut</code> and
<code>must_cast_slice_mut</code> in const contexts.
Requires Rust 1.83, and is gated through the
<code>must_cast_extra</code> cargo feature.</li>
<li>internal: introduced the <code>maybe_const_fn</code> macro that
allows defining some function
to be const depending upon some <code>cfg</code> predicate.</li>
</ul>
<h2>1.20</h2>
<ul>
<li>New functions to allocate zeroed <code>Arc</code> and
<code>Rc</code>. Requires Rust 1.82</li>
<li><code>TransparentWrapper</code> impls for
<code>core::cmp::Reverse</code> and
<code>core::num::Saturating</code>.</li>
<li>internal: Simplified the library's <code>fill_zeroes</code> calls to
<code>write_bytes</code></li>
</ul>
<h2>1.19</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="164cedda0e"><code>164cedd</code></a>
chore: Release bytemuck version 1.25.0</li>
<li><a
href="10a9319fa4"><code>10a9319</code></a>
that was a derive PR</li>
<li><a
href="a35eaea74a"><code>a35eaea</code></a>
changelog</li>
<li><a
href="7009d79870"><code>7009d79</code></a>
Fix <code>nightly_portable_simd</code> after <code>LaneCount</code>
removal. (<a
href="https://redirect.github.com/Lokathor/bytemuck/issues/344">#344</a>)</li>
<li><a
href="58c62034e9"><code>58c6203</code></a>
Make derive(NoUninit) have the same constraints as Pod (<a
href="https://redirect.github.com/Lokathor/bytemuck/issues/341">#341</a>)</li>
<li><a
href="e4bce3b32c"><code>e4bce3b</code></a>
docs: fix typo (<a
href="https://redirect.github.com/Lokathor/bytemuck/issues/337">#337</a>)</li>
<li><a
href="316607cdf1"><code>316607c</code></a>
Fix CheckedBitPattern derive tests on big-endian (<a
href="https://redirect.github.com/Lokathor/bytemuck/issues/336">#336</a>)</li>
<li><a
href="92d78d2689"><code>92d78d2</code></a>
Remove <code>extern "stdcall"</code> fn ptr impls on
non-x86-32 windows. (<a
href="https://redirect.github.com/Lokathor/bytemuck/issues/333">#333</a>)</li>
<li><a
href="0afbe8fc2d"><code>0afbe8f</code></a>
Fix 32bit tests (<a
href="https://redirect.github.com/Lokathor/bytemuck/issues/331">#331</a>)</li>
<li>See full diff in <a
href="https://github.com/Lokathor/bytemuck/compare/v1.24.0...v1.25.0">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot 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>
`Handler::num_pending_actions` has been a poor orphan since
who-knows-when.
This also removes the only dependency on `Cell`.
Testing: This removes unused field. Covered by existing tests.
---------
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
Bumps [portable-atomic](https://github.com/taiki-e/portable-atomic) from
1.13.0 to 1.13.1.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/taiki-e/portable-atomic/blob/main/CHANGELOG.md">portable-atomic's
changelog</a>.</em></p>
<blockquote>
<h2>[1.13.1] - 2026-01-31</h2>
<ul>
<li>
<p>Update to stabilized <a
href="https://redirect.github.com/rust-lang/rust/pull/147996">PowerPC64</a>
inline assembly. (<a
href="92b02f8a27">92b02f8a</a>)</p>
</li>
<li>
<p>Work around <a
href="https://redirect.github.com/rust-lang/rustc_codegen_gcc/issues/821#issuecomment-3793567607">rustc_codegen_gcc
bugs on x86_64</a>. (<a
href="ae4c501aec">ae4c501</a>)</p>
</li>
<li>
<p>Optimize x86_64 128-bit atomics. (<a
href="a9d61ebf8d">a9d61eb</a>,
<a
href="90a17ca40a">90a17ca4</a>)</p>
</li>
<li>
<p>Improve compile-time detection of RISC-V target features. (<a
href="535fced071">535fced</a>)</p>
</li>
<li>
<p>Enable <a
href="https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/immutable-releases">release
immutability</a>.</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="1639861c66"><code>1639861</code></a>
Release portable-atomic 1.13.1</li>
<li><a
href="59cbe84d1a"><code>59cbe84</code></a>
Release portable-atomic-util 0.2.5</li>
<li><a
href="0fdd05b636"><code>0fdd05b</code></a>
Update changelog</li>
<li><a
href="e1d570224e"><code>e1d5702</code></a>
ci: Temporarily disable AIX build</li>
<li><a
href="f2ee23f0ca"><code>f2ee23f</code></a>
tests: Update test-helper</li>
<li><a
href="e481f46020"><code>e481f46</code></a>
util: Sync Arc with upstream</li>
<li><a
href="e4e0588968"><code>e4e0588</code></a>
util: Update docs/comments</li>
<li><a
href="6204993349"><code>6204993</code></a>
ci: Temporarily pin toolchain for mips r6</li>
<li><a
href="60400336f6"><code>6040033</code></a>
ci: Replace some custom targets with new builtin targets</li>
<li><a
href="10b67754ad"><code>10b6775</code></a>
tests/asm-test: Update to LLVM 22</li>
<li>Additional commits viewable in <a
href="https://github.com/taiki-e/portable-atomic/compare/v1.13.0...v1.13.1">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot 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 [arc-swap](https://github.com/vorner/arc-swap) from 1.8.0 to
1.8.1.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/vorner/arc-swap/blob/master/CHANGELOG.md">arc-swap's
changelog</a>.</em></p>
<blockquote>
<h1>1.8.1</h1>
<ul>
<li>Some more careful orderings (<a
href="https://redirect.github.com/vorner/arc-swap/issues/195">#195</a>).</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="c222a22864"><code>c222a22</code></a>
Release 1.8.1</li>
<li><a
href="cccf3548a8"><code>cccf354</code></a>
Upgrade the other ordering too, for transitivity</li>
<li><a
href="e94df5511a"><code>e94df55</code></a>
Merge pull request <a
href="https://redirect.github.com/vorner/arc-swap/issues/195">#195</a>
from 0xfMel/master</li>
<li><a
href="bd5d3276e4"><code>bd5d327</code></a>
Fix Debt::pay failure ordering</li>
<li><a
href="22431daf64"><code>22431da</code></a>
Merge pull request <a
href="https://redirect.github.com/vorner/arc-swap/issues/189">#189</a>
from atouchet/rdm</li>
<li><a
href="b142bd81da"><code>b142bd8</code></a>
Update Readme</li>
<li>See full diff in <a
href="https://github.com/vorner/arc-swap/compare/v1.8.0...v1.8.1">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot 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>
For `pointerMove` with duration, we need to wait asynchronously and
execute in parallel for subsequent moves.
But we never did this correctly: we waited in a blocking way which broke
the whole point of tick: making sure we simultaneously perform actions
from multiple sources within a single unit time.
To avoid async borrow-checker hell, we achieve the same effect using a
event queue.
> Spec: The initial pointer movement is performed synchronously. This
ensures determinism in the sequence of the first event triggered by each
action in the tick.
>
> Subsequent movements (if any) are performed asynchronously. This
allows events from two
[pointerMove](https://w3c.github.io/webdriver/#dfn-pointermove) actions
in the tick to be interspersed.
Testing: Existing WPT tests not affected, which is a good sign.
Fixes: #42235
This is a pre-requisite to #41923: multi-touch support.
---------
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
Support `errorCallback` in geolocation position request functions and
throw the necessary errors.
Testing: Passes 3 more WPT tests
Fixes: Partially #38903
Signed-off-by: Ashwin Naren <arihant2math@gmail.com>
We weren't removing stylesheets when we should be doing so. This most
notably happens when the stylesheet no longer has a href or its "rel"
changes.
The crash is also fixed, since the issue was that we were passing the
value of the attribute that was changed as if it were an href. However,
if we set the type attribute, then that's not the href.
To fix that, we now retrieve the href inside the method so we always
have the correct value.
Fixes#42259
---------
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
Signed-off-by: Tim van der Lippe <TimvdLippe@users.noreply.github.com>
A template element should set the host of a DocumentFragment. However,
it didn't have a host yet. That's because ShadowRoot declares a host
attribute which returns Element, but its property is declared on
DocumentFragment.
Therefore, define the host on DocumentFragment instead and use it in all
relevant points for shadow roots. Then, update the pre-insert validity
check to use the correct host-including variant of inclusive ancestors.
Lastly, set the host of the template to wire it all up.
---------
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
This change adds support for the `colorspace` attribute on color inputs
and implements serialization of the input value accordingly.
The color picker from servoshell doesn't yet support non-rgb colorspaces
(and neither does the embedding API), so we convert to and from rgb when
communicating with the embedder.
Testing: New tests start to pass
---------
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
Implement the full connection lifecycle, from opening and potentially
upgrading a database, waiting on existing connections to close, firing
the versionchange and blocked events, and updating pending open requests
when connections close.
Testing: WPT
Fixes: Part of https://github.com/servo/servo/issues/40983
---------
Signed-off-by: gterzian <2792687+gterzian@users.noreply.github.com>
Bumps [portable-atomic-util](https://github.com/taiki-e/portable-atomic)
from 0.2.4 to 0.2.5.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/taiki-e/portable-atomic/releases">portable-atomic-util's
releases</a>.</em></p>
<blockquote>
<h2>portable-atomic-util 0.2.5</h2>
<ul>
<li>
<p>Add <code>Arc::{new_zeroed,new_zeroed_slice}</code> at Rust 1.36+.
(align to the <a
href="https://redirect.github.com/rust-lang/rust/pull/144091">std
<code>Arc</code> change in Rust 1.92</a>) (<a
href="f8affb661a">f8affb6</a>,
<a
href="ae5aba7cbe">ae5aba7</a>)</p>
</li>
<li>
<p>Implement <code>Default</code> for <code>Pin<Arc<T>:
Default></code>. (align to the <a
href="https://redirect.github.com/rust-lang/rust/pull/143717">std
<code>Arc</code> change in Rust 1.91</a>) (<a
href="2d8d33c127">2d8d33c</a>)</p>
</li>
<li>
<p>Implement <code>From<&mut {[T],str}></code> for
<code>Arc<{[T],str}></code> at Rust 1.36+. (align to the <a
href="https://redirect.github.com/rust-lang/rust/pull/129329">std
<code>Arc</code> change in Rust 1.84</a>) (<a
href="99640d656f">99640d6</a>,
<a
href="ae5aba7cbe">ae5aba7</a>)</p>
</li>
<li>
<p>Implement <code>{AsFd, AsRawFd}</code> for <code>Arc<T></code>
on Trusty. (<a
href="1b09ffbc30">1b09ffb</a>)</p>
</li>
<li>
<p>Support slice-related methods that previously required Rust 1.44+ at
Rust 1.36+. (<a
href="ae5aba7cbe">ae5aba7</a>)</p>
</li>
<li>
<p>Support <code>AsRawFd for Arc<T></code> implementation on Unix
in all Rust versions. Previously, it was only for Rust 1.63+. (<a
href="1b09ffbc30">1b09ffb</a>)</p>
</li>
<li>
<p>Fix build error when building for HermitOS with <code>std</code>
feature in Rust 1.63-1.68. (<a
href="1b09ffbc30">1b09ffb</a>)</p>
</li>
<li>
<p>Documentation improvements.</p>
</li>
<li>
<p>Enable <a
href="https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/immutable-releases">release
immutability</a>.</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="59cbe84d1a"><code>59cbe84</code></a>
Release portable-atomic-util 0.2.5</li>
<li><a
href="0fdd05b636"><code>0fdd05b</code></a>
Update changelog</li>
<li><a
href="e1d570224e"><code>e1d5702</code></a>
ci: Temporarily disable AIX build</li>
<li><a
href="f2ee23f0ca"><code>f2ee23f</code></a>
tests: Update test-helper</li>
<li><a
href="e481f46020"><code>e481f46</code></a>
util: Sync Arc with upstream</li>
<li><a
href="e4e0588968"><code>e4e0588</code></a>
util: Update docs/comments</li>
<li><a
href="6204993349"><code>6204993</code></a>
ci: Temporarily pin toolchain for mips r6</li>
<li><a
href="60400336f6"><code>6040033</code></a>
ci: Replace some custom targets with new builtin targets</li>
<li><a
href="10b67754ad"><code>10b6775</code></a>
tests/asm-test: Update to LLVM 22</li>
<li><a
href="a19d8158a6"><code>a19d815</code></a>
ci: Update Valgrind suppression for s390x</li>
<li>Additional commits viewable in <a
href="https://github.com/taiki-e/portable-atomic/compare/portable-atomic-util-0.2.4...portable-atomic-util-0.2.5">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot 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 [slab](https://github.com/tokio-rs/slab) from 0.4.11 to 0.4.12.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tokio-rs/slab/releases">slab's
releases</a>.</em></p>
<blockquote>
<h2>v0.4.12</h2>
<ul>
<li>Help the compiler elide copies in <code>try_remove()</code> (<a
href="https://redirect.github.com/tokio-rs/slab/issues/160">#160</a>)</li>
<li>Add security policy (<a
href="https://redirect.github.com/tokio-rs/slab/issues/154">#154</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/tokio-rs/slab/blob/master/CHANGELOG.md">slab's
changelog</a>.</em></p>
<blockquote>
<h1>0.4.12 (January 31, 2026)</h1>
<ul>
<li>Help the compiler elide copies in <code>try_remove()</code> (<a
href="https://redirect.github.com/tokio-rs/slab/issues/160">#160</a>)</li>
<li>Add security policy (<a
href="https://redirect.github.com/tokio-rs/slab/issues/154">#154</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="a1e4346070"><code>a1e4346</code></a>
Release v0.4.12 (<a
href="https://redirect.github.com/tokio-rs/slab/issues/161">#161</a>)</li>
<li><a
href="1a97b80856"><code>1a97b80</code></a>
Help the compiler elide copies in try_remove() (<a
href="https://redirect.github.com/tokio-rs/slab/issues/160">#160</a>)</li>
<li><a
href="4955f79e3f"><code>4955f79</code></a>
fix: add missing semicolon (<a
href="https://redirect.github.com/tokio-rs/slab/issues/158">#158</a>)</li>
<li><a
href="7f1f3a16df"><code>7f1f3a1</code></a>
Add security policy (<a
href="https://redirect.github.com/tokio-rs/slab/issues/154">#154</a>)</li>
<li>See full diff in <a
href="https://github.com/tokio-rs/slab/compare/v0.4.11...v0.4.12">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot 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 [clap](https://github.com/clap-rs/clap) from 4.5.55 to 4.5.56.
<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.56</h2>
<h2>[4.5.56] - 2026-01-29</h2>
<h3>Fixes</h3>
<ul>
<li>On conflict error, don't show conflicting arguments in the
usage</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.56] - 2026-01-29</h2>
<h3>Fixes</h3>
<ul>
<li>On conflict error, don't show conflicting arguments in the
usage</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="9cec1007ac"><code>9cec100</code></a>
chore: Release</li>
<li><a
href="00e72e06f4"><code>00e72e0</code></a>
docs: Update changelog</li>
<li><a
href="c7848ff6fc"><code>c7848ff</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/6094">#6094</a>
from epage/home</li>
<li><a
href="60184fb76a"><code>60184fb</code></a>
feat(complete): Expand ~ in native completions</li>
<li><a
href="09969d3c1a"><code>09969d3</code></a>
chore(deps): Update Rust Stable to v1.89 (<a
href="https://redirect.github.com/clap-rs/clap/issues/6093">#6093</a>)</li>
<li><a
href="520beb5ec2"><code>520beb5</code></a>
chore: Release</li>
<li><a
href="2bd8ab3c00"><code>2bd8ab3</code></a>
docs: Update changelog</li>
<li><a
href="220875b585"><code>220875b</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/6091">#6091</a>
from epage/possible</li>
<li><a
href="e5eb6c9d84"><code>e5eb6c9</code></a>
fix(help): Integrate 'Possible Values:' into 'Arg::help'</li>
<li><a
href="594a771030"><code>594a771</code></a>
refactor(help): Make empty tracking more consistent</li>
<li>Additional commits viewable in <a
href="https://github.com/clap-rs/clap/compare/clap_complete-v4.5.55...clap_complete-v4.5.56">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot 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 [zmij](https://github.com/dtolnay/zmij) from 1.0.17 to 1.0.19.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="990ad7ec83"><code>990ad7e</code></a>
Release 1.0.19</li>
<li><a
href="3aeb815d16"><code>3aeb815</code></a>
Sync to vitaut/zmij@d8cb945</li>
<li><a
href="b804b08d99"><code>b804b08</code></a>
Sync to vitaut/zmij@68481e5</li>
<li><a
href="e0655607d2"><code>e065560</code></a>
Sync to vitaut/zmij@a3133ab</li>
<li><a
href="3a9446327c"><code>3a94463</code></a>
Release 1.0.18</li>
<li><a
href="9e4dd29537"><code>9e4dd29</code></a>
Match upstream's inline attributes</li>
<li><a
href="8b9832a732"><code>8b9832a</code></a>
Sync to vitaut/zmij@fb4fafa</li>
<li><a
href="6d82497878"><code>6d82497</code></a>
Sync to vitaut/zmij@f54583c</li>
<li><a
href="699276b24c"><code>699276b</code></a>
Sync to vitaut/zmij@2fb44e1</li>
<li><a
href="fb0bfcfc8a"><code>fb0bfcf</code></a>
Sync to vitaut/zmij@d922b15</li>
<li>Additional commits viewable in <a
href="https://github.com/dtolnay/zmij/compare/1.0.17...1.0.19">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot 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>
Servo doesn't have a pdf viewer, so we simply set the property to
`false`.
Testing: New tests start to pass
---------
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
Reviewable per commits:
As noted in
https://github.com/servo/servo/pull/42180#discussion_r2749861902
transmuting `&Reflector<AssociatedMemory>` to `&Reflector<()>` will
ignore AssociatedMemory information and thus it will not remove extra
associated memory. By returning `&Reflector<Self::ReflectorType>` from
`DomObject::reflector()` we will preserve this information and thus
correctly handle cases with associated memory. We also do not need
`overrideMemoryUsage` in bindings.conf anymore. 🎉
Instead of removing associated memory in drop code we should do it as
part of finalizers, otherwise we have problems in nested (inherited)
structs, where drop is run for both parent and child, but we only added
associated memory for child (on init_reflector) which already included
size of parent. The only exception here is promise, because it is RCed
and not finalized.
Testing: Tested locally that it fixes speedometer.
Fixes#42269
---------
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
This change adds support for the unspecified `-webkit-text-security`
property. All major browsers support this property. The benefit of
adding this property is that the first addition of a prefixed CSS
property will allow us to start running MotionMark.
This depends on servo/stylo#295.
Testing: Three new Servo-specific tests are added for this change. There
are a few `-webkit-text-security` tests in WPT, but they do not seem
to test basic functionality.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
When CSS tables collapse borders, we need to compare their specificities
to determine which border wins. One thing that the specificity takes
into account is the border-style. We were manually mapping each possible
BorderStyle to its priority, but Stylo already provides Ord, so we can
just use that instead.
Testing: Not needed, no behavior change
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
This change fixes a crash in options collections due to the fact that a
`<select>` element was being considered an ancestor of itself. This
regression likely introduced in #40776.
This change also fills in the specification text for
`HTMLOptionCollect::Add`.
Testing: This change adds a WPT crash test.
Fixes: #41080.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Make it runs at the correct time and then also performs checks for its
scheme. The CSP check is left for a follow-up PR.
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
With import attributes enabled we can now support non javascript
modules, for now we are limited to json ones.
Switch `GlobalScope` `modulemap` to be keyed by the tuple url and
module's type.
Testing: Enabled a new directory, new tests should pass
---------
Signed-off-by: Gae24 <96017547+Gae24@users.noreply.github.com>
Signed-off-by: Josh Matthews <josh@joshmatthews.net>
Co-authored-by: Josh Matthews <josh@joshmatthews.net>
We can avoid doing 2 traversals and stop at the first matching child we
find. This ensures we are never doing the longest iteration.
Testing: covered by WPT
Signed-off-by: webbeef <me@webbeef.org>
Due to timing issues, history changes for closed `WebView`s can be
processed in the constellation. The best way to handle this would be to
move these operations to be methods on the `ConstellationWebView`, but
that is a larger refactor. This changes makes it so that the current
code handles this situation more gracefully.
Testing: It is difficult to test this issue because it requires opening
and
closing WebViews and is difficult to reproduce. This is a speculative
fix.
Fixes: #41079.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
By reporting memory usage of rust objects back to SM it can trigger GC
sooner and release more memory (I hope that we could use this to avoid
OOB in webgpu in the future).
Currently we use simple `size_of::<DomStruct>() +
size_of::<Box<DomStruct>>()` but it's possible to override reported
memory with `update_memory_size(self, nbytes);` on reflector. This is
mostly useful for canvases and buffers which usually have large
associated data.
Testing: None, but I am wondering if we can connect this to
`about:memory`.
Fixes: #42168
---------
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
This changes 3 occurences of HashSet to FxHashSet for speed
improvements:
- dom/notifications::pending_request_ids: Pending Request ids are
Uuid::new_v4, hence, not user assignable.
- script_thread: painters_generating_frames: These are pipeline ids and,
hence, ideal for FxHash.
- script_thread:: docs_with_no_blocking_loads: These are Dom<Document>
and their hash is the ptr address, so ideal for FxHash.
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
Testing: These do not change functionality.
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
Because of the deprecation of bincode we are switching to postcard
(which will already be used by ipc-channel).
This changes all usages to postcard.
Sadly there are still some dependencies using bincode, so we are
probably increasing the binary size.
Currently we do not modify the deny.toml because we have dependencies
that depend on bincode.
Testing: Compilation should be enough for test.
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
Bumps [zerocopy](https://github.com/google/zerocopy) from 0.8.35 to
0.8.36.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/google/zerocopy/releases">zerocopy's
releases</a>.</em></p>
<blockquote>
<h2>v0.8.36</h2>
<!-- raw HTML omitted -->
<h2>What's Changed</h2>
<ul>
<li>Add generic <code>Ptr::try_with</code> by <a
href="https://github.com/joshlf"><code>@joshlf</code></a> in <a
href="https://redirect.github.com/google/zerocopy/pull/2946">google/zerocopy#2946</a></li>
<li>[pointer] Fix bug in <code>try_cast_into_no_leftover</code> by <a
href="https://github.com/joshlf"><code>@joshlf</code></a> in <a
href="https://redirect.github.com/google/zerocopy/pull/2937">google/zerocopy#2937</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/google/zerocopy/compare/v0.8.35...v0.8.36">https://github.com/google/zerocopy/compare/v0.8.35...v0.8.36</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="1803e2c814"><code>1803e2c</code></a>
Release 0.8.36 (<a
href="https://redirect.github.com/google/zerocopy/issues/2948">#2948</a>)</li>
<li><a
href="a5aa985619"><code>a5aa985</code></a>
[pointer] Fix bug in <code>try_cast_into_no_leftover</code> (<a
href="https://redirect.github.com/google/zerocopy/issues/2937">#2937</a>)</li>
<li><a
href="d161a87fc5"><code>d161a87</code></a>
Add generic <code>Ptr::try_with</code> (<a
href="https://redirect.github.com/google/zerocopy/issues/2946">#2946</a>)</li>
<li><a
href="381021b662"><code>381021b</code></a>
Commit <code>Cargo.lock</code> and <code>tools/Cargo.lock</code> (<a
href="https://redirect.github.com/google/zerocopy/issues/2932">#2932</a>)</li>
<li>See full diff in <a
href="https://github.com/google/zerocopy/compare/v0.8.35...v0.8.36">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot 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>
Added calls to download web font from stylesheet when stylesheets are
added to shadow root.
Testing: Manual testing. Added a new WPT testcase
---------
Signed-off-by: Minghua Wu <michael.wu1107@gmail.com>
All other browsers use a single configuration for their browser
invocations on WPT. Servo historically had two: servo and servodriver.
Now that we run WPT on Servo GitHub CI with Webdriver using the
servodriver, we can align our configuration with theirs.
The existing "servo" configuration is renamed to "servo_legacy" and
"servodriver" is then renamed to "servo". This way, we preserve the
"servo" product name as defined on wpt.fyi, but we do use its webdriver
configuration.
Since webdriver is not fully working yet for debugging purposes, we keep
the "servo_legacy" configuration now. In the future, once the debugging
story has improved, we can remove "servo_legacy".
All in all, this ensures that both on local, Servo GitHub CI and on
wpt.fyi we all use the exact same configuration. I tested this locally
by running the following test:
```
./mach test-wpt tests/wpt/tests/css/css-overflow/scrollbar-gutter-dynamic-004.html
```
This does times out with the servo binary and works with the servodriver
binary.
Running the servo_legacy configuration is done via the `--servo-legacy`
flag:
```
./mach test-wpt tests/wpt/mozilla/tests/mozilla/caption.html --servo-legacy
```
Fixes#40751
---------
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
Moves the `Drop` implementation for `GPUCanvasContext` to a new
`DroppableGPUCanvasContext` struct.
This ensures the context destruction logic is correctly handled, as the
`GPUCanvasContext` struct itself is a DOM struct and should not have a
drop implementation. This change aligns with the requirement that DOM
types should not implement Drop.
Testing: No tests added
Fixes: #26488
Signed-off-by: Domenico Rizzo <domenico.rizzo@gmail.com>
Add support for `:open` pseudo-class. This is supported on dialog,
details and select elements.
Stylo PR: servo/stylo#297
Testing: WPTs but also
`data:text/html,<select><option>123</option></select><style>:open {
background-color: red; }</style>`. There are some tests that now error,
these previously failed due to missing `:open` and now make it further
along hitting test_driver.send_keys() which causes them to error
Fixes: #41277.
---------
Signed-off-by: Luke Warlow <lwarlow@igalia.com>
When a node has `attachShadow()` successfully called on it, its
descendants are no longer in the flat tree. This change makes it so that
the layout data of these descendants is cleared during `attachShadow()`
so that the node is no longer considered to have a layout box.
Testing: This change includes a new WPT crash test.
Fixes: #42215.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
When doing operations on `RopeIndex` that need to make slices of lines,
this change makes it so that the resulting index does not intersect a
character. This is important because Rust will panic if you attempt to
slice a string that way.
Testing: This change adds a WPT crash test and a `Rope` unit test.
Fixes: #42217.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Selinux enabled systems have stricter permissions and a bind mount might
not work correctly. Hence, we copy the package list.
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
Testing: Build the devcontainer on fedora machine.
---------
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
This improves the sending (and receiving) of displaylist.
- In the case that we are not in IPC mode, we essentially replace
serialization with a clone of 'DisplayListInfo'.
This the desktop total time spend in the receiving the DisplayList by
half and increases the sending slightly.
Perfetto shows for sending 51_354_000 vs 71_476_000 and receiving from
440_455_008 vs 194_509_000). All numbers are on desktop machines but
mobile phones on different tests are similar big improvements.
- More surprisingly, in the IPC cases. we still get a slight improvement
in this case too. We go from the overall handling case from 24_842_000
to 30_989_752 (handle displaylist) but a significant decrease in the
send decrease in the sending from 88_199_572 to 23_025_033.
The reason is a bit of a mystery to me.
This also makes the code cleaner as we do not have to implement the
GenericByteReceiver channel.
Testing: It essentially just changes types and how they are serialized.
---------
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
Ensure that the UA shadow DOM for `<textarea>` is initialized when we
are binding to a tree.
Testing: New WPT.
Fixes: #42231
---------
Signed-off-by: Jo Steven Novaryo <steven.novaryo@gmail.com>
While working on #42138 I found out that import attributes are an opt-in
feature, which can be enabled by `ContextOptionsRef`'s
`compileOptions_`.
This is likely the reason why `GetRequestedModuleSpecifier` wouldn't
fail.
Now we catch any `GetRequestedModuleSpecifier` exception and pass it to
`load_state`.
Testing: Covered by existing tests
---------
Signed-off-by: Gae24 <96017547+Gae24@users.noreply.github.com>
Bumps [iana-time-zone](https://github.com/strawlab/iana-time-zone) from
0.1.64 to 0.1.65.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/strawlab/iana-time-zone/blob/main/CHANGELOG.md">iana-time-zone's
changelog</a>.</em></p>
<blockquote>
<h2>[0.1.65] - 2026-01-28</h2>
<h3>Changed</h3>
<ul>
<li>Add wasi support (<a
href="https://redirect.github.com/strawlab/iana-time-zone/pull/190">#190</a>)</li>
<li>Add support for emscripten (<a
href="https://redirect.github.com/strawlab/iana-time-zone/pull/189">#189</a>)</li>
<li>Add s390x target to Rust CI workflow (<a
href="https://redirect.github.com/strawlab/iana-time-zone/pull/182">#182</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="3726968181"><code>3726968</code></a>
Bump version number to 0.1.65</li>
<li><a
href="f0c7cd4a33"><code>f0c7cd4</code></a>
CI: add github release workflow for trusted publishing</li>
<li><a
href="7ef287061f"><code>7ef2870</code></a>
Merge pull request <a
href="https://redirect.github.com/strawlab/iana-time-zone/issues/190">#190</a>
from bschoenmaeckers/wasi</li>
<li><a
href="5c72c92ac5"><code>5c72c92</code></a>
CI: test wasi</li>
<li><a
href="06ad6d8f3d"><code>06ad6d8</code></a>
Add wasi support</li>
<li><a
href="3e5688c9f0"><code>3e5688c</code></a>
Merge pull request <a
href="https://redirect.github.com/strawlab/iana-time-zone/issues/189">#189</a>
from bschoenmaeckers/emscripten</li>
<li><a
href="4c0e9698f7"><code>4c0e969</code></a>
Pin actions to hash</li>
<li><a
href="b55c8dd061"><code>b55c8dd</code></a>
Add ci job</li>
<li><a
href="187c2a972d"><code>187c2a9</code></a>
Drop <code>emscripten-functions</code> dependency</li>
<li><a
href="a9ddeda718"><code>a9ddeda</code></a>
Use <code>emscripten_functions</code></li>
<li>Additional commits viewable in <a
href="https://github.com/strawlab/iana-time-zone/compare/v0.1.64...v0.1.65">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot 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>
Per CSS-CONTENT-3, one of the possible values of the `content` CSS
property is `<content-replacement>`, which evaluates to a single
`<image>`. This value is also allowed on regular elements, not just on
pseudo-elements, and it will make the element into a replaced element
representing the given image, discarding its contents.
This patch implements this in `traverse_element`: if the `display` value
is not `none` or `contents`, we first check whether the `contents`
property should make the element replaced, and if it shouldn't, then we
check whether the element itself is replaced or a widget.
Per the spec, an invalid image must be treated as representing a
transparent black image with zero natural width and height – in
particular, it must not show a broken image icon. We added the method
`ReplacedContents::zero_sized_invalid_image` to implement this.
This patch adds support for image URL references, but not for color
gradients, which are treated as invalid images. The reason for this is
that currently Servo does not support gradients in
`ReplacedContentKind`. This is left as a follow-up change.
Testing: Some of the existing `css/css-content/element-replacement*` WPT
tests now pass with this patch. We also added some new ones dealing with
replacing the document root.
Fixes: #41479
Signed-off-by: Andreu Botella <andreu@andreubotella.com>
The legacy alignment presentation hints differed from the specification
in a way that was breaking them when dealing with `<img>`. The culprit
seems to be the selector `img[type = image i]` which seems a little
nonsensical. This change makes the CSS in `presentational-hints.css`
match what is found in the specification.
There is still an issue with "bottom" alignment of replaced elements and
more investigation is necessary to understand what specified or
unspecified behavior we are failing to implement.
Testing: This fixes a variety of WPT tests.
Fixes: #41048.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
There were some `#[serde(untagged)]` and `#[serde(skip*)]` annotations
in the shared devtools types. These are needed for correct JSON
serialization when sending messages to Firefox, but they fail in
multiprocess mode since we are sharing them through the IPC channel with
bincode, which doesn't support certain serde tags.
The workaround is to keep all shared types free from problematic
annotations, and defining wrapping types that are only used in the
devtools crate.
One instance are console messages and page errors. They have been moved
to `console.rs`, with `shared/devtools` only keeping the parts that are
needed for communication between threads.
The other instance are auto margins. Now the final message is built in
`page_style.rs`.
Apologies since both of them were introduced by me, I wasn't aware that
we were limited by bincode in multiprocess mode. A warning has been
added to `shared/devtools` listing the problematic annotations that
shouldn't be used in this file.
Testing: `mach test-devtools` and manual testing using `--multiprocess`.
Fixes: #42170
Signed-off-by: eri <eri@igalia.com>
This bumps stylo to allow configuring the stack size of the stylo
threads, which fixes crashes with asan and debug builds.
Testing: Manual testing with `--with-asan` and with the debug profile.
Fixes: #40814
---------
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
This inserts a cache in painter that keeps data for animating images in
Painter.
We then can send cheap ImageUpdate::UpdateAnimation to just get the
required bytes from the cache.
There are some warts with the current design:
- ImageUpdate::AddImage only adds images in the cache that have the data
in SerializableImageData::Raw. Potentially there could be image
animations in other ways which then for a following
ImageUpdate::UpdateAnimation we do not have the data. We can probably
fix this on the sender side.
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
Testing: Tested on the usecase in
https://github.com/servo/servo/issues/41818 and WPT test here:
https://github.com/Narfinger/servo/actions/runs/21063721427
Fixes: https://github.com/servo/servo/issues/41818
---------
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
This is a temporary fix until a more complete solution, such
as the one from #42169, works consistently.
Testing: This should be tested by the CI run.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
This switches Servo to the version of WebRender published on crates.io.
Testing: This change should not change behavior.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Continuing the implementation of `VisualViewport`, the resizing of
`PinchZoom` should be notified to `ScriptThread` to update the
`VisualViewport` interface and to fire the appropriate JS event. Top
level `Window`/`Pipeline` would have a `VisualViewport` interface that
mirrors the `PinchZoom` viewport, while nested `Window` would have a
default value that represent layout viewport of the relevant iframe. The
`VisualViewport` of an iframe is updated after each reflow that
calculate the rectangle of the iframe.
The updates of DOM's `VisualViewport` occurs immediately (instead of
waiting for the event loop like the viewport) but integrates with the
event loop for the JS events. This behavior would helps with the fact
that `VisualViewport` needs to be updated both when it is scrolled or
resized.
Testing: Existing WPTs and new unit test.
Part of: https://github.com/servo/servo/issues/41341
---------
Signed-off-by: Jo Steven Novaryo <steven.novaryo@gmail.com>
Bumps [clap](https://github.com/clap-rs/clap) from 4.5.54 to 4.5.55.
<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.55</h2>
<h2>[4.5.55] - 2026-01-27</h2>
<h3>Fixes</h3>
<ul>
<li>Fix inconsistency in precedence between positionals with a
<code>value_terminator("--")</code> and escapes
(<code>--</code>) where <code>./foo -- bar</code> means the first arg is
empty, rather than escaping future args</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.55] - 2026-01-27</h2>
<h3>Fixes</h3>
<ul>
<li>Fix inconsistency in precedence between positionals with a
<code>value_terminator("--")</code> and escapes
(<code>--</code>) where <code>./foo -- bar</code> means the first arg is
empty, rather than escaping future args</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="4c039309b6"><code>4c03930</code></a>
chore: Release</li>
<li><a
href="fb948a25ff"><code>fb948a2</code></a>
docs: Update changelog</li>
<li><a
href="0f602396a3"><code>0f60239</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/6057">#6057</a>
from GilShoshan94/master</li>
<li><a
href="83d4206ff1"><code>83d4206</code></a>
test: Update fixture to cover all cases + styling</li>
<li><a
href="b13274d869"><code>b13274d</code></a>
fix: Rename <code>pvs</code> to <code>dvs</code> for default values</li>
<li><a
href="df92ea02bb"><code>df92ea0</code></a>
feat(help): Allow styling for inline context</li>
<li><a
href="0e535e518d"><code>0e535e5</code></a>
chore(deps): Update compatible (dev) (<a
href="https://redirect.github.com/clap-rs/clap/issues/6054">#6054</a>)</li>
<li><a
href="de57287f30"><code>de57287</code></a>
chore(deps): Update Rust Stable to v1.88 (<a
href="https://redirect.github.com/clap-rs/clap/issues/6048">#6048</a>)</li>
<li><a
href="5504a13468"><code>5504a13</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/6047">#6047</a>
from clap-rs/revert-6045-cleanup-docsrs</li>
<li><a
href="c1c243c924"><code>c1c243c</code></a>
Revert "Cleanup docs.rs related issues"</li>
<li>Additional commits viewable in <a
href="https://github.com/clap-rs/clap/compare/clap_complete-v4.5.54...clap_complete-v4.5.55">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot 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>
Co-authored-by: Euclid Ye <euclid.ye@huawei.com>
This change modifies `LineBreaker` to properly handle `word-break:
keep-all` by adjusting the arguments passed to
`icu_segmenter::LineSegmenter`.
- [CSS
specification](https://drafts.csswg.org/css-text/#valdef-word-break-keep-all)
- Stylo PR : servo/stylo#289
Testing: Created a WPT test for this change, specifically:
`tests/wpt/tests/css/css-text/word-break/word-break-keep-all-011.html`.
Fixes: #42047
---------
Signed-off-by: Richard Tjokroutomo <richard.tjokro2@gmail.com>
The `HTMLLinkElement::pending_loads` field should only be used to track
outstanding loads for the current generation; any loads from previous
generations can be ignored. This avoids confusion about when to dispatch
load/error events. See
https://github.com/servo/servo/issues/42187#issuecomment-3808888585 for
more details about how the timing of multiple loads for the same
`<link>` element resulted in intermittent timeouts in one WPT test.
Testing: Intermittent failure did not appear within 75 runs; previously
reproduced within 15.
Fixes: #42187
Signed-off-by: Josh Matthews <josh@joshmatthews.net>
There are subtle differences between a global's origin and its URL's
origin, and it's easy to hit them with special URLs like about:blank.
The code being replaced was written before we has separate origins for
globals.
Testing: Newly passing WPT test.
Signed-off-by: Josh Matthews <josh@joshmatthews.net>
Switch to using our own dockerfile, and install the required
dependencies into our image.
In follow-ups we can build the docker image in CI, so that users can
download a prebuilt docker image to save time.
Testing: Manually tested by opening servo in the devcontainer and
running `./mach build`
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
This vulnerability is just issued 3 hours ago. It is patched in
>=0.1.0-rc.3, but we tried last week: it takes significant effort to
upgrade:
https://github.com/servo/servo/pull/42120#issuecomment-3793543197
Given that it blocks the CI, no exploit is known yet, and the high
attack complexity, we should ignore it for now.
---------
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
The function ends right after this declaration. Instead of ignoring the
fact that its unused, let's remove it.
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
We populate the required field for all relevant entrypoints
and set it to `document.base_url` when the url is `about:blank`
or `about:srcdoc`. In all other cases, it uses
`document.about_base_url`.
Testing: WPT
Fixes#41836
---------
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
As described in the stop_reading method:
into_net_request_body constructs an ipc-channel sender and receiver
pair. The sender will be given to the TransmitBodyHandler which uses it
in various script callbacks.
On BodyChunkRequest::Done, previously we did not destroy the sender,
hence, did not destroy the receiver for this and keep the structure
alive in memory.
For safety we now destroy the sender in the BodyChunkRequest::Done (we
also take the IpcSenders and IpcSharedMemory when applicable).
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
Testing: Using the script from
https://github.com/servo/servo/issues/41202 we get less file descriptor
usage.
Fixes: This partially fixes https://github.com/servo/servo/issues/41202
but not completely.
---------
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
Add an event listener for `clearBreakpoint` to `debugger.js` and the
necessary glue to access it from the `devtools` crate.
Testing: `./mach test-devtools` and manual testing.
Fixes: Part of: https://github.com/servo/servo/issues/36027
---------
Signed-off-by: atbrakhi <atbrakhi@igalia.com>
Co-authored-by: eri <eri@igalia.com>
Handle `enumProperties`, `enumSymbols` and `prototype` messages.
Create `PropertyIteratorActor` and `SymbolIteratorActor`.
This shows hover information when paused in the debugger, but only for
built-in Javascript objects. Next step would be to fix `evaluateJSAsync`
to take into account the frame / context in which we are evaluating
messages, so that we can do the same for local variables and functions.
Testing: Ran `mach test-tidy` and manual testing.
Part-of: #36027
@atbrakhi
Signed-off-by: eri <eri@igalia.com>
Co-authored-by: atbrakhi <atbrakhi@igalia.com>
This change makes a variety of changes to form controls to improve their
appearance. In general, they now look more similar to Chrome and
Firefox:
- Padding is added everywhere
- Checkboxes and radio buttons are more centered in their containers
and they no longer affect the baseline of their surroundings.
- Buttons react when hovered and clicked.
- Form control styles are organized a bit.
- More controls have a style making it obvious they are disabled.
There's more work to do here, but it is saved for followup changes
- Checkbox checks are not well positioned -- they should likely be an
image.
- More work is necessary to ensure that the controls look consistent at
all font sizes and that font sizes from the surrounding content do not
leak in.
Testing: This change causes some WPT tests to start passing some to
start failing,
due to the fact that we do not properly implement all of the behavior of
form controls.
Failures:
- `/css/css-flexbox/stretch-flex-item-checkbox-input.html` and
`/css/css-flexbox/stretch-flex-item-checkbox-input.html`: These test the
behavior of checkboxes and radio buttons in flex containers, but since
we do not have a Shadow DOM or custom rendering for our controls, we
must limit the height and width of the controls. Further refinement
is necessary here to get this working properly, though it only affects
controls in flex.
- `/css/css-grid/subgrid/subgrid-button.html`,
`/css/css-transforms/transform-input-002.html`,
`/html/rendering/widgets/button-layout/scrollbars.html`: These two seem
to be
minor subpixel variations in the output.
-
`/html/rendering/widgets/baseline-alignment-and-overflow.tentative.html`:
This tests uspecified behavior about where baselines come from in
controls.
We do not implement this yet.
-
`/pointerevents/pointerevent_lostpointercapture_for_disconnected_shadow_host.html`:
We do not support the `lostpointercapture` event so I suspect this is
just
timing out in a slightly different way.
Fixes: #34969.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
While adding various spec comments to the parts of `#the-end` (which are
scattered throughout the script crate), I stumbled upon the render
blocking stylesheets implementation. There was a HTML PR to make clear
when it should run and the corresponding WPT tests have been fixed.
Fixes#22715
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
Bumps the sea-query-related group with 1 update:
[sea-query](https://github.com/SeaQL/sea-query).
Updates `sea-query` from 1.0.0-rc.29 to 1.0.0-rc.30
<details>
<summary>Commits</summary>
<ul>
<li><a
href="955d55057f"><code>955d550</code></a>
1.0.0-rc.30</li>
<li><a
href="7b5d59e6e9"><code>7b5d59e</code></a>
one more test case</li>
<li><a
href="5d3f210b9f"><code>5d3f210</code></a>
Tokenizer supports comment parsing</li>
<li><a
href="575c0f69ab"><code>575c0f6</code></a>
Tokenizer supports comment parsing</li>
<li><a
href="a6e58a186e"><code>a6e58a1</code></a>
One more test case</li>
<li><a
href="6c2ba2dd7c"><code>6c2ba2d</code></a>
Give up on ranged dependency</li>
<li><a
href="5e40a4ef66"><code>5e40a4e</code></a>
Try fix CI</li>
<li><a
href="c3d09a6c46"><code>c3d09a6</code></a>
Try fix CI</li>
<li><a
href="2e9ed5f84c"><code>2e9ed5f</code></a>
Fixup</li>
<li><a
href="6bf098e567"><code>6bf098e</code></a>
Reduce dependency on specific versions of value type crates</li>
<li>Additional commits viewable in <a
href="https://github.com/SeaQL/sea-query/compare/1.0.0-rc.29...1.0.0-rc.30">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot 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>
Bumps [zmij](https://github.com/dtolnay/zmij) from 1.0.16 to 1.0.17.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="60c35b195b"><code>60c35b1</code></a>
Release 1.0.17</li>
<li><a
href="32942883ce"><code>3294288</code></a>
Sync to vitaut/zmij@25bd96e</li>
<li><a
href="4444a23546"><code>4444a23</code></a>
Sync to vitaut/zmij@f087a34</li>
<li><a
href="2d4ef16b6d"><code>2d4ef16</code></a>
Sync to vitaut/zmij@df35b9c</li>
<li><a
href="414e8a0e50"><code>414e8a0</code></a>
Sync to vitaut/zmij@6589ede</li>
<li><a
href="e3d6fb7513"><code>e3d6fb7</code></a>
Sync to vitaut/zmij@408ebfb</li>
<li><a
href="72d4f623c5"><code>72d4f62</code></a>
Sync to vitaut/zmij@98d01d3</li>
<li><a
href="ee9805135b"><code>ee98051</code></a>
Sync to vitaut/zmij@ddbc414</li>
<li><a
href="a3b929841d"><code>a3b9298</code></a>
Sync to vitaut/zmij@6df7f2a</li>
<li><a
href="bf1da59c92"><code>bf1da59</code></a>
Sync to vitaut/zmij@6f0247e</li>
<li>Additional commits viewable in <a
href="https://github.com/dtolnay/zmij/compare/1.0.16...1.0.17">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot 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 [siphasher](https://github.com/jedisct1/rust-siphash) from 1.0.1
to 1.0.2.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="db8172048a"><code>db81720</code></a>
1.0.2</li>
<li><a
href="edb3edec49"><code>edb3ede</code></a>
Add serde for sip128</li>
<li><a
href="064daf3855"><code>064daf3</code></a>
2026</li>
<li><a
href="aa490a9fd8"><code>aa490a9</code></a>
Cleaner</li>
<li><a
href="914adf99c7"><code>914adf9</code></a>
Implement Eq for Hash128</li>
<li><a
href="d83e1840bc"><code>d83e184</code></a>
Nits</li>
<li><a
href="8c23e5d035"><code>8c23e5d</code></a>
Add issues.yml</li>
<li>See full diff in <a
href="https://github.com/jedisct1/rust-siphash/compare/1.0.1...1.0.2">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot 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 [libm](https://github.com/rust-lang/compiler-builtins) from 0.2.15
to 0.2.16.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/rust-lang/compiler-builtins/releases">libm's
releases</a>.</em></p>
<blockquote>
<h2>libm-v0.2.16</h2>
<h3>Fixed</h3>
<ul>
<li>Fix an incorrect result for <code>fminimum</code> and
<code>fmaximum</code> with the input (-0, NaN)</li>
<li>Fix a typo in <code>libm::Libm::roundeven</code></li>
<li>Fix the <code>expm1f</code> overflow threshold</li>
<li>Change <code>CmpResult</code> to use a pointer-sized return
type</li>
<li>Compare against <code>CARGO_CFG_TARGET_FAMILY</code> in a
multi-valued fashion</li>
<li>Implement <code>exp</code> and its variants for i586 with inline
assembly</li>
<li>Implement <code>floor</code> and <code>ceil</code> in assembly on
<code>i586</code></li>
</ul>
<h3>Other</h3>
<ul>
<li>Significantly optimize <code>fmod</code> worst case performance (<a
href="https://redirect.github.com/rust-lang/compiler-builtins/pull/1002">#1002</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="dfd2203a4d"><code>dfd2203</code></a>
chore: release libm v0.2.16</li>
<li><a
href="0f5c3414fc"><code>0f5c341</code></a>
Set <code>codegen-units=1</code> for benchmarks</li>
<li><a
href="723335fb9a"><code>723335f</code></a>
Implement __sync builtins for thumbv6-none-eabi (<a
href="https://redirect.github.com/rust-lang/compiler-builtins/issues/1050">#1050</a>)</li>
<li><a
href="65624df7f5"><code>65624df</code></a>
compiler-builtins: Enable AArch64 <code>__chkstk</code> for MinGW</li>
<li><a
href="a33e08ea7c"><code>a33e08e</code></a>
ci: Move the dependency installs and wall time benchmarks to
scripts</li>
<li><a
href="4ce6a08da2"><code>4ce6a08</code></a>
Fix a typo in <code>libm::Libm::roundeven</code></li>
<li><a
href="2d56e4d2f8"><code>2d56e4d</code></a>
Ignore unused_unsafe lint in libm/src/math/arch/x86/detect.rs</li>
<li><a
href="93d8cb5ff5"><code>93d8cb5</code></a>
compiler-builtins: Revert "cpuid is safe since the stdarch sync, so
remove un...</li>
<li><a
href="66ffdef3f0"><code>66ffdef</code></a>
Merge ref '23d01cd24125' from rust-lang/rust</li>
<li><a
href="be448fff6e"><code>be448ff</code></a>
Prepare for merging from rust-lang/rust</li>
<li>Additional commits viewable in <a
href="https://github.com/rust-lang/compiler-builtins/compare/libm-v0.2.15...libm-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 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>
This switches FileManager from being behind an Arc<Mutex<FileManager>>>
to just FileManager.
This saves us the Arc and Mutex and the compiler makes sure that we do
not have Race Conditions.
FileManager is already easily cloneable because it consist of store:
Arc<> and GenericEmbedderProxy.
Testing: Compilation and unit tests are the tests.
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
This changes fixes a major issue with #42105 where detailed glyphs were
added to the detailed glyph vector, but did not have corresponding
entries in the glyph buffer.
Testing: This undoes some of the test result changes from #42105. It
turns out that some were real regressions.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
This moves WebGL component from IpcChannel to GenericChannel. Of note
are the following changes:
- Removal of WebGlSender and WebGlReceiver type alias. As we removed
them in a similar component earlier.
- Moving from IpcByteSender to IpcSender over serde_bytes::ByteBuf. I
think the tradeoff for easier reading is worth it.
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
Testing: Compilation and unit tests.
---------
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
Co-authored-by: Sam <16504129+sagudev@users.noreply.github.com>
This change is a reworking of the shaping code and simplification of the
`GlyphRun` data structure.
The shaper was written between 2012 and 2014 against an early version of
Rust. It was originally written to have a single glyph entry per UTF-8
code point. This is useful when you always need to iterate through
glyphs based on UTF-8 code points. Unfortunately, this required a
tri-level data structure to hold detailed glyphs and meant that CJK
characters took over 3x the memory usage of ASCII characters. In
addition, iterating through glyphs (the most common and basic operation
on shaped text) required doing a lookup involving a binary search for
detailed glyphs (ones that had large advances or mapped to more or less
than a single UTF-8 code point).
The new design of the `GlyphStore` is instead based on `chars` in the
input string. These are tracked during layout so that the resulting
glyph output can be interpreted relatively to its original character
offset in the containing IFC. We are already dealing with IFC text on a
per-character basis for a variety of reasons (such as text
transformation and whitespace collapse). In addition, we will now able
to
implement mapping between the character offsets before and after layout
transformations of the original DOM string.
Now the penalty of more complex glyph iteration is only paid when
transforming glyph offsets to character offsets. Currently this is only
done for selections and clicking in text boxes, both of which are much
less common than layout.
This change does not properly handle selections in RTL text, though
rendering and basic selection and visual movement works (though buggy).
It does not seem like this affects the performance of shaping based on
measurement using the text shaping performance counters. This likely
means that the performance of shaping is dominated on our machines by
HarfBuzz. We noticed no performance degradation in Speedometer when run
on a M3 Mac.
Followup work:
- Properly handle selection in RTL text.
- Support mapping from original DOM character offsets to offsets in
layout after text transformation and whitespace collapse. This is now
possible.
Testing: This causes some tests to pass and a few to fail. This is
likely
due to the fact that we are handling glyphs more consistently while
shaping. Of the new failures:
- `letter-spacing-bengali-yaphala-001.html`,
`letter-spacing-cursive-001.html`, `font-feature-settings-tibetan.html`
where passing before probably because we were not applying letter
spacing to detailed glyphs. These scripts should not have letter spacing
applied to them, because they are cursive -- which we never implemented
properly. It will be handled in a a followup.
- `shaping-arabic-diacritics-001.html`: This was a false pass. The tests
verifies that Arabic diacritics are applied to NBSP. This wasn't
happening before nor after this change, but the results matched anyway.
Now they don't, but before and after are equally broken.
-
Fixes: #216
Part of #35540.
---------
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Oriol Brufau <obrufau@igalia.com>
When interrupting `DedicatedWorkerGlobalScope` execution, handle the
case that the `DebuggerGlobalScope` is running its script by just
terminating. It seems that this happens sometimes when trusted types
terminates a worker script.
Testing: This should fix some flaky `expect` failure panics in trusted
types WPT tests.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
This PR fixes error handling in Servo's HTTP fetch implementations to
properly handle content decompression failures (e.g., bad gzip content)
by treating them as network errors as defined in WPT.
- Fixed some previously failing tests in bad-gzip-body.any.js that now
properly reject when consuming bodies with bad gzip content
- Several fetch metadata tests now pass correctly
---------
Signed-off-by: araya <araya@araya.dev>
Improve the `requestFullscreen` and `exitFullscreen` spec conformance
and notes the todos with comments with issues.
Testing: Existing WPTs
---------
Signed-off-by: Jo Steven Novaryo <steven.novaryo@gmail.com>
This has caused a regression in job time. This change disables the
self-hosted WPT runners until the regression is addressed.
Testing: This is a CI change so it is the test of itself.
Fixes: #42121.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
This allows us to reuse the list without python, e.g. from a
shell-script. This is useful to build docker image layers, without
requiring python / uv / mach first.
Future changes will split the list into multiple text files, so we can
install only required subsets (e.g. skipping gstreamer) and a workflow
to automatically sync changes to the book.
Testing: `./mach bootstrap` still works.
---------
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
Signed-off-by: Jonathan Schwender <55576758+jschwe@users.noreply.github.com>
Parsed and vectorized representations of SVGs in the image cache are
never evicted when SVGs are updated, leading to stale SVGs staying in
the image cache alongside updated ones. This PR:
- adds a stringified uuid field to SVGSVGElement
- adds a map of `SVGSVGElement` uuid to `PendingImageId` in
`ImageCacheImpl`
- adds an optional argument for the uuid to
`ImageCacheImpl::rasterize_vector_image`, which, if provided, removes
any existing parsed svgs associated with the uuid and stores a new entry
of uuid -> `PendingImageId`
- implements `unbind_from_tree` on SVGSVGElement, which clears the
associated images/representations from the image_cache (from
`vector_images`, `rasterized_vector_images`, and `completed_loads`) as
well as from the layout image resolver image cache.
Testing: Each of the following documents should display their (very
flashy) content correctly and memory usage should stay constant
<details>
<summary>Changing SVGSVGElement</summary>
```
<svg height="100" width="100" xmlns="http://www.w3.org/2000/svg">
<circle id="c" r="1" cx="50" cy="50" fill="red" />
</svg>
<script>
let c = document.querySelector("#c");
let r = 1;
setInterval(() => {
r += 1;
c.setAttribute("r", r.toString());
let tmp = document.createTextNode("ignored");
c.parentNode.appendChild(tmp);
tmp.remove();
}, 100);
</script>
```
</details>
<details>
<summary>Unbinding SVGSVGElements</summary>
```
<div id="parent_div">
<svg id="test" height="100" width="100" xmlns="http://www.w3.org/2000/svg">
<circle id="c" r="10" cx="50" cy="50" fill="red" />
</svg>
</div>
<script>
let div = document.querySelector("#parent_div");
let svg_html_string = div.innerHTML;
let svg = document.querySelector("#test");
let r = 10;
setInterval(() => {
svg.remove();
div.innerHTML = svg_html_string;
svg = document.querySelector("#test");
let circle = document.querySelector("#c");
r += 1;
circle.setAttribute("r", r.toString());
}, 100);
</script>
```
</details>
<details>
<summary>Unbinding SVGSVGElements (and rebinding the same SVG)</summary>
This didn't work until I also evicted the associated image from the
layout image resolver image cache and the image cache's
`completed_loads` on SVGSVGElement unbind, so it seems like a useful, if
a bit redundant, test.
```
<div id="parent_div">
<svg id="test" height="100" width="100" xmlns="http://www.w3.org/2000/svg">
<circle id="c" r="10" cx="50" cy="50" fill="red" />
</svg>
</div>
<script>
let div = document.querySelector("#parent_div");
let svg_html_string = div.innerHTML;
let svg = document.querySelector("#test");
let r = 10;
setInterval(() => {
svg.remove();
div.innerHTML = svg_html_string;
svg = document.querySelector("#test");
}, 100);
</script>
```
</details>
Fixes: #41070
---------
Signed-off-by: Tom Cummings <cummings.t287@gmail.com>
Since we use `NetworkError` just for logging reasons, we don't really
need to pass it around; instead lets follow spec more closely and pass a
`None` on network failures.
Make more explicit if a `modulemap` entry is currently fetching or
ready.
Testing: No functional change, covered by existing tests
---------
Signed-off-by: Gae24 <96017547+Gae24@users.noreply.github.com>
Bumps [web_atoms](https://github.com/servo/html5ever) from 0.2.1 to
0.2.3.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="8c91888894"><code>8c91888</code></a>
v0.2.3</li>
<li><a
href="d7d33c2bee"><code>d7d33c2</code></a>
Upgrade to rustc 1.4.0-nightly (8f1b0aa32 2015-08-21)</li>
<li><a
href="c3d2717295"><code>c3d2717</code></a>
v0.2.2</li>
<li><a
href="6e13c25d68"><code>6e13c25</code></a>
Merge remote-tracking branch 'upstream/stable'</li>
<li><a
href="3656fcd0d4"><code>3656fcd</code></a>
Auto merge of <a
href="https://redirect.github.com/servo/html5ever/issues/155">#155</a> -
nox:quadratic-add-attrs-if-missing, r=SimonSapin</li>
<li><a
href="dfd64ecdff"><code>dfd64ec</code></a>
Fix the algorithmic complexity of RcDom::add_attrs_if_missing()</li>
<li><a
href="9ba6f62faa"><code>9ba6f62</code></a>
Promise that add_attrs_if_missing() is called only on elements (fixes <a
href="https://redirect.github.com/servo/html5ever/issues/121">#121</a>)</li>
<li><a
href="2b006fafcd"><code>2b006fa</code></a>
Auto merge of <a
href="https://redirect.github.com/servo/html5ever/issues/154">#154</a> -
servo:rustup, r=nox</li>
<li><a
href="491e0ea267"><code>491e0ea</code></a>
Upgrade to rustc 1.4.0-nightly (e35fd7481 2015-08-17)</li>
<li><a
href="bdb254b8df"><code>bdb254b</code></a>
Auto merge of <a
href="https://redirect.github.com/servo/html5ever/issues/152">#152</a> -
scaevola:patch-1, r=Manishearth</li>
<li>Additional commits viewable in <a
href="https://github.com/servo/html5ever/compare/v0.2.1...v0.2.3">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot 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 [uuid](https://github.com/uuid-rs/uuid) from 1.19.0 to 1.20.0.
<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.20.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Derive Ord and PartialOrd for NonNilUuid by <a
href="https://github.com/mivort"><code>@mivort</code></a> in <a
href="https://redirect.github.com/uuid-rs/uuid/pull/854">uuid-rs/uuid#854</a></li>
<li>Implement Deserialize on adapter types by <a
href="https://github.com/KodrAus"><code>@KodrAus</code></a> in <a
href="https://redirect.github.com/uuid-rs/uuid/pull/855">uuid-rs/uuid#855</a></li>
<li>Deprecate <code>macro-diagnostics</code> by <a
href="https://github.com/KodrAus"><code>@KodrAus</code></a> in <a
href="https://redirect.github.com/uuid-rs/uuid/pull/856">uuid-rs/uuid#856</a></li>
<li>Prepare for 1.20.0 release by <a
href="https://github.com/KodrAus"><code>@KodrAus</code></a> in <a
href="https://redirect.github.com/uuid-rs/uuid/pull/857">uuid-rs/uuid#857</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/mivort"><code>@mivort</code></a> made
their first contribution in <a
href="https://redirect.github.com/uuid-rs/uuid/pull/854">uuid-rs/uuid#854</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/uuid-rs/uuid/compare/v1.19.0...v1.20.0">https://github.com/uuid-rs/uuid/compare/v1.19.0...v1.20.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="c3346ddf2a"><code>c3346dd</code></a>
Merge pull request <a
href="https://redirect.github.com/uuid-rs/uuid/issues/857">#857</a> from
uuid-rs/cargo/v1.20.0</li>
<li><a
href="66eebc34ae"><code>66eebc3</code></a>
prepare for 1.20.0 release</li>
<li><a
href="3b66758622"><code>3b66758</code></a>
Merge pull request <a
href="https://redirect.github.com/uuid-rs/uuid/issues/856">#856</a> from
uuid-rs/docs/bytes-le-ordering</li>
<li><a
href="e2bdd44ec3"><code>e2bdd44</code></a>
don't run UI tests in wasm</li>
<li><a
href="b6dc7ece22"><code>b6dc7ec</code></a>
note that ordering applies to fields in to/from_bytes_le</li>
<li><a
href="a0281cd2f7"><code>a0281cd</code></a>
Merge pull request <a
href="https://redirect.github.com/uuid-rs/uuid/issues/855">#855</a> from
uuid-rs/feat/serde-fmt</li>
<li><a
href="db27b67d87"><code>db27b67</code></a>
Merge pull request <a
href="https://redirect.github.com/uuid-rs/uuid/issues/854">#854</a> from
mivort/non-nil-uuid-ord</li>
<li><a
href="efb06f21eb"><code>efb06f2</code></a>
implement Deserialize on adapter types</li>
<li><a
href="50d44ad3c5"><code>50d44ad</code></a>
Derive Ord and PartialOrd for NonNilUuid</li>
<li>See full diff in <a
href="https://github.com/uuid-rs/uuid/compare/v1.19.0...v1.20.0">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot 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 [quote](https://github.com/dtolnay/quote) from 1.0.43 to 1.0.44.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dtolnay/quote/releases">quote's
releases</a>.</em></p>
<blockquote>
<h2>1.0.44</h2>
<ul>
<li>Support raw lifetime syntax <code>'r#async</code> (<a
href="https://redirect.github.com/dtolnay/quote/issues/323">#323</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="ad9fb4019e"><code>ad9fb40</code></a>
Release 1.0.44</li>
<li><a
href="6df23cd31b"><code>6df23cd</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/quote/issues/323">#323</a>
from dtolnay/lifetime</li>
<li><a
href="f7848915a1"><code>f784891</code></a>
Support raw lifetime</li>
<li><a
href="508dbdd734"><code>508dbdd</code></a>
Add test of raw lifetime</li>
<li><a
href="27cb8c941e"><code>27cb8c9</code></a>
Update ui test suite to nightly-2026-01-21</li>
<li><a
href="bdd36fc744"><code>bdd36fc</code></a>
Touch up PR 321</li>
<li><a
href="d62d6ec2a0"><code>d62d6ec</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/quote/issues/321">#321</a>
from tamird/doc-alloc-format</li>
<li><a
href="242c683b95"><code>242c683</code></a>
doc: restore link to <code>format!</code></li>
<li>See full diff in <a
href="https://github.com/dtolnay/quote/compare/1.0.43...1.0.44">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot 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 [ml-kem](https://github.com/RustCrypto/KEMs) from 0.2.1 to 0.2.2.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="3f039141c5"><code>3f03914</code></a>
ml-kem v0.2.2</li>
<li><a
href="000d32cb12"><code>000d32c</code></a>
ml-kem v0.2.1</li>
<li>See full diff in <a
href="https://github.com/RustCrypto/KEMs/compare/ml-kem/v0.2.1...ml-kem/v0.2.2">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot 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>
*Describe the changes that this pull request makes here. This will be
the commit message.*
Move stream file to script/dom/stream
part of https://github.com/servo/servo/issues/38901
Testing: *Describe how this pull request is tested or why it doesn't
require tests*
Fixes: *Link to an issue this pull requests fixes or remove this line if
there is no issue*
---------
Signed-off-by: hyuraku <32809703+hyuraku@users.noreply.github.com>
Signed-off-by: Taym Haddadi <haddadi.taym@gmail.com>
Co-authored-by: Taym Haddadi <haddadi.taym@gmail.com>
Other embedders might not want to use `uv` and manage python in a
different way. This is not recommended by us, and we add warning
messages that clearly recommend using uv, but allow using regular
python. This will work if the embedder installs the necessary python
dependencies.
We provide more information in the output as to what exactly failed,
e.g. if `uv` was not installed, or if `uv run python` executed, but
failed at runtime.
The documentation of `find_python` was also updated. The link to the
book was outdated, and I don't think we currently document the set of
python dependencies needed for building servo. This can be improved by
follow-up PRs, e.g. using `uv run --script`.
Testing: No changes to the default `uv run` flow - The new python
fallback is not particularly tested, and may have issues. However, the
newly added warnings would help debugging any issues.
This might help shine a bit more light on #42122
---------
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
Changed the return type of `ModuleObject::handle()` to the original type
of its contained handle by removing `.into()` call, as requested in the
linked issue.
Additional changes are due to temporary borrows now sharing lifetime
with returned handle reference.
Testing: No new tests needed, as the code is functionally the same after
the changes. Verified with running `./mach test-build` and `./mach
test-unit` successfully.
Fixes: https://github.com/servo/servo/issues/42051
Signed-off-by: Krzysztof Biedroń <arkendil@gmail.com>
This change modifies `get_property_jsval` and `get_property` to take a
`&CStr` instead of `&str`, to avoid conversion between the two in many
places.
Testing: Covered by existing tests
Part of https://github.com/servo/servo/issues/42126
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
Listing directory and constructing the list is another prime candidate
to switch from blocking code to async code.
This PR does this.
Of note is the change in type for ProtocolHandler::load which now has a
lifetime bounded by Request and self and the Response has a similar
lifetime bound.
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
Testing: Looking at directories still works.
---------
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
Bug that would result in local storage changes being overwritten by
session storage ones.
Testing: Added a unit test
Fixes: #41324
---------
Signed-off-by: Ashwin Naren <arihant2math@gmail.com>
It's stupid to create rust strings in the first place to only convert
them into C-style for SM anyway. Furthermore most of those strings are
const literals (comp time strings), so now we will just store additional
null byte within them and able to avoid any runtime conversions.
We should do this in more places.
Testing: Just refactor.
---------
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
This PR targets on adding JSON to `IDL` to show all supported values in
JS API.
This was missed during implementation. Screenshot Attached for JS API
Testing: `components/servo/tests/largest_contentful_paint.rs`
Fixes: None, this is just an refinement.
<img width="772" height="360" alt="Screenshot from 2026-01-19 17-13-20"
src="https://github.com/user-attachments/assets/1730f3f6-423c-466c-b0d4-976d35d82827"
/>
---------
Signed-off-by: Shubham Gupta <shubham.gupta@chromium.org>
Regardless of the `Ok` status, we should always create a
stylesheet. However, the determining of the load/error event
is based on whether it has parsed actual content or not.
It also realigns some of the spec text to now only do it for link
elements, since for styles we shouldn't be checking the result of
the content type.
Part of #22715
---------
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
Signed-off-by: Tim van der Lippe <TimvdLippe@users.noreply.github.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
Welp, this just happened while I tried to so something else. cc
@arihant2math and @janvarga just so you are aware of these changes.
Testing: Just refactor, but should be covered by WPT tests.
Part of #40600
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
This change finishes the big rename associated with the old
`compositing` crates. Long ago, these crates managed a compositor, like
you might find in a traditional web engine. These days, compositing is
done in WebRender so the name has stopped making much sense. Various
structs inside the crates have already been renamed and this is the
final big change necessary for the rename
Testing: This is just a rename so existing tests should cover it.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
The devcontainer configuration makes it easier for users to setup a
working environment, by using docker / podman and a devcontainer IDE
plugin (or the CLI).
Testing: Manually tested the configuration in VS code on linux.
Fixes: #40469
---------
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
This better reflects the intention of the code, which is that these
fields are set at most one time.
Testing: No behaviour change expected, so existing tests suffice.
Signed-off-by: Josh Matthews <josh@joshmatthews.net>
Devtools Channel does not need mutability. Hence, we do not need an
Arc<Mutex<_>>.
As the underlying channel is a Crossbeam Sender the clone should be
relatively cheap.
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
Testing: Thanks to rust compilation means correctness.
---------
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
This change makes it so that the euclid types returned from layout
queries use the `CSSPixel` unit type when appropriate. The minimal set
of changes are also made to avoid having to convert these types to the
`UnknownUnit` in other places. There is still some casting that has to
happen to deal with the difference between Stylo's `CSSPixel` and
WebRender's `LayoutPixel`, but a followup changes will try to switch to
using one or the other.
Testing: This should not change behavior, so is covered by existing
tests.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Probably we should use a proper linter like `shellcheck`, but in the
meantime make the lint slightly smarter, so that it doesn't complaint
about e.g. `$1`. This is especially a problem when adding scripts which
use `awk`, since our lint is quite stupid and doesn't understand `''`
strings.
This fixes linting, for a simple new script introduced in
https://github.com/servo/servo/pull/41775
Testing: ./mach test-tidy still passes.
---------
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
Move the message handling related to opening new connections to the
factory, and store open request on it. This is a first step towards
tracking connections and allowing two-way messaging regarding them.
Also the very beginnings of tracking connections on the backend.
Testing: WPT
Fixes: Part of https://github.com/servo/servo/issues/40983
---------
Signed-off-by: gterzian <2792687+gterzian@users.noreply.github.com>
This cleans up some visibility for the http-cache and removes an async
that was not used.
Testing: Does not change functionality so compilation and test
compilations are enough.
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
Although these type of inputs do not have an activation behavior (the
behavior of their clicks are up to the page), they should still get the
"active" node state when they are pressed. This allows the `:active`
pseudo-selector to work on them, making press highlights work.
Testing: This fixes two WPT subtests.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
An input text might not be a focusable area if it is disabled. In this
case return `None` from `find_focusable_shadow_host_if_necessary` which
causes no focus to occur.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Testing: This change includes a test.
Fixes: #42074.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
This commit remove more unused code from `script_module`,
`inline_module_map` and `dynamic_modules` fields from `GlobalScope` and
the now unused custom interface `DynamicModuleOwner`.
Testing: No functional change, a successful build is enough.
---------
Signed-off-by: Gae24 <96017547+Gae24@users.noreply.github.com>
Clicking on the WebView should move focus from the egui interface to the
WebView, so that any subsequent keyboard events are sent there.
Testing: We do not have tests for this layer of servoshell and these
kind of
interactions are difficult to test without a live test runner.
Fixes: #42073Fixes: #41681
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
One less git dependency.
Testing: No functional changes. The release is the same as the last
pinned git commit.
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
This change adds basic support for selecting text via dragging the mouse
in text inputs. This is currently handled entirely inside of text
inputs, but will be integrated into a more global drag handler when that
is implemented in the `DocumentEventHandler`. This means that events
that happen outside of the text input currently don't update the
selection.
Testing: This adds Servo-specific WPT-style tests. There are WPT tests
that test this sort of behavior, but I believe they rely on selection
events, which we have no implemented yet (we will soon).
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Instead of attempting to manage the virtual environment ourselves, use
`uv` to manage the installation of dependencies.
Since we still have dependencies coming from upstream wpt, we use
`[tool.setuptool]` in our pyproject.toml to ensure that `uv` dynamically
installs our dependencies according to the requirements.txt files.
Additionally, this PR also reverts `--no-project` usage. `--no-project`
was added as a temporary workaround in
https://github.com/servo/servo/pull/37741.
It's not 100% clear to me what exactly the issue was, but
[apparently](https://github.com/servo/servo/pull/37741#pullrequestreview-2985666234)
the issue caused the build to break.
Removing the arg seems to work fine, except that we get a warning about
a missing `requiress-python` value in `pyproject.toml`.
Apparently it is good practice to specify the requirement as `>=` in th
pyroject, and lock the exact version via `uv pin` (which writes to
`.python_version`, where we already pin 3.11.
Testing: Should be covered by existing tests, which compile code on all
platforms.
---------
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
- Allowing overriding the target repository, to allow generating regular
servo releases directly
- Releases to servo/servo require manual publishing (policy decision)
- Generate artifact attestation for the remaining artifacts.
- Remove unused `GITHUB_HOMEBREW_TOKEN` secret
- Since getting the names of release artifacts right, and keeping them
in sync can be error-prone, we now use artifact-ids and pass them around
via `outputs`, so we can't accidentally get the artifact name wrong.
- Fix a deprecation warning in `upload_nightly.py` by explicitly
creating an `Auth.Token` object, instead of just passing the token as a
string.
- We can't use `${{ env.RELEASE_REPO }}` when calling the reusable
upload_release.yml workflow, so we need to copy the expression.
- To be able to use the github token to upload releases to servo/servo
(without adding another secret, which could be leaked), we need to add
`permissions: content: write` to the release job. The nightly job
doesn't need this permission, hence there is some unfortunate
duplication. This should be improved in future work, where we can
refactor the upload_python script, to support uploading all artifacts
from a single job, instead of one per platform as we have now.
Testing:
- [manual run for servo/servo, i.e. "regular
release"](https://github.com/servo/servo/actions/runs/21217481628)
- [manual run for
servo/servo-nightly-builds](https://github.com/servo/servo/actions/runs/21214516079)
---------
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
Implementation for parsing the font-variation-settings and including
them in the fontface rule-set, currently they are discarded and
annotated with a TODO
Related: https://github.com/servo/servo/issues/41591
Testing: Tests are included for the changes to be implemented, as
suggested they currently fail and thats the starting point.
Signed-off-by: Osoro Bironga <fanosoro@gmail.com>
This replaces uses of our custom RootedVec type that were storing JS GC
values with stack rooting that is better integrated with the engine.
This ensures that storing nursery-allocated objects in these vectors is
handled correctly during GC, unlike our RootedVec implementation which
trips an assertion in debug mozjs builds.
Testing: No observable difference in non-mozjs builds.
Fixes: part of #40141
---------
Signed-off-by: Josh Matthews <josh@joshmatthews.net>
Bumps [proc-macro2](https://github.com/dtolnay/proc-macro2) from 1.0.105
to 1.0.106.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dtolnay/proc-macro2/releases">proc-macro2's
releases</a>.</em></p>
<blockquote>
<h2>1.0.106</h2>
<ul>
<li>Optimize <code>Span::byte_range</code> (<a
href="https://redirect.github.com/dtolnay/proc-macro2/issues/530">#530</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="58ab776b95"><code>58ab776</code></a>
Release 1.0.106</li>
<li><a
href="1e18a0bb10"><code>1e18a0b</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/proc-macro2/issues/530">#530</a>
from dtolnay/byterange</li>
<li><a
href="7f5973b73a"><code>7f5973b</code></a>
Make char count bidirectional</li>
<li><a
href="08d1dd0bc3"><code>08d1dd0</code></a>
Cache span end positions</li>
<li>See full diff in <a
href="https://github.com/dtolnay/proc-macro2/compare/1.0.105...1.0.106">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot 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>
In DOM traversal, `display:contents `elements don't generate boxes, but
their styles still need to apply to children.
`ModernContainerBuilder` now keeps track of `display:contents` ancestors
during traversal then apply their style to text runs.
In `InlineFormattingContextBuilder::push_text` only use same style
parent if both selected and current inline style are identical.
Testing:
> PASS [expected FAIL]
/css/css-display/display-contents-dynamic-before-after-001.html
> PASS [expected FAIL]
/css/css-display/display-contents-dynamic-inline-flex-001-inline.html
> PASS [expected FAIL]
/css/css-display/display-contents-dynamic-inline-flex-001-none.html
> FAIL [expected PASS] /css/css-display/display-contents-fieldset.html
> PASS [expected FAIL]
/css/css-display/display-contents-first-line-002.html
> PASS [expected FAIL] /css/css-display/display-contents-inline-001.html
> PASS [expected FAIL]
/css/css-display/display-contents-inline-flex-001.html
> PASS [expected FAIL]
/css/css-display/display-contents-line-height.html
Fixes: https://github.com/servo/servo/issues/41797
cc: @xiaochengh
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
Co-authored-by: Oriol Brufau <obrufau@igalia.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
#41857 exposed some more code in the net crate that performed blocking
communication with the embedder and could prevent other networking tasks
from running. To address that, we need the net code to perform async
receive operations, which requires passing tokio channels to the
embedder.
However, the current embedding message design puts all messages in the
same enum and requires that they are serializable. Embedder messages
from the network do not require this property, since they run in the
same process as the embedder. Therefore, this PR creates a new
EmbedderProxy structure that is generic over the message, allowing each
component of Servo to use a embedder message type that is specific to
that component.
The final benefit of this set of changes is that the embedder messages
for a particular crate can now live in the crate itself (since the only
crate that depends on it is the servo crate), not in the shared
`embedding_traits` crate. This hugely reduces the amount of code that
needs to be rebuilt when changing these messages, enabling much faster
incremental builds for those changes.
Testing: Strictly refactoring; existing test coverage is sufficient.
Fixes: #41958
---------
Signed-off-by: Josh Matthews <josh@joshmatthews.net>
PR #41707 changed so that the hit test item is being offset by the
containing block of the fragment, but this is not exactly correct since
WebRender process the the coordinates of the items based on the nearest
reference frame parent. Therefore, the previous fix would fail whenever
a reference frame is defined for a descendant scroll container.
Testing: Testdriver WPT
Signed-off-by: Jo Steven Novaryo <steven.novaryo@gmail.com>
layout: Add support for `caret-color`
This upgrades our version of `stylo` to one that supports
`caret-color` and implements support for it during display list
construction.
Depends on:
- #41963
- servo/stylo#287
Testing: This causes about 10 WPT tests to start passing.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Instead of handling selection in text input during box tree / fragment
tree construction, fully handle it during display list construction.
This means that when the selection changes in script, it updates
automatically in the `FragmentTree` and only a new display list is
necessary. This avoids a layout while changing the selection in text
fields.
Testing: This fixes a few rendering issues, but these are very hard
to isolate and test for. It causes one test to start failing, but this
is
because a cursor that wasn't rendered properly now starts showing
up.
Fixes: #41920.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Oriol Brufau <obrufau@igalia.com>
The test harness attempts to reset preferences to default values when
running a test in which previously-set preferences are no longer set.
This leads to confusing interactions with any preference customizations
that are present, such as `--pref whatever` or `--prefs-file
something.json`, which are not considered when calculating the default.
This PR changes that: whatever preference values are present when the
webdriver server starts is treated as the default value.
Testing: This is a servo-specific webdriver extension, and we're fixing
an interaction with the test harness. I don't see another way to test
this besides observing the impact on our test results.
Fixes: #42043
Signed-off-by: Josh Matthews <josh@joshmatthews.net>
Bumps [openssl-probe](https://github.com/rustls/openssl-probe) from
0.2.0 to 0.2.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/rustls/openssl-probe/releases">openssl-probe's
releases</a>.</em></p>
<blockquote>
<h2>0.2.1</h2>
<ul>
<li>Support for OpenHarmony.</li>
<li>Corrections to crate metadata.</li>
</ul>
<h2>What's Changed</h2>
<ul>
<li>feat: add openharmony platform preset certs folder by <a
href="https://github.com/richerfu"><code>@richerfu</code></a> in <a
href="https://redirect.github.com/rustls/openssl-probe/pull/42">rustls/openssl-probe#42</a></li>
<li>docs: clarify lib description, update README by <a
href="https://github.com/cpu"><code>@cpu</code></a> in <a
href="https://redirect.github.com/rustls/openssl-probe/pull/47">rustls/openssl-probe#47</a></li>
<li>Prepare 0.2.1 by <a
href="https://github.com/ctz"><code>@ctz</code></a> in <a
href="https://redirect.github.com/rustls/openssl-probe/pull/46">rustls/openssl-probe#46</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="9181752ff5"><code>9181752</code></a>
Prepare 0.2.1</li>
<li><a
href="2a23322fcd"><code>2a23322</code></a>
docs: clarify lib description, update README</li>
<li><a
href="5e18d538b7"><code>5e18d53</code></a>
feat: add openharmony platform preset certs folder</li>
<li><a
href="df769f449b"><code>df769f4</code></a>
Update repo URL in Cargo metadata</li>
<li><a
href="cc52ac707b"><code>cc52ac7</code></a>
ci: check cargo-deny (and fix up SPDX metadata)</li>
<li><a
href="4cfa0952d6"><code>4cfa095</code></a>
ci: check semver compatibility</li>
<li><a
href="04e7058a36"><code>04e7058</code></a>
ci: check clippy</li>
<li><a
href="fbce3247f8"><code>fbce324</code></a>
ci: check code formatting</li>
<li><a
href="11fba1bdf7"><code>11fba1b</code></a>
ci: setup duplicate workflow cancellation</li>
<li><a
href="a44b6f114a"><code>a44b6f1</code></a>
ci: restrict workflow permissions</li>
<li>Additional commits viewable in <a
href="https://github.com/rustls/openssl-probe/compare/0.2.0...0.2.1">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot 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 [zmij](https://github.com/dtolnay/zmij) from 1.0.15 to 1.0.16.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="e21c67ba43"><code>e21c67b</code></a>
Release 1.0.16</li>
<li><a
href="6b331d7c5e"><code>6b331d7</code></a>
Sync to vitaut/zmij@964a4ad</li>
<li><a
href="0d0c7b6a36"><code>0d0c7b6</code></a>
Sync to vitaut/zmij@ec78237</li>
<li><a
href="41031149ce"><code>4103114</code></a>
Sync to vitaut/zmij@aa2b909</li>
<li><a
href="cbe91f4699"><code>cbe91f4</code></a>
Sync to vitaut/zmij@3b81fed</li>
<li><a
href="f3f81af74a"><code>f3f81af</code></a>
Sync to vitaut/zmij@ce01335</li>
<li><a
href="827c4e29c9"><code>827c4e2</code></a>
Sync to vitaut/zmij@4f718c5</li>
<li><a
href="50507cfe41"><code>50507cf</code></a>
Sync to vitaut/zmij@242429c</li>
<li><a
href="9c2b481057"><code>9c2b481</code></a>
Sync to vitaut/zmij@6523396</li>
<li><a
href="1de9932c4d"><code>1de9932</code></a>
Ignore many_single_char_names pedantic clippy lint</li>
<li>Additional commits viewable in <a
href="https://github.com/dtolnay/zmij/compare/1.0.15...1.0.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 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>
We only implemented the first part (parser_inserted), but
weren't checking any of the other cases.
Testing: WPT
Part of #22715
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
winit on macOS seems to send a mousemove event right before mouse button
up events. This interferes with interactive use of text boxes -- for
instance double-clicking to select the hovered word. This change makes
it so
that mouse move events that do not change the cursor location are
ignored.
Testing: This change adds a Servo-specific WPT-style test.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Updates it according to the spec and adds a big explanation why it
differs from the spec. It took me a while to figure out what's going on
here and why the code was actually correct.
Testing: WPT
Part of #22715Fixes#42009
---------
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
Signed-off-by: Tim van der Lippe <TimvdLippe@users.noreply.github.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
Track open requests by their ID, so that specific requests can be
aborted instead of aborting all request for a given db name. This is
important because worker and windows at the same origin could be opening
databases and aborting their opening, but this should not affect other
scopes at the origin.
Testing: Existing WPT test suites.
Fixes: None, but part of https://github.com/servo/servo/issues/40983
---------
Signed-off-by: gterzian <2792687+gterzian@users.noreply.github.com>
Modern layout (flex / grid) children box trees are constructed in
parallel, so the box slot must be procured serially before this parallel
pass. This change fixes a regression #41951 where this box slot was
created during the parallel part of the layout.
Testing: This fixes a flaky crash in
`css/css-display/display-contents-dynamic-flex-002-inline.html` and
probably
other flexbox tests. I verified this locally by running the test with
`--repeat-until-unexpected`.
Fixes: #42022
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Bumps [euclid](https://github.com/servo/euclid) from 0.22.11 to 0.22.13.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/servo/euclid/commits">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot 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 [rustls-pki-types](https://github.com/rustls/pki-types) from
1.13.2 to 1.14.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/rustls/pki-types/releases">rustls-pki-types's
releases</a>.</em></p>
<blockquote>
<h2>1.14.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Add FipsStatus enum by <a
href="https://github.com/djc"><code>@djc</code></a> in <a
href="https://redirect.github.com/rustls/pki-types/pull/102">rustls/pki-types#102</a></li>
</ul>
<h2>1.13.3</h2>
<p><strong>Fuse PEM iterators as soon as an IO error is seen.</strong>
This ensures errors are returned when decoding multiple PEM items from
an <code>std::io::Read</code> which permanently returns errors. This
includes use of <code>pem_file_iter()</code> and
<code>pem_reader_iter()</code> against directories. Fixes <a
href="https://redirect.github.com/rustls/pki-types/issues/98">#98</a>.</p>
<h2>What's Changed</h2>
<ul>
<li>pem: fuse ReadIter on I/O errors by <a
href="https://github.com/djc"><code>@djc</code></a> in <a
href="https://redirect.github.com/rustls/pki-types/pull/100">rustls/pki-types#100</a></li>
<li>Prepare 1.13.3 by <a
href="https://github.com/ctz"><code>@ctz</code></a> in <a
href="https://redirect.github.com/rustls/pki-types/pull/101">rustls/pki-types#101</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/rustls/pki-types/compare/v/1.13.2...v/1.13.3">https://github.com/rustls/pki-types/compare/v/1.13.2...v/1.13.3</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="b829c966d2"><code>b829c96</code></a>
Bump version to 1.14.0</li>
<li><a
href="5f181d9185"><code>5f181d9</code></a>
Add FipsStatus enum</li>
<li><a
href="e033938b78"><code>e033938</code></a>
Enable warnings for exhaustive types</li>
<li><a
href="2e7938db31"><code>2e7938d</code></a>
Enable warnings for more clippy lints</li>
<li><a
href="42d98b4c5e"><code>42d98b4</code></a>
Enable warnings for more rustc lints</li>
<li><a
href="3a90b07204"><code>3a90b07</code></a>
Prepare 1.13.3</li>
<li><a
href="1daaec8743"><code>1daaec8</code></a>
pem: fuse ReadIter on I/O errors</li>
<li>See full diff in <a
href="https://github.com/rustls/pki-types/compare/v/1.13.2...v/1.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 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>
Bumps the zbus-related group with 2 updates:
[zbus](https://github.com/z-galaxy/zbus) and
[zbus_macros](https://github.com/z-galaxy/zbus).
Updates `zbus` from 5.13.1 to 5.13.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/z-galaxy/zbus/releases">zbus's
releases</a>.</em></p>
<blockquote>
<h2>zbus-5.13.2</h2>
<h3>Fixed</h3>
<ul>
<li>🐛 fix regression on windows build. <a
href="https://redirect.github.com/z-galaxy/zbus/issues/1686">#1686</a></li>
<li>🐛 Correct Peer interface to work on any arbitrary object path.</li>
</ul>
<h2>zbus_macros-5.13.2</h2>
<h3>Fixed</h3>
<ul>
<li>🐛 Allow <code>out_args</code> with multiple names for non-tuple
types.</li>
</ul>
<h3>Other</h3>
<ul>
<li>🤖 release-plz: Fix formatting of CHANGELOG files.</li>
<li>🤖 release-plz: Use the default header in changelog.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="3c2fae5077"><code>3c2fae5</code></a>
Merge pull request <a
href="https://redirect.github.com/z-galaxy/zbus/issues/1688">#1688</a>
from zeenix/zb-release</li>
<li><a
href="00bbca0acc"><code>00bbca0</code></a>
🔖 zb,zm: Release 5.13.2</li>
<li><a
href="fead96310e"><code>fead963</code></a>
🤖 release-plz: Custom regex for minor version bump</li>
<li><a
href="fa2794d19c"><code>fa2794d</code></a>
Merge pull request <a
href="https://redirect.github.com/z-galaxy/zbus/issues/1687">#1687</a>
from fmartinsons-una/fm/fix-1686</li>
<li><a
href="3d4ed5711f"><code>3d4ed57</code></a>
🐛 zb: fix regression on windows build</li>
<li><a
href="f473c1dd77"><code>f473c1d</code></a>
Merge pull request <a
href="https://redirect.github.com/z-galaxy/zbus/issues/1685">#1685</a>
from zeenix/zv-revert-hashmap-breakage</li>
<li><a
href="d28c24d752"><code>d28c24d</code></a>
🔖 zvariant 5.9.2</li>
<li><a
href="60bba3d8a5"><code>60bba3d</code></a>
⏪️ Revert "🐛 zv: Don't impl Type for dicts with non-basic
keys"</li>
<li><a
href="78ab879ed8"><code>78ab879</code></a>
Merge pull request <a
href="https://redirect.github.com/z-galaxy/zbus/issues/1635">#1635</a>
from cachebag/peer-any-path</li>
<li><a
href="b139742846"><code>b139742</code></a>
🐛 zb: Correct Peer interface to work on any arbitrary object path</li>
<li>Additional commits viewable in <a
href="https://github.com/z-galaxy/zbus/compare/zbus-5.13.1...zbus-5.13.2">compare
view</a></li>
</ul>
</details>
<br />
Updates `zbus_macros` from 5.13.1 to 5.13.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/z-galaxy/zbus/releases">zbus_macros's
releases</a>.</em></p>
<blockquote>
<h2>zbus_macros-5.13.2</h2>
<h3>Fixed</h3>
<ul>
<li>🐛 Allow <code>out_args</code> with multiple names for non-tuple
types.</li>
</ul>
<h3>Other</h3>
<ul>
<li>🤖 release-plz: Fix formatting of CHANGELOG files.</li>
<li>🤖 release-plz: Use the default header in changelog.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="3c2fae5077"><code>3c2fae5</code></a>
Merge pull request <a
href="https://redirect.github.com/z-galaxy/zbus/issues/1688">#1688</a>
from zeenix/zb-release</li>
<li><a
href="00bbca0acc"><code>00bbca0</code></a>
🔖 zb,zm: Release 5.13.2</li>
<li><a
href="fead96310e"><code>fead963</code></a>
🤖 release-plz: Custom regex for minor version bump</li>
<li><a
href="fa2794d19c"><code>fa2794d</code></a>
Merge pull request <a
href="https://redirect.github.com/z-galaxy/zbus/issues/1687">#1687</a>
from fmartinsons-una/fm/fix-1686</li>
<li><a
href="3d4ed5711f"><code>3d4ed57</code></a>
🐛 zb: fix regression on windows build</li>
<li><a
href="f473c1dd77"><code>f473c1d</code></a>
Merge pull request <a
href="https://redirect.github.com/z-galaxy/zbus/issues/1685">#1685</a>
from zeenix/zv-revert-hashmap-breakage</li>
<li><a
href="d28c24d752"><code>d28c24d</code></a>
🔖 zvariant 5.9.2</li>
<li><a
href="60bba3d8a5"><code>60bba3d</code></a>
⏪️ Revert "🐛 zv: Don't impl Type for dicts with non-basic
keys"</li>
<li><a
href="78ab879ed8"><code>78ab879</code></a>
Merge pull request <a
href="https://redirect.github.com/z-galaxy/zbus/issues/1635">#1635</a>
from cachebag/peer-any-path</li>
<li><a
href="b139742846"><code>b139742</code></a>
🐛 zb: Correct Peer interface to work on any arbitrary object path</li>
<li>Additional commits viewable in <a
href="https://github.com/z-galaxy/zbus/compare/zbus_macros-5.13.1...zbus_macros-5.13.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>
Various methods, structs and fields were unnecessarily public. Make them
private.
Testing: Not needed, no behavior change.
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
The UI Events specification has a table of UIEvents which describes the
properties that they must have. Importantly, this includes whether the
event should bubble, be cancelable, and be composed. The code was not
following this specification, so this changes centralizes where they are
set.
In addition, it makes the code that finds the event target consistent
with whether or not it is `ShadowIncluding`.
Finally the `MouseEvent` constructors are renamed so that it is clear
what they are used for.
Testing: This change causes one WPT test to start passing.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Add an event listener for `pause` to `debugger.js` and the necessary
glue to access it from the `devtools` crate. This returns important
information to know where we are paused, such as the source location and
frame state.
Fix frame and object actor encoding into messages. Use information from
`debugger.js` to correctly fill the fields.
Add a new `frames` list to the thread actor and handle the `frames`
message.
Fix `getEnvironment` reply in the frame actor. It is out of form (has a
`type` field but it doesn't require a followup empty message, it already
counts as a reply), so we need to handle it specially.
Note: For now we are focusing on the protocol side of the debugger, and
this patch only shows where the pause would happen. Pausing Servo itself
will happen in a followup.

Testing: `mach test-devtools` and manual testing. No errors (apart from
#42006).
Part of: #36027
---------
Signed-off-by: eri <eri@igalia.com>
Co-authored-by: atbrakhi <atbrakhi@igalia.com>
Co-authored-by: Josh Matthews <josh@joshmatthews.net>
This value is supposed to represent a UTF-8 code point offset or
length. It should never be negative and we often need to convert it to a
`usize`, so we can store it as a `usize`.
Testing: This should not change behavior so existing tests should
suffice.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Make the `start` and `end` parameters in
`getBreakpointPositionsCompressed` optional.
Send a resource array even if it is empty.
Testing: Ran `mach test-devtools`.
---------
Signed-off-by: eri <eri@igalia.com>
In text inputs, the edit point can be equal to a non-`None` selection
origin for a variety of reasons such as when the selection is set by a
DOM API or when a composition event inserts a zero length string. In
both of these cases, we should treat the selection as collapsed. It is
important to do this because for the purposes of arrow key movement and
context menu entries, we should think of the text input as not having a
selection at all.
Testing: This change adds a Servo-specific WPT test, as key press
behavior is
platform specific.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Previously it was only possible to set width and height of SVG elements
in pixels. These changes allow parsing other units like em using a CSS
parser in SVGSVGElement and resolving them to computed values in the
layout code.
Testing: Tested manually
Fixes: -
---------
Signed-off-by: Rodion Borovyk <rodion.borovyk@gmail.com>
Some of its logic can just be replaced with a call to the method
`unbreakable_segment_fits_on_line()`.
Testing: Not needed, no behavior change
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
When building without the `testbinding` feature of `libservo`, we end up
with these compilation warnings (and one error):
```
warning: unused import: `native_from_handlevalue`
--> components/script_bindings/import.rs:108:9
|
108 | native_from_handlevalue, native_from_object_static,
| ^^^^^^^^^^^^^^^^^^^^^^^
|
= note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
warning: unused imports: `DomSlice` and `Dom`
--> components/script_bindings/import.rs:131:34
|
131 | pub(crate) use crate::root::{Dom, DomSlice, MaybeUnreflectedDom, Root};
| ^^^ ^^^^^^^^
warning: unused import: `crate::root::DomRoot`
--> /home/webbeef/servo/target/debug/build/script_bindings-9c5650a8d750af8f/out/DomTypes.rs:3:5
|
3 | use crate::root::DomRoot;
| ^^^^^^^^^^^^^^^^^^^^
warning: unused import: `Maplike`
--> components/script_bindings/import.rs:124:34
|
124 | pub(crate) use crate::like::{Maplike, Setlike};
| ^^^^^^^
warning: `script_bindings` (lib) generated 4 warnings (run `cargo fix --lib -p script_bindings` to apply 3 suggestions)
error[E0412]: cannot find type `IdentityHub` in this scope
--> components/script/dom/debuggerglobalscope.rs:76:63
|
76 | #[cfg(feature = "webgpu")] gpu_id_hub: std::sync::Arc<IdentityHub>,
| ^^^^^^^^^^^ not found in this scope
|
help: consider importing this struct
|
5 + use crate::dom::identityhub::IdentityHub;
|
warning: method `worklet_id` is never used
--> components/script/dom/worklet.rs:121:19
|
95 | impl Worklet {
| ------------ method in this implementation
...
121 | pub(crate) fn worklet_id(&self) -> WorkletId {
| ^^^^^^^^^^
|
= note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
```
Testing: No test needed, this won't change the default builds.
Signed-off-by: webbeef <me@webbeef.org>
Bumps [rustls-webpki](https://github.com/rustls/webpki) from 0.103.8 to
0.103.9.
<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.9</h2>
<h2>What's Changed</h2>
<ul>
<li>[backport] ci: avoid denying warnings on nightly toolchains by <a
href="https://github.com/alex"><code>@alex</code></a> in <a
href="https://redirect.github.com/rustls/webpki/pull/437">rustls/webpki#437</a></li>
<li>Backport lifetime change and bump version for release by <a
href="https://github.com/alex"><code>@alex</code></a> in <a
href="https://redirect.github.com/rustls/webpki/pull/436">rustls/webpki#436</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="6bc9931d3b"><code>6bc9931</code></a>
Bump version to 0.103.9</li>
<li><a
href="92dbfc6ee8"><code>92dbfc6</code></a>
Tie lifetime of valid_dns_names/valid_uri_names to struct lifetime</li>
<li><a
href="2c46166a59"><code>2c46166</code></a>
ci: sync cargo-check-external-types nightly</li>
<li><a
href="c423a9e27e"><code>c423a9e</code></a>
ci: avoid denying warnings on nightly toolchains</li>
<li>See full diff in <a
href="https://github.com/rustls/webpki/compare/v/0.103.8...v/0.103.9">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot 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 [cc](https://github.com/rust-lang/cc-rs) from 1.2.52 to 1.2.53.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/rust-lang/cc-rs/releases">cc's
releases</a>.</em></p>
<blockquote>
<h2>cc-v1.2.53</h2>
<h3>Other</h3>
<ul>
<li>Add missing RISC-V targets (<a
href="https://redirect.github.com/rust-lang/cc-rs/pull/1657">#1657</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md">cc's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/rust-lang/cc-rs/compare/cc-v1.2.52...cc-v1.2.53">1.2.53</a>
- 2026-01-16</h2>
<h3>Other</h3>
<ul>
<li>Add missing RISC-V targets (<a
href="https://redirect.github.com/rust-lang/cc-rs/pull/1657">#1657</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="5be292b6bb"><code>5be292b</code></a>
chore: release (<a
href="https://redirect.github.com/rust-lang/cc-rs/issues/1658">#1658</a>)</li>
<li><a
href="66ceffe188"><code>66ceffe</code></a>
Add missing RISC-V targets (<a
href="https://redirect.github.com/rust-lang/cc-rs/issues/1657">#1657</a>)</li>
<li><a
href="8124fc5e30"><code>8124fc5</code></a>
Regenerate windows sys bindings (<a
href="https://redirect.github.com/rust-lang/cc-rs/issues/1653">#1653</a>)</li>
<li><a
href="06b516a7c5"><code>06b516a</code></a>
Update windows-bindgen requirement from 0.65 to 0.66 (<a
href="https://redirect.github.com/rust-lang/cc-rs/issues/1652">#1652</a>)</li>
<li>See full diff in <a
href="https://github.com/rust-lang/cc-rs/compare/cc-v1.2.52...cc-v1.2.53">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot 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 [filetime](https://github.com/alexcrichton/filetime) from 0.2.26
to 0.2.27.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="cca080e562"><code>cca080e</code></a>
Bump to 0.2.27</li>
<li><a
href="39f812defe"><code>39f812d</code></a>
Remove windows-sys dependency (<a
href="https://redirect.github.com/alexcrichton/filetime/issues/115">#115</a>)</li>
<li>See full diff in <a
href="https://github.com/alexcrichton/filetime/compare/0.2.26...0.2.27">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot 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 [find-msvc-tools](https://github.com/rust-lang/cc-rs) from 0.1.7
to 0.1.8.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/rust-lang/cc-rs/releases">find-msvc-tools's
releases</a>.</em></p>
<blockquote>
<h2>find-msvc-tools-v0.1.8</h2>
<h3>Other</h3>
<ul>
<li>Regenerate windows sys bindings (<a
href="https://redirect.github.com/rust-lang/cc-rs/pull/1653">#1653</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="5be292b6bb"><code>5be292b</code></a>
chore: release (<a
href="https://redirect.github.com/rust-lang/cc-rs/issues/1658">#1658</a>)</li>
<li><a
href="66ceffe188"><code>66ceffe</code></a>
Add missing RISC-V targets (<a
href="https://redirect.github.com/rust-lang/cc-rs/issues/1657">#1657</a>)</li>
<li><a
href="8124fc5e30"><code>8124fc5</code></a>
Regenerate windows sys bindings (<a
href="https://redirect.github.com/rust-lang/cc-rs/issues/1653">#1653</a>)</li>
<li><a
href="06b516a7c5"><code>06b516a</code></a>
Update windows-bindgen requirement from 0.65 to 0.66 (<a
href="https://redirect.github.com/rust-lang/cc-rs/issues/1652">#1652</a>)</li>
<li>See full diff in <a
href="https://github.com/rust-lang/cc-rs/compare/find-msvc-tools-v0.1.7...find-msvc-tools-v0.1.8">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot 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 [zmij](https://github.com/dtolnay/zmij) from 1.0.14 to 1.0.15.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="dcee9d8a3c"><code>dcee9d8</code></a>
Release 1.0.15</li>
<li><a
href="a30e356d91"><code>a30e356</code></a>
Switch to 9975WX benchmark data</li>
<li><a
href="552cade62e"><code>552cade</code></a>
Sync to vitaut/zmij@902041f</li>
<li><a
href="b79073030d"><code>b790730</code></a>
Sync to vitaut/zmij@97c1cbd</li>
<li><a
href="eec6c7ff2c"><code>eec6c7f</code></a>
Sync to vitaut/zmij@93b4a03</li>
<li><a
href="65759fa661"><code>65759fa</code></a>
Sync to vitaut/zmij@9a28245</li>
<li><a
href="cacaaac8fd"><code>cacaaac</code></a>
Sync to vitaut/zmij@2bf93b1</li>
<li><a
href="2fb3e09033"><code>2fb3e09</code></a>
Sync to vitaut/zmij@4c788ff</li>
<li><a
href="d7b1e4aefe"><code>d7b1e4a</code></a>
Fix SSE2 field names</li>
<li><a
href="f57a303c96"><code>f57a303</code></a>
Add polyfill for core::hint::select_unpredictable</li>
<li>Additional commits viewable in <a
href="https://github.com/dtolnay/zmij/compare/1.0.14...1.0.15">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot 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 the zbus-related group with 2 updates:
[zvariant](https://github.com/z-galaxy/zbus) and
[zvariant_derive](https://github.com/z-galaxy/zbus).
Updates `zvariant` from 5.9.1 to 5.9.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/z-galaxy/zbus/releases">zvariant's
releases</a>.</em></p>
<blockquote>
<h2>zvariant-5.9.2</h2>
<h3>Other</h3>
<ul>
<li>⏪️ Revert "🐛 zv: Don't impl Type for dicts with non-basic
keys".</li>
</ul>
<h2>zvariant_derive-5.9.2</h2>
<h3>Fixed</h3>
<ul>
<li>🐛 Fix hard-coded zvariant path in signature generation.</li>
</ul>
<h3>Other</h3>
<ul>
<li>🤖 release-plz: Fix formatting of CHANGELOG files.</li>
<li>🤖 release-plz: Use the default header in changelog.</li>
</ul>
<h3>Testing</h3>
<ul>
<li>✅ Add tests for <code>signature_to_tokens_with_crate</code>.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="f473c1dd77"><code>f473c1d</code></a>
Merge pull request <a
href="https://redirect.github.com/z-galaxy/zbus/issues/1685">#1685</a>
from zeenix/zv-revert-hashmap-breakage</li>
<li><a
href="d28c24d752"><code>d28c24d</code></a>
🔖 zvariant 5.9.2</li>
<li><a
href="60bba3d8a5"><code>60bba3d</code></a>
⏪️ Revert "🐛 zv: Don't impl Type for dicts with non-basic
keys"</li>
<li><a
href="78ab879ed8"><code>78ab879</code></a>
Merge pull request <a
href="https://redirect.github.com/z-galaxy/zbus/issues/1635">#1635</a>
from cachebag/peer-any-path</li>
<li><a
href="b139742846"><code>b139742</code></a>
🐛 zb: Correct Peer interface to work on any arbitrary object path</li>
<li><a
href="617ff164fe"><code>617ff16</code></a>
⬆️ micro: Update chrono to v0.4.43 (<a
href="https://redirect.github.com/z-galaxy/zbus/issues/1683">#1683</a>)</li>
<li><a
href="ba84dff079"><code>ba84dff</code></a>
Merge pull request <a
href="https://redirect.github.com/z-galaxy/zbus/issues/1680">#1680</a>
from zeenix/fix-releaes-plz-deps</li>
<li><a
href="ee45b0264f"><code>ee45b02</code></a>
🤖 release-plz: List dropped deps under <code>Dependencies</code></li>
<li><a
href="6490834e8a"><code>6490834</code></a>
Merge pull request <a
href="https://redirect.github.com/z-galaxy/zbus/issues/1679">#1679</a>
from zeenix/better-pr-naming</li>
<li><a
href="ebf8ca8e20"><code>ebf8ca8</code></a>
🤖 release-plz: Better PR naming</li>
<li>Additional commits viewable in <a
href="https://github.com/z-galaxy/zbus/compare/zvariant-5.9.1...zvariant-5.9.2">compare
view</a></li>
</ul>
</details>
<br />
Updates `zvariant_derive` from 5.9.1 to 5.9.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/z-galaxy/zbus/releases">zvariant_derive's
releases</a>.</em></p>
<blockquote>
<h2>zvariant_derive-5.9.2</h2>
<h3>Fixed</h3>
<ul>
<li>🐛 Fix hard-coded zvariant path in signature generation.</li>
</ul>
<h3>Other</h3>
<ul>
<li>🤖 release-plz: Fix formatting of CHANGELOG files.</li>
<li>🤖 release-plz: Use the default header in changelog.</li>
</ul>
<h3>Testing</h3>
<ul>
<li>✅ Add tests for <code>signature_to_tokens_with_crate</code>.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="f473c1dd77"><code>f473c1d</code></a>
Merge pull request <a
href="https://redirect.github.com/z-galaxy/zbus/issues/1685">#1685</a>
from zeenix/zv-revert-hashmap-breakage</li>
<li><a
href="d28c24d752"><code>d28c24d</code></a>
🔖 zvariant 5.9.2</li>
<li><a
href="60bba3d8a5"><code>60bba3d</code></a>
⏪️ Revert "🐛 zv: Don't impl Type for dicts with non-basic
keys"</li>
<li><a
href="78ab879ed8"><code>78ab879</code></a>
Merge pull request <a
href="https://redirect.github.com/z-galaxy/zbus/issues/1635">#1635</a>
from cachebag/peer-any-path</li>
<li><a
href="b139742846"><code>b139742</code></a>
🐛 zb: Correct Peer interface to work on any arbitrary object path</li>
<li><a
href="617ff164fe"><code>617ff16</code></a>
⬆️ micro: Update chrono to v0.4.43 (<a
href="https://redirect.github.com/z-galaxy/zbus/issues/1683">#1683</a>)</li>
<li><a
href="ba84dff079"><code>ba84dff</code></a>
Merge pull request <a
href="https://redirect.github.com/z-galaxy/zbus/issues/1680">#1680</a>
from zeenix/fix-releaes-plz-deps</li>
<li><a
href="ee45b0264f"><code>ee45b02</code></a>
🤖 release-plz: List dropped deps under <code>Dependencies</code></li>
<li><a
href="6490834e8a"><code>6490834</code></a>
Merge pull request <a
href="https://redirect.github.com/z-galaxy/zbus/issues/1679">#1679</a>
from zeenix/better-pr-naming</li>
<li><a
href="ebf8ca8e20"><code>ebf8ca8</code></a>
🤖 release-plz: Better PR naming</li>
<li>Additional commits viewable in <a
href="https://github.com/z-galaxy/zbus/compare/zvariant_derive-5.9.1...zvariant_derive-5.9.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>
These were missing. It also lists why some of these steps are actually
present in the `StylesheetLoader` instead.
Testing: WPT
Part of #22715
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
Moves the drop logic for `GPUBindGroupLayout` to an inner struct
`DroppableGPUBindGroupLayout`.
Testing: No tests added
Fixes: Partially #26488
Signed-off-by: Domenico Rizzo <domenico.rizzo@gmail.com>
`fragment` is already borrowed here as `self`. `fragment` is just passed
in order to access the `Fragment` that contains the `self` inside an
`ArcRefCell`. This change removes the unecessary borrow and accesses the
`BoxFragment` directly.
Testing: This is a small optimization, so should be covered by existing
tests.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
When the network decoder's `finish()` returns decoded content in
`parse_sync`, it was being added to the parsing input but not captured
for devtools. This ensures the content is also captured for the devtools
Sources panel.
Testing: We have tests for this in devtools_tests.py. They were failing
before this change. I ran locally and it passed now. With this all
DevTools tests are passing!
Signed-off-by: atbrakhi <atbrakhi@igalia.com>
Add all the missing error messages for `hkdf_operation.rs` and
`cshake_operation.rs` (one message only). Tried to follow the style of
existing messages and used an existing message for the HKDF-expand
operation. Related to #40756.
Testing: No tests added.
Signed-off-by: César Pedraza <cpedraza@unal.edu.co>
This change makes it so that tranforms (including CSS transform and
scrolling) are properly accounted for when calculating glyph indices.
Containing block sizes are moved to `BaseFragment`. This should reduce
the size of the StackingContextTree a little.
Testing: A Servo-specific WPT-style test is added for this change.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Oriol Brufau <obrufau@igalia.com>
These changes introduce a new OriginSnapshot type, which is an immutable
version of MutableOrigin (ie. an origin that includes an optional domain
modifier). This is now propagated as part of LoadData's origin, allowing
us to perform the same-origin-domain check for javascript: URLs as
needed.
Testing: Newly-passing tests.
Signed-off-by: Josh Matthews <josh@joshmatthews.net>
Some platforms send empty composition events (winit on Linux, for
example). These should be ignored appropriately as they can cause
unecessary rendering updates even when the content of the text area does
not change.
Testing: This is mainly an optimization, so no tests are added. It does
prevent
some misbehavior, but that is a secondary effect fixed by #41978.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Moves the drop implementation for `GPUBindGroup` to a separate
`DroppableGPUBindGroup` struct.
Testing: No tests added
Fixes: partially #26488
Signed-off-by: Domenico Rizzo <domenico.rizzo@gmail.com>
This constructors takes more arguments than it needs to. The three
arguments removed are almost always the default values. The exception is
in the unit tests. In this change those calls are modified to use
`set_max_length` like is done in the actual script code.
Testing: This is just a simplification of the code, so should be covered
by existing tests.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
We should not move the text cursor or change the text selection when
non-primary (such as the right) mouse buttons are pressed. Doing so
interferes with the common operations:
1. Select text
2. Open context menu
3. Copy text
This change fixes that.
Testing: New WPT-style tests are added.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
This change brings Servo closer to the specification by removing the
unspecified sanitization flags used during parsing of input elements.
Instead we implement the lines of the specification that say to reset
resettable elements after parsing them. This forces a re-sanitization of
the default value (from the `value` attribute), clearing up the
confusion in parser comments.
In addition, specification text is added in the element creation code.
Testing: This just brings our code closer to the specification, so it is
covered by existing tests.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Updates the implementation of HTMLIFrameElement::GetContentDocument to
match the latest specification text.
Testing: Since each script thread only contains documents that are
same-origin-domain, I don't think it's possible to construct a testcase
with an observable difference here.
Signed-off-by: Josh Matthews <josh@joshmatthews.net>
Retrieving the origin from the document's URL means the wrong origin can
be returned for documents like about:blank or about:srcdoc.
Testing: Newly-passing test involving a srcdoc and blob.
---------
Signed-off-by: Josh Matthews <josh@joshmatthews.net>
Adding error messages across
`script/dom/subtlecrypto/ecdh_operation.rs`.
Testing: No tests as this is just adding error messages
Fixes: (part of) #40756
---------
Signed-off-by: PaulTreitel <paul.treitel@gmail.com>
The `border-radius` values refer to the border box. For the purpose of
`overflow-clip`, we were just adjusting by the `overflow-clip-margin`
offset, without considering that this offset may not refer to the border
box (in fact, it defaults to the padding box).
To fix it, we need to subtract the border when the offset refers to the
padding box, and subtract the border and padding when it refers to the
content box.
This implies that each axis can end up with a different offset, so this
modifies `offset_radii()` accordingly. And then, `inner_radii()` is no
longer needed.
Testing: Adding new test
Fixes: #41907
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
This change adds support for updating the selection when double and
triple clicking in text fields. Double clicking selects the most
relevant word while triple clicking selects the entire line.
Testing: This change adds unit tests for `Rope` as well as a
Servo-specific WPT style test. These behaviors are platform
dependent.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
When a flex container has text children, those children are wrapped in
an anonymous box and used as flex items. These anonymous boxes must be
stored into `BoxSlot`s so that their style is repairable during
incremental layout.
Testing: This change includes a new WPT test.
Fixes: #41947.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
This change moves all single versus multiline input handling to script.
It didn't really belong in `Rope`. In addition, it ensures that all
insertions into single line text boxes are sanitized by replacing
linebreaks with spaces.
Testing: As pasting is hard to test with a WPT-style test, this changes
includes new unit tests.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
This transform the filemanager code to simple async code. With the
removal of the thread pool in https://github.com/servo/servo/pull/41740
the we used std::thread::spawn for the two usages of the thread pool.
This changes these to use the already existing async runtime and spawns
the tasks on this.
This is a very simple change and does not use all the functionality we
have from the runtime but hopefully have enough points to yield back to
the runtime.
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
Testing: Browsing files locally seems to work on WPT tests are here:
https://github.com/Narfinger/servo/actions/runs/20956841091
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
Listen for `setBreakpoint` on `debugger.js` and add the relevant WebIDLs
and Servo counterparts to trigger this event and notify SpiderMonkey.
Implement `find_source` for `SourceManager` and `find_offset` for
`SourceActor`.
Testing: Manual testing and `./mach test-devtools` (note, the latter
seems to have some failing tests, we are investigating this, but this
patch doesn't add any new failure).
Fixes: Part of #36027
---------
Signed-off-by: eri <eri@igalia.com>
Co-authored-by: atbrakhi <atbrakhi@igalia.com>
All commits in our fork have landed upstream and they have published
0.6.0 containing those fixes. Therefore, this update should be a noop.
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
Part of the navigate algorithm, it now performs the
fragment navigation after the history_behavior is
determined. It also updates the scrolling algorithm
to reflect what the specification expects.
With these changes, the test from the issue now
correctly scrolls to `Target`, but it doesn't update
the `scrollY` value for `window` and hence still
fails the test.
Part of #41807
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
We previously introduced new infrastructure for sharing code in
`aes_common.rs` among AES algorithms.
This patch makes AES-KW algorithm adapt the new infrastructure, by
moving the relevant code away from `aes_operation.rs` to its own
`aes_kw_operation.rs`, and calling AES common steps in the new
`aes_common.rs`.
Since all AES algorithms have been moved away from `aes_operation.rs`,
the file `aes_operation.rs` is also removed. The key handle variants
`Handle::Aes128`, `Handle::Aes192` and `Handle::Aes256` used by the old
AES infrastructure is also removed.
Testing: Refactoring. Existing tests suffice.
Fixes: Part of #41763
Signed-off-by: Kingsley Yung <kingsley@kkoyung.dev>
We currently only support 128-bit tags for AES-GCM authenticated
decryption. This patch expands support to 96-bit, 104-bit, 112-bit, and
120-bit tags.
The specification recommends supporting 32-bit and 64-bit tags as well.
However, the `aes-gcm` crate currently does not support them. We may
need to look for a workaround or wait for updates from the upstream
project.
Testing: Pass some WPT tests that were expected to fail.
Signed-off-by: Kingsley Yung <kingsley@kkoyung.dev>
Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.5.0 to 2.6.3.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/urllib3/urllib3/releases">urllib3's
releases</a>.</em></p>
<blockquote>
<h2>2.6.3</h2>
<h2>🚀 urllib3 is fundraising for HTTP/2 support</h2>
<p><a
href="https://sethmlarson.dev/urllib3-is-fundraising-for-http2-support">urllib3
is raising ~$40,000 USD</a> to release HTTP/2 support and ensure
long-term sustainable maintenance of the project after a sharp decline
in financial support. If your company or organization uses Python and
would benefit from HTTP/2 support in Requests, pip, cloud SDKs, and
thousands of other projects <a
href="https://opencollective.com/urllib3">please consider contributing
financially</a> to ensure HTTP/2 support is developed sustainably and
maintained for the long-haul.</p>
<p>Thank you for your support.</p>
<h2>Changes</h2>
<ul>
<li>Fixed a security issue where decompression-bomb safeguards of the
streaming API were bypassed when HTTP redirects were followed.
(CVE-2026-21441 reported by <a
href="https://github.com/D47A"><code>@D47A</code></a>, 8.9 High,
GHSA-38jv-5279-wg99)</li>
<li>Started treating <code>Retry-After</code> times greater than 6 hours
as 6 hours by default. (<a
href="https://redirect.github.com/urllib3/urllib3/issues/3743">urllib3/urllib3#3743</a>)</li>
<li>Fixed <code>urllib3.connection.VerifiedHTTPSConnection</code> on
Emscripten. (<a
href="https://redirect.github.com/urllib3/urllib3/issues/3752">urllib3/urllib3#3752</a>)</li>
</ul>
<h2>2.6.2</h2>
<h2>🚀 urllib3 is fundraising for HTTP/2 support</h2>
<p><a
href="https://sethmlarson.dev/urllib3-is-fundraising-for-http2-support">urllib3
is raising ~$40,000 USD</a> to release HTTP/2 support and ensure
long-term sustainable maintenance of the project after a sharp decline
in financial support. If your company or organization uses Python and
would benefit from HTTP/2 support in Requests, pip, cloud SDKs, and
thousands of other projects <a
href="https://opencollective.com/urllib3">please consider contributing
financially</a> to ensure HTTP/2 support is developed sustainably and
maintained for the long-haul.</p>
<p>Thank you for your support.</p>
<h2>Changes</h2>
<ul>
<li>Fixed <code>HTTPResponse.read_chunked()</code> to properly handle
leftover data in the decoder's buffer when reading compressed chunked
responses. (<a
href="https://redirect.github.com/urllib3/urllib3/issues/3734">urllib3/urllib3#3734</a>)</li>
</ul>
<h2>2.6.1</h2>
<h2>🚀 urllib3 is fundraising for HTTP/2 support</h2>
<p><a
href="https://sethmlarson.dev/urllib3-is-fundraising-for-http2-support">urllib3
is raising ~$40,000 USD</a> to release HTTP/2 support and ensure
long-term sustainable maintenance of the project after a sharp decline
in financial support. If your company or organization uses Python and
would benefit from HTTP/2 support in Requests, pip, cloud SDKs, and
thousands of other projects <a
href="https://opencollective.com/urllib3">please consider contributing
financially</a> to ensure HTTP/2 support is developed sustainably and
maintained for the long-haul.</p>
<p>Thank you for your support.</p>
<h2>Changes</h2>
<ul>
<li>Restore previously removed <code>HTTPResponse.getheaders()</code>
and <code>HTTPResponse.getheader()</code> methods. (<a
href="https://redirect.github.com/urllib3/urllib3/issues/3731">#3731</a>)</li>
</ul>
<h2>2.6.0</h2>
<h2>🚀 urllib3 is fundraising for HTTP/2 support</h2>
<p><a
href="https://sethmlarson.dev/urllib3-is-fundraising-for-http2-support">urllib3
is raising ~$40,000 USD</a> to release HTTP/2 support and ensure
long-term sustainable maintenance of the project after a sharp decline
in financial support. If your company or organization uses Python and
would benefit from HTTP/2 support in Requests, pip, cloud SDKs, and
thousands of other projects <a
href="https://opencollective.com/urllib3">please consider contributing
financially</a> to ensure HTTP/2 support is developed sustainably and
maintained for the long-haul.</p>
<p>Thank you for your support.</p>
<h2>Security</h2>
<ul>
<li>Fixed a security issue where streaming API could improperly handle
highly compressed HTTP content ("decompression bombs") leading
to excessive resource consumption even when a small amount of data was
requested. Reading small chunks of compressed data is safer and much
more efficient now. (CVE-2025-66471 reported by <a
href="https://github.com/Cycloctane"><code>@Cycloctane</code></a>, 8.9
High, GHSA-2xpw-w6gg-jr37)</li>
<li>Fixed a security issue where an attacker could compose an HTTP
response with virtually unlimited links in the
<code>Content-Encoding</code> header, potentially leading to a denial of
service (DoS) attack by exhausting system resources during decoding. The
number of allowed chained encodings is now limited to 5. (CVE-2025-66418
reported by <a
href="https://github.com/illia-v"><code>@illia-v</code></a>, 8.9 High,
GHSA-gm62-xv2j-4w53)</li>
</ul>
<blockquote>
<p>[!IMPORTANT]</p>
<ul>
<li>If urllib3 is not installed with the optional
<code>urllib3[brotli]</code> extra, but your environment contains a
Brotli/brotlicffi/brotlipy package anyway, make sure to upgrade it to at
least Brotli 1.2.0 or brotlicffi 1.2.0.0 to benefit from the security
fixes and avoid warnings. Prefer using <code>urllib3[brotli]</code> to
install a compatible Brotli package automatically.</li>
</ul>
</blockquote>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/urllib3/urllib3/blob/main/CHANGES.rst">urllib3's
changelog</a>.</em></p>
<blockquote>
<h1>2.6.3 (2026-01-07)</h1>
<ul>
<li>Fixed a high-severity security issue where decompression-bomb
safeguards of
the streaming API were bypassed when HTTP redirects were followed.
(<code>GHSA-38jv-5279-wg99
<https://github.com/urllib3/urllib3/security/advisories/GHSA-38jv-5279-wg99></code>__)</li>
<li>Started treating <code>Retry-After</code> times greater than 6 hours
as 6 hours by
default. (<code>[#3743](https://github.com/urllib3/urllib3/issues/3743)
<https://github.com/urllib3/urllib3/issues/3743></code>__)</li>
<li>Fixed <code>urllib3.connection.VerifiedHTTPSConnection</code> on
Emscripten.
(<code>[#3752](https://github.com/urllib3/urllib3/issues/3752)
<https://github.com/urllib3/urllib3/issues/3752></code>__)</li>
</ul>
<h1>2.6.2 (2025-12-11)</h1>
<ul>
<li>Fixed <code>HTTPResponse.read_chunked()</code> to properly handle
leftover data in
the decoder's buffer when reading compressed chunked responses.
(<code>[#3734](https://github.com/urllib3/urllib3/issues/3734)
<https://github.com/urllib3/urllib3/issues/3734></code>__)</li>
</ul>
<h1>2.6.1 (2025-12-08)</h1>
<ul>
<li>Restore previously removed <code>HTTPResponse.getheaders()</code>
and
<code>HTTPResponse.getheader()</code> methods.
(<code>[#3731](https://github.com/urllib3/urllib3/issues/3731)
<https://github.com/urllib3/urllib3/issues/3731></code>__)</li>
</ul>
<h1>2.6.0 (2025-12-05)</h1>
<h2>Security</h2>
<ul>
<li>Fixed a security issue where streaming API could improperly handle
highly
compressed HTTP content ("decompression bombs") leading to
excessive resource
consumption even when a small amount of data was requested. Reading
small
chunks of compressed data is safer and much more efficient now.
(<code>GHSA-2xpw-w6gg-jr37
<https://github.com/urllib3/urllib3/security/advisories/GHSA-2xpw-w6gg-jr37></code>__)</li>
<li>Fixed a security issue where an attacker could compose an HTTP
response with
virtually unlimited links in the <code>Content-Encoding</code> header,
potentially
leading to a denial of service (DoS) attack by exhausting system
resources
during decoding. The number of allowed chained encodings is now limited
to 5.
(<code>GHSA-gm62-xv2j-4w53
<https://github.com/urllib3/urllib3/security/advisories/GHSA-gm62-xv2j-4w53></code>__)</li>
</ul>
<p>.. caution::</p>
<ul>
<li>If urllib3 is not installed with the optional
<code>urllib3[brotli]</code> extra, but
your environment contains a Brotli/brotlicffi/brotlipy package anyway,
make
sure to upgrade it to at least Brotli 1.2.0 or brotlicffi 1.2.0.0 to
benefit from the security fixes and avoid warnings. Prefer using</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="0248277dd7"><code>0248277</code></a>
Release 2.6.3</li>
<li><a
href="8864ac407b"><code>8864ac4</code></a>
Merge commit from fork</li>
<li><a
href="70cecb27ca"><code>70cecb2</code></a>
Fix Scorecard issues related to vulnerable dev dependencies (<a
href="https://redirect.github.com/urllib3/urllib3/issues/3755">#3755</a>)</li>
<li><a
href="41f249abe1"><code>41f249a</code></a>
Move "v2.0 Migration Guide" to the end of the table of
contents (<a
href="https://redirect.github.com/urllib3/urllib3/issues/3747">#3747</a>)</li>
<li><a
href="fd4dffd2fc"><code>fd4dffd</code></a>
Patch <code>VerifiedHTTPSConnection</code> for Emscripten (<a
href="https://redirect.github.com/urllib3/urllib3/issues/3752">#3752</a>)</li>
<li><a
href="13f0bfd55e"><code>13f0bfd</code></a>
Handle massive values in Retry-After when calculating time to sleep for
(<a
href="https://redirect.github.com/urllib3/urllib3/issues/3743">#3743</a>)</li>
<li><a
href="8c480bf87b"><code>8c480bf</code></a>
Bump actions/upload-artifact from 5.0.0 to 6.0.0 (<a
href="https://redirect.github.com/urllib3/urllib3/issues/3748">#3748</a>)</li>
<li><a
href="4b40616e95"><code>4b40616</code></a>
Bump actions/cache from 4.3.0 to 5.0.1 (<a
href="https://redirect.github.com/urllib3/urllib3/issues/3750">#3750</a>)</li>
<li><a
href="82b8479663"><code>82b8479</code></a>
Bump actions/download-artifact from 6.0.0 to 7.0.0 (<a
href="https://redirect.github.com/urllib3/urllib3/issues/3749">#3749</a>)</li>
<li><a
href="34284cb017"><code>34284cb</code></a>
Mention experimental features in the security policy (<a
href="https://redirect.github.com/urllib3/urllib3/issues/3746">#3746</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/urllib3/urllib3/compare/2.5.0...2.6.3">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot 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)
You can disable automated security fix PRs for this repo from the
[Security Alerts page](https://github.com/servo/servo/network/alerts).
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [rustc-demangle](https://github.com/rust-lang/rustc-demangle) from
0.1.26 to 0.1.27.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/rust-lang/rustc-demangle/releases">rustc-demangle's
releases</a>.</em></p>
<blockquote>
<h2>rustc-demangle-v0.1.27</h2>
<h3>Other</h3>
<ul>
<li>Support v0 demangling of trait object types with assoc const
bindings</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/rust-lang/rustc-demangle/blob/main/CHANGELOG.md">rustc-demangle's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/rust-lang/rustc-demangle/compare/rustc-demangle-v0.1.26...rustc-demangle-v0.1.27">0.1.27</a>
- 2026-01-15</h2>
<h3>Other</h3>
<ul>
<li>Support v0 demangling of trait object types with assoc const
bindings</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="f65a6d8f63"><code>f65a6d8</code></a>
chore(rustc-demangle): release v0.1.27</li>
<li><a
href="bce5e74d7c"><code>bce5e74</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/rustc-demangle/issues/87">#87</a>
from fmease/v0-dyn-trait-assoc-const-bindings</li>
<li><a
href="2631bdf638"><code>2631bdf</code></a>
Support v0 demangling of trait object types with assoc const
bindings</li>
<li>See full diff in <a
href="https://github.com/rust-lang/rustc-demangle/compare/rustc-demangle-v0.1.26...rustc-demangle-v0.1.27">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot 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 [bpaf](https://github.com/pacak/bpaf) from 0.9.20 to 0.9.21.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pacak/bpaf/blob/master/Changelog.md">bpaf's
changelog</a>.</em></p>
<blockquote>
<h2>bpaf [0.9.21], bpaf_derive [0.5.21] - 2026-01-15</h2>
<ul>
<li>Documentation fixes</li>
<li>minor derive macro improvements</li>
<li>MSRV is now 1.60</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="e47b375599"><code>e47b375</code></a>
Merge pull request <a
href="https://redirect.github.com/pacak/bpaf/issues/436">#436</a> from
pacak/rc-0.9.21</li>
<li><a
href="058e815f90"><code>058e815</code></a>
Release 0.9.21</li>
<li><a
href="53d1774de6"><code>53d1774</code></a>
Merge pull request <a
href="https://redirect.github.com/pacak/bpaf/issues/435">#435</a> from
unvalley/fix-quick-start-command</li>
<li><a
href="ab3a2431ae"><code>ab3a243</code></a>
chore: fix quick start cargo add command</li>
<li><a
href="5aef3d7def"><code>5aef3d7</code></a>
Merge pull request <a
href="https://redirect.github.com/pacak/bpaf/issues/433">#433</a> from
lu-zero/fix-warning</li>
<li><a
href="81ef625300"><code>81ef625</code></a>
Fix a remaining warning</li>
<li><a
href="26d34cfaaa"><code>26d34cf</code></a>
Merge pull request <a
href="https://redirect.github.com/pacak/bpaf/issues/432">#432</a> from
lu-zero/suppress-lint</li>
<li><a
href="b19d93183a"><code>b19d931</code></a>
Suppress enum_variant_names</li>
<li><a
href="3b0fba8ab6"><code>3b0fba8</code></a>
Merge pull request <a
href="https://redirect.github.com/pacak/bpaf/issues/431">#431</a> from
lu-zero/more-clippy-lints-addressed</li>
<li><a
href="f57a714f25"><code>f57a714</code></a>
Address more clippy lints</li>
<li>Additional commits viewable in <a
href="https://github.com/pacak/bpaf/compare/v0.9.20...v0.9.21">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot 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>
Fix caching before the console is opened and stop sending messages
prematurely.
Fix line numbers not showing in console messages because of a missing
`rename_all`.
Remove `getCachedMessages` in favour of sending a list of messages as a
reply to the `watchResources` for `console-message`/`error-message` in
the watcher.
Remove `startListeners` and `stopListeners`. These are legacy methods of
watching properties before the watcher actor. It is preferred to enable
properties in `supported_resources` in the watcher than to use these
messages.
Remove `clearMessagesCache`, only `clearMessagesCacheAsync` seems to be
used now. Add a reply to `clearMessagesCacheAsync`.
Simplify a bit the structs for console messages and prefer serde's
annotations to manual serialization. Merge `handle_console_message` and
`handle_page_error`, and improve the usability of `ConsoleResource`.
Fix some fields in console messages. We are missing `source_id` for now.
This will be easier to add after better support for source actors. We
are also missing stack traces.
| Before | After |
| --- | --- |
| 
| 
|
Testing: Manual testing
Fixes: #26666
---------
Signed-off-by: eri <eri@igalia.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
This change is to make visibility uniformly crate wide across all of the
structs and their props within devtools.
Testing: Tested using `.\mach build -d` `.\mach fmt` `.\mach test-tidy`
all passed
Part of: #41893
---------
Signed-off-by: Seiran <bo646ru@gmail.com>
Make it so that clicking past the end of the text of a multiline input,
moves the edit point to the end of that line. Now we evaluate all
potential target `TextFragment`s and find the most appropriate one,
putting the edit point there.
Testing: This updates expected test results for the `<textarea>`
clicking tests.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Oriol Brufau <obrufau@igalia.com>
Moves the adapter dropping logic from the `GPUAdapter` struct to a new
`DroppableGPUAdapter` struct.
Testing: No tests added.
Fixes: Partially #26488
Signed-off-by: Domenico Rizzo <domenico.rizzo@gmail.com>
2026-01-15 07:13:52 +00:00
12732 changed files with 423595 additions and 197475 deletions
name:Build Docker image and push to GitHub Packages
# This workflow file is adapted from the example at https://docs.github.com/en/packages/managing-github-packages-using-github-actions-workflows/publishing-and-installing-a-package-with-github-actions#upgrading-a-workflow-that-accesses-a-registry-using-a-personal-access-token
on:
push:
branches:
- main
# Only rebuild if the Dockerfile or dependencies change.
paths:
- '.devcontainer/**'
- 'python/servo/platform/linux_packages/**'
workflow_dispatch:
jobs:
devcontainer_ubuntu:
runs-on:ubuntu-latest
# We probably don't want to spam the package registry of every developer
# thats working on servo and has actions enabled on their fork.
# You can comment this if to test changes to the workflow locally in your fork,
Given that Servo does not yet have customers or products, we are comfortable accepting the security related issues as [GitHub security reports](https://github.com/servo/servo/security/advisories/new) for now.
Please submit security related issues as [GitHub security reports](https://github.com/servo/servo/security/advisories/new).
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.