Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / components / sync_driver / proxy_data_type_controller.h
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 COMPONENTS_SYNC_DRIVER_PROXY_DATA_TYPE_CONTROLLER_H__
6 #define COMPONENTS_SYNC_DRIVER_PROXY_DATA_TYPE_CONTROLLER_H__
7
8 #include "base/basictypes.h"
9 #include "base/compiler_specific.h"
10 #include "components/sync_driver/data_type_controller.h"
11
12 namespace sync_driver {
13
14 // Implementation for proxy datatypes. These are datatype that have no
15 // representation in sync, and therefore no change processor or syncable
16 // service.
17 class ProxyDataTypeController : public DataTypeController {
18  public:
19   explicit ProxyDataTypeController(
20        scoped_refptr<base::MessageLoopProxy> ui_thread,
21        syncer::ModelType type);
22
23   // DataTypeController interface.
24   void LoadModels(const ModelLoadCallback& model_load_callback) override;
25   void StartAssociating(const StartCallback& start_callback) override;
26   void Stop() override;
27   syncer::ModelType type() const override;
28   syncer::ModelSafeGroup model_safe_group() const override;
29   ChangeProcessor* GetChangeProcessor() const override;
30   std::string name() const override;
31   State state() const override;
32
33   // DataTypeErrorHandler interface.
34   void OnSingleDataTypeUnrecoverableError(
35       const syncer::SyncError& error) override;
36
37  protected:
38   // DataTypeController is RefCounted.
39   ~ProxyDataTypeController() override;
40
41   // DataTypeController interface.
42   void OnModelLoaded() override;
43
44  private:
45   State state_;
46
47   // The actual type for this controller.
48   syncer::ModelType type_;
49
50   DISALLOW_COPY_AND_ASSIGN(ProxyDataTypeController);
51 };
52
53 }  // namespace sync_driver
54
55 #endif  // COMPONENTS_SYNC_DRIVER_PROXY_DATA_TYPE_CONTROLLER_H__