1 // Copyright (c) 2012 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/values.h"
6 #include "components/sync_driver/device_info.h"
7
8 namespace sync_driver {
9
DeviceInfo(const std::string & guid,const std::string & client_name,const std::string & chrome_version,const std::string & sync_user_agent,const sync_pb::SyncEnums::DeviceType device_type,const std::string & signin_scoped_device_id)10 DeviceInfo::DeviceInfo(const std::string& guid,
11 const std::string& client_name,
12 const std::string& chrome_version,
13 const std::string& sync_user_agent,
14 const sync_pb::SyncEnums::DeviceType device_type,
15 const std::string& signin_scoped_device_id)
16 : guid_(guid),
17 client_name_(client_name),
18 chrome_version_(chrome_version),
19 sync_user_agent_(sync_user_agent),
20 device_type_(device_type),
21 signin_scoped_device_id_(signin_scoped_device_id) {
22 }
23
~DeviceInfo()24 DeviceInfo::~DeviceInfo() { }
25
guid() const26 const std::string& DeviceInfo::guid() const {
27 return guid_;
28 }
29
client_name() const30 const std::string& DeviceInfo::client_name() const {
31 return client_name_;
32 }
33
chrome_version() const34 const std::string& DeviceInfo::chrome_version() const {
35 return chrome_version_;
36 }
37
sync_user_agent() const38 const std::string& DeviceInfo::sync_user_agent() const {
39 return sync_user_agent_;
40 }
41
public_id() const42 const std::string& DeviceInfo::public_id() const {
43 return public_id_;
44 }
45
device_type() const46 sync_pb::SyncEnums::DeviceType DeviceInfo::device_type() const {
47 return device_type_;
48 }
49
signin_scoped_device_id() const50 const std::string& DeviceInfo::signin_scoped_device_id() const {
51 return signin_scoped_device_id_;
52 }
53
GetOSString() const54 std::string DeviceInfo::GetOSString() const {
55 switch (device_type_) {
56 case sync_pb::SyncEnums_DeviceType_TYPE_WIN:
57 return "win";
58 case sync_pb::SyncEnums_DeviceType_TYPE_MAC:
59 return "mac";
60 case sync_pb::SyncEnums_DeviceType_TYPE_LINUX:
61 return "linux";
62 case sync_pb::SyncEnums_DeviceType_TYPE_CROS:
63 return "chrome_os";
64 case sync_pb::SyncEnums_DeviceType_TYPE_PHONE:
65 case sync_pb::SyncEnums_DeviceType_TYPE_TABLET:
66 // TODO(lipalani): crbug.com/170375. Add support for ios
67 // phones and tablets.
68 return "android";
69 default:
70 return "unknown";
71 }
72 }
73
GetDeviceTypeString() const74 std::string DeviceInfo::GetDeviceTypeString() const {
75 switch (device_type_) {
76 case sync_pb::SyncEnums_DeviceType_TYPE_WIN:
77 case sync_pb::SyncEnums_DeviceType_TYPE_MAC:
78 case sync_pb::SyncEnums_DeviceType_TYPE_LINUX:
79 case sync_pb::SyncEnums_DeviceType_TYPE_CROS:
80 return "desktop_or_laptop";
81 case sync_pb::SyncEnums_DeviceType_TYPE_PHONE:
82 return "phone";
83 case sync_pb::SyncEnums_DeviceType_TYPE_TABLET:
84 return "tablet";
85 default:
86 return "unknown";
87 }
88 }
89
Equals(const DeviceInfo & other) const90 bool DeviceInfo::Equals(const DeviceInfo& other) const {
91 return this->guid() == other.guid() &&
92 this->client_name() == other.client_name() &&
93 this->chrome_version() == other.chrome_version() &&
94 this->sync_user_agent() == other.sync_user_agent() &&
95 this->device_type() == other.device_type() &&
96 this->signin_scoped_device_id() == other.signin_scoped_device_id();
97 }
98
ToValue()99 base::DictionaryValue* DeviceInfo::ToValue() {
100 base::DictionaryValue* value = new base::DictionaryValue();
101 value->SetString("name", client_name_);
102 value->SetString("id", public_id_);
103 value->SetString("os", GetOSString());
104 value->SetString("type", GetDeviceTypeString());
105 value->SetString("chromeVersion", chrome_version_);
106 return value;
107 }
108
set_public_id(std::string id)109 void DeviceInfo::set_public_id(std::string id) {
110 public_id_ = id;
111 }
112
113 } // namespace sync_driver
114