Auto merge of #20755 - CYBAI:unhandled-rejection, r=jdm

Implement unhandledrejection event

---
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #15412
- [x] There are tests for these changes

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/20755)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2018-10-23 10:56:38 -04:00 committed by GitHub
commit 30d9962b70
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
71 changed files with 518 additions and 308 deletions

View file

@ -1,4 +1,6 @@
[createImageBitmap-transfer.html]
type: testharness
expected: ERROR
[Transfer ImageBitmap created from an HTMLCanvasElement]
expected: FAIL

View file

@ -613377,7 +613377,7 @@
"testharness"
],
"html/semantics/embedded-content/media-elements/event_pause_noautoplay.html": [
"55482348387de77def1c1be10d3dbe174fa3cb58",
"8b985a65fe372346370075e3e9e992548e9b8abb",
"testharness"
],
"html/semantics/embedded-content/media-elements/event_play.html": [
@ -613385,7 +613385,7 @@
"testharness"
],
"html/semantics/embedded-content/media-elements/event_play_noautoplay.html": [
"67285a95abdca01fd7bc6dc95f4ad8c94b7f8536",
"94fcb837d04c0f82da1660d95465b53bc8a052a6",
"testharness"
],
"html/semantics/embedded-content/media-elements/event_playing.html": [
@ -613685,7 +613685,7 @@
"testharness"
],
"html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-set-src-networkState.html": [
"e195dedb044e4040b5191538b753fe6d77bbefc1",
"ed86dbe0c570f272f03d1e956b62ac7132830898",
"testharness"
],
"html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-set-src-not-in-document.html": [
@ -613785,7 +613785,7 @@
"testharness"
],
"html/semantics/embedded-content/media-elements/paused_true_during_pause.html": [
"6c4eb7c0c09fd2f048c96eff66d58b05ab3e4952",
"2a9335bd4e6026ff1c029fb140c3b146474e3523",
"testharness"
],
"html/semantics/embedded-content/media-elements/playing-the-media-resource/pause-move-to-other-document.html": [
@ -613805,7 +613805,7 @@
"testharness"
],
"html/semantics/embedded-content/media-elements/playing-the-media-resource/play-in-detached-document.html": [
"9c6fd5fabc3d48e7f5a7220dfc5684471bd4c992",
"8e9a7843b734f5e2296593f50daa76f98abacaad",
"testharness"
],
"html/semantics/embedded-content/media-elements/playing-the-media-resource/playbackRate.html": [
@ -664305,7 +664305,7 @@
"support"
],
"webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html": [
"01ba3b122d8c9b5e8107cfc1226bb697e2929645",
"b7e6b93ac42f6dc8b9435447b2b4f78e70c2b597",
"testharness"
],
"webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-one-sample-loop.html": [

View file

@ -6,15 +6,6 @@
expected: FAIL
[idlharness.https.any.serviceworker.html]
expected: TIMEOUT
[Untitled]
expected: FAIL
[idlharness]
expected: FAIL
[idlharness.any.html]
[Untitled]
expected: FAIL
@ -152,7 +143,6 @@
[idlharness.any.serviceworker.html]
expected: TIMEOUT
[idlharness]
expected: FAIL

View file

@ -1,3 +1,7 @@
[backpressure.any.serviceworker.html]
[backpressure]
expected: FAIL
[backpressure.any.sharedworker.html]
[backpressure]
expected: FAIL
@ -7,10 +11,6 @@
[backpressure]
expected: FAIL
[backpressure.any.serviceworker.html]
expected: TIMEOUT
[backpressure.any.worker.html]
[backpressure]
expected: FAIL

View file

@ -1,3 +1,7 @@
[decode-attributes.any.serviceworker.html]
[decode-attributes]
expected: FAIL
[decode-attributes.any.worker.html]
[a throwing fatal member should cause the constructor to throw]
expected: FAIL
@ -173,7 +177,3 @@
[encoding attribute should have correct value for 'ascii']
expected: FAIL
[decode-attributes.any.serviceworker.html]
expected: TIMEOUT

View file

@ -7,9 +7,9 @@
[decode-bad-chunks]
expected: FAIL
[decode-bad-chunks.any.serviceworker.html]
expected: TIMEOUT
[decode-bad-chunks]
expected: FAIL
[decode-bad-chunks.any.sharedworker.html]
[decode-bad-chunks]

View file

@ -35,9 +35,9 @@
[ignoreBOM should work for encoding utf-16le, split at character 0]
expected: FAIL
[decode-ignore-bom.any.serviceworker.html]
expected: TIMEOUT
[decode-ignore-bom]
expected: FAIL
[decode-ignore-bom.any.sharedworker.html]
[decode-ignore-bom]

View file

@ -1,5 +1,6 @@
[decode-incomplete-input.any.serviceworker.html]
expected: TIMEOUT
[decode-incomplete-input]
expected: FAIL
[decode-incomplete-input.any.sharedworker.html]
[decode-incomplete-input]

View file

@ -68,4 +68,5 @@
[decode-non-utf8.any.serviceworker.html]
expected: TIMEOUT
[decode-non-utf8]
expected: FAIL

View file

@ -1,5 +1,6 @@
[decode-split-character.any.serviceworker.html]
expected: TIMEOUT
[decode-split-character]
expected: FAIL
[decode-split-character.any.sharedworker.html]
[decode-split-character]

View file

@ -1,5 +1,6 @@
[decode-utf8.any.serviceworker.html]
expected: TIMEOUT
[decode-utf8]
expected: FAIL
[decode-utf8.any.sharedworker.html]
[decode-utf8]

View file

@ -42,6 +42,6 @@
[encode-bad-chunks]
expected: FAIL
[encode-bad-chunks.any.serviceworker.html]
expected: TIMEOUT
[encode-bad-chunks]
expected: FAIL

View file

@ -120,6 +120,6 @@
[encode-utf8]
expected: FAIL
[encode-utf8.any.serviceworker.html]
expected: TIMEOUT
[encode-utf8]
expected: FAIL

View file

@ -6,9 +6,6 @@
expected: FAIL
[readable-writable-properties.any.serviceworker.html]
expected: TIMEOUT
[readable-writable-properties.any.worker.html]
[TextDecoderStream readable and writable properties must pass brand checks]
expected: FAIL
@ -16,6 +13,9 @@
[TextEncoderStream readable and writable properties must pass brand checks]
expected: FAIL
[readable-writable-properties.any.serviceworker.html]
[readable-writable-properties]
expected: FAIL
[readable-writable-properties.any.sharedworker.html]
[readable-writable-properties]

View file

@ -203,6 +203,9 @@
[Clone aborts with original controller]
expected: FAIL
[general.any.serviceworker.html]
[general]
expected: FAIL
[general.https.any.serviceworker.html]
expected: TIMEOUT
@ -221,8 +224,3 @@
expected: FAIL
[general.any.serviceworker.html]
expected: TIMEOUT
[general]
expected: FAIL

View file

@ -15,7 +15,8 @@
[header-value-combining.any.serviceworker.html]
expected: TIMEOUT
[header-value-combining]
expected: FAIL
[header-value-combining.any.sharedworker.html]
[header-value-combining]

View file

@ -8,4 +8,5 @@
[header-value-null-byte.any.worker.html]
[header-value-null-byte.any.serviceworker.html]
expected: TIMEOUT
[header-value-null-byte]
expected: FAIL

View file

@ -1,5 +1,6 @@
[stream-safe-creation.any.serviceworker.html]
expected: TIMEOUT
[stream-safe-creation]
expected: FAIL
[stream-safe-creation.any.sharedworker.html]
[stream-safe-creation]

View file

@ -140,7 +140,6 @@
[idl.any.serviceworker.html]
expected: TIMEOUT
[idl]
expected: FAIL

View file

@ -44,4 +44,5 @@
[request-init-stream.any.serviceworker.html]
expected: TIMEOUT
[request-init-stream]
expected: FAIL

View file

@ -1,5 +1,6 @@
[response-consume.html]
type: testharness
expected: ERROR
[Consume response's body as arrayBuffer]
expected: FAIL

View file

@ -27,3 +27,6 @@
[Constructing a Response with a stream on which read() is called]
expected: FAIL
[response-from-stream.any.serviceworker.html]
[response-from-stream]
expected: FAIL

View file

@ -19,6 +19,9 @@
[WorkerGlobalScope interface: self must inherit property "addressSpace" with the proper type]
expected: FAIL
[idlharness.tentative.any.serviceworker.html]
[idlharness]
expected: FAIL
[idlharness.tentative.https.any.serviceworker.html]
expected: TIMEOUT
@ -26,10 +29,3 @@
[idlharness.tentative.any.sharedworker.html]
[idlharness]
expected: FAIL
[idlharness.tentative.any.serviceworker.html]
expected: TIMEOUT
[idlharness]
expected: FAIL

View file

@ -1,3 +1,7 @@
[fetch.any.serviceworker.html]
[fetch]
expected: FAIL
[fetch.any.html]
[fetch]
expected: FAIL
@ -44,9 +48,6 @@
expected: FAIL
[fetch.any.serviceworker.html]
expected: TIMEOUT
[fetch.any.sharedworker.html]
[fetch]
expected: FAIL

View file

@ -23,6 +23,9 @@
[Test default toJSON operation of Performance]
expected: FAIL
[idlharness.any.serviceworker.html]
[idlharness]
expected: FAIL
[idlharness.any.sharedworker.html]
[idlharness]
@ -60,9 +63,3 @@
[Test default toJSON operation of Performance]
expected: FAIL
[idlharness.any.serviceworker.html]
expected: TIMEOUT
[idlharness]
expected: TIMEOUT

View file

@ -5234,30 +5234,12 @@
[ApplicationCache interface: window.applicationCache must inherit property "onobsolete" with the proper type]
expected: FAIL
[PromiseRejectionEvent interface: existence and properties of interface object]
expected: FAIL
[PromiseRejectionEvent interface object length]
expected: FAIL
[PromiseRejectionEvent interface object name]
expected: FAIL
[PromiseRejectionEvent interface: existence and properties of interface prototype object]
expected: FAIL
[PromiseRejectionEvent interface: existence and properties of interface prototype object's "constructor" property]
expected: FAIL
[PromiseRejectionEvent interface: existence and properties of interface prototype object's @@unscopables property]
expected: FAIL
[PromiseRejectionEvent interface: attribute promise]
expected: FAIL
[PromiseRejectionEvent interface: attribute reason]
expected: FAIL
[Navigator interface: attribute productSub]
expected: FAIL
@ -11045,30 +11027,12 @@
[ApplicationCache interface: window.applicationCache must inherit property "onobsolete" with the proper type]
expected: FAIL
[PromiseRejectionEvent interface: existence and properties of interface object]
expected: FAIL
[PromiseRejectionEvent interface object length]
expected: FAIL
[PromiseRejectionEvent interface object name]
expected: FAIL
[PromiseRejectionEvent interface: existence and properties of interface prototype object]
expected: FAIL
[PromiseRejectionEvent interface: existence and properties of interface prototype object's "constructor" property]
expected: FAIL
[PromiseRejectionEvent interface: existence and properties of interface prototype object's @@unscopables property]
expected: FAIL
[PromiseRejectionEvent interface: attribute promise]
expected: FAIL
[PromiseRejectionEvent interface: attribute reason]
expected: FAIL
[Navigator interface: attribute productSub]
expected: FAIL

View file

@ -12,15 +12,9 @@
[document.open() and tasks (marquee start)]
expected: TIMEOUT
[tasks without document.open() (Promise rejection)]
expected: TIMEOUT
[tasks without document.open() (marquee start)]
expected: TIMEOUT
[tasks without document.open() (canvas.toBlob())]
expected: FAIL
[document.open() and tasks (Promise rejection)]
expected: TIMEOUT

View file

@ -2,6 +2,9 @@
[It rethrows exceptions]
expected: FAIL
[queue-microtask-exceptions.any.serviceworker.html]
[queue-microtask-exceptions]
expected: FAIL
[queue-microtask-exceptions.https.any.serviceworker.html]
[queue-microtask-exceptions]
@ -17,9 +20,3 @@
[It rethrows exceptions]
expected: FAIL
[queue-microtask-exceptions.any.serviceworker.html]
expected: TIMEOUT
[queue-microtask-exceptions]
expected: FAIL

View file

@ -14,6 +14,9 @@
[It interleaves with promises as expected]
expected: FAIL
[queue-microtask.any.serviceworker.html]
[queue-microtask]
expected: FAIL
[queue-microtask.any.sharedworker.html]
[queue-microtask]
@ -41,10 +44,3 @@
[It interleaves with promises as expected]
expected: FAIL
[queue-microtask.any.serviceworker.html]
expected: TIMEOUT
[queue-microtask]
expected: FAIL

View file

@ -1,6 +1,2 @@
[allow-crossorigin.html]
type: testharness
expected: TIMEOUT
[Promise rejection event should be received for the cross-origin CORS script]
expected: TIMEOUT

View file

@ -0,0 +1,5 @@
[disallow-crossorigin.html]
type: testharness
expected: ERROR
[Promise rejection event should be muted for cross-origin non-CORS script]
expected: FAIL

View file

@ -1,6 +1,2 @@
[promise-rejection-events-attached-in-event.html]
type: testharness
expected: TIMEOUT
[Attaching a handler in unhandledrejection should not trigger rejectionhandled.]
expected: TIMEOUT

View file

@ -1,38 +1,7 @@
[promise-rejection-events.dedicatedworker.html]
type: testharness
expected: TIMEOUT
[unhandledrejection: from Promise.reject]
expected: TIMEOUT
[unhandledrejection: from a synchronous rejection in new Promise]
expected: TIMEOUT
[unhandledrejection: from a task-delayed rejection]
expected: TIMEOUT
[unhandledrejection: from a setTimeout-delayed rejection]
expected: TIMEOUT
[unhandledrejection: from a throw in a rejection handler chained off of Promise.reject]
expected: TIMEOUT
[unhandledrejection: from a throw in a rejection handler chained off of a setTimeout-delayed rejection]
expected: TIMEOUT
[unhandledrejection: from a throw in a rejection handler attached one microtask after a setTimeout-delayed rejection]
expected: TIMEOUT
[unhandledrejection: from returning a Promise.reject-created rejection in a fulfillment handler]
expected: TIMEOUT
[unhandledrejection: from a throw in a fulfillment handler]
expected: TIMEOUT
[unhandledrejection: from returning a setTimeout-delayed rejection in a fulfillment handler]
expected: TIMEOUT
[unhandledrejection: from Promise.reject, indirected through Promise.all]
expected: TIMEOUT
expected: FAIL
[no unhandledrejection/rejectionhandled: all inside a queued task, a rejection handler attached synchronously to a promise created from returning a Promise.reject-created promise in a fulfillment handler]
expected: FAIL
@ -55,6 +24,3 @@
[delayed handling: a nested-postMessageTask after promise creation/rejection, plus many promise microtasks, is too late to attach a rejection handler]
expected: FAIL
[mutationObserverMicrotask vs. postMessageTask ordering is not disturbed inside unhandledrejection events]
expected: TIMEOUT

View file

@ -1,60 +1,6 @@
[promise-rejection-events.html]
type: testharness
expected: TIMEOUT
[unhandledrejection: from Promise.reject]
expected: TIMEOUT
[unhandledrejection: from a synchronous rejection in new Promise]
expected: TIMEOUT
[unhandledrejection: from a task-delayed rejection]
expected: TIMEOUT
[unhandledrejection: from a setTimeout-delayed rejection]
expected: TIMEOUT
[unhandledrejection: from a throw in a rejection handler chained off of Promise.reject]
expected: TIMEOUT
[unhandledrejection: from a throw in a rejection handler chained off of a setTimeout-delayed rejection]
expected: TIMEOUT
[unhandledrejection: from a throw in a rejection handler attached one microtask after a setTimeout-delayed rejection]
expected: TIMEOUT
[unhandledrejection: from returning a Promise.reject-created rejection in a fulfillment handler]
expected: TIMEOUT
[unhandledrejection: from a throw in a fulfillment handler]
expected: TIMEOUT
[unhandledrejection: from returning a setTimeout-delayed rejection in a fulfillment handler]
expected: TIMEOUT
[unhandledrejection: from Promise.reject, indirected through Promise.all]
expected: TIMEOUT
[delayed handling: a nested-task delay before attaching a handler causes unhandledrejection]
expected: TIMEOUT
[delayed handling: a nested-postMessageTask after promise creation/rejection, plus promise microtasks, is too late to attach a rejection handler]
expected: TIMEOUT
[delayed handling: a nested-postMessageTask before promise creation/rejection, plus many promise microtasks, is too late to attach a rejection handler]
expected: TIMEOUT
[delayed handling: a nested-postMessageTask after promise creation/rejection, plus many promise microtasks, is too late to attach a rejection handler]
expected: TIMEOUT
[mutationObserverMicrotask vs. postMessageTask ordering is not disturbed inside unhandledrejection events]
expected: TIMEOUT
[postMessageTask ordering vs. the task queued for unhandled rejection notification (1)]
expected: TIMEOUT
[postMessageTask ordering vs. the task queued for unhandled rejection notification (2)]
expected: TIMEOUT
[rejectionhandled is dispatched from a queued task, and not immediately]
expected: TIMEOUT

View file

@ -51,7 +51,6 @@
[idlharness.any.serviceworker.html]
expected: TIMEOUT
[idlharness]
expected: FAIL

View file

@ -1,5 +1,5 @@
[identity-not-preserved.html]
expected: TIMEOUT
expected: ERROR
[postMessaging to this window does not give back the same WebAssembly.Module]
expected: TIMEOUT

View file

@ -92,4 +92,5 @@
[contenttype.any.serviceworker.html]
expected: TIMEOUT
[contenttype]
expected: FAIL

View file

@ -1,2 +1,2 @@
[audiobuffersource-multi-channels.html]
expected: TIMEOUT
expected: ERROR

View file

@ -1,5 +1,5 @@
[note-grain-on-play.html]
expected: TIMEOUT
expected: ERROR
[X Number of start frames is not equal to 100. Got 1.]
expected: FAIL

View file

@ -1,5 +1,5 @@
[note-grain-on-timing.html]
expected: TIMEOUT
expected: ERROR
[X Number of start frames is not equal to 100. Got 1.]
expected: FAIL

View file

@ -1,2 +1,2 @@
[audionode-disconnect.html]
expected: TIMEOUT
expected: ERROR

View file

@ -1,2 +1,3 @@
[audioworkletnode-output-channel-count.https.html]
expected: TIMEOUT
[\n Test the construction of AudioWorkletNode with real-time context\n ]
expected: FAIL

View file

@ -1,5 +1,5 @@
[panner-equalpower.html]
expected: TIMEOUT
expected: ERROR
[X Number of impulses found is not equal to 100. Got 0.]
expected: FAIL

View file

@ -6,6 +6,12 @@
[basic-auth]
expected: FAIL
[basic-auth.any.serviceworker.html]
[Untitled]
expected: FAIL
[basic-auth]
expected: FAIL
[basic-auth.any.sharedworker.html]
[Untitled]
@ -24,9 +30,3 @@
[HTTP basic authentication should work with WebSockets]
expected: FAIL
[basic-auth.any.serviceworker.html]
expected: TIMEOUT
[basic-auth]
expected: FAIL

View file

@ -1,3 +1,7 @@
[importscripts_mime.tentative.any.serviceworker.html]
[importscripts_mime]
expected: FAIL
[importscripts_mime.tentative.any.sharedworker.html]
[importscripts_mime]
expected: FAIL
@ -39,7 +43,3 @@
[importScripts() requires scripty MIME types: text/plain is blocked.]
expected: FAIL
[importscripts_mime.tentative.any.serviceworker.html]
expected: TIMEOUT

View file

@ -1,6 +1,6 @@
[name-property.html]
type: testharness
expected: TIMEOUT
expected: ERROR
[Test the name property of shared and dedicated workers via the name constructor option]
expected: FAIL

View file

@ -18,9 +18,6 @@
[The Path2D interface object should be exposed.]
expected: FAIL
[The PromiseRejectionEvent interface object should be exposed.]
expected: FAIL
[The BroadcastChannel interface object should be exposed.]
expected: FAIL