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

Unified Diff: headless/app/headless_shell.cc

Issue 2352663003: Adds a --deterministic-fetch flag to headless_shell (Closed)
Patch Set: Changes for Sami Created 4 years, 3 months 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_switches.h » ('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 73e4d62aa29d44113d2ee3db7bf1c8f726b77500..0c9ed16b5ad873ecabe0c361dcde2be8fa7a3b8a 100644
--- a/headless/app/headless_shell.cc
+++ b/headless/app/headless_shell.cc
@@ -25,6 +25,8 @@
#include "headless/public/headless_devtools_client.h"
#include "headless/public/headless_devtools_target.h"
#include "headless/public/headless_web_contents.h"
+#include "headless/public/util/deterministic_dispatcher.h"
+#include "headless/public/util/deterministic_http_protocol_handler.h"
#include "net/base/file_stream.h"
#include "net/base/io_buffer.h"
#include "net/base/ip_address.h"
@@ -73,7 +75,25 @@ class HeadlessShell : public HeadlessWebContents::Observer,
void OnStart(HeadlessBrowser* browser) {
browser_ = browser;
- browser_context_ = browser_->CreateBrowserContextBuilder().Build();
+ if (base::CommandLine::ForCurrentProcess()->HasSwitch(
+ headless::switches::kDeterministicFetch)) {
+ deterministic_dispatcher_.reset(
+ new headless::DeterministicDispatcher(browser_->BrowserIOThread()));
+
+ headless::ProtocolHandlerMap protocol_handlers;
+ protocol_handlers[url::kHttpScheme] =
+ base::MakeUnique<headless::DeterministicHttpProtocolHandler>(
+ deterministic_dispatcher_.get(), browser->BrowserIOThread());
+ protocol_handlers[url::kHttpsScheme] =
+ base::MakeUnique<headless::DeterministicHttpProtocolHandler>(
+ deterministic_dispatcher_.get(), browser->BrowserIOThread());
+
+ browser_context_ = browser_->CreateBrowserContextBuilder()
+ .SetProtocolHandlers(std::move(protocol_handlers))
+ .Build();
+ } else {
+ browser_context_ = browser_->CreateBrowserContextBuilder().Build();
+ }
HeadlessWebContents::Builder builder(
browser_context_->CreateWebContentsBuilder());
@@ -335,6 +355,7 @@ 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_;
DISALLOW_COPY_AND_ASSIGN(HeadlessShell);
};
« no previous file with comments | « headless/BUILD.gn ('k') | headless/app/headless_shell_switches.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698