| 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();
|
|
|
|
|