mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 02:17:34 +00:00
LibWeb: Add the URL::href attribute and URL::to_json method
This commit is contained in:
parent
e6abc1b44e
commit
1841fbd3e4
3 changed files with 38 additions and 2 deletions
|
@ -44,4 +44,35 @@ DOM::ExceptionOr<NonnullRefPtr<URL>> URL::create_with_global_object(Bindings::Wi
|
||||||
return result_url;
|
return result_url;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String URL::href() const
|
||||||
|
{
|
||||||
|
// return the serialization of this’s URL.
|
||||||
|
return m_url.serialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
String URL::to_json() const
|
||||||
|
{
|
||||||
|
// return the serialization of this’s 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 this’s URL to parsedURL.
|
||||||
|
m_url = move(parsed_url);
|
||||||
|
// 4. Empty this’s query object’s list.
|
||||||
|
m_query->m_list.clear();
|
||||||
|
// 5. Let query be this’s URL’s query.
|
||||||
|
auto& query = m_url.query();
|
||||||
|
// 6. If query is non-null, then set this’s query object’s list to the result of parsing query.
|
||||||
|
if (!query.is_null())
|
||||||
|
m_query->m_list = url_decode(query);
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,6 +28,11 @@ public:
|
||||||
|
|
||||||
static DOM::ExceptionOr<NonnullRefPtr<URL>> create_with_global_object(Bindings::WindowObject&, const String& url, const String& base);
|
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)); }
|
void set_query(Badge<URLSearchParams>, String query) { m_url.set_query(move(query)); }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
interface URL {
|
interface URL {
|
||||||
constructor(USVString url, optional USVString base);
|
constructor(USVString url, optional USVString base);
|
||||||
|
|
||||||
// TODO: stringifier attribute USVString href;
|
stringifier attribute USVString href;
|
||||||
// TODO: readonly attribute USVString origin;
|
// TODO: readonly attribute USVString origin;
|
||||||
// TODO: attribute USVString protocol;
|
// TODO: attribute USVString protocol;
|
||||||
// TODO: attribute USVString username;
|
// TODO: attribute USVString username;
|
||||||
|
@ -14,5 +14,5 @@ interface URL {
|
||||||
// TODO: [SameObject] readonly attribute URLSearchParams searchParams;
|
// TODO: [SameObject] readonly attribute URLSearchParams searchParams;
|
||||||
// TODO: attribute USVString hash;
|
// TODO: attribute USVString hash;
|
||||||
|
|
||||||
// TODO: USVString toJSON();
|
USVString toJSON();
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue