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 #ifndef COMPONENTS_SYNC_DRIVER_DEVICE_INFO_H_
      6 #define COMPONENTS_SYNC_DRIVER_DEVICE_INFO_H_
      7 
      8 #include <string>
      9 
     10 #include "base/basictypes.h"
     11 #include "base/callback.h"
     12 #include "sync/protocol/sync.pb.h"
     13 
     14 namespace base {
     15 class DictionaryValue;
     16 }
     17 
     18 namespace sync_driver {
     19 
     20 // A class that holds information regarding the properties of a device.
     21 class DeviceInfo {
     22  public:
     23   DeviceInfo(const std::string& guid,
     24              const std::string& client_name,
     25              const std::string& chrome_version,
     26              const std::string& sync_user_agent,
     27              const sync_pb::SyncEnums::DeviceType device_type,
     28              const std::string& signin_scoped_device_id);
     29   ~DeviceInfo();
     30 
     31   // Sync specific unique identifier for the device. Note if a device
     32   // is wiped and sync is set up again this id WILL be different.
     33   // The same device might have more than 1 guid if the device has multiple
     34   // accounts syncing.
     35   const std::string& guid() const;
     36 
     37   // The host name for the client.
     38   const std::string& client_name() const;
     39 
     40   // Chrome version string.
     41   const std::string& chrome_version() const;
     42 
     43   // The user agent is the combination of OS type, chrome version and which
     44   // channel of chrome(stable or beta). For more information see
     45   // |LocalDeviceInfoProviderImpl::MakeUserAgentForSyncApi|.
     46   const std::string& sync_user_agent() const;
     47 
     48   // Third party visible id for the device. See |public_id_| for more details.
     49   const std::string& public_id() const;
     50 
     51   // Device Type.
     52   sync_pb::SyncEnums::DeviceType device_type() const;
     53 
     54   // Device_id that is stable until user signs out. This device_id is used for
     55   // annotating login scoped refresh token.
     56   const std::string& signin_scoped_device_id() const;
     57 
     58   // Gets the OS in string form.
     59   std::string GetOSString() const;
     60 
     61   // Gets the device type in string form.
     62   std::string GetDeviceTypeString() const;
     63 
     64   // Compares this object's fields with another's.
     65   bool Equals(const DeviceInfo& other) const;
     66 
     67   // Apps can set ids for a device that is meaningful to them but
     68   // not unique enough so the user can be tracked. Exposing |guid|
     69   // would lead to a stable unique id for a device which can potentially
     70   // be used for tracking.
     71   void set_public_id(std::string id);
     72 
     73   // Converts the |DeviceInfo| values to a JS friendly DictionaryValue,
     74   // which extension APIs can expose to third party apps.
     75   base::DictionaryValue* ToValue();
     76 
     77  private:
     78   const std::string guid_;
     79 
     80   const std::string client_name_;
     81 
     82   const std::string chrome_version_;
     83 
     84   const std::string sync_user_agent_;
     85 
     86   const sync_pb::SyncEnums::DeviceType device_type_;
     87 
     88   std::string signin_scoped_device_id_;
     89 
     90   // Exposing |guid| would lead to a stable unique id for a device which
     91   // can potentially be used for tracking. Public ids are privacy safe
     92   // ids in that the same device will have different id for different apps
     93   // and they are also reset when app/extension is uninstalled.
     94   std::string public_id_;
     95 
     96   DISALLOW_COPY_AND_ASSIGN(DeviceInfo);
     97 };
     98 
     99 }  // namespace sync_driver
    100 
    101 #endif  // COMPONENTS_SYNC_DRIVER_DEVICE_INFO_H_
    102