Cleanup command line handling code

This commit is contained in:
Cheng Zhao 2015-03-29 19:59:16 +08:00
parent d9c22396ea
commit 922def8ce0
4 changed files with 17 additions and 25 deletions

View file

@ -6,13 +6,14 @@
namespace atom {
void AtomCommandLine::Init(int argc,
const char* const* argv) {
for (int i = 0; i < argc; ++i) {
argv_.push_back(argv[i]);
}
}
// static
std::vector<std::string> AtomCommandLine::argv_;
std::vector<std::string> AtomCommandLine::argv_;
// static
void AtomCommandLine::Init(int argc, const char* const* argv) {
for (int i = 0; i < argc; ++i) {
argv_.push_back(argv[i]);
}
}
} // namespace atom

View file

@ -8,10 +8,11 @@
#include <string>
#include <vector>
#include "base/logging.h"
#include "base/macros.h"
namespace atom {
// Singleton to remember the original "argc" and "argv".
class AtomCommandLine {
public:
static void Init(int argc, const char* const* argv);
@ -20,7 +21,7 @@ class AtomCommandLine {
private:
static std::vector<std::string> argv_;
DISALLOW_COPY_AND_ASSIGN(AtomCommandLine);
DISALLOW_IMPLICIT_CONSTRUCTORS(AtomCommandLine);
};
} // namespace atom

View file

@ -67,9 +67,6 @@ void AtomMainDelegate::PreSandboxStartup() {
if (!process_type.empty())
return;
// Add a flag to mark the start of switches added by atom-shell.
command_line->AppendSwitch("atom-shell-switches-start");
#if defined(OS_WIN)
// Disable the LegacyRenderWidgetHostHWND, it made frameless windows unable
// to move and resize. We may consider enabling it again after upgraded to
@ -84,9 +81,6 @@ void AtomMainDelegate::PreSandboxStartup() {
// Enable AVFoundation.
command_line->AppendSwitch("enable-avfoundation");
#endif
// Add a flag to mark the end of switches added by atom-shell.
command_line->AppendSwitch("atom-shell-switches-end");
}
content::ContentBrowserClient* AtomMainDelegate::CreateContentBrowserClient() {

View file

@ -18,10 +18,6 @@
#include "native_mate/locker.h"
#include "native_mate/dictionary.h"
#if defined(OS_WIN)
#include "base/strings/utf_string_conversions.h"
#endif
#include "atom/common/node_includes.h"
using content::BrowserThread;
@ -104,10 +100,11 @@ scoped_ptr<const char*[]> StringVectorToArgArray(
return array.Pass();
}
base::FilePath GetResourcesPath(base::CommandLine* command_line,
bool is_browser) {
base::FilePath exec_path(command_line->argv()[0]);
base::FilePath GetResourcesPath(bool is_browser) {
auto command_line = base::CommandLine::ForCurrentProcess();
base::FilePath exec_path(command_line->GetProgram());
PathService::Get(base::FILE_EXE, &exec_path);
base::FilePath resources_path =
#if defined(OS_MACOSX)
is_browser ? exec_path.DirName().DirName().Append("Resources") :
@ -159,12 +156,11 @@ void NodeBindings::Initialize() {
node::Environment* NodeBindings::CreateEnvironment(
v8::Handle<v8::Context> context) {
auto args = AtomCommandLine::argv();
auto command_line = base::CommandLine::ForCurrentProcess();
// Feed node the path to initialization script.
base::FilePath::StringType process_type = is_browser_ ?
FILE_PATH_LITERAL("browser") : FILE_PATH_LITERAL("renderer");
base::FilePath resources_path = GetResourcesPath(command_line, is_browser_);
base::FilePath resources_path = GetResourcesPath(is_browser_);
base::FilePath script_path =
resources_path.Append(FILE_PATH_LITERAL("atom.asar"))
.Append(process_type)
@ -174,7 +170,7 @@ node::Environment* NodeBindings::CreateEnvironment(
args.insert(args.begin() + 1, script_path_str.c_str());
scoped_ptr<const char*[]> c_argv = StringVectorToArgArray(args);
node::Environment* env = node::CreateEnvironment(
node::Environment* env = node::CreateEnvironment(
context->GetIsolate(), uv_default_loop(), context,
args.size(), c_argv.get(), 0, nullptr);