/* * Copyright (c) 2021, Idan Horowitz * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include namespace Web::URL { struct QueryParam { DeprecatedString name; DeprecatedString value; }; DeprecatedString url_encode(Vector const&, AK::URL::PercentEncodeSet); Vector 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, DeprecatedString> const& init); virtual ~URLSearchParams() override; void append(DeprecatedString const& name, DeprecatedString const& value); void delete_(DeprecatedString const& name); DeprecatedString get(DeprecatedString const& name); Vector get_all(DeprecatedString const& name); bool has(DeprecatedString const& name); void set(DeprecatedString const& name, DeprecatedString const& value); void sort(); DeprecatedString to_deprecated_string() const; using ForEachCallback = Function(DeprecatedString const&, DeprecatedString 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; void update(); Vector m_list; JS::GCPtr m_url; }; }