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

Unified Diff: chrome/browser/sync/glue/password_model_worker.cc

Issue 14046031: Worker changes to prepare for lock-free shutdown. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/sync/glue/password_model_worker.cc
diff --git a/chrome/browser/sync/glue/password_model_worker.cc b/chrome/browser/sync/glue/password_model_worker.cc
index d4d71b89e8b1470d14c22f9734e211682bbb1d7a..559f48d58307098cce2356b110c9f64ca0684046 100644
--- a/chrome/browser/sync/glue/password_model_worker.cc
+++ b/chrome/browser/sync/glue/password_model_worker.cc
@@ -14,19 +14,26 @@ using base::WaitableEvent;
namespace browser_sync {
PasswordModelWorker::PasswordModelWorker(
- const scoped_refptr<PasswordStore>& password_store)
- : password_store_(password_store) {
+ const scoped_refptr<PasswordStore>& password_store,
+ syncer::WorkerObserver* observer)
+ : syncer::ModelSafeWorker(observer),
+ password_store_(password_store) {
DCHECK(password_store);
}
+void PasswordModelWorker::RegisterForLoopDestruction() {
+ password_store_->ScheduleTask(
+ base::Bind(&PasswordModelWorker::RegisterForPasswordLoopDestruction,
+ this));
+}
+
syncer::SyncerError PasswordModelWorker::DoWorkAndWaitUntilDone(
- const syncer::WorkCallback& work) {
- WaitableEvent done(false, false);
+ const syncer::WorkCallback& work, WaitableEvent* done) {
syncer::SyncerError error = syncer::UNSET;
if (password_store_->ScheduleTask(
base::Bind(&PasswordModelWorker::CallDoWorkAndSignalTask,
- this, work, &done, &error))) {
- done.Wait();
+ this, work, done, &error))) {
+ done->Wait();
} else {
error = syncer::CANNOT_DO_WORK;
}
@@ -47,4 +54,8 @@ void PasswordModelWorker::CallDoWorkAndSignalTask(
done->Signal();
}
+void PasswordModelWorker::RegisterForPasswordLoopDestruction() {
+ MessageLoop::current()->AddDestructionObserver(this);
+}
+
} // namespace browser_sync

Powered by Google App Engine
This is Rietveld 408576698