mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 08:48:11 +00:00
LibWeb: Restore Storage as a legacy platform object
This commit is contained in:
parent
54f58e2662
commit
57d28c57f7
2 changed files with 46 additions and 6 deletions
|
@ -1,5 +1,6 @@
|
|||
/*
|
||||
* Copyright (c) 2022, Andreas Kling <kling@serenityos.org>
|
||||
* Copyright (c) 2023, Luke Wilde <lukew@serenityos.org>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
@ -16,7 +17,7 @@ WebIDL::ExceptionOr<JS::NonnullGCPtr<Storage>> Storage::create(JS::Realm& realm)
|
|||
}
|
||||
|
||||
Storage::Storage(JS::Realm& realm)
|
||||
: PlatformObject(realm)
|
||||
: Bindings::LegacyPlatformObject(realm)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -154,6 +155,28 @@ Vector<DeprecatedString> Storage::supported_property_names() const
|
|||
return m_map.keys();
|
||||
}
|
||||
|
||||
WebIDL::ExceptionOr<JS::Value> Storage::named_item_value(DeprecatedFlyString const& name) const
|
||||
{
|
||||
auto value = get_item(name);
|
||||
if (value.is_null())
|
||||
return JS::js_null();
|
||||
return JS::PrimitiveString::create(vm(), value);
|
||||
}
|
||||
|
||||
WebIDL::ExceptionOr<Bindings::LegacyPlatformObject::DidDeletionFail> Storage::delete_value(DeprecatedString const& name)
|
||||
{
|
||||
remove_item(name);
|
||||
return DidDeletionFail::NotRelevant;
|
||||
}
|
||||
|
||||
WebIDL::ExceptionOr<void> Storage::set_value_of_named_property(DeprecatedString const& key, JS::Value unconverted_value)
|
||||
{
|
||||
// NOTE: Since LegacyPlatformObject does not know the type of value, we must convert it ourselves.
|
||||
// The type of `value` is `DOMString`.
|
||||
auto value = TRY(unconverted_value.to_deprecated_string(vm()));
|
||||
return set_item(key, value);
|
||||
}
|
||||
|
||||
void Storage::dump() const
|
||||
{
|
||||
dbgln("Storage ({} key(s))", m_map.size());
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue