RESOLVED FIXED Bug 150358
Support for promise rejection events (unhandledrejection)
https://bugs.webkit.org/show_bug.cgi?id=150358
Summary Support for promise rejection events (unhandledrejection)
jochen
Reported 2015-10-20 00:59:11 PDT
any feedback on the proposed addition of promise rejection events to HTML: https://github.com/domenic/unhandled-rejections-browser-spec / https://github.com/whatwg/html/pull/224
Attachments
[PATCH] Work in Progress (64.71 KB, patch)
2016-11-28 11:11 PST, Joseph Pecoraro
no flags
Patch (82.87 KB, patch)
2017-01-05 15:06 PST, Yusuke Suzuki
no flags
Patch (82.94 KB, patch)
2017-01-05 15:32 PST, Yusuke Suzuki
no flags
Archive of layout-test-results from ews112 for mac-elcapitan (1.21 MB, application/zip)
2017-01-05 16:51 PST, Build Bot
no flags
Archive of layout-test-results from ews123 for ios-simulator-wk2 (deleted)
2017-01-05 16:52 PST, Build Bot
no flags
Archive of layout-test-results from ews101 for mac-elcapitan (541.54 KB, application/zip)
2017-01-05 16:57 PST, Build Bot
no flags
Archive of layout-test-results from ews107 for mac-elcapitan-wk2 (1.35 MB, application/zip)
2017-01-05 16:58 PST, Build Bot
no flags
Patch (77.59 KB, patch)
2017-01-05 22:07 PST, Yusuke Suzuki
no flags
Patch (77.59 KB, patch)
2017-01-05 23:09 PST, Yusuke Suzuki
no flags
Archive of layout-test-results from ews102 for mac-elcapitan (1.00 MB, application/zip)
2017-01-09 08:44 PST, Build Bot
no flags
Archive of layout-test-results from ews107 for mac-elcapitan-wk2 (1009.44 KB, application/zip)
2017-01-09 08:46 PST, Build Bot
no flags
Archive of layout-test-results from ews117 for mac-elcapitan (860.03 KB, application/zip)
2017-01-09 08:53 PST, Build Bot
no flags
Archive of layout-test-results from ews125 for ios-simulator-wk2 (872.55 KB, application/zip)
2017-01-09 11:06 PST, Build Bot
no flags
Patch (78.08 KB, patch)
2017-01-11 10:44 PST, Yusuke Suzuki
no flags
Patch (78.12 KB, patch)
2017-01-11 10:50 PST, Yusuke Suzuki
no flags
Archive of layout-test-results from ews100 for mac-elcapitan (823.61 KB, application/zip)
2017-01-11 12:29 PST, Build Bot
no flags
Archive of layout-test-results from ews117 for mac-elcapitan (1.71 MB, application/zip)
2017-01-11 12:32 PST, Build Bot
no flags
Archive of layout-test-results from ews105 for mac-elcapitan-wk2 (1.33 MB, application/zip)
2017-01-11 12:43 PST, Build Bot
no flags
Archive of layout-test-results from ews124 for ios-simulator-wk2 (3.57 MB, application/zip)
2017-01-11 12:46 PST, Build Bot
no flags
Patch (78.33 KB, patch)
2017-01-12 05:20 PST, Yusuke Suzuki
no flags
Archive of layout-test-results from ews101 for mac-elcapitan (808.96 KB, application/zip)
2017-01-12 06:28 PST, Build Bot
no flags
Archive of layout-test-results from ews112 for mac-elcapitan (871.62 KB, application/zip)
2017-01-12 06:37 PST, Build Bot
no flags
Archive of layout-test-results from ews122 for ios-simulator-wk2 (788.44 KB, application/zip)
2017-01-12 07:02 PST, Build Bot
no flags
Archive of layout-test-results from ews105 for mac-elcapitan-wk2 (881.06 KB, application/zip)
2017-01-12 07:22 PST, Build Bot
no flags
Patch (81.65 KB, patch)
2017-01-12 07:50 PST, Yusuke Suzuki
no flags
Archive of layout-test-results from ews100 for mac-elcapitan (791.66 KB, application/zip)
2017-01-12 08:55 PST, Build Bot
no flags
Archive of layout-test-results from ews117 for mac-elcapitan (847.09 KB, application/zip)
2017-01-12 09:02 PST, Build Bot
no flags
Archive of layout-test-results from ews121 for ios-simulator-wk2 (820.49 KB, application/zip)
2017-01-12 09:11 PST, Build Bot
no flags
Archive of layout-test-results from ews105 for mac-elcapitan-wk2 (1.17 MB, application/zip)
2017-01-12 12:13 PST, Build Bot
no flags
Patch (80.83 KB, patch)
2017-02-20 00:14 PST, Yusuke Suzuki
no flags
Patch (85.25 KB, patch)
2017-02-20 01:41 PST, Yusuke Suzuki
no flags
Patch (88.94 KB, patch)
2017-02-20 02:08 PST, Yusuke Suzuki
no flags
Archive of layout-test-results from ews101 for mac-elcapitan (1.04 MB, application/zip)
2017-02-20 03:19 PST, Build Bot
no flags
Archive of layout-test-results from ews106 for mac-elcapitan-wk2 (1.17 MB, application/zip)
2017-02-20 03:28 PST, Build Bot
no flags
Archive of layout-test-results from ews115 for mac-elcapitan (951.86 KB, application/zip)
2017-02-20 03:32 PST, Build Bot
no flags
Archive of layout-test-results from ews124 for ios-simulator-wk2 (7.11 MB, application/zip)
2017-02-20 03:36 PST, Build Bot
no flags
Patch (92.33 KB, patch)
2017-02-20 05:09 PST, Yusuke Suzuki
no flags
Archive of layout-test-results from ews100 for mac-elcapitan (1.01 MB, application/zip)
2017-02-20 06:16 PST, Build Bot
no flags
Archive of layout-test-results from ews106 for mac-elcapitan-wk2 (1.02 MB, application/zip)
2017-02-20 06:25 PST, Build Bot
no flags
Archive of layout-test-results from ews117 for mac-elcapitan (964.28 KB, application/zip)
2017-02-20 06:30 PST, Build Bot
no flags
Archive of layout-test-results from ews125 for ios-simulator-wk2 (6.67 MB, application/zip)
2017-02-20 06:38 PST, Build Bot
no flags
Patch (145.66 KB, patch)
2017-03-09 11:12 PST, Yusuke Suzuki
buildbot: commit-queue-
Archive of layout-test-results from ews105 for mac-elcapitan-wk2 (1.15 MB, application/zip)
2017-03-09 12:49 PST, Build Bot
no flags
Archive of layout-test-results from ews113 for mac-elcapitan (1.76 MB, application/zip)
2017-03-09 12:57 PST, Build Bot
no flags
Archive of layout-test-results from ews100 for mac-elcapitan (842.16 KB, application/zip)
2017-03-09 13:03 PST, Build Bot
no flags
Archive of layout-test-results from ews123 for ios-simulator-wk2 (14.99 MB, application/zip)
2017-03-09 13:13 PST, Build Bot
no flags
[PATCH] Rebaselined - For Bots (142.50 KB, patch)
2017-04-19 22:26 PDT, Joseph Pecoraro
buildbot: commit-queue-
Archive of layout-test-results from ews105 for mac-elcapitan-wk2 (1.16 MB, application/zip)
2017-04-19 23:59 PDT, Build Bot
no flags
Archive of layout-test-results from ews116 for mac-elcapitan (1.57 MB, application/zip)
2017-04-20 00:21 PDT, Build Bot
no flags
Archive of layout-test-results from ews123 for ios-simulator-wk2 (50.44 MB, application/zip)
2017-04-20 00:50 PDT, Build Bot
no flags
Archive of layout-test-results from ews103 for mac-elcapitan (875.91 KB, application/zip)
2017-04-20 04:18 PDT, Build Bot
no flags
[PATCH] Rebaselined - For Bots (144.86 KB, patch)
2017-04-20 12:45 PDT, Joseph Pecoraro
buildbot: commit-queue-
Archive of layout-test-results from ews100 for mac-elcapitan (912.00 KB, application/zip)
2017-04-20 14:37 PDT, Build Bot
no flags
Archive of layout-test-results from ews105 for mac-elcapitan-wk2 (1000.53 KB, application/zip)
2017-04-20 14:38 PDT, Build Bot
no flags
Archive of layout-test-results from ews116 for mac-elcapitan (1.84 MB, application/zip)
2017-04-20 15:08 PDT, Build Bot
no flags
Archive of layout-test-results from ews126 for ios-simulator-wk2 (14.89 MB, application/zip)
2017-04-20 15:11 PDT, Build Bot
no flags
[PATCH] Rebaselined - For Bots (146.78 KB, patch)
2017-04-20 17:44 PDT, Joseph Pecoraro
buildbot: commit-queue-
Archive of layout-test-results from ews101 for mac-elcapitan (887.34 KB, application/zip)
2017-04-20 19:06 PDT, Build Bot
no flags
Archive of layout-test-results from ews105 for mac-elcapitan-wk2 (1.14 MB, application/zip)
2017-04-20 19:14 PDT, Build Bot
no flags
[PATCH] Rebaselined - For Bots (150.41 KB, patch)
2017-04-20 19:18 PDT, Joseph Pecoraro
buildbot: commit-queue-
Archive of layout-test-results from ews101 for mac-elcapitan (938.37 KB, application/zip)
2017-04-20 20:45 PDT, Build Bot
no flags
Archive of layout-test-results from ews104 for mac-elcapitan-wk2 (1.16 MB, application/zip)
2017-04-20 20:46 PDT, Build Bot
no flags
Archive of layout-test-results from ews112 for mac-elcapitan (1.84 MB, application/zip)
2017-04-20 21:00 PDT, Build Bot
no flags
[PATCH] Proposed Fix (168.36 KB, patch)
2017-04-20 21:04 PDT, Joseph Pecoraro
buildbot: commit-queue-
Archive of layout-test-results from ews102 for mac-elcapitan (958.13 KB, application/zip)
2017-04-20 22:30 PDT, Build Bot
no flags
Archive of layout-test-results from ews105 for mac-elcapitan-wk2 (889.42 KB, application/zip)
2017-04-20 22:34 PDT, Build Bot
no flags
Archive of layout-test-results from ews112 for mac-elcapitan (1.84 MB, application/zip)
2017-04-20 23:01 PDT, Build Bot
no flags
Archive of layout-test-results from ews121 for ios-simulator-wk2 (11.37 MB, application/zip)
2017-04-21 00:58 PDT, Build Bot
no flags
[PATCH] Proposed Fix (168.80 KB, patch)
2017-04-21 17:46 PDT, Joseph Pecoraro
no flags
Archive of layout-test-results from ews106 for mac-elcapitan-wk2 (995.49 KB, application/zip)
2017-04-21 19:25 PDT, Build Bot
no flags
Archive of layout-test-results from ews103 for mac-elcapitan (938.02 KB, application/zip)
2017-04-21 19:27 PDT, Build Bot
no flags
Archive of layout-test-results from ews125 for ios-simulator-wk2 (20.53 MB, application/zip)
2017-04-21 20:21 PDT, Build Bot
no flags
Archive of layout-test-results from ews112 for mac-elcapitan (1.81 MB, application/zip)
2017-04-22 00:53 PDT, Build Bot
no flags
[PATCH] Proposed Fix (173.66 KB, patch)
2017-04-25 19:16 PDT, Joseph Pecoraro
buildbot: commit-queue-
Archive of layout-test-results from ews100 for mac-elcapitan (1.19 MB, application/zip)
2017-04-25 20:36 PDT, Build Bot
no flags
Archive of layout-test-results from ews104 for mac-elcapitan-wk2 (1.78 MB, application/zip)
2017-04-25 20:43 PDT, Build Bot
no flags
Archive of layout-test-results from ews126 for ios-simulator-wk2 (60.87 MB, application/zip)
2017-04-25 21:10 PDT, Build Bot
no flags
Archive of layout-test-results from ews113 for mac-elcapitan (2.07 MB, application/zip)
2017-04-25 22:15 PDT, Build Bot
no flags
[PATCH] Proposed Fix (174.32 KB, patch)
2017-04-26 16:47 PDT, Joseph Pecoraro
buildbot: commit-queue-
Archive of layout-test-results from ews123 for ios-simulator-wk2 (909.14 KB, application/zip)
2017-04-26 19:07 PDT, Build Bot
no flags
[PATCH] Proposed Fix (174.94 KB, patch)
2017-04-26 19:51 PDT, Joseph Pecoraro
no flags
[PATCH] Proposed Fix (173.24 KB, patch)
2017-04-27 11:32 PDT, Joseph Pecoraro
saam: review+
saam: commit-queue-
jochen
Comment 1 2015-10-20 00:59:41 PDT
Sam, could you please comment on this?
jochen
Comment 2 2015-11-30 06:26:55 PST
This moved forward and is now a pull request on whatwg/html and tc39 respectively: https://github.com/whatwg/html/pull/224 https://github.com/tc39/ecma262/pull/76
Richard Connamacher
Comment 3 2016-06-23 22:41:36 PDT
This feature is now in the ECMAScript and HTML standards. ECMAScript 2016 defines when the host's unhandled promise rejection events should fire: http://www.ecma-international.org/ecma-262/7.0/#sec-host-promise-rejection-tracker HTML Living Standard defines the window unhandledrejection and rejectionhandled events: https://html.spec.whatwg.org/multipage/webappapis.html#unhandled-promise-rejections These events have thus far been implemented in Chrome and Node. This is very useful, since uncaught (and unhandled) errors thrown inside promises are not seen by the window.onerror event, and in Safari do not even cause a message to be printed to the console. They just disappear silently into the ether. The unhandledrejection event fixes that, like window.onerror for promises.
Joseph Pecoraro
Comment 4 2016-09-22 22:21:35 PDT
How have I not heard about this until now!
Radar WebKit Bug Importer
Comment 5 2016-09-22 22:22:23 PDT
Joseph Pecoraro
Comment 6 2016-11-28 11:11:56 PST
Created attachment 295505 [details] [PATCH] Work in Progress I haven't written tests or updated LayoutTests, but this was a preliminary attempt that looked good in my most basic tests. A few things that need to be handled: - PromiseRejectionEvent - when constructed with a value for "promise" that is not an instance of a Promise we should wrap it in a Promise (Blink does this) - new PromiseRejectionEvent("event-name", {promise:1}) => should be as if {promise: Promise.resolve(1)} - Layout Tests - update existing - write new tests covering the Event and event handlers - Web Inspector support (probably a follow-up bug) - pause on unhandled rejection - if log errors for unhandled rejections then later suppress these errors when the promise does get handled ("revoke")
Joseph Pecoraro
Comment 7 2016-11-28 16:13:42 PST
> - PromiseRejectionEvent > - when constructed with a value for "promise" that is not an instance > of a Promise we should wrap it in a Promise (Blink does this) > - new PromiseRejectionEvent("event-name", {promise:1}) => should be > as if {promise: Promise.resolve(1)} This is defined in Web IDL: <https://heycam.github.io/webidl/#es-promise> Converting a JavaScript Value `v` to IDL `Promise<any>` type is the equivalent of `Promise.resolve(v)`.
Yusuke Suzuki
Comment 8 2016-12-07 05:38:08 PST
Comment on attachment 295505 [details] [PATCH] Work in Progress View in context: https://bugs.webkit.org/attachment.cgi?id=295505&action=review Awesome. Early stage review. > Source/JavaScriptCore/builtins/PromiseOperations.js:109 > + @hostPromiseRejectionTracker(promise, "reject"); I recommend using some bytecode intrinsic constants instead of the string `"reject"`. For example, @promiseStatePending is represented as a bytecode intrinsic constant. The benefit of the bytecode intrinsic constant is we can share the same value in C++ and JS. You can see how to define it in bytecode/BytecodeIntrinsicRegistry.h. > Source/JavaScriptCore/builtins/PromisePrototype.js:62 > + @hostPromiseRejectionTracker(promise, "handle"); Ditto. > Source/JavaScriptCore/runtime/JSGlobalObject.h:167 > +enum class JSPromiseRejectionOperation { > + Reject, // When a promise is rejected without any handlers. > + Handle, // When a handler is added to a rejected promise for the first time. > +}; You can expose these enums directly to the JS world through bytecode intrinsic constants. > Source/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp:940 > + JSPromiseRejectionOperation operation; > + if (operationString == "reject") > + operation = JSPromiseRejectionOperation::Reject; > + else { > + ASSERT(operationString == "handle"); > + operation = JSPromiseRejectionOperation::Handle; > + } And then, you can just `static_cast<>()` the argument's number to the enum.
Yusuke Suzuki
Comment 9 2017-01-02 14:22:31 PST
Once it is done, I would like to add a promiseRejectionTracker in the JSC shell. It is super useful if the JSC shell can report error drained by promises when exiting. That makes the async JSTests easy.
Joseph Pecoraro
Comment 10 2017-01-03 18:53:26 PST
If anyone wants to take over for this that would be fine by me. I don't know when I'll find time to come back to this.
Yusuke Suzuki
Comment 11 2017-01-03 23:29:50 PST
(In reply to comment #10) > If anyone wants to take over for this that would be fine by me. I don't know > when I'll find time to come back to this. OK, I'll work on this :) It is super useful to debug asynchronous features in WebCore/JSC shell.
Yusuke Suzuki
Comment 12 2017-01-05 15:06:10 PST
Created attachment 298141 [details] Patch WIP: we need cross-origin check. This will be done by using extended SourceOrigin
Yusuke Suzuki
Comment 13 2017-01-05 15:12:23 PST
Comment on attachment 298141 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=298141&action=review > Source/WebCore/dom/PromiseRejectionEvent.cpp:70 > +JSValue PromiseRejectionEvent::sanitizedPromiseValue(ExecState& state) > +{ > + auto promise = m_promise.get(); > + if (!promise) > + return jsNull(); > + > + if (promise.isObject() && &worldForDOMObject(promise.getObject()) != &currentWorld(&state)) > + return jsNull(); > + > + return promise; > +} > + > +JSValue PromiseRejectionEvent::sanitizedReasonValue(ExecState& state) > +{ > + auto reason = m_reason.get(); > + if (!reason) > + return jsNull(); > + > + if (reason.isObject() && &worldForDOMObject(reason.getObject()) != &currentWorld(&state)) > + return jsNull(); > + > + return reason; > +} I think this is not necessary. Instead, we should perform cross-origin check in the hostPromiseRejectionTracker correctly.
Joseph Pecoraro
Comment 14 2017-01-05 15:16:23 PST
Comment on attachment 298141 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=298141&action=review >> Source/WebCore/dom/PromiseRejectionEvent.cpp:70 >> +} > > I think this is not necessary. > Instead, we should perform cross-origin check in the hostPromiseRejectionTracker correctly. What about someone creating their own PromiseRejectionEvent with their own values? Or maybe that is not possible? new PromiseRejectionEvent("name, {promise: value1, reason: value2});
Yusuke Suzuki
Comment 15 2017-01-05 15:29:48 PST
(In reply to comment #14) > Comment on attachment 298141 [details] > Patch > > View in context: > https://bugs.webkit.org/attachment.cgi?id=298141&action=review > > >> Source/WebCore/dom/PromiseRejectionEvent.cpp:70 > >> +} > > > > I think this is not necessary. > > Instead, we should perform cross-origin check in the hostPromiseRejectionTracker correctly. > > What about someone creating their own PromiseRejectionEvent with their own > values? Or maybe that is not possible? > > new PromiseRejectionEvent("name, {promise: value1, reason: value2}); This should be allowed. We can create such an event object. The problem is that the current patch does not perform any Promise type check for value1 (value2 is OK since it is any in IDL). Yup, we can perform promise check super easily: just introducing type check to JSDOMConverter's IDLPromise case. But I'm not sure whether IDL's Promise<any> should perform this type check. This prohibits us from passing user-defined thenables here. Like, `new PromiseRejectionEvent("name", { promise: new BlueBirdPromise(), reason: any })`
Yusuke Suzuki
Comment 16 2017-01-05 15:32:29 PST
Created attachment 298145 [details] Patch WIP: Fix linking error
Build Bot
Comment 17 2017-01-05 16:51:31 PST
Comment on attachment 298145 [details] Patch Attachment 298145 [details] did not pass mac-debug-ews (mac): Output: http://webkit-queues.webkit.org/results/2840702 Number of test failures exceeded the failure limit.
Build Bot
Comment 18 2017-01-05 16:51:34 PST
Created attachment 298152 [details] Archive of layout-test-results from ews112 for mac-elcapitan The attached test failures were seen while running run-webkit-tests on the mac-debug-ews. Bot: ews112 Port: mac-elcapitan Platform: Mac OS X 10.11.6
Build Bot
Comment 19 2017-01-05 16:51:56 PST
Comment on attachment 298145 [details] Patch Attachment 298145 [details] did not pass ios-sim-ews (ios-simulator-wk2): Output: http://webkit-queues.webkit.org/results/2840683 Number of test failures exceeded the failure limit.
Build Bot
Comment 20 2017-01-05 16:52:02 PST
Created attachment 298153 [details] Archive of layout-test-results from ews123 for ios-simulator-wk2 The attached test failures were seen while running run-webkit-tests on the ios-sim-ews. Bot: ews123 Port: ios-simulator-wk2 Platform: Mac OS X 10.11.6
Build Bot
Comment 21 2017-01-05 16:57:22 PST
Comment on attachment 298145 [details] Patch Attachment 298145 [details] did not pass mac-ews (mac): Output: http://webkit-queues.webkit.org/results/2840754 Number of test failures exceeded the failure limit.
Build Bot
Comment 22 2017-01-05 16:57:26 PST
Created attachment 298154 [details] Archive of layout-test-results from ews101 for mac-elcapitan The attached test failures were seen while running run-webkit-tests on the mac-ews. Bot: ews101 Port: mac-elcapitan Platform: Mac OS X 10.11.6
Build Bot
Comment 23 2017-01-05 16:58:38 PST
Comment on attachment 298145 [details] Patch Attachment 298145 [details] did not pass mac-wk2-ews (mac-wk2): Output: http://webkit-queues.webkit.org/results/2840752 Number of test failures exceeded the failure limit.
Build Bot
Comment 24 2017-01-05 16:58:42 PST
Created attachment 298155 [details] Archive of layout-test-results from ews107 for mac-elcapitan-wk2 The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews. Bot: ews107 Port: mac-elcapitan-wk2 Platform: Mac OS X 10.11.6
Yusuke Suzuki
Comment 25 2017-01-05 22:07:17 PST
Created attachment 298175 [details] Patch WIP: Fix failures
Yusuke Suzuki
Comment 26 2017-01-05 23:09:23 PST
Created attachment 298177 [details] Patch WIP: Fix failures
Build Bot
Comment 27 2017-01-09 08:44:10 PST
Comment on attachment 298177 [details] Patch Attachment 298177 [details] did not pass mac-ews (mac): Output: http://webkit-queues.webkit.org/results/2858634 Number of test failures exceeded the failure limit.
Build Bot
Comment 28 2017-01-09 08:44:15 PST
Created attachment 298361 [details] Archive of layout-test-results from ews102 for mac-elcapitan The attached test failures were seen while running run-webkit-tests on the mac-ews. Bot: ews102 Port: mac-elcapitan Platform: Mac OS X 10.11.6
Build Bot
Comment 29 2017-01-09 08:46:52 PST
Comment on attachment 298177 [details] Patch Attachment 298177 [details] did not pass mac-wk2-ews (mac-wk2): Output: http://webkit-queues.webkit.org/results/2858635 Number of test failures exceeded the failure limit.
Build Bot
Comment 30 2017-01-09 08:46:56 PST
Created attachment 298363 [details] Archive of layout-test-results from ews107 for mac-elcapitan-wk2 The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews. Bot: ews107 Port: mac-elcapitan-wk2 Platform: Mac OS X 10.11.6
Build Bot
Comment 31 2017-01-09 08:53:35 PST
Comment on attachment 298177 [details] Patch Attachment 298177 [details] did not pass mac-debug-ews (mac): Output: http://webkit-queues.webkit.org/results/2858643 Number of test failures exceeded the failure limit.
Build Bot
Comment 32 2017-01-09 08:53:40 PST
Created attachment 298364 [details] Archive of layout-test-results from ews117 for mac-elcapitan The attached test failures were seen while running run-webkit-tests on the mac-debug-ews. Bot: ews117 Port: mac-elcapitan Platform: Mac OS X 10.11.6
Build Bot
Comment 33 2017-01-09 11:06:16 PST
Comment on attachment 298177 [details] Patch Attachment 298177 [details] did not pass ios-sim-ews (ios-simulator-wk2): Output: http://webkit-queues.webkit.org/results/2859043 Number of test failures exceeded the failure limit.
Build Bot
Comment 34 2017-01-09 11:06:20 PST
Created attachment 298370 [details] Archive of layout-test-results from ews125 for ios-simulator-wk2 The attached test failures were seen while running run-webkit-tests on the ios-sim-ews. Bot: ews125 Port: ios-simulator-wk2 Platform: Mac OS X 10.11.6
Yusuke Suzuki
Comment 35 2017-01-10 21:04:40 PST
This cross origin check requires extended SourceOrigin support which I'm working on for dynamic import and worker modules.
Yusuke Suzuki
Comment 36 2017-01-11 10:44:41 PST
Created attachment 298600 [details] Patch WIP
Yusuke Suzuki
Comment 37 2017-01-11 10:50:15 PST
Created attachment 298601 [details] Patch WIP
Build Bot
Comment 38 2017-01-11 12:29:52 PST
Comment on attachment 298601 [details] Patch Attachment 298601 [details] did not pass mac-ews (mac): Output: http://webkit-queues.webkit.org/results/2871012 Number of test failures exceeded the failure limit.
Build Bot
Comment 39 2017-01-11 12:29:57 PST
Created attachment 298607 [details] Archive of layout-test-results from ews100 for mac-elcapitan The attached test failures were seen while running run-webkit-tests on the mac-ews. Bot: ews100 Port: mac-elcapitan Platform: Mac OS X 10.11.6
Build Bot
Comment 40 2017-01-11 12:32:46 PST
Comment on attachment 298601 [details] Patch Attachment 298601 [details] did not pass mac-debug-ews (mac): Output: http://webkit-queues.webkit.org/results/2871006 Number of test failures exceeded the failure limit.
Build Bot
Comment 41 2017-01-11 12:32:51 PST
Created attachment 298608 [details] Archive of layout-test-results from ews117 for mac-elcapitan The attached test failures were seen while running run-webkit-tests on the mac-debug-ews. Bot: ews117 Port: mac-elcapitan Platform: Mac OS X 10.11.6
Build Bot
Comment 42 2017-01-11 12:43:25 PST
Comment on attachment 298601 [details] Patch Attachment 298601 [details] did not pass mac-wk2-ews (mac-wk2): Output: http://webkit-queues.webkit.org/results/2871058 Number of test failures exceeded the failure limit.
Build Bot
Comment 43 2017-01-11 12:43:29 PST
Created attachment 298609 [details] Archive of layout-test-results from ews105 for mac-elcapitan-wk2 The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews. Bot: ews105 Port: mac-elcapitan-wk2 Platform: Mac OS X 10.11.6
Build Bot
Comment 44 2017-01-11 12:46:09 PST
Comment on attachment 298601 [details] Patch Attachment 298601 [details] did not pass ios-sim-ews (ios-simulator-wk2): Output: http://webkit-queues.webkit.org/results/2871026 Number of test failures exceeded the failure limit.
Build Bot
Comment 45 2017-01-11 12:46:14 PST
Created attachment 298610 [details] Archive of layout-test-results from ews124 for ios-simulator-wk2 The attached test failures were seen while running run-webkit-tests on the ios-sim-ews. Bot: ews124 Port: ios-simulator-wk2 Platform: Mac OS X 10.11.6
Yusuke Suzuki
Comment 46 2017-01-12 05:20:03 PST
Created attachment 298671 [details] Patch WIP
Build Bot
Comment 47 2017-01-12 06:28:28 PST
Comment on attachment 298671 [details] Patch Attachment 298671 [details] did not pass mac-ews (mac): Output: http://webkit-queues.webkit.org/results/2877283 Number of test failures exceeded the failure limit.
Build Bot
Comment 48 2017-01-12 06:28:33 PST
Created attachment 298677 [details] Archive of layout-test-results from ews101 for mac-elcapitan The attached test failures were seen while running run-webkit-tests on the mac-ews. Bot: ews101 Port: mac-elcapitan Platform: Mac OS X 10.11.6
Build Bot
Comment 49 2017-01-12 06:37:40 PST
Comment on attachment 298671 [details] Patch Attachment 298671 [details] did not pass mac-debug-ews (mac): Output: http://webkit-queues.webkit.org/results/2877289 Number of test failures exceeded the failure limit.
Build Bot
Comment 50 2017-01-12 06:37:46 PST
Created attachment 298678 [details] Archive of layout-test-results from ews112 for mac-elcapitan The attached test failures were seen while running run-webkit-tests on the mac-debug-ews. Bot: ews112 Port: mac-elcapitan Platform: Mac OS X 10.11.6
Build Bot
Comment 51 2017-01-12 07:01:55 PST
Comment on attachment 298671 [details] Patch Attachment 298671 [details] did not pass ios-sim-ews (ios-simulator-wk2): Output: http://webkit-queues.webkit.org/results/2877312 Number of test failures exceeded the failure limit.
Build Bot
Comment 52 2017-01-12 07:02:02 PST
Created attachment 298679 [details] Archive of layout-test-results from ews122 for ios-simulator-wk2 The attached test failures were seen while running run-webkit-tests on the ios-sim-ews. Bot: ews122 Port: ios-simulator-wk2 Platform: Mac OS X 10.11.6
Build Bot
Comment 53 2017-01-12 07:22:03 PST
Comment on attachment 298671 [details] Patch Attachment 298671 [details] did not pass mac-wk2-ews (mac-wk2): Output: http://webkit-queues.webkit.org/results/2877429 Number of test failures exceeded the failure limit.
Build Bot
Comment 54 2017-01-12 07:22:10 PST
Created attachment 298680 [details] Archive of layout-test-results from ews105 for mac-elcapitan-wk2 The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews. Bot: ews105 Port: mac-elcapitan-wk2 Platform: Mac OS X 10.11.6
Yusuke Suzuki
Comment 55 2017-01-12 07:50:45 PST
Created attachment 298682 [details] Patch WIP
Build Bot
Comment 56 2017-01-12 08:55:45 PST
Comment on attachment 298682 [details] Patch Attachment 298682 [details] did not pass mac-ews (mac): Output: http://webkit-queues.webkit.org/results/2877735 Number of test failures exceeded the failure limit.
Build Bot
Comment 57 2017-01-12 08:55:51 PST
Created attachment 298685 [details] Archive of layout-test-results from ews100 for mac-elcapitan The attached test failures were seen while running run-webkit-tests on the mac-ews. Bot: ews100 Port: mac-elcapitan Platform: Mac OS X 10.11.6
Build Bot
Comment 58 2017-01-12 09:01:59 PST
Comment on attachment 298682 [details] Patch Attachment 298682 [details] did not pass mac-debug-ews (mac): Output: http://webkit-queues.webkit.org/results/2877740 Number of test failures exceeded the failure limit.
Build Bot
Comment 59 2017-01-12 09:02:05 PST
Created attachment 298686 [details] Archive of layout-test-results from ews117 for mac-elcapitan The attached test failures were seen while running run-webkit-tests on the mac-debug-ews. Bot: ews117 Port: mac-elcapitan Platform: Mac OS X 10.11.6
Build Bot
Comment 60 2017-01-12 09:11:28 PST
Comment on attachment 298682 [details] Patch Attachment 298682 [details] did not pass ios-sim-ews (ios-simulator-wk2): Output: http://webkit-queues.webkit.org/results/2877747 Number of test failures exceeded the failure limit.
Build Bot
Comment 61 2017-01-12 09:11:34 PST
Created attachment 298687 [details] Archive of layout-test-results from ews121 for ios-simulator-wk2 The attached test failures were seen while running run-webkit-tests on the ios-sim-ews. Bot: ews121 Port: ios-simulator-wk2 Platform: Mac OS X 10.11.6
Joseph Pecoraro
Comment 62 2017-01-12 11:05:38 PST
Comment on attachment 298682 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=298682&action=review > LayoutTests/js/dom/unhandled-promise-rejection-console-report.html:14 > +window.promise = []; Nit: promises > LayoutTests/js/dom/unhandled-promise-rejection-console-report.html:19 > +setTimeout(function () { finishJSTest(); }, 100); Its weird to have a 100ms delay to finish a test in the successful case. Can you get away with your own resolve microtask like this: for (var i = 0; i < 3; ++i) window.promises[i] = Promise.reject(i); Promise.resolve().then(finishJSTest); window.onunhandledrejection = function (e) { return true; } > LayoutTests/js/dom/unhandled-promise-rejection-handle-during-event.html:26 > + setTimeout(function () { finishJSTest(); }); Style: Could be setTimeout(finishJSTest) > LayoutTests/js/dom/unhandled-promise-rejection-handle-in-handler.html:31 > + setTimeout(function () { > + finishJSTest(); > + }, 100); Style: Could be setTimeout(finishJSTest, 100) Arg, another one. I guess this one is unavoidable if the goal is to ensure no onrejectionhandled happens for some small amount of time.
Build Bot
Comment 63 2017-01-12 12:13:48 PST
Comment on attachment 298682 [details] Patch Attachment 298682 [details] did not pass mac-wk2-ews (mac-wk2): Output: http://webkit-queues.webkit.org/results/2878370 Number of test failures exceeded the failure limit.
Build Bot
Comment 64 2017-01-12 12:13:55 PST
Created attachment 298704 [details] Archive of layout-test-results from ews105 for mac-elcapitan-wk2 The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews. Bot: ews105 Port: mac-elcapitan-wk2 Platform: Mac OS X 10.11.6
Yusuke Suzuki
Comment 65 2017-02-20 00:14:28 PST
Created attachment 302120 [details] Patch rebaseline
Yusuke Suzuki
Comment 66 2017-02-20 01:41:34 PST
Yusuke Suzuki
Comment 67 2017-02-20 02:00:55 PST
Comment on attachment 302127 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=302127&action=review > Source/WebCore/html/HTMLMediaElement.cpp:3250 > + }); OK, nice. This patch has found a bug in media element. I'll extract this part.
Yusuke Suzuki
Comment 68 2017-02-20 02:08:42 PST
Build Bot
Comment 69 2017-02-20 03:19:23 PST
Comment on attachment 302129 [details] Patch Attachment 302129 [details] did not pass mac-ews (mac): Output: http://webkit-queues.webkit.org/results/3158590 Number of test failures exceeded the failure limit.
Build Bot
Comment 70 2017-02-20 03:19:28 PST
Created attachment 302132 [details] Archive of layout-test-results from ews101 for mac-elcapitan The attached test failures were seen while running run-webkit-tests on the mac-ews. Bot: ews101 Port: mac-elcapitan Platform: Mac OS X 10.11.6
Build Bot
Comment 71 2017-02-20 03:27:56 PST
Comment on attachment 302129 [details] Patch Attachment 302129 [details] did not pass mac-wk2-ews (mac-wk2): Output: http://webkit-queues.webkit.org/results/3158611 Number of test failures exceeded the failure limit.
Build Bot
Comment 72 2017-02-20 03:28:02 PST
Created attachment 302133 [details] Archive of layout-test-results from ews106 for mac-elcapitan-wk2 The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews. Bot: ews106 Port: mac-elcapitan-wk2 Platform: Mac OS X 10.11.6
Build Bot
Comment 73 2017-02-20 03:32:32 PST
Comment on attachment 302129 [details] Patch Attachment 302129 [details] did not pass mac-debug-ews (mac): Output: http://webkit-queues.webkit.org/results/3158601 Number of test failures exceeded the failure limit.
Build Bot
Comment 74 2017-02-20 03:32:37 PST
Created attachment 302134 [details] Archive of layout-test-results from ews115 for mac-elcapitan The attached test failures were seen while running run-webkit-tests on the mac-debug-ews. Bot: ews115 Port: mac-elcapitan Platform: Mac OS X 10.11.6
Build Bot
Comment 75 2017-02-20 03:36:31 PST
Comment on attachment 302129 [details] Patch Attachment 302129 [details] did not pass ios-sim-ews (ios-simulator-wk2): Output: http://webkit-queues.webkit.org/results/3158603 Number of test failures exceeded the failure limit.
Build Bot
Comment 76 2017-02-20 03:36:38 PST
Created attachment 302135 [details] Archive of layout-test-results from ews124 for ios-simulator-wk2 The attached test failures were seen while running run-webkit-tests on the ios-sim-ews. Bot: ews124 Port: ios-simulator-wk2 Platform: Mac OS X 10.11.6
Yusuke Suzuki
Comment 77 2017-02-20 03:36:54 PST
One more finding: We should expose some utility that returns *handled* rejected promise since it is used in whatwg streams. https://streams.spec.whatwg.org/#readable-stream-reader-generic-release Set reader.[[closedPromise]].[[PromiseIsHandled]] to true.
Yusuke Suzuki
Comment 78 2017-02-20 05:09:50 PST
Build Bot
Comment 79 2017-02-20 06:16:26 PST
Comment on attachment 302137 [details] Patch Attachment 302137 [details] did not pass mac-ews (mac): Output: http://webkit-queues.webkit.org/results/3159185 Number of test failures exceeded the failure limit.
Build Bot
Comment 80 2017-02-20 06:16:32 PST
Created attachment 302139 [details] Archive of layout-test-results from ews100 for mac-elcapitan The attached test failures were seen while running run-webkit-tests on the mac-ews. Bot: ews100 Port: mac-elcapitan Platform: Mac OS X 10.11.6
Build Bot
Comment 81 2017-02-20 06:25:13 PST
Comment on attachment 302137 [details] Patch Attachment 302137 [details] did not pass mac-wk2-ews (mac-wk2): Output: http://webkit-queues.webkit.org/results/3159208 Number of test failures exceeded the failure limit.
Build Bot
Comment 82 2017-02-20 06:25:21 PST
Created attachment 302140 [details] Archive of layout-test-results from ews106 for mac-elcapitan-wk2 The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews. Bot: ews106 Port: mac-elcapitan-wk2 Platform: Mac OS X 10.11.6
Build Bot
Comment 83 2017-02-20 06:30:27 PST
Comment on attachment 302137 [details] Patch Attachment 302137 [details] did not pass mac-debug-ews (mac): Output: http://webkit-queues.webkit.org/results/3159205 Number of test failures exceeded the failure limit.
Build Bot
Comment 84 2017-02-20 06:30:33 PST
Created attachment 302141 [details] Archive of layout-test-results from ews117 for mac-elcapitan The attached test failures were seen while running run-webkit-tests on the mac-debug-ews. Bot: ews117 Port: mac-elcapitan Platform: Mac OS X 10.11.6
Build Bot
Comment 85 2017-02-20 06:38:03 PST
Comment on attachment 302137 [details] Patch Attachment 302137 [details] did not pass ios-sim-ews (ios-simulator-wk2): Output: http://webkit-queues.webkit.org/results/3159219 Number of test failures exceeded the failure limit.
Build Bot
Comment 86 2017-02-20 06:38:11 PST
Created attachment 302142 [details] Archive of layout-test-results from ews125 for ios-simulator-wk2 The attached test failures were seen while running run-webkit-tests on the ios-sim-ews. Bot: ews125 Port: ios-simulator-wk2 Platform: Mac OS X 10.11.6
Yusuke Suzuki
Comment 87 2017-03-09 08:16:18 PST
I'll investigate it more in this weekend. Basically, there are several issues, 1. Promise use of Media Element is slightly different from the spec, it causes unintended unhandled promise rejections 2. Stream needs to avoid unhandled promise rejections. Some part of spec explicitly describes it. I think it involves major clean up of Stream / Fetch JS implementation related to promises. 3. Another unhandled promise rejections. I need to investigate it...
Yusuke Suzuki
Comment 88 2017-03-09 11:12:04 PST
Yusuke Suzuki
Comment 89 2017-03-09 12:29:58 PST
Yeah, the patch is getting its shape! The failures decrease to 18! I'm now investigating these failures to check whether this requires test expect file rebaselining. Some may be real bug. But most of them are just requiring expect file rebaselining because we previously ignored unhandled promises.
Build Bot
Comment 90 2017-03-09 12:49:35 PST
Comment on attachment 303937 [details] Patch Attachment 303937 [details] did not pass mac-wk2-ews (mac-wk2): Output: http://webkit-queues.webkit.org/results/3277499 New failing tests: js/promises-tests/promises-tests-2-2-6.html inspector/worker/resources-in-worker.html media/track/track-cues-pause-on-exit.html inspector/debugger/break-on-exception-throw-in-promise.html js/dom/dom-static-property-for-in-iteration.html imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_ecdh_bits.html media/modern-media-controls/start-support/start-support-manual-play.html inspector/debugger/break-on-uncaught-exception-throw-in-promise.html imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/event_pause_noautoplay.html imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_ecdh_keys.html fast/mediastream/MediaStream-MediaElement-setObject-null.html imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/event_play_noautoplay.html imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/paused_true_during_pause.html http/tests/security/video-cross-origin-caching.html
Build Bot
Comment 91 2017-03-09 12:49:40 PST
Created attachment 303957 [details] Archive of layout-test-results from ews105 for mac-elcapitan-wk2 The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews. Bot: ews105 Port: mac-elcapitan-wk2 Platform: Mac OS X 10.11.6
Build Bot
Comment 92 2017-03-09 12:57:38 PST
Comment on attachment 303937 [details] Patch Attachment 303937 [details] did not pass mac-debug-ews (mac): Output: http://webkit-queues.webkit.org/results/3277494 New failing tests: js/promises-tests/promises-tests-2-2-6.html imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_ecdh_keys.html media/W3C/audio/events/event_pause_manual.html media/track/track-cues-pause-on-exit.html inspector/debugger/break-on-exception-throw-in-promise.html js/dom/dom-static-property-for-in-iteration.html streams/reference-implementation/abstract-ops.html imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_ecdh_bits.html imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/paused_true_during_pause.html inspector/debugger/break-on-uncaught-exception-throw-in-promise.html imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/event_pause_noautoplay.html imported/w3c/web-platform-tests/streams/readable-byte-streams/general.html imported/w3c/web-platform-tests/streams/readable-streams/tee.html http/tests/security/video-cross-origin-caching.html imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/event_play_noautoplay.html media/W3C/video/events/event_pause_manual.html media/W3C/video/paused/paused_true_during_pause.html
Build Bot
Comment 93 2017-03-09 12:57:46 PST
Created attachment 303961 [details] Archive of layout-test-results from ews113 for mac-elcapitan The attached test failures were seen while running run-webkit-tests on the mac-debug-ews. Bot: ews113 Port: mac-elcapitan Platform: Mac OS X 10.11.6
Build Bot
Comment 94 2017-03-09 13:03:31 PST
Comment on attachment 303937 [details] Patch Attachment 303937 [details] did not pass mac-ews (mac): Output: http://webkit-queues.webkit.org/results/3277571 New failing tests: js/promises-tests/promises-tests-2-2-6.html inspector/worker/resources-in-worker.html media/track/track-cues-pause-on-exit.html inspector/debugger/break-on-exception-throw-in-promise.html js/dom/dom-static-property-for-in-iteration.html imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_ecdh_bits.html imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/paused_true_during_pause.html inspector/debugger/break-on-uncaught-exception-throw-in-promise.html imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_ecdh_keys.html http/tests/security/video-cross-origin-caching.html imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/event_play_noautoplay.html imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/event_pause_noautoplay.html
Build Bot
Comment 95 2017-03-09 13:03:38 PST
Created attachment 303963 [details] Archive of layout-test-results from ews100 for mac-elcapitan The attached test failures were seen while running run-webkit-tests on the mac-ews. Bot: ews100 Port: mac-elcapitan Platform: Mac OS X 10.11.6
Build Bot
Comment 96 2017-03-09 13:13:41 PST
Comment on attachment 303937 [details] Patch Attachment 303937 [details] did not pass ios-sim-ews (ios-simulator-wk2): Output: http://webkit-queues.webkit.org/results/3277555 New failing tests: imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_ecdh_bits.html streams/brand-checks.html media/track/track-cues-pause-on-exit.html imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_ecdh_keys.html http/tests/security/video-cross-origin-caching.html
Build Bot
Comment 97 2017-03-09 13:13:48 PST
Created attachment 303970 [details] Archive of layout-test-results from ews123 for ios-simulator-wk2 The attached test failures were seen while running run-webkit-tests on the ios-sim-ews. Bot: ews123 Port: ios-simulator-wk2 Platform: Mac OS X 10.11.6
Joseph Pecoraro
Comment 98 2017-04-18 15:52:43 PDT
I'm going to pick this up again!
Joseph Pecoraro
Comment 99 2017-04-18 15:54:08 PDT
> 1. Promise use of Media Element is slightly different from the spec, it > causes unintended unhandled promise rejections I see you slightly tackled this in your most current patch. > 2. Stream needs to avoid unhandled promise rejections. Some part of spec > explicitly describes it. I think it involves major clean up of Stream / > Fetch JS implementation related to promises. > 3. Another unhandled promise rejections. I need to investigate it... I'll look into these.
Joseph Pecoraro
Comment 100 2017-04-18 16:20:01 PDT
Comment on attachment 303937 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=303937&action=review > Source/JavaScriptCore/builtins/PromiseOperations.js:91 > @globalPrivate > +function newRejectedPromise(error) > +{ > + return @Promise.@reject(error); > +} This is unused, since everyone just uses @Promise.@reject directly right now. I think its fine, since the only real special case we care about is creating a handled rejected promise (the function below).
Joseph Pecoraro
Comment 101 2017-04-18 20:52:48 PDT
Support for workers will require a lot of smaller miscellaneous changes. Essentially making the equivalent of JSMainThreadExecState for workers, since JSMainThreadExecState automatically does operations when completing a task in the script execution context (microtask checkpoint, poke the promise tracker queue, etc), and that doesn't appear to exist for Workers. To avoid cluttering and increasing the complexity of this patch lets add Worker support in a follow-up.
Joseph Pecoraro
Comment 102 2017-04-19 22:26:06 PDT
Created attachment 307555 [details] [PATCH] Rebaselined - For Bots Patch only, updated with a few new tests, plenty of new test expectations, and a few minor changes (mainly for inspector). Lets see what new tests fail.
Build Bot
Comment 103 2017-04-19 23:59:33 PDT
Comment on attachment 307555 [details] [PATCH] Rebaselined - For Bots Attachment 307555 [details] did not pass mac-wk2-ews (mac-wk2): Output: http://webkit-queues.webkit.org/results/3568148 New failing tests: webrtc/libwebrtc/release-while-creating-offer.html media/track/track-cues-pause-on-exit.html imported/w3c/web-platform-tests/streams/piping/general.html inspector/worker/resources-in-worker.html webrtc/libwebrtc/release-while-setting-local-description.html fast/mediastream/MediaStream-MediaElement-setObject-null.html
Build Bot
Comment 104 2017-04-19 23:59:36 PDT
Created attachment 307565 [details] Archive of layout-test-results from ews105 for mac-elcapitan-wk2 The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews. Bot: ews105 Port: mac-elcapitan-wk2 Platform: Mac OS X 10.11.6
Build Bot
Comment 105 2017-04-20 00:21:28 PDT
Comment on attachment 307555 [details] [PATCH] Rebaselined - For Bots Attachment 307555 [details] did not pass mac-debug-ews (mac): Output: http://webkit-queues.webkit.org/results/3568180 New failing tests: imported/w3c/web-platform-tests/streams/piping/general.html streams/brand-checks.html imported/w3c/web-platform-tests/streams/readable-streams/tee.html streams/reference-implementation/abstract-ops.html media/track/track-cues-pause-on-exit.html
Build Bot
Comment 106 2017-04-20 00:21:30 PDT
Created attachment 307571 [details] Archive of layout-test-results from ews116 for mac-elcapitan The attached test failures were seen while running run-webkit-tests on the mac-debug-ews. Bot: ews116 Port: mac-elcapitan Platform: Mac OS X 10.11.6
Build Bot
Comment 107 2017-04-20 00:50:01 PDT
Comment on attachment 307555 [details] [PATCH] Rebaselined - For Bots Attachment 307555 [details] did not pass ios-sim-ews (ios-simulator-wk2): Output: http://webkit-queues.webkit.org/results/3568254 New failing tests: imported/w3c/web-platform-tests/streams/piping/general.html webrtc/libwebrtc/release-while-creating-offer.html webrtc/libwebrtc/release-while-setting-local-description.html media/track/track-cues-pause-on-exit.html
Build Bot
Comment 108 2017-04-20 00:50:06 PDT
Created attachment 307575 [details] Archive of layout-test-results from ews123 for ios-simulator-wk2 The attached test failures were seen while running run-webkit-tests on the ios-sim-ews. Bot: ews123 Port: ios-simulator-wk2 Platform: Mac OS X 10.11.6
Build Bot
Comment 109 2017-04-20 04:18:07 PDT
Comment on attachment 307555 [details] [PATCH] Rebaselined - For Bots Attachment 307555 [details] did not pass mac-ews (mac): Output: http://webkit-queues.webkit.org/results/3569194 New failing tests: imported/w3c/web-platform-tests/streams/piping/general.html inspector/worker/resources-in-worker.html media/track/track-cues-pause-on-exit.html
Build Bot
Comment 110 2017-04-20 04:18:09 PDT
Created attachment 307588 [details] Archive of layout-test-results from ews103 for mac-elcapitan The attached test failures were seen while running run-webkit-tests on the mac-ews. Bot: ews103 Port: mac-elcapitan Platform: Mac OS X 10.11.6
Joseph Pecoraro
Comment 111 2017-04-20 12:45:38 PDT
Created attachment 307618 [details] [PATCH] Rebaselined - For Bots
Joseph Pecoraro
Comment 112 2017-04-20 14:11:47 PDT
> Regressions: Unexpected text-only failures (1) > imported/w3c/web-platform-tests/streams/piping/general.html [ Failure ] This is not failing for me. I'm going to rebaseline again
jochen
Comment 113 2017-04-20 14:20:54 PDT
btw, what's the different between the new tests you added and the wpt tests?
Joseph Pecoraro
Comment 114 2017-04-20 14:37:21 PDT
(In reply to jochen from comment #113) > btw, what's the different between the new tests you added and the wpt tests? Nothing specific, they are very basic. I briefly tested the wpt's on w3c-test.org and I plan on importing them into WebKit.
Build Bot
Comment 115 2017-04-20 14:37:40 PDT
Comment on attachment 307618 [details] [PATCH] Rebaselined - For Bots Attachment 307618 [details] did not pass mac-ews (mac): Output: http://webkit-queues.webkit.org/results/3571857 New failing tests: imported/w3c/web-platform-tests/streams/piping/general.html media/track/track-cues-pause-on-exit.html
Build Bot
Comment 116 2017-04-20 14:37:42 PDT
Created attachment 307638 [details] Archive of layout-test-results from ews100 for mac-elcapitan The attached test failures were seen while running run-webkit-tests on the mac-ews. Bot: ews100 Port: mac-elcapitan Platform: Mac OS X 10.11.6
Build Bot
Comment 117 2017-04-20 14:38:41 PDT
Comment on attachment 307618 [details] [PATCH] Rebaselined - For Bots Attachment 307618 [details] did not pass mac-wk2-ews (mac-wk2): Output: http://webkit-queues.webkit.org/results/3571853 New failing tests: imported/w3c/web-platform-tests/streams/piping/general.html media/track/track-cues-pause-on-exit.html
Build Bot
Comment 118 2017-04-20 14:38:43 PDT
Created attachment 307639 [details] Archive of layout-test-results from ews105 for mac-elcapitan-wk2 The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews. Bot: ews105 Port: mac-elcapitan-wk2 Platform: Mac OS X 10.11.6
Joseph Pecoraro
Comment 119 2017-04-20 14:38:58 PDT
(In reply to Joseph Pecoraro from comment #114) > (In reply to jochen from comment #113) > > btw, what's the different between the new tests you added and the wpt tests? > > Nothing specific, they are very basic. Err, there are a couple specific tests we have regarding seeing Console Logs or not seeing Console Logs based on return value from onunhandledrejection. I don't think wpt has tests for this (or can even test this).
Joseph Pecoraro
Comment 120 2017-04-20 14:56:12 PDT
(In reply to jochen from comment #113) > btw, what's the different between the new tests you added and the wpt tests? If you work on the web-platform-tests for promise rejection events you may be interested in: https://github.com/w3c/web-platform-tests/issues/5629 I'll be filing other web-platform-tests issues / browser issues if I encounter issues / differences.
Build Bot
Comment 121 2017-04-20 15:08:57 PDT
Comment on attachment 307618 [details] [PATCH] Rebaselined - For Bots Attachment 307618 [details] did not pass mac-debug-ews (mac): Output: http://webkit-queues.webkit.org/results/3572052 New failing tests: streams/brand-checks.html media/W3C/audio/paused/paused_true_during_pause.html media/track/track-cues-pause-on-exit.html imported/w3c/web-platform-tests/streams/piping/general.html imported/w3c/web-platform-tests/streams/readable-streams/tee.html streams/reference-implementation/abstract-ops.html
Build Bot
Comment 122 2017-04-20 15:08:59 PDT
Created attachment 307644 [details] Archive of layout-test-results from ews116 for mac-elcapitan The attached test failures were seen while running run-webkit-tests on the mac-debug-ews. Bot: ews116 Port: mac-elcapitan Platform: Mac OS X 10.11.6
Build Bot
Comment 123 2017-04-20 15:11:07 PDT
Comment on attachment 307618 [details] [PATCH] Rebaselined - For Bots Attachment 307618 [details] did not pass ios-sim-ews (ios-simulator-wk2): Output: http://webkit-queues.webkit.org/results/3571965 New failing tests: imported/w3c/web-platform-tests/streams/piping/general.html media/track/track-cues-pause-on-exit.html
Build Bot
Comment 124 2017-04-20 15:11:10 PDT
Created attachment 307645 [details] Archive of layout-test-results from ews126 for ios-simulator-wk2 The attached test failures were seen while running run-webkit-tests on the ios-sim-ews. Bot: ews126 Port: ios-simulator-wk2 Platform: Mac OS X 10.11.6
Joseph Pecoraro
Comment 125 2017-04-20 16:12:47 PDT
So all (most?) of the testharness failures for onunhandledrejection are because our testharnessreport.js has a setTimeout in the completion handler. When completion happens, we have 0 failures, then after a setTimeout, we update the UI by which time there are non-0 failures because onunhandledrejection (like onerror) acts like a failure. The setTimeout is adding flakiness. It was added for Resource Timing tests less than a year ago. So I'm going to try removing it. That should mean a lot of the rebaslines I just did might be able to go back to what they had.
Joseph Pecoraro
Comment 126 2017-04-20 17:44:39 PDT
Created attachment 307668 [details] [PATCH] Rebaselined - For Bots
Joseph Pecoraro
Comment 127 2017-04-20 17:45:24 PDT
Pretty soon I'm going to start marking remaining tests as flakey if they continue to be flakey with this error: See Bug 171094.
Alexey Proskuryakov
Comment 128 2017-04-20 18:43:00 PDT
What would that mean for our test coverage? Reducing test coverage in unrelated features doesn't seem like something that should be done to add another feature.
Joseph Pecoraro
Comment 129 2017-04-20 18:55:04 PDT
(In reply to Alexey Proskuryakov from comment #128) > What would that mean for our test coverage? Reducing test coverage in > unrelated features doesn't seem like something that should be done to add > another feature. It seems only to be an issue with media tests (video.play can produce an error) and streams test. And the ones I'm marking as flakey are web-platform-tests which I don't think we want to modify the test directly.
Build Bot
Comment 130 2017-04-20 19:06:42 PDT
Comment on attachment 307668 [details] [PATCH] Rebaselined - For Bots Attachment 307668 [details] did not pass mac-ews (mac): Output: http://webkit-queues.webkit.org/results/3573382 New failing tests: streams/reference-implementation/readable-stream-templated.html imported/w3c/web-platform-tests/user-timing/measure_exceptions_navigation_timing.html media/track/track-cues-pause-on-exit.html imported/w3c/web-platform-tests/html/syntax/parsing/html5lib_innerHTML_adoption01.html
Build Bot
Comment 131 2017-04-20 19:06:44 PDT
Created attachment 307675 [details] Archive of layout-test-results from ews101 for mac-elcapitan The attached test failures were seen while running run-webkit-tests on the mac-ews. Bot: ews101 Port: mac-elcapitan Platform: Mac OS X 10.11.6
Build Bot
Comment 132 2017-04-20 19:14:50 PDT
Comment on attachment 307668 [details] [PATCH] Rebaselined - For Bots Attachment 307668 [details] did not pass mac-wk2-ews (mac-wk2): Output: http://webkit-queues.webkit.org/results/3573391 New failing tests: media/track/track-cues-pause-on-exit.html streams/reference-implementation/readable-stream-templated.html streams/reference-implementation/abstract-ops.html media/modern-media-controls/start-support/start-support-manual-play.html imported/w3c/web-platform-tests/user-timing/measure_exceptions_navigation_timing.html imported/w3c/web-platform-tests/html/syntax/parsing/html5lib_innerHTML_adoption01.html
Build Bot
Comment 133 2017-04-20 19:14:51 PDT
Created attachment 307677 [details] Archive of layout-test-results from ews105 for mac-elcapitan-wk2 The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews. Bot: ews105 Port: mac-elcapitan-wk2 Platform: Mac OS X 10.11.6
Joseph Pecoraro
Comment 134 2017-04-20 19:18:24 PDT
Created attachment 307679 [details] [PATCH] Rebaselined - For Bots This should be a final round for the bots.
Build Bot
Comment 135 2017-04-20 20:45:31 PDT
Comment on attachment 307679 [details] [PATCH] Rebaselined - For Bots Attachment 307679 [details] did not pass mac-ews (mac): Output: http://webkit-queues.webkit.org/results/3573783 New failing tests: media/track/track-cues-pause-on-exit.html
Build Bot
Comment 136 2017-04-20 20:45:33 PDT
Created attachment 307687 [details] Archive of layout-test-results from ews101 for mac-elcapitan The attached test failures were seen while running run-webkit-tests on the mac-ews. Bot: ews101 Port: mac-elcapitan Platform: Mac OS X 10.11.6
Build Bot
Comment 137 2017-04-20 20:46:10 PDT
Comment on attachment 307679 [details] [PATCH] Rebaselined - For Bots Attachment 307679 [details] did not pass mac-wk2-ews (mac-wk2): Output: http://webkit-queues.webkit.org/results/3573774 New failing tests: media/track/track-cues-pause-on-exit.html
Build Bot
Comment 138 2017-04-20 20:46:12 PDT
Created attachment 307688 [details] Archive of layout-test-results from ews104 for mac-elcapitan-wk2 The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews. Bot: ews104 Port: mac-elcapitan-wk2 Platform: Mac OS X 10.11.6
Build Bot
Comment 139 2017-04-20 21:00:51 PDT
Comment on attachment 307679 [details] [PATCH] Rebaselined - For Bots Attachment 307679 [details] did not pass mac-debug-ews (mac): Output: http://webkit-queues.webkit.org/results/3573806 New failing tests: media/track/track-cues-pause-on-exit.html media/W3C/video/events/event_pause_manual.html
Build Bot
Comment 140 2017-04-20 21:00:53 PDT
Created attachment 307689 [details] Archive of layout-test-results from ews112 for mac-elcapitan The attached test failures were seen while running run-webkit-tests on the mac-debug-ews. Bot: ews112 Port: mac-elcapitan Platform: Mac OS X 10.11.6
Joseph Pecoraro
Comment 141 2017-04-20 21:04:41 PDT
Created attachment 307690 [details] [PATCH] Proposed Fix First reviewable patch. Things left for follow-ups: • Worker Support - workers process microtasks differently, I have a WIP • Promise<T> binding auto conversions - affects only PromiseRejectionEvent construction right now • Muting of Errors - This is mostly a feature of onerror
Ryosuke Niwa
Comment 142 2017-04-20 21:29:33 PDT
Comment on attachment 307690 [details] [PATCH] Proposed Fix View in context: https://bugs.webkit.org/attachment.cgi?id=307690&action=review > Source/JavaScriptCore/builtins/BuiltinNames.h:85 > + macro(hostPromiseRejectionTracker) \ It's very strange > Source/WebCore/bindings/js/JSDOMConvertPromise.h:-28 > -#include "JSObject.h" Where this did this file come from!? It seems like this is a new file. Why do we have diff like this? > Source/WebCore/bindings/js/JSDOMWindowBase.cpp:404 > + // The state of InternalPromise is hidden in the browser side. I don't understand what this means. Is JSInternalPromise builtin-only objects that shouldn't be exposed to author scripts? > Source/WebCore/bindings/js/JSDOMWindowBase.cpp:410 > + // FIXME: Cross origin check. > + auto sourceOrigin = exec->callerSourceOrigin(); > + UNUSED_PARAM(sourceOrigin); What kind of cross-origin check are we expecting to perform?
Build Bot
Comment 143 2017-04-20 22:30:03 PDT
Comment on attachment 307690 [details] [PATCH] Proposed Fix Attachment 307690 [details] did not pass mac-ews (mac): Output: http://webkit-queues.webkit.org/results/3574150 New failing tests: media/video-play-pause-events.html media/video-played-ranges-1.html media/video-multiple-concurrent-playback.html
Build Bot
Comment 144 2017-04-20 22:30:05 PDT
Created attachment 307693 [details] Archive of layout-test-results from ews102 for mac-elcapitan The attached test failures were seen while running run-webkit-tests on the mac-ews. Bot: ews102 Port: mac-elcapitan Platform: Mac OS X 10.11.6
Build Bot
Comment 145 2017-04-20 22:34:36 PDT
Comment on attachment 307690 [details] [PATCH] Proposed Fix Attachment 307690 [details] did not pass mac-wk2-ews (mac-wk2): Output: http://webkit-queues.webkit.org/results/3574154 New failing tests: media/video-play-pause-events.html media/video-played-ranges-1.html media/video-multiple-concurrent-playback.html
Build Bot
Comment 146 2017-04-20 22:34:38 PDT
Created attachment 307694 [details] Archive of layout-test-results from ews105 for mac-elcapitan-wk2 The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews. Bot: ews105 Port: mac-elcapitan-wk2 Platform: Mac OS X 10.11.6
Build Bot
Comment 147 2017-04-20 23:01:45 PDT
Comment on attachment 307690 [details] [PATCH] Proposed Fix Attachment 307690 [details] did not pass mac-debug-ews (mac): Output: http://webkit-queues.webkit.org/results/3574212 New failing tests: media/video-play-pause-events.html media/video-played-ranges-1.html media/video-multiple-concurrent-playback.html
Build Bot
Comment 148 2017-04-20 23:01:47 PDT
Created attachment 307696 [details] Archive of layout-test-results from ews112 for mac-elcapitan The attached test failures were seen while running run-webkit-tests on the mac-debug-ews. Bot: ews112 Port: mac-elcapitan Platform: Mac OS X 10.11.6
Build Bot
Comment 149 2017-04-21 00:58:20 PDT
Comment on attachment 307690 [details] [PATCH] Proposed Fix Attachment 307690 [details] did not pass ios-sim-ews (ios-simulator-wk2): Output: http://webkit-queues.webkit.org/results/3574685 New failing tests: media/video-play-pause-events.html media/video-played-ranges-1.html media/video-multiple-concurrent-playback.html
Build Bot
Comment 150 2017-04-21 00:58:22 PDT
Created attachment 307707 [details] Archive of layout-test-results from ews121 for ios-simulator-wk2 The attached test failures were seen while running run-webkit-tests on the ios-sim-ews. Bot: ews121 Port: ios-simulator-wk2 Platform: Mac OS X 10.11.6
Joseph Pecoraro
Comment 151 2017-04-21 17:44:19 PDT
Comment on attachment 307690 [details] [PATCH] Proposed Fix View in context: https://bugs.webkit.org/attachment.cgi?id=307690&action=review >> Source/JavaScriptCore/builtins/BuiltinNames.h:85 >> + macro(hostPromiseRejectionTracker) \ > > It's very strange This is the name of the hook in the spec: ... perform HostPromiseRejectionTracker(promise, "handle") ... >> Source/WebCore/bindings/js/JSDOMConvertPromise.h:-28 >> -#include "JSObject.h" > > Where this did this file come from!? It seems like this is a new file. Why do we have diff like this? This is just git thinking the files are similar. I'll put up another patch where git considers them different. >> Source/WebCore/bindings/js/JSDOMWindowBase.cpp:404 >> + // The state of InternalPromise is hidden in the browser side. > > I don't understand what this means. > Is JSInternalPromise builtin-only objects that shouldn't be exposed to author scripts? Yusuke added this originally. Your comment is mostly correct. Internal Promise looks like WebCore internal only promises used by module loading. But the salient point is that we don't want to expose them to author scripts. >> Source/WebCore/bindings/js/JSDOMWindowBase.cpp:410 >> + UNUSED_PARAM(sourceOrigin); > > What kind of cross-origin check are we expecting to perform? The spec says: https://html.spec.whatwg.org/multipage/webappapis.html#the-hostpromiserejectiontracker-implementation 2. If script has muted errors, terminate these steps. I'll clarify this.
Joseph Pecoraro
Comment 152 2017-04-21 17:46:50 PDT
Created attachment 307850 [details] [PATCH] Proposed Fix
Joseph Pecoraro
Comment 153 2017-04-21 19:15:59 PDT
Comment on attachment 307850 [details] [PATCH] Proposed Fix View in context: https://bugs.webkit.org/attachment.cgi?id=307850&action=review > Source/WebCore/html/HTMLMediaElement.cpp:3295 > + m_promiseTaskQueue.enqueueTask([this]() { > + scheduleTimeupdateEvent(false); > + scheduleEvent(eventNames().pauseEvent); > + rejectPendingPlayPromises(DOMError::create("AbortError", "The operation was aborted.")); > + }); Apparently this seems to break: media/track/track-cues-pause-on-exit.html So I'll have to think about this. The rest of the patch is reviewable.
Build Bot
Comment 154 2017-04-21 19:25:31 PDT
Comment on attachment 307850 [details] [PATCH] Proposed Fix Attachment 307850 [details] did not pass mac-wk2-ews (mac-wk2): Output: http://webkit-queues.webkit.org/results/3580384 New failing tests: media/track/track-cues-pause-on-exit.html
Build Bot
Comment 155 2017-04-21 19:25:33 PDT
Created attachment 307862 [details] Archive of layout-test-results from ews106 for mac-elcapitan-wk2 The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews. Bot: ews106 Port: mac-elcapitan-wk2 Platform: Mac OS X 10.11.6
Build Bot
Comment 156 2017-04-21 19:26:59 PDT
Comment on attachment 307850 [details] [PATCH] Proposed Fix Attachment 307850 [details] did not pass mac-ews (mac): Output: http://webkit-queues.webkit.org/results/3580387 New failing tests: media/track/track-cues-pause-on-exit.html
Build Bot
Comment 157 2017-04-21 19:27:01 PDT
Created attachment 307863 [details] Archive of layout-test-results from ews103 for mac-elcapitan The attached test failures were seen while running run-webkit-tests on the mac-ews. Bot: ews103 Port: mac-elcapitan Platform: Mac OS X 10.11.6
Build Bot
Comment 158 2017-04-21 20:21:09 PDT
Comment on attachment 307850 [details] [PATCH] Proposed Fix Attachment 307850 [details] did not pass ios-sim-ews (ios-simulator-wk2): Output: http://webkit-queues.webkit.org/results/3580672 New failing tests: media/track/track-cues-pause-on-exit.html
Build Bot
Comment 159 2017-04-21 20:21:11 PDT
Created attachment 307871 [details] Archive of layout-test-results from ews125 for ios-simulator-wk2 The attached test failures were seen while running run-webkit-tests on the ios-sim-ews. Bot: ews125 Port: ios-simulator-wk2 Platform: Mac OS X 10.11.6
Build Bot
Comment 160 2017-04-22 00:53:20 PDT
Comment on attachment 307850 [details] [PATCH] Proposed Fix Attachment 307850 [details] did not pass mac-debug-ews (mac): Output: http://webkit-queues.webkit.org/results/3582827 New failing tests: media/track/track-cues-pause-on-exit.html
Build Bot
Comment 161 2017-04-22 00:53:22 PDT
Created attachment 307899 [details] Archive of layout-test-results from ews112 for mac-elcapitan The attached test failures were seen while running run-webkit-tests on the mac-debug-ews. Bot: ews112 Port: mac-elcapitan Platform: Mac OS X 10.11.6
Yusuke Suzuki
Comment 162 2017-04-22 02:18:08 PDT
Comment on attachment 307690 [details] [PATCH] Proposed Fix View in context: https://bugs.webkit.org/attachment.cgi?id=307690&action=review >>> Source/WebCore/bindings/js/JSDOMWindowBase.cpp:404 >>> + // The state of InternalPromise is hidden in the browser side. >> >> I don't understand what this means. >> Is JSInternalPromise builtin-only objects that shouldn't be exposed to author scripts? > > Yusuke added this originally. Your comment is mostly correct. Internal Promise looks like WebCore internal only promises used by module loading. But the salient point is that we don't want to expose them to author scripts. Right. JSInternalPromise also uses the same operation functions in PromiseOperations.js, thus, there is a change that InternalPromise comes here. But we do not want to expose it to userspace.
Ryosuke Niwa
Comment 163 2017-04-22 12:07:04 PDT
Comment on attachment 307850 [details] [PATCH] Proposed Fix View in context: https://bugs.webkit.org/attachment.cgi?id=307850&action=review Reviewed test changes. > LayoutTests/ChangeLog:38 > + Report results immediately and then finish the test after a turn. This way > + if the test ends with a pass, but may get unhandled rejections after > + completing which should not make the test appear as if it failed. Some tests > + have unhandled promise rejections but are expected to pass. Likewise some > + tests perform cleanup in their own completion callbacks, which happen after > + this initial completion callback, and we want to report results after all > + the work is done as it may eliminate non-deterministic debug test output. I'm afraid that some tests might be reporting some errors in completion handlers. It seems to me there isn't much harm to rebaselining the tests with unhandled promise rejection logs so long as they're deterministic although we may want to do that in a separate patch since I'd expect there will be a lot of tests that have unhandled rejected promises. > LayoutTests/js/dom/dom-static-property-for-in-iteration-expected.txt:115 > -PASS a["offsetTop"] is 1689 > +PASS a["offsetTop"] is 1719 Why did this change? Does this change each time a new global property is added!? > LayoutTests/js/dom/unhandled-promise-rejection-basic.html:17 > +window.onunhandledrejection = function (e) { > + error = e; We could have done: window.error = error and spelled out error instead of using a single letter variable name. > LayoutTests/js/dom/unhandled-promise-rejection-basic.html:18 > + shouldBe(`error.type`, `"unhandledrejection"`); It seems template literal isn't needed in all these shouldBe statements. > LayoutTests/js/dom/unhandled-promise-rejection-bindings-type-error.html:17 > + error = e; Ditto. > LayoutTests/js/dom/unhandled-promise-rejection-bindings-type-error.html:18 > + shouldBe(`error.promise`, `promise`); Ditto about not needing template literal. > LayoutTests/js/dom/unhandled-promise-rejection-console-no-report.html:19 > +window.onunhandledrejection = function (e) { Spell out error or omit the argument. > LayoutTests/js/dom/unhandled-promise-rejection-console-no-report.html:27 > +}, 100); Why 100ms? setTimeout(0) should be sufficient given that would be in the next runloop. Promise rejection happens at the end of the current micro task. > LayoutTests/js/dom/unhandled-promise-rejection-console-report-expected.txt:4 > +Test unhandled promise rejection event produces console messages. The condition under which this test should be included in the description. e.g. "The test passes when you see three console messages for unhandled promise rejection" > LayoutTests/js/dom/unhandled-promise-rejection-console-report-expected.txt:10 > +PASS successfullyParsed is true > + > +TEST COMPLETE It's misleading to use js-test-pre.js in this test case because the pass condition depends on the stdout output. > LayoutTests/js/dom/unhandled-promise-rejection-console-report.html:18 > +window.onunhandledrejection = function (e) { return true; }; Spell out error or omit the argument. > LayoutTests/js/dom/unhandled-promise-rejection-console-report.html:19 > +setTimeout(function () { finishJSTest(); }, 100); Ditto about not needing 100ms delay. > LayoutTests/js/dom/unhandled-promise-rejection-handle-during-event.html:17 > +window.onunhandledrejection = function (e) { > + error = e; Ditto about window.error = error. > LayoutTests/js/dom/unhandled-promise-rejection-handle-during-event.html:19 > + shouldBe(`error.type`, `"unhandledrejection"`); ditto about not needing template literals. > LayoutTests/js/dom/unhandled-promise-rejection-handle-during-event.html:26 > + promise[1].catch(function () { }); > + promise[2].catch(function () { }); > + setTimeout(function () { finishJSTest(); }); Why not arrow functions? I know this would result in setTimeout(~, 0) but why don't we explicitly do that? > LayoutTests/js/dom/unhandled-promise-rejection-handle-during-event.html:31 > +for (var i = 0; i < 3; ++i) > + window.promise[i] = Promise.reject(i); What's the significance of having three rejected promises? Also, I'd prefer if this was done inside evalAndLog so that it's apparent in the expected result. > LayoutTests/js/dom/unhandled-promise-rejection-handle-in-handler.html:19 > +window.onunhandledrejection = function (e) { > + error = e; Ditto about window.error = error. > LayoutTests/js/dom/unhandled-promise-rejection-handle-in-handler.html:25 > + promise.catch(function (r) { > + window.reason = r; Maybe window.reason = reason? > LayoutTests/js/dom/unhandled-promise-rejection-handle-in-handler.html:31 > + }, 100); Ditto about not needing 100ms delay. > LayoutTests/js/dom/unhandled-promise-rejection-handle.html:20 > +window.onunhandledrejection = function (e) { > + error = e; Ditto about window.error = error. > LayoutTests/js/dom/unhandled-promise-rejection-handle.html:35 > +window.onrejectionhandled = function (e) { > + window.handled = e; Ditto. Maybe window.handledError? > LayoutTests/js/dom/unhandled-promise-rejection-order.html:19 > +window.onunhandledrejection = function (e) { > + error = e; Ditto about window.error = error. > LayoutTests/js/dom/unhandled-promise-rejection-order.html:28 > + if (count === 3) > + finishJSTest(); Manually managing index, why don't we push each error into a global array, and then call a separate function in setTimeout(~, 0) to assert them all at once? That'd make it possible to always call finishJSTest in that function. > LayoutTests/media/video-autoplay-allowed-but-fullscreen-required.html:18 > + var promise = video.play(); Why not const or let? > LayoutTests/media/video-main-content-deny-display-none.html:18 > + var promise = video.play(); Ditto. Use const or let? > LayoutTests/media/video-main-content-deny-not-in-dom.html:18 > + var promise = video.play(); Ditto. > LayoutTests/media/video-main-content-deny-not-visible.html:18 > + var promise = video.play(); Ditto. > LayoutTests/media/video-main-content-deny-obscured.html:18 > + var promise = video.play(); Ditto. > LayoutTests/media/video-main-content-deny-too-small.html:19 > + var promise = video.play(); Ditto.
Joseph Pecoraro
Comment 164 2017-04-25 14:27:36 PDT
Comment on attachment 307850 [details] [PATCH] Proposed Fix View in context: https://bugs.webkit.org/attachment.cgi?id=307850&action=review >> LayoutTests/ChangeLog:38 >> + the work is done as it may eliminate non-deterministic debug test output. > > I'm afraid that some tests might be reporting some errors in completion handlers. > It seems to me there isn't much harm to rebaselining the tests with unhandled promise rejection logs so long as they're deterministic > although we may want to do that in a separate patch since I'd expect there will be a lot of tests that have unhandled rejected promises. I understand the concern but that seems like it would be an inappropriate use of testharness.js. add_completion_callback is used to add a callback _after_ a set of tests completes. It is provided the status (PASS, FAIL, TIMEOUT). So effectively it is being run after tests have completed. If a test had asynchronous work that would have caused the test to fail it should have failed the test earlier. This also appears to match the reporting out of PASS/FAIL on w3c-test.org. Those tests may have unexpected promise rejections reported after the tests completed, but the test still shows a PASS at the top. They have something like: WindowTestEnvironment.prototype.on_tests_ready = function() { ... add_completion_callback(function (tests, harness_status) { this_obj.output_handler.show_results(tests, harness_status); }); ... }; Which roughly appears to match us here. The only reason I left in the setTimeout is that some tests decide to "clean up" the page in completion handlers. In one Resource Timing tests this is important as it hides a lot of debug output written to the page containing raw timing numbers (which are dynamic) and would need to be hidden in order to the test to have deterministic output. We could be stricter here and disable testharness.js's window.onerror / window.onunhandledpromiserejection once the test is done, but I think that might hide unintended issues that should instead be addressed instead of hidden. >> LayoutTests/js/dom/dom-static-property-for-in-iteration-expected.txt:115 >> +PASS a["offsetTop"] is 1719 > > Why did this change? Does this change each time a new global property is added!? Correct, this is logging all of the properties of an element using the equivalent of `for (var i in element)`. Which is likely happening because we insert the <p id="description"> and #console as the first children of <body>. So as the console fills up with pass messages for earlier properties, then when we evaluate offsetTop it includes all of the console messages preceding it. I can clean this up but it doesn't seem important. >> LayoutTests/js/dom/unhandled-promise-rejection-basic.html:18 >> + shouldBe(`error.type`, `"unhandledrejection"`); > > It seems template literal isn't needed in all these shouldBe statements. This is a style used heavily by JavaScriptCore tests that I tend to agree with. Anytime we use a string to evaluate CODE then template strings are vastly friendlier then using string literals. Most of these comments on the LayoutTests are style preferences that I'd prefer to keep. They are mostly canonical patterns used in tests, and given the tests are pretty small they should be easy to follow. >> LayoutTests/js/dom/unhandled-promise-rejection-console-no-report.html:27 >> +}, 100); > > Why 100ms? setTimeout(0) should be sufficient given that would be in the next runloop. > Promise rejection happens at the end of the current micro task. While that is technically true, this is trying to detect an incorrect implementation! So if an incorrect implementation incorrectly emitted things later then a micro-task it would not have been caught by setTimeout(0). >> LayoutTests/js/dom/unhandled-promise-rejection-console-report-expected.txt:4 >> +Test unhandled promise rejection event produces console messages. > > The condition under which this test should be included in the description. > e.g. "The test passes when you see three console messages for unhandled promise rejection" Sounds good! >> LayoutTests/js/dom/unhandled-promise-rejection-console-report.html:19 >> +setTimeout(function () { finishJSTest(); }, 100); > > Ditto about not needing 100ms delay. In this case we should be able to do setTimeout 0, so I'll update this one. >> LayoutTests/js/dom/unhandled-promise-rejection-handle-during-event.html:31 >> + window.promise[i] = Promise.reject(i); > > What's the significance of having three rejected promises? > Also, I'd prefer if this was done inside evalAndLog so that it's apparent in the expected result. This is testing that the unhandled promise handler is called with only the unhandled promise, the others are handled so should not have triggered the handler. >> LayoutTests/js/dom/unhandled-promise-rejection-handle-in-handler.html:31 >> + }, 100); > > Ditto about not needing 100ms delay. A 0 here should be correct, I'll change. >> LayoutTests/js/dom/unhandled-promise-rejection-order.html:28 >> + finishJSTest(); > > Manually managing index, why don't we push each error into a global array, > and then call a separate function in setTimeout(~, 0) to assert them all at once? > That'd make it possible to always call finishJSTest in that function. Sounds good.
Joseph Pecoraro
Comment 165 2017-04-25 15:20:34 PDT
Comment on attachment 307850 [details] [PATCH] Proposed Fix View in context: https://bugs.webkit.org/attachment.cgi?id=307850&action=review >>> LayoutTests/js/dom/unhandled-promise-rejection-console-no-report.html:27 >>> +}, 100); >> >> Why 100ms? setTimeout(0) should be sufficient given that would be in the next runloop. >> Promise rejection happens at the end of the current micro task. > > While that is technically true, this is trying to detect an incorrect implementation! So if an incorrect implementation incorrectly emitted things later then a micro-task it would not have been caught by setTimeout(0). Actually these cannot be changed to setTimeout(0). The Promise rejection happens at the end of the micro task, but post mircotasks we "queues a task" to notify about unhandled rejections. So we do have to wait a couple task queues. I'll leave these 100ms.
Alexey Proskuryakov
Comment 166 2017-04-25 15:29:15 PDT
The rule of thumb is that no timeout other than 0ms is ever correct in regression tests. We can have threads and processes frozen for several seconds.
Joseph Pecoraro
Comment 167 2017-04-25 15:49:58 PDT
(In reply to Alexey Proskuryakov from comment #166) > The rule of thumb is that no timeout other than 0ms is ever correct in > regression tests. We can have threads and processes frozen for several > seconds. So would it be better to do something like: setTimeout(function() { // Queue a task after a checkpoint setTimeout(function() { // Queue a task after notify unresolved promises task finishTest(); }, 0); }, 0); Without testing I think that might technically be correct in some of these tests, but it looks unnecessarily complex. FWIW, I don't think anyone is writing web-platform-tests with this consideration in mind. So as more and more tests are being written in web-platform-tests it seems like we would have to continually mark them as flakey which is nearly equivalent to no test coverage.
Joseph Pecoraro
Comment 168 2017-04-25 15:53:22 PDT
Another alternative is to not use timeouts and end tests when expected behavior is reached. But this has other issues: • An unsuccessful test is now a timeout, which is harder to debug • This doesn't catch potential issues if extra events were emitted that the test did not expect. Which could hide an implementation issue. (Some of these tests attempt to cover that situation by making sure event listeners are not fired in some cases).
Alexey Proskuryakov
Comment 169 2017-04-25 17:26:24 PDT
> Another alternative is to not use timeouts and end tests when expected behavior is reached. shouldBecomeEqualTo() is one way to do that that's used in the tests. It is true that failing by timeout is harder to triage.
youenn fablet
Comment 170 2017-04-25 17:38:29 PDT
This is a concern shared by other browsers and fixing wpt flakiness due to 100 ms timeouts happened and is happening. There is no simple solution here, see wpt streams/piping/flow-control.js for a try at it. Setting 5 second timeout seems to be ok for bots and allows giving hints at where tests might be timing out.
Joseph Pecoraro
Comment 171 2017-04-25 19:16:12 PDT
Created attachment 308189 [details] [PATCH] Proposed Fix Fix for the HTMLMediaElement case. There might be some new test changes so this is another for bots.
Build Bot
Comment 172 2017-04-25 20:36:03 PDT
Comment on attachment 308189 [details] [PATCH] Proposed Fix Attachment 308189 [details] did not pass mac-ews (mac): Output: http://webkit-queues.webkit.org/results/3606823 New failing tests: media/video-multiple-concurrent-playback.html media/video-play-pause-events.html media/video-played-collapse.html http/tests/misc/acid3.html
Build Bot
Comment 173 2017-04-25 20:36:05 PDT
Created attachment 308199 [details] Archive of layout-test-results from ews100 for mac-elcapitan The attached test failures were seen while running run-webkit-tests on the mac-ews. Bot: ews100 Port: mac-elcapitan Platform: Mac OS X 10.11.6
Build Bot
Comment 174 2017-04-25 20:43:31 PDT
Comment on attachment 308189 [details] [PATCH] Proposed Fix Attachment 308189 [details] did not pass mac-wk2-ews (mac-wk2): Output: http://webkit-queues.webkit.org/results/3606792 New failing tests: media/video-multiple-concurrent-playback.html media/video-play-pause-events.html
Build Bot
Comment 175 2017-04-25 20:43:34 PDT
Created attachment 308200 [details] Archive of layout-test-results from ews104 for mac-elcapitan-wk2 The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews. Bot: ews104 Port: mac-elcapitan-wk2 Platform: Mac OS X 10.11.6
Joseph Pecoraro
Comment 176 2017-04-25 20:53:03 PDT
> New failing tests: > media/video-multiple-concurrent-playback.html > media/video-play-pause-events.html Okay, I don't know how the current change could cause these, so again I'll have to look into more media tests.
Joseph Pecoraro
Comment 177 2017-04-25 21:08:34 PDT
(In reply to Joseph Pecoraro from comment #176) > > New failing tests: > > media/video-multiple-concurrent-playback.html > > media/video-play-pause-events.html > > Okay, I don't know how the current change could cause these, so again I'll > have to look into more media tests. These both do not appear to be caused by the HTMLMediaElement changes in this patch.
Build Bot
Comment 178 2017-04-25 21:10:08 PDT
Comment on attachment 308189 [details] [PATCH] Proposed Fix Attachment 308189 [details] did not pass ios-sim-ews (ios-simulator-wk2): Output: http://webkit-queues.webkit.org/results/3606837 New failing tests: media/video-play-pause-events.html media/video-multiple-concurrent-playback.html media/video-played-collapse.html media/video-played-reset.html
Build Bot
Comment 179 2017-04-25 21:10:12 PDT
Created attachment 308208 [details] Archive of layout-test-results from ews126 for ios-simulator-wk2 The attached test failures were seen while running run-webkit-tests on the ios-sim-ews. Bot: ews126 Port: ios-simulator-wk2 Platform: Mac OS X 10.11.6
Build Bot
Comment 180 2017-04-25 22:15:32 PDT
Comment on attachment 308189 [details] [PATCH] Proposed Fix Attachment 308189 [details] did not pass mac-debug-ews (mac): Output: http://webkit-queues.webkit.org/results/3607238 New failing tests: media/video-play-pause-events.html media/video-multiple-concurrent-playback.html media/video-played-collapse.html
Build Bot
Comment 181 2017-04-25 22:15:35 PDT
Created attachment 308214 [details] Archive of layout-test-results from ews113 for mac-elcapitan The attached test failures were seen while running run-webkit-tests on the mac-debug-ews. Bot: ews113 Port: mac-elcapitan Platform: Mac OS X 10.11.6
Joseph Pecoraro
Comment 182 2017-04-26 16:47:14 PDT
Created attachment 308308 [details] [PATCH] Proposed Fix Those tests were bogus updated results from an earlier patch. Reverted the bogus changes.
Build Bot
Comment 183 2017-04-26 19:07:02 PDT
Comment on attachment 308308 [details] [PATCH] Proposed Fix Attachment 308308 [details] did not pass ios-sim-ews (ios-simulator-wk2): Output: http://webkit-queues.webkit.org/results/3615143 New failing tests: media/video-played-reset.html
Build Bot
Comment 184 2017-04-26 19:07:04 PDT
Created attachment 308320 [details] Archive of layout-test-results from ews123 for ios-simulator-wk2 The attached test failures were seen while running run-webkit-tests on the ios-sim-ews. Bot: ews123 Port: ios-simulator-wk2 Platform: Mac OS X 10.11.6
Joseph Pecoraro
Comment 185 2017-04-26 19:51:52 PDT
Created attachment 308325 [details] [PATCH] Proposed Fix
Saam Barati
Comment 186 2017-04-26 20:06:41 PDT
Comment on attachment 308308 [details] [PATCH] Proposed Fix View in context: https://bugs.webkit.org/attachment.cgi?id=308308&action=review Some preliminary comments. I'll continue to look later. > Source/JavaScriptCore/builtins/PromiseOperations.js:117 > + @hostPromiseRejectionTracker(promise, @promiseRejectionReject); I wonder if this is worth doing only when we're debugging, and we could also create some mechanism to determine during bytecode generation time statically if something is true/false. Could be something like this: if (@isDebugging) // create some special debugging enabled AST node, and if statement could check for it .... Anyways, I'm not tied to this, but it's less than ideal that we almost make this call even though the vast majority of users will never use web inspector. > Source/JavaScriptCore/runtime/JSGlobalObject.h:268 > + WriteBarrier<JSFunction> m_promiseResolveFunction; This is unused. > Source/WebCore/bindings/js/JSDOMWindowBase.cpp:410 > + // FIXME: If script has muted errors (cross origin), terminate these steps. Is this worth addressing? > Source/WebCore/html/HTMLMediaElement.cpp:3300 > + m_promiseTaskQueue.enqueueTask([this]() { Is a raw |this| safe to capture here?
Yusuke Suzuki
Comment 187 2017-04-27 03:23:03 PDT
Comment on attachment 308308 [details] [PATCH] Proposed Fix View in context: https://bugs.webkit.org/attachment.cgi?id=308308&action=review >> Source/JavaScriptCore/builtins/PromiseOperations.js:117 >> + @hostPromiseRejectionTracker(promise, @promiseRejectionReject); > > I wonder if this is worth doing only when we're debugging, and we could also create some mechanism to determine during bytecode generation time statically if something is true/false. > > Could be something like this: > if (@isDebugging) // create some special debugging enabled AST node, and if statement could check for it > .... > > Anyways, I'm not tied to this, but it's less than ideal that we almost make this call even though the vast majority of users will never use web inspector. Even if the inspector is not opened, unhandled rejection event is emitted. So, we can observe this behavior with the code `window.addEventListener('unhandledrejection', ..., false)`. One idea I have is that implementing large part of them in JSC side and only invokes registered hanlder if some WebCore operation is necessary. If we can implement the system in JS, we can optimize it easily in JSC side. (For example, if the remember set of rejected promises is implemented in JS WeakMap, we can optimize it if we optimize WeakMap operations in JSC). But I think it's not a big deal right now. >> Source/WebCore/bindings/js/JSDOMWindowBase.cpp:410 >> + // FIXME: If script has muted errors (cross origin), terminate these steps. > > Is this worth addressing? Personally, if this bug will be fixed soon, I think separate bug is OK. It involves reasonable amount of change to SourceOrigin to remember the origin of the executing code. And maybe, separating security check system from CachedScript is also required.
Joseph Pecoraro
Comment 188 2017-04-27 11:23:36 PDT
Comment on attachment 308308 [details] [PATCH] Proposed Fix View in context: https://bugs.webkit.org/attachment.cgi?id=308308&action=review Thanks for looking! >>> Source/JavaScriptCore/builtins/PromiseOperations.js:117 >>> + @hostPromiseRejectionTracker(promise, @promiseRejectionReject); >> >> I wonder if this is worth doing only when we're debugging, and we could also create some mechanism to determine during bytecode generation time statically if something is true/false. >> >> Could be something like this: >> if (@isDebugging) // create some special debugging enabled AST node, and if statement could check for it >> .... >> >> Anyways, I'm not tied to this, but it's less than ideal that we almost make this call even though the vast majority of users will never use web inspector. > > Even if the inspector is not opened, unhandled rejection event is emitted. So, we can observe this behavior with the code `window.addEventListener('unhandledrejection', ..., false)`. > One idea I have is that implementing large part of them in JSC side and only invokes registered hanlder if some WebCore operation is necessary. If we can implement the system in JS, > we can optimize it easily in JSC side. (For example, if the remember set of rejected promises is implemented in JS WeakMap, we can optimize it if we optimize WeakMap operations in JSC). > But I think it's not a big deal right now. Correct, these operations need to always happen in web pages, and for pure JSContexts the hostPromiseRejectionTracker function will immediately bail. If making that call to a native function is expensive we could add an if (@hostHasPromiseRejectionTracker). >>> Source/WebCore/bindings/js/JSDOMWindowBase.cpp:410 >>> + // FIXME: If script has muted errors (cross origin), terminate these steps. >> >> Is this worth addressing? > > Personally, if this bug will be fixed soon, I think separate bug is OK. > It involves reasonable amount of change to SourceOrigin to remember the origin of the executing code. > And maybe, separating security check system from CachedScript is also required. This affects not only Promise Rejection but also window.onerror. Since we are not any worse than window.onerror I think its fine to handle separately. FWIW we probably want Web Inspector to still track things even if the web exposed APIs aren't given them. So Cross Origin uncaught exceptions and unhandled promises should still show in Web Inspector even if they don't trigger onerror / onunhandledrejection. >> Source/WebCore/html/HTMLMediaElement.cpp:3300 >> + m_promiseTaskQueue.enqueueTask([this]() { > > Is a raw |this| safe to capture here? Yes, all these task queues get cleared if the media element is destroyed. There are many uses of different task queues capturing this in their lambdas so this is not a lone occurrence.
Joseph Pecoraro
Comment 189 2017-04-27 11:28:39 PDT
Comment on attachment 308325 [details] [PATCH] Proposed Fix View in context: https://bugs.webkit.org/attachment.cgi?id=308325&action=review > Source/WebCore/dom/RejectedPromiseTracker.cpp:121 > + m_aboutToBeNotifiedRejectedPromises.append(UnhandledPromise { vm, globalObject, promise, createScriptCallStackFromReason(state, reason) }); To Saam's point about only doing work where there is a debugger, we could avoid capturing a call stack here unless there is a debugger. Then, promise rejections would have a smaller impact for users that never open developer tools.
Joseph Pecoraro
Comment 190 2017-04-27 11:32:02 PDT
Created attachment 308417 [details] [PATCH] Proposed Fix
Saam Barati
Comment 191 2017-04-27 17:41:09 PDT
Comment on attachment 308417 [details] [PATCH] Proposed Fix View in context: https://bugs.webkit.org/attachment.cgi?id=308417&action=review r=me > Source/JavaScriptCore/builtins/PromisePrototype.js:61 > + this.@promiseIsHandled = true; So anytime we .then(). a promise, it will be handled, therefore not reporting any exceptions even if we didn't provide a .catch() handle or onRejected function? Is that the expected behavior? Maybe we want to only set promiseIsHandled if the onRejected parameter is a function (before we do the local assignment)? I'm not sure if this behavior is specced or not. > Source/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp:754 > + auto operation = static_cast<JSPromiseRejectionOperation>(operationValue.toUInt32(exec)); nit: Can you add a DEBUG assert (even though this is only called via builtin) that the UINT32 raw value is equal to one of the two enum values > Source/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp:755 > + RETURN_IF_EXCEPTION(scope, encodedJSValue()); Should be an assertion, since this is a number. > Source/WebCore/ChangeLog:16 > + This is currently implemented only for Documents and not yet Web Workers. Do we have a bug to do this for Workers? > Source/WebCore/bindings/js/JSDOMWindowBase.cpp:410 > + // FIXME: If script has muted errors (cross origin), terminate these steps. File a bug? > Source/WebCore/dom/PromiseRejectionEvent.idl:29 > + Exposed=(Window,Worker), Should this include Worker for right now? > Source/WebCore/dom/RejectedPromiseTracker.cpp:121 > + m_aboutToBeNotifiedRejectedPromises.append(UnhandledPromise { vm, globalObject, promise, createScriptCallStackFromReason(state, reason) }); Can we open a bug about not taking a stack trace here all the time? I'd be for only doing this w/ Inspector open. > Source/WebCore/dom/RejectedPromiseTracker.cpp:128 > + bool removed = m_aboutToBeNotifiedRejectedPromises.removeFirstMatching([&] (UnhandledPromise& unhandledPromise) { Having this be a Vector seems slightly dangerous since programs could cause you to do this linear search repeatedly. > Source/WebCore/dom/RejectedPromiseTracker.cpp:152 > + Vector<UnhandledPromise> items; > + items.swap(m_aboutToBeNotifiedRejectedPromises); style nit: I'd write this as: Vector<UnhandledPromise> items = WTFMove(m_aboutToBeNotifiedRejectedPromises); > Source/WebCore/dom/RejectedPromiseTracker.cpp:200 > + initializer.cancelable = false; The spec you link to doesn't set this value. Should we just rely on the default value?
Joseph Pecoraro
Comment 192 2017-04-27 20:17:00 PDT
Comment on attachment 308417 [details] [PATCH] Proposed Fix View in context: https://bugs.webkit.org/attachment.cgi?id=308417&action=review Thanks for the review! >> Source/JavaScriptCore/builtins/PromisePrototype.js:61 >> + this.@promiseIsHandled = true; > > So anytime we .then(). a promise, it will be handled, therefore not reporting any exceptions even if we didn't provide a .catch() handle or onRejected function? > Is that the expected behavior? > > Maybe we want to only set promiseIsHandled if the onRejected parameter is a function (before we do the local assignment)? > I'm not sure if this behavior is specced or not. The behavior is specced: https://tc39.github.io/ecma262/#sec-performpromisethen However ultimately it gets you what you want, since .then produces a new Promise which won't have a rejection handler! So: <script> Promise.reject(1); Promise.reject(2).then(()=>{}) Promise.resolve(99).then(() => { throw 3; }); Promise.reject(99).catch(() => { throw 4; }); </script> Produces Unhandled Rejection messages for 1, 2, 3 and 4, because there was always some runtime exception that gets caught inside a promise without a reaction. >> Source/WebCore/ChangeLog:16 >> + This is currently implemented only for Documents and not yet Web Workers. > > Do we have a bug to do this for Workers? I'll file one. >> Source/WebCore/dom/PromiseRejectionEvent.idl:29 >> + Exposed=(Window,Worker), > > Should this include Worker for right now? Good catch! I had this half implemented and then pulled it out to work on a follow-up. I'll remove from here.
Joseph Pecoraro
Comment 193 2017-04-27 20:37:48 PDT
*** Bug 124066 has been marked as a duplicate of this bug. ***
Joseph Pecoraro
Comment 194 2017-04-27 20:38:08 PDT
Lucas Forschler
Comment 195 2019-02-06 09:19:10 PST
Mass move bugs into the DOM component.
Note You need to log in before you can comment on or make changes to this bug.