Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(31)

Side by Side Diff: components/sync/driver/data_type_controller.h

Issue 2376123003: [Sync] Move //components/sync to the syncer namespace. (Closed)
Patch Set: Rebase. Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef COMPONENTS_SYNC_DRIVER_DATA_TYPE_CONTROLLER_H__ 5 #ifndef COMPONENTS_SYNC_DRIVER_DATA_TYPE_CONTROLLER_H__
6 #define COMPONENTS_SYNC_DRIVER_DATA_TYPE_CONTROLLER_H__ 6 #define COMPONENTS_SYNC_DRIVER_DATA_TYPE_CONTROLLER_H__
7 7
8 #include <map> 8 #include <map>
9 #include <memory> 9 #include <memory>
10 #include <string> 10 #include <string>
11 11
12 #include "base/callback.h" 12 #include "base/callback.h"
13 #include "base/location.h" 13 #include "base/location.h"
14 #include "base/memory/weak_ptr.h" 14 #include "base/memory/weak_ptr.h"
15 #include "base/threading/thread_checker.h" 15 #include "base/threading/thread_checker.h"
16 #include "components/sync/api/data_type_error_handler.h" 16 #include "components/sync/api/data_type_error_handler.h"
17 #include "components/sync/base/model_type.h" 17 #include "components/sync/base/model_type.h"
18 #include "components/sync/base/unrecoverable_error_handler.h" 18 #include "components/sync/base/unrecoverable_error_handler.h"
19 19
20 namespace syncer { 20 namespace syncer {
21
22 class BackendDataTypeConfigurer;
21 class SyncError; 23 class SyncError;
22 class SyncMergeResult; 24 class SyncMergeResult;
23 }
24
25 namespace sync_driver {
26 class BackendDataTypeConfigurer;
27 25
28 // DataTypeControllers are responsible for managing the state of a single data 26 // DataTypeControllers are responsible for managing the state of a single data
29 // type. They are not thread safe and should only be used on the UI thread. 27 // type. They are not thread safe and should only be used on the UI thread.
30 class DataTypeController : public base::SupportsWeakPtr<DataTypeController> { 28 class DataTypeController : public base::SupportsWeakPtr<DataTypeController> {
31 public: 29 public:
32 enum State { 30 enum State {
33 NOT_RUNNING, // The controller has never been started or has previously 31 NOT_RUNNING, // The controller has never been started or has previously
34 // been stopped. Must be in this state to start. 32 // been stopped. Must be in this state to start.
35 MODEL_STARTING, // The controller is waiting on dependent services 33 MODEL_STARTING, // The controller is waiting on dependent services
36 // that need to be available before model 34 // that need to be available before model
(...skipping 18 matching lines...) Expand all
55 // determined by cloud state. 53 // determined by cloud state.
56 ASSOCIATION_FAILED, // An error occurred during model association. 54 ASSOCIATION_FAILED, // An error occurred during model association.
57 ABORTED, // Start was aborted by calling Stop(). 55 ABORTED, // Start was aborted by calling Stop().
58 UNRECOVERABLE_ERROR, // An unrecoverable error occured. 56 UNRECOVERABLE_ERROR, // An unrecoverable error occured.
59 NEEDS_CRYPTO, // The data type cannot be started yet because it 57 NEEDS_CRYPTO, // The data type cannot be started yet because it
60 // depends on the cryptographer. 58 // depends on the cryptographer.
61 RUNTIME_ERROR, // After starting, a runtime error was encountered. 59 RUNTIME_ERROR, // After starting, a runtime error was encountered.
62 MAX_CONFIGURE_RESULT 60 MAX_CONFIGURE_RESULT
63 }; 61 };
64 62
65 typedef base::Callback<void(ConfigureResult, 63 typedef base::Callback<
66 const syncer::SyncMergeResult&, 64 void(ConfigureResult, const SyncMergeResult&, const SyncMergeResult&)>
67 const syncer::SyncMergeResult&)>
68 StartCallback; 65 StartCallback;
69 66
70 typedef base::Callback<void(syncer::ModelType, const syncer::SyncError&)> 67 typedef base::Callback<void(ModelType, const SyncError&)> ModelLoadCallback;
71 ModelLoadCallback;
72 68
73 typedef base::Callback<void(const syncer::ModelType, 69 typedef base::Callback<void(const ModelType,
74 std::unique_ptr<base::ListValue>)> 70 std::unique_ptr<base::ListValue>)>
75 AllNodesCallback; 71 AllNodesCallback;
76 72
77 typedef std::map<syncer::ModelType, std::unique_ptr<DataTypeController>> 73 typedef std::map<ModelType, std::unique_ptr<DataTypeController>> TypeMap;
78 TypeMap; 74 typedef std::map<ModelType, DataTypeController::State> StateMap;
79 typedef std::map<syncer::ModelType, DataTypeController::State> StateMap;
80 75
81 // Returns true if the start result should trigger an unrecoverable error. 76 // Returns true if the start result should trigger an unrecoverable error.
82 // Public so unit tests can use this function as well. 77 // Public so unit tests can use this function as well.
83 static bool IsUnrecoverableResult(ConfigureResult result); 78 static bool IsUnrecoverableResult(ConfigureResult result);
84 79
85 // Returns true if the datatype started successfully. 80 // Returns true if the datatype started successfully.
86 static bool IsSuccessfulResult(ConfigureResult result); 81 static bool IsSuccessfulResult(ConfigureResult result);
87 82
88 virtual ~DataTypeController(); 83 virtual ~DataTypeController();
89 84
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 // propagate from sync again from point where Stop() is called. 125 // propagate from sync again from point where Stop() is called.
131 virtual void Stop() = 0; 126 virtual void Stop() = 0;
132 127
133 // Name of this data type. For logging purposes only. 128 // Name of this data type. For logging purposes only.
134 virtual std::string name() const = 0; 129 virtual std::string name() const = 0;
135 130
136 // Current state of the data type controller. 131 // Current state of the data type controller.
137 virtual State state() const = 0; 132 virtual State state() const = 0;
138 133
139 // Unique model type for this data type controller. 134 // Unique model type for this data type controller.
140 syncer::ModelType type() const { return type_; } 135 ModelType type() const { return type_; }
141 136
142 // Whether the DataTypeController is ready to start. This is useful if the 137 // Whether the DataTypeController is ready to start. This is useful if the
143 // datatype itself must make the decision about whether it should be enabled 138 // datatype itself must make the decision about whether it should be enabled
144 // at all (and therefore whether the initial download of the sync data for 139 // at all (and therefore whether the initial download of the sync data for
145 // the type should be performed). 140 // the type should be performed).
146 // Returns true by default. 141 // Returns true by default.
147 virtual bool ReadyForStart() const; 142 virtual bool ReadyForStart() const;
148 143
149 // Returns a ListValue representing all nodes for this data type through 144 // Returns a ListValue representing all nodes for this data type through
150 // |callback| on this thread. 145 // |callback| on this thread.
151 // Used for populating nodes in Sync Node Browser of chrome://sync-internals. 146 // Used for populating nodes in Sync Node Browser of chrome://sync-internals.
152 virtual void GetAllNodes(const AllNodesCallback& callback) = 0; 147 virtual void GetAllNodes(const AllNodesCallback& callback) = 0;
153 148
154 protected: 149 protected:
155 DataTypeController(syncer::ModelType type, const base::Closure& dump_stack); 150 DataTypeController(ModelType type, const base::Closure& dump_stack);
156 151
157 // Create an error handler that reports back to this controller. 152 // Create an error handler that reports back to this controller.
158 virtual std::unique_ptr<syncer::DataTypeErrorHandler> 153 virtual std::unique_ptr<DataTypeErrorHandler> CreateErrorHandler() = 0;
159 CreateErrorHandler() = 0;
160 154
161 // Allows subclasses to DCHECK that they're on the correct thread. 155 // Allows subclasses to DCHECK that they're on the correct thread.
162 bool CalledOnValidThread() const; 156 bool CalledOnValidThread() const;
163 157
164 // Callback to dump and upload a stack trace when an error occurs. 158 // Callback to dump and upload a stack trace when an error occurs.
165 base::Closure dump_stack_; 159 base::Closure dump_stack_;
166 160
167 private: 161 private:
168 // The type this object is responsible for controlling. 162 // The type this object is responsible for controlling.
169 const syncer::ModelType type_; 163 const ModelType type_;
170 164
171 // Used to check that functions are called on the correct thread. 165 // Used to check that functions are called on the correct thread.
172 base::ThreadChecker thread_checker_; 166 base::ThreadChecker thread_checker_;
173 }; 167 };
174 168
175 } // namespace sync_driver 169 } // namespace syncer
176 170
177 #endif // COMPONENTS_SYNC_DRIVER_DATA_TYPE_CONTROLLER_H__ 171 #endif // COMPONENTS_SYNC_DRIVER_DATA_TYPE_CONTROLLER_H__
OLDNEW
« no previous file with comments | « components/sync/driver/change_processor_mock.cc ('k') | components/sync/driver/data_type_controller.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698