Index: chrome/browser/chromeos/extensions/file_manager/private_api_tasks.cc |
diff --git a/chrome/browser/chromeos/extensions/file_manager/private_api_tasks.cc b/chrome/browser/chromeos/extensions/file_manager/private_api_tasks.cc |
index 1ee43e6436e5ed1607051f0ee1136ac1e206dcd5..da23c4e7206f397c25e831da0085075a9a5e1553 100644 |
--- a/chrome/browser/chromeos/extensions/file_manager/private_api_tasks.cc |
+++ b/chrome/browser/chromeos/extensions/file_manager/private_api_tasks.cc |
@@ -10,6 +10,7 @@ |
#include "chrome/browser/chromeos/extensions/file_manager/private_api_util.h" |
#include "chrome/browser/chromeos/fileapi/file_system_backend.h" |
#include "chrome/browser/profiles/profile.h" |
+#include "chrome/common/extensions/api/file_browser_private.h" |
#include "content/public/browser/render_view_host.h" |
#include "webkit/browser/fileapi/file_system_context.h" |
#include "webkit/browser/fileapi/file_system_url.h" |
@@ -25,14 +26,12 @@ namespace { |
const char kInvalidFileUrl[] = "Invalid file URL"; |
// Make a set of unique filename suffixes out of the list of file URLs. |
-std::set<std::string> GetUniqueSuffixes(base::ListValue* file_url_list, |
- fileapi::FileSystemContext* context) { |
+std::set<std::string> GetUniqueSuffixes( |
+ const std::vector<std::string>& file_url_list, |
+ const fileapi::FileSystemContext* context) { |
std::set<std::string> suffixes; |
- for (size_t i = 0; i < file_url_list->GetSize(); ++i) { |
- std::string url_str; |
- if (!file_url_list->GetString(i, &url_str)) |
- return std::set<std::string>(); |
- FileSystemURL url = context->CrackURL(GURL(url_str)); |
+ for (size_t i = 0; i < file_url_list.size(); ++i) { |
+ const FileSystemURL url = context->CrackURL(GURL(file_url_list[i])); |
if (!url.is_valid() || url.path().empty()) |
return std::set<std::string>(); |
// We'll skip empty suffixes. |
@@ -43,12 +42,11 @@ std::set<std::string> GetUniqueSuffixes(base::ListValue* file_url_list, |
} |
// Make a set of unique MIME types out of the list of MIME types. |
-std::set<std::string> GetUniqueMimeTypes(base::ListValue* mime_type_list) { |
+std::set<std::string> GetUniqueMimeTypes( |
+ const std::vector<std::string>& mime_type_list) { |
std::set<std::string> mime_types; |
- for (size_t i = 0; i < mime_type_list->GetSize(); ++i) { |
+ for (size_t i = 0; i < mime_type_list.size(); ++i) { |
std::string mime_type; |
- if (!mime_type_list->GetString(i, &mime_type)) |
- return std::set<std::string>(); |
// We'll skip empty MIME types. |
if (!mime_type.empty()) |
mime_types.insert(mime_type); |
@@ -58,49 +56,31 @@ std::set<std::string> GetUniqueMimeTypes(base::ListValue* mime_type_list) { |
} // namespace |
-FileBrowserPrivateExecuteTaskFunction::FileBrowserPrivateExecuteTaskFunction() { |
-} |
- |
-FileBrowserPrivateExecuteTaskFunction:: |
- ~FileBrowserPrivateExecuteTaskFunction() { |
-} |
- |
bool FileBrowserPrivateExecuteTaskFunction::RunImpl() { |
- // First param is task id that was to the extension with getFileTasks call. |
- std::string task_id; |
- if (!args_->GetString(0, &task_id) || !task_id.size()) |
- return false; |
+ using extensions::api::file_browser_private::ExecuteTask::Params; |
+ const scoped_ptr<Params> params(Params::Create(*args_)); |
+ EXTENSION_FUNCTION_VALIDATE(params); |
// TODO(kaznacheev): Crack the task_id here, store it in the Executor |
// and avoid passing it around. |
- // The second param is the list of files that need to be executed with this |
- // task. |
- ListValue* files_list = NULL; |
- if (!args_->GetList(1, &files_list)) |
- return false; |
- |
file_manager::file_tasks::TaskDescriptor task; |
- if (!file_manager::file_tasks::ParseTaskID(task_id, &task)) { |
- LOG(WARNING) << "Invalid task " << task_id; |
+ if (!file_manager::file_tasks::ParseTaskID(params->task_id, &task)) { |
+ LOG(WARNING) << "Invalid task " << params->task_id; |
return false; |
} |
- if (!files_list->GetSize()) |
+ if (!params->file_urls.size()) |
satorux1
2013/09/05 01:36:53
if (params->file_urls.empty())
hirono
2013/09/05 03:15:46
Done.
|
return true; |
- scoped_refptr<fileapi::FileSystemContext> file_system_context = |
+ const scoped_refptr<fileapi::FileSystemContext> file_system_context = |
file_manager::util::GetFileSystemContextForRenderViewHost( |
profile(), render_view_host()); |
std::vector<FileSystemURL> file_urls; |
- for (size_t i = 0; i < files_list->GetSize(); i++) { |
- std::string file_url_str; |
- if (!files_list->GetString(i, &file_url_str)) { |
- error_ = kInvalidFileUrl; |
- return false; |
- } |
- FileSystemURL url = file_system_context->CrackURL(GURL(file_url_str)); |
+ for (size_t i = 0; i < params->file_urls.size(); i++) { |
+ const FileSystemURL url = |
+ file_system_context->CrackURL(GURL(params->file_urls[i])); |
if (!chromeos::FileSystemBackend::CanHandleURL(url)) { |
error_ = kInvalidFileUrl; |
return false; |
@@ -108,7 +88,7 @@ bool FileBrowserPrivateExecuteTaskFunction::RunImpl() { |
file_urls.push_back(url); |
} |
- int32 tab_id = file_manager::util::GetTabId(dispatcher()); |
+ const int32 tab_id = file_manager::util::GetTabId(dispatcher()); |
return file_manager::file_tasks::ExecuteFileTask( |
profile(), |
source_url(), |
@@ -124,34 +104,20 @@ void FileBrowserPrivateExecuteTaskFunction::OnTaskExecuted(bool success) { |
SendResponse(true); |
} |
-FileBrowserPrivateGetFileTasksFunction:: |
- FileBrowserPrivateGetFileTasksFunction() { |
-} |
- |
-FileBrowserPrivateGetFileTasksFunction:: |
- ~FileBrowserPrivateGetFileTasksFunction() { |
-} |
- |
bool FileBrowserPrivateGetFileTasksFunction::RunImpl() { |
- // First argument is the list of files to get tasks for. |
- ListValue* files_list = NULL; |
- if (!args_->GetList(0, &files_list)) |
- return false; |
- |
- if (files_list->GetSize() == 0) |
- return false; |
+ using extensions::api::file_browser_private::GetFileTasks::Params; |
+ const scoped_ptr<Params> params(Params::Create(*args_)); |
+ EXTENSION_FUNCTION_VALIDATE(params); |
- // Second argument is the list of mime types of each of the files in the list. |
- ListValue* mime_types_list = NULL; |
- if (!args_->GetList(1, &mime_types_list)) |
+ if (!params->file_urls.size()) |
satorux1
2013/09/05 01:36:53
ditto
hirono
2013/09/05 03:15:46
Done.
|
return false; |
// MIME types can either be empty, or there needs to be one for each file. |
- if (mime_types_list->GetSize() != files_list->GetSize() && |
- mime_types_list->GetSize() != 0) |
+ if (params->mime_types.size() != params->file_urls.size() && |
+ params->mime_types.size() != 0) |
return false; |
- scoped_refptr<fileapi::FileSystemContext> file_system_context = |
+ const scoped_refptr<fileapi::FileSystemContext> file_system_context = |
file_manager::util::GetFileSystemContextForRenderViewHost( |
profile(), render_view_host()); |
@@ -159,17 +125,12 @@ bool FileBrowserPrivateGetFileTasksFunction::RunImpl() { |
// file paths. |
PathAndMimeTypeSet path_mime_set; |
std::vector<GURL> file_urls; |
- for (size_t i = 0; i < files_list->GetSize(); ++i) { |
- std::string file_url_str; |
- if (!files_list->GetString(i, &file_url_str)) |
- return false; |
- |
+ for (size_t i = 0; i < params->file_urls.size(); ++i) { |
std::string mime_type; |
- if (mime_types_list->GetSize() != 0 && |
- !mime_types_list->GetString(i, &mime_type)) |
- return false; |
+ if (params->mime_types.size() != 0) |
+ mime_type = params->mime_types[i]; |
- GURL file_url(file_url_str); |
+ const GURL file_url(params->file_urls[i]); |
fileapi::FileSystemURL file_system_url( |
file_system_context->CrackURL(file_url)); |
if (!chromeos::FileSystemBackend::CanHandleURL(file_system_url)) |
@@ -190,48 +151,47 @@ bool FileBrowserPrivateGetFileTasksFunction::RunImpl() { |
path_mime_set, |
file_urls, |
&tasks); |
- // Convert the tasks into JSON format. |
- ListValue* result_list = new ListValue(); |
- for (size_t i = 0; i < tasks.size(); ++i) |
- result_list->Append(tasks[i].AsDictionaryValue().release()); |
- SetResult(result_list); |
+ // Convert the tasks into JSON compatible objects. |
+ using api::file_browser_private::FileTask; |
+ std::vector<linked_ptr<FileTask> > results; |
+ for (size_t i = 0; i < tasks.size(); ++i) { |
satorux1
2013/09/05 01:36:53
tasks[i] is references many times in the loop. may
hirono
2013/09/05 03:15:46
Done.
|
+ linked_ptr<FileTask> task(new FileTask); |
+ task->task_id = file_manager::file_tasks::TaskDescriptorToId( |
+ tasks[i].task_descriptor()); |
+ if (!tasks[i].icon_url().is_empty()) |
+ task->icon_url = tasks[i].icon_url().spec(); |
+ task->drive_app = |
+ tasks[i].task_descriptor().task_type == |
satorux1
2013/09/05 01:36:53
please add ()
hirono
2013/09/05 03:15:46
This is removed.
satorux1
2013/09/05 03:18:15
That's right. I just removed it. :)
|
+ file_manager::file_tasks::TASK_TYPE_DRIVE_APP; |
+ task->title = tasks[i].task_title(); |
+ task->is_default = tasks[i].is_default(); |
+ results.push_back(task); |
+ } |
+ results_ = extensions::api::file_browser_private::GetFileTasks::Results:: |
+ Create(results); |
SendResponse(true); |
return true; |
} |
-FileBrowserPrivateSetDefaultTaskFunction:: |
- FileBrowserPrivateSetDefaultTaskFunction() { |
-} |
- |
-FileBrowserPrivateSetDefaultTaskFunction:: |
- ~FileBrowserPrivateSetDefaultTaskFunction() { |
-} |
- |
bool FileBrowserPrivateSetDefaultTaskFunction::RunImpl() { |
- // First param is task id that was to the extension with setDefaultTask call. |
- std::string task_id; |
- if (!args_->GetString(0, &task_id) || !task_id.size()) |
- return false; |
- |
- base::ListValue* file_url_list; |
- if (!args_->GetList(1, &file_url_list)) |
- return false; |
+ using extensions::api::file_browser_private::SetDefaultTask::Params; |
+ const scoped_ptr<Params> params(Params::Create(*args_)); |
+ EXTENSION_FUNCTION_VALIDATE(params); |
- scoped_refptr<fileapi::FileSystemContext> file_system_context = |
+ const scoped_refptr<fileapi::FileSystemContext> file_system_context = |
file_manager::util::GetFileSystemContextForRenderViewHost( |
profile(), render_view_host()); |
- std::set<std::string> suffixes = |
- GetUniqueSuffixes(file_url_list, file_system_context.get()); |
+ const std::set<std::string> suffixes = |
+ GetUniqueSuffixes(params->file_urls, file_system_context.get()); |
// MIME types are an optional parameter. |
- base::ListValue* mime_type_list; |
std::set<std::string> mime_types; |
- if (args_->GetList(2, &mime_type_list) && !mime_type_list->empty()) { |
- if (mime_type_list->GetSize() != file_url_list->GetSize()) |
+ if (params->mime_types && !params->mime_types->empty()) { |
+ if (params->mime_types->size() != params->file_urls.size()) |
return false; |
- mime_types = GetUniqueMimeTypes(mime_type_list); |
+ mime_types = GetUniqueMimeTypes(*params->mime_types); |
} |
// If there weren't any mime_types, and all the suffixes were blank, |
@@ -246,7 +206,7 @@ bool FileBrowserPrivateSetDefaultTaskFunction::RunImpl() { |
} |
file_manager::file_tasks::UpdateDefaultTask(profile_->GetPrefs(), |
- task_id, |
+ params->task_id, |
suffixes, |
mime_types); |
return true; |