servo/components/script_bindings/webidls/URLPattern.webidl
Simon Wülker 517f99e067
Start implementing the URLPattern API (#36144)
* Start working on a basic URLPattern implementation

This is API part of Interop 2025, so we should definitely support it!

This change implements the basic workflow for parsing
and compiling URL patterns. Parts of it are stubbed out and will be
implemented later.

For now the API is preference-gated behind "dom_urlpattern_enabled".

Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>

* Preference-gate the URLPattern API

Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>

* Update WPT expectations

Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>

* Fix full wildcard value (Should be ".*" not "*")

Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>

---------

Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
2025-03-27 10:39:57 +00:00

62 lines
1.9 KiB
Text

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
// https://urlpattern.spec.whatwg.org/#urlpattern
typedef /* USVString or */ URLPatternInit URLPatternInput;
[Exposed=(Window,Worker), Pref="dom_urlpattern_enabled"]
interface URLPattern {
// constructor(URLPatternInput input, USVString baseURL, optional URLPatternOptions options = {});
[Throws] constructor(optional URLPatternInput input = {}, optional URLPatternOptions options = {});
// boolean test(optional URLPatternInput input = {}, optional USVString baseURL);
// URLPatternResult? exec(optional URLPatternInput input = {}, optional USVString baseURL);
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;
readonly attribute boolean hasRegExpGroups;
};
dictionary URLPatternInit {
USVString protocol;
USVString username;
USVString password;
USVString hostname;
USVString port;
USVString pathname;
USVString search;
USVString hash;
USVString baseURL;
};
dictionary URLPatternOptions {
boolean ignoreCase = false;
};
// dictionary URLPatternResult {
// sequence<URLPatternInput> inputs;
// URLPatternComponentResult protocol;
// URLPatternComponentResult username;
// URLPatternComponentResult password;
// URLPatternComponentResult hostname;
// URLPatternComponentResult port;
// URLPatternComponentResult pathname;
// URLPatternComponentResult search;
// URLPatternComponentResult hash;
// };
// dictionary URLPatternComponentResult {
// USVString input;
// record<USVString, (USVString or undefined)> groups;
// };