| Index: chrome/test/chromedriver/chrome_launcher.cc
|
| diff --git a/chrome/test/chromedriver/chrome_launcher.cc b/chrome/test/chromedriver/chrome_launcher.cc
|
| index aca9ca96de3ecf835d1dc01b2e889d7c261f8ebe..480332c5eca6744582de32a63fe93d6e6307f63a 100644
|
| --- a/chrome/test/chromedriver/chrome_launcher.cc
|
| +++ b/chrome/test/chromedriver/chrome_launcher.cc
|
| @@ -195,6 +195,7 @@ Status WaitForDevToolsAndCheckVersion(
|
|
|
| Status CreateBrowserwideDevToolsClientAndConnect(
|
| const NetAddress& address,
|
| + const PerfLoggingPrefs& perf_logging_prefs,
|
| const SyncWebSocketFactory& socket_factory,
|
| ScopedVector<DevToolsEventListener>& devtools_event_listeners,
|
| scoped_ptr<DevToolsClient>* browser_client) {
|
| @@ -203,7 +204,7 @@ Status CreateBrowserwideDevToolsClientAndConnect(
|
| address.ToString().c_str()),
|
| DevToolsClientImpl::kBrowserwideDevToolsClientId));
|
| for (ScopedVector<DevToolsEventListener>::const_iterator it =
|
| - devtools_event_listeners.begin();
|
| + devtools_event_listeners.begin();
|
| it != devtools_event_listeners.end();
|
| ++it) {
|
| // Only add listeners that subscribe to the browser-wide |DevToolsClient|.
|
| @@ -212,11 +213,17 @@ Status CreateBrowserwideDevToolsClientAndConnect(
|
| if ((*it)->subscribes_to_browser())
|
| client->AddListener(*it);
|
| }
|
| - // TODO(johnmoore): Call client->ConnectIfNecessary if tracing is enabled.
|
| - // For now, provide the client anyway, so that Chrome always has a valid
|
| - // |devtools_websocket_client_|. No listeners will be notified, and the client
|
| - // will just return kDisconnected errors if used.
|
| + // Provide the client regardless of whether it connects, so that Chrome always
|
| + // has a valid |devtools_websocket_client_|. If not connected, no listeners
|
| + // will be notified, and client will just return kDisconnected errors if used.
|
| *browser_client = client.Pass();
|
| + // To avoid unnecessary overhead, only connect if tracing is enabled, since
|
| + // the browser-wide client is currently only used for tracing.
|
| + if (!perf_logging_prefs.trace_categories.empty()) {
|
| + Status status = (*browser_client)->ConnectIfNecessary();
|
| + if (status.IsError())
|
| + return status;
|
| + }
|
| return Status(kOk);
|
| }
|
|
|
| @@ -239,8 +246,8 @@ Status LaunchRemoteChromeSession(
|
|
|
| scoped_ptr<DevToolsClient> devtools_websocket_client;
|
| status = CreateBrowserwideDevToolsClientAndConnect(
|
| - capabilities.debugger_address, socket_factory, devtools_event_listeners,
|
| - &devtools_websocket_client);
|
| + capabilities.debugger_address, capabilities.perf_logging_prefs,
|
| + socket_factory, devtools_event_listeners, &devtools_websocket_client);
|
| if (status.IsError()) {
|
| LOG(WARNING) << "Browser-wide DevTools client failed to connect: "
|
| << status.message();
|
| @@ -365,8 +372,8 @@ Status LaunchDesktopChrome(
|
|
|
| scoped_ptr<DevToolsClient> devtools_websocket_client;
|
| status = CreateBrowserwideDevToolsClientAndConnect(
|
| - NetAddress(port), socket_factory, devtools_event_listeners,
|
| - &devtools_websocket_client);
|
| + NetAddress(port), capabilities.perf_logging_prefs, socket_factory,
|
| + devtools_event_listeners, &devtools_websocket_client);
|
| if (status.IsError()) {
|
| LOG(WARNING) << "Browser-wide DevTools client failed to connect: "
|
| << status.message();
|
| @@ -446,8 +453,8 @@ Status LaunchAndroidChrome(
|
|
|
| scoped_ptr<DevToolsClient> devtools_websocket_client;
|
| status = CreateBrowserwideDevToolsClientAndConnect(
|
| - NetAddress(port), socket_factory, devtools_event_listeners,
|
| - &devtools_websocket_client);
|
| + NetAddress(port), capabilities.perf_logging_prefs, socket_factory,
|
| + devtools_event_listeners, &devtools_websocket_client);
|
| if (status.IsError()) {
|
| LOG(WARNING) << "Browser-wide DevTools client failed to connect: "
|
| << status.message();
|
|
|