| 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(
|
|
|