1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file.
4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#ifndef CHROME_BROWSER_SYNC_GLUE_THEME_MODEL_ASSOCIATOR_H_
6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define CHROME_BROWSER_SYNC_GLUE_THEME_MODEL_ASSOCIATOR_H_
73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once
8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/basictypes.h"
10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/sync/glue/model_associator.h"
11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/sync/syncable/model_type.h"
12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass ProfileSyncService;
14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace browser_sync {
16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass UnrecoverableErrorHandler;
18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Contains all logic for associating the Chrome themes model and the
20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// sync themes model.
21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass ThemeModelAssociator : public AssociatorInterface {
22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public:
23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  explicit ThemeModelAssociator(ProfileSyncService* sync_service);
24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual ~ThemeModelAssociator();
25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Used by profile_sync_test_util.h.
27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  static syncable::ModelType model_type() { return syncable::THEMES; }
28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // AssociatorInterface implementation.
30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual bool AssociateModels();
31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual bool DisassociateModels();
32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual bool SyncModelHasUserCreatedNodes(bool* has_nodes);
33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void AbortAssociation() {
34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    // No implementation needed, this associator runs on the main
35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    // thread.
36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  }
37ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  virtual bool CryptoReadyIfNecessary();
38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private:
40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ProfileSyncService* sync_service_;
41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  DISALLOW_COPY_AND_ASSIGN(ThemeModelAssociator);
43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch};
44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}  // namespace browser_sync
46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif  // CHROME_BROWSER_SYNC_GLUE_THEME_MODEL_ASSOCIATOR_H_
48