Chromium Code Reviews| Index: headless/app/headless_shell.cc |
| diff --git a/headless/app/headless_shell.cc b/headless/app/headless_shell.cc |
| index 1031dbd5446b78a4fa95d7981971fc1a9faca677..f0905799d8a9556df34d6b95bb17d919b48f2ca6 100644 |
| --- a/headless/app/headless_shell.cc |
| +++ b/headless/app/headless_shell.cc |
| @@ -13,13 +13,18 @@ |
| #include "base/strings/string_number_conversions.h" |
| #include "content/public/common/content_switches.h" |
| #include "headless/app/headless_shell_switches.h" |
| +#include "headless/public/domains/page.h" |
| #include "headless/public/headless_browser.h" |
| +#include "headless/public/headless_devtools_client.h" |
| +#include "headless/public/headless_devtools_target.h" |
| #include "headless/public/headless_web_contents.h" |
| #include "net/base/ip_address.h" |
| #include "ui/gfx/geometry/size.h" |
| using headless::HeadlessBrowser; |
| +using headless::HeadlessDevToolsClient; |
| using headless::HeadlessWebContents; |
| +namespace page = headless::page; |
| namespace { |
| // Address where to listen to incoming DevTools connections. |
| @@ -29,12 +34,20 @@ const char kDevToolsHttpServerAddress[] = "127.0.0.1"; |
| // A sample application which demonstrates the use of the headless API. |
| class HeadlessShell : public HeadlessWebContents::Observer { |
| public: |
| - HeadlessShell() : browser_(nullptr) {} |
| + HeadlessShell() |
| + : browser_(nullptr), devtools_client_(HeadlessDevToolsClient::Create()) {} |
| ~HeadlessShell() override { |
| if (web_contents_) |
| web_contents_->RemoveObserver(this); |
| } |
| + void DevToolsTargetReady() override { |
| + web_contents_->GetDevToolsTarget()->AttachClient(devtools_client_.get()); |
| + // TODO(skyostil): Implement shorthand overloads for required parameters. |
| + devtools_client_->GetPage()->Navigate( |
| + page::NavigateParams::Builder().SetUrl("http://hs.fi").Build()); |
| + } |
| + |
| void OnStart(HeadlessBrowser* browser) { |
| browser_ = browser; |
| @@ -58,8 +71,14 @@ class HeadlessShell : public HeadlessWebContents::Observer { |
| } |
| void ShutdownIfNeeded() { |
| + return; |
|
altimin
2016/04/14 12:54:11
Unremoved debugging?
Sami
2016/04/15 14:43:44
Argh, yes. Cleaned up.
|
| const base::CommandLine& command_line = |
| *base::CommandLine::ForCurrentProcess(); |
| + // Detach the devtools client so a remote debugger can connect. |
| + if (devtools_client_) { |
| + web_contents_->GetDevToolsTarget()->DetachClient(devtools_client_.get()); |
| + devtools_client_ = nullptr; |
| + } |
| if (!command_line.HasSwitch(switches::kRemoteDebuggingPort)) { |
| web_contents_ = nullptr; |
| browser_->Shutdown(); |
| @@ -73,6 +92,7 @@ class HeadlessShell : public HeadlessWebContents::Observer { |
| private: |
| HeadlessBrowser* browser_; // Not owned. |
| + std::unique_ptr<HeadlessDevToolsClient> devtools_client_; |
| std::unique_ptr<HeadlessWebContents> web_contents_; |
| DISALLOW_COPY_AND_ASSIGN(HeadlessShell); |