Commit Graph

875 Commits

Author SHA1 Message Date
Taym Haddadi
cfc4920815 indexeddb: implement "inject a key into a value using a key path with value" (#42727)
implement "inject a key into a value using a key path with value"
following he spec:

https://w3c.github.io/IndexedDB/#inject-a-key-into-a-value-using-a-key-path
 

Testing: More indexeddb tests should pass.
part of https://github.com/servo/servo/issues/40983

---------

Signed-off-by: Taym Haddadi <haddadi.taym@gmail.com>
2026-03-02 23:16:29 +00:00
Shubham Gupta
77e4bfbcc4 Pass Request's URL for LargestContentfulPaint Entry (#42901)
Pass Request URL to `LargestContnetfulPaint` Entry

Testing: WPT Expectations Updated.
Fixes: #42902

---------

Signed-off-by: Shubham Gupta <shubham.gupta@chromium.org>
2026-03-02 20:35:37 +00:00
eri
88f2469270 devtools: Implement initial support for Step in, Step out and Step over (#42907)
We are adding initial support for stepping in the debugger. Step over
mostly works, but Step in and Step out have some quirks that we are
working on.

![2026-02-27
12-32-05](https://github.com/user-attachments/assets/0b73b32c-efa3-444c-80a4-f863a64b6fdc)

Testing: DevTools tests and manual checks.
Part of: #36027

Signed-off-by: eri <eri@igalia.com>
Co-authored-by: atbrakhi <atbrakhi@igalia.com>
2026-03-02 18:35:02 +00:00
Jonathan Schwender
37dfa42731 Unify servo package naming (#42916)
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>
2026-03-01 14:15:27 +00:00
Euclid Ye
6c82b3178e paint: Track whether script is handling touchmove per TouchId (#42926)
As titled. The change is prepared a while ago to eliminate dead code, 
but the test case added requires change from `testdriver-actions.js`: 
https://github.com/web-platform-tests/wpt/pull/57607 just landed by
latest wpt-sync: https://github.com/servo/servo/pull/42925.

Part of https://github.com/servo/servo/issues/41923

Testing: Added a WPT test.
Fixes: https://github.com/servo/servo/issues/42921

---------

Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
2026-03-01 08:54:24 +00:00
webbeef
7c7cd5c0a6 mem: fix camelCase in JSON serialization of memory reports (#42923)
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>
2026-03-01 07:51:26 +00:00
webbeef
1ad41dc15f script: Add a ServoInternals.garbageCollectAllContexts() (#42798)
This is useful in about:memory to measure memory usage after running the
GC.

The calling page sends a callback to the constellation that in turn wait
for all script threads to run the GC and report back.

Testing: Manual testing in `about:memory`

Before running GC:

<img width="2048" height="1480" alt="Screenshot from 2026-02-23
18-50-46"
src="https://github.com/user-attachments/assets/fd8399c1-fbc7-4f4c-886d-f29629ef8369"
/>

After running GC:

<img width="2048" height="1480" alt="Screenshot from 2026-02-23
18-51-00"
src="https://github.com/user-attachments/assets/82c793f7-8229-4de4-9cb5-47c94383b410"
/>

Signed-off-by: webbeef <me@webbeef.org>
2026-02-28 08:38:32 +00:00
eri
b2b27d857b devtools: Avoid creating unnecessary new frame actors (#42906)
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>
2026-02-27 14:34:18 +00:00
Euclid Ye
8419c5ed9f webdriver: Reduce IPC for cookie deletion (#42836)
- Update Doc for `CoreResourceMsg::DeleteCookies`
- Reduce IPC for cookie deletion

---------

Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
2026-02-27 11:32:02 +00:00
atbrakhi
433d0acd0e devtools: Make why attribute use PauseReasons (#42878)
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>
2026-02-27 09:22:33 +00:00
Martin Robinson
2b5254f944 paint: Add debugging output when failing to create an OpenGL context (#42873)
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>
2026-02-26 18:02:31 +00:00
Martin Robinson
aac17cd4a8 Revert "script: Fire select events for user input selections (#42806)" (#42876)
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>
2026-02-26 11:52:36 +00:00
eri
a2f1c55676 devtools: Register frame actor before pause (#42844)
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>
2026-02-26 09:24:04 +00:00
Taym Haddadi
a7b675399c indexeddb: Add processed flag, rename close to close_pending and update spec links to version 3 of the spec (#42859)
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>
2026-02-26 08:41:41 +00:00
Steven Novaryo
d70ab4e1c0 script: Merge ScrollEvent with SetScrollStates messages (#42834)
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>
2026-02-26 07:36:55 +00:00
Oriol Brufau
d5c82150e0 layout: Add testing API for counting restyled and rebuilt fragments (#42817)
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>
2026-02-25 21:25:32 +00:00
Oriol Brufau
60c5977291 layout: Correctly repair OutsideMarker::list_item_style (#42825)
`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>
2026-02-25 13:25:45 +00:00
Martin Robinson
1f42551042 script: Fire select events for user input selections (#42806)
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>
2026-02-24 19:34:18 +00:00
Narfinger
e0533af47e base: Replace calls to servo_opts in generic channel with OnceLock (#42782)
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>
2026-02-24 15:48:06 +00:00
Steven Novaryo
ad358de589 libservo: Add allow_virtual_keyboard flag for InputMethodControl (#42467)
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>
2026-02-24 07:30:49 +00:00
Narfinger
f7142720c3 base: GenericSharedMemory switch to custom struct (#42083)
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>
2026-02-23 16:02:09 +00:00
webbeef
a4c5ca1070 net: Use the user locale for the Accept-Language header and navigator language (#41919)
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>
2026-02-23 13:05:21 +00:00
eri
92259af702 devtools: Unify pause handling for breakpoints and interrupt (#42599)
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>
2026-02-23 09:29:59 +00:00
Taym Haddadi
0bc3b61a74 indexeddb: propagate legacy didThrow from version-change event dispatch (#42669)
indexeddb: propagate legacy didThrow from version-change event dispatch

Testing: fire-upgradeneeded-event-exception.any.js,
upgrade-transaction-deactivation-timing.any.js are passing.

depends on https://github.com/servo/servo/pull/41508

part of https://github.com/servo/servo/issues/40983

Signed-off-by: Taym Haddadi <haddadi.taym@gmail.com>
2026-02-20 15:50:46 +00:00
shuppy
c07682f222 libservo: Allow the embedder to activate accessibility (#42336)
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>
2026-02-20 05:56:15 +00:00
Ashwin Naren
c056f9b08e indexeddb: Report memory usage (#42486)
Reports memory usage, including partial sqlite3 memory usage stats for
the sqlite3 engine.

Testing: Manual
2026-02-19 21:00:51 +00:00
Martin Robinson
042d95220a layout: Replace dirty root approach with flexible box tree layout (#42700)
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>
2026-02-19 14:31:13 +00:00
Taym Haddadi
590ae85779 Indexeddb: transaction lifecycle (#41508)
Indexeddb: transaction lifecycle

Testing: more Indexeddb test should pass
part of #40983

---------

Signed-off-by: Taym Haddadi <haddadi.taym@gmail.com>
2026-02-19 11:05:33 +00:00
atbrakhi
3c8c46d32f devtools: implement pause and resume in debugger (#42580)
When a breakpoint is hit, the script thread now pauses execution and
notifies devtools clients with a "paused" event. The script
thread enters a loop that processes devtools messages until
a Resume command is received.

This change does not implement manual pause

Testing: Added new test
Fixes: part of https://github.com/servo/servo/issues/36027




https://github.com/user-attachments/assets/c619db20-4579-4f77-aa60-0e43e6e7e575

Signed-off-by: atbrakhi <atbrakhi@igalia.com>
2026-02-18 10:08:46 +00:00
Narfinger
0c623f5281 pixels: Avoid unnecessary clone (#42684)
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>
2026-02-17 16:47:37 +00:00
Simon Wülker
a60f9370c7 devtools: Apply attribute modifications in the inspector to the DOM tree (#42601)
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>
2026-02-17 13:05:41 +00:00
Euclid Ye
16f9f7500e webdriver: Retrieve viewport size in CSS pixel (#42628)
According to
[spec](https://w3c.github.io/webdriver/#ref-for-dfn-move-target-out-of-bounds-2:~:text=the%20viewport%20in%20CSS%20pixels),
we are supposed to retrieve viewport size in CSS pixel.

This is a critical step when performing scroll/pointermove, to stop
invalid actions that happen outside viewport.

Testing: Tested with tests in headed mode manually, narrowing
discrepancy between headed/headless mode. Should not have effect on
automated tests in CI.

Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
2026-02-15 07:55:08 +00:00
Martin Robinson
150f767b19 layout: Store a fallback cache in the FontGroup (#42466)
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>
2026-02-13 17:01:41 +00:00
Simon Wülker
53ffdda2a1 devtools: Properly handle opening and closing client connections (#42583)
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>
2026-02-13 14:39:47 +00:00
Josh Matthews
36c436ac12 storage: Do not panic if sqlite fails to open a DB. (#42444)
#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>
2026-02-12 17:31:11 +00:00
Shubham Gupta
c67143634a paint: Get rid of unnecessary trait from LCPCandidateID (#42571)
Just remove some extra traits.

Testing: No behavior change

---------

Signed-off-by: Shubham Gupta <shubham.gupta@chromium.org>
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
Co-authored-by: Euclid Ye <yezhizhenjiakang@gmail.com>
2026-02-12 12:23:32 +00:00
Martin Robinson
25b4121ad7 layout: Ensure layout damage clears inline content size cache of parent (#42574)
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>
2026-02-12 12:21:50 +00:00
Shubham Gupta
baf2f4f8bf compositing: Re-enable LCP calculation on WebViews after they have been reloaded/navigated (#41169)
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>
2026-02-12 07:32:40 +00:00
Shubham Gupta
f1ff08ca0e layout: Get rid of LargestContentfulPaintType struct (#42539)
LargestContentfulPaintType is not useful.

Testing: No behaviour change expected

Signed-off-by: Shubham Gupta <shubham13297@gmail.com>
2026-02-11 13:49:59 +00:00
Simon Wülker
929e275fcd devtools: Show attached event listeners in inspector tab (#42355)
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>
2026-02-11 13:31:25 +00:00
Narfinger
2b6a260125 devtools: Plugin to about:memory (#42480)
This implements the final glue to have memory reporting for devtools.

Testing: Run some webpages and connected to devtools and looked at
about:memory
Fixes: https://github.com/servo/servo/issues/42453

---------

Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
2026-02-11 13:23:05 +00:00
pralkarz
0dc5bee60a devtools: handle syntax highlighting booleans in console.log (#42513)
Testing: `./mach test-devtools` (added a new test)
Fixes: #42503

---------

Signed-off-by: pralkarz <pralkarz@tuta.com>
2026-02-11 12:46:35 +00:00
Narfinger
2f619821ac webxr: Implement MallocSizeOf (#42505)
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>
2026-02-11 08:39:03 +00:00
Ashwin Naren
086863398d webstorage: Improve storage memory size reporting (#42484)
`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>
2026-02-10 17:42:53 +00:00
Narfinger
870576f948 devtools: Implement MallocSizeOf for DevtoolsInstance (#42478)
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>
2026-02-10 17:32:47 +00:00
Simon Wülker
60c8b8fad5 devtools: Support sending js objects to firefox devtools from console.log (#42296)
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>
2026-02-10 10:31:17 +00:00
Narfinger
c324141fb4 base: This cleans up some old unneeded ignore annotation for MallocSizeOf and updates some descriptions (#42483)
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>
2026-02-09 17:34:03 +00:00
Narfinger
48581c8de7 deps: Update ipc-channel (#42161)
This updates ipc-channel.

Companion Pr in servo media: https://github.com/servo/media/pull/486

This currently uses git revisions temporarily.

Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>

Testing: Full try run here:
https://github.com/Narfinger/servo/actions/runs/21471578693

Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
2026-02-09 17:25:53 +00:00
atbrakhi
d6097d1967 devtools: Implement debugger Eval event (#42306)
Replace the `EvaluateJS` function to use `debugger.js` `Eval` event and
the proper context. This takes the global context and calls
[executeInGlobal](https://firefox-source-docs.mozilla.org/js/Debugger/Debugger.Object.html#executeinglobal-code-options).

In future we also add the version that takes a frame and calls
[eval](https://firefox-source-docs.mozilla.org/js/Debugger/Debugger.Frame.html#eval-code-options).

Testing: No new tests added yet, Old tests are not impacted by this
change.
Fixes: Part of https://github.com/servo/servo/issues/36027

---------

Signed-off-by: atbrakhi <atbrakhi@igalia.com>
Co-authored-by: eri <eri@igalia.com>
2026-02-09 12:58:51 +00:00
Euclid Ye
03d8d16748 paint: Track TouchId in PendingTouchInputEvent (#42468)
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>
2026-02-09 08:49:38 +00:00