Index: headless/app/headless_shell.cc |
diff --git a/headless/app/headless_shell.cc b/headless/app/headless_shell.cc |
index c2e3690f53da75384e55664d2df160acde513ca4..9a77420138d946f273fcfdef7af1405d3237ed4f 100644 |
--- a/headless/app/headless_shell.cc |
+++ b/headless/app/headless_shell.cc |
@@ -33,14 +33,7 @@ |
#include "net/base/net_errors.h" |
#include "ui/gfx/geometry/size.h" |
-using headless::HeadlessBrowser; |
-using headless::HeadlessBrowserContext; |
-using headless::HeadlessDevToolsClient; |
-using headless::HeadlessWebContents; |
-namespace emulation = headless::emulation; |
-namespace page = headless::page; |
-namespace runtime = headless::runtime; |
- |
+namespace headless { |
namespace { |
// Address where to listen to incoming DevTools connections. |
const char kDevToolsHttpServerAddress[] = "127.0.0.1"; |
@@ -59,7 +52,7 @@ bool ParseWindowSize(std::string window_size, gfx::Size* parsed_window_size) { |
} |
} // namespace |
-// A sample application which demonstrates the use of the headless API. |
+// An application which implements a simple headless browser. |
class HeadlessShell : public HeadlessWebContents::Observer, |
emulation::ExperimentalObserver, |
page::Observer { |
@@ -78,24 +71,24 @@ class HeadlessShell : public HeadlessWebContents::Observer, |
HeadlessBrowserContext::Builder context_builder = |
browser_->CreateBrowserContextBuilder(); |
if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
- headless::switches::kDeterministicFetch)) { |
+ switches::kDeterministicFetch)) { |
deterministic_dispatcher_.reset( |
- new headless::DeterministicDispatcher(browser_->BrowserIOThread())); |
+ new DeterministicDispatcher(browser_->BrowserIOThread())); |
- headless::ProtocolHandlerMap protocol_handlers; |
+ ProtocolHandlerMap protocol_handlers; |
protocol_handlers[url::kHttpScheme] = |
- base::MakeUnique<headless::DeterministicHttpProtocolHandler>( |
+ base::MakeUnique<DeterministicHttpProtocolHandler>( |
deterministic_dispatcher_.get(), browser->BrowserIOThread()); |
protocol_handlers[url::kHttpsScheme] = |
- base::MakeUnique<headless::DeterministicHttpProtocolHandler>( |
+ base::MakeUnique<DeterministicHttpProtocolHandler>( |
deterministic_dispatcher_.get(), browser->BrowserIOThread()); |
context_builder.SetProtocolHandlers(std::move(protocol_handlers)); |
} |
if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
- headless::switches::kHideScrollbars)) { |
+ switches::kHideScrollbars)) { |
context_builder.SetOverrideWebPreferencesCallback( |
- base::Bind([](headless::WebPreferences* preferences) { |
+ base::Bind([](WebPreferences* preferences) { |
preferences->hide_scrollbars = true; |
})); |
} |
@@ -147,10 +140,10 @@ class HeadlessShell : public HeadlessWebContents::Observer, |
devtools_client_->GetEmulation()->GetExperimental()->AddObserver(this); |
if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
- headless::switches::kVirtualTimeBudget)) { |
+ switches::kVirtualTimeBudget)) { |
std::string budget_ms_ascii = |
base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII( |
- headless::switches::kVirtualTimeBudget); |
+ switches::kVirtualTimeBudget); |
int budget_ms; |
CHECK(base::StringToInt(budget_ms_ascii, &budget_ms)) |
<< "Expected an integer value for --virtual-time-budget="; |
@@ -200,7 +193,7 @@ class HeadlessShell : public HeadlessWebContents::Observer, |
// page::Observer implementation: |
void OnLoadEventFired(const page::LoadEventFiredParams& params) override { |
if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
- headless::switches::kVirtualTimeBudget)) { |
+ switches::kVirtualTimeBudget)) { |
return; |
} |
OnPageReady(); |
@@ -211,17 +204,16 @@ class HeadlessShell : public HeadlessWebContents::Observer, |
return; |
processed_page_ready_ = true; |
- if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
- headless::switches::kDumpDom)) { |
+ if (base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kDumpDom)) { |
FetchDom(); |
} else if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
- headless::switches::kRepl)) { |
+ switches::kRepl)) { |
std::cout |
<< "Type a Javascript expression to evaluate or \"quit\" to exit." |
<< std::endl; |
InputExpression(); |
} else if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
- headless::switches::kScreenshot)) { |
+ switches::kScreenshot)) { |
CaptureScreenshot(); |
} else { |
Shutdown(); |
@@ -281,7 +273,7 @@ class HeadlessShell : public HeadlessWebContents::Observer, |
std::unique_ptr<page::CaptureScreenshotResult> result) { |
base::FilePath file_name = |
base::CommandLine::ForCurrentProcess()->GetSwitchValuePath( |
- headless::switches::kScreenshot); |
+ switches::kScreenshot); |
if (file_name.empty()) { |
file_name = base::FilePath().AppendASCII(kDefaultScreenshotFileName); |
} |
@@ -350,7 +342,7 @@ class HeadlessShell : public HeadlessWebContents::Observer, |
bool RemoteDebuggingEnabled() const { |
const base::CommandLine& command_line = |
*base::CommandLine::ForCurrentProcess(); |
- return command_line.HasSwitch(switches::kRemoteDebuggingPort); |
+ return command_line.HasSwitch(::switches::kRemoteDebuggingPort); |
} |
private: |
@@ -361,23 +353,23 @@ class HeadlessShell : public HeadlessWebContents::Observer, |
bool processed_page_ready_; |
std::unique_ptr<net::FileStream> screenshot_file_stream_; |
HeadlessBrowserContext* browser_context_; |
- std::unique_ptr<headless::DeterministicDispatcher> deterministic_dispatcher_; |
+ std::unique_ptr<DeterministicDispatcher> deterministic_dispatcher_; |
DISALLOW_COPY_AND_ASSIGN(HeadlessShell); |
}; |
-int main(int argc, const char** argv) { |
- headless::RunChildProcessIfNeeded(argc, argv); |
+int HeadlessShellMain(int argc, const char** argv) { |
+ RunChildProcessIfNeeded(argc, argv); |
HeadlessShell shell; |
HeadlessBrowser::Options::Builder builder(argc, argv); |
// Enable devtools if requested. |
base::CommandLine command_line(argc, argv); |
- if (command_line.HasSwitch(switches::kRemoteDebuggingPort)) { |
+ if (command_line.HasSwitch(::switches::kRemoteDebuggingPort)) { |
std::string address = kDevToolsHttpServerAddress; |
- if (command_line.HasSwitch(headless::switches::kRemoteDebuggingAddress)) { |
- address = command_line.GetSwitchValueASCII( |
- headless::switches::kRemoteDebuggingAddress); |
+ if (command_line.HasSwitch(switches::kRemoteDebuggingAddress)) { |
+ address = |
+ command_line.GetSwitchValueASCII(switches::kRemoteDebuggingAddress); |
net::IPAddress parsed_address; |
if (!net::ParseURLHostnameToAddress(address, &parsed_address)) { |
LOG(ERROR) << "Invalid devtools server address"; |
@@ -386,7 +378,7 @@ int main(int argc, const char** argv) { |
} |
int parsed_port; |
std::string port_str = |
- command_line.GetSwitchValueASCII(switches::kRemoteDebuggingPort); |
+ command_line.GetSwitchValueASCII(::switches::kRemoteDebuggingPort); |
if (!base::StringToInt(port_str, &parsed_port) || |
!base::IsValueInRangeForNumericType<uint16_t>(parsed_port)) { |
LOG(ERROR) << "Invalid devtools server port"; |
@@ -399,9 +391,9 @@ int main(int argc, const char** argv) { |
devtools_address, base::checked_cast<uint16_t>(parsed_port))); |
} |
- if (command_line.HasSwitch(headless::switches::kProxyServer)) { |
+ if (command_line.HasSwitch(switches::kProxyServer)) { |
std::string proxy_server = |
- command_line.GetSwitchValueASCII(headless::switches::kProxyServer); |
+ command_line.GetSwitchValueASCII(switches::kProxyServer); |
net::HostPortPair parsed_proxy_server = |
net::HostPortPair::FromString(proxy_server); |
if (parsed_proxy_server.host().empty() || !parsed_proxy_server.port()) { |
@@ -411,25 +403,25 @@ int main(int argc, const char** argv) { |
builder.SetProxyServer(parsed_proxy_server); |
} |
- if (command_line.HasSwitch(switches::kHostResolverRules)) { |
+ if (command_line.HasSwitch(::switches::kHostResolverRules)) { |
builder.SetHostResolverRules( |
- command_line.GetSwitchValueASCII(switches::kHostResolverRules)); |
+ command_line.GetSwitchValueASCII(::switches::kHostResolverRules)); |
} |
- if (command_line.HasSwitch(headless::switches::kUseGL)) { |
+ if (command_line.HasSwitch(switches::kUseGL)) { |
builder.SetGLImplementation( |
- command_line.GetSwitchValueASCII(headless::switches::kUseGL)); |
+ command_line.GetSwitchValueASCII(switches::kUseGL)); |
} |
- if (command_line.HasSwitch(headless::switches::kUserDataDir)) { |
+ if (command_line.HasSwitch(switches::kUserDataDir)) { |
builder.SetUserDataDir( |
- command_line.GetSwitchValuePath(headless::switches::kUserDataDir)); |
+ command_line.GetSwitchValuePath(switches::kUserDataDir)); |
builder.SetIncognitoMode(false); |
} |
- if (command_line.HasSwitch(headless::switches::kWindowSize)) { |
+ if (command_line.HasSwitch(switches::kWindowSize)) { |
std::string window_size = |
- command_line.GetSwitchValueASCII(headless::switches::kWindowSize); |
+ command_line.GetSwitchValueASCII(switches::kWindowSize); |
gfx::Size parsed_window_size; |
if (!ParseWindowSize(window_size, &parsed_window_size)) { |
LOG(ERROR) << "Malformed window size"; |
@@ -442,3 +434,5 @@ int main(int argc, const char** argv) { |
builder.Build(), |
base::Bind(&HeadlessShell::OnStart, base::Unretained(&shell))); |
} |
+ |
+} // namespace headless |