-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
LibWeb/URLPattern: Add initial stub for URLPattern interface
- Loading branch information
1 parent
3db869c
commit b19ead5
Showing
9 changed files
with
146 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
/* | ||
* Copyright (c) 2025, Shannon Booth <[email protected]> | ||
* | ||
* SPDX-License-Identifier: BSD-2-Clause | ||
*/ | ||
|
||
#include <LibWeb/Bindings/Intrinsics.h> | ||
#include <LibWeb/Bindings/URLPatternPrototype.h> | ||
#include <LibWeb/URLPattern/URLPattern.h> | ||
#include <LibWeb/WebIDL/ExceptionOr.h> | ||
|
||
namespace Web::URLPattern { | ||
|
||
GC_DEFINE_ALLOCATOR(URLPattern); | ||
|
||
URLPattern::URLPattern(JS::Realm& realm) | ||
: PlatformObject(realm) | ||
{ | ||
} | ||
|
||
URLPattern::~URLPattern() = default; | ||
|
||
void URLPattern::initialize(JS::Realm& realm) | ||
{ | ||
Base::initialize(realm); | ||
WEB_SET_PROTOTYPE_FOR_INTERFACE(URLPattern); | ||
} | ||
|
||
WebIDL::ExceptionOr<GC::Ref<URLPattern>> URLPattern::construct_impl(JS::Realm& realm, URLPatternInput const&, String const&, URLPatternOptions const&) | ||
{ | ||
return realm.create<URLPattern>(realm); | ||
} | ||
|
||
WebIDL::ExceptionOr<GC::Ref<URLPattern>> URLPattern::construct_impl(JS::Realm& realm, URLPatternInput const&, URLPatternOptions const&) | ||
{ | ||
return realm.create<URLPattern>(realm); | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
/* | ||
* Copyright (c) 2025, Shannon Booth <[email protected]> | ||
* | ||
* SPDX-License-Identifier: BSD-2-Clause | ||
*/ | ||
|
||
#pragma once | ||
|
||
#include <AK/String.h> | ||
#include <LibURL/Pattern/Init.h> | ||
#include <LibURL/Pattern/Pattern.h> | ||
#include <LibWeb/Bindings/PlatformObject.h> | ||
|
||
namespace Web::URLPattern { | ||
|
||
using URLPatternInit = URL::Pattern::Init; | ||
using URLPatternInput = URL::Pattern::Input; | ||
using URLPatternOptions = URL::Pattern::Options; | ||
|
||
// https://urlpattern.spec.whatwg.org/#urlpattern | ||
class URLPattern : public Bindings::PlatformObject { | ||
WEB_PLATFORM_OBJECT(URLPattern, Bindings::PlatformObject); | ||
GC_DECLARE_ALLOCATOR(URLPattern); | ||
|
||
public: | ||
static WebIDL::ExceptionOr<GC::Ref<URLPattern>> construct_impl(JS::Realm&, URLPatternInput const&, String const& base_url, URLPatternOptions const& = {}); | ||
static WebIDL::ExceptionOr<GC::Ref<URLPattern>> construct_impl(JS::Realm&, URLPatternInput const&, URLPatternOptions const& = {}); | ||
|
||
virtual ~URLPattern() override; | ||
|
||
protected: | ||
virtual void initialize(JS::Realm&) override; | ||
|
||
explicit URLPattern(JS::Realm&); | ||
}; | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
typedef (USVString or URLPatternInit) URLPatternInput; | ||
|
||
// https://urlpattern.spec.whatwg.org/#urlpattern | ||
[Exposed=(Window,Worker)] | ||
interface URLPattern { | ||
constructor(URLPatternInput input, USVString baseURL, optional URLPatternOptions options = {}); | ||
constructor(optional URLPatternInput input = {}, optional URLPatternOptions options = {}); | ||
|
||
[FIXME] boolean test(optional URLPatternInput input = {}, optional USVString baseURL); | ||
|
||
[FIXME] 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; | ||
|
||
[FIXME] readonly attribute boolean hasRegExpGroups; | ||
}; | ||
|
||
// https://urlpattern.spec.whatwg.org/#dictdef-urlpatterninit | ||
dictionary URLPatternInit { | ||
USVString protocol; | ||
USVString username; | ||
USVString password; | ||
USVString hostname; | ||
USVString port; | ||
USVString pathname; | ||
USVString search; | ||
USVString hash; | ||
USVString baseURL; | ||
}; | ||
|
||
// https://urlpattern.spec.whatwg.org/#dictdef-urlpatternoptions | ||
dictionary URLPatternOptions { | ||
boolean ignoreCase = false; | ||
}; | ||
|
||
// https://urlpattern.spec.whatwg.org/#dictdef-urlpatternresult | ||
dictionary URLPatternResult { | ||
sequence<URLPatternInput> inputs; | ||
|
||
URLPatternComponentResult protocol; | ||
URLPatternComponentResult username; | ||
URLPatternComponentResult password; | ||
URLPatternComponentResult hostname; | ||
URLPatternComponentResult port; | ||
URLPatternComponentResult pathname; | ||
URLPatternComponentResult search; | ||
URLPatternComponentResult hash; | ||
}; | ||
|
||
// https://urlpattern.spec.whatwg.org/#dictdef-urlpatterncomponentresult | ||
dictionary URLPatternComponentResult { | ||
USVString input; | ||
record<USVString, (USVString or undefined)> groups; | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -390,6 +390,7 @@ TypeError | |
UIEvent | ||
URIError | ||
URL | ||
URLPattern | ||
URLSearchParams | ||
Uint16Array | ||
Uint32Array | ||
|