OLD | NEW |
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/non_blocking_data_type_controller.h" | 5 #include "components/sync_driver/non_blocking_data_type_controller.h" |
6 | 6 |
| 7 #include <utility> |
| 8 |
7 #include "base/bind.h" | 9 #include "base/bind.h" |
8 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
9 #include "base/location.h" | 11 #include "base/location.h" |
10 #include "base/single_thread_task_runner.h" | 12 #include "base/single_thread_task_runner.h" |
11 #include "components/sync_driver/backend_data_type_configurer.h" | 13 #include "components/sync_driver/backend_data_type_configurer.h" |
12 #include "components/sync_driver/sync_client.h" | 14 #include "components/sync_driver/sync_client.h" |
13 #include "sync/api/sync_error.h" | 15 #include "sync/api/sync_error.h" |
14 #include "sync/api/sync_merge_result.h" | 16 #include "sync/api/sync_merge_result.h" |
15 #include "sync/internal_api/public/activation_context.h" | 17 #include "sync/internal_api/public/activation_context.h" |
16 #include "sync/internal_api/public/shared_model_type_processor.h" | 18 #include "sync/internal_api/public/shared_model_type_processor.h" |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
81 model_load_callback_.Run(type(), error); | 83 model_load_callback_.Run(type(), error); |
82 } | 84 } |
83 } | 85 } |
84 | 86 |
85 void NonBlockingDataTypeController::OnProcessorStarted( | 87 void NonBlockingDataTypeController::OnProcessorStarted( |
86 syncer::SyncError error, | 88 syncer::SyncError error, |
87 scoped_ptr<syncer_v2::ActivationContext> activation_context) { | 89 scoped_ptr<syncer_v2::ActivationContext> activation_context) { |
88 if (BelongsToUIThread()) { | 90 if (BelongsToUIThread()) { |
89 // Hold on to the activation context until ActivateDataType is called. | 91 // Hold on to the activation context until ActivateDataType is called. |
90 if (state_ == MODEL_STARTING) { | 92 if (state_ == MODEL_STARTING) { |
91 activation_context_ = activation_context.Pass(); | 93 activation_context_ = std::move(activation_context); |
92 } | 94 } |
93 // TODO(stanisc): Figure out if UNRECOVERABLE_ERROR is OK in this case. | 95 // TODO(stanisc): Figure out if UNRECOVERABLE_ERROR is OK in this case. |
94 ConfigureResult result = error.IsSet() ? UNRECOVERABLE_ERROR : OK; | 96 ConfigureResult result = error.IsSet() ? UNRECOVERABLE_ERROR : OK; |
95 LoadModelsDone(result, error); | 97 LoadModelsDone(result, error); |
96 } else { | 98 } else { |
97 RunOnUIThread( | 99 RunOnUIThread( |
98 FROM_HERE, | 100 FROM_HERE, |
99 base::Bind(&NonBlockingDataTypeController::OnProcessorStarted, this, | 101 base::Bind(&NonBlockingDataTypeController::OnProcessorStarted, this, |
100 error, base::Passed(activation_context.Pass()))); | 102 error, base::Passed(std::move(activation_context)))); |
101 } | 103 } |
102 } | 104 } |
103 | 105 |
104 void NonBlockingDataTypeController::StartAssociating( | 106 void NonBlockingDataTypeController::StartAssociating( |
105 const StartCallback& start_callback) { | 107 const StartCallback& start_callback) { |
106 DCHECK(BelongsToUIThread()); | 108 DCHECK(BelongsToUIThread()); |
107 DCHECK(!start_callback.is_null()); | 109 DCHECK(!start_callback.is_null()); |
108 | 110 |
109 state_ = RUNNING; | 111 state_ = RUNNING; |
110 | 112 |
111 // There is no association, just call back promptly. | 113 // There is no association, just call back promptly. |
112 syncer::SyncMergeResult merge_result(type()); | 114 syncer::SyncMergeResult merge_result(type()); |
113 start_callback.Run(OK, merge_result, merge_result); | 115 start_callback.Run(OK, merge_result, merge_result); |
114 } | 116 } |
115 | 117 |
116 void NonBlockingDataTypeController::ActivateDataType( | 118 void NonBlockingDataTypeController::ActivateDataType( |
117 sync_driver::BackendDataTypeConfigurer* configurer) { | 119 sync_driver::BackendDataTypeConfigurer* configurer) { |
118 DCHECK(BelongsToUIThread()); | 120 DCHECK(BelongsToUIThread()); |
119 DCHECK(configurer); | 121 DCHECK(configurer); |
120 DCHECK(activation_context_); | 122 DCHECK(activation_context_); |
121 DCHECK_EQ(RUNNING, state_); | 123 DCHECK_EQ(RUNNING, state_); |
122 configurer->ActivateNonBlockingDataType(type(), activation_context_.Pass()); | 124 configurer->ActivateNonBlockingDataType(type(), |
| 125 std::move(activation_context_)); |
123 } | 126 } |
124 | 127 |
125 void NonBlockingDataTypeController::DeactivateDataType( | 128 void NonBlockingDataTypeController::DeactivateDataType( |
126 sync_driver::BackendDataTypeConfigurer* configurer) { | 129 sync_driver::BackendDataTypeConfigurer* configurer) { |
127 DCHECK(BelongsToUIThread()); | 130 DCHECK(BelongsToUIThread()); |
128 DCHECK(configurer); | 131 DCHECK(configurer); |
129 configurer->DeactivateNonBlockingDataType(type()); | 132 configurer->DeactivateNonBlockingDataType(type()); |
130 } | 133 } |
131 | 134 |
132 void NonBlockingDataTypeController::Stop() { | 135 void NonBlockingDataTypeController::Stop() { |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
202 #undef PER_DATA_TYPE_MACRO | 205 #undef PER_DATA_TYPE_MACRO |
203 } | 206 } |
204 | 207 |
205 void NonBlockingDataTypeController::RecordUnrecoverableError() { | 208 void NonBlockingDataTypeController::RecordUnrecoverableError() { |
206 UMA_HISTOGRAM_ENUMERATION("Sync.DataTypeRunFailures", | 209 UMA_HISTOGRAM_ENUMERATION("Sync.DataTypeRunFailures", |
207 ModelTypeToHistogramInt(type()), | 210 ModelTypeToHistogramInt(type()), |
208 syncer::MODEL_TYPE_COUNT); | 211 syncer::MODEL_TYPE_COUNT); |
209 } | 212 } |
210 | 213 |
211 } // namespace sync_driver_v2 | 214 } // namespace sync_driver_v2 |
OLD | NEW |