Index: components/password_manager/sync/browser/password_model_worker.cc |
diff --git a/components/password_manager/sync/browser/password_model_worker.cc b/components/password_manager/sync/browser/password_model_worker.cc |
index 81fb889b3b53dfbbfb756cde2a379247fd2e608d..997a0b1cbe17168918e95fd2ef162f0713295dbd 100644 |
--- a/components/password_manager/sync/browser/password_model_worker.cc |
+++ b/components/password_manager/sync/browser/password_model_worker.cc |
@@ -4,60 +4,18 @@ |
#include "components/password_manager/sync/browser/password_model_worker.h" |
-#include "base/bind.h" |
-#include "base/callback.h" |
-#include "base/synchronization/waitable_event.h" |
+#include <utility> |
+ |
#include "components/password_manager/core/browser/password_store.h" |
-#include "components/sync/base/scoped_event_signal.h" |
namespace browser_sync { |
-namespace { |
- |
-void CallDoWorkAndSignalEvent(const syncer::WorkCallback& work, |
- syncer::ScopedEventSignal scoped_event_signal, |
- syncer::SyncerError* error_info) { |
- *error_info = work.Run(); |
- // The event in |scoped_event_signal| is signaled at the end of this scope. |
-} |
- |
-} // namespace |
- |
PasswordModelWorker::PasswordModelWorker( |
const scoped_refptr<password_manager::PasswordStore>& password_store) |
: password_store_(password_store) { |
DCHECK(password_store.get()); |
} |
-syncer::SyncerError PasswordModelWorker::DoWorkAndWaitUntilDoneImpl( |
- const syncer::WorkCallback& work) { |
- syncer::SyncerError error = syncer::UNSET; |
- |
- // Signaled when the task is deleted, i.e. after it runs or when it is |
- // abandoned. |
- base::WaitableEvent work_done_or_abandoned( |
- base::WaitableEvent::ResetPolicy::AUTOMATIC, |
- base::WaitableEvent::InitialState::NOT_SIGNALED); |
- |
- bool scheduled = false; |
- { |
- base::AutoLock lock(password_store_lock_); |
- if (!password_store_.get()) |
- return syncer::CANNOT_DO_WORK; |
- |
- scheduled = password_store_->ScheduleTask(base::Bind( |
- &CallDoWorkAndSignalEvent, work, |
- base::Passed(syncer::ScopedEventSignal(&work_done_or_abandoned)), |
- &error)); |
- } |
- |
- if (scheduled) |
- work_done_or_abandoned.Wait(); |
- else |
- error = syncer::CANNOT_DO_WORK; |
- return error; |
-} |
- |
syncer::ModelSafeGroup PasswordModelWorker::GetModelSafeGroup() { |
return syncer::GROUP_PASSWORD; |
} |
@@ -71,6 +29,15 @@ bool PasswordModelWorker::IsOnModelThread() { |
PasswordModelWorker::~PasswordModelWorker() {} |
+void PasswordModelWorker::ScheduleWork(base::OnceClosure work) { |
+ base::AutoLock lock(password_store_lock_); |
+ if (password_store_) { |
+ password_store_->ScheduleTask( |
+ base::Bind([](base::OnceClosure work) { std::move(work).Run(); }, |
+ base::Passed(std::move(work)))); |
+ } |
+} |
+ |
void PasswordModelWorker::RequestStop() { |
ModelSafeWorker::RequestStop(); |