aa211c6c50
* chore: update to node 12.4.0 * chore: fix js2c compilation and usage * update branch reference * chore: roll node * refactor: use the new node::options_parser::Parse method * fix: make node create our context for us so that everything is initialized correctly * fix: let node do it's thing to the all contexts We need to let node know about all the contexts that Chromium creates for the renderer processes so that it does not crash when trying to access primordials. Similar to node::NewContext but with an existing context * chore: roll node * chore: roll node * chore: roll node * chore: roll node * fix: ensure that _noBrowserGlobals is set before the node bootstrapper runs Co-authored-by: Jeremy Apthorp <jeremya@chromium.org>
67 lines
1.8 KiB
C++
67 lines
1.8 KiB
C++
// Copyright (c) 2014 GitHub, Inc.
|
|
// Use of this source code is governed by the MIT license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#include "shell/browser/node_debugger.h"
|
|
|
|
#include <memory>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
#include "base/command_line.h"
|
|
#include "base/logging.h"
|
|
#include "base/strings/string_util.h"
|
|
#include "base/strings/utf_string_conversions.h"
|
|
#include "libplatform/libplatform.h"
|
|
#include "native_mate/dictionary.h"
|
|
#include "shell/common/node_includes.h"
|
|
|
|
namespace electron {
|
|
|
|
NodeDebugger::NodeDebugger(node::Environment* env) : env_(env) {}
|
|
|
|
NodeDebugger::~NodeDebugger() {}
|
|
|
|
void NodeDebugger::Start() {
|
|
auto* inspector = env_->inspector_agent();
|
|
if (inspector == nullptr)
|
|
return;
|
|
|
|
std::vector<std::string> args;
|
|
for (auto& arg : base::CommandLine::ForCurrentProcess()->argv()) {
|
|
#if defined(OS_WIN)
|
|
args.push_back(base::UTF16ToUTF8(arg));
|
|
#else
|
|
args.push_back(arg);
|
|
#endif
|
|
}
|
|
|
|
node::DebugOptions options;
|
|
std::vector<std::string> exec_args;
|
|
std::vector<std::string> v8_args;
|
|
std::vector<std::string> errors;
|
|
|
|
node::options_parser::Parse(&args, &exec_args, &v8_args, &options,
|
|
node::options_parser::kDisallowedInEnvironment,
|
|
&errors);
|
|
|
|
if (!errors.empty()) {
|
|
// TODO(jeremy): what's the appropriate behaviour here?
|
|
LOG(ERROR) << "Error parsing node options: "
|
|
<< base::JoinString(errors, " ");
|
|
}
|
|
|
|
const char* path = "";
|
|
if (inspector->Start(path, options,
|
|
std::make_shared<node::HostPort>(options.host_port),
|
|
true /* is_main */))
|
|
DCHECK(env_->inspector_agent()->IsListening());
|
|
}
|
|
|
|
void NodeDebugger::Stop() {
|
|
auto* inspector = env_->inspector_agent();
|
|
if (inspector && inspector->IsListening())
|
|
inspector->Stop();
|
|
}
|
|
|
|
} // namespace electron
|