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 CHROME_BROWSER_SYNC_GLUE_AUTOFILL_PROFILE_DATA_TYPE_CONTROLLER_H_ 6#define CHROME_BROWSER_SYNC_GLUE_AUTOFILL_PROFILE_DATA_TYPE_CONTROLLER_H_ 7 8#include "base/compiler_specific.h" 9#include "base/memory/ref_counted.h" 10#include "base/scoped_observer.h" 11#include "components/autofill/core/browser/personal_data_manager_observer.h" 12#include "components/sync_driver/non_ui_data_type_controller.h" 13 14class Profile; 15class ProfileSyncComponentsFactory; 16 17namespace autofill { 18class PersonalDataManager; 19} // namespace autofill 20 21namespace browser_sync { 22 23class AutofillProfileDataTypeController 24 : public sync_driver::NonUIDataTypeController, 25 public autofill::PersonalDataManagerObserver { 26 public: 27 AutofillProfileDataTypeController( 28 ProfileSyncComponentsFactory* profile_sync_factory, 29 Profile* profile); 30 31 // NonUIDataTypeController implementation. 32 virtual syncer::ModelType type() const OVERRIDE; 33 virtual syncer::ModelSafeGroup model_safe_group() const OVERRIDE; 34 35 // PersonalDataManagerObserver implementation: 36 virtual void OnPersonalDataChanged() OVERRIDE; 37 38 protected: 39 virtual ~AutofillProfileDataTypeController(); 40 41 // NonUIDataTypeController implementation. 42 virtual bool PostTaskOnBackendThread( 43 const tracked_objects::Location& from_here, 44 const base::Closure& task) OVERRIDE; 45 virtual bool StartModels() OVERRIDE; 46 virtual void StopModels() OVERRIDE; 47 48 private: 49 // Callback to notify that WebDatabase has loaded. 50 void WebDatabaseLoaded(); 51 52 Profile* const profile_; 53 autofill::PersonalDataManager* personal_data_; 54 bool callback_registered_; 55 56 DISALLOW_COPY_AND_ASSIGN(AutofillProfileDataTypeController); 57}; 58 59} // namespace browser_sync 60 61#endif // CHROME_BROWSER_SYNC_GLUE_AUTOFILL_PROFILE_DATA_TYPE_CONTROLLER_H_ 62