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

Unified Diff: test/cctest/test-api.cc

Issue 622783002: Make PromiseRejectCallback fire after end-of-turn. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 2 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/runtime/runtime-observe.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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")));
}
« no previous file with comments | « src/runtime/runtime-observe.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698