blob: c090d3a4d60285b14e86dddcab3cd524232ab4f3 [file] [log] [blame]
Ben Chanbe2b4a72011-11-08 13:42:23 -08001// Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "cros-disks/metrics.h"
6
7#include <base/logging.h>
8
Ben Chanbe2b4a72011-11-08 13:42:23 -08009namespace {
10
11const char kArchiveTypeMetricName[] = "CrosDisks.ArchiveType";
12const char kDeviceMediaTypeMetricName[] = "CrosDisks.DeviceMediaType";
13const char kFilesystemTypeMetricName[] = "CrosDisks.FilesystemType";
14
15} // namespace
16
17namespace cros_disks {
18
19Metrics::Metrics() {
Ben Chanbe2b4a72011-11-08 13:42:23 -080020 InitializeArchiveTypeMap();
21 InitializeFilesystemTypeMap();
22}
23
Ben Chanbe2b4a72011-11-08 13:42:23 -080024void Metrics::InitializeArchiveTypeMap() {
25 archive_type_map_["zip"] = kArchiveZip;
Ben Chan68e325a2012-02-14 22:35:15 -080026 archive_type_map_["tar"] = kArchiveTar;
27 archive_type_map_["tar.bz2"] = kArchiveTarBzip2;
28 archive_type_map_["tbz"] = kArchiveTarBzip2;
29 archive_type_map_["tbz2"] = kArchiveTarBzip2;
30 archive_type_map_["tar.gz"] = kArchiveTarGzip;
31 archive_type_map_["tgz"] = kArchiveTarGzip;
Ben Chand7ff95f2012-02-16 13:41:14 -080032 archive_type_map_["rar"] = kArchiveRar;
Ben Chanbe2b4a72011-11-08 13:42:23 -080033}
34
35void Metrics::InitializeFilesystemTypeMap() {
36 filesystem_type_map_["vfat"] = kFilesystemVFAT;
37 filesystem_type_map_["exfat"] = kFilesystemExFAT;
38 filesystem_type_map_["ntfs"] = kFilesystemNTFS;
39 filesystem_type_map_["hfsplus"] = kFilesystemHFSPlus;
40 filesystem_type_map_["ext2"] = kFilesystemExt2;
41 filesystem_type_map_["ext3"] = kFilesystemExt3;
42 filesystem_type_map_["ext4"] = kFilesystemExt4;
43 filesystem_type_map_["iso9660"] = kFilesystemISO9660;
44 filesystem_type_map_["udf"] = kFilesystemUDF;
45 filesystem_type_map_[""] = kFilesystemUnknown;
46}
47
Ben Chan213c6d92019-04-10 16:21:52 -070048Metrics::ArchiveType Metrics::GetArchiveType(
49 const std::string& archive_type) const {
50 std::map<std::string, ArchiveType>::const_iterator map_iter =
Ben Chanbe2b4a72011-11-08 13:42:23 -080051 archive_type_map_.find(archive_type);
52 if (map_iter != archive_type_map_.end())
53 return map_iter->second;
54 return kArchiveUnknown;
55}
56
57Metrics::FilesystemType Metrics::GetFilesystemType(
Ben Chan213c6d92019-04-10 16:21:52 -070058 const std::string& filesystem_type) const {
59 std::map<std::string, FilesystemType>::const_iterator map_iter =
Ben Chanbe2b4a72011-11-08 13:42:23 -080060 filesystem_type_map_.find(filesystem_type);
61 if (map_iter != filesystem_type_map_.end())
62 return map_iter->second;
63 return kFilesystemOther;
64}
65
Ben Chan213c6d92019-04-10 16:21:52 -070066void Metrics::RecordArchiveType(const std::string& archive_type) {
Ben Chanbe2b4a72011-11-08 13:42:23 -080067 if (!metrics_library_.SendEnumToUMA(kArchiveTypeMetricName,
68 GetArchiveType(archive_type),
69 kArchiveMaxValue))
70 LOG(WARNING) << "Failed to send archive type sample to UMA";
71}
72
Ben Chan213c6d92019-04-10 16:21:52 -070073void Metrics::RecordFilesystemType(const std::string& filesystem_type) {
Ben Chanbe2b4a72011-11-08 13:42:23 -080074 if (!metrics_library_.SendEnumToUMA(kFilesystemTypeMetricName,
75 GetFilesystemType(filesystem_type),
76 kFilesystemMaxValue))
77 LOG(WARNING) << "Failed to send filesystem type sample to UMA";
78}
79
80void Metrics::RecordDeviceMediaType(DeviceMediaType device_media_type) {
81 if (!metrics_library_.SendEnumToUMA(kDeviceMediaTypeMetricName,
82 device_media_type,
Ben Chan6d0b2722011-11-18 08:24:14 -080083 DEVICE_MEDIA_NUM_VALUES))
Ben Chanbe2b4a72011-11-08 13:42:23 -080084 LOG(WARNING) << "Failed to send device media type sample to UMA";
85}
86
87} // namespace cros_disks