diff options
author | Gus Caplan <me@gus.host> | 2018-09-19 10:33:52 -0500 |
---|---|---|
committer | Gus Caplan <me@gus.host> | 2018-09-23 15:57:19 -0500 |
commit | de0441f6f677b338b78752b8fbaac767fdf35075 (patch) | |
tree | 6257215ec115f9c47457bdd109e7ad9b71af7cb3 /src/node_util.cc | |
parent | 59a8324d2793c504fc81a3126478d8c401df314e (diff) | |
download | android-node-v8-de0441f6f677b338b78752b8fbaac767fdf35075.tar.gz android-node-v8-de0441f6f677b338b78752b8fbaac767fdf35075.tar.bz2 android-node-v8-de0441f6f677b338b78752b8fbaac767fdf35075.zip |
lib: implement queueMicrotask
PR-URL: https://github.com/nodejs/node/pull/22951
Refs: https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-queuemicrotask
Reviewed-By: Bradley Farias <bradley.meck@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Diffstat (limited to 'src/node_util.cc')
-rw-r--r-- | src/node_util.cc | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/node_util.cc b/src/node_util.cc index 8f261e8989..c183f314a1 100644 --- a/src/node_util.cc +++ b/src/node_util.cc @@ -7,8 +7,10 @@ namespace util { using v8::ALL_PROPERTIES; using v8::Array; using v8::Context; +using v8::Function; using v8::FunctionCallbackInfo; using v8::Integer; +using v8::Isolate; using v8::Local; using v8::Object; using v8::ONLY_CONFIGURABLE; @@ -172,6 +174,15 @@ void SafeGetenv(const FunctionCallbackInfo<Value>& args) { v8::NewStringType::kNormal).ToLocalChecked()); } +void EnqueueMicrotask(const FunctionCallbackInfo<Value>& args) { + Environment* env = Environment::GetCurrent(args); + Isolate* isolate = env->isolate(); + + CHECK(args[0]->IsFunction()); + + isolate->EnqueueMicrotask(args[0].As<Function>()); +} + void Initialize(Local<Object> target, Local<Value> unused, Local<Context> context) { @@ -219,6 +230,8 @@ void Initialize(Local<Object> target, env->SetMethod(target, "safeGetenv", SafeGetenv); + env->SetMethod(target, "enqueueMicrotask", EnqueueMicrotask); + Local<Object> constants = Object::New(env->isolate()); NODE_DEFINE_CONSTANT(constants, ALL_PROPERTIES); NODE_DEFINE_CONSTANT(constants, ONLY_WRITABLE); |