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

Side by Side Diff: components/sync/driver/ui_data_type_controller.cc

Issue 2388673002: Revert of [Sync] Move //components/sync to the syncer namespace. (patchset #5 id:40001 of https://co (Closed)
Patch Set: 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 #include "components/sync/driver/ui_data_type_controller.h" 5 #include "components/sync/driver/ui_data_type_controller.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/location.h" 9 #include "base/location.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
11 #include "base/memory/ptr_util.h" 11 #include "base/memory/ptr_util.h"
12 #include "base/profiler/scoped_tracker.h" 12 #include "base/profiler/scoped_tracker.h"
13 #include "base/threading/thread_task_runner_handle.h" 13 #include "base/threading/thread_task_runner_handle.h"
14 #include "components/sync/api/data_type_error_handler_impl.h" 14 #include "components/sync/api/data_type_error_handler_impl.h"
15 #include "components/sync/api/sync_error.h" 15 #include "components/sync/api/sync_error.h"
16 #include "components/sync/api/sync_merge_result.h" 16 #include "components/sync/api/sync_merge_result.h"
17 #include "components/sync/api/syncable_service.h" 17 #include "components/sync/api/syncable_service.h"
18 #include "components/sync/base/data_type_histogram.h" 18 #include "components/sync/base/data_type_histogram.h"
19 #include "components/sync/base/model_type.h" 19 #include "components/sync/base/model_type.h"
20 #include "components/sync/driver/generic_change_processor_factory.h" 20 #include "components/sync/driver/generic_change_processor_factory.h"
21 #include "components/sync/driver/shared_change_processor_ref.h" 21 #include "components/sync/driver/shared_change_processor_ref.h"
22 #include "components/sync/driver/sync_client.h" 22 #include "components/sync/driver/sync_client.h"
23 #include "components/sync/driver/sync_service.h" 23 #include "components/sync/driver/sync_service.h"
24 24
25 namespace syncer { 25 namespace sync_driver {
26 26
27 UIDataTypeController::UIDataTypeController() 27 UIDataTypeController::UIDataTypeController()
28 : DirectoryDataTypeController(UNSPECIFIED, base::Closure(), nullptr), 28 : DirectoryDataTypeController(syncer::UNSPECIFIED,
29 base::Closure(),
30 nullptr),
29 state_(NOT_RUNNING) {} 31 state_(NOT_RUNNING) {}
30 32
31 UIDataTypeController::UIDataTypeController(ModelType type, 33 UIDataTypeController::UIDataTypeController(syncer::ModelType type,
32 const base::Closure& dump_stack, 34 const base::Closure& dump_stack,
33 SyncClient* sync_client) 35 SyncClient* sync_client)
34 : DirectoryDataTypeController(type, dump_stack, sync_client), 36 : DirectoryDataTypeController(type, dump_stack, sync_client),
35 state_(NOT_RUNNING), 37 state_(NOT_RUNNING),
36 processor_factory_(new GenericChangeProcessorFactory()) { 38 processor_factory_(new GenericChangeProcessorFactory()) {
37 DCHECK(IsRealDataType(type)); 39 DCHECK(syncer::IsRealDataType(type));
38 } 40 }
39 41
40 void UIDataTypeController::SetGenericChangeProcessorFactoryForTest( 42 void UIDataTypeController::SetGenericChangeProcessorFactoryForTest(
41 std::unique_ptr<GenericChangeProcessorFactory> factory) { 43 std::unique_ptr<GenericChangeProcessorFactory> factory) {
42 DCHECK_EQ(state_, NOT_RUNNING); 44 DCHECK_EQ(state_, NOT_RUNNING);
43 processor_factory_ = std::move(factory); 45 processor_factory_ = std::move(factory);
44 } 46 }
45 47
46 UIDataTypeController::~UIDataTypeController() {} 48 UIDataTypeController::~UIDataTypeController() {}
47 49
48 void UIDataTypeController::LoadModels( 50 void UIDataTypeController::LoadModels(
49 const ModelLoadCallback& model_load_callback) { 51 const ModelLoadCallback& model_load_callback) {
50 DCHECK(CalledOnValidThread()); 52 DCHECK(CalledOnValidThread());
51 DCHECK(IsRealDataType(type())); 53 DCHECK(syncer::IsRealDataType(type()));
52 model_load_callback_ = model_load_callback; 54 model_load_callback_ = model_load_callback;
53 if (state_ != NOT_RUNNING) { 55 if (state_ != NOT_RUNNING) {
54 model_load_callback.Run(type(), 56 model_load_callback.Run(
55 SyncError(FROM_HERE, SyncError::DATATYPE_ERROR, 57 type(), syncer::SyncError(FROM_HERE, syncer::SyncError::DATATYPE_ERROR,
56 "Model already loaded", type())); 58 "Model already loaded", type()));
57 return; 59 return;
58 } 60 }
59 // Since we can't be called multiple times before Stop() is called, 61 // Since we can't be called multiple times before Stop() is called,
60 // |shared_change_processor_| must be NULL here. 62 // |shared_change_processor_| must be NULL here.
61 DCHECK(!shared_change_processor_.get()); 63 DCHECK(!shared_change_processor_.get());
62 shared_change_processor_ = new SharedChangeProcessor(type()); 64 shared_change_processor_ = new SharedChangeProcessor(type());
63 65
64 state_ = MODEL_STARTING; 66 state_ = MODEL_STARTING;
65 if (!StartModels()) { 67 if (!StartModels()) {
66 // If we are waiting for some external service to load before associating 68 // If we are waiting for some external service to load before associating
67 // or we failed to start the models, we exit early. state_ will control 69 // or we failed to start the models, we exit early. state_ will control
68 // what we perform next. 70 // what we perform next.
69 DCHECK(state_ == NOT_RUNNING || state_ == MODEL_STARTING); 71 DCHECK(state_ == NOT_RUNNING || state_ == MODEL_STARTING);
70 return; 72 return;
71 } 73 }
72 74
73 state_ = MODEL_LOADED; 75 state_ = MODEL_LOADED;
74 model_load_callback_.Run(type(), SyncError()); 76 model_load_callback_.Run(type(), syncer::SyncError());
75 } 77 }
76 78
77 void UIDataTypeController::OnModelLoaded() { 79 void UIDataTypeController::OnModelLoaded() {
78 DCHECK(CalledOnValidThread()); 80 DCHECK(CalledOnValidThread());
79 DCHECK_EQ(state_, MODEL_STARTING); 81 DCHECK_EQ(state_, MODEL_STARTING);
80 82
81 state_ = MODEL_LOADED; 83 state_ = MODEL_LOADED;
82 model_load_callback_.Run(type(), SyncError()); 84 model_load_callback_.Run(type(), syncer::SyncError());
83 } 85 }
84 86
85 void UIDataTypeController::StartAssociating( 87 void UIDataTypeController::StartAssociating(
86 const StartCallback& start_callback) { 88 const StartCallback& start_callback) {
87 DCHECK(CalledOnValidThread()); 89 DCHECK(CalledOnValidThread());
88 DCHECK(!start_callback.is_null()); 90 DCHECK(!start_callback.is_null());
89 DCHECK_EQ(state_, MODEL_LOADED); 91 DCHECK_EQ(state_, MODEL_LOADED);
90 92
91 start_callback_ = start_callback; 93 start_callback_ = start_callback;
92 state_ = ASSOCIATING; 94 state_ = ASSOCIATING;
(...skipping 10 matching lines...) Expand all
103 } 105 }
104 106
105 void UIDataTypeController::Associate() { 107 void UIDataTypeController::Associate() {
106 DCHECK(CalledOnValidThread()); 108 DCHECK(CalledOnValidThread());
107 if (state_ != ASSOCIATING) { 109 if (state_ != ASSOCIATING) {
108 // Stop() must have been called while Associate() task have been waiting. 110 // Stop() must have been called while Associate() task have been waiting.
109 DCHECK_EQ(state_, NOT_RUNNING); 111 DCHECK_EQ(state_, NOT_RUNNING);
110 return; 112 return;
111 } 113 }
112 114
113 SyncMergeResult local_merge_result(type()); 115 syncer::SyncMergeResult local_merge_result(type());
114 SyncMergeResult syncer_merge_result(type()); 116 syncer::SyncMergeResult syncer_merge_result(type());
115 base::WeakPtrFactory<SyncMergeResult> weak_ptr_factory(&syncer_merge_result); 117 base::WeakPtrFactory<syncer::SyncMergeResult> weak_ptr_factory(
118 &syncer_merge_result);
116 119
117 // TODO(robliao): Remove ScopedTracker below once https://crbug.com/471403 is 120 // TODO(robliao): Remove ScopedTracker below once https://crbug.com/471403 is
118 // fixed. 121 // fixed.
119 tracked_objects::ScopedTracker tracking_profile1( 122 tracked_objects::ScopedTracker tracking_profile1(
120 FROM_HERE_WITH_EXPLICIT_FUNCTION( 123 FROM_HERE_WITH_EXPLICIT_FUNCTION(
121 "471403 UIDataTypeController::Associate1")); 124 "471403 UIDataTypeController::Associate1"));
122 125
123 // Connect |shared_change_processor_| to the syncer and get the 126 // Connect |shared_change_processor_| to the syncer and get the
124 // SyncableService associated with type(). 127 // syncer::SyncableService associated with type().
125 DCHECK(sync_client_->GetSyncService()); 128 DCHECK(sync_client_->GetSyncService());
126 local_service_ = shared_change_processor_->Connect( 129 local_service_ = shared_change_processor_->Connect(
127 sync_client_, processor_factory_.get(), 130 sync_client_, processor_factory_.get(),
128 sync_client_->GetSyncService()->GetUserShare(), CreateErrorHandler(), 131 sync_client_->GetSyncService()->GetUserShare(), CreateErrorHandler(),
129 weak_ptr_factory.GetWeakPtr()); 132 weak_ptr_factory.GetWeakPtr());
130 if (!local_service_.get()) { 133 if (!local_service_.get()) {
131 SyncError error(FROM_HERE, SyncError::DATATYPE_ERROR, 134 syncer::SyncError error(FROM_HERE, syncer::SyncError::DATATYPE_ERROR,
132 "Failed to connect to syncer.", type()); 135 "Failed to connect to syncer.", type());
133 local_merge_result.set_error(error); 136 local_merge_result.set_error(error);
134 StartDone(ASSOCIATION_FAILED, local_merge_result, syncer_merge_result); 137 StartDone(ASSOCIATION_FAILED, local_merge_result, syncer_merge_result);
135 return; 138 return;
136 } 139 }
137 140
138 // TODO(robliao): Remove ScopedTracker below once https://crbug.com/471403 is 141 // TODO(robliao): Remove ScopedTracker below once https://crbug.com/471403 is
139 // fixed. 142 // fixed.
140 tracked_objects::ScopedTracker tracking_profile2( 143 tracked_objects::ScopedTracker tracking_profile2(
141 FROM_HERE_WITH_EXPLICIT_FUNCTION( 144 FROM_HERE_WITH_EXPLICIT_FUNCTION(
142 "471403 UIDataTypeController::Associate2")); 145 "471403 UIDataTypeController::Associate2"));
143 if (!shared_change_processor_->CryptoReadyIfNecessary()) { 146 if (!shared_change_processor_->CryptoReadyIfNecessary()) {
144 SyncError error(FROM_HERE, SyncError::CRYPTO_ERROR, "", type()); 147 syncer::SyncError error(FROM_HERE, syncer::SyncError::CRYPTO_ERROR, "",
148 type());
145 local_merge_result.set_error(error); 149 local_merge_result.set_error(error);
146 StartDone(NEEDS_CRYPTO, local_merge_result, syncer_merge_result); 150 StartDone(NEEDS_CRYPTO, local_merge_result, syncer_merge_result);
147 return; 151 return;
148 } 152 }
149 153
150 // TODO(robliao): Remove ScopedTracker below once https://crbug.com/471403 is 154 // TODO(robliao): Remove ScopedTracker below once https://crbug.com/471403 is
151 // fixed. 155 // fixed.
152 tracked_objects::ScopedTracker tracking_profile3( 156 tracked_objects::ScopedTracker tracking_profile3(
153 FROM_HERE_WITH_EXPLICIT_FUNCTION( 157 FROM_HERE_WITH_EXPLICIT_FUNCTION(
154 "471403 UIDataTypeController::Associate3")); 158 "471403 UIDataTypeController::Associate3"));
155 bool sync_has_nodes = false; 159 bool sync_has_nodes = false;
156 if (!shared_change_processor_->SyncModelHasUserCreatedNodes( 160 if (!shared_change_processor_->SyncModelHasUserCreatedNodes(
157 &sync_has_nodes)) { 161 &sync_has_nodes)) {
158 SyncError error(FROM_HERE, SyncError::UNRECOVERABLE_ERROR, 162 syncer::SyncError error(FROM_HERE, syncer::SyncError::UNRECOVERABLE_ERROR,
159 "Failed to load sync nodes", type()); 163 "Failed to load sync nodes", type());
160 local_merge_result.set_error(error); 164 local_merge_result.set_error(error);
161 StartDone(UNRECOVERABLE_ERROR, local_merge_result, syncer_merge_result); 165 StartDone(UNRECOVERABLE_ERROR, local_merge_result, syncer_merge_result);
162 return; 166 return;
163 } 167 }
164 168
165 // Scope for |initial_sync_data| which might be expensive, so we don't want 169 // Scope for |initial_sync_data| which might be expensive, so we don't want
166 // to keep it in memory longer than necessary. 170 // to keep it in memory longer than necessary.
167 { 171 {
168 SyncDataList initial_sync_data; 172 syncer::SyncDataList initial_sync_data;
169 173
170 // TODO(robliao): Remove ScopedTracker below once https://crbug.com/471403 174 // TODO(robliao): Remove ScopedTracker below once https://crbug.com/471403
171 // is fixed. 175 // is fixed.
172 tracked_objects::ScopedTracker tracking_profile4( 176 tracked_objects::ScopedTracker tracking_profile4(
173 FROM_HERE_WITH_EXPLICIT_FUNCTION( 177 FROM_HERE_WITH_EXPLICIT_FUNCTION(
174 "471403 UIDataTypeController::Associate4")); 178 "471403 UIDataTypeController::Associate4"));
175 base::TimeTicks start_time = base::TimeTicks::Now(); 179 base::TimeTicks start_time = base::TimeTicks::Now();
176 SyncError error = shared_change_processor_->GetAllSyncDataReturnError( 180 syncer::SyncError error =
177 type(), &initial_sync_data); 181 shared_change_processor_->GetAllSyncDataReturnError(type(),
182 &initial_sync_data);
178 if (error.IsSet()) { 183 if (error.IsSet()) {
179 local_merge_result.set_error(error); 184 local_merge_result.set_error(error);
180 StartDone(ASSOCIATION_FAILED, local_merge_result, syncer_merge_result); 185 StartDone(ASSOCIATION_FAILED, local_merge_result, syncer_merge_result);
181 return; 186 return;
182 } 187 }
183 188
184 // TODO(robliao): Remove ScopedTracker below once https://crbug.com/471403 189 // TODO(robliao): Remove ScopedTracker below once https://crbug.com/471403
185 // is fixed. 190 // is fixed.
186 tracked_objects::ScopedTracker tracking_profile5( 191 tracked_objects::ScopedTracker tracking_profile5(
187 FROM_HERE_WITH_EXPLICIT_FUNCTION( 192 FROM_HERE_WITH_EXPLICIT_FUNCTION(
188 "471403 UIDataTypeController::Associate5")); 193 "471403 UIDataTypeController::Associate5"));
189 std::string datatype_context; 194 std::string datatype_context;
190 if (shared_change_processor_->GetDataTypeContext(&datatype_context)) { 195 if (shared_change_processor_->GetDataTypeContext(&datatype_context)) {
191 local_service_->UpdateDataTypeContext( 196 local_service_->UpdateDataTypeContext(
192 type(), SyncChangeProcessor::NO_REFRESH, datatype_context); 197 type(), syncer::SyncChangeProcessor::NO_REFRESH, datatype_context);
193 } 198 }
194 199
195 // TODO(robliao): Remove ScopedTracker below once https://crbug.com/471403 200 // TODO(robliao): Remove ScopedTracker below once https://crbug.com/471403
196 // is fixed. 201 // is fixed.
197 tracked_objects::ScopedTracker tracking_profile6( 202 tracked_objects::ScopedTracker tracking_profile6(
198 FROM_HERE_WITH_EXPLICIT_FUNCTION( 203 FROM_HERE_WITH_EXPLICIT_FUNCTION(
199 "471403 UIDataTypeController::Associate6")); 204 "471403 UIDataTypeController::Associate6"));
200 syncer_merge_result.set_num_items_before_association( 205 syncer_merge_result.set_num_items_before_association(
201 initial_sync_data.size()); 206 initial_sync_data.size());
202 // Passes a reference to |shared_change_processor_|. 207 // Passes a reference to |shared_change_processor_|.
203 local_merge_result = local_service_->MergeDataAndStartSyncing( 208 local_merge_result = local_service_->MergeDataAndStartSyncing(
204 type(), initial_sync_data, 209 type(), initial_sync_data,
205 std::unique_ptr<SyncChangeProcessor>( 210 std::unique_ptr<syncer::SyncChangeProcessor>(
206 new SharedChangeProcessorRef(shared_change_processor_)), 211 new SharedChangeProcessorRef(shared_change_processor_)),
207 std::unique_ptr<SyncErrorFactory>( 212 std::unique_ptr<syncer::SyncErrorFactory>(
208 new SharedChangeProcessorRef(shared_change_processor_))); 213 new SharedChangeProcessorRef(shared_change_processor_)));
209 RecordAssociationTime(base::TimeTicks::Now() - start_time); 214 RecordAssociationTime(base::TimeTicks::Now() - start_time);
210 if (local_merge_result.error().IsSet()) { 215 if (local_merge_result.error().IsSet()) {
211 StartDone(ASSOCIATION_FAILED, local_merge_result, syncer_merge_result); 216 StartDone(ASSOCIATION_FAILED, local_merge_result, syncer_merge_result);
212 return; 217 return;
213 } 218 }
214 } 219 }
215 220
216 // TODO(robliao): Remove ScopedTracker below once https://crbug.com/471403 is 221 // TODO(robliao): Remove ScopedTracker below once https://crbug.com/471403 is
217 // fixed. 222 // fixed.
(...skipping 21 matching lines...) Expand all
239 shared_change_processor_ = NULL; 244 shared_change_processor_ = NULL;
240 } 245 }
241 246
242 // We don't want to continue loading models (e.g OnModelLoaded should never be 247 // We don't want to continue loading models (e.g OnModelLoaded should never be
243 // called after we've decided to abort). 248 // called after we've decided to abort).
244 StopModels(); 249 StopModels();
245 } 250 }
246 251
247 void UIDataTypeController::StartDone( 252 void UIDataTypeController::StartDone(
248 ConfigureResult start_result, 253 ConfigureResult start_result,
249 const SyncMergeResult& local_merge_result, 254 const syncer::SyncMergeResult& local_merge_result,
250 const SyncMergeResult& syncer_merge_result) { 255 const syncer::SyncMergeResult& syncer_merge_result) {
251 DCHECK(CalledOnValidThread()); 256 DCHECK(CalledOnValidThread());
252 257
253 // TODO(robliao): Remove ScopedTracker below once https://crbug.com/471403 is 258 // TODO(robliao): Remove ScopedTracker below once https://crbug.com/471403 is
254 // fixed. 259 // fixed.
255 tracked_objects::ScopedTracker tracking_profile( 260 tracked_objects::ScopedTracker tracking_profile(
256 FROM_HERE_WITH_EXPLICIT_FUNCTION( 261 FROM_HERE_WITH_EXPLICIT_FUNCTION(
257 "471403 UIDataTypeController::StartDone")); 262 "471403 UIDataTypeController::StartDone"));
258 263
259 if (!IsSuccessfulResult(start_result)) { 264 if (!IsSuccessfulResult(start_result)) {
260 StopModels(); 265 StopModels();
261 if (start_result == ASSOCIATION_FAILED) { 266 if (start_result == ASSOCIATION_FAILED) {
262 state_ = DISABLED; 267 state_ = DISABLED;
263 } else { 268 } else {
264 state_ = NOT_RUNNING; 269 state_ = NOT_RUNNING;
265 } 270 }
266 RecordStartFailure(start_result); 271 RecordStartFailure(start_result);
267 272
268 if (shared_change_processor_.get()) { 273 if (shared_change_processor_.get()) {
269 shared_change_processor_->Disconnect(); 274 shared_change_processor_->Disconnect();
270 shared_change_processor_ = NULL; 275 shared_change_processor_ = NULL;
271 } 276 }
272 } 277 }
273 278
274 start_callback_.Run(start_result, local_merge_result, syncer_merge_result); 279 start_callback_.Run(start_result, local_merge_result, syncer_merge_result);
275 } 280 }
276 281
277 void UIDataTypeController::Stop() { 282 void UIDataTypeController::Stop() {
278 DCHECK(CalledOnValidThread()); 283 DCHECK(CalledOnValidThread());
279 DCHECK(IsRealDataType(type())); 284 DCHECK(syncer::IsRealDataType(type()));
280 285
281 if (state_ == NOT_RUNNING) 286 if (state_ == NOT_RUNNING)
282 return; 287 return;
283 288
284 State prev_state = state_; 289 State prev_state = state_;
285 state_ = STOPPING; 290 state_ = STOPPING;
286 291
287 if (shared_change_processor_.get()) { 292 if (shared_change_processor_.get()) {
288 shared_change_processor_->Disconnect(); 293 shared_change_processor_->Disconnect();
289 shared_change_processor_ = NULL; 294 shared_change_processor_ = NULL;
(...skipping 14 matching lines...) Expand all
304 local_service_->StopSyncing(type()); 309 local_service_->StopSyncing(type());
305 } 310 }
306 311
307 state_ = NOT_RUNNING; 312 state_ = NOT_RUNNING;
308 } 313 }
309 314
310 void UIDataTypeController::StopModels() { 315 void UIDataTypeController::StopModels() {
311 // Do nothing by default. 316 // Do nothing by default.
312 } 317 }
313 318
314 ModelSafeGroup UIDataTypeController::model_safe_group() const { 319 syncer::ModelSafeGroup UIDataTypeController::model_safe_group() const {
315 DCHECK(IsRealDataType(type())); 320 DCHECK(syncer::IsRealDataType(type()));
316 return GROUP_UI; 321 return syncer::GROUP_UI;
317 } 322 }
318 323
319 std::string UIDataTypeController::name() const { 324 std::string UIDataTypeController::name() const {
320 // For logging only. 325 // For logging only.
321 return ModelTypeToString(type()); 326 return syncer::ModelTypeToString(type());
322 } 327 }
323 328
324 DataTypeController::State UIDataTypeController::state() const { 329 DataTypeController::State UIDataTypeController::state() const {
325 return state_; 330 return state_;
326 } 331 }
327 332
328 std::unique_ptr<DataTypeErrorHandler> 333 std::unique_ptr<syncer::DataTypeErrorHandler>
329 UIDataTypeController::CreateErrorHandler() { 334 UIDataTypeController::CreateErrorHandler() {
330 DCHECK(CalledOnValidThread()); 335 DCHECK(CalledOnValidThread());
331 return base::MakeUnique<DataTypeErrorHandlerImpl>( 336 return base::MakeUnique<syncer::DataTypeErrorHandlerImpl>(
332 base::ThreadTaskRunnerHandle::Get(), dump_stack_, 337 base::ThreadTaskRunnerHandle::Get(), dump_stack_,
333 base::Bind(&UIDataTypeController::OnUnrecoverableError, 338 base::Bind(&UIDataTypeController::OnUnrecoverableError,
334 base::AsWeakPtr(this))); 339 base::AsWeakPtr(this)));
335 } 340 }
336 341
337 void UIDataTypeController::OnUnrecoverableError(const SyncError& error) { 342 void UIDataTypeController::OnUnrecoverableError(
343 const syncer::SyncError& error) {
338 DCHECK(CalledOnValidThread()); 344 DCHECK(CalledOnValidThread());
339 DCHECK_EQ(type(), error.model_type()); 345 DCHECK_EQ(type(), error.model_type());
340 if (!model_load_callback_.is_null()) { 346 if (!model_load_callback_.is_null()) {
341 model_load_callback_.Run(type(), error); 347 model_load_callback_.Run(type(), error);
342 } 348 }
343 } 349 }
344 350
345 void UIDataTypeController::RecordAssociationTime(base::TimeDelta time) { 351 void UIDataTypeController::RecordAssociationTime(base::TimeDelta time) {
346 DCHECK(CalledOnValidThread()); 352 DCHECK(CalledOnValidThread());
347 #define PER_DATA_TYPE_MACRO(type_str) \ 353 #define PER_DATA_TYPE_MACRO(type_str) \
348 UMA_HISTOGRAM_TIMES("Sync." type_str "AssociationTime", time); 354 UMA_HISTOGRAM_TIMES("Sync." type_str "AssociationTime", time);
349 SYNC_DATA_TYPE_HISTOGRAM(type()); 355 SYNC_DATA_TYPE_HISTOGRAM(type());
350 #undef PER_DATA_TYPE_MACRO 356 #undef PER_DATA_TYPE_MACRO
351 } 357 }
352 358
353 void UIDataTypeController::RecordStartFailure(ConfigureResult result) { 359 void UIDataTypeController::RecordStartFailure(ConfigureResult result) {
354 DCHECK(CalledOnValidThread()); 360 DCHECK(CalledOnValidThread());
355 UMA_HISTOGRAM_ENUMERATION("Sync.DataTypeStartFailures", 361 UMA_HISTOGRAM_ENUMERATION("Sync.DataTypeStartFailures",
356 ModelTypeToHistogramInt(type()), MODEL_TYPE_COUNT); 362 ModelTypeToHistogramInt(type()),
363 syncer::MODEL_TYPE_COUNT);
357 #define PER_DATA_TYPE_MACRO(type_str) \ 364 #define PER_DATA_TYPE_MACRO(type_str) \
358 UMA_HISTOGRAM_ENUMERATION("Sync." type_str "ConfigureFailure", result, \ 365 UMA_HISTOGRAM_ENUMERATION("Sync." type_str "ConfigureFailure", result, \
359 MAX_CONFIGURE_RESULT); 366 MAX_CONFIGURE_RESULT);
360 SYNC_DATA_TYPE_HISTOGRAM(type()); 367 SYNC_DATA_TYPE_HISTOGRAM(type());
361 #undef PER_DATA_TYPE_MACRO 368 #undef PER_DATA_TYPE_MACRO
362 } 369 }
363 370
364 } // namespace syncer 371 } // namespace sync_driver
OLDNEW
« no previous file with comments | « components/sync/driver/ui_data_type_controller.h ('k') | components/sync/driver/ui_data_type_controller_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698