Chromium Code Reviews| Index: extensions/browser/file_reader.cc |
| diff --git a/extensions/browser/file_reader.cc b/extensions/browser/file_reader.cc |
| index c5deb9b646e071cc844cceb9ec57922b35afab31..b8bbf538680ee116050497eb54f348a85bbf9b40 100644 |
| --- a/extensions/browser/file_reader.cc |
| +++ b/extensions/browser/file_reader.cc |
| @@ -11,10 +11,13 @@ |
| 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 +31,11 @@ FileReader::~FileReader() {} |
| void FileReader::ReadFileOnBackgroundThread() { |
| std::unique_ptr<std::string> data(new std::string()); |
| bool success = base::ReadFileToString(resource_.GetFilePath(), data.get()); |
| + |
| + if (success && !optional_file_thread_task_callback_.is_null()) |
| + optional_file_thread_task_callback_.Run(data.get()); |
| + |
| origin_task_runner_->PostTask( |
| - FROM_HERE, base::Bind(callback_, success, base::Passed(std::move(data)))); |
| + FROM_HERE, |
| + base::Bind(done_callback_, success, base::Passed(std::move(data)))); |
|
Devlin
2016/09/01 06:15:21
Totally separate, but let's make these (here and l
lazyboy
2016/09/01 18:10:18
As discussed on chat, there shouldn't be a leak as
|
| } |