summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMattias Buelens <649348+MattiasBuelens@users.noreply.github.com>2024-05-14 01:34:25 +0200
committerGitHub <noreply@github.com>2024-05-13 23:34:25 +0000
commit9338770a709b3f0bc79c9b3d00e5f522857a5c5c (patch)
tree7d530879d8db68e927ddd3bd9711dab43be8e8a5
parentf2dc3f9a94444b1a5a40570be09c7f64903d27cb (diff)
fix(ext/web): update ongoing promise in async iterator `return()` method (#23642)
See https://github.com/whatwg/webidl/pull/1387 for context. There are new WPT tests for this change in https://github.com/web-platform-tests/wpt/pull/44456. They pass on my local machine, but I'm not sure if I should update the WPT submodule for all of Deno as part of this PR? Fixes #22389 --------- Co-authored-by: Asher Gomez <ashersaupingomez@gmail.
-rw-r--r--ext/web/06_streams.js4
-rw-r--r--tests/wpt/runner/expectation.json57
m---------tests/wpt/suite0
3 files changed, 51 insertions, 10 deletions
diff --git a/ext/web/06_streams.js b/ext/web/06_streams.js
index e0e3ccbbe..9c2a05980 100644
--- a/ext/web/06_streams.js
+++ b/ext/web/06_streams.js
@@ -4964,11 +4964,11 @@ const readableStreamAsyncIteratorPrototype = ObjectSetPrototypeOf({
return PromiseResolve({ value: undefined, done: true });
};
- const returnPromise = reader[_iteratorNext]
+ reader[_iteratorNext] = reader[_iteratorNext]
? PromisePrototypeThen(reader[_iteratorNext], returnSteps, returnSteps)
: returnSteps();
return PromisePrototypeThen(
- returnPromise,
+ reader[_iteratorNext],
() => ({ value: arg, done: true }),
);
},
diff --git a/tests/wpt/runner/expectation.json b/tests/wpt/runner/expectation.json
index f20cd78f1..866b85d52 100644
--- a/tests/wpt/runner/expectation.json
+++ b/tests/wpt/runner/expectation.json
@@ -2795,7 +2795,26 @@
"XSLTProcessor interface: operation reset()",
"Window interface: attribute event",
"idl_test setup",
- "ShadowRoot interface: attribute clonable"
+ "ShadowRoot interface: attribute clonable",
+ "Document interface: operation prepend((Node or TrustedScript or DOMString)...)",
+ "Document interface: operation append((Node or TrustedScript or DOMString)...)",
+ "Document interface: operation replaceChildren((Node or TrustedScript or DOMString)...)",
+ "DocumentType interface: operation before((Node or TrustedScript or DOMString)...)",
+ "DocumentType interface: operation after((Node or TrustedScript or DOMString)...)",
+ "DocumentType interface: operation replaceWith((Node or TrustedScript or DOMString)...)",
+ "DocumentFragment interface: operation prepend((Node or TrustedScript or DOMString)...)",
+ "DocumentFragment interface: operation append((Node or TrustedScript or DOMString)...)",
+ "DocumentFragment interface: operation replaceChildren((Node or TrustedScript or DOMString)...)",
+ "ShadowRoot interface: attribute serializable",
+ "Element interface: operation prepend((Node or TrustedScript or DOMString)...)",
+ "Element interface: operation append((Node or TrustedScript or DOMString)...)",
+ "Element interface: operation replaceChildren((Node or TrustedScript or DOMString)...)",
+ "Element interface: operation before((Node or TrustedScript or DOMString)...)",
+ "Element interface: operation after((Node or TrustedScript or DOMString)...)",
+ "Element interface: operation replaceWith((Node or TrustedScript or DOMString)...)",
+ "CharacterData interface: operation before((Node or TrustedScript or DOMString)...)",
+ "CharacterData interface: operation after((Node or TrustedScript or DOMString)...)",
+ "CharacterData interface: operation replaceWith((Node or TrustedScript or DOMString)...)"
],
"idlharness.window.html?include=Node": [
"Node interface: existence and properties of interface object",
@@ -3296,8 +3315,18 @@
"valueOf.any.html": true,
"valueOf.any.worker.html": true
},
- "idlharness.any.html": true,
- "idlharness.any.worker.html": true,
+ "idlharness.any.html": [
+ "Memory interface: operation toFixedLengthBuffer()",
+ "Memory interface: operation toResizableBuffer()",
+ "Memory interface: [object WebAssembly.Memory] must inherit property \"toFixedLengthBuffer()\" with the proper type",
+ "Memory interface: [object WebAssembly.Memory] must inherit property \"toResizableBuffer()\" with the proper type"
+ ],
+ "idlharness.any.worker.html": [
+ "Memory interface: operation toFixedLengthBuffer()",
+ "Memory interface: operation toResizableBuffer()",
+ "Memory interface: [object WebAssembly.Memory] must inherit property \"toFixedLengthBuffer()\" with the proper type",
+ "Memory interface: [object WebAssembly.Memory] must inherit property \"toResizableBuffer()\" with the proper type"
+ ],
"instance": {
"constructor-bad-imports.any.html": true,
"constructor-bad-imports.any.worker.html": true,
@@ -4512,7 +4541,15 @@
"<a>: Setting <http://example.net>.hash = ' ' Trailing space should be encoded",
"<area>: Setting <http://example.net>.hash = ' ' Trailing space should be encoded",
"<a>: Setting <http://example.net>.hash = '\u0000' Trailing C0 control should be encoded",
- "<area>: Setting <http://example.net>.hash = '\u0000' Trailing C0 control should be encoded"
+ "<area>: Setting <http://example.net>.hash = '\u0000' Trailing C0 control should be encoded",
+ "<a>: Setting <http://example.net/path>.host = 'example.com?stuff:8080' Stuff after a ? delimiter is ignored, trailing 'port'",
+ "<area>: Setting <http://example.net/path>.host = 'example.com?stuff:8080' Stuff after a ? delimiter is ignored, trailing 'port'",
+ "<a>: Setting <http://example.net:8080>.host = 'example.com:invalid' Anything other than ASCII digit stops the port parser in a setter but is not an error",
+ "<area>: Setting <http://example.net:8080>.host = 'example.com:invalid' Anything other than ASCII digit stops the port parser in a setter but is not an error",
+ "<a>: Setting <http://example.net:8080/test>.host = '[::1]:invalid' Anything other than ASCII digit stops the port parser in a setter but is not an error",
+ "<area>: Setting <http://example.net:8080/test>.host = '[::1]:invalid' Anything other than ASCII digit stops the port parser in a setter but is not an error",
+ "<a>: Setting <http://example.net:8080/test>.host = '[::1]' IPv6 without port",
+ "<area>: Setting <http://example.net:8080/test>.host = '[::1]' IPv6 without port"
],
"url-setters-a-area.window.html?include=file": [
"<a>: Setting <file://localhost/>.protocol = 'http' Can’t switch from file URL with no host",
@@ -4599,7 +4636,9 @@
"URL: Setting <non-spec:/>.pathname = '//p'",
"URL: Setting <non-spec:/.//>.pathname = 'p' Drop /. from path",
"URL: Setting <data:space ?query#fragment>.search = '' Do not drop trailing spaces from non-trailing opaque paths",
- "URL: Setting <sc:space ?query#fragment>.search = ''"
+ "URL: Setting <sc:space ?query#fragment>.search = ''",
+ "URL: Setting <http://example.net:8080>.host = 'example.com:invalid' Anything other than ASCII digit stops the port parser in a setter but is not an error",
+ "URL: Setting <http://example.net:8080/test>.host = '[::1]:invalid' Anything other than ASCII digit stops the port parser in a setter but is not an error"
],
"url-setters.any.html?include=file": [
"URL: Setting <file://monkey/>.pathname = '\\\\' File URLs and (back)slashes",
@@ -4621,7 +4660,9 @@
"URL: Setting <non-spec:/>.pathname = '//p'",
"URL: Setting <non-spec:/.//>.pathname = 'p' Drop /. from path",
"URL: Setting <data:space ?query#fragment>.search = '' Do not drop trailing spaces from non-trailing opaque paths",
- "URL: Setting <sc:space ?query#fragment>.search = ''"
+ "URL: Setting <sc:space ?query#fragment>.search = ''",
+ "URL: Setting <http://example.net:8080>.host = 'example.com:invalid' Anything other than ASCII digit stops the port parser in a setter but is not an error",
+ "URL: Setting <http://example.net:8080/test>.host = '[::1]:invalid' Anything other than ASCII digit stops the port parser in a setter but is not an error"
],
"url-setters.any.worker.html?include=file": [
"URL: Setting <file://monkey/>.pathname = '\\\\' File URLs and (back)slashes",
@@ -6603,8 +6644,8 @@
],
"forbidden-method.any.html": true,
"forbidden-method.any.worker.html": true,
- "request-bad-port.any.html": false,
- "request-bad-port.any.worker.html": false,
+ "request-bad-port.any.html": true,
+ "request-bad-port.any.worker.html": true,
"request-cache-default-conditional.any.html": true,
"request-cache-default-conditional.any.worker.html": true,
"request-cache-default.any.html": [
diff --git a/tests/wpt/suite b/tests/wpt/suite
-Subproject daa07cf3c47652ed67e637f2a39bbc34f91cfe1
+Subproject 5e8f71d73049d4fca2a8cbc62d40e821400f162