[wpt-sync] Sync PR 50284 - DOM: Bring Observable iterable conversion inline with spec
Categories
(Core :: DOM: Core & HTML, task, P4)
Tracking
()
Tracking | Status | |
---|---|---|
firefox136 | --- | fixed |
People
(Reporter: wpt-sync, Unassigned)
References
()
Details
(Whiteboard: [wptsync downstream])
Sync web-platform-tests PR 50284 into mozilla-central (this bug is closed when the sync is complete).
PR: https://github.com/web-platform-tests/wpt/pull/50284
Details from upstream follow.
Dominic Farolino <dom@chromium.org> wrote:
DOM: Bring Observable iterable conversion inline with spec
This CL ensures that after
Observable.from()
is called with an
iterable, if the resulting Observable fails to iterate when subscribed
to, all errors are plumbed to the subscriber.This matches the spec PR in https://github.com/WICG/observable/pull/160.
R=masonf
Bug: 363015168
Change-Id: I31a38d7f57ec7ab5b29388d908a6a58e0b3c1905
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6199726
Reviewed-by: Mason Freed \<masonf@chromium.org>
Commit-Queue: Dominic Farolino \<dom@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1411273}
Assignee | ||
Updated•29 days ago
|
Assignee | ||
Comment 1•29 days ago
|
||
Pushed to try (stability) https://treeherder.mozilla.org/#/jobs?repo=try&revision=e322de071010554faf991a5f5f1b806382323546
Assignee | ||
Comment 2•29 days ago
|
||
CI Results
Ran 9 Firefox configurations based on mozilla-central, and Firefox, Chrome, and Safari on GitHub CI
Total 2 tests and 46 subtests
Status Summary
Firefox
OK
: 2
FAIL
: 92
Chrome
OK
: 2
PASS
: 86
FAIL
: 6
Safari
OK
: 2
FAIL
: 92
Links
Gecko CI (Treeherder)
GitHub PR Head
GitHub PR Base
Details
New Tests That Don't Pass
- /dom/observable/tentative/observable-from.any.html [wpt.fyi]
- from(): Observable.from() is a function:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Failed conversions:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Given an observable, it returns that exact observable:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Given an array:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Iterable converts to Observable:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): [Symbol.iterator] side-effects (one observable):
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): [Symbol.iterator] not callable:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): [Symbol.iterator] not callable AFTER SUBSCRIBE throws:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): [Symbol.iterator] returns null AFTER SUBSCRIBE throws:
FAIL
(Chrome:FAIL
, Safari:FAIL
) - from(): [Symbol.iterator] is not cached:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): [Symbol.iterator] side-effects (many observables):
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): [Symbol.iterator] next() throws error:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Converts Promise to Observable:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Converts rejected Promise to Observable. No
unhandledrejection
event when error is handled by subscription:FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Rejections not handled by subscription are reported to the global, and still not sent as an unhandledrejection event:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Observable that implements @@iterator protocol gets converted as an Observable, not iterator:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Promise that implements @@iterator protocol gets converted as an iterable, not Promise:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Promise whose [Symbol.iterator] returns null converts as Promise:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Rethrows the error when Converting an object whose @@iterator method getter throws an error:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Async iterable protocol null, converts as iterator:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Asynchronous iterable conversion:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Asynchronous iterable multiple in-flight subscriptions competing:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Sync iterable multiple in-flight subscriptions competing:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Asynchronous generator conversion: can only be used once:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Promise-wrapping semantics of IteratorResult interface:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Errors thrown in Symbol.asyncIterator() are propagated synchronously:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Errors thrown in async iterator's next() GETTER are propagated in a microtask:
FAIL
(Chrome:FAIL
, Safari:FAIL
) - from(): Errors thrown in async iterator's next() are propagated in a microtask:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Aborting sync iterable midway through iteration both stops iteration and invokes
IteratorRecord#return():
FAIL(Chrome:
PASS, Safari:
FAIL`) - from(): Aborting async iterable midway through iteration both stops iteration and invokes
IteratorRecord#return():
FAIL(Chrome:
PASS, Safari:
FAIL`) - from(): Sync iterable:
Iterator#return()
must return an Object, or an error is thrown:FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Async iterable:
Iterator#return()
must return an Object, or a Promise rejects asynchronously:FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Asynchronous iterable conversion, with synchronous iterable fallback:
FAIL
(Chrome:FAIL
, Safari:FAIL
) - from(): Generator finally block runs when subscription is aborted:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Generator finally block run when Observable completes:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Generator finally block run when Observable errors:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Async generator finally block run when subscription is aborted:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Async generator finally block runs when Observable completes:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Async generator finally block run when Observable errors:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Sync iterable: error thrown from IteratorRecord#return() can be synchronously caught:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Async iterable: error thrown from IteratorRecord#return() is wrapped in rejected Promise:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Subscribing to an iterable Observable with an aborted signal does not call next():
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): When iterable conversion aborts the subscription, next() is never called:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): When async iterable conversion aborts the subscription, next() is never called:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Aborting an async iterable subscription stops subsequent next() calls, but old next() Promise reactions are web-observable:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Abort after complete does NOT call IteratorRecord#return():
FAIL
(Chrome:PASS
, Safari:FAIL
)
- from(): Observable.from() is a function:
- /dom/observable/tentative/observable-from.any.worker.html [wpt.fyi]
- from(): Observable.from() is a function:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Failed conversions:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Given an observable, it returns that exact observable:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Given an array:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Iterable converts to Observable:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): [Symbol.iterator] side-effects (one observable):
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): [Symbol.iterator] not callable:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): [Symbol.iterator] not callable AFTER SUBSCRIBE throws:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): [Symbol.iterator] returns null AFTER SUBSCRIBE throws:
FAIL
(Chrome:FAIL
, Safari:FAIL
) - from(): [Symbol.iterator] is not cached:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): [Symbol.iterator] side-effects (many observables):
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): [Symbol.iterator] next() throws error:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Converts Promise to Observable:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Converts rejected Promise to Observable. No
unhandledrejection
event when error is handled by subscription:FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Rejections not handled by subscription are reported to the global, and still not sent as an unhandledrejection event:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Observable that implements @@iterator protocol gets converted as an Observable, not iterator:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Promise that implements @@iterator protocol gets converted as an iterable, not Promise:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Promise whose [Symbol.iterator] returns null converts as Promise:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Rethrows the error when Converting an object whose @@iterator method getter throws an error:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Async iterable protocol null, converts as iterator:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Asynchronous iterable conversion:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Asynchronous iterable multiple in-flight subscriptions competing:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Sync iterable multiple in-flight subscriptions competing:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Asynchronous generator conversion: can only be used once:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Promise-wrapping semantics of IteratorResult interface:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Errors thrown in Symbol.asyncIterator() are propagated synchronously:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Errors thrown in async iterator's next() GETTER are propagated in a microtask:
FAIL
(Chrome:FAIL
, Safari:FAIL
) - from(): Errors thrown in async iterator's next() are propagated in a microtask:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Aborting sync iterable midway through iteration both stops iteration and invokes
IteratorRecord#return():
FAIL(Chrome:
PASS, Safari:
FAIL`) - from(): Aborting async iterable midway through iteration both stops iteration and invokes
IteratorRecord#return():
FAIL(Chrome:
PASS, Safari:
FAIL`) - from(): Sync iterable:
Iterator#return()
must return an Object, or an error is thrown:FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Async iterable:
Iterator#return()
must return an Object, or a Promise rejects asynchronously:FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Asynchronous iterable conversion, with synchronous iterable fallback:
FAIL
(Chrome:FAIL
, Safari:FAIL
) - from(): Generator finally block runs when subscription is aborted:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Generator finally block run when Observable completes:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Generator finally block run when Observable errors:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Async generator finally block run when subscription is aborted:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Async generator finally block runs when Observable completes:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Async generator finally block run when Observable errors:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Sync iterable: error thrown from IteratorRecord#return() can be synchronously caught:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Async iterable: error thrown from IteratorRecord#return() is wrapped in rejected Promise:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Subscribing to an iterable Observable with an aborted signal does not call next():
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): When iterable conversion aborts the subscription, next() is never called:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): When async iterable conversion aborts the subscription, next() is never called:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Aborting an async iterable subscription stops subsequent next() calls, but old next() Promise reactions are web-observable:
FAIL
(Chrome:PASS
, Safari:FAIL
) - from(): Abort after complete does NOT call IteratorRecord#return():
FAIL
(Chrome:PASS
, Safari:FAIL
)
- from(): Observable.from() is a function:
Pushed by wptsync@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/8a85deb268ad [wpt PR 50284] - DOM: Bring Observable iterable conversion inline with spec, a=testonly https://hg.mozilla.org/integration/autoland/rev/8da996507007 [wpt PR 50284] - Update wpt metadata, a=testonly
Comment 4•25 days ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/8a85deb268ad
https://hg.mozilla.org/mozilla-central/rev/8da996507007
Description
•