mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-24 18:55:30 +00:00
Bug 1450258 [wpt PR 10252] - Make URLSearchParamsIterationSource not snapshot, a=testonly
Automatic update from web-platform-testsMake URLSearchParamsIterationSource not snapshot Previously URLSearchParamsIterationSource iterated over a copy of URLSearchParams, but it is specified in the standard as iterating over the live list. Modify it to reference the original URLSearchParams object instead of making a copy. Also add web-platform tests for delete during foreach, and a chromium- specific test for GC of URLSearchParams during iteration. Remove failing expectations. BUG=677322 Change-Id: I8c53fd8dd9863fe1146c5b7849d4f08245b37bc1 Reviewed-on: https://chromium-review.googlesource.com/987839 Reviewed-by: Mike West <mkwst@chromium.org> Reviewed-by: Yutaka Hirano <yhirano@chromium.org> Commit-Queue: Adam Rice <ricea@chromium.org> Cr-Commit-Position: refs/heads/master@{#548363} wpt-commits: 8fa12a570edc5679b9f28b26585a6bd477f0dc16 wpt-pr: 10252 wpt-commits: 8fa12a570edc5679b9f28b26585a6bd477f0dc16 wpt-pr: 10252
This commit is contained in:
parent
4882957508
commit
fecf488c0a
@ -602158,7 +602158,7 @@
|
||||
"testharness"
|
||||
],
|
||||
"url/urlsearchparams-foreach.html": [
|
||||
"5bdc17d623884a8916681f19df55c4bef5965ff2",
|
||||
"604154351de9db97183b3cfc149d3ca6c5132723",
|
||||
"testharness"
|
||||
],
|
||||
"url/urlsearchparams-get.html": [
|
||||
|
@ -36,4 +36,48 @@ test(function() {
|
||||
assert_unreached(i);
|
||||
}
|
||||
}, "empty");
|
||||
|
||||
test(function() {
|
||||
const url = new URL("http://localhost/query?param0=0¶m1=1¶m2=2");
|
||||
const searchParams = url.searchParams;
|
||||
const seen = [];
|
||||
for (const param of searchParams) {
|
||||
if (param[0] === 'param0') {
|
||||
searchParams.delete('param1');
|
||||
}
|
||||
seen.push(param);
|
||||
}
|
||||
|
||||
assert_array_equals(seen[0], ["param0", "0"]);
|
||||
assert_array_equals(seen[1], ["param2", "2"]);
|
||||
}, "delete next param during iteration");
|
||||
|
||||
test(function() {
|
||||
const url = new URL("http://localhost/query?param0=0¶m1=1¶m2=2");
|
||||
const searchParams = url.searchParams;
|
||||
const seen = [];
|
||||
for (const param of searchParams) {
|
||||
if (param[0] === 'param0') {
|
||||
searchParams.delete('param0');
|
||||
// 'param1=1' is now in the first slot, so the next iteration will see 'param2=2'.
|
||||
} else {
|
||||
seen.push(param);
|
||||
}
|
||||
}
|
||||
|
||||
assert_array_equals(seen[0], ["param2", "2"]);
|
||||
}, "delete current param during iteration");
|
||||
|
||||
test(function() {
|
||||
const url = new URL("http://localhost/query?param0=0¶m1=1¶m2=2");
|
||||
const searchParams = url.searchParams;
|
||||
const seen = [];
|
||||
for (const param of searchParams) {
|
||||
seen.push(param[0]);
|
||||
searchParams.delete(param[0]);
|
||||
}
|
||||
|
||||
assert_array_equals(seen, ["param0", "param2"], "param1 should not have been seen by the loop");
|
||||
assert_equals(String(searchParams), "param1=1", "param1 should remain");
|
||||
}, "delete every param seen during iteration");
|
||||
</script>
|
||||
|
Loading…
Reference in New Issue
Block a user