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 8namespace sync_driver { 9 10DeviceInfo::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 24DeviceInfo::~DeviceInfo() { } 25 26const std::string& DeviceInfo::guid() const { 27 return guid_; 28} 29 30const std::string& DeviceInfo::client_name() const { 31 return client_name_; 32} 33 34const std::string& DeviceInfo::chrome_version() const { 35 return chrome_version_; 36} 37 38const std::string& DeviceInfo::sync_user_agent() const { 39 return sync_user_agent_; 40} 41 42const std::string& DeviceInfo::public_id() const { 43 return public_id_; 44} 45 46sync_pb::SyncEnums::DeviceType DeviceInfo::device_type() const { 47 return device_type_; 48} 49 50const std::string& DeviceInfo::signin_scoped_device_id() const { 51 return signin_scoped_device_id_; 52} 53 54std::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 74std::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 90bool 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 99base::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 109void DeviceInfo::set_public_id(std::string id) { 110 public_id_ = id; 111} 112 113} // namespace sync_driver 114