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