• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2013 The Chromium 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 "build/build_config.h"
6 #include "chrome/browser/importer/importer_uma.h"
7 
8 namespace importer {
9 
10 namespace {
11 
12 // The enum used to register importer use.
13 enum ImporterTypeMetrics {
14   IMPORTER_METRICS_UNKNOWN         = 0,
15 #if defined(OS_WIN)
16   IMPORTER_METRICS_IE              = 1,
17 #endif
18   IMPORTER_METRICS_FIREFOX2        = 2,  // obsolete
19   IMPORTER_METRICS_FIREFOX3        = 3,
20 #if defined(OS_MACOSX)
21   IMPORTER_METRICS_SAFARI          = 4,
22 #endif
23   IMPORTER_METRICS_GOOGLE_TOOLBAR5 = 5,  // obsolete
24   IMPORTER_METRICS_BOOKMARKS_FILE  = 6,
25 
26   // Insert new values here. Never remove any existing values, as this enum is
27   // used to bucket a UMA histogram, and removing values breaks that.
28   IMPORTER_METRICS_SIZE
29 };
30 
31 }  // namespace
32 
LogImporterUseToMetrics(const std::string & metric_postfix,ImporterType type)33 void LogImporterUseToMetrics(const std::string& metric_postfix,
34                              ImporterType type) {
35   ImporterTypeMetrics metrics_type = IMPORTER_METRICS_UNKNOWN;
36   switch (type) {
37     case TYPE_UNKNOWN:
38       metrics_type = IMPORTER_METRICS_UNKNOWN;
39       break;
40 #if defined(OS_WIN)
41     case TYPE_IE:
42       metrics_type = IMPORTER_METRICS_IE;
43       break;
44 #endif
45     case TYPE_FIREFOX:
46       metrics_type = IMPORTER_METRICS_FIREFOX3;
47       break;
48 #if defined(OS_MACOSX)
49     case TYPE_SAFARI:
50       metrics_type = IMPORTER_METRICS_SAFARI;
51       break;
52 #endif
53     case TYPE_BOOKMARKS_FILE:
54       metrics_type = IMPORTER_METRICS_BOOKMARKS_FILE;
55       break;
56   }
57 
58   // Note: This leaks memory, which is the expected behavior as the factory
59   // creates and owns the histogram.
60   base::HistogramBase* histogram =
61       base::LinearHistogram::FactoryGet(
62           "Import.ImporterType." + metric_postfix,
63           1,
64           IMPORTER_METRICS_SIZE,
65           IMPORTER_METRICS_SIZE + 1,
66           base::HistogramBase::kUmaTargetedHistogramFlag);
67   histogram->Add(metrics_type);
68 }
69 
70 }  // namespace importer
71