Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(75)

Side by Side Diff: chrome/test/chromedriver/chrome/mobile_device.cc

Issue 288193004: [Chromedriver] Add Device Metrics override support to ChromeDriver via Capabilities (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright (c) 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "base/json/json_reader.h"
6 #include "base/strings/string_number_conversions.h"
7 #include "base/strings/string_split.h"
8 #include "base/values.h"
9 #include "chrome/test/chromedriver/chrome/mobile_device.h"
10 #include "chrome/test/chromedriver/chrome/mobile_device_list.h"
11 #include "chrome/test/chromedriver/chrome/status.h"
12
13 MobileDevice::MobileDevice() {}
14 MobileDevice::~MobileDevice() {}
15
16 Status FindMobileDevice(std::string device_name,
17 scoped_ptr<MobileDevice>* mobile_device) {
18 base::JSONReader json_reader(base::JSON_ALLOW_TRAILING_COMMAS);
19 scoped_ptr<base::Value> devices_value;
20 devices_value.reset(json_reader.ReadToValue(kMobileDevices));
21 if (!devices_value.get())
22 return Status(kUnknownError,
23 "could not parse mobile device list because " +
24 json_reader.GetErrorMessage());
25
26 base::ListValue* mobile_devices;
27 if (!devices_value->GetAsList(&mobile_devices))
28 return Status(kUnknownError, "malformed device metrics list");
29
30 for (base::ListValue::iterator it = mobile_devices->begin();
31 it != mobile_devices->end();
32 ++it) {
33 base::ListValue* device = NULL;
34 if (!(*it)->GetAsList(&device)) {
35 return Status(kUnknownError,
36 "malformed device in list: should be an array");
37 }
38
39 if (device != NULL) {
40 std::string name;
41 if (!device->GetString(0, &name)) {
42 return Status(kUnknownError,
43 "malformed device name: should be a string");
44 }
45 if (name != device_name)
46 continue;
47
48 scoped_ptr<MobileDevice> tmp_mobile_device(new MobileDevice());
49 std::string device_metrics_string;
50 if (!device->GetString(1, &tmp_mobile_device->user_agent)) {
51 return Status(kUnknownError,
52 "malformed device user agent: should be a string");
53 }
54 if (!device->GetString(2, &device_metrics_string)) {
55 return Status(kUnknownError,
56 "malformed device metrics: should be a string");
57 }
58 std::vector<std::string> metrics_vector;
59 base::SplitString(device_metrics_string, 'x', &metrics_vector);
60 if (metrics_vector.size() < 3)
61 return Status(kUnknownError, "malformed device metrics string");
62
63 int width = 0;
64 int height = 0;
65 double device_scale_factor = 0.0;
66 if (!base::StringToInt(metrics_vector[0], &width)) {
67 return Status(kUnknownError,
68 "malformed device width: should be an integer");
69 }
70 if (!base::StringToInt(metrics_vector[1], &height)) {
71 return Status(kUnknownError,
72 "malformed device height: should be an integer");
73 }
74 if (!base::StringToDouble(metrics_vector[2], &device_scale_factor)) {
75 return Status(kUnknownError,
76 "malformed device scale factor: should be a double");
77 }
78 tmp_mobile_device->device_metrics.reset(
79 new DeviceMetrics(width, height, device_scale_factor));
80
81 *mobile_device = tmp_mobile_device.Pass();
82 return Status(kOk);
83 }
84 }
85
86 return Status(kUnknownError, "must be a valid device");
87 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698