Index: base/prefs/pref_member.cc |
diff --git a/base/prefs/pref_member.cc b/base/prefs/pref_member.cc |
index 4fa616f4fb612bb8bc3c6338d39a7f60a3033700..1983b1f754de17632252a5a584c12c982a6b97fb 100644 |
--- a/base/prefs/pref_member.cc |
+++ b/base/prefs/pref_member.cc |
@@ -9,11 +9,11 @@ |
#include "base/location.h" |
#include "base/message_loop/message_loop_proxy.h" |
#include "base/prefs/pref_service.h" |
+#include "base/sequenced_task_runner.h" |
+#include "base/single_thread_task_runner.h" |
+#include "base/thread_task_runner_handle.h" |
#include "base/value_conversions.h" |
-using base::MessageLoopProxy; |
-using base::SingleThreadTaskRunner; |
- |
namespace subtle { |
PrefMemberBase::PrefMemberBase() |
@@ -54,13 +54,13 @@ void PrefMemberBase::Destroy() { |
} |
} |
-void PrefMemberBase::MoveToThread( |
- const scoped_refptr<SingleThreadTaskRunner>& task_runner) { |
+void PrefMemberBase::UseAlternateTaskRunner( |
+ const scoped_refptr<base::SingleThreadTaskRunner>& task_runner) { |
VerifyValuePrefName(); |
// Load the value from preferences if it hasn't been loaded so far. |
if (!internal()) |
UpdateValueFromPref(base::Closure()); |
- internal()->MoveToThread(task_runner); |
+ internal()->UseAlternateTaskRunner(task_runner); |
} |
void PrefMemberBase::OnPreferenceChanged(PrefService* service, |
@@ -95,15 +95,17 @@ void PrefMemberBase::InvokeUnnamedCallback(const base::Closure& callback, |
} |
PrefMemberBase::Internal::Internal() |
- : thread_loop_(MessageLoopProxy::current()), |
- is_managed_(false), |
- is_user_modifiable_(false) { |
+ : is_managed_(false), is_user_modifiable_(false) { |
+ // In unit tests, there may not be a message loop. |
+ if (base::ThreadTaskRunnerHandle::IsSet()) |
+ task_runner_ = base::ThreadTaskRunnerHandle::Get(); |
} |
PrefMemberBase::Internal::~Internal() { } |
bool PrefMemberBase::Internal::IsOnCorrectThread() const { |
// In unit tests, there may not be a message loop. |
- return thread_loop_.get() == NULL || thread_loop_->BelongsToCurrentThread(); |
+ return task_runner_.get() == NULL || |
+ task_runner_->RunsTasksOnCurrentThread(); |
} |
void PrefMemberBase::Internal::UpdateValue( |
@@ -119,19 +121,22 @@ void PrefMemberBase::Internal::UpdateValue( |
is_managed_ = is_managed; |
is_user_modifiable_ = is_user_modifiable; |
} else { |
- bool may_run = thread_loop_->PostTask( |
+ bool may_run = task_runner_->PostTask( |
FROM_HERE, |
- base::Bind(&PrefMemberBase::Internal::UpdateValue, this, |
- value.release(), is_managed, is_user_modifiable, |
+ base::Bind(&PrefMemberBase::Internal::UpdateValue, |
+ this, |
+ value.release(), |
+ is_managed, |
+ is_user_modifiable, |
closure_runner.Release())); |
DCHECK(may_run); |
} |
} |
-void PrefMemberBase::Internal::MoveToThread( |
- const scoped_refptr<SingleThreadTaskRunner>& task_runner) { |
+void PrefMemberBase::Internal::UseAlternateTaskRunner( |
+ const scoped_refptr<base::SingleThreadTaskRunner>& task_runner) { |
CheckOnCorrectThread(); |
- thread_loop_ = task_runner; |
+ task_runner_ = task_runner; |
} |
bool PrefMemberVectorStringUpdate(const base::Value& value, |