servo/components/script
Jo Steven Novaryo f523445fc3
script: Implement DocumentOrShadowDOM.adoptedStylesheet with FrozenArray (#38163)
Spec:
https://drafts.csswg.org/cssom/#dom-documentorshadowroot-adoptedstylesheets

Implement `DocumentOrShadowDOM.adoptedStylesheet`. Due to
`ObservableArray` being a massive issue on its own, it will be as it was
a `FrozenArray` at first. This approach is similar to how Gecko
implement adopted stylesheet. See
https://phabricator.services.mozilla.com/D144547#change-IXyOzxxFn8sU.

All of the changes will be gated behind a preference
`dom_adoptedstylesheet_enabled`.

Adopted stylesheet is implemented by adding the setter and getter of it.
While the getter works like a normal attribute getter, the setter need
to consider the inner working of document and shadow root StylesheetSet,
specifically the ordering and the invalidations. Particularly for
setter, we will clear all of the adopted stylesheet within the
StylesheetSet and readd them. Possible optimization exist, but the focus
should be directed to implementing `ObservableArray`.

More context about the implementations
https://hackmd.io/vtJAn4UyS_O0Idvk5dCO_w.

Testing: Existing WPT Coverage
Fixes: https://github.com/servo/servo/issues/37561

---------

Signed-off-by: Jo Steven Novaryo <jo.steven.novaryo@huawei.com>
2025-07-23 08:16:01 +00:00
..
docs doc: fix broken link to UnrootedMustRoot plugin (#36198) 2025-03-28 10:23:41 +00:00
dom script: Implement DocumentOrShadowDOM.adoptedStylesheet with FrozenArray (#38163) 2025-07-23 08:16:01 +00:00
layout_dom script: Wrapping unsafe code in unsafe blocks for basic DOM types (#37997) 2025-07-11 11:38:02 +00:00
resources Embed user agent stylesheets and media control resouces in libservo (#36803) 2025-05-04 18:48:09 +00:00
xpath script: Update name validation for attribute, element, and doctype (#37747) 2025-07-11 02:45:52 +00:00
animation_timeline.rs
animations.rs Fix potential clippy warning for NodeDamage enum variant (#37391) 2025-06-11 09:53:15 +00:00
body.rs Consistently use Dom in native promise handlers (#37226) 2025-06-03 07:41:34 +00:00
build.rs script: copy include! files from script_bindings to script's OUT_DIR (#36384) 2025-04-08 19:22:24 +00:00
canvas_context.rs canvas: Add initial support of ImageBitmapRenderingContext (#37998) 2025-07-15 08:03:49 +00:00
canvas_state.rs canvas: Make script/canvas thread boundry mostly stateless (#38164) 2025-07-22 12:30:15 +00:00
Cargo.toml canvas: Use wrapped kurbo::BezPath for path everywhere (#37967) 2025-07-12 10:37:47 +00:00
clipboard_provider.rs Move ScriptToConstellationMsg to constellation_traits (#36364) 2025-04-05 22:13:29 +00:00
conversions.rs
devtools.rs script: Upgrade node_ids to pipeline_to_node_ids to track the owner pipeline of the node (#37213) 2025-06-02 12:26:45 +00:00
document_collection.rs
document_loader.rs script: LoadBlocker's drop impl shouldn't run after termination. (#36508) 2025-04-21 07:17:00 +00:00
drag_data_store.rs Add support for static SVG images using resvg crate (#36721) 2025-05-27 11:02:40 +00:00
fetch.rs Forward CSP violations from load_whole_resource to parent event loop (#38048) 2025-07-20 16:00:28 +00:00
iframe_collection.rs dom: Optimize IFrameCollection::validate (#38196) 2025-07-22 03:54:16 +00:00
image_animation.rs script: Properly root nodes with animating images (#37689) 2025-06-25 13:52:11 +00:00
indexed_db.rs Move common indexeddb methods out of dom implementations (#38101) 2025-07-17 04:19:03 +00:00
init.rs
layout_image.rs Return correct source position for element CSP violations (#37970) 2025-07-11 08:42:51 +00:00
lib.rs Move common indexeddb methods out of dom implementations (#38101) 2025-07-17 04:19:03 +00:00
links.rs Use version of markup5ever with web_atoms crate (#36542) 2025-04-19 11:49:37 +00:00
messaging.rs Forward CSP violations from load_whole_resource to parent event loop (#38048) 2025-07-20 16:00:28 +00:00
microtask.rs Implement MicrotaskRunnable for DefaultTeeReadRequestMicrotask (#37404) 2025-06-12 10:46:31 +00:00
mime.rs Switch to data_url::mime for document content type (#36522) 2025-04-15 17:12:48 +00:00
navigation.rs constellation: Pass system theme to new Pipelines (#37132) 2025-05-26 12:05:38 +00:00
network_listener.rs
realms.rs Move generated bindings to script_bindings (#36323) 2025-04-04 06:45:08 +00:00
routed_promise.rs script: add TaskSource argument to route_promise (#36831) 2025-05-04 17:05:27 +00:00
script_module.rs Return correct source position for element CSP violations (#37970) 2025-07-11 08:42:51 +00:00
script_runtime.rs script: const initialize LIVE_REFERENCES (#37688) 2025-06-25 11:27:56 +00:00
script_thread.rs Forward CSP violations from load_whole_resource to parent event loop (#38048) 2025-07-20 16:00:28 +00:00
security_manager.rs Inherit CSP for blob workers (#38033) 2025-07-17 08:14:20 +00:00
serviceworker_manager.rs Move ScriptToConstellationMsg to constellation_traits (#36364) 2025-04-05 22:13:29 +00:00
stylesheet_loader.rs Return correct source position for element CSP violations (#37970) 2025-07-11 08:42:51 +00:00
stylesheet_set.rs
task.rs script: Reduce usage of Trusted in Node::insert. (#37762) 2025-07-15 01:11:12 +00:00
task_manager.rs Initial IndexedDB Support (#33044) 2025-06-19 05:19:07 +00:00
task_queue.rs Use strum to iterate through enum variants and get their names (#35933) 2025-03-13 12:00:31 +00:00
task_source.rs Initial IndexedDB Support (#33044) 2025-06-19 05:19:07 +00:00
test.rs script: Refactor dom/headers to match spec better (#36943) 2025-05-21 19:07:32 +00:00
textinput.rs Send synthetic keydown/keyup at ime_insert_text (#37175) 2025-05-30 02:06:15 +00:00
timers.rs Move CSP code into one entrypoint (#37604) 2025-06-24 08:50:30 +00:00
unminify.rs
webdriver_handlers.rs constellation: Eliminate long-standing inactive code path for WebDriverData (#38221) 2025-07-23 06:50:20 +00:00
window_named_properties.rs