From a73c082f36fb8939720a7d86cad486bbf349b83c Mon Sep 17 00:00:00 2001 From: Tete17 Date: Thu, 31 Jul 2025 00:55:34 +0200 Subject: [PATCH] LibWeb: Implement is_html method for TrustedTypePolicyFactory This is used to check the legitimacy of a TrustedHTML object. --- .../LibWeb/TrustedTypes/TrustedTypePolicyFactory.cpp | 8 ++++++++ Libraries/LibWeb/TrustedTypes/TrustedTypePolicyFactory.h | 2 ++ .../LibWeb/TrustedTypes/TrustedTypePolicyFactory.idl | 2 +- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/Libraries/LibWeb/TrustedTypes/TrustedTypePolicyFactory.cpp b/Libraries/LibWeb/TrustedTypes/TrustedTypePolicyFactory.cpp index c81379e0625..44ca95ba0af 100644 --- a/Libraries/LibWeb/TrustedTypes/TrustedTypePolicyFactory.cpp +++ b/Libraries/LibWeb/TrustedTypes/TrustedTypePolicyFactory.cpp @@ -15,6 +15,7 @@ #include #include #include +#include namespace Web::TrustedTypes { @@ -132,6 +133,13 @@ void TrustedTypePolicyFactory::initialize(JS::Realm& realm) Base::initialize(realm); } +// https://w3c.github.io/trusted-types/dist/spec/#dom-trustedtypepolicyfactory-ishtml +bool TrustedTypePolicyFactory::is_html(JS::Value value) +{ + // 1. Returns true if value is an instance of TrustedHTML and has an associated data value set, false otherwise. + return value.is_object() && is(value.as_object()); +} + // https://w3c.github.io/trusted-types/dist/spec/#abstract-opdef-get-trusted-type-data-for-attribute Optional get_trusted_type_data_for_attribute(String const& element, String const& attribute, Optional const& attribute_ns) { diff --git a/Libraries/LibWeb/TrustedTypes/TrustedTypePolicyFactory.h b/Libraries/LibWeb/TrustedTypes/TrustedTypePolicyFactory.h index 848b6274d34..d3f3bcca0d5 100644 --- a/Libraries/LibWeb/TrustedTypes/TrustedTypePolicyFactory.h +++ b/Libraries/LibWeb/TrustedTypes/TrustedTypePolicyFactory.h @@ -21,6 +21,8 @@ public: virtual ~TrustedTypePolicyFactory() override { } + bool is_html(JS::Value); + Optional get_attribute_type(String const& tag_name, String& attribute, Optional element_ns, Optional attr_ns); Optional get_property_type(String const& tag_name, String const& property, Optional element_ns); diff --git a/Libraries/LibWeb/TrustedTypes/TrustedTypePolicyFactory.idl b/Libraries/LibWeb/TrustedTypes/TrustedTypePolicyFactory.idl index b62b55532ea..9ea816b8d0a 100644 --- a/Libraries/LibWeb/TrustedTypes/TrustedTypePolicyFactory.idl +++ b/Libraries/LibWeb/TrustedTypes/TrustedTypePolicyFactory.idl @@ -3,7 +3,7 @@ interface TrustedTypePolicyFactory { [FIXME] TrustedTypePolicy createPolicy( DOMString policyName, optional TrustedTypePolicyOptions policyOptions = {}); - [FIXME] boolean isHTML(any value); + boolean isHTML(any value); [FIXME] boolean isScript(any value); [FIXME] boolean isScriptURL(any value); [FIXME] readonly attribute TrustedHTML emptyHTML;