LibWeb: Port named_item_value from DeprecatedFlyString

This commit is contained in:
Shannon Booth 2023-10-08 13:16:50 +13:00 committed by Tim Flynn
parent c7cd6f2bef
commit b37aab1277
Notes: sideshowbarker 2024-07-16 22:26:05 +09:00
19 changed files with 33 additions and 36 deletions

View file

@ -2589,7 +2589,7 @@ JS::ThrowCompletionOr<Optional<JS::PropertyDescriptor>> @named_properties_class@
// 4. If the result of running the named property visibility algorithm with property name P and object object is true, then:
if (TRY(is_named_property_exposed_on_object({ &object }, property_name))) {
auto property_name_string = property_name.to_string();
auto property_name_string = MUST(FlyString::from_deprecated_fly_string(property_name.to_string()));
// 1. Let operation be the operation used to declare the named property getter.
// 2. Let value be an uninitialized variable.

View file

@ -62,7 +62,7 @@ JS::ThrowCompletionOr<Optional<JS::PropertyDescriptor>> LegacyPlatformObject::le
// 1. If the result of running the named property visibility algorithm with property name P and object O is true, then:
if (TRY(WebIDL::is_named_property_exposed_on_object({ this }, property_name))) {
// FIXME: It's unfortunate that this is done twice, once in is_named_property_exposed_on_object and here.
auto property_name_string = property_name.to_string();
auto property_name_string = MUST(FlyString::from_deprecated_fly_string(property_name.to_string()));
// 1. Let operation be the operation used to declare the named property getter.
// 2. Let value be an uninitialized variable.
@ -376,7 +376,7 @@ WebIDL::ExceptionOr<JS::Value> LegacyPlatformObject::item_value(size_t) const
return JS::js_undefined();
}
WebIDL::ExceptionOr<JS::Value> LegacyPlatformObject::named_item_value(DeprecatedFlyString const&) const
WebIDL::ExceptionOr<JS::Value> LegacyPlatformObject::named_item_value(FlyString const&) const
{
return JS::js_undefined();
}

View file

@ -38,7 +38,7 @@ public:
JS::ThrowCompletionOr<Optional<JS::PropertyDescriptor>> legacy_platform_object_get_own_property(JS::PropertyKey const&, IgnoreNamedProps ignore_named_props) const;
virtual WebIDL::ExceptionOr<JS::Value> item_value(size_t index) const;
virtual WebIDL::ExceptionOr<JS::Value> named_item_value(DeprecatedFlyString const& name) const;
virtual WebIDL::ExceptionOr<JS::Value> named_item_value(FlyString const& name) const;
virtual Vector<DeprecatedString> supported_property_names() const;
virtual bool is_supported_property_index(u32) const;

View file

@ -147,9 +147,9 @@ WebIDL::ExceptionOr<JS::Value> HTMLCollection::item_value(size_t index) const
return const_cast<Element*>(element);
}
WebIDL::ExceptionOr<JS::Value> HTMLCollection::named_item_value(DeprecatedFlyString const& index) const
WebIDL::ExceptionOr<JS::Value> HTMLCollection::named_item_value(FlyString const& index) const
{
auto* element = named_item(FlyString::from_deprecated_fly_string(index).release_value());
auto* element = named_item(index);
if (!element)
return JS::js_undefined();
return const_cast<Element*>(element);

View file

@ -45,7 +45,7 @@ public:
JS::MarkedVector<Element*> collect_matching_elements() const;
virtual WebIDL::ExceptionOr<JS::Value> item_value(size_t index) const override;
virtual WebIDL::ExceptionOr<JS::Value> named_item_value(DeprecatedFlyString const& name) const override;
virtual WebIDL::ExceptionOr<JS::Value> named_item_value(FlyString const& name) const override;
virtual Vector<DeprecatedString> supported_property_names() const override;
virtual bool is_supported_property_index(u32) const override;

View file

@ -327,7 +327,7 @@ WebIDL::ExceptionOr<JS::Value> NamedNodeMap::item_value(size_t index) const
return node;
}
WebIDL::ExceptionOr<JS::Value> NamedNodeMap::named_item_value(DeprecatedFlyString const& name) const
WebIDL::ExceptionOr<JS::Value> NamedNodeMap::named_item_value(FlyString const& name) const
{
auto const* node = get_named_item(name);
if (!node)

View file

@ -28,7 +28,7 @@ public:
virtual bool is_supported_property_index(u32 index) const override;
virtual Vector<DeprecatedString> supported_property_names() const override;
virtual WebIDL::ExceptionOr<JS::Value> item_value(size_t index) const override;
virtual WebIDL::ExceptionOr<JS::Value> named_item_value(DeprecatedFlyString const& name) const override;
virtual WebIDL::ExceptionOr<JS::Value> named_item_value(FlyString const& name) const override;
size_t length() const { return m_attributes.size(); }
bool is_empty() const { return m_attributes.is_empty(); }

View file

@ -193,9 +193,9 @@ WebIDL::ExceptionOr<Bindings::LegacyPlatformObject::DidDeletionFail> DOMStringMa
return DidDeletionFail::No;
}
WebIDL::ExceptionOr<JS::Value> DOMStringMap::named_item_value(DeprecatedFlyString const& name) const
WebIDL::ExceptionOr<JS::Value> DOMStringMap::named_item_value(FlyString const& name) const
{
return JS::PrimitiveString::create(vm(), determine_value_of_named_property(name));
return JS::PrimitiveString::create(vm(), determine_value_of_named_property(name.to_deprecated_fly_string()));
}
}

