From 0feb21fb028deaad69ec028c14aafe4ccd823cf2 Mon Sep 17 00:00:00 2001 From: Shelley Vohr Date: Thu, 18 Oct 2018 21:29:42 -0700 Subject: [PATCH] src,test: add public wrapper for Environment::GetCurrent PR-URL: https://github.com/nodejs/node/pull/23676 Reviewed-By: Anna Henningsen Reviewed-By: Refael Ackermann Reviewed-By: Gireesh Punathil --- src/node.cc | 5 +++++ src/node.h | 3 +++ test/cctest/test_environment.cc | 3 +++ 3 files changed, 11 insertions(+) diff --git a/src/node.cc b/src/node.cc index dde5c21c7c8a20..bab251ada3a429 100644 --- a/src/node.cc +++ b/src/node.cc @@ -2760,6 +2760,11 @@ void FreeEnvironment(Environment* env) { } +Environment* GetCurrentEnvironment(Local context) { + return Environment::GetCurrent(context); +} + + MultiIsolatePlatform* GetMainThreadMultiIsolatePlatform() { return v8_platform.Platform(); } diff --git a/src/node.h b/src/node.h index f8b37c59c6eb20..98db32895295c3 100644 --- a/src/node.h +++ b/src/node.h @@ -265,6 +265,9 @@ NODE_EXTERN Environment* CreateEnvironment(IsolateData* isolate_data, NODE_EXTERN void LoadEnvironment(Environment* env); NODE_EXTERN void FreeEnvironment(Environment* env); +// This may return nullptr if context is not associated with a Node instance. +NODE_EXTERN Environment* GetCurrentEnvironment(v8::Local context); + // This returns the MultiIsolatePlatform used in the main thread of Node.js. // If NODE_USE_V8_PLATFORM haven't been defined when Node.js was built, // it returns nullptr. diff --git a/test/cctest/test_environment.cc b/test/cctest/test_environment.cc index fa0f94a5add9bd..49dc700bb57716 100644 --- a/test/cctest/test_environment.cc +++ b/test/cctest/test_environment.cc @@ -80,13 +80,16 @@ TEST_F(EnvironmentTest, NonNodeJSContext) { node::Environment* env = *test_env; EXPECT_EQ(node::Environment::GetCurrent(isolate_), env); EXPECT_EQ(node::Environment::GetCurrent(env->context()), env); + EXPECT_EQ(node::GetCurrentEnvironment(env->context()), env); v8::Local context = v8::Context::New(isolate_); EXPECT_EQ(node::Environment::GetCurrent(context), nullptr); + EXPECT_EQ(node::GetCurrentEnvironment(context), nullptr); EXPECT_EQ(node::Environment::GetCurrent(isolate_), env); v8::Context::Scope context_scope(context); EXPECT_EQ(node::Environment::GetCurrent(context), nullptr); + EXPECT_EQ(node::GetCurrentEnvironment(context), nullptr); EXPECT_EQ(node::Environment::GetCurrent(isolate_), nullptr); }