diff options
author | Luke Wilde <lukew@serenityos.org> | 2021-09-26 15:24:41 +0100 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2021-09-26 18:59:56 +0200 |
commit | f6b24a72ee60be994917d941e30c4fe7ccccfee6 (patch) | |
tree | 201c0b4dd3604c0bab2d2f8210d77de7df9b6bf2 /Userland/Libraries/LibWeb/HTML/DOMStringMap.h | |
parent | 37347cbcb64e20300155df4168412f58f33f07c6 (diff) | |
download | serenity-f6b24a72ee60be994917d941e30c4fe7ccccfee6.zip |
LibWeb: Add support for HTMLOrSVGElement.dataset
Diffstat (limited to 'Userland/Libraries/LibWeb/HTML/DOMStringMap.h')
-rw-r--r-- | Userland/Libraries/LibWeb/HTML/DOMStringMap.h | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/Userland/Libraries/LibWeb/HTML/DOMStringMap.h b/Userland/Libraries/LibWeb/HTML/DOMStringMap.h new file mode 100644 index 0000000000..a29c85faa4 --- /dev/null +++ b/Userland/Libraries/LibWeb/HTML/DOMStringMap.h @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2021, Luke Wilde <lukew@serenityos.org> + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +#include <AK/RefCounted.h> +#include <AK/Weakable.h> +#include <LibWeb/Bindings/Wrappable.h> +#include <LibWeb/Forward.h> + +namespace Web::HTML { + +// https://html.spec.whatwg.org/multipage/dom.html#domstringmap +class DOMStringMap final + : public RefCounted<DOMStringMap> + , public Weakable<DOMStringMap> + , public Bindings::Wrappable { +public: + using WrapperType = Bindings::DOMStringMapWrapper; + + static NonnullRefPtr<DOMStringMap> create(DOM::Element& associated_element) + { + return adopt_ref(*new DOMStringMap(associated_element)); + } + + virtual ~DOMStringMap() override; + + Vector<String> supported_property_names() const; + + String determine_value_of_named_property(String const&) const; + + DOM::ExceptionOr<void> set_value_of_new_named_property(String const&, String const&); + DOM::ExceptionOr<void> set_value_of_existing_named_property(String const&, String const&); + + bool delete_existing_named_property(String const&); + +private: + DOMStringMap(DOM::Element&); + + struct NameValuePair { + String name; + String value; + }; + + Vector<NameValuePair> get_name_value_pairs() const; + + // https://html.spec.whatwg.org/multipage/dom.html#concept-domstringmap-element + NonnullRefPtr<DOM::Element> m_associated_element; +}; + +} |