View file

@ -35,7 +35,7 @@ private:
virtual void visit_edges(Cell::Visitor&) override;
// ^LegacyPlatformObject
virtual WebIDL::ExceptionOr<JS::Value> named_item_value(DeprecatedFlyString const&) const override;
virtual WebIDL::ExceptionOr<JS::Value> named_item_value(FlyString const&) const override;
virtual Vector<DeprecatedString> supported_property_names() const override;
virtual bool supports_indexed_properties() const override { return false; }

View file

@ -75,7 +75,7 @@ JS::GCPtr<MimeType> MimeTypeArray::item(u32 index) const
}
// https://html.spec.whatwg.org/multipage/system-state.html#dom-mimetypearray-nameditem
JS::GCPtr<MimeType> MimeTypeArray::named_item(String const& name) const
JS::GCPtr<MimeType> MimeTypeArray::named_item(FlyString const& name) const
{
// 1. For each MimeType mimeType of this's relevant global object's PDF viewer mime type objects: if mimeType's type is name, then return mimeType.
auto& window = verify_cast<HTML::Window>(HTML::relevant_global_object(*this));
@ -98,10 +98,9 @@ WebIDL::ExceptionOr<JS::Value> MimeTypeArray::item_value(size_t index) const
return return_value.ptr();
}
WebIDL::ExceptionOr<JS::Value> MimeTypeArray::named_item_value(DeprecatedFlyString const& name) const
WebIDL::ExceptionOr<JS::Value> MimeTypeArray::named_item_value(FlyString const& name) const
{
auto converted_name = TRY_OR_THROW_OOM(vm(), String::from_deprecated_string(name));
auto return_value = named_item(converted_name);
auto return_value = named_item(name);
if (!return_value)
return JS::js_null();
return return_value.ptr();

View file

@ -19,7 +19,7 @@ public:
size_t length() const;
JS::GCPtr<MimeType> item(u32 index) const;
JS::GCPtr<MimeType> named_item(String const& name) const;
JS::GCPtr<MimeType> named_item(FlyString const& name) const;
private:
MimeTypeArray(JS::Realm&);
@ -29,7 +29,7 @@ private:
// ^Bindings::LegacyPlatformObject
virtual Vector<DeprecatedString> supported_property_names() const override;
virtual WebIDL::ExceptionOr<JS::Value> item_value(size_t index) const override;
virtual WebIDL::ExceptionOr<JS::Value> named_item_value(DeprecatedFlyString const& name) const override;
virtual WebIDL::ExceptionOr<JS::Value> named_item_value(FlyString const& name) const override;
virtual bool is_supported_property_index(u32) const override;
virtual bool supports_indexed_properties() const override { return true; }

View file

@ -98,7 +98,7 @@ JS::GCPtr<MimeType> Plugin::item(u32 index) const
return nullptr;
}
JS::GCPtr<MimeType> Plugin::named_item(String const& name) const
JS::GCPtr<MimeType> Plugin::named_item(FlyString const& name) const
{
// 1. For each MimeType mimeType of this's relevant global object's PDF viewer mime type objects: if mimeType's type is name, then return mimeType.
auto& window = verify_cast<HTML::Window>(HTML::relevant_global_object(*this));
@ -121,10 +121,9 @@ WebIDL::ExceptionOr<JS::Value> Plugin::item_value(size_t index) const
return return_value.ptr();
}
WebIDL::ExceptionOr<JS::Value> Plugin::named_item_value(DeprecatedFlyString const& name) const
WebIDL::ExceptionOr<JS::Value> Plugin::named_item_value(FlyString const& name) const
{
auto converted_name = TRY_OR_THROW_OOM(vm(), String::from_deprecated_string(name));
auto return_value = named_item(converted_name);
auto return_value = named_item(name);
if (!return_value)
return JS::js_null();
return return_value.ptr();

View file

@ -22,7 +22,7 @@ public:
String filename() const;
size_t length() const;
JS::GCPtr<MimeType> item(u32 index) const;
JS::GCPtr<MimeType> named_item(String const& name) const;
JS::GCPtr<MimeType> named_item(FlyString const& name) const;
private:
Plugin(JS::Realm&, String name);
@ -35,7 +35,7 @@ private:
// ^Bindings::LegacyPlatformObject
virtual Vector<DeprecatedString> supported_property_names() const override;
virtual WebIDL::ExceptionOr<JS::Value> item_value(size_t index) const override;
virtual WebIDL::ExceptionOr<JS::Value> named_item_value(DeprecatedFlyString const& name) const override;
virtual WebIDL::ExceptionOr<JS::Value> named_item_value(FlyString const& name) const override;
virtual bool is_supported_property_index(u32) const override;
virtual bool supports_indexed_properties() const override { return true; }

View file

@ -84,7 +84,7 @@ JS::GCPtr<Plugin> PluginArray::item(u32 index) const
}
// https://html.spec.whatwg.org/multipage/system-state.html#dom-pluginarray-nameditem
JS::GCPtr<Plugin> PluginArray::named_item(String const& name) const
JS::GCPtr<Plugin> PluginArray::named_item(FlyString const& name) const
{
// 1. For each Plugin plugin of this's relevant global object's PDF viewer plugin objects: if plugin's name is name, then return plugin.
auto& window = verify_cast<HTML::Window>(HTML::relevant_global_object(*this));
@ -107,10 +107,9 @@ WebIDL::ExceptionOr<JS::Value> PluginArray::item_value(size_t index) const
return return_value.ptr();
}
WebIDL::ExceptionOr<JS::Value> PluginArray::named_item_value(DeprecatedFlyString const& name) const
WebIDL::ExceptionOr<JS::Value> PluginArray::named_item_value(FlyString const& name) const
{
auto converted_name = TRY_OR_THROW_OOM(vm(), String::from_deprecated_string(name));
auto return_value = named_item(converted_name);
auto return_value = named_item(name);
if (!return_value)
return JS::js_null();
return return_value.ptr();

View file

@ -20,7 +20,7 @@ public:
void refresh() const;
size_t length() const;
JS::GCPtr<Plugin> item(u32 index) const;
JS::GCPtr<Plugin> named_item(String const& name) const;
JS::GCPtr<Plugin> named_item(FlyString const& name) const;
private:
PluginArray(JS::Realm&);
@ -30,7 +30,7 @@ private:
// ^Bindings::LegacyPlatformObject
virtual Vector<DeprecatedString> supported_property_names() const override;
virtual WebIDL::ExceptionOr<JS::Value> item_value(size_t index) const override;
virtual WebIDL::ExceptionOr<JS::Value> named_item_value(DeprecatedFlyString const& name) const override;
virtual WebIDL::ExceptionOr<JS::Value> named_item_value(FlyString const& name) const override;
virtual bool is_supported_property_index(u32) const override;
virtual bool supports_indexed_properties() const override { return true; }

View file

@ -157,7 +157,7 @@ Vector<DeprecatedString> Storage::supported_property_names() const
return names;
}
WebIDL::ExceptionOr<JS::Value> Storage::named_item_value(DeprecatedFlyString const& name) const
WebIDL::ExceptionOr<JS::Value> Storage::named_item_value(FlyString const& name) const
{
auto value = get_item(name);
if (!value.has_value())

View file

@ -37,7 +37,7 @@ private:
virtual void initialize(JS::Realm&) override;
// ^LegacyPlatformObject
virtual WebIDL::ExceptionOr<JS::Value> named_item_value(DeprecatedFlyString const&) const override;
virtual WebIDL::ExceptionOr<JS::Value> named_item_value(FlyString const&) const override;
virtual WebIDL::ExceptionOr<DidDeletionFail> delete_value(DeprecatedString const&) override;
virtual Vector<DeprecatedString> supported_property_names() const override;
virtual WebIDL::ExceptionOr<void> set_value_of_named_property(DeprecatedString const& key, JS::Value value) override;

View file

@ -1481,7 +1481,7 @@ Vector<DeprecatedString> Window::supported_property_names()
}
// https://html.spec.whatwg.org/#named-access-on-the-window-object
WebIDL::ExceptionOr<JS::Value> Window::named_item_value(DeprecatedFlyString const& name)
WebIDL::ExceptionOr<JS::Value> Window::named_item_value(FlyString const& name)
{
// To determine the value of a named property name in a Window object window, the user agent must return the value obtained using the following steps:
@ -1515,9 +1515,9 @@ WebIDL::ExceptionOr<JS::Value> Window::named_item_value(DeprecatedFlyString cons
// whose filter matches only named objects of window with the name name. (By definition, these will all be elements.)
return DOM::HTMLCollection::create(associated_document(), DOM::HTMLCollection::Scope::Descendants, [name](auto& element) -> bool {
if ((is<HTMLEmbedElement>(element) || is<HTMLFormElement>(element) || is<HTMLImageElement>(element) || is<HTMLObjectElement>(element))
&& (element.attribute(AttributeNames::name) == name.view()))
&& (element.attribute(AttributeNames::name) == name))
return true;
return element.attribute(AttributeNames::id) == name.view();
return element.attribute(AttributeNames::id) == name;
});
}

View file

@ -194,7 +194,7 @@ public:
[[nodiscard]] OrderedHashMap<String, JS::NonnullGCPtr<Navigable>> document_tree_child_navigable_target_name_property_set();
[[nodiscard]] Vector<DeprecatedString> supported_property_names();
[[nodiscard]] WebIDL::ExceptionOr<JS::Value> named_item_value(DeprecatedFlyString const&);
[[nodiscard]] WebIDL::ExceptionOr<JS::Value> named_item_value(FlyString const&);
private:
explicit Window(JS::Realm&);