diff --git a/components/script/dom/urlsearchparams.rs b/components/script/dom/urlsearchparams.rs index 923d8f9e6ad..4b7e2880ef1 100644 --- a/components/script/dom/urlsearchparams.rs +++ b/components/script/dom/urlsearchparams.rs @@ -105,9 +105,14 @@ impl URLSearchParamsMethods for URLSearchParams { } // https://url.spec.whatwg.org/#dom-urlsearchparams-delete - fn Delete(&self, name: USVString) { + fn Delete(&self, name: USVString, value: Option) { // Step 1. - self.list.borrow_mut().retain(|&(ref k, _)| k != &name.0); + self.list + .borrow_mut() + .retain(|&(ref k, ref v)| match &value { + Some(value) => !(k == &name.0 && v == &value.0), + None => k != &name.0, + }); // Step 2. self.update_steps(); } @@ -135,9 +140,12 @@ impl URLSearchParamsMethods for URLSearchParams { } // https://url.spec.whatwg.org/#dom-urlsearchparams-has - fn Has(&self, name: USVString) -> bool { + fn Has(&self, name: USVString, value: Option) -> bool { let list = self.list.borrow(); - list.iter().any(|&(ref k, _)| k == &name.0) + list.iter().any(|&(ref k, ref v)| match &value { + Some(value) => k == &name.0 && v == &value.0, + None => k == &name.0, + }) } // https://url.spec.whatwg.org/#dom-urlsearchparams-set diff --git a/components/script/dom/webidls/URLSearchParams.webidl b/components/script/dom/webidls/URLSearchParams.webidl index 8c053d38582..065af4bbd04 100644 --- a/components/script/dom/webidls/URLSearchParams.webidl +++ b/components/script/dom/webidls/URLSearchParams.webidl @@ -11,10 +11,10 @@ interface URLSearchParams { [Throws] constructor(optional (sequence> or record or USVString) init = ""); readonly attribute unsigned long size; undefined append(USVString name, USVString value); - undefined delete(USVString name); + undefined delete(USVString name, optional USVString value); USVString? get(USVString name); sequence getAll(USVString name); - boolean has(USVString name); + boolean has(USVString name, optional USVString value); undefined set(USVString name, USVString value); undefined sort(); diff --git a/tests/wpt/metadata/url/urlsearchparams-delete.any.js.ini b/tests/wpt/metadata/url/urlsearchparams-delete.any.js.ini index 0607d667d29..baa982aa8ae 100644 --- a/tests/wpt/metadata/url/urlsearchparams-delete.any.js.ini +++ b/tests/wpt/metadata/url/urlsearchparams-delete.any.js.ini @@ -2,13 +2,7 @@ [Changing the query of a URL with an opaque path can impact the path] expected: FAIL - [Two-argument delete()] - expected: FAIL - [urlsearchparams-delete.any.html] [Changing the query of a URL with an opaque path can impact the path] expected: FAIL - - [Two-argument delete()] - expected: FAIL diff --git a/tests/wpt/metadata/url/urlsearchparams-has.any.js.ini b/tests/wpt/metadata/url/urlsearchparams-has.any.js.ini deleted file mode 100644 index 41e60afed19..00000000000 --- a/tests/wpt/metadata/url/urlsearchparams-has.any.js.ini +++ /dev/null @@ -1,8 +0,0 @@ -[urlsearchparams-has.any.html] - [Two-argument has()] - expected: FAIL - - -[urlsearchparams-has.any.worker.html] - [Two-argument has()] - expected: FAIL