Chromium Code Reviews| 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 // RemovableDeviceNotificationsLinux listens for mount point changes, notifies | 5 // RemovableDeviceNotificationsLinux listens for mount point changes, notifies |
| 6 // the SystemMonitor about the addition and deletion of media devices, and | 6 // the SystemMonitor about the addition and deletion of media devices, and |
| 7 // answers queries about mounted devices. | 7 // answers queries about mounted devices. |
| 8 | 8 |
| 9 #ifndef CHROME_BROWSER_SYSTEM_MONITOR_REMOVABLE_DEVICE_NOTIFICATIONS_LINUX_H_ | 9 #ifndef CHROME_BROWSER_SYSTEM_MONITOR_REMOVABLE_DEVICE_NOTIFICATIONS_LINUX_H_ |
| 10 #define CHROME_BROWSER_SYSTEM_MONITOR_REMOVABLE_DEVICE_NOTIFICATIONS_LINUX_H_ | 10 #define CHROME_BROWSER_SYSTEM_MONITOR_REMOVABLE_DEVICE_NOTIFICATIONS_LINUX_H_ |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 21 #include "base/basictypes.h" | 21 #include "base/basictypes.h" |
| 22 #include "base/compiler_specific.h" | 22 #include "base/compiler_specific.h" |
| 23 #include "base/files/file_path_watcher.h" | 23 #include "base/files/file_path_watcher.h" |
| 24 #include "base/memory/ref_counted.h" | 24 #include "base/memory/ref_counted.h" |
| 25 #include "base/system_monitor/system_monitor.h" | 25 #include "base/system_monitor/system_monitor.h" |
| 26 #include "content/public/browser/browser_thread.h" | 26 #include "content/public/browser/browser_thread.h" |
| 27 | 27 |
| 28 class FilePath; | 28 class FilePath; |
| 29 | 29 |
| 30 // Gets device information given a |device_path|. On success, fills in | 30 // Gets device information given a |device_path|. On success, fills in |
| 31 // |unique_id|, |name|, and |removable|. | 31 // |unique_id|, |name|, |removable| and |partition_size_in_bytes|. |
| 32 typedef void (*GetDeviceInfoFunc)(const FilePath& device_path, | 32 typedef void (*GetDeviceInfoFunc)(const FilePath& device_path, |
| 33 std::string* unique_id, string16* name, | 33 std::string* unique_id, |
| 34 bool* removable); | 34 string16* name, |
| 35 bool* removable, | |
| 36 uint64* partition_size_in_bytes); | |
| 35 | 37 |
| 36 namespace chrome { | 38 namespace chrome { |
| 37 | 39 |
| 38 class RemovableDeviceNotificationsLinux; | 40 class RemovableDeviceNotificationsLinux; |
| 39 typedef RemovableDeviceNotificationsLinux RemovableDeviceNotifications; | 41 typedef RemovableDeviceNotificationsLinux RemovableDeviceNotifications; |
| 40 | 42 |
| 41 class RemovableDeviceNotificationsLinux | 43 class RemovableDeviceNotificationsLinux |
| 42 : public base::RefCountedThreadSafe<RemovableDeviceNotificationsLinux, | 44 : public base::RefCountedThreadSafe<RemovableDeviceNotificationsLinux, |
| 43 content::BrowserThread::DeleteOnFileThread> { | 45 content::BrowserThread::DeleteOnFileThread> { |
| 44 public: | 46 public: |
| 45 // Should only be called by browser start up code. Use GetInstance() instead. | 47 // Should only be called by browser start up code. Use GetInstance() instead. |
| 46 explicit RemovableDeviceNotificationsLinux(const FilePath& path); | 48 explicit RemovableDeviceNotificationsLinux(const FilePath& path); |
| 47 | 49 |
| 48 static RemovableDeviceNotificationsLinux* GetInstance(); | 50 static RemovableDeviceNotificationsLinux* GetInstance(); |
| 49 | 51 |
| 50 // Must be called for RemovableDeviceNotificationsLinux to work. | 52 // Must be called for RemovableDeviceNotificationsLinux to work. |
| 51 void Init(); | 53 void Init(); |
| 52 | 54 |
| 53 // Finds the device that contains |path| and populates |device_info|. | 55 // Finds the device that contains |path| and populates |device_info|. |
| 54 // Returns false if unable to find the device. | 56 // Returns false if unable to find the device. |
| 55 bool GetDeviceInfoForPath( | 57 bool GetDeviceInfoForPath( |
| 56 const FilePath& path, | 58 const FilePath& path, |
| 57 base::SystemMonitor::RemovableStorageInfo* device_info) const; | 59 base::SystemMonitor::RemovableStorageInfo* device_info) const; |
| 58 | 60 |
| 61 // Returns the storage partition size of the device present at |location|. | |
| 62 // If the requested information is unavailable, returns 0. | |
| 63 uint64 GetStorageSize(const std::string& location); | |
|
Lei Zhang
2012/11/13 20:35:04
nit: const
kmadhusu
2012/11/13 21:57:27
Done.
Lei Zhang
2012/11/13 22:17:49
No, I mean mark the method as const.
kmadhusu
2012/11/13 23:05:32
Done.
| |
| 64 | |
| 59 protected: | 65 protected: |
| 60 // Only for use in unit tests. | 66 // Only for use in unit tests. |
| 61 RemovableDeviceNotificationsLinux(const FilePath& path, | 67 RemovableDeviceNotificationsLinux(const FilePath& path, |
| 62 GetDeviceInfoFunc getDeviceInfo); | 68 GetDeviceInfoFunc getDeviceInfo); |
| 63 | 69 |
| 64 // Avoids code deleting the object while there are references to it. | 70 // Avoids code deleting the object while there are references to it. |
| 65 // Aside from the base::RefCountedThreadSafe friend class, and derived | 71 // Aside from the base::RefCountedThreadSafe friend class, and derived |
| 66 // classes, any attempts to call this dtor will result in a compile-time | 72 // classes, any attempts to call this dtor will result in a compile-time |
| 67 // error. | 73 // error. |
| 68 virtual ~RemovableDeviceNotificationsLinux(); | 74 virtual ~RemovableDeviceNotificationsLinux(); |
| 69 | 75 |
| 70 virtual void OnFilePathChanged(const FilePath& path, bool error); | 76 virtual void OnFilePathChanged(const FilePath& path, bool error); |
| 71 | 77 |
| 72 private: | 78 private: |
| 73 friend class base::RefCountedThreadSafe<RemovableDeviceNotificationsLinux>; | 79 friend class base::RefCountedThreadSafe<RemovableDeviceNotificationsLinux>; |
| 74 friend class base::DeleteHelper<RemovableDeviceNotificationsLinux>; | 80 friend class base::DeleteHelper<RemovableDeviceNotificationsLinux>; |
| 75 friend struct content::BrowserThread::DeleteOnThread< | 81 friend struct content::BrowserThread::DeleteOnThread< |
| 76 content::BrowserThread::FILE>; | 82 content::BrowserThread::FILE>; |
| 77 | 83 |
| 78 // Structure to save mounted device information such as device path and unique | 84 // Structure to save mounted device information such as device path, unique |
| 79 // identifier. | 85 // identifier, device name and partition size. |
| 80 struct MountPointInfo { | 86 struct MountPointInfo { |
| 81 FilePath mount_device; | 87 FilePath mount_device; |
| 82 std::string device_id; | 88 std::string device_id; |
| 83 string16 device_name; | 89 string16 device_name; |
| 90 uint64 partition_size_in_bytes; | |
| 84 }; | 91 }; |
| 85 | 92 |
| 86 // Mapping of mount points to MountPointInfo. | 93 // Mapping of mount points to MountPointInfo. |
| 87 typedef std::map<FilePath, MountPointInfo> MountMap; | 94 typedef std::map<FilePath, MountPointInfo> MountMap; |
| 88 | 95 |
| 89 // (mount point, priority) | 96 // (mount point, priority) |
| 90 // For devices that are mounted to multiple mount points, this helps us track | 97 // For devices that are mounted to multiple mount points, this helps us track |
| 91 // which one we've notified system monitor about. | 98 // which one we've notified system monitor about. |
| 92 typedef std::map<FilePath, bool> ReferencedMountPoint; | 99 typedef std::map<FilePath, bool> ReferencedMountPoint; |
| 93 | 100 |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 132 // to notify about it's departure and notify about another one of it's mount | 139 // to notify about it's departure and notify about another one of it's mount |
| 133 // points. | 140 // points. |
| 134 MountPriorityMap mount_priority_map_; | 141 MountPriorityMap mount_priority_map_; |
| 135 | 142 |
| 136 DISALLOW_COPY_AND_ASSIGN(RemovableDeviceNotificationsLinux); | 143 DISALLOW_COPY_AND_ASSIGN(RemovableDeviceNotificationsLinux); |
| 137 }; | 144 }; |
| 138 | 145 |
| 139 } // namespace chrome | 146 } // namespace chrome |
| 140 | 147 |
| 141 #endif // CHROME_BROWSER_SYSTEM_MONITOR_REMOVABLE_DEVICE_NOTIFICATIONS_LINUX_H_ | 148 #endif // CHROME_BROWSER_SYSTEM_MONITOR_REMOVABLE_DEVICE_NOTIFICATIONS_LINUX_H_ |
| OLD | NEW |