summaryrefslogtreecommitdiff
path: root/src/node_util.cc
diff options
context:
space:
mode:
authorGus Caplan <me@gus.host>2018-09-19 10:33:52 -0500
committerGus Caplan <me@gus.host>2018-09-23 15:57:19 -0500
commitde0441f6f677b338b78752b8fbaac767fdf35075 (patch)
tree6257215ec115f9c47457bdd109e7ad9b71af7cb3 /src/node_util.cc
parent59a8324d2793c504fc81a3126478d8c401df314e (diff)
downloadandroid-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.cc13
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);