| 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_util.h" | 5 #include "chrome/browser/chromeos/extensions/file_manager/private_api_util.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/files/file_path.h" | 9 #include "base/files/file_path.h" |
| 10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
| 11 #include "chrome/browser/chromeos/drive/drive.pb.h" | 11 #include "chrome/browser/chromeos/drive/drive.pb.h" |
| 12 #include "chrome/browser/chromeos/drive/drive_integration_service.h" | 12 #include "chrome/browser/chromeos/drive/drive_integration_service.h" |
| 13 #include "chrome/browser/chromeos/drive/file_errors.h" | 13 #include "chrome/browser/chromeos/drive/file_errors.h" |
| 14 #include "chrome/browser/chromeos/drive/file_system_interface.h" | 14 #include "chrome/browser/chromeos/drive/file_system_interface.h" |
| 15 #include "chrome/browser/chromeos/drive/file_system_util.h" | 15 #include "chrome/browser/chromeos/drive/file_system_util.h" |
| 16 #include "chrome/browser/chromeos/file_manager/app_id.h" | 16 #include "chrome/browser/chromeos/file_manager/app_id.h" |
| 17 #include "chrome/browser/chromeos/file_manager/fileapi_util.h" | 17 #include "chrome/browser/chromeos/file_manager/fileapi_util.h" |
| 18 #include "chrome/browser/chromeos/file_manager/filesystem_api_util.h" | 18 #include "chrome/browser/chromeos/file_manager/filesystem_api_util.h" |
| 19 #include "chrome/browser/chromeos/file_manager/path_util.h" | 19 #include "chrome/browser/chromeos/file_manager/path_util.h" |
| 20 #include "chrome/browser/chromeos/file_manager/snapshot_manager.h" | 20 #include "chrome/browser/chromeos/file_manager/snapshot_manager.h" |
| 21 #include "chrome/browser/chromeos/file_manager/volume_manager.h" | 21 #include "chrome/browser/chromeos/file_manager/volume_manager.h" |
| 22 #include "chrome/browser/chromeos/fileapi/file_system_backend.h" | 22 #include "chrome/browser/chromeos/fileapi/file_system_backend.h" |
| 23 #include "chrome/browser/profiles/profile.h" | 23 #include "chrome/browser/profiles/profile.h" |
| 24 #include "chrome/common/extensions/api/file_browser_private.h" | 24 #include "chrome/common/extensions/api/file_manager_private.h" |
| 25 #include "content/public/browser/child_process_security_policy.h" | 25 #include "content/public/browser/child_process_security_policy.h" |
| 26 #include "ui/shell_dialogs/selected_file_info.h" | 26 #include "ui/shell_dialogs/selected_file_info.h" |
| 27 #include "webkit/browser/fileapi/file_system_context.h" | 27 #include "webkit/browser/fileapi/file_system_context.h" |
| 28 #include "webkit/browser/fileapi/file_system_url.h" | 28 #include "webkit/browser/fileapi/file_system_url.h" |
| 29 | 29 |
| 30 namespace file_browser_private = extensions::api::file_browser_private; | 30 namespace file_manager_private = extensions::api::file_manager_private; |
| 31 | 31 |
| 32 namespace file_manager { | 32 namespace file_manager { |
| 33 namespace util { | 33 namespace util { |
| 34 namespace { | 34 namespace { |
| 35 | 35 |
| 36 // The struct is used for GetSelectedFileInfo(). | 36 // The struct is used for GetSelectedFileInfo(). |
| 37 struct GetSelectedFileInfoParams { | 37 struct GetSelectedFileInfoParams { |
| 38 GetSelectedFileInfoLocalPathOption local_path_option; | 38 GetSelectedFileInfoLocalPathOption local_path_option; |
| 39 GetSelectedFileInfoCallback callback; | 39 GetSelectedFileInfoCallback callback; |
| 40 std::vector<base::FilePath> file_paths; | 40 std::vector<base::FilePath> file_paths; |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 152 const base::FilePath& file_path = params->file_paths[index]; | 152 const base::FilePath& file_path = params->file_paths[index]; |
| 153 params->selected_files.push_back(ui::SelectedFileInfo(file_path, local_path)); | 153 params->selected_files.push_back(ui::SelectedFileInfo(file_path, local_path)); |
| 154 GetSelectedFileInfoInternal(profile, params.Pass()); | 154 GetSelectedFileInfoInternal(profile, params.Pass()); |
| 155 } | 155 } |
| 156 | 156 |
| 157 } // namespace | 157 } // namespace |
| 158 | 158 |
| 159 void VolumeInfoToVolumeMetadata( | 159 void VolumeInfoToVolumeMetadata( |
| 160 Profile* profile, | 160 Profile* profile, |
| 161 const VolumeInfo& volume_info, | 161 const VolumeInfo& volume_info, |
| 162 file_browser_private::VolumeMetadata* volume_metadata) { | 162 file_manager_private::VolumeMetadata* volume_metadata) { |
| 163 DCHECK(volume_metadata); | 163 DCHECK(volume_metadata); |
| 164 | 164 |
| 165 volume_metadata->volume_id = volume_info.volume_id; | 165 volume_metadata->volume_id = volume_info.volume_id; |
| 166 | 166 |
| 167 // TODO(kinaba): fill appropriate information once multi-profile support is | 167 // TODO(kinaba): fill appropriate information once multi-profile support is |
| 168 // implemented. | 168 // implemented. |
| 169 volume_metadata->profile.display_name = profile->GetProfileName(); | 169 volume_metadata->profile.display_name = profile->GetProfileName(); |
| 170 volume_metadata->profile.is_current_profile = true; | 170 volume_metadata->profile.is_current_profile = true; |
| 171 | 171 |
| 172 if (!volume_info.source_path.empty()) { | 172 if (!volume_info.source_path.empty()) { |
| 173 volume_metadata->source_path.reset( | 173 volume_metadata->source_path.reset( |
| 174 new std::string(volume_info.source_path.AsUTF8Unsafe())); | 174 new std::string(volume_info.source_path.AsUTF8Unsafe())); |
| 175 } | 175 } |
| 176 | 176 |
| 177 if (volume_info.type == VOLUME_TYPE_PROVIDED) { | 177 if (volume_info.type == VOLUME_TYPE_PROVIDED) { |
| 178 volume_metadata->extension_id.reset( | 178 volume_metadata->extension_id.reset( |
| 179 new std::string(volume_info.extension_id)); | 179 new std::string(volume_info.extension_id)); |
| 180 | 180 |
| 181 volume_metadata->file_system_id.reset( | 181 volume_metadata->file_system_id.reset( |
| 182 new std::string(volume_info.file_system_id)); | 182 new std::string(volume_info.file_system_id)); |
| 183 } | 183 } |
| 184 | 184 |
| 185 volume_metadata->volume_label.reset( | 185 volume_metadata->volume_label.reset( |
| 186 new std::string(volume_info.volume_label)); | 186 new std::string(volume_info.volume_label)); |
| 187 | 187 |
| 188 switch (volume_info.type) { | 188 switch (volume_info.type) { |
| 189 case VOLUME_TYPE_GOOGLE_DRIVE: | 189 case VOLUME_TYPE_GOOGLE_DRIVE: |
| 190 volume_metadata->volume_type = | 190 volume_metadata->volume_type = |
| 191 file_browser_private::VOLUME_TYPE_DRIVE; | 191 file_manager_private::VOLUME_TYPE_DRIVE; |
| 192 break; | 192 break; |
| 193 case VOLUME_TYPE_DOWNLOADS_DIRECTORY: | 193 case VOLUME_TYPE_DOWNLOADS_DIRECTORY: |
| 194 volume_metadata->volume_type = | 194 volume_metadata->volume_type = |
| 195 file_browser_private::VOLUME_TYPE_DOWNLOADS; | 195 file_manager_private::VOLUME_TYPE_DOWNLOADS; |
| 196 break; | 196 break; |
| 197 case VOLUME_TYPE_REMOVABLE_DISK_PARTITION: | 197 case VOLUME_TYPE_REMOVABLE_DISK_PARTITION: |
| 198 volume_metadata->volume_type = | 198 volume_metadata->volume_type = |
| 199 file_browser_private::VOLUME_TYPE_REMOVABLE; | 199 file_manager_private::VOLUME_TYPE_REMOVABLE; |
| 200 break; | 200 break; |
| 201 case VOLUME_TYPE_MOUNTED_ARCHIVE_FILE: | 201 case VOLUME_TYPE_MOUNTED_ARCHIVE_FILE: |
| 202 volume_metadata->volume_type = file_browser_private::VOLUME_TYPE_ARCHIVE; | 202 volume_metadata->volume_type = file_manager_private::VOLUME_TYPE_ARCHIVE; |
| 203 break; | 203 break; |
| 204 case VOLUME_TYPE_CLOUD_DEVICE: | 204 case VOLUME_TYPE_CLOUD_DEVICE: |
| 205 volume_metadata->volume_type = | 205 volume_metadata->volume_type = |
| 206 file_browser_private::VOLUME_TYPE_CLOUD_DEVICE; | 206 file_manager_private::VOLUME_TYPE_CLOUD_DEVICE; |
| 207 break; | 207 break; |
| 208 case VOLUME_TYPE_PROVIDED: | 208 case VOLUME_TYPE_PROVIDED: |
| 209 volume_metadata->volume_type = file_browser_private::VOLUME_TYPE_PROVIDED; | 209 volume_metadata->volume_type = file_manager_private::VOLUME_TYPE_PROVIDED; |
| 210 break; | 210 break; |
| 211 case VOLUME_TYPE_MTP: | 211 case VOLUME_TYPE_MTP: |
| 212 volume_metadata->volume_type = file_browser_private::VOLUME_TYPE_MTP; | 212 volume_metadata->volume_type = file_manager_private::VOLUME_TYPE_MTP; |
| 213 break; | 213 break; |
| 214 case VOLUME_TYPE_TESTING: | 214 case VOLUME_TYPE_TESTING: |
| 215 volume_metadata->volume_type = | 215 volume_metadata->volume_type = |
| 216 file_browser_private::VOLUME_TYPE_TESTING; | 216 file_manager_private::VOLUME_TYPE_TESTING; |
| 217 break; | 217 break; |
| 218 case NUM_VOLUME_TYPE: | 218 case NUM_VOLUME_TYPE: |
| 219 NOTREACHED(); | 219 NOTREACHED(); |
| 220 break; | 220 break; |
| 221 } | 221 } |
| 222 | 222 |
| 223 // Fill device_type iff the volume is removable partition. | 223 // Fill device_type iff the volume is removable partition. |
| 224 if (volume_info.type == VOLUME_TYPE_REMOVABLE_DISK_PARTITION) { | 224 if (volume_info.type == VOLUME_TYPE_REMOVABLE_DISK_PARTITION) { |
| 225 switch (volume_info.device_type) { | 225 switch (volume_info.device_type) { |
| 226 case chromeos::DEVICE_TYPE_UNKNOWN: | 226 case chromeos::DEVICE_TYPE_UNKNOWN: |
| 227 volume_metadata->device_type = | 227 volume_metadata->device_type = |
| 228 file_browser_private::DEVICE_TYPE_UNKNOWN; | 228 file_manager_private::DEVICE_TYPE_UNKNOWN; |
| 229 break; | 229 break; |
| 230 case chromeos::DEVICE_TYPE_USB: | 230 case chromeos::DEVICE_TYPE_USB: |
| 231 volume_metadata->device_type = file_browser_private::DEVICE_TYPE_USB; | 231 volume_metadata->device_type = file_manager_private::DEVICE_TYPE_USB; |
| 232 break; | 232 break; |
| 233 case chromeos::DEVICE_TYPE_SD: | 233 case chromeos::DEVICE_TYPE_SD: |
| 234 volume_metadata->device_type = file_browser_private::DEVICE_TYPE_SD; | 234 volume_metadata->device_type = file_manager_private::DEVICE_TYPE_SD; |
| 235 break; | 235 break; |
| 236 case chromeos::DEVICE_TYPE_OPTICAL_DISC: | 236 case chromeos::DEVICE_TYPE_OPTICAL_DISC: |
| 237 case chromeos::DEVICE_TYPE_DVD: | 237 case chromeos::DEVICE_TYPE_DVD: |
| 238 volume_metadata->device_type = | 238 volume_metadata->device_type = |
| 239 file_browser_private::DEVICE_TYPE_OPTICAL; | 239 file_manager_private::DEVICE_TYPE_OPTICAL; |
| 240 break; | 240 break; |
| 241 case chromeos::DEVICE_TYPE_MOBILE: | 241 case chromeos::DEVICE_TYPE_MOBILE: |
| 242 volume_metadata->device_type = file_browser_private::DEVICE_TYPE_MOBILE; | 242 volume_metadata->device_type = file_manager_private::DEVICE_TYPE_MOBILE; |
| 243 break; | 243 break; |
| 244 } | 244 } |
| 245 volume_metadata->device_path.reset( | 245 volume_metadata->device_path.reset( |
| 246 new std::string(volume_info.system_path_prefix.AsUTF8Unsafe())); | 246 new std::string(volume_info.system_path_prefix.AsUTF8Unsafe())); |
| 247 volume_metadata->is_parent_device.reset( | 247 volume_metadata->is_parent_device.reset( |
| 248 new bool(volume_info.is_parent)); | 248 new bool(volume_info.is_parent)); |
| 249 } else { | 249 } else { |
| 250 volume_metadata->device_type = | 250 volume_metadata->device_type = |
| 251 file_browser_private::DEVICE_TYPE_NONE; | 251 file_manager_private::DEVICE_TYPE_NONE; |
| 252 } | 252 } |
| 253 | 253 |
| 254 volume_metadata->is_read_only = volume_info.is_read_only; | 254 volume_metadata->is_read_only = volume_info.is_read_only; |
| 255 | 255 |
| 256 switch (volume_info.mount_condition) { | 256 switch (volume_info.mount_condition) { |
| 257 case chromeos::disks::MOUNT_CONDITION_NONE: | 257 case chromeos::disks::MOUNT_CONDITION_NONE: |
| 258 volume_metadata->mount_condition = | 258 volume_metadata->mount_condition = |
| 259 file_browser_private::MOUNT_CONDITION_NONE; | 259 file_manager_private::MOUNT_CONDITION_NONE; |
| 260 break; | 260 break; |
| 261 case chromeos::disks::MOUNT_CONDITION_UNKNOWN_FILESYSTEM: | 261 case chromeos::disks::MOUNT_CONDITION_UNKNOWN_FILESYSTEM: |
| 262 volume_metadata->mount_condition = | 262 volume_metadata->mount_condition = |
| 263 file_browser_private::MOUNT_CONDITION_UNKNOWN; | 263 file_manager_private::MOUNT_CONDITION_UNKNOWN; |
| 264 break; | 264 break; |
| 265 case chromeos::disks::MOUNT_CONDITION_UNSUPPORTED_FILESYSTEM: | 265 case chromeos::disks::MOUNT_CONDITION_UNSUPPORTED_FILESYSTEM: |
| 266 volume_metadata->mount_condition = | 266 volume_metadata->mount_condition = |
| 267 file_browser_private::MOUNT_CONDITION_UNSUPPORTED; | 267 file_manager_private::MOUNT_CONDITION_UNSUPPORTED; |
| 268 break; | 268 break; |
| 269 } | 269 } |
| 270 } | 270 } |
| 271 | 271 |
| 272 base::FilePath GetLocalPathFromURL(content::RenderViewHost* render_view_host, | 272 base::FilePath GetLocalPathFromURL(content::RenderViewHost* render_view_host, |
| 273 Profile* profile, | 273 Profile* profile, |
| 274 const GURL& url) { | 274 const GURL& url) { |
| 275 DCHECK(render_view_host); | 275 DCHECK(render_view_host); |
| 276 DCHECK(profile); | 276 DCHECK(profile); |
| 277 | 277 |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 326 } | 326 } |
| 327 | 327 |
| 328 drive::EventLogger* GetLogger(Profile* profile) { | 328 drive::EventLogger* GetLogger(Profile* profile) { |
| 329 drive::DriveIntegrationService* service = | 329 drive::DriveIntegrationService* service = |
| 330 drive::DriveIntegrationServiceFactory::FindForProfile(profile); | 330 drive::DriveIntegrationServiceFactory::FindForProfile(profile); |
| 331 return service ? service->event_logger() : NULL; | 331 return service ? service->event_logger() : NULL; |
| 332 } | 332 } |
| 333 | 333 |
| 334 } // namespace util | 334 } // namespace util |
| 335 } // namespace file_manager | 335 } // namespace file_manager |
| OLD | NEW |