| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/chromeos/extensions/file_manager/private_api_tasks.h" | 5 #include "chrome/browser/chromeos/extensions/file_manager/private_api_tasks.h" |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 52 const std::string mime_type = mime_type_list[i]; | 52 const std::string mime_type = mime_type_list[i]; |
| 53 // We'll skip empty MIME types and existing MIME types. | 53 // We'll skip empty MIME types and existing MIME types. |
| 54 if (!mime_type.empty()) | 54 if (!mime_type.empty()) |
| 55 mime_types.insert(mime_type); | 55 mime_types.insert(mime_type); |
| 56 } | 56 } |
| 57 return mime_types; | 57 return mime_types; |
| 58 } | 58 } |
| 59 | 59 |
| 60 } // namespace | 60 } // namespace |
| 61 | 61 |
| 62 bool FileBrowserPrivateExecuteTaskFunction::RunAsync() { | 62 bool FileManagerPrivateExecuteTaskFunction::RunAsync() { |
| 63 using extensions::api::file_browser_private::ExecuteTask::Params; | 63 using extensions::api::file_manager_private::ExecuteTask::Params; |
| 64 using extensions::api::file_browser_private::ExecuteTask::Results::Create; | 64 using extensions::api::file_manager_private::ExecuteTask::Results::Create; |
| 65 const scoped_ptr<Params> params(Params::Create(*args_)); | 65 const scoped_ptr<Params> params(Params::Create(*args_)); |
| 66 EXTENSION_FUNCTION_VALIDATE(params); | 66 EXTENSION_FUNCTION_VALIDATE(params); |
| 67 | 67 |
| 68 file_manager::file_tasks::TaskDescriptor task; | 68 file_manager::file_tasks::TaskDescriptor task; |
| 69 if (!file_manager::file_tasks::ParseTaskID(params->task_id, &task)) { | 69 if (!file_manager::file_tasks::ParseTaskID(params->task_id, &task)) { |
| 70 SetError(kInvalidTask + params->task_id); | 70 SetError(kInvalidTask + params->task_id); |
| 71 results_ = | 71 results_ = |
| 72 Create(extensions::api::file_browser_private::TASK_RESULT_FAILED); | 72 Create(extensions::api::file_manager_private::TASK_RESULT_FAILED); |
| 73 return false; | 73 return false; |
| 74 } | 74 } |
| 75 | 75 |
| 76 if (params->file_urls.empty()) { | 76 if (params->file_urls.empty()) { |
| 77 results_ = Create(extensions::api::file_browser_private::TASK_RESULT_EMPTY); | 77 results_ = Create(extensions::api::file_manager_private::TASK_RESULT_EMPTY); |
| 78 SendResponse(true); | 78 SendResponse(true); |
| 79 return true; | 79 return true; |
| 80 } | 80 } |
| 81 | 81 |
| 82 const scoped_refptr<storage::FileSystemContext> file_system_context = | 82 const scoped_refptr<storage::FileSystemContext> file_system_context = |
| 83 file_manager::util::GetFileSystemContextForRenderViewHost( | 83 file_manager::util::GetFileSystemContextForRenderViewHost( |
| 84 GetProfile(), render_view_host()); | 84 GetProfile(), render_view_host()); |
| 85 | 85 |
| 86 std::vector<FileSystemURL> file_urls; | 86 std::vector<FileSystemURL> file_urls; |
| 87 for (size_t i = 0; i < params->file_urls.size(); i++) { | 87 for (size_t i = 0; i < params->file_urls.size(); i++) { |
| 88 const FileSystemURL url = | 88 const FileSystemURL url = |
| 89 file_system_context->CrackURL(GURL(params->file_urls[i])); | 89 file_system_context->CrackURL(GURL(params->file_urls[i])); |
| 90 if (!chromeos::FileSystemBackend::CanHandleURL(url)) { | 90 if (!chromeos::FileSystemBackend::CanHandleURL(url)) { |
| 91 SetError(kInvalidFileUrl); | 91 SetError(kInvalidFileUrl); |
| 92 results_ = | 92 results_ = |
| 93 Create(extensions::api::file_browser_private::TASK_RESULT_FAILED); | 93 Create(extensions::api::file_manager_private::TASK_RESULT_FAILED); |
| 94 return false; | 94 return false; |
| 95 } | 95 } |
| 96 file_urls.push_back(url); | 96 file_urls.push_back(url); |
| 97 } | 97 } |
| 98 | 98 |
| 99 const bool result = file_manager::file_tasks::ExecuteFileTask( | 99 const bool result = file_manager::file_tasks::ExecuteFileTask( |
| 100 GetProfile(), | 100 GetProfile(), |
| 101 source_url(), | 101 source_url(), |
| 102 task, | 102 task, |
| 103 file_urls, | 103 file_urls, |
| 104 base::Bind(&FileBrowserPrivateExecuteTaskFunction::OnTaskExecuted, this)); | 104 base::Bind(&FileManagerPrivateExecuteTaskFunction::OnTaskExecuted, this)); |
| 105 if (!result) { | 105 if (!result) { |
| 106 results_ = | 106 results_ = |
| 107 Create(extensions::api::file_browser_private::TASK_RESULT_FAILED); | 107 Create(extensions::api::file_manager_private::TASK_RESULT_FAILED); |
| 108 } | 108 } |
| 109 return result; | 109 return result; |
| 110 } | 110 } |
| 111 | 111 |
| 112 void FileBrowserPrivateExecuteTaskFunction::OnTaskExecuted( | 112 void FileManagerPrivateExecuteTaskFunction::OnTaskExecuted( |
| 113 extensions::api::file_browser_private::TaskResult result) { | 113 extensions::api::file_manager_private::TaskResult result) { |
| 114 results_ = | 114 results_ = |
| 115 extensions::api::file_browser_private::ExecuteTask::Results::Create( | 115 extensions::api::file_manager_private::ExecuteTask::Results::Create( |
| 116 result); | 116 result); |
| 117 SendResponse(result != | 117 SendResponse(result != |
| 118 extensions::api::file_browser_private::TASK_RESULT_FAILED); | 118 extensions::api::file_manager_private::TASK_RESULT_FAILED); |
| 119 } | 119 } |
| 120 | 120 |
| 121 FileBrowserPrivateGetFileTasksFunction:: | 121 FileManagerPrivateGetFileTasksFunction:: |
| 122 FileBrowserPrivateGetFileTasksFunction() { | 122 FileManagerPrivateGetFileTasksFunction() { |
| 123 } | 123 } |
| 124 | 124 |
| 125 FileBrowserPrivateGetFileTasksFunction:: | 125 FileManagerPrivateGetFileTasksFunction:: |
| 126 ~FileBrowserPrivateGetFileTasksFunction() { | 126 ~FileManagerPrivateGetFileTasksFunction() { |
| 127 } | 127 } |
| 128 | 128 |
| 129 bool FileBrowserPrivateGetFileTasksFunction::RunAsync() { | 129 bool FileManagerPrivateGetFileTasksFunction::RunAsync() { |
| 130 using extensions::api::file_browser_private::GetFileTasks::Params; | 130 using extensions::api::file_manager_private::GetFileTasks::Params; |
| 131 const scoped_ptr<Params> params(Params::Create(*args_)); | 131 const scoped_ptr<Params> params(Params::Create(*args_)); |
| 132 EXTENSION_FUNCTION_VALIDATE(params); | 132 EXTENSION_FUNCTION_VALIDATE(params); |
| 133 | 133 |
| 134 if (params->file_urls.empty()) | 134 if (params->file_urls.empty()) |
| 135 return false; | 135 return false; |
| 136 | 136 |
| 137 const scoped_refptr<storage::FileSystemContext> file_system_context = | 137 const scoped_refptr<storage::FileSystemContext> file_system_context = |
| 138 file_manager::util::GetFileSystemContextForRenderViewHost( | 138 file_manager::util::GetFileSystemContextForRenderViewHost( |
| 139 GetProfile(), render_view_host()); | 139 GetProfile(), render_view_host()); |
| 140 | 140 |
| 141 // Collect all the URLs, convert them to GURLs, and crack all the urls into | 141 // Collect all the URLs, convert them to GURLs, and crack all the urls into |
| 142 // file paths. | 142 // file paths. |
| 143 for (size_t i = 0; i < params->file_urls.size(); ++i) { | 143 for (size_t i = 0; i < params->file_urls.size(); ++i) { |
| 144 const GURL file_url(params->file_urls[i]); | 144 const GURL file_url(params->file_urls[i]); |
| 145 storage::FileSystemURL file_system_url( | 145 storage::FileSystemURL file_system_url( |
| 146 file_system_context->CrackURL(file_url)); | 146 file_system_context->CrackURL(file_url)); |
| 147 if (!chromeos::FileSystemBackend::CanHandleURL(file_system_url)) | 147 if (!chromeos::FileSystemBackend::CanHandleURL(file_system_url)) |
| 148 continue; | 148 continue; |
| 149 file_urls_.push_back(file_url); | 149 file_urls_.push_back(file_url); |
| 150 local_paths_.push_back(file_system_url.path()); | 150 local_paths_.push_back(file_system_url.path()); |
| 151 } | 151 } |
| 152 | 152 |
| 153 collector_.reset(new app_file_handler_util::MimeTypeCollector(GetProfile())); | 153 collector_.reset(new app_file_handler_util::MimeTypeCollector(GetProfile())); |
| 154 collector_->CollectForLocalPaths( | 154 collector_->CollectForLocalPaths( |
| 155 local_paths_, | 155 local_paths_, |
| 156 base::Bind(&FileBrowserPrivateGetFileTasksFunction::OnMimeTypesCollected, | 156 base::Bind(&FileManagerPrivateGetFileTasksFunction::OnMimeTypesCollected, |
| 157 this)); | 157 this)); |
| 158 | 158 |
| 159 return true; | 159 return true; |
| 160 } | 160 } |
| 161 | 161 |
| 162 void FileBrowserPrivateGetFileTasksFunction::OnMimeTypesCollected( | 162 void FileManagerPrivateGetFileTasksFunction::OnMimeTypesCollected( |
| 163 scoped_ptr<std::vector<std::string> > mime_types) { | 163 scoped_ptr<std::vector<std::string> > mime_types) { |
| 164 app_file_handler_util::PathAndMimeTypeSet path_mime_set; | 164 app_file_handler_util::PathAndMimeTypeSet path_mime_set; |
| 165 for (size_t i = 0; i < local_paths_.size(); ++i) { | 165 for (size_t i = 0; i < local_paths_.size(); ++i) { |
| 166 path_mime_set.insert(std::make_pair(local_paths_[i], (*mime_types)[i])); | 166 path_mime_set.insert(std::make_pair(local_paths_[i], (*mime_types)[i])); |
| 167 } | 167 } |
| 168 | 168 |
| 169 std::vector<file_manager::file_tasks::FullTaskDescriptor> tasks; | 169 std::vector<file_manager::file_tasks::FullTaskDescriptor> tasks; |
| 170 file_manager::file_tasks::FindAllTypesOfTasks( | 170 file_manager::file_tasks::FindAllTypesOfTasks( |
| 171 GetProfile(), | 171 GetProfile(), |
| 172 drive::util::GetDriveAppRegistryByProfile(GetProfile()), | 172 drive::util::GetDriveAppRegistryByProfile(GetProfile()), |
| 173 path_mime_set, | 173 path_mime_set, |
| 174 file_urls_, | 174 file_urls_, |
| 175 &tasks); | 175 &tasks); |
| 176 | 176 |
| 177 // Convert the tasks into JSON compatible objects. | 177 // Convert the tasks into JSON compatible objects. |
| 178 using api::file_browser_private::FileTask; | 178 using api::file_manager_private::FileTask; |
| 179 std::vector<linked_ptr<FileTask> > results; | 179 std::vector<linked_ptr<FileTask> > results; |
| 180 for (size_t i = 0; i < tasks.size(); ++i) { | 180 for (size_t i = 0; i < tasks.size(); ++i) { |
| 181 const file_manager::file_tasks::FullTaskDescriptor& task = tasks[i]; | 181 const file_manager::file_tasks::FullTaskDescriptor& task = tasks[i]; |
| 182 const linked_ptr<FileTask> converted(new FileTask); | 182 const linked_ptr<FileTask> converted(new FileTask); |
| 183 converted->task_id = file_manager::file_tasks::TaskDescriptorToId( | 183 converted->task_id = file_manager::file_tasks::TaskDescriptorToId( |
| 184 task.task_descriptor()); | 184 task.task_descriptor()); |
| 185 if (!task.icon_url().is_empty()) | 185 if (!task.icon_url().is_empty()) |
| 186 converted->icon_url = task.icon_url().spec(); | 186 converted->icon_url = task.icon_url().spec(); |
| 187 converted->title = task.task_title(); | 187 converted->title = task.task_title(); |
| 188 converted->is_default = task.is_default(); | 188 converted->is_default = task.is_default(); |
| 189 results.push_back(converted); | 189 results.push_back(converted); |
| 190 } | 190 } |
| 191 | 191 |
| 192 results_ = extensions::api::file_browser_private::GetFileTasks::Results:: | 192 results_ = extensions::api::file_manager_private::GetFileTasks::Results:: |
| 193 Create(results); | 193 Create(results); |
| 194 SendResponse(true); | 194 SendResponse(true); |
| 195 } | 195 } |
| 196 | 196 |
| 197 bool FileBrowserPrivateSetDefaultTaskFunction::RunSync() { | 197 bool FileManagerPrivateSetDefaultTaskFunction::RunSync() { |
| 198 using extensions::api::file_browser_private::SetDefaultTask::Params; | 198 using extensions::api::file_manager_private::SetDefaultTask::Params; |
| 199 const scoped_ptr<Params> params(Params::Create(*args_)); | 199 const scoped_ptr<Params> params(Params::Create(*args_)); |
| 200 EXTENSION_FUNCTION_VALIDATE(params); | 200 EXTENSION_FUNCTION_VALIDATE(params); |
| 201 | 201 |
| 202 const scoped_refptr<storage::FileSystemContext> file_system_context = | 202 const scoped_refptr<storage::FileSystemContext> file_system_context = |
| 203 file_manager::util::GetFileSystemContextForRenderViewHost( | 203 file_manager::util::GetFileSystemContextForRenderViewHost( |
| 204 GetProfile(), render_view_host()); | 204 GetProfile(), render_view_host()); |
| 205 | 205 |
| 206 const std::set<std::string> suffixes = | 206 const std::set<std::string> suffixes = |
| 207 GetUniqueSuffixes(params->file_urls, file_system_context.get()); | 207 GetUniqueSuffixes(params->file_urls, file_system_context.get()); |
| 208 | 208 |
| (...skipping 15 matching lines...) Expand all Loading... |
| 224 SetResult(new base::FundamentalValue(true)); | 224 SetResult(new base::FundamentalValue(true)); |
| 225 return true; | 225 return true; |
| 226 } | 226 } |
| 227 | 227 |
| 228 file_manager::file_tasks::UpdateDefaultTask( | 228 file_manager::file_tasks::UpdateDefaultTask( |
| 229 GetProfile()->GetPrefs(), params->task_id, suffixes, mime_types); | 229 GetProfile()->GetPrefs(), params->task_id, suffixes, mime_types); |
| 230 return true; | 230 return true; |
| 231 } | 231 } |
| 232 | 232 |
| 233 } // namespace extensions | 233 } // namespace extensions |
| OLD | NEW |