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

Side by Side Diff: chrome/test/chromedriver/chrome_launcher.cc

Issue 429693003: [ChromeDriver] Implementing PerfLoggingPrefs for perf log (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Increasing test coverage Created 6 years, 4 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 (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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 "chrome/test/chromedriver/chrome_launcher.h" 5 #include "chrome/test/chromedriver/chrome_launcher.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/base64.h" 10 #include "base/base64.h"
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 return Status(kOk); 188 return Status(kOk);
189 } 189 }
190 } 190 }
191 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(50)); 191 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(50));
192 } 192 }
193 return Status(kUnknownError, "unable to discover open pages"); 193 return Status(kUnknownError, "unable to discover open pages");
194 } 194 }
195 195
196 Status CreateBrowserwideDevToolsClientAndConnect( 196 Status CreateBrowserwideDevToolsClientAndConnect(
197 const NetAddress& address, 197 const NetAddress& address,
198 const PerfLoggingPrefs& perf_logging_prefs,
198 const SyncWebSocketFactory& socket_factory, 199 const SyncWebSocketFactory& socket_factory,
199 ScopedVector<DevToolsEventListener>& devtools_event_listeners, 200 ScopedVector<DevToolsEventListener>& devtools_event_listeners,
200 scoped_ptr<DevToolsClient>* browser_client) { 201 scoped_ptr<DevToolsClient>* browser_client) {
201 scoped_ptr<DevToolsClient> client(new DevToolsClientImpl( 202 scoped_ptr<DevToolsClient> client(new DevToolsClientImpl(
202 socket_factory, base::StringPrintf("ws://%s/devtools/browser/", 203 socket_factory, base::StringPrintf("ws://%s/devtools/browser/",
203 address.ToString().c_str()), 204 address.ToString().c_str()),
204 DevToolsClientImpl::kBrowserwideDevToolsClientId)); 205 DevToolsClientImpl::kBrowserwideDevToolsClientId));
205 for (ScopedVector<DevToolsEventListener>::const_iterator it = 206 for (ScopedVector<DevToolsEventListener>::const_iterator it =
206 devtools_event_listeners.begin(); 207 devtools_event_listeners.begin();
207 it != devtools_event_listeners.end(); 208 it != devtools_event_listeners.end();
208 ++it) { 209 ++it) {
209 // Only add listeners that subscribe to the browser-wide |DevToolsClient|. 210 // Only add listeners that subscribe to the browser-wide |DevToolsClient|.
210 // Otherwise, listeners will think this client is associated with a webview, 211 // Otherwise, listeners will think this client is associated with a webview,
211 // and will send unrecognized commands to it. 212 // and will send unrecognized commands to it.
212 if ((*it)->subscribes_to_browser()) 213 if ((*it)->subscribes_to_browser())
213 client->AddListener(*it); 214 client->AddListener(*it);
214 } 215 }
215 // TODO(johnmoore): Call client->ConnectIfNecessary if tracing is enabled. 216 // Provide the client regardless of whether it connects, so that Chrome always
216 // For now, provide the client anyway, so that Chrome always has a valid 217 // has a valid |devtools_websocket_client_|. If not connected, no listeners
217 // |devtools_websocket_client_|. No listeners will be notified, and the client 218 // will be notified, and client will just return kDisconnected errors if used.
218 // will just return kDisconnected errors if used.
219 *browser_client = client.Pass(); 219 *browser_client = client.Pass();
220 // To avoid unnecessary overhead, only connect if tracing is enabled, since
221 // the browser-wide client is currently only used for tracing.
222 if (perf_logging_prefs.trace_categories != "") {
samuong 2014/08/04 06:08:22 !perf_logging_prefs.trace_categories.empty()
johnmoore 2014/08/04 17:37:58 Done.
223 Status status = (*browser_client)->ConnectIfNecessary();
224 if (status.IsError())
225 return status;
226 }
220 return Status(kOk); 227 return Status(kOk);
221 } 228 }
222 229
223 Status LaunchRemoteChromeSession( 230 Status LaunchRemoteChromeSession(
224 URLRequestContextGetter* context_getter, 231 URLRequestContextGetter* context_getter,
225 const SyncWebSocketFactory& socket_factory, 232 const SyncWebSocketFactory& socket_factory,
226 const Capabilities& capabilities, 233 const Capabilities& capabilities,
227 ScopedVector<DevToolsEventListener>& devtools_event_listeners, 234 ScopedVector<DevToolsEventListener>& devtools_event_listeners,
228 scoped_ptr<Chrome>* chrome) { 235 scoped_ptr<Chrome>* chrome) {
229 Status status(kOk); 236 Status status(kOk);
230 scoped_ptr<DevToolsHttpClient> devtools_http_client; 237 scoped_ptr<DevToolsHttpClient> devtools_http_client;
231 status = WaitForDevToolsAndCheckVersion( 238 status = WaitForDevToolsAndCheckVersion(
232 capabilities.debugger_address, context_getter, socket_factory, 239 capabilities.debugger_address, context_getter, socket_factory,
233 NULL, &devtools_http_client); 240 NULL, &devtools_http_client);
234 if (status.IsError()) { 241 if (status.IsError()) {
235 return Status(kUnknownError, "cannot connect to chrome at " + 242 return Status(kUnknownError, "cannot connect to chrome at " +
236 capabilities.debugger_address.ToString(), 243 capabilities.debugger_address.ToString(),
237 status); 244 status);
238 } 245 }
239 246
240 scoped_ptr<DevToolsClient> devtools_websocket_client; 247 scoped_ptr<DevToolsClient> devtools_websocket_client;
241 status = CreateBrowserwideDevToolsClientAndConnect( 248 status = CreateBrowserwideDevToolsClientAndConnect(
242 capabilities.debugger_address, socket_factory, devtools_event_listeners, 249 capabilities.debugger_address, capabilities.perf_logging_prefs,
243 &devtools_websocket_client); 250 socket_factory, devtools_event_listeners, &devtools_websocket_client);
244 if (status.IsError()) { 251 if (status.IsError()) {
245 LOG(WARNING) << "Browser-wide DevTools client failed to connect: " 252 LOG(WARNING) << "Browser-wide DevTools client failed to connect: "
246 << status.message(); 253 << status.message();
247 } 254 }
248 255
249 chrome->reset(new ChromeRemoteImpl(devtools_http_client.Pass(), 256 chrome->reset(new ChromeRemoteImpl(devtools_http_client.Pass(),
250 devtools_websocket_client.Pass(), 257 devtools_websocket_client.Pass(),
251 devtools_event_listeners)); 258 devtools_event_listeners));
252 return Status(kOk); 259 return Status(kOk);
253 } 260 }
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
358 int exit_code; 365 int exit_code;
359 if (base::GetTerminationStatus(process, &exit_code) == 366 if (base::GetTerminationStatus(process, &exit_code) ==
360 base::TERMINATION_STATUS_STILL_RUNNING) 367 base::TERMINATION_STATUS_STILL_RUNNING)
361 return Status(kUnknownError, "cannot kill Chrome", status); 368 return Status(kUnknownError, "cannot kill Chrome", status);
362 } 369 }
363 return status; 370 return status;
364 } 371 }
365 372
366 scoped_ptr<DevToolsClient> devtools_websocket_client; 373 scoped_ptr<DevToolsClient> devtools_websocket_client;
367 status = CreateBrowserwideDevToolsClientAndConnect( 374 status = CreateBrowserwideDevToolsClientAndConnect(
368 NetAddress(port), socket_factory, devtools_event_listeners, 375 NetAddress(port), capabilities.perf_logging_prefs, socket_factory,
369 &devtools_websocket_client); 376 devtools_event_listeners, &devtools_websocket_client);
370 if (status.IsError()) { 377 if (status.IsError()) {
371 LOG(WARNING) << "Browser-wide DevTools client failed to connect: " 378 LOG(WARNING) << "Browser-wide DevTools client failed to connect: "
372 << status.message(); 379 << status.message();
373 } 380 }
374 381
375 scoped_ptr<ChromeDesktopImpl> chrome_desktop( 382 scoped_ptr<ChromeDesktopImpl> chrome_desktop(
376 new ChromeDesktopImpl(devtools_http_client.Pass(), 383 new ChromeDesktopImpl(devtools_http_client.Pass(),
377 devtools_websocket_client.Pass(), 384 devtools_websocket_client.Pass(),
378 devtools_event_listeners, 385 devtools_event_listeners,
379 port_reservation.Pass(), 386 port_reservation.Pass(),
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
439 socket_factory, 446 socket_factory,
440 &capabilities, 447 &capabilities,
441 &devtools_http_client); 448 &devtools_http_client);
442 if (status.IsError()) { 449 if (status.IsError()) {
443 device->TearDown(); 450 device->TearDown();
444 return status; 451 return status;
445 } 452 }
446 453
447 scoped_ptr<DevToolsClient> devtools_websocket_client; 454 scoped_ptr<DevToolsClient> devtools_websocket_client;
448 status = CreateBrowserwideDevToolsClientAndConnect( 455 status = CreateBrowserwideDevToolsClientAndConnect(
449 NetAddress(port), socket_factory, devtools_event_listeners, 456 NetAddress(port), capabilities.perf_logging_prefs, socket_factory,
450 &devtools_websocket_client); 457 devtools_event_listeners, &devtools_websocket_client);
451 if (status.IsError()) { 458 if (status.IsError()) {
452 LOG(WARNING) << "Browser-wide DevTools client failed to connect: " 459 LOG(WARNING) << "Browser-wide DevTools client failed to connect: "
453 << status.message(); 460 << status.message();
454 } 461 }
455 462
456 chrome->reset(new ChromeAndroidImpl(devtools_http_client.Pass(), 463 chrome->reset(new ChromeAndroidImpl(devtools_http_client.Pass(),
457 devtools_websocket_client.Pass(), 464 devtools_websocket_client.Pass(),
458 devtools_event_listeners, 465 devtools_event_listeners,
459 port_reservation.Pass(), 466 port_reservation.Pass(),
460 device.Pass())); 467 device.Pass()));
(...skipping 319 matching lines...) Expand 10 before | Expand all | Expand 10 after
780 // Write empty "First Run" file, otherwise Chrome will wipe the default 787 // Write empty "First Run" file, otherwise Chrome will wipe the default
781 // profile that was written. 788 // profile that was written.
782 if (base::WriteFile( 789 if (base::WriteFile(
783 user_data_dir.Append(chrome::kFirstRunSentinel), "", 0) != 0) { 790 user_data_dir.Append(chrome::kFirstRunSentinel), "", 0) != 0) {
784 return Status(kUnknownError, "failed to write first run file"); 791 return Status(kUnknownError, "failed to write first run file");
785 } 792 }
786 return Status(kOk); 793 return Status(kOk);
787 } 794 }
788 795
789 } // namespace internal 796 } // namespace internal
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698