OLD | NEW |
1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Flags: --expose-debug-as debug --allow-natives-syntax --promise-extra | 5 // Flags: --expose-debug-as debug --allow-natives-syntax |
6 | 6 |
7 // Test debug events when a Promise is rejected, which is caught by a custom | 7 // Test debug events when a Promise is rejected, which is caught by a custom |
8 // promise, which has a number for reject closure. We expect an Exception debug | 8 // promise, which has a number for reject closure. We expect an Exception debug |
9 // events trying to call the invalid reject closure. | 9 // events trying to call the invalid reject closure. |
10 | 10 |
11 Debug = debug.Debug; | 11 Debug = debug.Debug; |
12 | 12 |
13 var expected_events = 1; | 13 var expected_events = 1; |
14 var log = []; | 14 var log = []; |
15 | 15 |
16 var p = new Promise(function(resolve, reject) { | 16 var p = new Promise(function(resolve, reject) { |
17 log.push("resolve"); | 17 log.push("resolve"); |
18 resolve(); | 18 resolve(); |
19 }); | 19 }); |
20 | 20 |
21 function MyPromise(resolver) { | 21 function MyPromise(resolver) { |
22 var reject = 1; | 22 var reject = 1; |
23 var resolve = function() { }; | 23 var resolve = function() { }; |
24 log.push("construct"); | 24 log.push("construct"); |
25 resolver(resolve, reject); | 25 resolver(resolve, reject); |
26 }; | 26 }; |
27 | 27 |
28 MyPromise.prototype = new Promise(function() {}); | 28 MyPromise.prototype = new Promise(function() {}); |
29 p.constructor = MyPromise; | 29 p.constructor = MyPromise; |
30 | 30 |
31 var q = p.chain( | 31 var q = p.then( |
32 function() { | 32 function() { |
33 log.push("reject caught"); | 33 log.push("reject caught"); |
34 return Promise.reject(new Error("caught")); | 34 return Promise.reject(new Error("caught")); |
35 }); | 35 }); |
36 | 36 |
37 function listener(event, exec_state, event_data, data) { | 37 function listener(event, exec_state, event_data, data) { |
38 try { | 38 try { |
39 if (event == Debug.DebugEvent.Exception) { | 39 if (event == Debug.DebugEvent.Exception) { |
40 expected_events--; | 40 expected_events--; |
41 assertTrue(expected_events >= 0); | 41 assertTrue(expected_events >= 0); |
(...skipping 23 matching lines...) Expand all Loading... |
65 %AbortJS(e + "\n" + e.stack); | 65 %AbortJS(e + "\n" + e.stack); |
66 } | 66 } |
67 } | 67 } |
68 | 68 |
69 %EnqueueMicrotask(checkResult); | 69 %EnqueueMicrotask(checkResult); |
70 } | 70 } |
71 | 71 |
72 testDone(0); | 72 testDone(0); |
73 | 73 |
74 log.push("end main"); | 74 log.push("end main"); |
OLD | NEW |