| Index: extensions/browser/file_reader.cc
|
| diff --git a/extensions/browser/file_reader.cc b/extensions/browser/file_reader.cc
|
| index c5deb9b646e071cc844cceb9ec57922b35afab31..3efc7d51a27e7c8728e23cc46d7cbe8816728013 100644
|
| --- a/extensions/browser/file_reader.cc
|
| +++ b/extensions/browser/file_reader.cc
|
| @@ -5,16 +5,20 @@
|
| #include "extensions/browser/file_reader.h"
|
|
|
| #include "base/bind.h"
|
| +#include "base/callback_helpers.h"
|
| #include "base/files/file_util.h"
|
| #include "base/threading/thread_task_runner_handle.h"
|
| #include "content/public/browser/browser_thread.h"
|
|
|
| using content::BrowserThread;
|
|
|
| -FileReader::FileReader(const extensions::ExtensionResource& resource,
|
| - const Callback& callback)
|
| +FileReader::FileReader(
|
| + const extensions::ExtensionResource& resource,
|
| + const OptionalFileThreadTaskCallback& optional_file_thread_task_callback,
|
| + const DoneCallback& done_callback)
|
| : resource_(resource),
|
| - callback_(callback),
|
| + optional_file_thread_task_callback_(optional_file_thread_task_callback),
|
| + done_callback_(done_callback),
|
| origin_task_runner_(base::ThreadTaskRunnerHandle::Get()) {}
|
|
|
| void FileReader::Start() {
|
| @@ -28,6 +32,17 @@ FileReader::~FileReader() {}
|
| void FileReader::ReadFileOnBackgroundThread() {
|
| std::unique_ptr<std::string> data(new std::string());
|
| bool success = base::ReadFileToString(resource_.GetFilePath(), data.get());
|
| +
|
| + if (!optional_file_thread_task_callback_.is_null()) {
|
| + if (success) {
|
| + base::ResetAndReturn(&optional_file_thread_task_callback_)
|
| + .Run(data.get());
|
| + } else {
|
| + optional_file_thread_task_callback_.Reset();
|
| + }
|
| + }
|
| +
|
| origin_task_runner_->PostTask(
|
| - FROM_HERE, base::Bind(callback_, success, base::Passed(std::move(data))));
|
| + FROM_HERE, base::Bind(base::ResetAndReturn(&done_callback_), success,
|
| + base::Passed(std::move(data))));
|
| }
|
|
|