| Index: test/cctest/test-api.cc
|
| diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc
|
| index b4af849328659373fda081c836f6e6ffae65e4fb..c79d5a1d492a6cd2fe8452fa6b3363d775d606cc 100644
|
| --- a/test/cctest/test-api.cc
|
| +++ b/test/cctest/test-api.cc
|
| @@ -17668,26 +17668,21 @@ TEST(PromiseRejectCallback) {
|
| // Create promise p0.
|
| CompileRun(
|
| "var reject; \n"
|
| - "var p0 = new Promise( \n"
|
| + "var p0 = new Promise( \n"
|
| " function(res, rej) { \n"
|
| " reject = rej; \n"
|
| " } \n"
|
| "); \n");
|
| - CHECK(!GetPromise("p0")->HasHandler());
|
| CHECK_EQ(0, promise_reject_counter);
|
| CHECK_EQ(0, promise_revoke_counter);
|
|
|
| // Add resolve handler (and default reject handler) to p0.
|
| CompileRun("var p1 = p0.then(function(){});");
|
| - CHECK(GetPromise("p0")->HasHandler());
|
| - CHECK(!GetPromise("p1")->HasHandler());
|
| CHECK_EQ(0, promise_reject_counter);
|
| CHECK_EQ(0, promise_revoke_counter);
|
|
|
| // Reject p0.
|
| CompileRun("reject('ppp');");
|
| - CHECK(GetPromise("p0")->HasHandler());
|
| - CHECK(!GetPromise("p1")->HasHandler());
|
| CHECK_EQ(1, promise_reject_counter);
|
| CHECK_EQ(0, promise_revoke_counter);
|
| CHECK_EQ(v8::kPromiseRejectWithNoHandler, reject_event);
|
| @@ -17696,16 +17691,11 @@ TEST(PromiseRejectCallback) {
|
|
|
| // Reject p0 again. Callback is not triggered again.
|
| CompileRun("reject();");
|
| - CHECK(GetPromise("p0")->HasHandler());
|
| - CHECK(!GetPromise("p1")->HasHandler());
|
| CHECK_EQ(1, promise_reject_counter);
|
| CHECK_EQ(0, promise_revoke_counter);
|
|
|
| // Add resolve handler to p1.
|
| CompileRun("var p2 = p1.then(function(){});");
|
| - CHECK(GetPromise("p0")->HasHandler());
|
| - CHECK(GetPromise("p1")->HasHandler());
|
| - CHECK(!GetPromise("p2")->HasHandler());
|
| CHECK_EQ(2, promise_reject_counter);
|
| CHECK_EQ(1, promise_revoke_counter);
|
| CHECK(GetPromise("rejected")->Equals(GetPromise("p2")));
|
| @@ -17721,21 +17711,16 @@ TEST(PromiseRejectCallback) {
|
| " reject = rej; \n"
|
| " } \n"
|
| "); \n");
|
| - CHECK(!GetPromise("q0")->HasHandler());
|
| CHECK_EQ(0, promise_reject_counter);
|
| CHECK_EQ(0, promise_revoke_counter);
|
|
|
| // Add reject handler to q0.
|
| CompileRun("var q1 = q0.catch(function() {});");
|
| - CHECK(GetPromise("q0")->HasHandler());
|
| - CHECK(!GetPromise("q1")->HasHandler());
|
| CHECK_EQ(0, promise_reject_counter);
|
| CHECK_EQ(0, promise_revoke_counter);
|
|
|
| // Reject q0.
|
| CompileRun("reject('qq')");
|
| - CHECK(GetPromise("q0")->HasHandler());
|
| - CHECK(!GetPromise("q1")->HasHandler());
|
| CHECK_EQ(0, promise_reject_counter);
|
| CHECK_EQ(0, promise_revoke_counter);
|
|
|
| @@ -17750,14 +17735,9 @@ TEST(PromiseRejectCallback) {
|
| " return q_; \n"
|
| " } \n"
|
| "); \n");
|
| - CHECK(GetPromise("q0")->HasHandler());
|
| - CHECK(!GetPromise("q1")->HasHandler());
|
| - CHECK(!GetPromise("q2")->HasHandler());
|
| - CHECK(GetPromise("q_")->HasHandler());
|
| - CHECK_EQ(2, promise_reject_counter);
|
| - CHECK_EQ(1, promise_revoke_counter);
|
| + CHECK_EQ(1, promise_reject_counter);
|
| + CHECK_EQ(0, promise_revoke_counter);
|
| CHECK(GetPromise("rejected")->Equals(GetPromise("q2")));
|
| - CHECK(GetPromise("revoked")->Equals(GetPromise("q_")));
|
| CHECK(RejectValue()->Equals(v8_str("qqq")));
|
|
|
| // Add a reject handler to the resolved q1, which rejects by throwing.
|
| @@ -17767,12 +17747,8 @@ TEST(PromiseRejectCallback) {
|
| " throw 'qqqq'; \n"
|
| " } \n"
|
| "); \n");
|
| - CHECK(GetPromise("q0")->HasHandler());
|
| - CHECK(GetPromise("q1")->HasHandler());
|
| - CHECK(!GetPromise("q2")->HasHandler());
|
| - CHECK(!GetPromise("q3")->HasHandler());
|
| - CHECK_EQ(3, promise_reject_counter);
|
| - CHECK_EQ(1, promise_revoke_counter);
|
| + CHECK_EQ(2, promise_reject_counter);
|
| + CHECK_EQ(0, promise_revoke_counter);
|
| CHECK(GetPromise("rejected")->Equals(GetPromise("q3")));
|
| CHECK(RejectValue()->Equals(v8_str("qqqq")));
|
|
|
| @@ -17789,19 +17765,11 @@ TEST(PromiseRejectCallback) {
|
| "var r2 = r0.then(function() {}); \n"
|
| "var r3 = r0.then(function() {}, \n"
|
| " function() {}); \n");
|
| - CHECK(GetPromise("r0")->HasHandler());
|
| - CHECK(!GetPromise("r1")->HasHandler());
|
| - CHECK(!GetPromise("r2")->HasHandler());
|
| - CHECK(!GetPromise("r3")->HasHandler());
|
| CHECK_EQ(0, promise_reject_counter);
|
| CHECK_EQ(0, promise_revoke_counter);
|
|
|
| // Reject r0.
|
| CompileRun("reject('rrr')");
|
| - CHECK(GetPromise("r0")->HasHandler());
|
| - CHECK(!GetPromise("r1")->HasHandler());
|
| - CHECK(!GetPromise("r2")->HasHandler());
|
| - CHECK(!GetPromise("r3")->HasHandler());
|
| CHECK_EQ(1, promise_reject_counter);
|
| CHECK_EQ(0, promise_revoke_counter);
|
| CHECK(GetPromise("rejected")->Equals(GetPromise("r2")));
|
| @@ -17809,11 +17777,6 @@ TEST(PromiseRejectCallback) {
|
|
|
| // Add reject handler to r2.
|
| CompileRun("var r4 = r2.catch(function() {});");
|
| - CHECK(GetPromise("r0")->HasHandler());
|
| - CHECK(!GetPromise("r1")->HasHandler());
|
| - CHECK(GetPromise("r2")->HasHandler());
|
| - CHECK(!GetPromise("r3")->HasHandler());
|
| - CHECK(!GetPromise("r4")->HasHandler());
|
| CHECK_EQ(1, promise_reject_counter);
|
| CHECK_EQ(1, promise_revoke_counter);
|
| CHECK(GetPromise("revoked")->Equals(GetPromise("r2")));
|
| @@ -17821,12 +17784,6 @@ TEST(PromiseRejectCallback) {
|
|
|
| // Add reject handlers to r4.
|
| CompileRun("var r5 = r4.then(function() {}, function() {});");
|
| - CHECK(GetPromise("r0")->HasHandler());
|
| - CHECK(!GetPromise("r1")->HasHandler());
|
| - CHECK(GetPromise("r2")->HasHandler());
|
| - CHECK(!GetPromise("r3")->HasHandler());
|
| - CHECK(GetPromise("r4")->HasHandler());
|
| - CHECK(!GetPromise("r5")->HasHandler());
|
| CHECK_EQ(1, promise_reject_counter);
|
| CHECK_EQ(1, promise_revoke_counter);
|
|
|
| @@ -17842,22 +17799,45 @@ TEST(PromiseRejectCallback) {
|
| "var s1 = s0.then(function() {}); \n"
|
| "var s2 = s0.then(function() {}); \n"
|
| "var s3 = s0.then(function() {}); \n");
|
| - CHECK(GetPromise("s0")->HasHandler());
|
| - CHECK(!GetPromise("s1")->HasHandler());
|
| - CHECK(!GetPromise("s2")->HasHandler());
|
| - CHECK(!GetPromise("s3")->HasHandler());
|
| CHECK_EQ(0, promise_reject_counter);
|
| CHECK_EQ(0, promise_revoke_counter);
|
|
|
| // Reject s0.
|
| CompileRun("reject('sss')");
|
| - CHECK(GetPromise("s0")->HasHandler());
|
| - CHECK(!GetPromise("s1")->HasHandler());
|
| - CHECK(!GetPromise("s2")->HasHandler());
|
| - CHECK(!GetPromise("s3")->HasHandler());
|
| CHECK_EQ(3, promise_reject_counter);
|
| CHECK_EQ(0, promise_revoke_counter);
|
| CHECK(RejectValue()->Equals(v8_str("sss")));
|
| +
|
| + ResetPromiseStates();
|
| +
|
| + // Create promise m0, which has three handlers, which will be handled at a
|
| + // microtask checkpoint.
|
| + CompileRun(
|
| + "var m0 = new Promise( \n"
|
| + " function(res, rej) { \n"
|
| + " reject = rej; \n"
|
| + " } \n"
|
| + "); \n"
|
| + "var m1 = m0.then(function() {}); \n"
|
| + "var m2 = m0.then(function() {}); \n"
|
| + "var m3 = m0.then(function() {}); \n"
|
| + "var m4; \n"
|
| + "m0.catch(function() { \n"
|
| + " m2.catch(function() { \n"
|
| + " m1.catch(function() { \n"
|
| + " m4 = m3.then(function() {})\n"
|
| + " }); \n"
|
| + " }); \n"
|
| + "}); \n");
|
| + CHECK_EQ(0, promise_reject_counter);
|
| + CHECK_EQ(0, promise_revoke_counter);
|
| +
|
| + // Reject m0: m1-m3 promises should be handled at "the end of turn".
|
| + CompileRun("reject('mmm')");
|
| + CHECK_EQ(1, promise_reject_counter);
|
| + CHECK_EQ(0, promise_revoke_counter);
|
| + CHECK(GetPromise("rejected")->Equals(GetPromise("m4")));
|
| + CHECK(RejectValue()->Equals(v8_str("mmm")));
|
| }
|
|
|
|
|
|
|