diff options
Diffstat (limited to 'components/sync_driver/device_info.cc')
-rw-r--r-- | components/sync_driver/device_info.cc | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/components/sync_driver/device_info.cc b/components/sync_driver/device_info.cc new file mode 100644 index 0000000..c80a157 --- /dev/null +++ b/components/sync_driver/device_info.cc @@ -0,0 +1,113 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "base/values.h" +#include "components/sync_driver/device_info.h" + +namespace sync_driver { + +DeviceInfo::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) + : guid_(guid), + client_name_(client_name), + chrome_version_(chrome_version), + sync_user_agent_(sync_user_agent), + device_type_(device_type), + signin_scoped_device_id_(signin_scoped_device_id) { +} + +DeviceInfo::~DeviceInfo() { } + +const std::string& DeviceInfo::guid() const { + return guid_; +} + +const std::string& DeviceInfo::client_name() const { + return client_name_; +} + +const std::string& DeviceInfo::chrome_version() const { + return chrome_version_; +} + +const std::string& DeviceInfo::sync_user_agent() const { + return sync_user_agent_; +} + +const std::string& DeviceInfo::public_id() const { + return public_id_; +} + +sync_pb::SyncEnums::DeviceType DeviceInfo::device_type() const { + return device_type_; +} + +const std::string& DeviceInfo::signin_scoped_device_id() const { + return signin_scoped_device_id_; +} + +std::string DeviceInfo::GetOSString() const { + switch (device_type_) { + case sync_pb::SyncEnums_DeviceType_TYPE_WIN: + return "win"; + case sync_pb::SyncEnums_DeviceType_TYPE_MAC: + return "mac"; + case sync_pb::SyncEnums_DeviceType_TYPE_LINUX: + return "linux"; + case sync_pb::SyncEnums_DeviceType_TYPE_CROS: + return "chrome_os"; + case sync_pb::SyncEnums_DeviceType_TYPE_PHONE: + case sync_pb::SyncEnums_DeviceType_TYPE_TABLET: + // TODO(lipalani): crbug.com/170375. Add support for ios + // phones and tablets. + return "android"; + default: + return "unknown"; + } +} + +std::string DeviceInfo::GetDeviceTypeString() const { + switch (device_type_) { + case sync_pb::SyncEnums_DeviceType_TYPE_WIN: + case sync_pb::SyncEnums_DeviceType_TYPE_MAC: + case sync_pb::SyncEnums_DeviceType_TYPE_LINUX: + case sync_pb::SyncEnums_DeviceType_TYPE_CROS: + return "desktop_or_laptop"; + case sync_pb::SyncEnums_DeviceType_TYPE_PHONE: + return "phone"; + case sync_pb::SyncEnums_DeviceType_TYPE_TABLET: + return "tablet"; + default: + return "unknown"; + } +} + +bool DeviceInfo::Equals(const DeviceInfo& other) const { + return this->guid() == other.guid() && + this->client_name() == other.client_name() && + this->chrome_version() == other.chrome_version() && + this->sync_user_agent() == other.sync_user_agent() && + this->device_type() == other.device_type() && + this->signin_scoped_device_id() == other.signin_scoped_device_id(); +} + +base::DictionaryValue* DeviceInfo::ToValue() { + base::DictionaryValue* value = new base::DictionaryValue(); + value->SetString("name", client_name_); + value->SetString("id", public_id_); + value->SetString("os", GetOSString()); + value->SetString("type", GetDeviceTypeString()); + value->SetString("chromeVersion", chrome_version_); + return value; +} + +void DeviceInfo::set_public_id(std::string id) { + public_id_ = id; +} + +} // namespace sync_driver |