| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "chrome/browser/sync/glue/model_association_manager.h" | 5 #include "chrome/browser/sync/glue/model_association_manager.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <functional> | 8 #include <functional> |
| 9 | 9 |
| 10 #include "base/debug/trace_event.h" | 10 #include "base/debug/trace_event.h" |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 173 GetControllersNeedingStart(&needs_start_); | 173 GetControllersNeedingStart(&needs_start_); |
| 174 // Sort these according to kStartOrder. | 174 // Sort these according to kStartOrder. |
| 175 std::sort(needs_start_.begin(), | 175 std::sort(needs_start_.begin(), |
| 176 needs_start_.end(), | 176 needs_start_.end(), |
| 177 SortComparator(&start_order_)); | 177 SortComparator(&start_order_)); |
| 178 | 178 |
| 179 // Add any data type controllers into that needs_stop_ list that are | 179 // Add any data type controllers into that needs_stop_ list that are |
| 180 // currently MODEL_STARTING, ASSOCIATING, RUNNING or DISABLED. | 180 // currently MODEL_STARTING, ASSOCIATING, RUNNING or DISABLED. |
| 181 for (DataTypeController::TypeMap::const_iterator it = controllers_->begin(); | 181 for (DataTypeController::TypeMap::const_iterator it = controllers_->begin(); |
| 182 it != controllers_->end(); ++it) { | 182 it != controllers_->end(); ++it) { |
| 183 DataTypeController* dtc = (*it).second; | 183 DataTypeController* dtc = (*it).second.get(); |
| 184 if (!desired_types.Has(dtc->type()) && ( | 184 if (!desired_types.Has(dtc->type()) && |
| 185 dtc->state() == DataTypeController::MODEL_STARTING || | 185 (dtc->state() == DataTypeController::MODEL_STARTING || |
| 186 dtc->state() == DataTypeController::ASSOCIATING || | 186 dtc->state() == DataTypeController::ASSOCIATING || |
| 187 dtc->state() == DataTypeController::RUNNING || | 187 dtc->state() == DataTypeController::RUNNING || |
| 188 dtc->state() == DataTypeController::DISABLED)) { | 188 dtc->state() == DataTypeController::DISABLED)) { |
| 189 needs_stop_.push_back(dtc); | 189 needs_stop_.push_back(dtc); |
| 190 DVLOG(1) << "ModelTypeToString: Will stop " << dtc->name(); | 190 DVLOG(1) << "ModelTypeToString: Will stop " << dtc->name(); |
| 191 } | 191 } |
| 192 } | 192 } |
| 193 // Sort these according to kStartOrder. | 193 // Sort these according to kStartOrder. |
| 194 std::sort(needs_stop_.begin(), | 194 std::sort(needs_stop_.begin(), |
| 195 needs_stop_.end(), | 195 needs_stop_.end(), |
| 196 SortComparator(&start_order_)); | 196 SortComparator(&start_order_)); |
| 197 } | 197 } |
| 198 | 198 |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 258 // We are in the midle of model association. We need to inform the caller | 258 // We are in the midle of model association. We need to inform the caller |
| 259 // so the caller can send notificationst to PSS layer. | 259 // so the caller can send notificationst to PSS layer. |
| 260 need_to_call_model_association_done = true; | 260 need_to_call_model_association_done = true; |
| 261 } | 261 } |
| 262 | 262 |
| 263 // Now continue stopping any types that have already started. | 263 // Now continue stopping any types that have already started. |
| 264 DCHECK(state_ == IDLE || | 264 DCHECK(state_ == IDLE || |
| 265 state_ == INITIALIZED_TO_CONFIGURE); | 265 state_ == INITIALIZED_TO_CONFIGURE); |
| 266 for (DataTypeController::TypeMap::const_iterator it = controllers_->begin(); | 266 for (DataTypeController::TypeMap::const_iterator it = controllers_->begin(); |
| 267 it != controllers_->end(); ++it) { | 267 it != controllers_->end(); ++it) { |
| 268 DataTypeController* dtc = (*it).second; | 268 DataTypeController* dtc = (*it).second.get(); |
| 269 if (dtc->state() != DataTypeController::NOT_RUNNING && | 269 if (dtc->state() != DataTypeController::NOT_RUNNING && |
| 270 dtc->state() != DataTypeController::STOPPING) { | 270 dtc->state() != DataTypeController::STOPPING) { |
| 271 dtc->Stop(); | 271 dtc->Stop(); |
| 272 DVLOG(1) << "ModelAssociationManager: Stopped " << dtc->name(); | 272 DVLOG(1) << "ModelAssociationManager: Stopped " << dtc->name(); |
| 273 } | 273 } |
| 274 } | 274 } |
| 275 | 275 |
| 276 if (need_to_call_model_association_done) { | 276 if (need_to_call_model_association_done) { |
| 277 DVLOG(1) << "ModelAssociationManager: Calling OnModelAssociationDone"; | 277 DVLOG(1) << "ModelAssociationManager: Calling OnModelAssociationDone"; |
| 278 DataTypeManager::ConfigureResult result(DataTypeManager::ABORTED, | 278 DataTypeManager::ConfigureResult result(DataTypeManager::ABORTED, |
| (...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 580 } | 580 } |
| 581 return result; | 581 return result; |
| 582 } | 582 } |
| 583 | 583 |
| 584 base::OneShotTimer<ModelAssociationManager>* | 584 base::OneShotTimer<ModelAssociationManager>* |
| 585 ModelAssociationManager::GetTimerForTesting() { | 585 ModelAssociationManager::GetTimerForTesting() { |
| 586 return &timer_; | 586 return &timer_; |
| 587 } | 587 } |
| 588 | 588 |
| 589 } // namespace browser_sync | 589 } // namespace browser_sync |
| OLD | NEW |