Chromium Code Reviews| Index: chrome/browser/system_monitor/media_storage_util.cc |
| diff --git a/chrome/browser/system_monitor/media_storage_util.cc b/chrome/browser/system_monitor/media_storage_util.cc |
| index 82045a1152b2b0bd2a3340c15d8048dc69f3b4a0..cd8b8a23619f03e0aa37e25997dce88328fa7fd8 100644 |
| --- a/chrome/browser/system_monitor/media_storage_util.cc |
| +++ b/chrome/browser/system_monitor/media_storage_util.cc |
| @@ -14,6 +14,17 @@ |
| #include "base/system_monitor/system_monitor.h" |
| #include "content/public/browser/browser_thread.h" |
| +#if defined(OS_CHROMEOS) |
| +#include "chrome/browser/system_monitor/media_transfer_protocol_device_observer_chromeos.h" |
| +#include "chrome/browser/system_monitor/removable_device_notifications_chromeos.h" |
| +#elif defined(OS_LINUX) |
| +#include "chrome/browser/system_monitor/removable_device_notifications_linux.h" |
| +#elif defined(OS_MACOSX) |
| +#include "chrome/browser/system_monitor/removable_device_notifications_mac.h" |
| +#elif defined(OS_WIN) |
| +#include "chrome/browser/system_monitor/removable_device_notifications_window_win.h" |
| +#endif |
| + |
| using base::SystemMonitor; |
| using content::BrowserThread; |
| @@ -150,14 +161,55 @@ bool MediaStorageUtil::GetDeviceInfoFromPath(const FilePath& path, |
| std::string* device_id, |
| string16* device_name, |
| FilePath* relative_path) { |
| + if (!path.IsAbsolute()) |
| + return false; |
| + |
| if (g_test_get_device_info_from_path_function) { |
| return g_test_get_device_info_from_path_function(path, device_id, |
| device_name, |
| relative_path); |
| - } else { |
| - return GetDeviceInfoFromPathImpl(path, device_id, device_name, |
| - relative_path); |
| } |
| + |
| + bool found_device = false; |
| + base::SystemMonitor::RemovableStorageInfo device_info; |
| +#if (defined(OS_LINUX) || defined(OS_MACOSX)) && !defined(OS_CHROMEOS) |
| + RemovableDeviceNotifications* notifier = |
| + RemovableDeviceNotifications::GetInstance(); |
| + found_device = notifier->GetDeviceInfoForPath(path, &device_info); |
| +#endif |
| + |
| +#if 0 && defined(OS_CHROMEOS) |
|
Lei Zhang
2012/09/17 00:25:47
Whose job is it to remove the #if 0 bit and use mt
vandebo (ex-Chrome)
2012/09/17 00:32:58
http://codereview.chromium.org/10908277/ will take
|
| + MediaTransferProtocolDeviceObserver* mtp_manager = |
| + MediaTransferProtocolDeviceObserver::GetInstance(); |
| + found_device = mtp_manager->GetStorageInfoForPath(path, &device_info); |
| +#endif |
| + |
| + if (found_device && IsRemovableDevice(device_info.device_id)) { |
| + if (device_id) |
| + *device_id = device_info.device_id; |
| + if (device_name) |
| + *device_name = device_info.name; |
| + if (relative_path) { |
| + *relative_path = FilePath(); |
| + FilePath mount_point(device_info.location); |
| + mount_point.AppendRelativePath(path, relative_path); |
| + } |
| + return true; |
| + } |
| + |
| +#if !defined(POSIX) |
|
Lei Zhang
2012/09/17 00:25:47
OS_POSIX?
vandebo (ex-Chrome)
2012/09/17 00:32:58
Done.
|
| + if (!found_device) |
| + return false; |
| +#endif |
| + |
| + // On Posix systems, there's one root so any absolute path could be valid. |
| + if (device_id) |
| + *device_id = MakeDeviceId(FIXED_MASS_STORAGE, path.AsUTF8Unsafe()); |
| + if (device_name) |
| + *device_name = path.BaseName().LossyDisplayName(); |
| + if (relative_path) |
| + *relative_path = FilePath(); |
| + return true; |
| } |
| // static |
| @@ -186,26 +238,4 @@ void MediaStorageUtil::SetGetDeviceInfoFromPathFunctionForTesting( |
| MediaStorageUtil::MediaStorageUtil() {} |
| -#if !defined(OS_LINUX) || defined(OS_CHROMEOS) |
| -// static |
| -bool MediaStorageUtil::GetDeviceInfoFromPathImpl(const FilePath& path, |
| - std::string* device_id, |
| - string16* device_name, |
| - FilePath* relative_path) { |
| - // TODO(vandebo) This needs to be implemented per platform. Below is no |
| - // worse than what the code already does. |
| - // * Find mount point parent (determines relative file path) |
| - // * Search System monitor, just in case. |
| - // * If it's a removable device, generate device id, else use device root |
| - // path as id |
| - if (device_id) |
| - *device_id = MakeDeviceId(FIXED_MASS_STORAGE, path.AsUTF8Unsafe()); |
| - if (device_name) |
| - *device_name = path.BaseName().LossyDisplayName(); |
| - if (relative_path) |
| - *relative_path = FilePath(); |
| - return true; |
| -} |
| -#endif |
| - |
| } // namespace chrome |