1// Copyright 2014 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_TRACKER_H_ 6#define COMPONENTS_SYNC_DRIVER_DEVICE_INFO_TRACKER_H_ 7 8#include "base/memory/scoped_ptr.h" 9#include "base/memory/scoped_vector.h" 10#include "components/sync_driver/device_info.h" 11 12namespace sync_driver { 13 14// Interface for tracking synced DeviceInfo. 15class DeviceInfoTracker { 16 public: 17 virtual ~DeviceInfoTracker() {} 18 19 // Observer class for listening to device info changes. 20 class Observer { 21 public: 22 virtual void OnDeviceInfoChange() = 0; 23 }; 24 25 // Gets DeviceInfo the synced device with specified client ID. 26 // Returns an empty scoped_ptr if device with the given |client_id| hasn't 27 // been synced. 28 virtual scoped_ptr<DeviceInfo> GetDeviceInfo( 29 const std::string& client_id) const = 0; 30 // Gets DeviceInfo for all synced devices (including the local one). 31 virtual ScopedVector<DeviceInfo> GetAllDeviceInfo() const = 0; 32 // Registers an observer to be called on syncing any updated DeviceInfo. 33 virtual void AddObserver(Observer* observer) = 0; 34 // Unregisters an observer. 35 virtual void RemoveObserver(Observer* observer) = 0; 36}; 37 38} // namespace sync_driver 39 40#endif // COMPONENTS_SYNC_DRIVER_DEVICE_INFO_TRACKER_H_ 41