Commit Graph

53694 Commits

Author SHA1 Message Date
Ashwin Naren
b073b97500 serviceworker-next: Pass PipelineId as parameter to communicate which source is being used (#40893)
**Targets `serviceworker-next`**

I'm still working on how to convert this to a `WindowClient`.

Testing: WPT
Fixes: Partially #40781

Signed-off-by: Ashwin Naren <arihant2math@gmail.com>
2025-11-26 07:42:30 +01:00
Ashwin Naren
86b85ff62f serviceworker-next: Stub out window client (#40889)
**Doesn't target main**

`WindowClient` is used to represent a globalscope that represents a
window as a source in ExtendableMessageEvent. We don't actually need any
of the methods other than `postMessage` for WPT to pass/not timeout, so
I've commented/stubbed them out for now.

Testing: WPT
Fixes: Partially #40781

Signed-off-by: Ashwin Naren <arihant2math@gmail.com>
2025-11-25 22:35:43 +01:00
Ashwin Naren
3bd12302b9 serviceworker: Expose source to dispatch_jsval (#40888)
Very small; still need to get window client working first.

Testing: N/A (refactor)
Fixes: None

Signed-off-by: Ashwin Naren <arihant2math@gmail.com>
2025-11-25 20:45:12 +01:00
Ashwin Naren
260bcb805c serviceworker-next: Fix some message sending related behavior (#40780)
Fix the issue that was causing timeouts in serviceworker WPT tests.

Doesn't fully unblock WPT: `dispatch_jsval` needs to accept a `source`
parameter, and that `source` needs to be retrieved from `postMessage`.
It goes through several layers of indirection, so I've deferred that to
a different PR.

Testing: WPT
Fixes: #40767

---------

Signed-off-by: Ashwin Naren <arihant2math@gmail.com>
2025-11-21 19:06:18 +01:00
Ashwin Naren
9622d40857 script: Registration retrieval methods for service workers (#39194)
Implements `getRegistrations`, and `getRegistration`, mainly for the
sake of WPT tests.

Testing: WPT

---------

Signed-off-by: Ashwin Naren <arihant2math@gmail.com>
2025-11-20 08:27:26 +01:00
Sam
c27f8c565a Use safe JSContext/AutoRealm/CurrentRealm in codegen (#40716)
We replace many places that use `SafeJSContext` with `JSContext` and I
also rewrote `is_platform_object_same_origin` to use new `JSContext`.
Unfortunately using wrappers2 in them causes crashes (in handle code),
so I reverted that part in last commit and will fix handles in mozjs
later.

Testing: Refactor, but it is covered by WPT tests
Part of #40600

---------

Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
2025-11-19 05:55:55 +00:00
Taym Haddadi
66a50ad687 Fix RefCell already borrowed panic in HTMLMediaElement::set_audio_renderer (#40729)
Fix RefCell already borrowed panic in
HTMLMediaElement::set_audio_renderer

Testing: new crash test should pass.
Fixes: #40720

Signed-off-by: Taym Haddadi <haddadi.taym@gmail.com>
2025-11-19 00:34:15 +00:00
dependabot[bot]
eef35f0a73 build(deps): bump the servo-media-related group with 12 updates (#40728)
Bumps the servo-media-related group with 12 updates:

| Package | From | To |
| --- | --- | --- |
| [servo-media](https://github.com/servo/media) | ``1beaae4`` |
``7ba5e7d`` |
| [servo-media-dummy](https://github.com/servo/media) | ``1beaae4`` |
``7ba5e7d`` |
| [servo-media-gstreamer](https://github.com/servo/media) | ``1beaae4``
| ``7ba5e7d`` |
| servo-media-audio | ``1beaae4`` | ``7ba5e7d`` |
| servo-media-derive | ``1beaae4`` | ``7ba5e7d`` |
| servo-media-gstreamer-render | ``1beaae4`` | ``7ba5e7d`` |
| servo-media-gstreamer-render-android | ``1beaae4`` | ``7ba5e7d`` |
| servo-media-gstreamer-render-unix | ``1beaae4`` | ``7ba5e7d`` |
| servo-media-player | ``1beaae4`` | ``7ba5e7d`` |
| servo-media-streams | ``1beaae4`` | ``7ba5e7d`` |
| servo-media-traits | ``1beaae4`` | ``7ba5e7d`` |
| servo-media-webrtc | ``1beaae4`` | ``7ba5e7d`` |

Updates `servo-media` from `1beaae4` to `7ba5e7d`
<details>
<summary>Commits</summary>
<ul>
<li><a
href="7ba5e7d9b3"><code>7ba5e7d</code></a>
Return an empty slice on safe slice casting error (<a
href="https://redirect.github.com/servo/media/issues/462">#462</a>)</li>
<li>See full diff in <a
href="1beaae45bd...7ba5e7d9b3">compare
view</a></li>
</ul>
</details>
<br />

Updates `servo-media-dummy` from `1beaae4` to `7ba5e7d`
<details>
<summary>Commits</summary>
<ul>
<li><a
href="7ba5e7d9b3"><code>7ba5e7d</code></a>
Return an empty slice on safe slice casting error (<a
href="https://redirect.github.com/servo/media/issues/462">#462</a>)</li>
<li>See full diff in <a
href="1beaae45bd...7ba5e7d9b3">compare
view</a></li>
</ul>
</details>
<br />

Updates `servo-media-gstreamer` from `1beaae4` to `7ba5e7d`
<details>
<summary>Commits</summary>
<ul>
<li><a
href="7ba5e7d9b3"><code>7ba5e7d</code></a>
Return an empty slice on safe slice casting error (<a
href="https://redirect.github.com/servo/media/issues/462">#462</a>)</li>
<li>See full diff in <a
href="1beaae45bd...7ba5e7d9b3">compare
view</a></li>
</ul>
</details>
<br />

Updates `servo-media-audio` from `1beaae4` to `7ba5e7d`

Updates `servo-media-derive` from `1beaae4` to `7ba5e7d`

Updates `servo-media-gstreamer-render` from `1beaae4` to `7ba5e7d`

Updates `servo-media-gstreamer-render-android` from `1beaae4` to
`7ba5e7d`

Updates `servo-media-gstreamer-render-unix` from `1beaae4` to `7ba5e7d`

Updates `servo-media-player` from `1beaae4` to `7ba5e7d`

Updates `servo-media-streams` from `1beaae4` to `7ba5e7d`

Updates `servo-media-traits` from `1beaae4` to `7ba5e7d`

Updates `servo-media-webrtc` from `1beaae4` to `7ba5e7d`


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

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

---

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

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-19 00:18:11 +00:00
Simon Wülker
c5da05348e script: Don't allocate when retrieving attribute values for layout (#40724)
We end up only calling `.iter` on these `Vec`s anyways.

Testing: No behaviour change intended, regressions are covered by
existing tests

Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
2025-11-18 19:13:26 +00:00
Martin Robinson
b29d58f869 compositing: Rework WebRender external image handlers to be per-Painter (#40690)
Make external image handlers per-`Painter`, but make some of the shared
data that they use such as the `SwapChains` global to all `Painter`s.
This allows making the WebGL thread and the WebXR thread global to all
`Painter`s as well.

This is necessary to support multiple painters sharing the same WebGL
thread.

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

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Mukilan Thiyagarajan <mukilan@igalia.com>
2025-11-18 19:00:34 +00:00
Martin Robinson
f08c6ab38c compositing: Allow WebGL contexts to have different Surfman devices (#40721)
Currently, a single `surfman::Device` is used for all WebGL contexts.
This cannot work when we have multiple rendering contexts. So, extract
the surfman `Connection` and `Adapter` into a per-painter data structure
(`PainterSurfmanDetailsMap`) and store the `Device` directly in the
WebGL context.

This patch also modifies the WebXR traits so that the `Device` doesn't
need to be explictly passed into most methods.

*This is a reland of #40594* with the following changes:

- Do not remove WebGL contexts from the context map before cleaning up
the
    WebXR layers. The layer cleanup process consults the map.
  - When cleanup up layers, be sure to replace the WebXRBridge in the
    WebGLThread data structure.
  - Allow failing to the Device when processing WebXR commands. WebXR
    sometimes tries to access contexts after they have been removed.

Testing: Should be covered by existing tests.

---------

Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Mukilan Thiyagarajan <mukilan@igalia.com>
2025-11-18 16:45:24 +00:00
WaterWhisperer
645947bb6a Update expectation for media-elements/event_timeupdate_noautoplay.html to PASS by removing .ini (#40714)
Testing: None
Fixes: #25046

Signed-off-by: WaterWhisperer <waterwhisperer24@qq.com>
2025-11-18 15:39:52 +00:00
Martin Robinson
386de5fadf python: Remove notify-py from Python dependencies (#40717)
Support for sending build notifications was removed in #37818, but the
dependency in `requirements.txt` was not removed. This PR fixest that.

Testing: This change just removes an unsued build dependency, so no
testing is necessary.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
2025-11-18 14:54:25 +00:00
Martin Robinson
36005aab82 servoshell: Always use ControlFlow::Wait on winit (#40715)
Nowadays the renderer will always wake up the event loop when it needs
to paint
a new frame, so we can always use `ControlFlow::Wait`. This should be a
more efficient way to run animations.

Testing: This should not change behavior, but should make servoshell a
bit more
efficient.
Closes: #21855

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
2025-11-18 14:54:03 +00:00
Jonathan Schwender
403e3d49d0 Replace codecov/test-results-action (#40718)
https://github.com/codecov/test-results-action
The repository now carries a deprecation warning and warns about upload
issues (which we seem to be hitting).
Migrate to the codecov action as recommended.

Testing: CI change
Fixes: Should hopefully fix CI errors.

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2025-11-18 14:34:11 +00:00
Jonathan Schwender
2028dabd2f profiling: Add abstraction over tracing-rs (#40160)
There are multiple motivating factors for this change:

1. `tracing-rs` can and is commonly used for structured logging, to gain
understanding in what is happening in concurrent code. We would like to
attempt to make a distinction of the performance tracing related usage
and the logging related usage.
2. This reduces boilerplate code. We don't have to feature guard every
span anymore, since the macro will do it for us.
3. This makes it easier to add multiple options for the trace backend
(i.e. exchanging tracing-rs for hitrace on OpenHarmony or System Tracing
in Android), or something entirely custom.
4. This makes it easier to add further compile-time options to control
the amount of tracing. E.g. a future PR could add options to enable
tracing based on environment variables set at compile time. Tracing adds
runtime overhead, even if the runtime switch is disabled, so having more
fine-grained options to partially enabled tracing could be useful.

Testing: Tested manually by building with and without the `tracing`
feature. In CI we also build with the tracing feature in the HarmonyOS
build. We don't have any automated tests for the correctness / presence
of the traced entries.

---------

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2025-11-18 10:47:56 +00:00
Martin Robinson
1a2cf8cc4e libservo: Trigger a rendering update when waiting for paint readiness in WebView unit tests (#40712)
Some unit tests attempt to wait for the WebView to be paint ready before
executing. The previous code would wait for a frame ready message from
the WebView before running, but this was subject to timing issues due to
the frame being sent before the load complete message. This changes
makes it so that the WebView explicitly triggers another rendering
update and then waits for a frame. It should be guaranteed that the next
frame will be one that reflects load completeness.

Special thanks to jmunroe on Zulip for investigation into this issue.

Testing: This seems to eliminate flaky timeouts on my machine. I ran
the unit tests in a loop, stopping if any error (such as a timeout
happened).
Before this would stop within a minute or two, but I could not reproduce
the issue with this change after several minutes.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
2025-11-18 10:12:13 +00:00
Martin Robinson
ffae4395fe layout: Rebuild the box tree when the quotes attribute changes on a pseudo-element (#40699)
In incremental layout, changes to the `quotes` attribute of a
pseudo-elment can cause the content of the pseudo-element to change so
should cause a box rebuild. This change does that, hopefully fixing
flaky tests.

Testing: This doesn't have any test changes, but should fix the test
situation described in #40419.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Oriol Brufau <obrufau@igalia.com>
2025-11-18 08:04:07 +00:00
TIN TUN AUNG
6fda77da05 Media: Display User Agent Controls widget for video element. (#40578)
Add Contents::ReplacedWithWidget for video elements with UA control
widget, to allow Traverse into the children of video element during Box
Tree Construction, Generate
IndependentFormattingContextContent::ReplacedWithWidgets, to store both
the `ReplacedContents` and `BlockFormattingContext`. During fragment
tree generation process, first layout the Image Fragment, and then
Layout the Inner Controls BlockFormattingContext. Doing this allow us to
determine the size of Inner Controls widget based on the size of the
Image Fragment. Minor Fix: ::before/::after pseudo elment should be
suppress for replaced element.

Testing: Should show the controls widget for `<video controls></video>`,
and should not affect any existing WPT test. Since how to display UA
widget of Video Element is not defined in the spec, expectedly there has
no existing WPT test that testing this.
Fixes https://github.com/servo/servo/issues/40452
Fixes https://github.com/servo/servo/issues/31414

---------

Signed-off-by: rayguo17 <tin.tun.aung1@huawei.com>
2025-11-18 07:02:13 +00:00
Fuguo
927c907f8d Compositor: Add touch compatibility handling for mouse move events (#40637)
Every time a touchmove event is added, it updates the cursor, causing
frequent hit testing and affecting the performance of scrolling. Adding
a flag to mark the current touchmove is done for compatibility with
touch events. In this case, the last_mouse_move_position will not be
updated.

Testing: No new use cases will be approved; it's just for performance
optimization.
Fixes: A solution for #39433

Signed-off-by: kongbai1996 <1782765876@qq.com>
2025-11-18 04:24:45 +00:00
dependabot[bot]
837d1f0781 build(deps): bump cc from 1.2.45 to 1.2.46 (#40706)
[//]: # (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 [cc](https://github.com/rust-lang/cc-rs) from 1.2.45 to 1.2.46.
<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.46</h2>
<h3>Other</h3>
<ul>
<li>Add Visual Studio 2026 support (<a
href="https://redirect.github.com/rust-lang/cc-rs/pull/1609">#1609</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.45...cc-v1.2.46">1.2.46</a>
- 2025-11-14</h2>
<h3>Other</h3>
<ul>
<li>Add Visual Studio 2026 support (<a
href="https://redirect.github.com/rust-lang/cc-rs/pull/1609">#1609</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="15145d16f7"><code>15145d1</code></a>
chore: release (<a
href="https://redirect.github.com/rust-lang/cc-rs/issues/1611">#1611</a>)</li>
<li><a
href="ef4d378ff9"><code>ef4d378</code></a>
Add Visual Studio 2026 support (<a
href="https://redirect.github.com/rust-lang/cc-rs/issues/1609">#1609</a>)</li>
<li>See full diff in <a
href="https://github.com/rust-lang/cc-rs/compare/cc-v1.2.45...cc-v1.2.46">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=cc&package-manager=cargo&previous-version=1.2.45&new-version=1.2.46)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

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

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

---

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

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-18 04:20:51 +00:00
Euclid Ye
1a08cec029 Revert servo/servo#40594 "Allow WebGL contexts to have different Surfman devices" (#40707)
This reverts commit bcbd4a2f19.

There was too many intermittents:
https://github.com/servo/servo/pull/40699#issuecomment-3544170297. Some
PRs fail to merge.

Testing: It still builds. Number of flaky reduced by half.

Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
2025-11-18 03:40:03 +00:00
dependabot[bot]
597fd99b22 build(deps): bump bytes from 1.10.1 to 1.11.0 (#40705)
Bumps [bytes](https://github.com/tokio-rs/bytes) from 1.10.1 to 1.11.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tokio-rs/bytes/releases">bytes's
releases</a>.</em></p>
<blockquote>
<h2>Bytes v1.11.0</h2>
<h1>1.11.0 (November 14th, 2025)</h1>
<ul>
<li>Bump MSRV to 1.57 (<a
href="https://redirect.github.com/tokio-rs/bytes/issues/788">#788</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>fix: <code>BytesMut</code> only reuse if src has remaining (<a
href="https://redirect.github.com/tokio-rs/bytes/issues/803">#803</a>)</li>
<li>Specialize <code>BytesMut::put::&lt;Bytes&gt;</code> (<a
href="https://redirect.github.com/tokio-rs/bytes/issues/793">#793</a>)</li>
<li>Reserve capacity in <code>BytesMut::put</code> (<a
href="https://redirect.github.com/tokio-rs/bytes/issues/794">#794</a>)</li>
<li>Change <code>BytesMut::remaining_mut</code> to use
<code>isize::MAX</code> instead of <code>usize::MAX</code> (<a
href="https://redirect.github.com/tokio-rs/bytes/issues/795">#795</a>)</li>
</ul>
<h3>Internal changes</h3>
<ul>
<li>Guarantee address in <code>slice()</code> for empty slices. (<a
href="https://redirect.github.com/tokio-rs/bytes/issues/780">#780</a>)</li>
<li>Rename <code>Vtable::to_*</code> -&gt; <code>Vtable::into_*</code>
(<a
href="https://redirect.github.com/tokio-rs/bytes/issues/776">#776</a>)</li>
<li>Fix latest clippy warnings (<a
href="https://redirect.github.com/tokio-rs/bytes/issues/787">#787</a>)</li>
<li>Ignore <code>BytesMut::freeze</code> doctest on wasm (<a
href="https://redirect.github.com/tokio-rs/bytes/issues/790">#790</a>)</li>
<li>Move <code>drop_fn</code> of <code>from_owner</code> into vtable (<a
href="https://redirect.github.com/tokio-rs/bytes/issues/801">#801</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/tokio-rs/bytes/blob/master/CHANGELOG.md">bytes's
changelog</a>.</em></p>
<blockquote>
<h1>1.11.0 (November 14th, 2025)</h1>
<ul>
<li>Bump MSRV to 1.57 (<a
href="https://redirect.github.com/tokio-rs/bytes/issues/788">#788</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>fix: <code>BytesMut</code> only reuse if src has remaining (<a
href="https://redirect.github.com/tokio-rs/bytes/issues/803">#803</a>)</li>
<li>Specialize <code>BytesMut::put::&lt;Bytes&gt;</code> (<a
href="https://redirect.github.com/tokio-rs/bytes/issues/793">#793</a>)</li>
<li>Reserve capacity in <code>BytesMut::put</code> (<a
href="https://redirect.github.com/tokio-rs/bytes/issues/794">#794</a>)</li>
<li>Change <code>BytesMut::remaining_mut</code> to use
<code>isize::MAX</code> instead of <code>usize::MAX</code> (<a
href="https://redirect.github.com/tokio-rs/bytes/issues/795">#795</a>)</li>
</ul>
<h3>Internal changes</h3>
<ul>
<li>Guarantee address in <code>slice()</code> for empty slices. (<a
href="https://redirect.github.com/tokio-rs/bytes/issues/780">#780</a>)</li>
<li>Rename <code>Vtable::to_*</code> -&gt; <code>Vtable::into_*</code>
(<a
href="https://redirect.github.com/tokio-rs/bytes/issues/776">#776</a>)</li>
<li>Fix latest clippy warnings (<a
href="https://redirect.github.com/tokio-rs/bytes/issues/787">#787</a>)</li>
<li>Ignore <code>BytesMut::freeze</code> doctest on wasm (<a
href="https://redirect.github.com/tokio-rs/bytes/issues/790">#790</a>)</li>
<li>Move <code>drop_fn</code> of <code>from_owner</code> into vtable (<a
href="https://redirect.github.com/tokio-rs/bytes/issues/801">#801</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="a7952fb447"><code>a7952fb</code></a>
chore: prepare bytes v1.11.0 (<a
href="https://redirect.github.com/tokio-rs/bytes/issues/804">#804</a>)</li>
<li><a
href="60cbb776f2"><code>60cbb77</code></a>
fix: <code>BytesMut</code> only reuse if src has remaining (<a
href="https://redirect.github.com/tokio-rs/bytes/issues/803">#803</a>)</li>
<li><a
href="7ce330f519"><code>7ce330f</code></a>
Move drop_fn of from_owner into vtable (<a
href="https://redirect.github.com/tokio-rs/bytes/issues/801">#801</a>)</li>
<li><a
href="4b53a29eb2"><code>4b53a29</code></a>
Tweak BytesMut::remaining_mut (<a
href="https://redirect.github.com/tokio-rs/bytes/issues/795">#795</a>)</li>
<li><a
href="016fdbdc7a"><code>016fdbd</code></a>
Reserve capacity in BytesMut::put (<a
href="https://redirect.github.com/tokio-rs/bytes/issues/794">#794</a>)</li>
<li><a
href="ef7f25736c"><code>ef7f257</code></a>
Specialize BytesMut::put::&lt;Bytes&gt; (<a
href="https://redirect.github.com/tokio-rs/bytes/issues/793">#793</a>)</li>
<li><a
href="8b4f54d0f3"><code>8b4f54d</code></a>
Ignore BytesMut::freeze doctest on wasm (<a
href="https://redirect.github.com/tokio-rs/bytes/issues/790">#790</a>)</li>
<li><a
href="16132ad259"><code>16132ad</code></a>
Fix latest clippy warnings (<a
href="https://redirect.github.com/tokio-rs/bytes/issues/787">#787</a>)</li>
<li><a
href="3e44f88f5f"><code>3e44f88</code></a>
Bump MSRV to 1.57 (<a
href="https://redirect.github.com/tokio-rs/bytes/issues/788">#788</a>)</li>
<li><a
href="f29e93951d"><code>f29e939</code></a>
Add some tests for Limit, BytesMut and Reader (<a
href="https://redirect.github.com/tokio-rs/bytes/issues/785">#785</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/tokio-rs/bytes/compare/v1.10.1...v1.11.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=bytes&package-manager=cargo&previous-version=1.10.1&new-version=1.11.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

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

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

---

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

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-18 01:51:00 +00:00
dependabot[bot]
dd5b55d9b4 build(deps): bump clap from 4.5.51 to 4.5.52 (#40703)
Bumps [clap](https://github.com/clap-rs/clap) from 4.5.51 to 4.5.52.
<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.52</h2>
<h2>[4.5.52] - 2025-11-17</h2>
<h3>Fixes</h3>
<ul>
<li>Don't panic when <code>args_conflicts_with_subcommands</code>
conflicts with an <code>ArgGroup</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.52] - 2025-11-17</h2>
<h3>Fixes</h3>
<ul>
<li>Don't panic when <code>args_conflicts_with_subcommands</code>
conflicts with an <code>ArgGroup</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="783b291358"><code>783b291</code></a>
chore: Release</li>
<li><a
href="a88013aab0"><code>a88013a</code></a>
docs: Update changelog</li>
<li><a
href="a3c623042a"><code>a3c6230</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/6000">#6000</a>
from mernen/fix-zsh-dynamic-completion</li>
<li><a
href="951536ee69"><code>951536e</code></a>
chore: Release</li>
<li><a
href="3c527af7f4"><code>3c527af</code></a>
chore: Update transitive clap</li>
<li><a
href="8520a7acb5"><code>8520a7a</code></a>
chore: Release</li>
<li><a
href="2826eede74"><code>2826eed</code></a>
chore(nushell): Require newer clap_complete</li>
<li><a
href="c17d25fc41"><code>c17d25f</code></a>
docs: Update changelog</li>
<li><a
href="493a71a83b"><code>493a71a</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/5999">#5999</a>
from cenviity/push-tqqzyttsoktu</li>
<li><a
href="c758212a47"><code>c758212</code></a>
feat(help): Merge lists of short and long aliases</li>
<li>Additional commits viewable in <a
href="https://github.com/clap-rs/clap/compare/clap_complete-v4.5.51...clap_complete-v4.5.52">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap&package-manager=cargo&previous-version=4.5.51&new-version=4.5.52)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

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

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

---

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

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-18 00:28:18 +00:00
dependabot[bot]
006f4b1b5d build(deps): bump sea-query from 1.0.0-rc.17 to 1.0.0-rc.18 (#40702)
Bumps [sea-query](https://github.com/SeaQL/sea-query) from 1.0.0-rc.17
to 1.0.0-rc.18.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/SeaQL/sea-query/commits">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=sea-query&package-manager=cargo&previous-version=1.0.0-rc.17&new-version=1.0.0-rc.18)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

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

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

---

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

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-18 00:26:55 +00:00
dependabot[bot]
2b31cf4d62 build(deps): bump find-msvc-tools from 0.1.4 to 0.1.5 (#40700)
Bumps [find-msvc-tools](https://github.com/rust-lang/cc-rs) from 0.1.4
to 0.1.5.
<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.5</h2>
<h3>Other</h3>
<ul>
<li>Add Visual Studio 2026 support (<a
href="https://redirect.github.com/rust-lang/cc-rs/pull/1609">#1609</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="15145d16f7"><code>15145d1</code></a>
chore: release (<a
href="https://redirect.github.com/rust-lang/cc-rs/issues/1611">#1611</a>)</li>
<li><a
href="ef4d378ff9"><code>ef4d378</code></a>
Add Visual Studio 2026 support (<a
href="https://redirect.github.com/rust-lang/cc-rs/issues/1609">#1609</a>)</li>
<li><a
href="df67ed3948"><code>df67ed3</code></a>
chore(cc): release v1.2.45 (<a
href="https://redirect.github.com/rust-lang/cc-rs/issues/1607">#1607</a>)</li>
<li><a
href="0c15d10307"><code>0c15d10</code></a>
Regenerate target info (<a
href="https://redirect.github.com/rust-lang/cc-rs/issues/1606">#1606</a>)</li>
<li><a
href="c1fa3761b6"><code>c1fa376</code></a>
Use a default check for the &quot;env&quot; variable in apple_sdk_name
(<a
href="https://redirect.github.com/rust-lang/cc-rs/issues/1605">#1605</a>)</li>
<li><a
href="514e4d14e1"><code>514e4d1</code></a>
chore(cc): release v1.2.44 (<a
href="https://redirect.github.com/rust-lang/cc-rs/issues/1603">#1603</a>)</li>
<li><a
href="2a2eee3c68"><code>2a2eee3</code></a>
Fix debug assertion for env/abi mismatch (<a
href="https://redirect.github.com/rust-lang/cc-rs/issues/1604">#1604</a>)</li>
<li><a
href="97281b6603"><code>97281b6</code></a>
Update CHANGELOG for version 1.2.43 (<a
href="https://redirect.github.com/rust-lang/cc-rs/issues/1602">#1602</a>)</li>
<li><a
href="8a45e2b2e9"><code>8a45e2b</code></a>
Stop passing an invalid target to <code>llvm-mingw</code>'s
cross-compilation wrappers (...</li>
<li><a
href="a0b2fd6ad0"><code>a0b2fd6</code></a>
Mark <code>static_flag</code> and <code>shared_flag</code> as deprecated
(<a
href="https://redirect.github.com/rust-lang/cc-rs/issues/1582">#1582</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/rust-lang/cc-rs/compare/find-msvc-tools-v0.1.4...find-msvc-tools-v0.1.5">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=find-msvc-tools&package-manager=cargo&previous-version=0.1.4&new-version=0.1.5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

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

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

---

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

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-18 00:20:49 +00:00
Martin Robinson
8939240ed8 script: Trigger reflow properly for pseudo-elements with content: attr() (#40698)
When a Node with a pseudo-element style that uses `content: attr()`
has one of its attributes mutated, trigger a reflow starting at that
node. This is a crude implementation, because we currently aren't taking
into account what attributes changed, but at least it works.

Testing: This doesn't have any test changes, but should fix the test
situation described in #40419.

---------

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Oriol Brufau <obrufau@igalia.com>
2025-11-17 23:18:41 +00:00
Martin Robinson
5494995e01 libservo: Add ContextMenuElementInformation to for the context menu API (#40607)
This new data structure allows passing more information when popping up
context menus. It's possible in the future that it will be adapted into
a more generic "hit test result" type API ala WebKit, but for now, this
is probably
enough.

Testing: This change includes new API test assertions.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
2025-11-17 15:53:43 +00:00
Jonathan Schwender
eca996ada3 Upload junit report of unit-tests in CI (#39897)
This should help identify flaky unit tests, since codecov will gather
statistics of tests (of the last 60 days) and allow us to easily
identify flaky unit-tests. [Test page on
codecov](https://app.codecov.io/github/servo/servo/tests) based on an
uploaded report from a try run.
Additionally add a catch-all parameter for `test-unit` which is passed
through to the `cargo nextest` invocation, useful for e.g. stressing a
test via `--stress-count`.

Testing: Manually tested with [try
run](https://github.com/servo/servo/actions/runs/18529823800)

---------

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2025-11-17 15:07:56 +00:00
Oriol Brufau
482b8fa9c2 layout: Adjust inset-modified containing block to have non-negative size (#40628)
If the insets of an absolutely positioned box are big enough that the
inset-modified containing block (IMCB) would get a negative size, we
will now adjust the weaker inset so that the size of the IMCB becomes
zero instead.
This affects auto sizes, auto margins, and self-alignment.

This behavior matches Blink for the most part. However, while Blink also
ensures a non-negative IMCB size, it doesn't necessarily do so by
adjusting the weaker inset, so the alignment may differ.

Blink is fine with adopting this behavior, as resolved by the CSSWG in
https://github.com/w3c/csswg-drafts/issues/11478

Testing: Adding new WPT

---------

Signed-off-by: Oriol Brufau <obrufau@igalia.com>
2025-11-17 14:54:53 +00:00
Andrei Volykhin
1301dbfcdf html: Run the <media> play seek if loop attribute was set after playback ended (#40688)
The user agent on the `internal play steps` (step 2) must to seek to the
earliest possible position if the playback has ended, but the definition
of the `ended playback` prevents looping when the loop attribute was
added after playback has ended (already registered whatwg html issue).
```
- playback ended (`ended` event)
- loop = true
- play() (no seeking - playback hasn't ended)
```

Currently this edge case if not yet reflected in the HTML specification
so let's do the same as other browsers and ignore the `loop` attribute
for `play` seek.

See https://html.spec.whatwg.org/multipage/#internal-play-steps
See https://github.com/whatwg/html/issues/4487

Testing: Improvements in the following tests
-
html/semantics/embedded-content/media-elements/playing-the-media-resource/loop-from-ended.tentative.html

Signed-off-by: Andrei Volykhin <andrei.volykhin@gmail.com>
2025-11-17 14:41:52 +00:00
Mukilan Thiyagarajan
215e43e3e0 wpt: Backport upstream WPT PR for new SVG test. (#40689)
The exported [upstream PR] failed to merge due to lint issues and there
was also a suggestion to move the test to a different folder.

Since that upstream PR has now been merged manually, backport these
fixes to Servo's copy of WPT.

[upstream PR]: https://github.com/web-platform-tests/wpt/pull/56050

Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
2025-11-17 12:45:24 +00:00
Andrei Volykhin
73f8dce99e html: Fire the <media> canplaythrough event in the expected order (#40685)
Follow the HTML specification, queue a media element task to fire
`canplaythrough` event in expected order (after `canplay`) on the
changing the ready state to `HAVE_ENOUGH_DATA` which align the event
ordering for non-autoplay and autoplay media.

See
https://html.spec.whatwg.org/multipage/#ready-states%3Aevent-media-canplaythrough

The associated WPT PR:
https://github.com/web-platform-tests/wpt/pull/56014

Testing: Improvements in the following tests
-
html/semantics/embedded-content/media-elements/ready-states/autoplay.html

Signed-off-by: Andrei Volykhin <andrei.volykhin@gmail.com>
2025-11-17 11:12:11 +00:00
Kingsley Yung
71de70742e script: Fix wrongly matched normalized algorithm in NormalizedAlgorithm::get_key_length (#40686)
In `NormalizedAlgorithm::get_key_length`, we match the wrong enum
variants for HKDF and PBKDF2. Therefore, the function wrongly returns
`NotSupportedError` for them. It causes a few WPT tests fail. This patch
fix it with correct enum variants.

Testing: Pass some WPT tests that were expected to fail.

Signed-off-by: Kingsley Yung <kingsley@kkoyung.dev>
2025-11-17 10:19:41 +00:00
Mukilan Thiyagarajan
bcbd4a2f19 compositing: Allow WebGL contexts to have different Surfman devices (#40594)
Currently, a single `surfman::Device` is used for all WebGL contexts.
This cannot work when we have multiple rendering contexts. So, extract
the surfman `Connection` and `Adapter` into a per-painter data structure
(`PainterSurfmanDetailsMap`) and store the `Device` directly in the
WebGL context.

This patch also modifies the WebXR traits so that the `Device` doesn't
need to be explictly passed into most methods.

Testing: Should be covered by existing tests.

---------

Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
2025-11-17 10:16:31 +00:00
Mukilan Thiyagarajan
2dd8184520 net: Relax the SVG content type detection logic. (#40636)
The current logic fails when the `Content-Type` header includes the
character encoding other parameters like `qs`.

Fixes: #40630

---------

Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
2025-11-17 10:08:18 +00:00
Taym Haddadi
660238a94c Remove #![allow(dead_code)] from readablestreambyobreader (#40675)
#![allow(dead_code)] not needed in readablestreambyobreader(left over
stream re-implementation)

Signed-off-by: Taym Haddadi <haddadi.taym@gmail.com>
2025-11-16 15:32:17 +00:00
Tim van der Lippe
8e0c2d5750 Implement WindowOrWorkerGlobalScope::reportError (#40654)
This web API is alternative API to `throw e`, which is why we can reuse
a lot of the existing machinery.

The one testcase that isn't passing yet is because it reports an empty
`TypeError`. The current logic in `ErrorInfo` only retrieves the message
data, but doesn't include the type of the exception. For that, we need
to use `(*report)._base.errorNumber` and map that back to the original
type codes. However, deferring that to a follow-up as that requires some
more work in mozjs.

Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
2025-11-16 09:30:16 +00:00
Ashwin Naren
10796b8590 resources: Ensure that selectors in CSS for the newtab page refer to actual elements (#40670)
I did part of a refactor to address a review but didn't finish it. Fixes
white input/button in dark mode.

Signed-off-by: Ashwin Naren <arihant2math@gmail.com>
2025-11-16 09:28:46 +00:00
Martin Robinson
34af7fb8d2 libservo: Make WebView::set_history have crate visibility (#40671)
I mistakenly made this method have public visibility in a recent PR

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

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
2025-11-16 08:21:15 +00:00
Ashwin Naren
5aec3eadb7 indexeddb: Clean shutdown of indexeddb threads/threadpool (#40666)
Clean shutdown of indexeddb.

Testing: Covered by WPT

---------

Signed-off-by: Ashwin Naren <arihant2math@gmail.com>
Co-authored-by: Euclid Ye <yezhizhenjiakang@gmail.com>
2025-11-16 08:20:40 +00:00
Sam
c20aeaa10a CI: use --profile instead of profile shorthands (#38644)
Before, we used shorthands for profiles selection (`--release`,
`--production`), but it would be more correct to just use actual
`--profile` so we do not need shorthands for all of them.

Motivation: I want to create "profiling" builds in CI.

Testing: CI change is covered by CI.

Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
2025-11-16 07:21:02 +00:00
Ashwin Naren
79d96153ca Fix indexeddb intermitency (#40648)
Fixes a major source of intermittency in IndexedDB: the dispatching of
the complete event. This ensures that all requests are processed before
it is fired.

Fixes: #39162
Fixes: #39221
... and likely many more.

---------

Signed-off-by: Ashwin Naren <arihant2math@gmail.com>
2025-11-16 05:51:49 +00:00
Sam
fa12f7a5e5 script: Add cx_no_gc/cx/realm codegen option and demostrate them (#40582)
Companion to https://github.com/servo/mozjs/pull/650

We added 3 new options to bindings.conf, each more powerful then the
previous one, so one should use the least powerful as possible to keep
things flexible:
1 `cx_no_gc` prepends argument `&JSContext`, which allows creating NoGC
tokens and using functions that do not trigger GC.
2. `cx` prepends argument `&mut JSContext`, which allows everything that
previous one allows, but it also allows calling GC triggering functions.
3. `realm` prepends argument `&mut CurrentRealm`, which can be deref_mut
to `&mut JSContext` (so it can do everything that previous can), but it
also ensures that there is current entered realm, which can be used for
creation of InRealm.

next steps: #40600 

reviewable per commit

Testing: It's just refactoring
try run: https://github.com/sagudev/servo/actions/runs/19287700927

---------

Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
2025-11-16 04:53:54 +00:00
Euclid Ye
cc4c762a75 servodriver: Shut down Servo elegantly when all tests finish (#40455)
Previously, we always kill the instance when tests finish instead of
normally shutting down. That blocked clean-ups works, such as Code
Coverage we wanted to add, and other things I'm not aware of.

Testing: We have tested for a week and checked the logs of CI to confirm
it works normally now.

---------

Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
2025-11-16 01:59:34 +00:00
Servo WPT Sync
44f1563cbe Sync WPT with upstream (16-11-2025) (#40660)
Automated downstream sync of changes from upstream as of 16-11-2025
[no-wpt-sync]

Signed-off-by: WPT Sync Bot <ghbot+wpt-sync@servo.org>
2025-11-16 01:14:09 +00:00
Ashwin Naren
5c38ac0a11 indexeddb: Fix typo in range sql generator (#40658)
Minor typo.

Testing: WPT
Fixes: WPT Tests

---------

Signed-off-by: Ashwin Naren <arihant2math@gmail.com>
2025-11-15 20:49:20 +00:00
Sam
2a03c78498 canvas: Clear bitmap without transform (#38286)
We only need to clear the viewport and with wrong transform this will
not do.

Testing: Existing WPT tests

Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
2025-11-15 18:35:31 +00:00
Simon Wülker
1d16f6526d script: Don't rely on Attr nodes when communicating with layout (#40657)
When script is looking up an attribute for layout then it only needs to
care about the attribute value. The `Attr` node itself is not required.
If we want to lazily construct attribute nodes in the future
(https://github.com/servo/servo/issues/36697) then we should use `Attr`
as little as possible.

This also ends up simplifying the code by accident.

Testing: No behaviour change intended, regressions are covered by
existing tests.
Part of https://github.com/servo/servo/issues/36697

Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
2025-11-15 17:59:57 +00:00
Martin Robinson
7d9017a97b script: Eliminate duplicate quirks mode origin check in stylesheet loader (#40646)
This was due to the fact that two PRs doing this landed around the same
time. This PR eliminates the duplicate check.

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

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
2025-11-15 11:41:30 +00:00