Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2486)

Unified Diff: headless/app/headless_shell.cc

Issue 2470233003: headless: Librarify Headless Shell (Closed)
Patch Set: Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « headless/BUILD.gn ('k') | headless/app/headless_shell_main.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « headless/BUILD.gn ('k') | headless/app/headless_shell_main.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698