LibWeb: Add the URL::href attribute and URL::to_json method

This commit is contained in:
Idan Horowitz 2021-09-14 00:13:32 +03:00 committed by Andreas Kling
parent e6abc1b44e
commit 1841fbd3e4
Notes: sideshowbarker 2024-07-18 03:59:17 +09:00
3 changed files with 38 additions and 2 deletions

View file

@ -44,4 +44,35 @@ DOM::ExceptionOr<NonnullRefPtr<URL>> URL::create_with_global_object(Bindings::Wi
return result_url;
}
String URL::href() const
{
// return the serialization of thiss URL.
return m_url.serialize();
}
String URL::to_json() const
{
// return the serialization of thiss URL.
return m_url.serialize();
}
DOM::ExceptionOr<void> URL::set_href(String const& href)
{
// 1. Let parsedURL be the result of running the basic URL parser on the given value.
AK::URL parsed_url = href;
// 2. If parsedURL is failure, then throw a TypeError.
if (!parsed_url.is_valid())
return DOM::SimpleException { DOM::SimpleExceptionType::TypeError, "Invalid URL" };
// 3. Set thiss URL to parsedURL.
m_url = move(parsed_url);
// 4. Empty thiss query objects list.
m_query->m_list.clear();
// 5. Let query be thiss URLs query.
auto& query = m_url.query();
// 6. If query is non-null, then set thiss query objects list to the result of parsing query.
if (!query.is_null())
m_query->m_list = url_decode(query);
return {};
}
}

View file

@ -28,6 +28,11 @@ public:
static DOM::ExceptionOr<NonnullRefPtr<URL>> create_with_global_object(Bindings::WindowObject&, const String& url, const String& base);
String href() const;
DOM::ExceptionOr<void> set_href(String const&);
String to_json() const;
void set_query(Badge<URLSearchParams>, String query) { m_url.set_query(move(query)); }
private:

View file

@ -1,7 +1,7 @@
interface URL {
constructor(USVString url, optional USVString base);
// TODO: stringifier attribute USVString href;
stringifier attribute USVString href;
// TODO: readonly attribute USVString origin;
// TODO: attribute USVString protocol;
// TODO: attribute USVString username;
@ -14,5 +14,5 @@ interface URL {
// TODO: [SameObject] readonly attribute URLSearchParams searchParams;
// TODO: attribute USVString hash;
// TODO: USVString toJSON();
USVString toJSON();
};