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

Unified Diff: chrome/browser/chromeos/file_manager/volume_manager.cc

Issue 192573002: [fsp] Introduce file_system_provider::Service class for the FileSystemProvider API. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Simplified. Created 6 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/file_manager/volume_manager.cc
diff --git a/chrome/browser/chromeos/file_manager/volume_manager.cc b/chrome/browser/chromeos/file_manager/volume_manager.cc
index b980caf302897eb35822ba1d4b16ccf90e71456a..0459c577228c3802578cc35287bf8a29baa13abd 100644
--- a/chrome/browser/chromeos/file_manager/volume_manager.cc
+++ b/chrome/browser/chromeos/file_manager/volume_manager.cc
@@ -20,6 +20,7 @@
#include "chrome/browser/chromeos/file_manager/path_util.h"
#include "chrome/browser/chromeos/file_manager/volume_manager_factory.h"
#include "chrome/browser/chromeos/file_manager/volume_manager_observer.h"
+#include "chrome/browser/chromeos/file_system_provider/provided_file_system.h"
#include "chrome/browser/chromeos/profiles/profile_helper.h"
#include "chrome/browser/local_discovery/storage/privet_filesystem_constants.h"
#include "chrome/browser/profiles/profile.h"
@@ -103,6 +104,8 @@ std::string VolumeTypeToString(VolumeType type) {
return "cloud_device";
case VOLUME_TYPE_TESTING:
return "testing";
+ case VOLUME_TYPE_PROVIDED:
+ return "provided";
}
NOTREACHED();
return "";
@@ -199,6 +202,18 @@ VolumeInfo CreatePrivetVolumeInfo(
return volume_info;
}
+VolumeInfo CreateProvidedFileSystemVolumeInfo(
+ const chromeos::file_system_provider::ProvidedFileSystem& file_system) {
+ VolumeInfo volume_info;
+ volume_info.type = VOLUME_TYPE_PROVIDED;
+ volume_info.mount_path = file_system.mount_path();
+ volume_info.mount_condition = chromeos::disks::MOUNT_CONDITION_NONE;
+ volume_info.is_parent = true;
+ volume_info.is_read_only = true;
+ volume_info.volume_id = GenerateVolumeId(volume_info);
+ return volume_info;
+}
+
} // namespace
VolumeInfo::VolumeInfo() {
@@ -211,12 +226,14 @@ VolumeManager::VolumeManager(
Profile* profile,
drive::DriveIntegrationService* drive_integration_service,
chromeos::PowerManagerClient* power_manager_client,
- chromeos::disks::DiskMountManager* disk_mount_manager)
+ chromeos::disks::DiskMountManager* disk_mount_manager,
+ chromeos::file_system_provider::Service* file_system_provider_service)
: profile_(profile),
drive_integration_service_(drive_integration_service),
disk_mount_manager_(disk_mount_manager),
mounted_disk_monitor_(
- new MountedDiskMonitor(power_manager_client, disk_mount_manager)) {
+ new MountedDiskMonitor(power_manager_client, disk_mount_manager)),
+ file_system_provider_service_(file_system_provider_service) {
DCHECK(disk_mount_manager);
}
@@ -272,6 +289,21 @@ void VolumeManager::Initialize() {
// Subscribe to DiskMountManager.
disk_mount_manager_->AddObserver(this);
+ // Subscribe to FileSystemProviderService and register currently mounted
+ // volumes for the profile.
+ if (file_system_provider_service_) {
+ using chromeos::file_system_provider::ProvidedFileSystem;
+ file_system_provider_service_->AddObserver(this);
+
+ std::vector<ProvidedFileSystem> provided_file_systems =
+ file_system_provider_service_->GetRegisteredFileSystems();
+ for (size_t i = 0; i < provided_file_systems.size(); ++i) {
+ VolumeInfo volume_info =
+ CreateProvidedFileSystemVolumeInfo(provided_file_systems[i]);
+ DoMountEvent(chromeos::MOUNT_ERROR_NONE, volume_info, kNotRemounting);
+ }
+ }
+
std::vector<VolumeInfo> archives;
const chromeos::disks::DiskMountManager::MountPointMap& mount_points =
@@ -342,6 +374,9 @@ void VolumeManager::Shutdown() {
if (drive_integration_service_)
drive_integration_service_->RemoveObserver(this);
+
+ if (file_system_provider_service_)
+ file_system_provider_service_->RemoveObserver(this);
}
void VolumeManager::AddObserver(VolumeManagerObserver* observer) {
@@ -584,6 +619,18 @@ void VolumeManager::OnFormatEvent(
NOTREACHED();
}
+void VolumeManager::OnProvidedFileSystemRegistered(
+ const chromeos::file_system_provider::ProvidedFileSystem& file_system) {
+ VolumeInfo volume_info = CreateProvidedFileSystemVolumeInfo(file_system);
+ DoMountEvent(chromeos::MOUNT_ERROR_NONE, volume_info, false /* remounting */);
+}
+
+void VolumeManager::OnProvidedFileSystemUnregistered(
+ const chromeos::file_system_provider::ProvidedFileSystem& file_system) {
+ VolumeInfo volume_info = CreateProvidedFileSystemVolumeInfo(file_system);
+ DoUnmountEvent(chromeos::MOUNT_ERROR_NONE, volume_info);
+}
+
void VolumeManager::OnExternalStorageDisabledChanged() {
// If the policy just got disabled we have to unmount every device currently
// mounted. The opposite is fine - we can let the user re-plug her device to
« 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