Implement URL.canParse

Add an implementation of `URL.canParse` as a static method. See
[here][1] for the specification.

[1]: https://url.spec.whatwg.org/#dom-url-canparse

Signed-off-by: Yutaro Ohno <yutaro.ono.418@gmail.com>
This commit is contained in:
Yutaro Ohno 2023-04-02 19:23:45 +09:00
parent 6b33738006
commit 239776a270
3 changed files with 24 additions and 44 deletions

View file

@ -111,6 +111,27 @@ impl URL {
Ok(result)
}
// https://url.spec.whatwg.org/#dom-url-canparse
pub fn CanParse(_global: &GlobalScope, url: USVString, base: Option<USVString>) -> bool {
// Step 1.
let parsed_base = match base {
None => None,
Some(base) => match ServoUrl::parse(&base.0) {
Ok(base) => Some(base),
Err(_) => {
// Step 2.1
return false;
},
},
};
match ServoUrl::parse_with_base(parsed_base.as_ref(), &url.0) {
// Step 3
Ok(_) => true,
// Step 2.2
Err(_) => false,
}
}
// https://w3c.github.io/FileAPI/#dfn-createObjectURL
pub fn CreateObjectURL(global: &GlobalScope, blob: &Blob) -> DOMString {
// XXX: Second field is an unicode-serialized Origin, it is a temporary workaround

View file

@ -7,6 +7,9 @@
LegacyWindowAlias=webkitURL]
interface URL {
[Throws] constructor(USVString url, optional USVString base);
static boolean canParse(USVString url, optional USVString base);
[SetterThrows]
stringifier attribute USVString href;
readonly attribute USVString origin;