mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 17:07:34 +00:00
LibWeb: Port PlatformObject from ByteString
This commit is contained in:
parent
adb327d5d3
commit
1536cd05a7
2 changed files with 9 additions and 9 deletions
|
@ -12,13 +12,13 @@
|
||||||
|
|
||||||
namespace Web::Bindings {
|
namespace Web::Bindings {
|
||||||
|
|
||||||
#define WEB_PLATFORM_OBJECT(class_, base_class) \
|
#define WEB_PLATFORM_OBJECT(class_, base_class) \
|
||||||
JS_OBJECT(class_, base_class) \
|
JS_OBJECT(class_, base_class) \
|
||||||
virtual bool implements_interface(ByteString const& interface) const override \
|
virtual bool implements_interface(String const& interface) const override \
|
||||||
{ \
|
{ \
|
||||||
if (interface == #class_) \
|
if (interface == #class_) \
|
||||||
return true; \
|
return true; \
|
||||||
return Base::implements_interface(interface); \
|
return Base::implements_interface(interface); \
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://webidl.spec.whatwg.org/#dfn-platform-object
|
// https://webidl.spec.whatwg.org/#dfn-platform-object
|
||||||
|
@ -37,7 +37,7 @@ public:
|
||||||
|
|
||||||
// https://webidl.spec.whatwg.org/#implements
|
// https://webidl.spec.whatwg.org/#implements
|
||||||
// This is implemented by overrides that get generated by the WEB_PLATFORM_OBJECT macro.
|
// This is implemented by overrides that get generated by the WEB_PLATFORM_OBJECT macro.
|
||||||
[[nodiscard]] virtual bool implements_interface(ByteString const&) const { return false; }
|
[[nodiscard]] virtual bool implements_interface(String const&) const { return false; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
explicit PlatformObject(JS::Realm&, MayInterfereWithIndexedPropertyAccess = MayInterfereWithIndexedPropertyAccess::No);
|
explicit PlatformObject(JS::Realm&, MayInterfereWithIndexedPropertyAccess = MayInterfereWithIndexedPropertyAccess::No);
|
||||||
|
|
|
@ -165,7 +165,7 @@ JS::ThrowCompletionOr<ResolvedOverload> resolve_overload(JS::VM& vm, IDL::Effect
|
||||||
else if (value.is_object() && is<Bindings::PlatformObject>(value.as_object())
|
else if (value.is_object() && is<Bindings::PlatformObject>(value.as_object())
|
||||||
&& has_overload_with_argument_type_or_subtype_matching(overloads, i, [value](IDL::Type const& type) {
|
&& has_overload_with_argument_type_or_subtype_matching(overloads, i, [value](IDL::Type const& type) {
|
||||||
// - an interface type that V implements
|
// - an interface type that V implements
|
||||||
if (static_cast<Bindings::PlatformObject const&>(value.as_object()).implements_interface(type.name()))
|
if (static_cast<Bindings::PlatformObject const&>(value.as_object()).implements_interface(MUST(String::from_byte_string(type.name()))))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
// - object
|
// - object
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue