Home | History | Annotate | Download | only in sync_driver
      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 
     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 
     24 DeviceInfo::~DeviceInfo() { }
     25 
     26 const std::string& DeviceInfo::guid() const {
     27   return guid_;
     28 }
     29 
     30 const std::string& DeviceInfo::client_name() const {
     31   return client_name_;
     32 }
     33 
     34 const std::string& DeviceInfo::chrome_version() const {
     35   return chrome_version_;
     36 }
     37 
     38 const std::string& DeviceInfo::sync_user_agent() const {
     39   return sync_user_agent_;
     40 }
     41 
     42 const std::string& DeviceInfo::public_id() const {
     43   return public_id_;
     44 }
     45 
     46 sync_pb::SyncEnums::DeviceType DeviceInfo::device_type() const {
     47   return device_type_;
     48 }
     49 
     50 const std::string& DeviceInfo::signin_scoped_device_id() const {
     51   return signin_scoped_device_id_;
     52 }
     53 
     54 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 
     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:
     82       return "phone";
     83     case sync_pb::SyncEnums_DeviceType_TYPE_TABLET:
     84       return "tablet";
     85     default:
     86       return "unknown";
     87   }
     88 }
     89 
     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();
     97 }
     98 
     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 
    109 void DeviceInfo::set_public_id(std::string id) {
    110   public_id_ = id;
    111 }
    112 
    113 }  // namespace sync_driver
    114