mirror of
https://github.com/zebrajr/ladybird.git
synced 2025-12-06 00:19:53 +01:00
LibWeb: Add textContent attribute of HTMLScriptElement for TrustedTypes
This commit is contained in:
parent
f65dca1b53
commit
6b9c44390f
|
|
@ -678,6 +678,33 @@ WebIDL::ExceptionOr<void> HTMLScriptElement::set_src(TrustedTypes::TrustedScript
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// https://w3c.github.io/trusted-types/dist/spec/#the-textContent-idl-attribute
|
||||||
|
Variant<GC::Root<TrustedTypes::TrustedScript>, Utf16String, Empty> HTMLScriptElement::text_content() const
|
||||||
|
{
|
||||||
|
// 1. Return the result of running get text content with this.
|
||||||
|
return descendant_text_content();
|
||||||
|
}
|
||||||
|
|
||||||
|
// https://w3c.github.io/trusted-types/dist/spec/#the-textContent-idl-attribute
|
||||||
|
WebIDL::ExceptionOr<void> HTMLScriptElement::set_text_content(TrustedTypes::TrustedScriptOrString text)
|
||||||
|
{
|
||||||
|
// 1. Let value be the result of calling Get Trusted Type compliant string with
|
||||||
|
// TrustedScript, this’s relevant global object, the given value, HTMLScriptElement textContent, and script.
|
||||||
|
auto const value = TRY(TrustedTypes::get_trusted_type_compliant_string(
|
||||||
|
TrustedTypes::TrustedTypeName::TrustedScript,
|
||||||
|
HTML::relevant_global_object(*this),
|
||||||
|
text,
|
||||||
|
TrustedTypes::InjectionSink::HTMLScriptElementtextContent,
|
||||||
|
TrustedTypes::Script.to_string()));
|
||||||
|
|
||||||
|
// 2. Set this’s script text value to value.
|
||||||
|
m_script_text = value;
|
||||||
|
|
||||||
|
// 3. Run set text content with this and value.
|
||||||
|
string_replace_all(value);
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
// https://html.spec.whatwg.org/multipage/scripting.html#dom-script-async
|
// https://html.spec.whatwg.org/multipage/scripting.html#dom-script-async
|
||||||
bool HTMLScriptElement::async() const
|
bool HTMLScriptElement::async() const
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -65,6 +65,9 @@ public:
|
||||||
TrustedTypes::TrustedScriptURLOrString src() const { return Utf16String::from_utf8(get_attribute_value(AttributeNames::src)); }
|
TrustedTypes::TrustedScriptURLOrString src() const { return Utf16String::from_utf8(get_attribute_value(AttributeNames::src)); }
|
||||||
WebIDL::ExceptionOr<void> set_src(TrustedTypes::TrustedScriptURLOrString);
|
WebIDL::ExceptionOr<void> set_src(TrustedTypes::TrustedScriptURLOrString);
|
||||||
|
|
||||||
|
Variant<GC::Root<TrustedTypes::TrustedScript>, Utf16String, Empty> text_content() const;
|
||||||
|
WebIDL::ExceptionOr<void> set_text_content(TrustedTypes::TrustedScriptOrString);
|
||||||
|
|
||||||
[[nodiscard]] bool async() const;
|
[[nodiscard]] bool async() const;
|
||||||
void set_async(bool);
|
void set_async(bool);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ interface HTMLScriptElement : HTMLElement {
|
||||||
// https://www.w3.org/TR/trusted-types/#enforcement-in-scripts
|
// https://www.w3.org/TR/trusted-types/#enforcement-in-scripts
|
||||||
[CEReactions] attribute (TrustedScript or Utf16DOMString) text;
|
[CEReactions] attribute (TrustedScript or Utf16DOMString) text;
|
||||||
[CEReactions] attribute (TrustedScriptURL or Utf16USVString) src;
|
[CEReactions] attribute (TrustedScriptURL or Utf16USVString) src;
|
||||||
|
[CEReactions] attribute (TrustedScript or Utf16DOMString)? textContent;
|
||||||
|
|
||||||
static boolean supports(DOMString type);
|
static boolean supports(DOMString type);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,16 +16,17 @@ namespace Web::TrustedTypes {
|
||||||
__ENUMERATE_INJECTION_SINKS(Element##attribute_name, "Element " #attribute_name)
|
__ENUMERATE_INJECTION_SINKS(Element##attribute_name, "Element " #attribute_name)
|
||||||
|
|
||||||
// https://w3c.github.io/trusted-types/dist/spec/#injection-sink
|
// https://w3c.github.io/trusted-types/dist/spec/#injection-sink
|
||||||
#define ENUMERATE_INJECTION_SINKS \
|
#define ENUMERATE_INJECTION_SINKS \
|
||||||
__ENUMERATE_INJECTION_SINKS(Documentwrite, "Document write") \
|
__ENUMERATE_INJECTION_SINKS(Documentwrite, "Document write") \
|
||||||
__ENUMERATE_INJECTION_SINKS(Documentwriteln, "Document writeln") \
|
__ENUMERATE_INJECTION_SINKS(Documentwriteln, "Document writeln") \
|
||||||
__ENUMERATE_INJECTION_SINKS(Function, "Function") \
|
__ENUMERATE_INJECTION_SINKS(Function, "Function") \
|
||||||
__ENUMERATE_INJECTION_SINKS(HTMLIFrameElementsrcdoc, "HTMLIFrameElement srcdoc") \
|
__ENUMERATE_INJECTION_SINKS(HTMLIFrameElementsrcdoc, "HTMLIFrameElement srcdoc") \
|
||||||
__ENUMERATE_INJECTION_SINKS(HTMLScriptElementsrc, "HTMLScriptElement src") \
|
__ENUMERATE_INJECTION_SINKS(HTMLScriptElementsrc, "HTMLScriptElement src") \
|
||||||
__ENUMERATE_INJECTION_SINKS(HTMLScriptElementtext, "HTMLScriptElement text") \
|
__ENUMERATE_INJECTION_SINKS(HTMLScriptElementtext, "HTMLScriptElement text") \
|
||||||
__ENUMERATE_INJECTION_SINKS(Locationhref, "Location href") \
|
__ENUMERATE_INJECTION_SINKS(HTMLScriptElementtextContent, "HTMLScriptElement textContent") \
|
||||||
__ENUMERATE_INJECTION_SINKS(SVGScriptElementhref, "SVGScriptElement href") \
|
__ENUMERATE_INJECTION_SINKS(Locationhref, "Location href") \
|
||||||
ENUMERATE_GLOBAL_EVENT_HANDLERS(EVENT_HANDLERS_INJECTION_SINKS) \
|
__ENUMERATE_INJECTION_SINKS(SVGScriptElementhref, "SVGScriptElement href") \
|
||||||
|
ENUMERATE_GLOBAL_EVENT_HANDLERS(EVENT_HANDLERS_INJECTION_SINKS) \
|
||||||
ENUMERATE_WINDOW_EVENT_HANDLERS(EVENT_HANDLERS_INJECTION_SINKS)
|
ENUMERATE_WINDOW_EVENT_HANDLERS(EVENT_HANDLERS_INJECTION_SINKS)
|
||||||
|
|
||||||
enum class InjectionSink {
|
enum class InjectionSink {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user