Commit b5b0b46b authored by Alex Clarke's avatar Alex Clarke Committed by Commit Bot

Headless: Wire up a basic NetLog if we're not logging to disk

DevTools relies on a NetLogObserver (which needs a NetLog) to return the
raw response headers, e.g. Set-Cookie headers.

Bug: 692090
Change-Id: I9faae71198b7c45d1dc05175b606452012d7ec83
Reviewed-on: https://chromium-review.googlesource.com/565139
Commit-Queue: Alex Clarke <alexclarke@chromium.org>
Reviewed-by: default avatarEric Seckler <eseckler@chromium.org>
Cr-Commit-Position: refs/heads/master@{#485265}
parent 93aa0e38
...@@ -27,6 +27,8 @@ void HeadlessBrowserMainParts::PreMainMessageLoopRun() { ...@@ -27,6 +27,8 @@ void HeadlessBrowserMainParts::PreMainMessageLoopRun() {
base::FilePath log_path = base::FilePath log_path =
command_line->GetSwitchValuePath(switches::kLogNetLog); command_line->GetSwitchValuePath(switches::kLogNetLog);
net_log_.reset(new HeadlessNetLog(log_path)); net_log_.reset(new HeadlessNetLog(log_path));
} else {
net_log_.reset(new net::NetLog());
} }
if (browser_->options()->DevtoolsServerEnabled()) { if (browser_->options()->DevtoolsServerEnabled()) {
......
...@@ -11,9 +11,12 @@ ...@@ -11,9 +11,12 @@
#include "content/public/browser/browser_main_parts.h" #include "content/public/browser/browser_main_parts.h"
#include "headless/public/headless_browser.h" #include "headless/public/headless_browser.h"
namespace net {
class NetLog;
} // namespace net
namespace headless { namespace headless {
class HeadlessNetLog;
class HeadlessBrowserImpl; class HeadlessBrowserImpl;
class HeadlessBrowserMainParts : public content::BrowserMainParts { class HeadlessBrowserMainParts : public content::BrowserMainParts {
...@@ -28,13 +31,13 @@ class HeadlessBrowserMainParts : public content::BrowserMainParts { ...@@ -28,13 +31,13 @@ class HeadlessBrowserMainParts : public content::BrowserMainParts {
void PreMainMessageLoopStart() override; void PreMainMessageLoopStart() override;
#endif #endif
HeadlessNetLog* net_log() const { return net_log_.get(); } net::NetLog* net_log() const { return net_log_.get(); }
private: private:
HeadlessBrowserImpl* browser_; // Not owned. HeadlessBrowserImpl* browser_; // Not owned.
bool devtools_http_handler_started_; bool devtools_http_handler_started_;
std::unique_ptr<HeadlessNetLog> net_log_; std::unique_ptr<net::NetLog> net_log_;
DISALLOW_COPY_AND_ASSIGN(HeadlessBrowserMainParts); DISALLOW_COPY_AND_ASSIGN(HeadlessBrowserMainParts);
}; };
......
...@@ -239,4 +239,8 @@ void HeadlessContentBrowserClient::ResourceDispatcherHostCreated() { ...@@ -239,4 +239,8 @@ void HeadlessContentBrowserClient::ResourceDispatcherHostCreated() {
resource_dispatcher_host_delegate_.get()); resource_dispatcher_host_delegate_.get());
} }
net::NetLog* HeadlessContentBrowserClient::GetNetLog() {
return browser_->browser_main_parts()->net_log();
}
} // namespace headless } // namespace headless
...@@ -52,6 +52,8 @@ class HeadlessContentBrowserClient : public content::ContentBrowserClient { ...@@ -52,6 +52,8 @@ class HeadlessContentBrowserClient : public content::ContentBrowserClient {
void ResourceDispatcherHostCreated() override; void ResourceDispatcherHostCreated() override;
net::NetLog* GetNetLog() override;
private: private:
std::unique_ptr<base::Value> GetBrowserServiceManifestOverlay(); std::unique_ptr<base::Value> GetBrowserServiceManifestOverlay();
std::unique_ptr<base::Value> GetRendererServiceManifestOverlay(); std::unique_ptr<base::Value> GetRendererServiceManifestOverlay();
......
...@@ -1438,4 +1438,31 @@ class FailedUrlRequestTest : public HeadlessAsyncDevTooledBrowserTest, ...@@ -1438,4 +1438,31 @@ class FailedUrlRequestTest : public HeadlessAsyncDevTooledBrowserTest,
HEADLESS_ASYNC_DEVTOOLED_TEST_F(FailedUrlRequestTest); HEADLESS_ASYNC_DEVTOOLED_TEST_F(FailedUrlRequestTest);
class DevToolsSetCookieTest : public HeadlessAsyncDevTooledBrowserTest,
public network::Observer {
public:
void RunDevTooledTest() override {
EXPECT_TRUE(embedded_test_server()->Start());
devtools_client_->GetNetwork()->AddObserver(this);
base::RunLoop run_loop;
devtools_client_->GetNetwork()->Enable(run_loop.QuitClosure());
base::MessageLoop::ScopedNestableTaskAllower nest_loop(
base::MessageLoop::current());
run_loop.Run();
devtools_client_->GetPage()->Navigate(
embedded_test_server()->GetURL("/set-cookie?cookie1").spec());
}
void OnResponseReceived(
const network::ResponseReceivedParams& params) override {
EXPECT_NE(std::string::npos, params.GetResponse()->GetHeadersText().find(
"Set-Cookie: cookie1"));
FinishAsynchronousTest();
}
};
HEADLESS_ASYNC_DEVTOOLED_TEST_F(DevToolsSetCookieTest);
} // namespace headless } // namespace headless
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment