| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 #include "components/storage_monitor/media_storage_util.h" | 5 #include "components/storage_monitor/media_storage_util.h" |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "base/callback.h" | 9 #include "base/callback.h" |
| 10 #include "base/files/file_util.h" | 10 #include "base/files/file_util.h" |
| 11 #include "base/logging.h" | 11 #include "base/logging.h" |
| 12 #include "base/metrics/histogram_macros.h" | |
| 13 #include "base/strings/string_util.h" | 12 #include "base/strings/string_util.h" |
| 14 #include "base/strings/utf_string_conversions.h" | 13 #include "base/strings/utf_string_conversions.h" |
| 15 #include "build/build_config.h" | 14 #include "build/build_config.h" |
| 16 #include "components/storage_monitor/removable_device_constants.h" | 15 #include "components/storage_monitor/removable_device_constants.h" |
| 17 #include "components/storage_monitor/storage_monitor.h" | 16 #include "components/storage_monitor/storage_monitor.h" |
| 18 #include "content/public/browser/browser_thread.h" | 17 #include "content/public/browser/browser_thread.h" |
| 19 | 18 |
| 20 using content::BrowserThread; | 19 using content::BrowserThread; |
| 21 | 20 |
| 22 namespace storage_monitor { | 21 namespace storage_monitor { |
| 23 | 22 |
| 24 namespace { | 23 namespace { |
| 25 | 24 |
| 26 // MediaDeviceNotification.DeviceInfo histogram values. | |
| 27 enum DeviceInfoHistogramBuckets { | |
| 28 MASS_STORAGE_DEVICE_NAME_AND_UUID_AVAILABLE, | |
| 29 MASS_STORAGE_DEVICE_UUID_MISSING, | |
| 30 MASS_STORAGE_DEVICE_NAME_MISSING, | |
| 31 MASS_STORAGE_DEVICE_NAME_AND_UUID_MISSING, | |
| 32 MTP_STORAGE_DEVICE_NAME_AND_UUID_AVAILABLE, | |
| 33 MTP_STORAGE_DEVICE_UUID_MISSING, | |
| 34 MTP_STORAGE_DEVICE_NAME_MISSING, | |
| 35 MTP_STORAGE_DEVICE_NAME_AND_UUID_MISSING, | |
| 36 DEVICE_INFO_BUCKET_BOUNDARY | |
| 37 }; | |
| 38 | |
| 39 #if !defined(OS_WIN) | 25 #if !defined(OS_WIN) |
| 40 const char kRootPath[] = "/"; | 26 const char kRootPath[] = "/"; |
| 41 #endif | 27 #endif |
| 42 | 28 |
| 43 typedef std::vector<StorageInfo> StorageInfoList; | 29 typedef std::vector<StorageInfo> StorageInfoList; |
| 44 | 30 |
| 45 base::FilePath::StringType FindRemovableStorageLocationById( | 31 base::FilePath::StringType FindRemovableStorageLocationById( |
| 46 const std::string& device_id) { | 32 const std::string& device_id) { |
| 47 StorageInfoList devices = | 33 StorageInfoList devices = |
| 48 StorageMonitor::GetInstance()->GetAllAvailableStorages(); | 34 StorageMonitor::GetInstance()->GetAllAvailableStorages(); |
| (...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 206 #endif | 192 #endif |
| 207 } | 193 } |
| 208 | 194 |
| 209 DCHECK(type == StorageInfo::MTP_OR_PTP || | 195 DCHECK(type == StorageInfo::MTP_OR_PTP || |
| 210 type == StorageInfo::REMOVABLE_MASS_STORAGE_WITH_DCIM || | 196 type == StorageInfo::REMOVABLE_MASS_STORAGE_WITH_DCIM || |
| 211 type == StorageInfo::REMOVABLE_MASS_STORAGE_NO_DCIM); | 197 type == StorageInfo::REMOVABLE_MASS_STORAGE_NO_DCIM); |
| 212 return base::FilePath(FindRemovableStorageLocationById(device_id)); | 198 return base::FilePath(FindRemovableStorageLocationById(device_id)); |
| 213 } | 199 } |
| 214 | 200 |
| 215 // static | 201 // static |
| 216 void MediaStorageUtil::RecordDeviceInfoHistogram( | |
| 217 bool mass_storage, | |
| 218 const std::string& device_uuid, | |
| 219 const base::string16& device_label) { | |
| 220 unsigned int event_number = 0; | |
| 221 if (!mass_storage) | |
| 222 event_number = 4; | |
| 223 | |
| 224 if (device_label.empty()) | |
| 225 event_number += 2; | |
| 226 | |
| 227 if (device_uuid.empty()) | |
| 228 event_number += 1; | |
| 229 enum DeviceInfoHistogramBuckets event = | |
| 230 static_cast<enum DeviceInfoHistogramBuckets>(event_number); | |
| 231 if (event >= DEVICE_INFO_BUCKET_BOUNDARY) { | |
| 232 NOTREACHED(); | |
| 233 return; | |
| 234 } | |
| 235 UMA_HISTOGRAM_ENUMERATION("MediaDeviceNotifications.DeviceInfo", event, | |
| 236 DEVICE_INFO_BUCKET_BOUNDARY); | |
| 237 } | |
| 238 | |
| 239 // static | |
| 240 bool MediaStorageUtil::IsRemovableStorageAttached(const std::string& id) { | 202 bool MediaStorageUtil::IsRemovableStorageAttached(const std::string& id) { |
| 241 StorageMonitor* monitor = StorageMonitor::GetInstance(); | 203 StorageMonitor* monitor = StorageMonitor::GetInstance(); |
| 242 if (!monitor) | 204 if (!monitor) |
| 243 return false; | 205 return false; |
| 244 | 206 |
| 245 StorageInfoList devices = monitor->GetAllAvailableStorages(); | 207 StorageInfoList devices = monitor->GetAllAvailableStorages(); |
| 246 for (const auto& device : devices) { | 208 for (const auto& device : devices) { |
| 247 if (StorageInfo::IsRemovableDevice(id) && device.device_id() == id) | 209 if (StorageInfo::IsRemovableDevice(id) && device.device_id() == id) |
| 248 return true; | 210 return true; |
| 249 } | 211 } |
| 250 return false; | 212 return false; |
| 251 } | 213 } |
| 252 | 214 |
| 253 } // namespace storage_monitor | 215 } // namespace storage_monitor |
| OLD | NEW |