11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Copyright (c) 2012 The Chromium Authors. All rights reserved. 21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Use of this source code is governed by a BSD-style license that can be 31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// found in the LICENSE file. 41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/values.h" 61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "components/sync_driver/device_info.h" 71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace sync_driver { 91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciDeviceInfo::DeviceInfo(const std::string& guid, 111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const std::string& client_name, 121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const std::string& chrome_version, 131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const std::string& sync_user_agent, 141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const sync_pb::SyncEnums::DeviceType device_type, 151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const std::string& signin_scoped_device_id) 161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci : guid_(guid), 171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci client_name_(client_name), 181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci chrome_version_(chrome_version), 191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci sync_user_agent_(sync_user_agent), 201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci device_type_(device_type), 211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci signin_scoped_device_id_(signin_scoped_device_id) { 221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciDeviceInfo::~DeviceInfo() { } 251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciconst std::string& DeviceInfo::guid() const { 271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return guid_; 281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciconst std::string& DeviceInfo::client_name() const { 311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return client_name_; 321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciconst std::string& DeviceInfo::chrome_version() const { 351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return chrome_version_; 361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciconst std::string& DeviceInfo::sync_user_agent() const { 391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return sync_user_agent_; 401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciconst std::string& DeviceInfo::public_id() const { 431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return public_id_; 441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccisync_pb::SyncEnums::DeviceType DeviceInfo::device_type() const { 471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return device_type_; 481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciconst std::string& DeviceInfo::signin_scoped_device_id() const { 511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return signin_scoped_device_id_; 521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistd::string DeviceInfo::GetOSString() const { 551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (device_type_) { 561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case sync_pb::SyncEnums_DeviceType_TYPE_WIN: 571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return "win"; 581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case sync_pb::SyncEnums_DeviceType_TYPE_MAC: 591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return "mac"; 601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case sync_pb::SyncEnums_DeviceType_TYPE_LINUX: 611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return "linux"; 621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case sync_pb::SyncEnums_DeviceType_TYPE_CROS: 631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return "chrome_os"; 641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case sync_pb::SyncEnums_DeviceType_TYPE_PHONE: 651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case sync_pb::SyncEnums_DeviceType_TYPE_TABLET: 661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // TODO(lipalani): crbug.com/170375. Add support for ios 671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // phones and tablets. 681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return "android"; 691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci default: 701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return "unknown"; 711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistd::string DeviceInfo::GetDeviceTypeString() const { 751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (device_type_) { 761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case sync_pb::SyncEnums_DeviceType_TYPE_WIN: 771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case sync_pb::SyncEnums_DeviceType_TYPE_MAC: 781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case sync_pb::SyncEnums_DeviceType_TYPE_LINUX: 791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case sync_pb::SyncEnums_DeviceType_TYPE_CROS: 801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return "desktop_or_laptop"; 811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case sync_pb::SyncEnums_DeviceType_TYPE_PHONE: 821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return "phone"; 831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case sync_pb::SyncEnums_DeviceType_TYPE_TABLET: 841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return "tablet"; 851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci default: 861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return "unknown"; 871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccibool DeviceInfo::Equals(const DeviceInfo& other) const { 911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return this->guid() == other.guid() && 921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this->client_name() == other.client_name() && 931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this->chrome_version() == other.chrome_version() && 941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this->sync_user_agent() == other.sync_user_agent() && 951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this->device_type() == other.device_type() && 961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this->signin_scoped_device_id() == other.signin_scoped_device_id(); 971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccibase::DictionaryValue* DeviceInfo::ToValue() { 1001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::DictionaryValue* value = new base::DictionaryValue(); 1011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci value->SetString("name", client_name_); 1021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci value->SetString("id", public_id_); 1031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci value->SetString("os", GetOSString()); 1041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci value->SetString("type", GetDeviceTypeString()); 1051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci value->SetString("chromeVersion", chrome_version_); 1061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return value; 1071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 1081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid DeviceInfo::set_public_id(std::string id) { 1101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci public_id_ = id; 1111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 1121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} // namespace sync_driver 114