OLD | NEW |
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/devtools_http_client.h" | 5 #include "chrome/test/chromedriver/chrome/devtools_http_client.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
9 #include "base/json/json_reader.h" | 9 #include "base/json/json_reader.h" |
10 #include "base/strings/string_number_conversions.h" | 10 #include "base/strings/string_number_conversions.h" |
11 #include "base/strings/string_split.h" | 11 #include "base/strings/string_split.h" |
12 #include "base/strings/stringprintf.h" | 12 #include "base/strings/stringprintf.h" |
13 #include "base/threading/platform_thread.h" | 13 #include "base/threading/platform_thread.h" |
14 #include "base/time/time.h" | 14 #include "base/time/time.h" |
15 #include "base/values.h" | 15 #include "base/values.h" |
| 16 #include "chrome/test/chromedriver/chrome/device_metrics.h" |
16 #include "chrome/test/chromedriver/chrome/devtools_client_impl.h" | 17 #include "chrome/test/chromedriver/chrome/devtools_client_impl.h" |
17 #include "chrome/test/chromedriver/chrome/log.h" | 18 #include "chrome/test/chromedriver/chrome/log.h" |
18 #include "chrome/test/chromedriver/chrome/status.h" | 19 #include "chrome/test/chromedriver/chrome/status.h" |
19 #include "chrome/test/chromedriver/chrome/version.h" | 20 #include "chrome/test/chromedriver/chrome/version.h" |
20 #include "chrome/test/chromedriver/chrome/web_view_impl.h" | 21 #include "chrome/test/chromedriver/chrome/web_view_impl.h" |
21 #include "chrome/test/chromedriver/net/net_util.h" | 22 #include "chrome/test/chromedriver/net/net_util.h" |
22 #include "chrome/test/chromedriver/net/url_request_context_getter.h" | 23 #include "chrome/test/chromedriver/net/url_request_context_getter.h" |
23 | 24 |
24 namespace { | 25 namespace { |
25 | 26 |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
60 for (size_t i = 0; i < views_info.size(); ++i) { | 61 for (size_t i = 0; i < views_info.size(); ++i) { |
61 if (views_info[i].id == id) | 62 if (views_info[i].id == id) |
62 return &views_info[i]; | 63 return &views_info[i]; |
63 } | 64 } |
64 return NULL; | 65 return NULL; |
65 } | 66 } |
66 | 67 |
67 DevToolsHttpClient::DevToolsHttpClient( | 68 DevToolsHttpClient::DevToolsHttpClient( |
68 const NetAddress& address, | 69 const NetAddress& address, |
69 scoped_refptr<URLRequestContextGetter> context_getter, | 70 scoped_refptr<URLRequestContextGetter> context_getter, |
70 const SyncWebSocketFactory& socket_factory) | 71 const SyncWebSocketFactory& socket_factory, |
| 72 scoped_ptr<DeviceMetrics> device_metrics) |
71 : context_getter_(context_getter), | 73 : context_getter_(context_getter), |
72 socket_factory_(socket_factory), | 74 socket_factory_(socket_factory), |
73 server_url_("http://" + address.ToString()), | 75 server_url_("http://" + address.ToString()), |
74 web_socket_url_prefix_(base::StringPrintf( | 76 web_socket_url_prefix_(base::StringPrintf( |
75 "ws://%s/devtools/page/", address.ToString().c_str())) {} | 77 "ws://%s/devtools/page/", address.ToString().c_str())), |
| 78 device_metrics_(device_metrics.Pass()) {} |
76 | 79 |
77 DevToolsHttpClient::~DevToolsHttpClient() {} | 80 DevToolsHttpClient::~DevToolsHttpClient() {} |
78 | 81 |
79 Status DevToolsHttpClient::Init(const base::TimeDelta& timeout) { | 82 Status DevToolsHttpClient::Init(const base::TimeDelta& timeout) { |
80 base::TimeTicks deadline = base::TimeTicks::Now() + timeout; | 83 base::TimeTicks deadline = base::TimeTicks::Now() + timeout; |
81 std::string browser_version; | 84 std::string browser_version; |
82 std::string blink_version; | 85 std::string blink_version; |
83 | 86 |
84 while (true) { | 87 while (true) { |
85 Status status = GetVersion(&browser_version, &blink_version); | 88 Status status = GetVersion(&browser_version, &blink_version); |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
189 if (!FetchUrlAndLog( | 192 if (!FetchUrlAndLog( |
190 server_url_ + "/json/activate/" + id, context_getter_.get(), &data)) | 193 server_url_ + "/json/activate/" + id, context_getter_.get(), &data)) |
191 return Status(kUnknownError, "cannot activate web view"); | 194 return Status(kUnknownError, "cannot activate web view"); |
192 return Status(kOk); | 195 return Status(kOk); |
193 } | 196 } |
194 | 197 |
195 const BrowserInfo* DevToolsHttpClient::browser_info() { | 198 const BrowserInfo* DevToolsHttpClient::browser_info() { |
196 return &browser_info_; | 199 return &browser_info_; |
197 } | 200 } |
198 | 201 |
| 202 const DeviceMetrics* DevToolsHttpClient::device_metrics() { |
| 203 return device_metrics_.get(); |
| 204 } |
| 205 |
199 Status DevToolsHttpClient::GetVersion(std::string* browser_version, | 206 Status DevToolsHttpClient::GetVersion(std::string* browser_version, |
200 std::string* blink_version) { | 207 std::string* blink_version) { |
201 std::string data; | 208 std::string data; |
202 if (!FetchUrlAndLog( | 209 if (!FetchUrlAndLog( |
203 server_url_ + "/json/version", context_getter_.get(), &data)) | 210 server_url_ + "/json/version", context_getter_.get(), &data)) |
204 return Status(kChromeNotReachable); | 211 return Status(kChromeNotReachable); |
205 | 212 |
206 return internal::ParseVersionInfo(data, browser_version, blink_version); | 213 return internal::ParseVersionInfo(data, browser_version, blink_version); |
207 } | 214 } |
208 | 215 |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
241 } | 248 } |
242 | 249 |
243 for (std::list<std::string>::const_iterator it = docked_frontend_ids.begin(); | 250 for (std::list<std::string>::const_iterator it = docked_frontend_ids.begin(); |
244 it != docked_frontend_ids.end(); ++it) { | 251 it != docked_frontend_ids.end(); ++it) { |
245 scoped_ptr<DevToolsClient> client(new DevToolsClientImpl( | 252 scoped_ptr<DevToolsClient> client(new DevToolsClientImpl( |
246 socket_factory_, | 253 socket_factory_, |
247 web_socket_url_prefix_ + *it, | 254 web_socket_url_prefix_ + *it, |
248 *it, | 255 *it, |
249 base::Bind(&FakeCloseFrontends))); | 256 base::Bind(&FakeCloseFrontends))); |
250 scoped_ptr<WebViewImpl> web_view( | 257 scoped_ptr<WebViewImpl> web_view( |
251 new WebViewImpl(*it, &browser_info_, client.Pass())); | 258 new WebViewImpl(*it, &browser_info_, client.Pass(), NULL)); |
252 | 259 |
253 status = web_view->ConnectIfNecessary(); | 260 status = web_view->ConnectIfNecessary(); |
254 // Ignore disconnected error, because the debugger might have closed when | 261 // Ignore disconnected error, because the debugger might have closed when |
255 // its container page was closed above. | 262 // its container page was closed above. |
256 if (status.IsError() && status.code() != kDisconnected) | 263 if (status.IsError() && status.code() != kDisconnected) |
257 return status; | 264 return status; |
258 | 265 |
259 scoped_ptr<base::Value> result; | 266 scoped_ptr<base::Value> result; |
260 status = web_view->EvaluateScript( | 267 status = web_view->EvaluateScript( |
261 std::string(), | 268 std::string(), |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
361 Status(kUnknownError, "version info doesn't include string 'Browser'")); | 368 Status(kUnknownError, "version info doesn't include string 'Browser'")); |
362 } | 369 } |
363 if (!dict->GetString("WebKit-Version", blink_version)) { | 370 if (!dict->GetString("WebKit-Version", blink_version)) { |
364 return Status(kUnknownError, | 371 return Status(kUnknownError, |
365 "version info doesn't include string 'WebKit-Version'"); | 372 "version info doesn't include string 'WebKit-Version'"); |
366 } | 373 } |
367 return Status(kOk); | 374 return Status(kOk); |
368 } | 375 } |
369 | 376 |
370 } // namespace internal | 377 } // namespace internal |
OLD | NEW |