1c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Copyright (c) 2010 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/sync/engine/model_changing_syncer_command.h" 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 7c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/callback.h" 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/sync/engine/model_safe_worker.h" 9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/sync/sessions/status_controller.h" 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/sync/sessions/sync_session.h" 11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace browser_sync { 13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid ModelChangingSyncerCommand::ExecuteImpl(sessions::SyncSession* session) { 15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch work_session_ = session; 16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if (!ModelNeutralExecuteImpl(work_session_)) { 17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return; 18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch for (size_t i = 0; i < session->workers().size(); ++i) { 21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ModelSafeWorker* worker = session->workers()[i]; 22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ModelSafeGroup group = worker->GetModelSafeGroup(); 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch sessions::StatusController* status = work_session_->status_controller(); 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch sessions::ScopedModelSafeGroupRestriction r(status, group); 26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_ptr<Callback0::Type> c(NewCallback(this, 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch &ModelChangingSyncerCommand::StartChangingModel)); 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch worker->DoWorkAndWaitUntilDone(c.get()); 29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 3221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenbool ModelChangingSyncerCommand::ModelNeutralExecuteImpl( 3321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen sessions::SyncSession* session) { 3421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen return true; 3521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen} 3621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} // namespace browser_sync 38