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.
5 #include "components/sync_driver/device_info_data_type_controller.h"
7 #include "base/callback.h"
8 #include "components/sync_driver/local_device_info_provider.h"
10 namespace sync_driver {
12 DeviceInfoDataTypeController::DeviceInfoDataTypeController(
13 const scoped_refptr<base::MessageLoopProxy>& ui_thread,
14 const base::Closure& error_callback,
15 SyncApiComponentFactory* sync_factory,
16 LocalDeviceInfoProvider* local_device_info_provider)
17 : UIDataTypeController(
22 local_device_info_provider_(local_device_info_provider) {
25 DeviceInfoDataTypeController::~DeviceInfoDataTypeController() {
28 bool DeviceInfoDataTypeController::StartModels() {
29 // Start the data type as soon as the local device info gets available.
30 if (local_device_info_provider_->GetLocalDeviceInfo()) {
34 subscription_ = local_device_info_provider_->RegisterOnInitializedCallback(
35 base::Bind(&DeviceInfoDataTypeController::OnLocalDeviceInfoLoaded, this));
40 void DeviceInfoDataTypeController::OnLocalDeviceInfoLoaded() {
41 DCHECK_EQ(state_, MODEL_STARTING);
42 DCHECK(local_device_info_provider_->GetLocalDeviceInfo());
44 subscription_.reset();
48 } // namespace sync_driver