Index: chrome/test/chromedriver/capabilities_unittest.cc |
diff --git a/chrome/test/chromedriver/capabilities_unittest.cc b/chrome/test/chromedriver/capabilities_unittest.cc |
index f4b313ef00c2a6aa9e7d48d7b295f9b73f91cee1..ea1e87cde9301937e6ffeef27f5e389b08fb62ac 100644 |
--- a/chrome/test/chromedriver/capabilities_unittest.cc |
+++ b/chrome/test/chromedriver/capabilities_unittest.cc |
@@ -361,3 +361,98 @@ TEST(ParseCapabilities, UseExistingBrowser) { |
ASSERT_EQ("abc", capabilities.debugger_address.host()); |
ASSERT_EQ(123, capabilities.debugger_address.port()); |
} |
+ |
+TEST(ParseCapabilities, MobileEmulationUserAgent) { |
+ Capabilities capabilities; |
+ base::DictionaryValue mobile_emulation; |
+ mobile_emulation.SetString("userAgent", "Agent Smith"); |
+ base::DictionaryValue caps; |
+ caps.Set("chromeOptions.mobileEmulation", mobile_emulation.DeepCopy()); |
+ Status status = capabilities.Parse(caps); |
+ ASSERT_TRUE(status.IsOk()); |
+ |
+ ASSERT_EQ(1u, capabilities.switches.GetSize()); |
+ ASSERT_TRUE(capabilities.switches.HasSwitch("user-agent")); |
+ ASSERT_EQ("Agent Smith", capabilities.switches.GetSwitchValue("user-agent")); |
+} |
+ |
+TEST(ParseCapabilities, MobileEmulationDeviceMetrics) { |
+ Capabilities capabilities; |
+ base::DictionaryValue mobile_emulation; |
+ mobile_emulation.SetInteger("deviceMetrics.width", 360); |
+ mobile_emulation.SetInteger("deviceMetrics.height", 640); |
+ mobile_emulation.SetDouble("deviceMetrics.pixelRatio", 3.0); |
+ base::DictionaryValue caps; |
+ caps.Set("chromeOptions.mobileEmulation", mobile_emulation.DeepCopy()); |
+ Status status = capabilities.Parse(caps); |
+ ASSERT_TRUE(status.IsOk()); |
+ |
+ ASSERT_EQ(360, capabilities.device_metrics->width); |
+ ASSERT_EQ(640, capabilities.device_metrics->height); |
+ ASSERT_EQ(3.0, capabilities.device_metrics->device_scale_factor); |
+} |
+ |
+TEST(ParseCapabilities, MobileEmulationDeviceName) { |
+ Capabilities capabilities; |
+ base::DictionaryValue mobile_emulation; |
+ mobile_emulation.SetString("deviceName", "Google Nexus 5"); |
+ base::DictionaryValue caps; |
+ caps.Set("chromeOptions.mobileEmulation", mobile_emulation.DeepCopy()); |
+ Status status = capabilities.Parse(caps); |
+ ASSERT_TRUE(status.IsOk()); |
+ |
+ ASSERT_EQ(1u, capabilities.switches.GetSize()); |
+ ASSERT_TRUE(capabilities.switches.HasSwitch("user-agent")); |
+ ASSERT_EQ( |
+ "Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 5 Build/JOP40D) " |
+ "AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 " |
+ "Mobile Safari/535.19", |
+ capabilities.switches.GetSwitchValue("user-agent")); |
+ |
+ ASSERT_EQ(360, capabilities.device_metrics->width); |
+ ASSERT_EQ(640, capabilities.device_metrics->height); |
+ ASSERT_EQ(3.0, capabilities.device_metrics->device_scale_factor); |
+} |
+ |
+TEST(ParseCapabilities, MobileEmulationNotDict) { |
+ Capabilities capabilities; |
+ base::DictionaryValue caps; |
+ caps.SetString("chromeOptions.mobileEmulation", "Google Nexus 5"); |
+ Status status = capabilities.Parse(caps); |
+ ASSERT_FALSE(status.IsOk()); |
+} |
+ |
+TEST(ParseCapabilities, MobileEmulationDeviceMetricsNotDict) { |
+ Capabilities capabilities; |
+ base::DictionaryValue mobile_emulation; |
+ mobile_emulation.SetInteger("deviceMetrics", 360); |
+ base::DictionaryValue caps; |
+ caps.Set("chromeOptions.mobileEmulation", mobile_emulation.DeepCopy()); |
+ Status status = capabilities.Parse(caps); |
+ ASSERT_FALSE(status.IsOk()); |
+} |
+ |
+TEST(ParseCapabilities, MobileEmulationDeviceMetricsNotNumbers) { |
+ Capabilities capabilities; |
+ base::DictionaryValue mobile_emulation; |
+ mobile_emulation.SetString("deviceMetrics.width", "360"); |
+ mobile_emulation.SetString("deviceMetrics.height", "640"); |
+ mobile_emulation.SetString("deviceMetrics.pixelRatio", "3.0"); |
+ base::DictionaryValue caps; |
+ caps.Set("chromeOptions.mobileEmulation", mobile_emulation.DeepCopy()); |
+ Status status = capabilities.Parse(caps); |
+ ASSERT_FALSE(status.IsOk()); |
+} |
+ |
+TEST(ParseCapabilities, MobileEmulationBadDict) { |
+ Capabilities capabilities; |
+ base::DictionaryValue mobile_emulation; |
+ mobile_emulation.SetString("deviceName", "Google Nexus 5"); |
+ mobile_emulation.SetInteger("deviceMetrics.width", 360); |
+ mobile_emulation.SetInteger("deviceMetrics.height", 640); |
+ mobile_emulation.SetDouble("deviceMetrics.pixelRatio", 3.0); |
+ base::DictionaryValue caps; |
+ caps.Set("chromeOptions.mobileEmulation", mobile_emulation.DeepCopy()); |
+ Status status = capabilities.Parse(caps); |
+ ASSERT_FALSE(status.IsOk()); |
+} |