• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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