From cf7b775709e78e954d3bb293b24a160ad6cbfb34 Mon Sep 17 00:00:00 2001 From: Shannon Booth Date: Tue, 4 Feb 2025 15:25:19 +1300 Subject: [PATCH] LibWeb/URLPattern: Implement the URLPattern IDL getters These simply return the compiled URLPattern pattern strings for each component, and whether any of the components contained any regexp groups. --- Libraries/LibWeb/URLPattern/URLPattern.cpp | 67 ++++++++++++++++++++++ Libraries/LibWeb/URLPattern/URLPattern.h | 16 ++++++ Libraries/LibWeb/URLPattern/URLPattern.idl | 18 +++--- 3 files changed, 92 insertions(+), 9 deletions(-) diff --git a/Libraries/LibWeb/URLPattern/URLPattern.cpp b/Libraries/LibWeb/URLPattern/URLPattern.cpp index e077df88227..9e8cd4b7a22 100644 --- a/Libraries/LibWeb/URLPattern/URLPattern.cpp +++ b/Libraries/LibWeb/URLPattern/URLPattern.cpp @@ -43,4 +43,71 @@ Optional URLPattern::exec(URLPatternInput const&, Optional exec(URLPatternInput const&, Optional const&) const; + String const& protocol() const; + String const& username() const; + String const& password() const; + String const& hostname() const; + String const& port() const; + String const& pathname() const; + String const& search() const; + String const& hash() const; + + bool has_reg_exp_groups() const; + virtual ~URLPattern() override; protected: virtual void initialize(JS::Realm&) override; explicit URLPattern(JS::Realm&); + +private: + // https://urlpattern.spec.whatwg.org/#ref-for-url-pattern%E2%91%A0 + // Each URLPattern has an associated URL pattern, a URL pattern. + URL::Pattern::Pattern m_url_pattern; }; } diff --git a/Libraries/LibWeb/URLPattern/URLPattern.idl b/Libraries/LibWeb/URLPattern/URLPattern.idl index 7553e5efdac..c06f29d0d24 100644 --- a/Libraries/LibWeb/URLPattern/URLPattern.idl +++ b/Libraries/LibWeb/URLPattern/URLPattern.idl @@ -10,16 +10,16 @@ interface URLPattern { URLPatternResult? exec(optional URLPatternInput input = {}, optional USVString baseURL); - [FIXME] readonly attribute USVString protocol; - [FIXME] readonly attribute USVString username; - [FIXME] readonly attribute USVString password; - [FIXME] readonly attribute USVString hostname; - [FIXME] readonly attribute USVString port; - [FIXME] readonly attribute USVString pathname; - [FIXME] readonly attribute USVString search; - [FIXME] readonly attribute USVString hash; + readonly attribute USVString protocol; + readonly attribute USVString username; + readonly attribute USVString password; + readonly attribute USVString hostname; + readonly attribute USVString port; + readonly attribute USVString pathname; + readonly attribute USVString search; + readonly attribute USVString hash; - [FIXME] readonly attribute boolean hasRegExpGroups; + readonly attribute boolean hasRegExpGroups; }; // https://urlpattern.spec.whatwg.org/#dictdef-urlpatterninit