Chromium Code Reviews| Index: chrome/browser/sync/glue/device_info_sync_service.h |
| diff --git a/chrome/browser/sync/glue/device_info_sync_service.h b/chrome/browser/sync/glue/device_info_sync_service.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..a21b8efd3b24be9d896682c66e4cd6403b424f11 |
| --- /dev/null |
| +++ b/chrome/browser/sync/glue/device_info_sync_service.h |
| @@ -0,0 +1,85 @@ |
| +// Copyright 2014 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. |
| + |
| +#ifndef CHROME_BROWSER_SYNC_GLUE_DEVICE_INFO_SYNC_SERVICE_H_ |
| +#define CHROME_BROWSER_SYNC_GLUE_DEVICE_INFO_SYNC_SERVICE_H_ |
| + |
| +#include "base/callback_list.h" |
| +#include "base/memory/scoped_ptr.h" |
| +#include "base/memory/scoped_vector.h" |
| +#include "chrome/browser/sync/glue/device_info.h" |
| +#include "sync/api/sync_change_processor.h" |
| +#include "sync/api/sync_data.h" |
| +#include "sync/api/sync_error_factory.h" |
| +#include "sync/api/syncable_service.h" |
| + |
| +namespace browser_sync { |
| + |
| +class LocalDeviceInfoProvider; |
| + |
| +// SyncableService implementation for DEVICE_INFO model type. |
| +class DeviceInfoSyncService : public syncer::SyncableService { |
| + public: |
| + explicit DeviceInfoSyncService( |
| + LocalDeviceInfoProvider* local_device_info_provider); |
| + virtual ~DeviceInfoSyncService(); |
| + |
| + // syncer::SyncableService implementation. |
| + virtual syncer::SyncMergeResult MergeDataAndStartSyncing( |
| + syncer::ModelType type, |
| + const syncer::SyncDataList& initial_sync_data, |
| + scoped_ptr<syncer::SyncChangeProcessor> sync_processor, |
| + scoped_ptr<syncer::SyncErrorFactory> error_handler) OVERRIDE; |
| + virtual void StopSyncing(syncer::ModelType type) OVERRIDE; |
| + virtual syncer::SyncDataList GetAllSyncData( |
| + syncer::ModelType type) const OVERRIDE; |
| + virtual syncer::SyncError ProcessSyncChanges( |
| + const tracked_objects::Location& from_here, |
| + const syncer::SyncChangeList& change_list) OVERRIDE; |
| + |
| + // DeviceInfoSyncService API |
|
stanisc
2014/07/30 18:57:50
Will add missing period at the end of the sentence
stanisc
2014/08/01 18:54:51
Done.
|
| + scoped_ptr<DeviceInfo> GetDeviceInfo(const std::string& client_id) const; |
| + ScopedVector<DeviceInfo> GetAllDeviceInfo() const; |
| + |
| + typedef base::CallbackList<void(void)>::Subscription Subscription; |
|
pavely
2014/07/31 22:52:40
nit: typedef should be before ctor (http://google-
stanisc
2014/08/01 18:54:51
Done.
|
| + |
| + // Registers an observer callback to be called on syncing any updated |
| + // DeviceInfo. The callback remains registered until the returned |
| + // Subscription is destroyed, which must occur before this object |
| + // is destroyed. |
| + scoped_ptr<Subscription> RegisterOnDeviceInfoChangedCallback( |
| + const base::Closure& callback); |
| + |
| + private: |
| + // Create SyncData from local DeviceInfo. |
| + static syncer::SyncData CreateLocalData(const DeviceInfo* info); |
| + // Allocate new DeviceInfo from SyncData. |
| + static DeviceInfo* CreateDeviceInfo(const syncer::SyncData sync_data); |
| + // Store SyncData in the cache. |
| + void StoreSyncData( |
| + const std::string& client_id, const syncer::SyncData& sync_data); |
| + // Delete SyncData from the cache. |
| + void DeleteSyncData(const std::string& client_id); |
| + |
| + // |local_device_info_provider_| isn't owned. |
| + const LocalDeviceInfoProvider* const local_device_info_provider_; |
| + |
| + // Receives ownership of |sync_processor_| and |error_handler_| in |
| + // MergeDataAndStartSyncing() and destroy them in StopSyncing(). |
| + scoped_ptr<syncer::SyncChangeProcessor> sync_processor_; |
| + scoped_ptr<syncer::SyncErrorFactory> error_handler_; |
| + |
| + // Cache of all syncable and local data. |
| + typedef std::map<std::string, syncer::SyncData> SyncDataMap; |
| + SyncDataMap all_data_; |
| + |
| + // Registered observer callbacks. |
| + base::CallbackList<void(void)> callback_list_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(DeviceInfoSyncService); |
| +}; |
| + |
| +} // namespace browser_sync |
| + |
| +#endif // CHROME_BROWSER_SYNC_GLUE_DEVICE_INFO_SYNC_SERVICE_H_ |