Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(132)

Side by Side Diff: chrome/browser/chromeos/file_manager/volume_manager.cc

Issue 1093383002: [WIP] Provided file system from NACL. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Moved several modules to chromeos folder. Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/file_manager/volume_manager.h" 5 #include "chrome/browser/chromeos/file_manager/volume_manager.h"
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/files/file_path.h" 10 #include "base/files/file_path.h"
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 case VOLUME_TYPE_REMOVABLE_DISK_PARTITION: 103 case VOLUME_TYPE_REMOVABLE_DISK_PARTITION:
104 return "removable"; 104 return "removable";
105 case VOLUME_TYPE_MOUNTED_ARCHIVE_FILE: 105 case VOLUME_TYPE_MOUNTED_ARCHIVE_FILE:
106 return "archive"; 106 return "archive";
107 case VOLUME_TYPE_PROVIDED: 107 case VOLUME_TYPE_PROVIDED:
108 return "provided"; 108 return "provided";
109 case VOLUME_TYPE_MTP: 109 case VOLUME_TYPE_MTP:
110 return "mtp"; 110 return "mtp";
111 case VOLUME_TYPE_TESTING: 111 case VOLUME_TYPE_TESTING:
112 return "testing"; 112 return "testing";
113 case VOLUME_TYPE_PLUGIN_PROVIDED:
114 return "plugin_provided";
113 case NUM_VOLUME_TYPE: 115 case NUM_VOLUME_TYPE:
114 break; 116 break;
115 } 117 }
116 NOTREACHED(); 118 NOTREACHED();
117 return ""; 119 return "";
118 } 120 }
119 121
120 // Generates a unique volume ID for the given volume info. 122 // Generates a unique volume ID for the given volume info.
121 std::string GenerateVolumeId(const Volume& volume) { 123 std::string GenerateVolumeId(const Volume& volume) {
122 // For the same volume type, base names are unique, as mount points are 124 // For the same volume type, base names are unique, as mount points are
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
217 case extensions::SOURCE_FILE: 219 case extensions::SOURCE_FILE:
218 volume->source_ = SOURCE_FILE; 220 volume->source_ = SOURCE_FILE;
219 break; 221 break;
220 case extensions::SOURCE_DEVICE: 222 case extensions::SOURCE_DEVICE:
221 volume->source_ = SOURCE_DEVICE; 223 volume->source_ = SOURCE_DEVICE;
222 break; 224 break;
223 case extensions::SOURCE_NETWORK: 225 case extensions::SOURCE_NETWORK:
224 volume->source_ = SOURCE_NETWORK; 226 volume->source_ = SOURCE_NETWORK;
225 break; 227 break;
226 } 228 }
229 using chromeos::file_system_provider::Source_Type;
227 volume->volume_label_ = file_system_info.display_name(); 230 volume->volume_label_ = file_system_info.display_name();
228 volume->type_ = VOLUME_TYPE_PROVIDED; 231 volume->type_ = file_system_info.source_type() == Source_Type::plugin ?
232 VOLUME_TYPE_PLUGIN_PROVIDED : VOLUME_TYPE_PROVIDED;
229 volume->mount_path_ = file_system_info.mount_path(); 233 volume->mount_path_ = file_system_info.mount_path();
230 volume->mount_condition_ = chromeos::disks::MOUNT_CONDITION_NONE; 234 volume->mount_condition_ = chromeos::disks::MOUNT_CONDITION_NONE;
231 volume->mount_context_ = mount_context; 235 volume->mount_context_ = mount_context;
232 volume->is_parent_ = true; 236 volume->is_parent_ = true;
233 volume->is_read_only_ = !file_system_info.writable(); 237 volume->is_read_only_ = !file_system_info.writable();
234 volume->configurable_ = file_system_info.configurable(); 238 volume->configurable_ = file_system_info.configurable();
235 volume->volume_id_ = GenerateVolumeId(*volume); 239 volume->volume_id_ = GenerateVolumeId(*volume);
236 return volume; 240 return volume;
237 } 241 }
238 242
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
273 277
274 // static 278 // static
275 Volume* Volume::CreateForTesting(const base::FilePath& device_path, 279 Volume* Volume::CreateForTesting(const base::FilePath& device_path,
276 const base::FilePath& mount_path) { 280 const base::FilePath& mount_path) {
277 Volume* const volume = new Volume; 281 Volume* const volume = new Volume;
278 volume->system_path_prefix_ = device_path; 282 volume->system_path_prefix_ = device_path;
279 volume->mount_path_ = mount_path; 283 volume->mount_path_ = mount_path;
280 return volume; 284 return volume;
281 } 285 }
282 286
283 VolumeManager::VolumeManager( 287 VolumeManager::VolumeManager(Profile* profile,
284 Profile* profile,
285 drive::DriveIntegrationService* drive_integration_service, 288 drive::DriveIntegrationService* drive_integration_service,
286 chromeos::PowerManagerClient* power_manager_client, 289 chromeos::PowerManagerClient* power_manager_client,
287 chromeos::disks::DiskMountManager* disk_mount_manager, 290 chromeos::disks::DiskMountManager* disk_mount_manager,
288 chromeos::file_system_provider::Service* file_system_provider_service, 291 chromeos::file_system_provider::Service* file_system_provider_service,
292 chromeos::file_system_provider::PluginService*
293 file_system_plugin_provided_service,
289 GetMtpStorageInfoCallback get_mtp_storage_info_callback) 294 GetMtpStorageInfoCallback get_mtp_storage_info_callback)
290 : profile_(profile), 295 : profile_(profile),
291 drive_integration_service_(drive_integration_service), 296 drive_integration_service_(drive_integration_service),
292 disk_mount_manager_(disk_mount_manager), 297 disk_mount_manager_(disk_mount_manager),
293 file_system_provider_service_(file_system_provider_service), 298 file_system_provider_service_(file_system_provider_service),
299 file_system_plugin_provided_service_(file_system_plugin_provided_service),
294 get_mtp_storage_info_callback_(get_mtp_storage_info_callback), 300 get_mtp_storage_info_callback_(get_mtp_storage_info_callback),
295 snapshot_manager_(new SnapshotManager(profile_)), 301 snapshot_manager_(new SnapshotManager(profile_)),
296 weak_ptr_factory_(this) { 302 weak_ptr_factory_(this) {
297 DCHECK(disk_mount_manager); 303 DCHECK(disk_mount_manager);
298 } 304 }
299 305
300 VolumeManager::~VolumeManager() { 306 VolumeManager::~VolumeManager() {
301 } 307 }
302 308
303 VolumeManager* VolumeManager::Get(content::BrowserContext* context) { 309 VolumeManager* VolumeManager::Get(content::BrowserContext* context) {
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
340 file_system_provider_service_->AddObserver(this); 346 file_system_provider_service_->AddObserver(this);
341 347
342 std::vector<ProvidedFileSystemInfo> file_system_info_list = 348 std::vector<ProvidedFileSystemInfo> file_system_info_list =
343 file_system_provider_service_->GetProvidedFileSystemInfoList(); 349 file_system_provider_service_->GetProvidedFileSystemInfoList();
344 for (size_t i = 0; i < file_system_info_list.size(); ++i) { 350 for (size_t i = 0; i < file_system_info_list.size(); ++i) {
345 linked_ptr<Volume> volume(Volume::CreateForProvidedFileSystem( 351 linked_ptr<Volume> volume(Volume::CreateForProvidedFileSystem(
346 file_system_info_list[i], MOUNT_CONTEXT_AUTO)); 352 file_system_info_list[i], MOUNT_CONTEXT_AUTO));
347 DoMountEvent(chromeos::MOUNT_ERROR_NONE, volume); 353 DoMountEvent(chromeos::MOUNT_ERROR_NONE, volume);
348 } 354 }
349 } 355 }
350 356 // Subscribe to PluginService
357 if (file_system_plugin_provided_service_)
358 file_system_plugin_provided_service_->AddObserver(this);
351 // Subscribe to Profile Preference change. 359 // Subscribe to Profile Preference change.
352 pref_change_registrar_.Init(profile_->GetPrefs()); 360 pref_change_registrar_.Init(profile_->GetPrefs());
353 pref_change_registrar_.Add( 361 pref_change_registrar_.Add(
354 prefs::kExternalStorageDisabled, 362 prefs::kExternalStorageDisabled,
355 base::Bind(&VolumeManager::OnExternalStorageDisabledChanged, 363 base::Bind(&VolumeManager::OnExternalStorageDisabledChanged,
356 weak_ptr_factory_.GetWeakPtr())); 364 weak_ptr_factory_.GetWeakPtr()));
357 365
358 // Subscribe to storage monitor for MTP notifications. 366 // Subscribe to storage monitor for MTP notifications.
359 if (storage_monitor::StorageMonitor::GetInstance()) { 367 if (storage_monitor::StorageMonitor::GetInstance()) {
360 storage_monitor::StorageMonitor::GetInstance()->EnsureInitialized( 368 storage_monitor::StorageMonitor::GetInstance()->EnsureInitialized(
361 base::Bind(&VolumeManager::OnStorageMonitorInitialized, 369 base::Bind(&VolumeManager::OnStorageMonitorInitialized,
362 weak_ptr_factory_.GetWeakPtr())); 370 weak_ptr_factory_.GetWeakPtr()));
363 } 371 }
364 } 372 }
365 373
366 void VolumeManager::Shutdown() { 374 void VolumeManager::Shutdown() {
367 weak_ptr_factory_.InvalidateWeakPtrs(); 375 weak_ptr_factory_.InvalidateWeakPtrs();
368 376
369 snapshot_manager_.reset(); 377 snapshot_manager_.reset();
370 pref_change_registrar_.RemoveAll(); 378 pref_change_registrar_.RemoveAll();
371 disk_mount_manager_->RemoveObserver(this); 379 disk_mount_manager_->RemoveObserver(this);
372 if (storage_monitor::StorageMonitor::GetInstance()) 380 if (storage_monitor::StorageMonitor::GetInstance())
373 storage_monitor::StorageMonitor::GetInstance()->RemoveObserver(this); 381 storage_monitor::StorageMonitor::GetInstance()->RemoveObserver(this);
374 382
375 if (drive_integration_service_) 383 if (drive_integration_service_)
376 drive_integration_service_->RemoveObserver(this); 384 drive_integration_service_->RemoveObserver(this);
377 385
378 if (file_system_provider_service_) 386 if (file_system_provider_service_)
379 file_system_provider_service_->RemoveObserver(this); 387 file_system_provider_service_->RemoveObserver(this);
388 if (file_system_plugin_provided_service_)
389 file_system_plugin_provided_service_->RemoveObserver(this);
380 } 390 }
381 391
382 void VolumeManager::AddObserver(VolumeManagerObserver* observer) { 392 void VolumeManager::AddObserver(VolumeManagerObserver* observer) {
383 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 393 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
384 DCHECK(observer); 394 DCHECK(observer);
385 observers_.AddObserver(observer); 395 observers_.AddObserver(observer);
386 } 396 }
387 397
388 void VolumeManager::RemoveObserver(VolumeManagerObserver* observer) { 398 void VolumeManager::RemoveObserver(VolumeManagerObserver* observer) {
389 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 399 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
(...skipping 476 matching lines...) Expand 10 before | Expand all | Expand 10 after
866 if (mounted_volumes_.find(volume->volume_id()) == mounted_volumes_.end()) 876 if (mounted_volumes_.find(volume->volume_id()) == mounted_volumes_.end())
867 return; 877 return;
868 if (error_code == chromeos::MOUNT_ERROR_NONE) 878 if (error_code == chromeos::MOUNT_ERROR_NONE)
869 mounted_volumes_.erase(volume->volume_id()); 879 mounted_volumes_.erase(volume->volume_id());
870 880
871 FOR_EACH_OBSERVER(VolumeManagerObserver, observers_, 881 FOR_EACH_OBSERVER(VolumeManagerObserver, observers_,
872 OnVolumeUnmounted(error_code, *volume.get())); 882 OnVolumeUnmounted(error_code, *volume.get()));
873 } 883 }
874 884
875 } // namespace file_manager 885 } // namespace file_manager
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/file_manager/volume_manager.h ('k') | chrome/browser/chromeos/file_manager/volume_manager_factory.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698