diff --git a/atom/common/node_bindings.cc b/atom/common/node_bindings.cc index 1f3180fb8951..6f2d76218ff1 100644 --- a/atom/common/node_bindings.cc +++ b/atom/common/node_bindings.cc @@ -26,9 +26,6 @@ using content::BrowserThread; // Forward declaration of internal node functions. namespace node { void Init(int*, const char**, int*, const char***); -void Load(Environment* env); -void SetupProcessObject(Environment*, int, const char* const*, int, - const char* const*); } // Force all builtin modules to be referenced so they can actually run their @@ -89,19 +86,6 @@ namespace { void UvNoOp(uv_async_t* handle) { } -// Moved from node.cc. -void HandleCloseCb(uv_handle_t* handle) { - node::Environment* env = reinterpret_cast(handle->data); - env->FinishHandleCleanup(handle); -} - -void HandleCleanup(node::Environment* env, - uv_handle_t* handle, - void* arg) { - handle->data = env; - uv_close(handle, HandleCloseCb); -} - // Convert the given vector to an array of C-strings. The strings in the // returned vector are only guaranteed valid so long as the vector of strings // is not modified. @@ -126,14 +110,14 @@ std::vector String16VectorToStringVector( } // namespace -node::Environment* global_env = NULL; +node::Environment* global_env = nullptr; NodeBindings::NodeBindings(bool is_browser) : is_browser_(is_browser), - message_loop_(NULL), + message_loop_(nullptr), uv_loop_(uv_default_loop()), embed_closed_(false), - uv_env_(NULL), + uv_env_(nullptr), weak_factory_(this) { } @@ -158,7 +142,7 @@ void NodeBindings::Initialize() { // Init node. // (we assume it would not node::Init would not modify the parameters under // embedded mode). - node::Init(NULL, NULL, NULL, NULL); + node::Init(nullptr, nullptr, nullptr, nullptr); } node::Environment* NodeBindings::CreateEnvironment( @@ -189,65 +173,12 @@ node::Environment* NodeBindings::CreateEnvironment( std::string script_path_str = script_path.AsUTF8Unsafe(); args.insert(args.begin() + 1, script_path_str.c_str()); - // Convert string vector to const char* array. scoped_ptr c_argv = StringVectorToArgArray(args); - - // Construct the parameters that passed to node::CreateEnvironment: - v8::Isolate* isolate = context->GetIsolate(); - uv_loop_t* loop = uv_default_loop(); - int argc = args.size(); - const char** argv = c_argv.get(); - int exec_argc = 0; - const char** exec_argv = NULL; - - using namespace v8; // NOLINT - using namespace node; // NOLINT - - // Following code are stripped from node::CreateEnvironment in node.cc: - HandleScope handle_scope(isolate); - - Context::Scope context_scope(context); - Environment* env = Environment::New(context, loop); - - isolate->SetAutorunMicrotasks(false); - - uv_check_init(env->event_loop(), env->immediate_check_handle()); - uv_unref( - reinterpret_cast(env->immediate_check_handle())); - - uv_idle_init(env->event_loop(), env->immediate_idle_handle()); - - uv_prepare_init(env->event_loop(), env->idle_prepare_handle()); - uv_check_init(env->event_loop(), env->idle_check_handle()); - uv_unref(reinterpret_cast(env->idle_prepare_handle())); - uv_unref(reinterpret_cast(env->idle_check_handle())); - - // Register handle cleanups - env->RegisterHandleCleanup( - reinterpret_cast(env->immediate_check_handle()), - HandleCleanup, - nullptr); - env->RegisterHandleCleanup( - reinterpret_cast(env->immediate_idle_handle()), - HandleCleanup, - nullptr); - env->RegisterHandleCleanup( - reinterpret_cast(env->idle_prepare_handle()), - HandleCleanup, - nullptr); - env->RegisterHandleCleanup( - reinterpret_cast(env->idle_check_handle()), - HandleCleanup, - nullptr); - - Local process_template = FunctionTemplate::New(isolate); - process_template->SetClassName(FIXED_ONE_BYTE_STRING(isolate, "process")); - - Local process_object = process_template->GetFunction()->NewInstance(); - env->set_process_object(process_object); - - SetupProcessObject(env, argc, argv, exec_argc, exec_argv); - return env; + return node::CreateEnvironment(context->GetIsolate(), + uv_default_loop(), + context, + args.size(), c_argv.get(), + 0, nullptr); } void NodeBindings::LoadEnvironment(node::Environment* env) {