diff --git a/spec.bs b/spec.bs
index 99fbd1b..b04b7c6 100644
--- a/spec.bs
+++ b/spec.bs
@@ -11,7 +11,6 @@ Markup Shorthands: markdown yes
spec:infra; type:dfn; text:list
spec:webidl; type:dfn; text:record
-spec:url; type:interface; text:URL
@@ -22,15 +21,6 @@ spec: ECMASCRIPT; urlPrefix: https://tc39.es/ecma262/
spec: URL; urlPrefix: https://url.spec.whatwg.org/
type: dfn
text: serialize an integer; url: #serialize-an-integer
- text: url; url: #concept-url
- text: scheme; for: url; url: #concept-url-scheme
- text: username; for: url; url: #concept-url-username
- text: password; for: url; url: #concept-url-password
- text: host; for: url; url: #concept-url-host
- text: port; for: url; url: #concept-url-port
- text: path; for: url; url: #concept-url-path
- text: query; for: url; url: #concept-url-query
- text: fragment; for: url; url: #concept-url-fragment
URL patterns
@@ -181,16 +171,15 @@ It can be constructed using a string for each component, or from a shorthand str
typedef (USVString or URLPatternInit) URLPatternInput;
-typedef (URLPatternInput or URL) URLPatternMatchInput;
[Exposed=(Window,Worker)]
interface URLPattern {
constructor(URLPatternInput input, USVString baseURL, optional URLPatternOptions options = {});
constructor(optional URLPatternInput input = {}, optional URLPatternOptions options = {});
- boolean test(optional URLPatternMatchInput input = {}, optional USVString baseURL);
+ boolean test(optional URLPatternInput input = {}, optional USVString baseURL);
- URLPatternResult? exec(optional URLPatternMatchInput input = {}, optional USVString baseURL);
+ URLPatternResult? exec(optional URLPatternInput input = {}, optional USVString baseURL);
readonly attribute USVString protocol;
readonly attribute USVString username;
@@ -479,7 +468,7 @@ A component is a [=struct=] with the following [=struct/items=]:
- To perform a match given a [=URL pattern=] |urlPattern|, a {{URLPatternMatchInput}} |input|, and an optional string |baseURLString|:
+ To perform a match given a [=URL pattern=] |urlPattern|, a {{URLPatternInput}} or [=/url=] |input|, and an optional string |baseURLString|:
1. Let |protocol| be the empty string.
1. Let |username| be the empty string.
@@ -491,17 +480,7 @@ A component is a [=struct=] with the following [=struct/items=]:
1. Let |hash| be the empty string.
1. Let |inputs| be an empty [=list=].
1. [=list/Append=] |input| to |inputs|.
- 1. If |input| is a {{URL}} then:
- 1. Let |associatedUrl| be |input|'s associated [=URL=].
- 1. Set |protocol| to |associatedUrl|'s [=url/scheme=].
- 1. Set |username| to |associatedUrl|'s [=url/username=].
- 1. Set |password| to |associatedUrl|'s [=url/password=].
- 1. Set |hostname| to |associatedUrl|'s [=url/host=].
- 1. Set |port| to |associatedUrl|'s [=url/port=].
- 1. Set |pathname| to |associatedUrl|'s [=url/path=].
- 1. Set |search| to |associatedUrl|'s [=url/query=].
- 1. Set |hash| to |associatedUrl|'s [=url/fragment=].
- 1. Else if |input| is a {{URLPatternInit}} then:
+ 1. If |input| is a {{URLPatternInit}} then:
1. If |baseURLString| was given, throw a {{TypeError}}.
1. Let |applyResult| be the result of [=process a URLPatternInit=] given |input|, "url", |protocol|, |username|, |password|, |hostname|, |port|, |pathname|, |search|, and |hash|. If this throws an exception, catch it, and return null.
1. Set |protocol| to |applyResult|["{{URLPatternInit/protocol}}"].
@@ -512,15 +491,17 @@ A component is a [=struct=] with the following [=struct/items=]:
1. Set |pathname| to |applyResult|["{{URLPatternInit/pathname}}"].
1. Set |search| to |applyResult|["{{URLPatternInit/search}}"].
1. Set |hash| to |applyResult|["{{URLPatternInit/hash}}"].
- 1. Else:
- 1. [=Assert=]: |input| is a {{USVString}}.
- 1. Let |baseURL| be null.
- 1. If |baseURLString| was given, then:
- 1. Set |baseURL| to the result of [=URL parser|parsing=] |baseURLString|.
- 1. If |baseURL| is failure, return null.
- 1. [=list/Append=] |baseURLString| to |inputs|.
- 1. Let |url| be the result of [=URL parser|parsing=] |input| given |baseURL|.
- 1. If |url| is failure, return null.
+ 1. Otherwise:
+ 1. Let |url| be |input|.
+ 1. If |input| is a {{USVString}}:
+ 1. Let |baseURL| be null.
+ 1. If |baseURLString| was given, then:
+ 1. Set |baseURL| to the result of [=URL parser|parsing=] |baseURLString|.
+ 1. If |baseURL| is failure, return null.
+ 1. [=list/Append=] |baseURLString| to |inputs|.
+ 1. Let |url| be the result of [=URL parser|parsing=] |input| given |baseURL|.
+ 1. If |url| is failure, return null.
+ 1. [=Assert=]: |url| is [=/url=]
1. Set |protocol| to |url|'s [=url/scheme=].
1. Set |username| to |url|'s [=url/username=].
1. Set |password| to |url|'s [=url/password=].