Home | History | Annotate | Download | only in importer
      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 
     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