 Chromium Code Reviews
 Chromium Code Reviews Issue 251933005:
  [ChromeDriver] Support mobile emulation on desktop Chrome.  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/src.git@master
    
  
    Issue 251933005:
  [ChromeDriver] Support mobile emulation on desktop Chrome.  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/src.git@master| 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..b15f3f2a70e5018d092b86dc4c1a461448674224 100644 | 
| --- a/chrome/test/chromedriver/capabilities_unittest.cc | 
| +++ b/chrome/test/chromedriver/capabilities_unittest.cc | 
| @@ -361,3 +361,99 @@ 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'", | 
| 
samuong
2014/05/16 22:56:21
Should be ASSERT_EQ("Agent Smith"
i.e. no single
 
sam.rawlins
2014/05/16 23:35:51
Done.
 | 
| + 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) AppleWe" | 
| + "bKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.1" | 
| + "9'", | 
| + 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()); | 
| +} |