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

Side by Side Diff: headless/app/headless_shell.cc

Issue 2887033003: Add specific headless_shell_win.cc and headless_content_main_delegate_win.cc (Closed)
Patch Set: Created 3 years, 7 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <memory> 5 #include <memory>
6 #include <sstream> 6 #include <sstream>
7 #include <string> 7 #include <string>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/base64.h" 10 #include "base/base64.h"
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 #if !defined(CHROME_MULTIPLE_DLL_CHILD) 64 #if !defined(CHROME_MULTIPLE_DLL_CHILD)
65 web_contents_(nullptr), 65 web_contents_(nullptr),
66 browser_context_(nullptr), 66 browser_context_(nullptr),
67 #endif 67 #endif
68 processed_page_ready_(false), 68 processed_page_ready_(false),
69 weak_factory_(this) { 69 weak_factory_(this) {
70 } 70 }
71 71
72 HeadlessShell::~HeadlessShell() {} 72 HeadlessShell::~HeadlessShell() {}
73 73
74 #if !defined(CHROME_MULTIPLE_DLL_CHILD)
74 void HeadlessShell::OnStart(HeadlessBrowser* browser) { 75 void HeadlessShell::OnStart(HeadlessBrowser* browser) {
75 // TODO(dvallet): Consider making a Windows specific class to make specific
76 // child builds clearer.
77 #if !defined(CHROME_MULTIPLE_DLL_CHILD)
78 browser_ = browser; 76 browser_ = browser;
79 77
80 HeadlessBrowserContext::Builder context_builder = 78 HeadlessBrowserContext::Builder context_builder =
81 browser_->CreateBrowserContextBuilder(); 79 browser_->CreateBrowserContextBuilder();
82 // TODO(eseckler): These switches should also affect BrowserContexts that 80 // TODO(eseckler): These switches should also affect BrowserContexts that
83 // are created via DevTools later. 81 // are created via DevTools later.
84 DeterministicHttpProtocolHandler* http_handler = nullptr; 82 DeterministicHttpProtocolHandler* http_handler = nullptr;
85 DeterministicHttpProtocolHandler* https_handler = nullptr; 83 DeterministicHttpProtocolHandler* https_handler = nullptr;
86 if (base::CommandLine::ForCurrentProcess()->HasSwitch( 84 if (base::CommandLine::ForCurrentProcess()->HasSwitch(
87 switches::kDeterministicFetch)) { 85 switches::kDeterministicFetch)) {
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
131 browser_->Shutdown(); 129 browser_->Shutdown();
132 return; 130 return;
133 } 131 }
134 if (!web_contents_ && !RemoteDebuggingEnabled()) { 132 if (!web_contents_ && !RemoteDebuggingEnabled()) {
135 // TODO(jzfeng): Support observing multiple targets. 133 // TODO(jzfeng): Support observing multiple targets.
136 url_ = url; 134 url_ = url;
137 web_contents_ = web_contents; 135 web_contents_ = web_contents;
138 web_contents_->AddObserver(this); 136 web_contents_->AddObserver(this);
139 } 137 }
140 } 138 }
141 #endif // !defined(CHROME_MULTIPLE_DLL_CHILD)
142 } 139 }
143 140
144 void HeadlessShell::Shutdown() { 141 void HeadlessShell::Shutdown() {
145 #if !defined(CHROME_MULTIPLE_DLL_CHILD)
146 if (!web_contents_) 142 if (!web_contents_)
147 return; 143 return;
148 if (!RemoteDebuggingEnabled()) { 144 if (!RemoteDebuggingEnabled()) {
149 devtools_client_->GetEmulation()->GetExperimental()->RemoveObserver(this); 145 devtools_client_->GetEmulation()->GetExperimental()->RemoveObserver(this);
150 devtools_client_->GetInspector()->GetExperimental()->RemoveObserver(this); 146 devtools_client_->GetInspector()->GetExperimental()->RemoveObserver(this);
151 devtools_client_->GetPage()->GetExperimental()->RemoveObserver(this); 147 devtools_client_->GetPage()->GetExperimental()->RemoveObserver(this);
152 if (web_contents_->GetDevToolsTarget()) { 148 if (web_contents_->GetDevToolsTarget()) {
153 web_contents_->GetDevToolsTarget()->DetachClient(devtools_client_.get()); 149 web_contents_->GetDevToolsTarget()->DetachClient(devtools_client_.get());
154 } 150 }
155 } 151 }
156 web_contents_->RemoveObserver(this); 152 web_contents_->RemoveObserver(this);
157 web_contents_ = nullptr; 153 web_contents_ = nullptr;
158 browser_context_->Close(); 154 browser_context_->Close();
159 browser_->Shutdown(); 155 browser_->Shutdown();
160 #endif // !defined(CHROME_MULTIPLE_DLL_CHILD)
161 } 156 }
162 157
163 void HeadlessShell::DevToolsTargetReady() { 158 void HeadlessShell::DevToolsTargetReady() {
164 #if !defined(CHROME_MULTIPLE_DLL_CHILD)
165 web_contents_->GetDevToolsTarget()->AttachClient(devtools_client_.get()); 159 web_contents_->GetDevToolsTarget()->AttachClient(devtools_client_.get());
166 devtools_client_->GetInspector()->GetExperimental()->AddObserver(this); 160 devtools_client_->GetInspector()->GetExperimental()->AddObserver(this);
167 devtools_client_->GetPage()->GetExperimental()->AddObserver(this); 161 devtools_client_->GetPage()->GetExperimental()->AddObserver(this);
168 devtools_client_->GetPage()->Enable(); 162 devtools_client_->GetPage()->Enable();
169 163
170 devtools_client_->GetEmulation()->GetExperimental()->AddObserver(this); 164 devtools_client_->GetEmulation()->GetExperimental()->AddObserver(this);
171 165
172 if (base::CommandLine::ForCurrentProcess()->HasSwitch( 166 if (base::CommandLine::ForCurrentProcess()->HasSwitch(
173 switches::kDeterministicFetch)) { 167 switches::kDeterministicFetch)) {
174 devtools_client_->GetPage()->GetExperimental()->SetControlNavigations( 168 devtools_client_->GetPage()->GetExperimental()->SetControlNavigations(
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
226 int timeout_ms; 220 int timeout_ms;
227 CHECK(base::StringToInt(timeout_ms_ascii, &timeout_ms)) 221 CHECK(base::StringToInt(timeout_ms_ascii, &timeout_ms))
228 << "Expected an integer value for --timeout="; 222 << "Expected an integer value for --timeout=";
229 browser_->BrowserMainThread()->PostDelayedTask( 223 browser_->BrowserMainThread()->PostDelayedTask(
230 FROM_HERE, 224 FROM_HERE,
231 base::Bind(&HeadlessShell::FetchTimeout, weak_factory_.GetWeakPtr()), 225 base::Bind(&HeadlessShell::FetchTimeout, weak_factory_.GetWeakPtr()),
232 base::TimeDelta::FromMilliseconds(timeout_ms)); 226 base::TimeDelta::FromMilliseconds(timeout_ms));
233 } 227 }
234 228
235 // TODO(skyostil): Implement more features to demonstrate the devtools API. 229 // TODO(skyostil): Implement more features to demonstrate the devtools API.
230 }
236 #endif // !defined(CHROME_MULTIPLE_DLL_CHILD) 231 #endif // !defined(CHROME_MULTIPLE_DLL_CHILD)
237 }
238 232
239 void HeadlessShell::FetchTimeout() { 233 void HeadlessShell::FetchTimeout() {
240 LOG(INFO) << "Timeout."; 234 LOG(INFO) << "Timeout.";
241 devtools_client_->GetPage()->GetExperimental()->StopLoading( 235 devtools_client_->GetPage()->GetExperimental()->StopLoading(
242 page::StopLoadingParams::Builder().Build()); 236 page::StopLoadingParams::Builder().Build());
243 } 237 }
244 238
245 void HeadlessShell::OnTargetCrashed( 239 void HeadlessShell::OnTargetCrashed(
246 const inspector::TargetCrashedParams& params) { 240 const inspector::TargetCrashedParams& params) {
247 LOG(ERROR) << "Abnormal renderer termination."; 241 LOG(ERROR) << "Abnormal renderer termination.";
(...skipping 430 matching lines...) Expand 10 before | Expand all | Expand 10 after
678 672
679 int HeadlessShellMain(const content::ContentMainParams& params) { 673 int HeadlessShellMain(const content::ContentMainParams& params) {
680 #if defined(OS_WIN) 674 #if defined(OS_WIN)
681 return HeadlessShellMain(params.instance, params.sandbox_info); 675 return HeadlessShellMain(params.instance, params.sandbox_info);
682 #else 676 #else
683 return HeadlessShellMain(params.argc, params.argv); 677 return HeadlessShellMain(params.argc, params.argv);
684 #endif 678 #endif
685 } 679 }
686 680
687 } // namespace headless 681 } // namespace headless
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698