Chromium Code Reviews| Index: chrome/browser/extensions/api/terminal/terminal_private_api.cc |
| diff --git a/chrome/browser/extensions/api/terminal/terminal_private_api.cc b/chrome/browser/extensions/api/terminal/terminal_private_api.cc |
| index 3e7db7188c3a08b82857a2c11c761b8ec12de629..c3c23f3092ed9b6193450427401f0ba73c8740aa 100644 |
| --- a/chrome/browser/extensions/api/terminal/terminal_private_api.cc |
| +++ b/chrome/browser/extensions/api/terminal/terminal_private_api.cc |
| @@ -7,6 +7,7 @@ |
| #include <utility> |
| #include "base/bind.h" |
| +#include "base/command_line.h" |
| #include "base/json/json_writer.h" |
| #include "base/memory/ptr_util.h" |
| #include "base/sys_info.h" |
| @@ -14,6 +15,7 @@ |
| #include "chrome/browser/extensions/api/terminal/terminal_extension_helper.h" |
| #include "chrome/browser/extensions/extension_service.h" |
| #include "chrome/browser/extensions/extension_tab_util.h" |
| +#include "chrome/common/chrome_switches.h" |
| #include "chrome/common/extensions/api/terminal_private.h" |
| #include "chromeos/process_proxy/process_proxy_registry.h" |
| #include "content/public/browser/browser_context.h" |
| @@ -40,18 +42,21 @@ const char kCroshCommand[] = "/usr/bin/crosh"; |
| // We make stubbed crosh just echo back input. |
| const char kStubbedCroshCommand[] = "cat"; |
| -const char* GetCroshPath() { |
| +std::string GetCroshPath() { |
| + base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); |
| + if (command_line->HasSwitch(switches::kCroshCommand)) |
| + return command_line->GetSwitchValueASCII(switches::kCroshCommand); |
| if (base::SysInfo::IsRunningOnChromeOS()) |
| - return kCroshCommand; |
| + return std::string(kCroshCommand); |
| else |
|
benwells
2017/01/10 22:25:07
Nit: While here can you remove this else (no else
reveman
2017/01/11 00:33:01
Done.
|
| - return kStubbedCroshCommand; |
| + return std::string(kStubbedCroshCommand); |
| } |
| -const char* GetProcessCommandForName(const std::string& name) { |
| +std::string GetProcessCommandForName(const std::string& name) { |
| if (name == kCroshName) |
| return GetCroshPath(); |
| else |
| - return NULL; |
| + return std::string(); |
| } |
| void NotifyProcessOutput(content::BrowserContext* browser_context, |
| @@ -101,7 +106,7 @@ int GetTabOrWindowSessionId(content::BrowserContext* browser_context, |
| namespace extensions { |
| TerminalPrivateOpenTerminalProcessFunction:: |
| - TerminalPrivateOpenTerminalProcessFunction() : command_(NULL) {} |
| + TerminalPrivateOpenTerminalProcessFunction() {} |
| TerminalPrivateOpenTerminalProcessFunction:: |
| ~TerminalPrivateOpenTerminalProcessFunction() {} |
| @@ -113,7 +118,7 @@ TerminalPrivateOpenTerminalProcessFunction::Run() { |
| EXTENSION_FUNCTION_VALIDATE(params.get()); |
| command_ = GetProcessCommandForName(params->process_name); |
| - if (!command_) |
| + if (command_.empty()) |
| return RespondNow(Error("Invalid process name.")); |
| content::WebContents* caller_contents = GetSenderWebContents(); |
| @@ -150,12 +155,12 @@ TerminalPrivateOpenTerminalProcessFunction::Run() { |
| void TerminalPrivateOpenTerminalProcessFunction::OpenOnFileThread( |
| const ProcessOutputCallback& output_callback, |
| const OpenProcessCallback& callback) { |
| - DCHECK(command_); |
| + DCHECK(!command_.empty()); |
| chromeos::ProcessProxyRegistry* registry = |
| chromeos::ProcessProxyRegistry::Get(); |
| - int terminal_id = registry->OpenProcess(command_, output_callback); |
| + int terminal_id = registry->OpenProcess(command_.c_str(), output_callback); |
| content::BrowserThread::PostTask(content::BrowserThread::UI, FROM_HERE, |
| base::Bind(callback, terminal_id)); |