1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 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/glue/password_model_worker.h" 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 7c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/callback.h" 8ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/memory/ref_counted.h" 9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/task.h" 103f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen#include "base/synchronization/waitable_event.h" 11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/password_manager/password_store.h" 12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochusing base::WaitableEvent; 14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace browser_sync { 16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 17c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochPasswordModelWorker::PasswordModelWorker(PasswordStore* password_store) 18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch : password_store_(password_store) { 193345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick DCHECK(password_store); 20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 22513209b27ff55e2841eac0e4120199c23acce758Ben MurdochPasswordModelWorker::~PasswordModelWorker() {} 23513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid PasswordModelWorker::DoWorkAndWaitUntilDone(Callback0::Type* work) { 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch WaitableEvent done(false, false); 26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch password_store_->ScheduleTask( 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch NewRunnableMethod(this, &PasswordModelWorker::CallDoWorkAndSignalTask, 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch work, &done)); 29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch done.Wait(); 30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid PasswordModelWorker::CallDoWorkAndSignalTask(Callback0::Type* work, 33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch WaitableEvent* done) { 34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch work->Run(); 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch done->Signal(); 36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 3821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian MonsenModelSafeGroup PasswordModelWorker::GetModelSafeGroup() { 3921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen return GROUP_PASSWORD; 4021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen} 4121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochbool PasswordModelWorker::CurrentThreadIsWorkThread() { 43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // TODO(ncarter): How to determine this? 44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return true; 45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} // namespace browser_sync 48