/* * Copyright (c) 2021, Idan Horowitz * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include namespace Web::URL { struct QueryParam { String name; String value; }; ErrorOr url_encode(Vector const&, AK::URL::PercentEncodeSet); ErrorOr> url_decode(StringView); class URLSearchParams : public Bindings::PlatformObject { WEB_PLATFORM_OBJECT(URLSearchParams, Bindings::PlatformObject); public: static WebIDL::ExceptionOr> create(JS::Realm&, Vector list); static WebIDL::ExceptionOr> construct_impl(JS::Realm&, Variant>, OrderedHashMap, String> const& init); virtual ~URLSearchParams() override; size_t size() const; WebIDL::ExceptionOr append(String const& name, String const& value); WebIDL::ExceptionOr delete_(String const& name); Optional get(String const& name); WebIDL::ExceptionOr> get_all(String const& name); bool has(String const& name); WebIDL::ExceptionOr set(String const& name, String const& value); WebIDL::ExceptionOr sort(); WebIDL::ExceptionOr to_string() const; using ForEachCallback = Function(String const&, String const&)>; JS::ThrowCompletionOr for_each(ForEachCallback); private: friend class URL; friend class URLSearchParamsIterator; URLSearchParams(JS::Realm&, Vector list); virtual JS::ThrowCompletionOr initialize(JS::Realm&) override; virtual void visit_edges(Cell::Visitor&) override; WebIDL::ExceptionOr update(); Vector m_list; JS::GCPtr m_url; }; }