| Index: chrome/common/json_pref_store.cc
|
| diff --git a/chrome/common/json_pref_store.cc b/chrome/common/json_pref_store.cc
|
| index 65f4e107ddd889cc51f42c04a6e4884939459e95..b858eb6a6167d060daff6ee5c19969b64e93189c 100644
|
| --- a/chrome/common/json_pref_store.cc
|
| +++ b/chrome/common/json_pref_store.cc
|
| @@ -13,6 +13,7 @@
|
| #include "base/json/json_string_value_serializer.h"
|
| #include "base/memory/ref_counted.h"
|
| #include "base/message_loop_proxy.h"
|
| +#include "base/sequenced_task_runner.h"
|
| #include "base/values.h"
|
|
|
| namespace {
|
| @@ -26,17 +27,17 @@ class FileThreadDeserializer
|
| : public base::RefCountedThreadSafe<FileThreadDeserializer> {
|
| public:
|
| FileThreadDeserializer(JsonPrefStore* delegate,
|
| - base::MessageLoopProxy* file_loop_proxy)
|
| + base::SequencedTaskRunner* blocking_task_runner)
|
| : no_dir_(false),
|
| error_(PersistentPrefStore::PREF_READ_ERROR_NONE),
|
| delegate_(delegate),
|
| - file_loop_proxy_(file_loop_proxy),
|
| + blocking_task_runner_(blocking_task_runner),
|
| origin_loop_proxy_(base::MessageLoopProxy::current()) {
|
| }
|
|
|
| void Start(const FilePath& path) {
|
| DCHECK(origin_loop_proxy_->BelongsToCurrentThread());
|
| - file_loop_proxy_->PostTask(
|
| + blocking_task_runner_->PostTask(
|
| FROM_HERE,
|
| base::Bind(&FileThreadDeserializer::ReadFileAndReport,
|
| this, path));
|
| @@ -44,8 +45,6 @@ class FileThreadDeserializer
|
|
|
| // Deserializes JSON on the file thread.
|
| void ReadFileAndReport(const FilePath& path) {
|
| - DCHECK(file_loop_proxy_->BelongsToCurrentThread());
|
| -
|
| value_.reset(DoReading(path, &error_, &no_dir_));
|
|
|
| origin_loop_proxy_->PostTask(
|
| @@ -85,7 +84,7 @@ class FileThreadDeserializer
|
| PersistentPrefStore::PrefReadError error_;
|
| scoped_ptr<Value> value_;
|
| scoped_refptr<JsonPrefStore> delegate_;
|
| - scoped_refptr<base::MessageLoopProxy> file_loop_proxy_;
|
| + scoped_refptr<base::SequencedTaskRunner> blocking_task_runner_;
|
| scoped_refptr<base::MessageLoopProxy> origin_loop_proxy_;
|
| };
|
|
|
| @@ -138,12 +137,12 @@ void FileThreadDeserializer::HandleErrors(
|
| } // namespace
|
|
|
| JsonPrefStore::JsonPrefStore(const FilePath& filename,
|
| - base::MessageLoopProxy* file_message_loop_proxy)
|
| + base::SequencedTaskRunner* blocking_task_runner)
|
| : path_(filename),
|
| - file_message_loop_proxy_(file_message_loop_proxy),
|
| + blocking_task_runner_(blocking_task_runner),
|
| prefs_(new DictionaryValue()),
|
| read_only_(false),
|
| - writer_(filename, file_message_loop_proxy),
|
| + writer_(filename, blocking_task_runner),
|
| error_delegate_(NULL),
|
| initialized_(false),
|
| read_error_(PREF_READ_ERROR_OTHER) {
|
| @@ -245,7 +244,7 @@ void JsonPrefStore::ReadPrefsAsync(ReadErrorDelegate *error_delegate) {
|
| // Start async reading of the preferences file. It will delete itself
|
| // in the end.
|
| scoped_refptr<FileThreadDeserializer> deserializer(
|
| - new FileThreadDeserializer(this, file_message_loop_proxy_.get()));
|
| + new FileThreadDeserializer(this, blocking_task_runner_));
|
| deserializer->Start(path_);
|
| }
|
|
|
|
|