| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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_browser_private_api.h" | 5 #include "chrome/browser/chromeos/extensions/file_browser_private_api.h" |
| 6 | 6 |
| 7 #include <sys/stat.h> | 7 #include <sys/stat.h> |
| 8 #include <sys/statvfs.h> | 8 #include <sys/statvfs.h> |
| 9 #include <sys/types.h> | 9 #include <sys/types.h> |
| 10 #include <utime.h> | 10 #include <utime.h> |
| (...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 257 if (icons.empty()) | 257 if (icons.empty()) |
| 258 return result; | 258 return result; |
| 259 result = icons.rbegin()->second; | 259 result = icons.rbegin()->second; |
| 260 for (InstalledApp::IconList::const_reverse_iterator iter = icons.rbegin(); | 260 for (InstalledApp::IconList::const_reverse_iterator iter = icons.rbegin(); |
| 261 iter != icons.rend() && iter->first >= preferred_size; ++iter) { | 261 iter != icons.rend() && iter->first >= preferred_size; ++iter) { |
| 262 result = iter->second; | 262 result = iter->second; |
| 263 } | 263 } |
| 264 return result; | 264 return result; |
| 265 } | 265 } |
| 266 | 266 |
| 267 #if defined(ENABLE_WEB_INTENTS) |
| 267 // Finds the title of the given Web Intents |action|, if the passed extension | 268 // Finds the title of the given Web Intents |action|, if the passed extension |
| 268 // supports this action for all specified |mime_types|. Returns true and | 269 // supports this action for all specified |mime_types|. Returns true and |
| 269 // provides the |title| as output on success. | 270 // provides the |title| as output on success. |
| 270 bool FindTitleForActionWithTypes( | 271 bool FindTitleForActionWithTypes( |
| 271 const Extension* extension, | 272 const Extension* extension, |
| 272 const std::string& action, | 273 const std::string& action, |
| 273 const std::set<std::string>& mime_types, | 274 const std::set<std::string>& mime_types, |
| 274 std::string* title) { | 275 std::string* title) { |
| 275 DCHECK(!mime_types.empty()); | 276 DCHECK(!mime_types.empty()); |
| 276 std::set<std::string> pending(mime_types.begin(), mime_types.end()); | 277 std::set<std::string> pending(mime_types.begin(), mime_types.end()); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 296 found_title = UTF16ToUTF8(data->title); | 297 found_title = UTF16ToUTF8(data->title); |
| 297 } | 298 } |
| 298 | 299 |
| 299 // Not all mime-types have been found. | 300 // Not all mime-types have been found. |
| 300 if (!pending.empty()) | 301 if (!pending.empty()) |
| 301 return false; | 302 return false; |
| 302 | 303 |
| 303 *title = found_title; | 304 *title = found_title; |
| 304 return true; | 305 return true; |
| 305 } | 306 } |
| 307 #endif // defined(ENABLE_WEB_INTENTS) |
| 306 | 308 |
| 307 // Retrieves total and remaining available size on |mount_path|. | 309 // Retrieves total and remaining available size on |mount_path|. |
| 308 void GetSizeStatsOnFileThread(const std::string& mount_path, | 310 void GetSizeStatsOnFileThread(const std::string& mount_path, |
| 309 size_t* total_size_kb, | 311 size_t* total_size_kb, |
| 310 size_t* remaining_size_kb) { | 312 size_t* remaining_size_kb) { |
| 311 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); | 313 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
| 312 | 314 |
| 313 uint64_t total_size_in_bytes = 0; | 315 uint64_t total_size_in_bytes = 0; |
| 314 uint64_t remaining_size_in_bytes = 0; | 316 uint64_t remaining_size_in_bytes = 0; |
| 315 | 317 |
| (...skipping 655 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 971 task->SetString("iconUrl", kDefaultIcon); | 973 task->SetString("iconUrl", kDefaultIcon); |
| 972 | 974 |
| 973 task->SetBoolean("driveApp", false); | 975 task->SetBoolean("driveApp", false); |
| 974 result_list->Append(task); | 976 result_list->Append(task); |
| 975 } | 977 } |
| 976 } | 978 } |
| 977 | 979 |
| 978 return true; | 980 return true; |
| 979 } | 981 } |
| 980 | 982 |
| 983 #if defined(ENABLE_WEB_INTENTS) |
| 981 // Find Web Intent platform apps that support the View task, and add them to | 984 // Find Web Intent platform apps that support the View task, and add them to |
| 982 // the |result_list|. These will be marked as kTaskWebIntent. | 985 // the |result_list|. These will be marked as kTaskWebIntent. |
| 983 bool GetFileTasksFileBrowserFunction::FindWebIntentTasks( | 986 bool GetFileTasksFileBrowserFunction::FindWebIntentTasks( |
| 984 const std::vector<FilePath>& file_paths, | 987 const std::vector<FilePath>& file_paths, |
| 985 ListValue* result_list) { | 988 ListValue* result_list) { |
| 986 DCHECK(!file_paths.empty()); | 989 DCHECK(!file_paths.empty()); |
| 987 ExtensionService* service = profile_->GetExtensionService(); | 990 ExtensionService* service = profile_->GetExtensionService(); |
| 988 if (!service) | 991 if (!service) |
| 989 return false; | 992 return false; |
| 990 | 993 |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1022 task->SetString("iconUrl", best_icon.spec()); | 1025 task->SetString("iconUrl", best_icon.spec()); |
| 1023 else | 1026 else |
| 1024 task->SetString("iconUrl", kDefaultIcon); | 1027 task->SetString("iconUrl", kDefaultIcon); |
| 1025 | 1028 |
| 1026 task->SetBoolean("driveApp", false); | 1029 task->SetBoolean("driveApp", false); |
| 1027 result_list->Append(task); | 1030 result_list->Append(task); |
| 1028 } | 1031 } |
| 1029 | 1032 |
| 1030 return true; | 1033 return true; |
| 1031 } | 1034 } |
| 1035 #endif // defined(ENABLE_WEB_INTENTS) |
| 1032 | 1036 |
| 1033 bool GetFileTasksFileBrowserFunction::RunImpl() { | 1037 bool GetFileTasksFileBrowserFunction::RunImpl() { |
| 1034 // First argument is the list of files to get tasks for. | 1038 // First argument is the list of files to get tasks for. |
| 1035 ListValue* files_list = NULL; | 1039 ListValue* files_list = NULL; |
| 1036 if (!args_->GetList(0, &files_list)) | 1040 if (!args_->GetList(0, &files_list)) |
| 1037 return false; | 1041 return false; |
| 1038 | 1042 |
| 1039 // Second argument is the list of mime types of each of the files in the list. | 1043 // Second argument is the list of mime types of each of the files in the list. |
| 1040 ListValue* mime_types_list = NULL; | 1044 ListValue* mime_types_list = NULL; |
| 1041 if (!args_->GetList(1, &mime_types_list)) | 1045 if (!args_->GetList(1, &mime_types_list)) |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1138 result_list->Append(task); | 1142 result_list->Append(task); |
| 1139 } | 1143 } |
| 1140 | 1144 |
| 1141 // Take the union of platform app file handlers, Web Intents that platform | 1145 // Take the union of platform app file handlers, Web Intents that platform |
| 1142 // apps may accept, and all previous Drive and extension tasks. As above, we | 1146 // apps may accept, and all previous Drive and extension tasks. As above, we |
| 1143 // know there aren't duplicates because they're entirely different kinds of | 1147 // know there aren't duplicates because they're entirely different kinds of |
| 1144 // tasks. | 1148 // tasks. |
| 1145 if (!FindAppTasks(file_paths, result_list)) | 1149 if (!FindAppTasks(file_paths, result_list)) |
| 1146 return false; | 1150 return false; |
| 1147 | 1151 |
| 1152 #if defined(ENABLE_WEB_INTENTS) |
| 1148 // TODO(benwells): remove the web intents tasks once we no longer support | 1153 // TODO(benwells): remove the web intents tasks once we no longer support |
| 1149 // them. | 1154 // them. |
| 1150 if (!FindWebIntentTasks(file_paths, result_list)) | 1155 if (!FindWebIntentTasks(file_paths, result_list)) |
| 1151 return false; | 1156 return false; |
| 1157 #endif |
| 1152 | 1158 |
| 1153 if (VLOG_IS_ON(1)) { | 1159 if (VLOG_IS_ON(1)) { |
| 1154 std::string result_json; | 1160 std::string result_json; |
| 1155 base::JSONWriter::WriteWithOptions( | 1161 base::JSONWriter::WriteWithOptions( |
| 1156 result_list, | 1162 result_list, |
| 1157 base::JSONWriter::OPTIONS_DO_NOT_ESCAPE | | 1163 base::JSONWriter::OPTIONS_DO_NOT_ESCAPE | |
| 1158 base::JSONWriter::OPTIONS_PRETTY_PRINT, | 1164 base::JSONWriter::OPTIONS_PRETTY_PRINT, |
| 1159 &result_json); | 1165 &result_json); |
| 1160 VLOG(1) << "GetFileTasks result:\n" << result_json; | 1166 VLOG(1) << "GetFileTasks result:\n" << result_json; |
| 1161 } | 1167 } |
| (...skipping 2040 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3202 this, name.size())); | 3208 this, name.size())); |
| 3203 return true; | 3209 return true; |
| 3204 } | 3210 } |
| 3205 | 3211 |
| 3206 void ValidatePathNameLengthFunction::OnFilePathLimitRetrieved( | 3212 void ValidatePathNameLengthFunction::OnFilePathLimitRetrieved( |
| 3207 size_t current_length, | 3213 size_t current_length, |
| 3208 size_t max_length) { | 3214 size_t max_length) { |
| 3209 SetResult(new base::FundamentalValue(current_length <= max_length)); | 3215 SetResult(new base::FundamentalValue(current_length <= max_length)); |
| 3210 SendResponse(true); | 3216 SendResponse(true); |
| 3211 } | 3217 } |
| OLD | NEW |