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.
This commit is contained in:
Mattias Buelens 2024-05-14 01:34:25 +02:00 committed by GitHub
parent f2dc3f9a94
commit 9338770a70
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 52 additions and 11 deletions

View file

@ -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 }),
);
},

View file

@ -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' Cant 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": [

@ -1 +1 @@
Subproject commit daa07cf3c47652ed67e637f2a39bbc34f91cfe10
Subproject commit 5e8f71d73049d4fca2a8cbc62d40e821400f1624