summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/env.cc7
-rw-r--r--src/env.h2
-rw-r--r--src/inspector_agent.cc16
-rw-r--r--src/inspector_js_api.cc14
4 files changed, 12 insertions, 27 deletions
diff --git a/src/env.cc b/src/env.cc
index f45386dce4..97cfc72a9d 100644
--- a/src/env.cc
+++ b/src/env.cc
@@ -352,13 +352,6 @@ void Environment::Start(const std::vector<std::string>& args,
static uv_once_t init_once = UV_ONCE_INIT;
uv_once(&init_once, InitThreadLocalOnce);
uv_key_set(&thread_local_env, this);
-
-#if HAVE_INSPECTOR
- // This needs to be set before we start the inspector
- Local<Object> obj = Object::New(isolate());
- CHECK(obj->SetPrototype(context(), Null(isolate())).FromJust());
- set_inspector_console_api_object(obj);
-#endif // HAVE_INSPECTOR
}
void Environment::RegisterHandleCleanups() {
diff --git a/src/env.h b/src/env.h
index 711d07963a..9de45a464b 100644
--- a/src/env.h
+++ b/src/env.h
@@ -356,7 +356,7 @@ constexpr size_t kFsStatsBufferLength = kFsStatsFieldsNumber * 2;
V(http2settings_constructor_template, v8::ObjectTemplate) \
V(http2stream_constructor_template, v8::ObjectTemplate) \
V(immediate_callback_function, v8::Function) \
- V(inspector_console_api_object, v8::Object) \
+ V(inspector_console_extension_installer, v8::Function) \
V(libuv_stream_wrap_ctor_template, v8::FunctionTemplate) \
V(message_port, v8::Object) \
V(message_port_constructor_template, v8::FunctionTemplate) \
diff --git a/src/inspector_agent.cc b/src/inspector_agent.cc
index a53c58337e..dcc256b7f7 100644
--- a/src/inspector_agent.cc
+++ b/src/inspector_agent.cc
@@ -32,7 +32,6 @@ namespace {
using node::FatalError;
-using v8::Array;
using v8::Context;
using v8::Function;
using v8::HandleScope;
@@ -493,16 +492,11 @@ class NodeInspectorClient : public V8InspectorClient {
void installAdditionalCommandLineAPI(Local<Context> context,
Local<Object> target) override {
- Local<Object> console_api = env_->inspector_console_api_object();
- CHECK(!console_api.IsEmpty());
-
- Local<Array> properties =
- console_api->GetOwnPropertyNames(context).ToLocalChecked();
- for (uint32_t i = 0; i < properties->Length(); ++i) {
- Local<Value> key = properties->Get(context, i).ToLocalChecked();
- target->Set(context,
- key,
- console_api->Get(context, key).ToLocalChecked()).FromJust();
+ Local<Function> installer = env_->inspector_console_extension_installer();
+ if (!installer.IsEmpty()) {
+ Local<Value> argv[] = {target};
+ // If there is an exception, proceed in JS land
+ USE(installer->Call(context, target, arraysize(argv), argv));
}
}
diff --git a/src/inspector_js_api.cc b/src/inspector_js_api.cc
index d94cf4173d..8802998e9a 100644
--- a/src/inspector_js_api.cc
+++ b/src/inspector_js_api.cc
@@ -122,16 +122,13 @@ static bool InspectorEnabled(Environment* env) {
return agent->IsActive();
}
-void AddCommandLineAPI(const FunctionCallbackInfo<Value>& info) {
+void SetConsoleExtensionInstaller(const FunctionCallbackInfo<Value>& info) {
auto env = Environment::GetCurrent(info);
- Local<Context> context = env->context();
- // inspector.addCommandLineAPI takes 2 arguments: a string and a value.
- CHECK_EQ(info.Length(), 2);
- CHECK(info[0]->IsString());
+ CHECK_EQ(info.Length(), 1);
+ CHECK(info[0]->IsFunction());
- Local<Object> console_api = env->inspector_console_api_object();
- console_api->Set(context, info[0], info[1]).FromJust();
+ env->set_inspector_console_extension_installer(info[0].As<Function>());
}
void CallAndPauseOnStart(const FunctionCallbackInfo<v8::Value>& args) {
@@ -279,7 +276,8 @@ void Initialize(Local<Object> target, Local<Value> unused,
Agent* agent = env->inspector_agent();
env->SetMethod(target, "consoleCall", InspectorConsoleCall);
- env->SetMethod(target, "addCommandLineAPI", AddCommandLineAPI);
+ env->SetMethod(
+ target, "setConsoleExtensionInstaller", SetConsoleExtensionInstaller);
if (agent->WillWaitForConnect())
env->SetMethod(target, "callAndPauseOnStart", CallAndPauseOnStart);
env->SetMethod(target, "open", Open);