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 |