OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/mobile_emulation_override_manager.h" | 5 #include "chrome/test/chromedriver/chrome/mobile_emulation_override_manager.h" |
6 | 6 |
7 #include "base/values.h" | 7 #include "base/values.h" |
8 #include "chrome/test/chromedriver/chrome/device_metrics.h" | 8 #include "chrome/test/chromedriver/chrome/device_metrics.h" |
9 #include "chrome/test/chromedriver/chrome/devtools_client.h" | 9 #include "chrome/test/chromedriver/chrome/devtools_client.h" |
10 #include "chrome/test/chromedriver/chrome/status.h" | 10 #include "chrome/test/chromedriver/chrome/status.h" |
11 | 11 |
12 MobileEmulationOverrideManager::MobileEmulationOverrideManager( | 12 MobileEmulationOverrideManager::MobileEmulationOverrideManager( |
13 DevToolsClient* client, | 13 DevToolsClient* client, |
14 const DeviceMetrics* device_metrics) | 14 const DeviceMetrics* device_metrics, |
| 15 std::string user_agent) |
15 : client_(client), | 16 : client_(client), |
16 overridden_device_metrics_(device_metrics) { | 17 overridden_device_metrics_(device_metrics), |
17 if (overridden_device_metrics_) | 18 overridden_user_agent_(user_agent) { |
| 19 if (overridden_device_metrics_ || !overridden_user_agent_.empty()) |
18 client_->AddListener(this); | 20 client_->AddListener(this); |
19 } | 21 } |
20 | 22 |
21 MobileEmulationOverrideManager::~MobileEmulationOverrideManager() { | 23 MobileEmulationOverrideManager::~MobileEmulationOverrideManager() { |
22 } | 24 } |
23 | 25 |
24 Status MobileEmulationOverrideManager::OnConnected(DevToolsClient* client) { | 26 Status MobileEmulationOverrideManager::OnConnected(DevToolsClient* client) { |
25 return ApplyOverrideIfNeeded(); | 27 return ApplyOverrideIfNeeded(); |
26 } | 28 } |
27 | 29 |
28 Status MobileEmulationOverrideManager::OnEvent( | 30 Status MobileEmulationOverrideManager::OnEvent( |
29 DevToolsClient* client, | 31 DevToolsClient* client, |
30 const std::string& method, | 32 const std::string& method, |
31 const base::DictionaryValue& params) { | 33 const base::DictionaryValue& params) { |
32 if (method == "Page.frameNavigated") { | 34 if (method == "Page.frameNavigated") { |
33 const base::Value* unused_value; | 35 const base::Value* unused_value; |
34 if (!params.Get("frame.parentId", &unused_value)) | 36 if (!params.Get("frame.parentId", &unused_value)) |
35 return ApplyOverrideIfNeeded(); | 37 return ApplyOverrideIfNeeded(); |
36 } | 38 } |
37 return Status(kOk); | 39 return Status(kOk); |
38 } | 40 } |
39 | 41 |
40 bool MobileEmulationOverrideManager::IsEmulatingTouch() { | 42 bool MobileEmulationOverrideManager::IsEmulatingTouch() { |
41 return overridden_device_metrics_ && overridden_device_metrics_->touch; | 43 return overridden_device_metrics_ && overridden_device_metrics_->touch; |
42 } | 44 } |
43 | 45 |
44 Status MobileEmulationOverrideManager::ApplyOverrideIfNeeded() { | 46 Status MobileEmulationOverrideManager::ApplyOverrideIfNeeded() { |
| 47 if (!overridden_user_agent_.empty()) { |
| 48 base::DictionaryValue net_enable_params, user_agent_params; |
| 49 net_enable_params.SetInteger("maxTotalBufferSize", 0); |
| 50 net_enable_params.SetInteger("maxResourceBufferSize", 0); |
| 51 Status status = client_->SendCommand("Network.enable", net_enable_params); |
| 52 |
| 53 user_agent_params.SetString("userAgent", overridden_user_agent_); |
| 54 status = |
| 55 client_->SendCommand("Network.setUserAgentOverride", user_agent_params); |
| 56 if (status.IsError()) |
| 57 return status; |
| 58 } |
| 59 |
45 if (overridden_device_metrics_ == NULL) | 60 if (overridden_device_metrics_ == NULL) |
46 return Status(kOk); | 61 return Status(kOk); |
47 | 62 |
48 base::DictionaryValue params; | 63 base::DictionaryValue params; |
49 params.SetInteger("width", overridden_device_metrics_->width); | 64 params.SetInteger("width", overridden_device_metrics_->width); |
50 params.SetInteger("height", overridden_device_metrics_->height); | 65 params.SetInteger("height", overridden_device_metrics_->height); |
51 params.SetDouble("deviceScaleFactor", | 66 params.SetDouble("deviceScaleFactor", |
52 overridden_device_metrics_->device_scale_factor); | 67 overridden_device_metrics_->device_scale_factor); |
53 params.SetBoolean("mobile", overridden_device_metrics_->mobile); | 68 params.SetBoolean("mobile", overridden_device_metrics_->mobile); |
54 params.SetBoolean("fitWindow", overridden_device_metrics_->fit_window); | 69 params.SetBoolean("fitWindow", overridden_device_metrics_->fit_window); |
55 params.SetBoolean("textAutosizing", | 70 params.SetBoolean("textAutosizing", |
56 overridden_device_metrics_->text_autosizing); | 71 overridden_device_metrics_->text_autosizing); |
57 params.SetDouble("fontScaleFactor", | 72 params.SetDouble("fontScaleFactor", |
58 overridden_device_metrics_->font_scale_factor); | 73 overridden_device_metrics_->font_scale_factor); |
59 Status status = client_->SendCommand("Page.setDeviceMetricsOverride", params); | 74 Status status = client_->SendCommand("Page.setDeviceMetricsOverride", params); |
60 if (status.IsError()) | 75 if (status.IsError()) |
61 return status; | 76 return status; |
62 | 77 |
63 if (overridden_device_metrics_->touch) { | 78 if (overridden_device_metrics_->touch) { |
64 base::DictionaryValue emulate_touch_params; | 79 base::DictionaryValue emulate_touch_params; |
65 emulate_touch_params.SetBoolean("enabled", true); | 80 emulate_touch_params.SetBoolean("enabled", true); |
66 status = client_->SendCommand("Emulation.setTouchEmulationEnabled", | 81 status = client_->SendCommand("Emulation.setTouchEmulationEnabled", |
67 emulate_touch_params); | 82 emulate_touch_params); |
68 } | 83 } |
69 | 84 |
70 return Status(kOk); | 85 return Status(kOk); |
71 } | 86 } |
OLD | NEW |