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

Unified Diff: sync/internal_api/public/engine/model_safe_worker.cc

Issue 2083713002: Remove calls to MessageLoop::current() in sync. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: self-review Created 4 years, 6 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 | « sync/internal_api/public/engine/model_safe_worker.h ('k') | sync/internal_api/public/http_bridge.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sync/internal_api/public/engine/model_safe_worker.cc
diff --git a/sync/internal_api/public/engine/model_safe_worker.cc b/sync/internal_api/public/engine/model_safe_worker.cc
index 3c96a2755225a7725ab1e41784139f2e2c362c81..80319551e2328972bcaf0f8698997be5cb2060b3 100644
--- a/sync/internal_api/public/engine/model_safe_worker.cc
+++ b/sync/internal_api/public/engine/model_safe_worker.cc
@@ -8,6 +8,7 @@
#include "base/bind.h"
#include "base/json/json_writer.h"
+#include "base/threading/thread_task_runner_handle.h"
#include "base/values.h"
namespace syncer {
@@ -76,8 +77,7 @@ ModelSafeWorker::ModelSafeWorker(WorkerLoopDestructionObserver* observer)
: stopped_(false),
work_done_or_stopped_(base::WaitableEvent::ResetPolicy::AUTOMATIC,
base::WaitableEvent::InitialState::NOT_SIGNALED),
- observer_(observer),
- working_loop_(NULL) {}
+ observer_(observer) {}
ModelSafeWorker::~ModelSafeWorker() {}
@@ -125,8 +125,8 @@ void ModelSafeWorker::WillDestroyCurrentMessageLoop() {
}
{
- base::AutoLock l(working_loop_lock_);
- working_loop_ = NULL;
+ base::AutoLock l(working_task_runner_lock_);
+ working_task_runner_ = NULL;
}
if (observer_)
@@ -137,13 +137,13 @@ void ModelSafeWorker::SetWorkingLoopToCurrent() {
base::Callback<void(ModelSafeGroup)> unregister_done_callback;
{
- base::AutoLock l(working_loop_lock_);
- DCHECK(!working_loop_);
+ base::AutoLock l(working_task_runner_lock_);
+ DCHECK(!working_task_runner_);
if (unregister_done_callback_.is_null()) {
// Expected case - UnregisterForLoopDestruction hasn't been called yet.
base::MessageLoop::current()->AddDestructionObserver(this);
- working_loop_ = base::MessageLoop::current();
+ working_task_runner_ = base::ThreadTaskRunnerHandle::Get();
} else {
// Rare case which is possible when the model type thread remains
// blocked for the entire session and UnregisterForLoopDestruction ends
@@ -165,16 +165,15 @@ void ModelSafeWorker::SetWorkingLoopToCurrent() {
void ModelSafeWorker::UnregisterForLoopDestruction(
base::Callback<void(ModelSafeGroup)> unregister_done_callback) {
- base::AutoLock l(working_loop_lock_);
- if (working_loop_ != NULL) {
+ base::AutoLock l(working_task_runner_lock_);
+ if (working_task_runner_) {
// Normal case - observer registration has been already done.
// Delegate to the sync thread to do the actual unregistration in
// UnregisterForLoopDestructionAsync.
- DCHECK_NE(base::MessageLoop::current(), working_loop_);
- working_loop_->PostTask(
+ DCHECK(!working_task_runner_->BelongsToCurrentThread());
+ working_task_runner_->PostTask(
FROM_HERE,
- base::Bind(&ModelSafeWorker::UnregisterForLoopDestructionAsync,
- this,
+ base::Bind(&ModelSafeWorker::UnregisterForLoopDestructionAsync, this,
unregister_done_callback));
} else {
// The working loop is still unknown, probably because the model type
@@ -187,10 +186,10 @@ void ModelSafeWorker::UnregisterForLoopDestruction(
void ModelSafeWorker::UnregisterForLoopDestructionAsync(
base::Callback<void(ModelSafeGroup)> unregister_done_callback) {
{
- base::AutoLock l(working_loop_lock_);
- if (!working_loop_)
+ base::AutoLock l(working_task_runner_lock_);
+ if (!working_task_runner_)
return;
- DCHECK_EQ(base::MessageLoop::current(), working_loop_);
+ DCHECK(working_task_runner_->BelongsToCurrentThread());
}
DCHECK(stopped_);
« no previous file with comments | « sync/internal_api/public/engine/model_safe_worker.h ('k') | sync/internal_api/public/http_bridge.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698