diff options
author | Anna Henningsen <anna@addaleax.net> | 2017-04-21 14:06:21 -0700 |
---|---|---|
committer | Anna Henningsen <anna@addaleax.net> | 2017-04-27 17:40:06 +0200 |
commit | e5a25cbc8524f0d57c66de85eeb4b1b4eacd6da8 (patch) | |
tree | b402582069f7eb5cc409bc1a7d3e9acb8ae59215 /src/env.cc | |
parent | dca08152cbb6024376fe6280d5fdc956682a4046 (diff) | |
download | android-node-v8-e5a25cbc8524f0d57c66de85eeb4b1b4eacd6da8.tar.gz android-node-v8-e5a25cbc8524f0d57c66de85eeb4b1b4eacd6da8.tar.bz2 android-node-v8-e5a25cbc8524f0d57c66de85eeb4b1b4eacd6da8.zip |
src: expose `node::AddPromiseHook`
Expose `node::AddPromiseHook`, which wraps V8’s `SetPromiseHook` in
a way that allows multiple hooks to be set up.
PR-URL: https://github.com/nodejs/node/pull/12489
Reviewed-By: Matthew Loring <mattloring@google.com>
Reviewed-By: Julien Gilli <jgilli@nodejs.org>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'src/env.cc')
-rw-r--r-- | src/env.cc | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/env.cc b/src/env.cc index b44b435d4e..034625b375 100644 --- a/src/env.cc +++ b/src/env.cc @@ -188,4 +188,20 @@ void Environment::AtExit(void (*cb)(void* arg), void* arg) { at_exit_functions_.push_back(AtExitCallback{cb, arg}); } +void Environment::AddPromiseHook(promise_hook_func fn, void* arg) { + promise_hooks_.push_back(PromiseHookCallback{fn, arg}); + if (promise_hooks_.size() == 1) { + isolate_->SetPromiseHook(EnvPromiseHook); + } +} + +void Environment::EnvPromiseHook(v8::PromiseHookType type, + v8::Local<v8::Promise> promise, + v8::Local<v8::Value> parent) { + Environment* env = Environment::GetCurrent(promise->CreationContext()); + for (const PromiseHookCallback& hook : env->promise_hooks_) { + hook.cb_(type, promise, parent, hook.arg_); + } +} + } // namespace node |