summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/node.cc5
-rw-r--r--src/node.h3
-rw-r--r--test/cctest/test_environment.cc3
3 files changed, 11 insertions, 0 deletions
diff --git a/src/node.cc b/src/node.cc
index dde5c21c7c..bab251ada3 100644
--- a/src/node.cc
+++ b/src/node.cc
@@ -2760,6 +2760,11 @@ void FreeEnvironment(Environment* env) {
}
+Environment* GetCurrentEnvironment(Local<Context> context) {
+ return Environment::GetCurrent(context);
+}
+
+
MultiIsolatePlatform* GetMainThreadMultiIsolatePlatform() {
return v8_platform.Platform();
}
diff --git a/src/node.h b/src/node.h
index f8b37c59c6..98db328952 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<v8::Context> 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 fa0f94a5ad..49dc700bb5 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<v8::Context> 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);
}