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.
5 #include "base/values.h"
6 #include "components/sync_driver/device_info.h"
8 namespace sync_driver
{
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
)
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
) {
24 DeviceInfo::~DeviceInfo() { }
26 const std::string
& DeviceInfo::guid() const {
30 const std::string
& DeviceInfo::client_name() const {
34 const std::string
& DeviceInfo::chrome_version() const {
35 return chrome_version_
;
38 const std::string
& DeviceInfo::sync_user_agent() const {
39 return sync_user_agent_
;
42 const std::string
& DeviceInfo::public_id() const {
46 sync_pb::SyncEnums::DeviceType
DeviceInfo::device_type() const {
50 const std::string
& DeviceInfo::signin_scoped_device_id() const {
51 return signin_scoped_device_id_
;
54 std::string
DeviceInfo::GetOSString() const {
55 switch (device_type_
) {
56 case sync_pb::SyncEnums_DeviceType_TYPE_WIN
:
58 case sync_pb::SyncEnums_DeviceType_TYPE_MAC
:
60 case sync_pb::SyncEnums_DeviceType_TYPE_LINUX
:
62 case sync_pb::SyncEnums_DeviceType_TYPE_CROS
:
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.
74 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
:
83 case sync_pb::SyncEnums_DeviceType_TYPE_TABLET
:
90 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();
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_
);
109 void DeviceInfo::set_public_id(std::string id
) {
113 } // namespace sync_driver