Chromium Code Reviews| Index: chrome/browser/extensions/api/file_system/file_system_api.cc |
| diff --git a/chrome/browser/extensions/api/file_system/file_system_api.cc b/chrome/browser/extensions/api/file_system/file_system_api.cc |
| index f1dc06c0520ef92aeaa6c3977227f4662ee67218..bd9222c674b5dbaa6b0c8c53f595ca88078c1d70 100644 |
| --- a/chrome/browser/extensions/api/file_system/file_system_api.cc |
| +++ b/chrome/browser/extensions/api/file_system/file_system_api.cc |
| @@ -6,7 +6,9 @@ |
| #include <stddef.h> |
| +#include <memory> |
| #include <set> |
| +#include <utility> |
| #include <vector> |
| #include "apps/saved_files_service.h" |
| @@ -487,14 +489,12 @@ bool FileSystemGetDisplayPathFunction::RunSync() { |
| return false; |
| file_path = path_util::PrettifyPath(file_path); |
| - SetResult(new base::StringValue(file_path.value())); |
| + SetResult(base::MakeUnique<base::StringValue>(file_path.value())); |
| return true; |
| } |
| FileSystemEntryFunction::FileSystemEntryFunction() |
| - : multiple_(false), |
| - is_directory_(false), |
| - response_(NULL) {} |
| + : multiple_(false), is_directory_(false) {} |
| void FileSystemEntryFunction::PrepareFilesForWritableApp( |
| const std::vector<base::FilePath>& paths) { |
| @@ -519,27 +519,23 @@ void FileSystemEntryFunction::RegisterFileSystemsAndSendResponse( |
| if (!render_frame_host()) |
| return; |
| - CreateResponse(); |
| - for (std::vector<base::FilePath>::const_iterator it = paths.begin(); |
| - it != paths.end(); ++it) { |
| - AddEntryToResponse(*it, ""); |
| - } |
| + std::unique_ptr<base::DictionaryValue> result = CreateResult(); |
| + for (const auto& path : paths) |
| + AddEntryToResult(path, std::string(), result.get()); |
| + SetResult(std::move(result)); |
| SendResponse(true); |
| } |
| -void FileSystemEntryFunction::CreateResponse() { |
| - DCHECK(!response_); |
| - response_ = new base::DictionaryValue(); |
| - base::ListValue* list = new base::ListValue(); |
| - response_->Set("entries", list); |
| - response_->SetBoolean("multiple", multiple_); |
| - SetResult(response_); |
| +std::unique_ptr<base::DictionaryValue> FileSystemEntryFunction::CreateResult() { |
| + std::unique_ptr<base::DictionaryValue> result(new base::DictionaryValue()); |
| + result->Set("entries", base::MakeUnique<base::ListValue>()); |
| + result->SetBoolean("multiple", multiple_); |
| + return result; |
| } |
| -void FileSystemEntryFunction::AddEntryToResponse( |
| - const base::FilePath& path, |
| - const std::string& id_override) { |
| - DCHECK(response_); |
| +void FileSystemEntryFunction::AddEntryToResult(const base::FilePath& path, |
| + const std::string& id_override, |
| + base::DictionaryValue* result) { |
| GrantedFileEntry file_entry = app_file_handler_util::CreateFileEntry( |
| GetProfile(), |
| extension(), |
| @@ -547,7 +543,7 @@ void FileSystemEntryFunction::AddEntryToResponse( |
| path, |
| is_directory_); |
| base::ListValue* entries; |
| - bool success = response_->GetList("entries", &entries); |
| + bool success = result->GetList("entries", &entries); |
|
Devlin
2016/05/20 17:56:54
nit: this is silly, since it means we repeat this
dcheng
2016/05/20 18:11:57
It's a map internally, so lookup is reasonably tim
Devlin
2016/05/20 20:56:18
Ah, I didn't notice it's called from two places.
|
| DCHECK(success); |
| base::DictionaryValue* entry = new base::DictionaryValue(); |
| @@ -635,7 +631,7 @@ bool FileSystemIsWritableEntryFunction::RunSync() { |
| bool is_writable = policy->CanReadWriteFileSystem(renderer_id, |
| filesystem_id); |
| - SetResult(new base::FundamentalValue(is_writable)); |
| + SetResult(base::MakeUnique<base::FundamentalValue>(is_writable)); |
| return true; |
| } |
| @@ -1201,8 +1197,9 @@ void FileSystemRetainEntryFunction::RetainFileEntry( |
| bool FileSystemIsRestorableFunction::RunSync() { |
| std::string entry_id; |
| EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &entry_id)); |
| - SetResult(new base::FundamentalValue(SavedFilesService::Get( |
| - GetProfile())->IsRegistered(extension_->id(), entry_id))); |
| + SetResult(base::MakeUnique<base::FundamentalValue>( |
| + SavedFilesService::Get(GetProfile()) |
| + ->IsRegistered(extension_->id(), entry_id))); |
| return true; |
| } |
| @@ -1226,8 +1223,9 @@ bool FileSystemRestoreEntryFunction::RunAsync() { |
| // |entry_id|. |
| if (needs_new_entry) { |
| is_directory_ = file_entry->is_directory; |
| - CreateResponse(); |
| - AddEntryToResponse(file_entry->path, file_entry->id); |
| + std::unique_ptr<base::DictionaryValue> result = CreateResult(); |
| + AddEntryToResult(file_entry->path, file_entry->id, result.get()); |
| + SetResult(std::move(result)); |
| } |
| SendResponse(true); |
| return true; |
| @@ -1424,11 +1422,11 @@ void FileSystemRequestFileSystemFunction::OnConsentReceived( |
| render_frame_host()->GetProcess()->GetID(), file_system_id); |
| } |
| - base::DictionaryValue* const dict = new base::DictionaryValue(); |
| + std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); |
| dict->SetString("file_system_id", file_system_id); |
| dict->SetString("file_system_path", register_name); |
| - SetResult(dict); |
| + SetResult(std::move(dict)); |
| SendResponse(true); |
| } |