script: Support decomposing ShadowRoot from mozjs HandleValue (#38984)

- Add `ShadowRoot` to `JSValue` to avoid
`WebDriverJSError::UnknownType`, and
`JavaScriptEvaluationError::SerializationError` when execute JS from
embedder.
- Add unit test.
- Move [is_detached](https://w3c.github.io/webdriver/#dfn-is-detached)
to `fn is_detached` to be reused.
- Other random simplification.

Testing: WebDriver conformance tests.

---------

Signed-off-by: Euclid Ye <euclid.ye@huawei.com>
This commit is contained in:
Euclid Ye 2025-08-28 12:31:06 +08:00 committed by GitHub
parent 5308228436
commit 3ac226e841
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
12 changed files with 43 additions and 39 deletions

View file

@ -1282,7 +1282,7 @@ impl Node {
pub(crate) fn summarize(&self, can_gc: CanGc) -> NodeInfo {
let USVString(base_uri) = self.BaseURI();
let node_type = self.NodeType();
let pipeline = self.owner_document().window().pipeline_id();
let pipeline = self.owner_window().pipeline_id();
let maybe_shadow_root = self.downcast::<ShadowRoot>();
let shadow_root_mode = maybe_shadow_root