Index: chrome/browser/media_gallery/media_device_notifications_chromeos.cc |
diff --git a/chrome/browser/media_gallery/media_device_notifications_chromeos.cc b/chrome/browser/media_gallery/media_device_notifications_chromeos.cc |
index ae45d1563fb26fa80438c33ca086cd80a1332b80..eddaf7f49abb3506f20d4a86f1c8516e2a6aeb1a 100644 |
--- a/chrome/browser/media_gallery/media_device_notifications_chromeos.cc |
+++ b/chrome/browser/media_gallery/media_device_notifications_chromeos.cc |
@@ -8,6 +8,7 @@ |
#include "base/file_path.h" |
#include "base/logging.h" |
+#include "base/metrics/histogram.h" |
#include "base/stl_util.h" |
#include "base/string_number_conversions.h" |
#include "base/utf_string_conversions.h" |
@@ -18,8 +19,7 @@ namespace chromeos { |
using content::BrowserThread; |
-MediaDeviceNotifications::MediaDeviceNotifications() |
- : current_device_id_(0) { |
+MediaDeviceNotifications::MediaDeviceNotifications() { |
DCHECK(disks::DiskMountManager::GetInstance()); |
disks::DiskMountManager::GetInstance()->AddObserver(this); |
} |
@@ -101,7 +101,29 @@ void MediaDeviceNotifications::AddMountedPathOnUIThread( |
NOTREACHED(); |
return; |
} |
- const std::string device_id_str = base::IntToString(current_device_id_++); |
+ |
+ // Get the media device uuid if exists. |
Ben Chan
2012/07/26 17:11:18
nit: perhaps turning 105 - 114 into method
kmadhusu
2012/07/26 17:23:05
Done.
|
+ const disks::DiskMountManager::DiskMap& disks = |
+ disks::DiskMountManager::GetInstance()->disks(); |
+ disks::DiskMountManager::DiskMap::const_iterator it = |
+ disks.find(mount_info.source_path); |
+ std::string device_id_str; |
+ if (it != disks.end()) { |
+ const disks::DiskMountManager::Disk& disk = *it->second; |
+ device_id_str = disk.fs_uuid(); |
+ } |
+ |
+ // Keep track of device uuid, to see how often we receive empty uuid values. |
+ static base::Histogram* media_device_uuid_available(NULL); |
+ if (!media_device_uuid_available) { |
+ media_device_uuid_available = base::BooleanHistogram::FactoryGet( |
+ "MediaDeviceNotification.device_uuid_available", |
+ base::Histogram::kUmaTargetedHistogramFlag); |
+ } |
+ media_device_uuid_available->AddBoolean(!device_id_str.empty()); |
+ if (device_id_str.empty()) |
+ return; |
+ |
mount_map_.insert(std::make_pair(mount_info.mount_path, device_id_str)); |
base::SystemMonitor::Get()->ProcessMediaDeviceAttached( |
device_id_str, |