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_PASSWORD_DATA_TYPE_CONTROLLER_H__
6#define CHROME_BROWSER_SYNC_GLUE_PASSWORD_DATA_TYPE_CONTROLLER_H__
7
8#include <string>
9
10#include "base/memory/ref_counted.h"
11#include "components/sync_driver/non_ui_data_type_controller.h"
12
13class Profile;
14class ProfileSyncComponentsFactory;
15
16namespace password_manager {
17class PasswordStore;
18}
19
20namespace browser_sync {
21
22// A class that manages the startup and shutdown of password sync.
23class PasswordDataTypeController : public sync_driver::NonUIDataTypeController {
24 public:
25  PasswordDataTypeController(
26      ProfileSyncComponentsFactory* profile_sync_factory,
27      Profile* profile);
28
29  // NonFrontendDataTypeController implementation
30  virtual syncer::ModelType type() const OVERRIDE;
31  virtual syncer::ModelSafeGroup model_safe_group() const OVERRIDE;
32
33 protected:
34  virtual ~PasswordDataTypeController();
35
36  // NonUIDataTypeController interface.
37  virtual bool PostTaskOnBackendThread(
38      const tracked_objects::Location& from_here,
39      const base::Closure& task) OVERRIDE;
40  virtual bool StartModels() OVERRIDE;
41
42 private:
43  Profile* const profile_;
44  scoped_refptr<password_manager::PasswordStore> password_store_;
45
46  DISALLOW_COPY_AND_ASSIGN(PasswordDataTypeController);
47};
48
49}  // namespace browser_sync
50
51#endif  // CHROME_BROWSER_SYNC_GLUE_PASSWORD_DATA_TYPE_CONTROLLER_H__
52