feat(script): add Supports() to htmlscriptelement (#37313)

Add static method `Supports` to `HTMLScriptElement`.

Part of #37262
Testing: relative WPT tests should become `PASS`

Signed-off-by: Jason Tsai <git@pews.dev>
This commit is contained in:
Jason Tsai 2025-06-07 16:00:02 +09:00 committed by GitHub
parent 352e4bfcf1
commit 47f9fbd8c7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 10 additions and 21 deletions

View file

@ -70,6 +70,7 @@ use crate::dom::performanceresourcetiming::InitiatorType;
use crate::dom::trustedscript::TrustedScript;
use crate::dom::trustedscripturl::TrustedScriptURL;
use crate::dom::virtualmethods::VirtualMethods;
use crate::dom::window::Window;
use crate::fetch::create_a_potential_cors_request;
use crate::network_listener::{self, NetworkListener, PreInvoke, ResourceTimingListener};
use crate::realms::enter_realm;
@ -1526,6 +1527,13 @@ impl HTMLScriptElementMethods<crate::DomTypeHolder> for HTMLScriptElement {
.SetTextContent(Some(DOMString::from(value)), can_gc);
Ok(())
}
/// <https://html.spec.whatwg.org/multipage/#dom-script-supports>
fn Supports(_window: &Window, type_: DOMString) -> bool {
// The type argument has to exactly match these values,
// we do not perform an ASCII case-insensitive match.
matches!(type_.str(), "classic" | "module" | "importmap")
}
}
#[derive(Clone, Copy)]

View file

@ -32,6 +32,8 @@ interface HTMLScriptElement : HTMLElement {
[CEReactions]
attribute DOMString referrerPolicy;
static boolean supports(DOMString type);
// also has obsolete members
};

View file

@ -6913,18 +6913,12 @@
[HTMLScriptElement interface: attribute fetchPriority]
expected: FAIL
[HTMLScriptElement interface: operation supports(DOMString)]
expected: FAIL
[HTMLScriptElement interface: document.createElement("script") must inherit property "blocking" with the proper type]
expected: FAIL
[HTMLScriptElement interface: document.createElement("script") must inherit property "fetchPriority" with the proper type]
expected: FAIL
[HTMLScriptElement interface: calling supports(DOMString) on document.createElement("script") with too few arguments must throw TypeError]
expected: FAIL
[HTMLMarqueeElement interface: existence and properties of interface object]
expected: FAIL

View file

@ -1,15 +0,0 @@
[script-supports.html]
[Type of HTMLScriptElement.supports is function]
expected: FAIL
[HTMLScriptElement.supports resurns true for 'classic']
expected: FAIL
[HTMLScriptElement.supports resurns true for 'module']
expected: FAIL
[HTMLScriptElement.supports returns false for JavaScript MIME types]
expected: FAIL
[HTMLScriptElement.supports returns false for unsupported types]
expected: FAIL