+Browser* AtomBrowserMainParts::GetStaticBrowser() {
+ return self_browser.get();
+}
+
+void AtomBrowserMainParts::SetNodeEnvironment() {
+ if (g_prelaunch)
+ return;
+
+ std::unique_ptr<base::FeatureList> feature_list(new base::FeatureList);
+ feature_list->InitializeFromCommandLine("", "");
+ base::FeatureList::SetInstance(std::move(feature_list));
+
+ gin::V8Initializer::LoadV8Snapshot();
+ gin::V8Initializer::LoadV8Natives();
+
+ self_browser.reset(new atom::Browser);
+ self_bridge_task_runner = new atom::BridgeTaskRunner;
+ base::ThreadTaskRunnerHandle handle(self_bridge_task_runner);
+
+ self_js_env.reset(new atom::JavascriptEnvironment);
+ self_node_bindings.reset(atom::NodeBindings::Create(atom::NodeBindings::BROWSER));
+ self_atom_bindings.reset(new atom::AtomBindings(uv_default_loop()));
+ self_node_bindings->Initialize();
+
+ self_node_debugger.reset(new atom::NodeDebugger(self_js_env->isolate()));
+ env_ = self_node_bindings->CreateEnvironment(self_js_env->context());
+ self_node_env.reset(new atom::NodeEnvironment(env_));
+
+ if (self_node_debugger->IsRunning())
+ env_->AssignToContext(v8::Debug::GetDebugContext(self_js_env->isolate()));
+
+ self_atom_bindings->BindTo(self_js_env->isolate(), env_->process_object());
+
+ self_node_bindings->LoadEnvironment(env_);
+ self_node_bindings->set_uv_env(env_);
+ g_prelaunch = true;
+}
+