diff options
author | Aleksei Koziatinskii <ak239spb@gmail.com> | 2019-06-25 15:28:56 -0700 |
---|---|---|
committer | Michaƫl Zasso <targos@protonmail.com> | 2019-07-22 21:20:43 +0200 |
commit | 77bdbc5f0d1bd7caada99d0097bca2a9bb1f4cee (patch) | |
tree | 1d7f1b9f8fb9ca9b308f496683d7130218a42549 /src | |
parent | 49e4d72b5a7fcf643e1476b0f382ed08cacd6c0a (diff) | |
download | android-node-v8-77bdbc5f0d1bd7caada99d0097bca2a9bb1f4cee.tar.gz android-node-v8-77bdbc5f0d1bd7caada99d0097bca2a9bb1f4cee.tar.bz2 android-node-v8-77bdbc5f0d1bd7caada99d0097bca2a9bb1f4cee.zip |
inspector: add inspector.waitForDebugger()
This method blocks current node process until a client sends
Runtime.runifWaitingForDebugger.
It can be useful when we need to report inspector.url() before
waiting for connection:
```
inspector.open(0, undefined, false);
fs.writeFileSync(someFileName, inspector.url());
inspector.waitForDebugger();
```
PR-URL: https://github.com/nodejs/node/pull/28453
Reviewed-By: Eugene Ostroukhov <eostroukhov@google.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/inspector_js_api.cc | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/inspector_js_api.cc b/src/inspector_js_api.cc index 3131c6ad37..8b891a2d61 100644 --- a/src/inspector_js_api.cc +++ b/src/inspector_js_api.cc @@ -237,7 +237,6 @@ void IsEnabled(const FunctionCallbackInfo<Value>& args) { void Open(const FunctionCallbackInfo<Value>& args) { Environment* env = Environment::GetCurrent(args); Agent* agent = env->inspector_agent(); - bool wait_for_connect = false; if (args.Length() > 0 && args[0]->IsUint32()) { uint32_t port = args[0].As<Uint32>()->Value(); @@ -249,12 +248,15 @@ void Open(const FunctionCallbackInfo<Value>& args) { agent->host_port()->set_host(*host); } - if (args.Length() > 2 && args[2]->IsBoolean()) { - wait_for_connect = args[2]->BooleanValue(args.GetIsolate()); - } agent->StartIoThread(); - if (wait_for_connect) +} + +void WaitForDebugger(const FunctionCallbackInfo<Value>& args) { + Environment* env = Environment::GetCurrent(args); + Agent* agent = env->inspector_agent(); + if (agent->IsActive()) agent->WaitForConnect(); + args.GetReturnValue().Set(agent->IsActive()); } void Url(const FunctionCallbackInfo<Value>& args) { @@ -285,6 +287,7 @@ void Initialize(Local<Object> target, Local<Value> unused, env->SetMethod(target, "callAndPauseOnStart", CallAndPauseOnStart); env->SetMethod(target, "open", Open); env->SetMethodNoSideEffect(target, "url", Url); + env->SetMethod(target, "waitForDebugger", WaitForDebugger); env->SetMethod(target, "asyncTaskScheduled", AsyncTaskScheduledWrapper); env->SetMethod(target, "asyncTaskCanceled", |