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 #ifndef CHROME_BROWSER_CHROMEOS_FILE_MANAGER_VOLUME_MANAGER_H_ | 5 #ifndef CHROME_BROWSER_CHROMEOS_FILE_MANAGER_VOLUME_MANAGER_H_ |
6 #define CHROME_BROWSER_CHROMEOS_FILE_MANAGER_VOLUME_MANAGER_H_ | 6 #define CHROME_BROWSER_CHROMEOS_FILE_MANAGER_VOLUME_MANAGER_H_ |
7 | 7 |
8 #include <map> | 8 #include <map> |
9 #include <memory> | 9 #include <memory> |
10 #include <string> | 10 #include <string> |
11 #include <vector> | 11 #include <vector> |
12 | 12 |
13 #include "base/callback.h" | 13 #include "base/callback.h" |
14 #include "base/files/file.h" | 14 #include "base/files/file.h" |
15 #include "base/files/file_path.h" | 15 #include "base/files/file_path.h" |
16 #include "base/macros.h" | 16 #include "base/macros.h" |
17 #include "base/memory/linked_ptr.h" | 17 #include "base/memory/linked_ptr.h" |
18 #include "base/memory/weak_ptr.h" | 18 #include "base/memory/weak_ptr.h" |
19 #include "base/observer_list.h" | 19 #include "base/observer_list.h" |
20 #include "chrome/browser/chromeos/drive/drive_integration_service.h" | 20 #include "chrome/browser/chromeos/drive/drive_integration_service.h" |
21 #include "chrome/browser/chromeos/file_system_provider/observer.h" | 21 #include "chrome/browser/chromeos/file_system_provider/observer.h" |
22 #include "chrome/browser/chromeos/file_system_provider/service.h" | 22 #include "chrome/browser/chromeos/file_system_provider/service.h" |
23 #include "chromeos/dbus/cros_disks_client.h" | 23 #include "chromeos/dbus/cros_disks_client.h" |
24 #include "chromeos/disks/disk_mount_manager.h" | 24 #include "chromeos/disks/disk_mount_manager.h" |
| 25 #include "components/arc/file_system/arc_file_system_observer.h" |
25 #include "components/keyed_service/core/keyed_service.h" | 26 #include "components/keyed_service/core/keyed_service.h" |
26 #include "components/prefs/pref_change_registrar.h" | 27 #include "components/prefs/pref_change_registrar.h" |
27 #include "components/storage_monitor/removable_storage_observer.h" | 28 #include "components/storage_monitor/removable_storage_observer.h" |
28 #include "device/media_transfer_protocol/mtp_storage_info.pb.h" | 29 #include "device/media_transfer_protocol/mtp_storage_info.pb.h" |
29 | 30 |
30 class Profile; | 31 class Profile; |
31 | 32 |
32 namespace chromeos { | 33 namespace chromeos { |
33 class PowerManagerClient; | 34 class PowerManagerClient; |
34 } // namespace chromeos | 35 } // namespace chromeos |
35 | 36 |
36 namespace content { | 37 namespace content { |
37 class BrowserContext; | 38 class BrowserContext; |
38 } // namespace content | 39 } // namespace content |
39 | 40 |
40 namespace file_manager { | 41 namespace file_manager { |
41 | 42 |
42 class SnapshotManager; | 43 class SnapshotManager; |
43 class VolumeManagerObserver; | 44 class VolumeManagerObserver; |
44 | 45 |
45 // Identifiers for volume types managed by Chrome OS file manager. | 46 // Identifiers for volume types managed by Chrome OS file manager. |
46 enum VolumeType { | 47 enum VolumeType { |
47 VOLUME_TYPE_TESTING = -1, // Used only in tests. | 48 VOLUME_TYPE_TESTING = -1, // Used only in tests. |
48 VOLUME_TYPE_GOOGLE_DRIVE = 0, | 49 VOLUME_TYPE_GOOGLE_DRIVE = 0, |
49 VOLUME_TYPE_DOWNLOADS_DIRECTORY, | 50 VOLUME_TYPE_DOWNLOADS_DIRECTORY, |
50 VOLUME_TYPE_REMOVABLE_DISK_PARTITION, | 51 VOLUME_TYPE_REMOVABLE_DISK_PARTITION, |
51 VOLUME_TYPE_MOUNTED_ARCHIVE_FILE, | 52 VOLUME_TYPE_MOUNTED_ARCHIVE_FILE, |
52 VOLUME_TYPE_PROVIDED, // File system provided by the FileSystemProvider API. | 53 VOLUME_TYPE_PROVIDED, // File system provided by the FileSystemProvider API. |
53 VOLUME_TYPE_MTP, | 54 VOLUME_TYPE_MTP, |
| 55 VOLUME_TYPE_MEDIA_VIEW, |
54 // The enum values must be kept in sync with FileManagerVolumeType in | 56 // The enum values must be kept in sync with FileManagerVolumeType in |
55 // tools/metrics/histograms/histograms.xml. Since enums for histograms are | 57 // tools/metrics/histograms/histograms.xml. Since enums for histograms are |
56 // append-only (for keeping the number consistent across versions), new values | 58 // append-only (for keeping the number consistent across versions), new values |
57 // for this enum also has to be always appended at the end (i.e., here). | 59 // for this enum also has to be always appended at the end (i.e., here). |
58 NUM_VOLUME_TYPE, | 60 NUM_VOLUME_TYPE, |
59 }; | 61 }; |
60 | 62 |
61 // Says how was the mount performed, whether due to user interaction, or | 63 // Says how was the mount performed, whether due to user interaction, or |
62 // automatic. User interaction includes both hardware (pluggins a USB stick) | 64 // automatic. User interaction includes both hardware (pluggins a USB stick) |
63 // or software (mounting a ZIP archive) interaction. | 65 // or software (mounting a ZIP archive) interaction. |
(...skipping 19 matching lines...) Expand all Loading... |
83 static Volume* CreateForRemovable( | 85 static Volume* CreateForRemovable( |
84 const chromeos::disks::DiskMountManager::MountPointInfo& mount_point, | 86 const chromeos::disks::DiskMountManager::MountPointInfo& mount_point, |
85 const chromeos::disks::DiskMountManager::Disk* disk); | 87 const chromeos::disks::DiskMountManager::Disk* disk); |
86 static Volume* CreateForProvidedFileSystem( | 88 static Volume* CreateForProvidedFileSystem( |
87 const chromeos::file_system_provider::ProvidedFileSystemInfo& | 89 const chromeos::file_system_provider::ProvidedFileSystemInfo& |
88 file_system_info, | 90 file_system_info, |
89 MountContext mount_context); | 91 MountContext mount_context); |
90 static Volume* CreateForMTP(const base::FilePath& mount_path, | 92 static Volume* CreateForMTP(const base::FilePath& mount_path, |
91 const std::string& label, | 93 const std::string& label, |
92 bool read_only); | 94 bool read_only); |
| 95 static Volume* CreateForMediaView(const std::string& root_document_id); |
93 static Volume* CreateForTesting(const base::FilePath& path, | 96 static Volume* CreateForTesting(const base::FilePath& path, |
94 VolumeType volume_type, | 97 VolumeType volume_type, |
95 chromeos::DeviceType device_type, | 98 chromeos::DeviceType device_type, |
96 bool read_only); | 99 bool read_only); |
97 static Volume* CreateForTesting(const base::FilePath& device_path, | 100 static Volume* CreateForTesting(const base::FilePath& device_path, |
98 const base::FilePath& mount_path); | 101 const base::FilePath& mount_path); |
99 | 102 |
100 // Getters for all members. See below for details. | 103 // Getters for all members. See below for details. |
101 const std::string& volume_id() const { return volume_id_; } | 104 const std::string& volume_id() const { return volume_id_; } |
102 const std::string& file_system_id() const { return file_system_id_; } | 105 const std::string& file_system_id() const { return file_system_id_; } |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
204 DISALLOW_COPY_AND_ASSIGN(Volume); | 207 DISALLOW_COPY_AND_ASSIGN(Volume); |
205 }; | 208 }; |
206 | 209 |
207 // Manages "Volume"s for file manager. Here are "Volume"s. | 210 // Manages "Volume"s for file manager. Here are "Volume"s. |
208 // - Drive File System (not yet supported). | 211 // - Drive File System (not yet supported). |
209 // - Downloads directory. | 212 // - Downloads directory. |
210 // - Removable disks (volume will be created for each partition, not only one | 213 // - Removable disks (volume will be created for each partition, not only one |
211 // for a device). | 214 // for a device). |
212 // - Mounted zip archives. | 215 // - Mounted zip archives. |
213 class VolumeManager : public KeyedService, | 216 class VolumeManager : public KeyedService, |
| 217 public arc::ArcFileSystemObserver, |
214 public drive::DriveIntegrationServiceObserver, | 218 public drive::DriveIntegrationServiceObserver, |
215 public chromeos::disks::DiskMountManager::Observer, | 219 public chromeos::disks::DiskMountManager::Observer, |
216 public chromeos::file_system_provider::Observer, | 220 public chromeos::file_system_provider::Observer, |
217 public storage_monitor::RemovableStorageObserver { | 221 public storage_monitor::RemovableStorageObserver { |
218 public: | 222 public: |
219 // Returns MediaTransferProtocolManager. Used for injecting | 223 // Returns MediaTransferProtocolManager. Used for injecting |
220 // FakeMediaTransferProtocolManager for testing. | 224 // FakeMediaTransferProtocolManager for testing. |
221 typedef base::Callback<const MtpStorageInfo*(const std::string&)> | 225 typedef base::Callback<const MtpStorageInfo*(const std::string&)> |
222 GetMtpStorageInfoCallback; | 226 GetMtpStorageInfoCallback; |
223 | 227 |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
290 void OnProvidedFileSystemMount( | 294 void OnProvidedFileSystemMount( |
291 const chromeos::file_system_provider::ProvidedFileSystemInfo& | 295 const chromeos::file_system_provider::ProvidedFileSystemInfo& |
292 file_system_info, | 296 file_system_info, |
293 chromeos::file_system_provider::MountContext context, | 297 chromeos::file_system_provider::MountContext context, |
294 base::File::Error error) override; | 298 base::File::Error error) override; |
295 void OnProvidedFileSystemUnmount( | 299 void OnProvidedFileSystemUnmount( |
296 const chromeos::file_system_provider::ProvidedFileSystemInfo& | 300 const chromeos::file_system_provider::ProvidedFileSystemInfo& |
297 file_system_info, | 301 file_system_info, |
298 base::File::Error error) override; | 302 base::File::Error error) override; |
299 | 303 |
| 304 // arc::ArcFileSystemObserver overrides. |
| 305 void OnFileSystemsReady() override; |
| 306 void OnFileSystemsClosed() override; |
| 307 |
300 // Called on change to kExternalStorageDisabled pref. | 308 // Called on change to kExternalStorageDisabled pref. |
301 void OnExternalStorageDisabledChanged(); | 309 void OnExternalStorageDisabledChanged(); |
302 | 310 |
303 // Called on change to kExternalStorageReadOnly pref. | 311 // Called on change to kExternalStorageReadOnly pref. |
304 void OnExternalStorageReadOnlyChanged(); | 312 void OnExternalStorageReadOnlyChanged(); |
305 | 313 |
306 // RemovableStorageObserver overrides. | 314 // RemovableStorageObserver overrides. |
307 void OnRemovableStorageAttached( | 315 void OnRemovableStorageAttached( |
308 const storage_monitor::StorageInfo& info) override; | 316 const storage_monitor::StorageInfo& info) override; |
309 void OnRemovableStorageDetached( | 317 void OnRemovableStorageDetached( |
(...skipping 24 matching lines...) Expand all Loading... |
334 | 342 |
335 // Note: This should remain the last member so it'll be destroyed and | 343 // Note: This should remain the last member so it'll be destroyed and |
336 // invalidate its weak pointers before any other members are destroyed. | 344 // invalidate its weak pointers before any other members are destroyed. |
337 base::WeakPtrFactory<VolumeManager> weak_ptr_factory_; | 345 base::WeakPtrFactory<VolumeManager> weak_ptr_factory_; |
338 DISALLOW_COPY_AND_ASSIGN(VolumeManager); | 346 DISALLOW_COPY_AND_ASSIGN(VolumeManager); |
339 }; | 347 }; |
340 | 348 |
341 } // namespace file_manager | 349 } // namespace file_manager |
342 | 350 |
343 #endif // CHROME_BROWSER_CHROMEOS_FILE_MANAGER_VOLUME_MANAGER_H_ | 351 #endif // CHROME_BROWSER_CHROMEOS_FILE_MANAGER_VOLUME_MANAGER_H_ |
OLD | NEW |