Index: components/sync/engine/browser_thread_model_worker.cc |
diff --git a/components/sync/engine/browser_thread_model_worker.cc b/components/sync/engine/browser_thread_model_worker.cc |
index 3b29d8505a09387f3950b52bc29fc0ca81b87f1c..a6d92c54d56cd14e69c57e83083991bed7815162 100644 |
--- a/components/sync/engine/browser_thread_model_worker.cc |
+++ b/components/sync/engine/browser_thread_model_worker.cc |
@@ -4,45 +4,22 @@ |
#include "components/sync/engine/browser_thread_model_worker.h" |
-#include "base/bind.h" |
-#include "base/callback.h" |
-#include "base/synchronization/waitable_event.h" |
- |
-using base::SingleThreadTaskRunner; |
+#include <utility> |
namespace syncer { |
BrowserThreadModelWorker::BrowserThreadModelWorker( |
- const scoped_refptr<SingleThreadTaskRunner>& runner, |
+ const scoped_refptr<base::SingleThreadTaskRunner>& runner, |
ModelSafeGroup group) |
: runner_(runner), group_(group) {} |
-SyncerError BrowserThreadModelWorker::DoWorkAndWaitUntilDoneImpl( |
- const WorkCallback& work) { |
- SyncerError error = UNSET; |
+void BrowserThreadModelWorker::ScheduleWork(base::OnceClosure work) { |
if (runner_->BelongsToCurrentThread()) { |
DLOG(WARNING) << "Already on thread " << runner_; |
- return work.Run(); |
- } |
- |
- // 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); |
- |
- if (!runner_->PostTask( |
- FROM_HERE, |
- base::Bind( |
- &BrowserThreadModelWorker::CallDoWorkAndSignalTask, this, work, |
- base::Passed(syncer::ScopedEventSignal(&work_done_or_abandoned)), |
- &error))) { |
- DLOG(WARNING) << "Failed to post task to runner " << runner_; |
- error = CANNOT_DO_WORK; |
- return error; |
+ std::move(work).Run(); |
+ } else { |
+ runner_->PostTask(FROM_HERE, std::move(work)); |
} |
- work_done_or_abandoned.Wait(); |
- return error; |
} |
ModelSafeGroup BrowserThreadModelWorker::GetModelSafeGroup() { |
@@ -55,14 +32,4 @@ bool BrowserThreadModelWorker::IsOnModelThread() { |
BrowserThreadModelWorker::~BrowserThreadModelWorker() {} |
-void BrowserThreadModelWorker::CallDoWorkAndSignalTask( |
- const WorkCallback& work, |
- syncer::ScopedEventSignal scoped_event_signal, |
- SyncerError* error) { |
- DCHECK(runner_->BelongsToCurrentThread()); |
- if (!IsStopped()) |
- *error = work.Run(); |
- // The event in |scoped_event_signal| is signaled at the end of this scope. |
-} |
- |
} // namespace syncer |