local_device_info_provider_impl.h revision 1320f92c476a1ad9d19dba2a48c72b75566198e9
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 CHROME_BROWSER_SYNC_GLUE_LOCAL_DEVICE_INFO_PROVIDER_IMPL_H_ 6#define CHROME_BROWSER_SYNC_GLUE_LOCAL_DEVICE_INFO_PROVIDER_IMPL_H_ 7 8#include "base/memory/weak_ptr.h" 9#include "components/sync_driver/device_info.h" 10#include "components/sync_driver/local_device_info_provider.h" 11 12namespace chrome { 13class VersionInfo; 14} 15 16namespace browser_sync { 17 18class LocalDeviceInfoProviderImpl 19 : public sync_driver::LocalDeviceInfoProvider { 20 public: 21 LocalDeviceInfoProviderImpl(); 22 virtual ~LocalDeviceInfoProviderImpl(); 23 24 // LocalDeviceInfoProvider implementation. 25 virtual const sync_driver::DeviceInfo* GetLocalDeviceInfo() const OVERRIDE; 26 virtual std::string GetLocalSyncCacheGUID() const OVERRIDE; 27 virtual void Initialize( 28 const std::string& cache_guid, 29 const std::string& signin_scoped_device_id) OVERRIDE; 30 virtual scoped_ptr<Subscription> RegisterOnInitializedCallback( 31 const base::Closure& callback) OVERRIDE; 32 33 // Helper to construct a user agent string (ASCII) suitable for use by 34 // the syncapi for any HTTP communication. This string is used by the sync 35 // backend for classifying client types when calculating statistics. 36 static std::string MakeUserAgentForSyncApi( 37 const chrome::VersionInfo& version_info); 38 39 private: 40 void InitializeContinuation(const std::string& guid, 41 const std::string& signin_scoped_device_id, 42 const std::string& session_name); 43 44 std::string cache_guid_; 45 scoped_ptr<sync_driver::DeviceInfo> local_device_info_; 46 base::CallbackList<void(void)> callback_list_; 47 base::WeakPtrFactory<LocalDeviceInfoProviderImpl> weak_factory_; 48 49 DISALLOW_COPY_AND_ASSIGN(LocalDeviceInfoProviderImpl); 50}; 51 52} // namespace browser_sync 53 54#endif // CHROME_BROWSER_SYNC_GLUE_LOCAL_DEVICE_INFO_PROVIDER_IMPL_H_ 55