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

Unified Diff: components/password_manager/sync/browser/password_model_worker.cc

Issue 2782573002: [Sync] Refactor ModelSafeWorker::DoWorkAndWaitUntilDone() to avoid code duplication. (Closed)
Patch Set: self-review Created 3 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
« no previous file with comments | « components/password_manager/sync/browser/password_model_worker.h ('k') | components/sync/BUILD.gn » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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();
« no previous file with comments | « components/password_manager/sync/browser/password_model_worker.h ('k') | components/sync/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698