Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(332)

Side by Side Diff: LayoutTests/fast/js/Promise-bindings-check-exception.html

Issue 232563003: API functions returning Promises should not throw exceptions. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 <!DOCTYPE html>
2 <script src="../../resources/js-test.js"></script>
3 <div id="description"></div>
4 <div id="console"></div>
5 <script>
6 // http://heycam.github.io/webidl/#es-operations
7 description('Operations that return a Promise type should handle exceptions ' +
8 'by returning a rejected Promise with the exception.')
9
10 window.jsTestIsAsync = true;
11
12 var reason;
13
14 function shouldBeRejected(promise, message) {
15 return promise.then(function() {
16 testFailed('Resolved unexpectedly: ' + message);
17 }, function(e) {
18 reason = e;
19 testPassed('Rejected as expected: ' + message);
20 shouldBeTrue('reason instanceof Error');
21 debug(e);
22 });
23 }
24
25 function shouldBeResolved(promise, message) {
26 return promise.then(function() {
27 testPassed('Resolved as expected: ' + message);
28 }, function(e) {
29 testFailed('Rejected unexpectedly: ' + message);
30 reason = e;
31 shouldBeTrue('reason instanceof Error');
32 debug(e);
33 });
34 }
35
36 var check = internals.promiseCheck.bind(internals);
37 var check2 = internals.promiseCheckWithoutExceptionState.bind(internals);
38 var check3 = internals.promiseCheckRange.bind(internals);
39
40 Promise.resolve().then(function() {
41 return shouldBeRejected(check(), 'no arguments');
42 }).then(function() {
43 return shouldBeResolved(check(3, true, {}, ''), 'valid arguments');
44 }).then(function() {
45 return shouldBeResolved(check(null, true, {}, ''), 'convert(long)');
46 }).then(function() {
47 return shouldBeResolved(check(3, {}, {}, ''), 'convert(boolean)');
48 }).then(function() {
49 return shouldBeRejected(check(3, true, 3, ''), 'type error(Dictionary)');
50 }).then(function() {
51 return shouldBeResolved(check(3, true, {}, {}), 'convert(String)');
52 }).then(function() {
53 var x = {
54 toString: function() {
55 throw Error('Thrown from toString');
56 }
57 };
58 return shouldBeRejected(check(3, true, {}, x), 'conversion error(toString)') ;
59 }).then(function() {
60 return shouldBeRejected(check(3, false, {}, ''), 'rejected by the impl');
61 }).then(function() {
62 return shouldBeRejected(check2(), 'no arguments');
63 }).then(function() {
64 return shouldBeResolved(check2({}, '', '', ''), 'valid arguments');
65 }).then(function() {
66 return shouldBeResolved(check2({}, ''), 'valid arguments');
67 }).then(function() {
68 return shouldBeRejected(check2(3, ''), 'type error(Dictionary)');
69 }).then(function() {
70 return shouldBeResolved(check2({}, '', {}, 3), 'convert(String...)');
71 }).then(function() {
72 var x = {
73 toString: function() {
74 throw Error('Thrown from toString');
75 }
76 };
77 return shouldBeRejected(check2({}, '', '', x), 'conversion error(String...)' );
78 }).then(function() {
79 return shouldBeRejected(check3(-1), 'range error(octet)');
80 }).then(undefined, function(e) {
81 testFailed('An exception is thrown from a method');
82 debug(e);
83 }).then(finishJSTest, finishJSTest);
84 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698