servo/components/script_bindings/webidls/HTMLScriptElement.webidl
Tim van der Lippe 4164f76769
Implement all trusted sinks in HTMLScriptElement (#36668)
As a follow-up to the recent introduction of `script.src`
as trusted sink, this PR refactors machinery to also
support `TrustedScript`. In doing so, all trusted sinks
in `HTMLScriptElement` are now covered.

Instead of calling the callbacks in `policy.createX`,
we now have a `TrustedType` enum that specifies which callback
to invoke. Unfortunately we still have the `USVString` vs
`DOMString` problem, which is why we need to `.map` twice
to retrieve the backing `String` and avoid two different
types.

Additionally, I saw that `script.text` should have called
the "String replace all" algorithm rather than setting the
child contents. So that's also now fixed.

Part of #36258
Requires servo/html5ever#608

Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>

Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
2025-05-03 08:35:46 +00:00

44 lines
1.4 KiB
Text

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
// https://html.spec.whatwg.org/multipage/#htmlscriptelement
[Exposed=Window]
interface HTMLScriptElement : HTMLElement {
[HTMLConstructor] constructor();
[CEReactions, SetterThrows]
attribute (TrustedScriptURL or USVString) src;
[CEReactions]
attribute DOMString type;
[CEReactions]
attribute boolean noModule;
[CEReactions]
attribute DOMString charset;
[CEReactions]
attribute boolean async;
[CEReactions]
attribute boolean defer;
[CEReactions]
attribute DOMString? crossOrigin;
[CEReactions, SetterThrows]
attribute (TrustedScript or DOMString) innerText;
[CEReactions, Pure, SetterThrows]
attribute (TrustedScript or DOMString) text;
[CEReactions, SetterThrows]
attribute (TrustedScript or DOMString)? textContent;
[CEReactions]
attribute DOMString integrity;
[CEReactions]
attribute DOMString referrerPolicy;
// also has obsolete members
};
// https://html.spec.whatwg.org/multipage/#HTMLScriptElement-partial
partial interface HTMLScriptElement {
[CEReactions]
attribute DOMString event;
[CEReactions]
attribute DOMString htmlFor;
};