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

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

Side-by-side diff isn't available for this file because of its large size.
Issue 2578173004: [promisehook] Fire init hook for promise subclass (Closed)
Patch Set: use jspromise Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
Download patch
« src/builtins/builtins-promise.cc ('K') | « src/builtins/builtins-promise.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 cb28aadc9b7cbebbcab06e1dcbb458c179d7d221..f25bd3bee21ab80449243ff24f21d02ff5dcbdf7 100644
--- a/test/cctest/test-api.cc
+++ b/test/cctest/test-api.cc
@@ -18426,7 +18426,40 @@ TEST(PromiseHook) {
v8_str(promise_hook_data->promise_hook_value.c_str()))
.FromJust());
+ promise_hook_data->Reset();
+ promise_hook_data->promise_hook_value = "subclass";
+ source =
+ "var resolve, value = '';\n"
+ "class MyPromise extends Promise { \n"
+ " then(onFulfilled, onRejected) { \n"
+ " return super.then(onFulfilled, onRejected); \n"
+ " };\n"
+ "};\n"
+ "var p = new MyPromise(r => resolve = r);\n";
+
+ CompileRun(source);
+ // 1) init hook (p)
+ CHECK_EQ(1, promise_hook_data->promise_hook_count);
+
+ CompileRun("var p1 = p.then(() => value = 'subclass');\n");
+ // 2) init hook (p1)
+ CHECK_EQ(2, promise_hook_data->promise_hook_count);
+
+ CompileRun("resolve();\n");
+ resolve_promise = global->Get(context, v8_str("resolve")).ToLocalChecked();
+ before_promise = global->Get(context, v8_str("before")).ToLocalChecked();
+ after_promise = global->Get(context, v8_str("after")).ToLocalChecked();
+ CHECK(GetPromise("p")->Equals(env.local(), before_promise).FromJust());
+ CHECK(GetPromise("p")->Equals(env.local(), after_promise).FromJust());
+ CHECK(GetPromise("p1")->Equals(env.local(), resolve_promise).FromJust());
+ // 3) resolve hook (p)
+ // 4) before hook (p)
+ // 5) after hook (p)
+ // 6) resolve hook (p1)
+ CHECK_EQ(6, promise_hook_data->promise_hook_count);
+
delete promise_hook_data;
+ isolate->SetPromiseHook(nullptr);
}
void AnalyzeStackOfDynamicScriptWithSourceURL(
« src/builtins/builtins-promise.cc ('K') | « src/builtins/builtins-promise.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698