Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "chrome/browser/extensions/api/metrics_private/metrics_private_api.h" | 5 #include "chrome/browser/extensions/api/metrics_private/metrics_private_api.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/metrics/histogram.h" | 9 #include "base/metrics/histogram.h" |
| 10 #include "chrome/common/extensions/api/metrics_private.h" | |
| 10 #include "chrome/common/extensions/extension.h" | 11 #include "chrome/common/extensions/extension.h" |
| 11 #include "content/public/browser/user_metrics.h" | 12 #include "content/public/browser/user_metrics.h" |
| 12 | 13 |
| 14 namespace RecordUserAction = extensions::api::metrics_private::RecordUserAction; | |
|
cduvall
2013/03/05 21:13:42
Move these into the namespace extensions block.
Aaron Jacobs
2013/03/05 22:28:36
Done.
| |
| 15 namespace RecordValue = extensions::api::metrics_private::RecordValue; | |
| 16 namespace RecordPercentage = extensions::api::metrics_private::RecordPercentage; | |
| 17 namespace RecordCount = extensions::api::metrics_private::RecordCount; | |
| 18 namespace RecordSmallCount = extensions::api::metrics_private::RecordSmallCount; | |
| 19 namespace RecordMediumCount = | |
| 20 extensions::api::metrics_private::RecordMediumCount; | |
| 21 namespace RecordTime = extensions::api::metrics_private::RecordTime; | |
| 22 namespace RecordMediumTime = extensions::api::metrics_private::RecordMediumTime; | |
| 23 namespace RecordLongTime = extensions::api::metrics_private::RecordLongTime; | |
| 24 | |
| 13 namespace extensions { | 25 namespace extensions { |
| 14 | 26 |
| 15 namespace { | 27 namespace { |
| 16 | 28 |
| 17 const size_t kMaxBuckets = 10000; // We don't ever want more than these many | 29 const size_t kMaxBuckets = 10000; // We don't ever want more than these many |
| 18 // buckets; there is no real need for them | 30 // buckets; there is no real need for them |
| 19 // and would cause crazy memory usage | 31 // and would cause crazy memory usage |
| 20 } // namespace | 32 } // namespace |
| 21 | 33 |
| 22 bool MetricsPrivateRecordUserActionFunction::RunImpl() { | 34 bool MetricsPrivateRecordUserActionFunction::RunImpl() { |
| 23 std::string name; | 35 scoped_ptr<RecordUserAction::Params> params( |
| 24 EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &name)); | 36 RecordUserAction::Params::Create(*args_)); |
| 37 EXTENSION_FUNCTION_VALIDATE(params.get()); | |
| 25 | 38 |
| 26 content::RecordComputedAction(name); | 39 content::RecordComputedAction(params->name); |
| 27 return true; | 40 return true; |
| 28 } | 41 } |
| 29 | 42 |
| 30 bool MetricsHistogramHelperFunction::GetNameAndSample(std::string* name, | 43 bool MetricsHistogramHelperFunction::GetNameAndSample(std::string* name, |
| 31 int* sample) { | 44 int* sample) { |
| 32 EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, name)); | 45 EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, name)); |
| 33 EXTENSION_FUNCTION_VALIDATE(args_->GetInteger(1, sample)); | 46 EXTENSION_FUNCTION_VALIDATE(args_->GetInteger(1, sample)); |
| 34 return true; | 47 return true; |
| 35 } | 48 } |
| 36 | 49 |
| (...skipping 24 matching lines...) Expand all Loading... | |
| 61 counter = base::Histogram::FactoryGet( | 74 counter = base::Histogram::FactoryGet( |
| 62 name, min, max, buckets, | 75 name, min, max, buckets, |
| 63 base::HistogramBase::kUmaTargetedHistogramFlag); | 76 base::HistogramBase::kUmaTargetedHistogramFlag); |
| 64 } | 77 } |
| 65 | 78 |
| 66 counter->Add(sample); | 79 counter->Add(sample); |
| 67 return true; | 80 return true; |
| 68 } | 81 } |
| 69 | 82 |
| 70 bool MetricsPrivateRecordValueFunction::RunImpl() { | 83 bool MetricsPrivateRecordValueFunction::RunImpl() { |
| 71 int sample; | 84 scoped_ptr<RecordValue::Params> params(RecordValue::Params::Create(*args_)); |
| 72 EXTENSION_FUNCTION_VALIDATE(args_->GetInteger(1, &sample)); | 85 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 73 | 86 |
| 74 // Get the histogram parameters from the metric type object. | 87 // Get the histogram parameters from the metric type object. |
| 75 DictionaryValue* metric_type; | 88 std::string type = api::metrics_private::MetricType::ToString( |
| 76 EXTENSION_FUNCTION_VALIDATE(args_->GetDictionary(0, &metric_type)); | 89 params->metric.type); |
| 77 | |
| 78 std::string name; | |
| 79 std::string type; | |
| 80 int min; | |
| 81 int max; | |
| 82 int buckets; | |
| 83 EXTENSION_FUNCTION_VALIDATE(metric_type->GetString("metricName", &name)); | |
| 84 EXTENSION_FUNCTION_VALIDATE(metric_type->GetString("type", &type)); | |
| 85 EXTENSION_FUNCTION_VALIDATE(metric_type->GetInteger("min", &min)); | |
| 86 EXTENSION_FUNCTION_VALIDATE(metric_type->GetInteger("max", &max)); | |
| 87 EXTENSION_FUNCTION_VALIDATE(metric_type->GetInteger("buckets", &buckets)); | |
| 88 | 90 |
| 89 base::HistogramType histogram_type(type == "histogram-linear" ? | 91 base::HistogramType histogram_type(type == "histogram-linear" ? |
| 90 base::LINEAR_HISTOGRAM : base::HISTOGRAM); | 92 base::LINEAR_HISTOGRAM : base::HISTOGRAM); |
| 91 return RecordValue(name, histogram_type, min, max, buckets, sample); | 93 return RecordValue(params->metric.metric_name, histogram_type, |
| 94 params->metric.min, params->metric.max, | |
| 95 params->metric.buckets, params->value); | |
| 92 } | 96 } |
| 93 | 97 |
| 94 bool MetricsPrivateRecordPercentageFunction::RunImpl() { | 98 bool MetricsPrivateRecordPercentageFunction::RunImpl() { |
| 95 std::string name; | 99 scoped_ptr<RecordPercentage::Params> params( |
| 96 int sample; | 100 RecordPercentage::Params::Create(*args_)); |
| 97 EXTENSION_FUNCTION_VALIDATE(GetNameAndSample(&name, &sample)); | 101 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 98 return RecordValue(name, base::LINEAR_HISTOGRAM, 1, 101, 102, sample); | 102 return RecordValue(params->metric_name, base::LINEAR_HISTOGRAM, |
| 103 1, 101, 102, params->value); | |
| 99 } | 104 } |
| 100 | 105 |
| 101 bool MetricsPrivateRecordCountFunction::RunImpl() { | 106 bool MetricsPrivateRecordCountFunction::RunImpl() { |
| 102 std::string name; | 107 scoped_ptr<RecordCount::Params> params(RecordCount::Params::Create(*args_)); |
| 103 int sample; | 108 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 104 EXTENSION_FUNCTION_VALIDATE(GetNameAndSample(&name, &sample)); | 109 return RecordValue(params->metric_name, base::HISTOGRAM, |
| 105 return RecordValue(name, base::HISTOGRAM, 1, 1000000, 50, sample); | 110 1, 1000000, 50, params->value); |
| 106 } | 111 } |
| 107 | 112 |
| 108 bool MetricsPrivateRecordSmallCountFunction::RunImpl() { | 113 bool MetricsPrivateRecordSmallCountFunction::RunImpl() { |
| 109 std::string name; | 114 scoped_ptr<RecordSmallCount::Params> params( |
| 110 int sample; | 115 RecordSmallCount::Params::Create(*args_)); |
| 111 EXTENSION_FUNCTION_VALIDATE(GetNameAndSample(&name, &sample)); | 116 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 112 return RecordValue(name, base::HISTOGRAM, 1, 100, 50, sample); | 117 return RecordValue(params->metric_name, base::HISTOGRAM, |
| 118 1, 100, 50, params->value); | |
| 113 } | 119 } |
| 114 | 120 |
| 115 bool MetricsPrivateRecordMediumCountFunction::RunImpl() { | 121 bool MetricsPrivateRecordMediumCountFunction::RunImpl() { |
| 116 std::string name; | 122 scoped_ptr<RecordMediumCount::Params> params( |
| 117 int sample; | 123 RecordMediumCount::Params::Create(*args_)); |
| 118 EXTENSION_FUNCTION_VALIDATE(GetNameAndSample(&name, &sample)); | 124 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 119 return RecordValue(name, base::HISTOGRAM, 1, 10000, 50, sample); | 125 return RecordValue(params->metric_name, base::HISTOGRAM, |
| 126 1, 10000, 50, params->value); | |
| 120 } | 127 } |
| 121 | 128 |
| 122 bool MetricsPrivateRecordTimeFunction::RunImpl() { | 129 bool MetricsPrivateRecordTimeFunction::RunImpl() { |
| 123 std::string name; | 130 scoped_ptr<RecordTime::Params> params(RecordTime::Params::Create(*args_)); |
| 124 int sample; | 131 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 125 EXTENSION_FUNCTION_VALIDATE(GetNameAndSample(&name, &sample)); | |
| 126 static const int kTenSecMs = 10 * 1000; | 132 static const int kTenSecMs = 10 * 1000; |
| 127 return RecordValue(name, base::HISTOGRAM, 1, kTenSecMs, 50, sample); | 133 return RecordValue(params->metric_name, base::HISTOGRAM, |
| 134 1, kTenSecMs, 50, params->value); | |
| 128 } | 135 } |
| 129 | 136 |
| 130 bool MetricsPrivateRecordMediumTimeFunction::RunImpl() { | 137 bool MetricsPrivateRecordMediumTimeFunction::RunImpl() { |
| 131 std::string name; | 138 scoped_ptr<RecordMediumTime::Params> params( |
| 132 int sample; | 139 RecordMediumTime::Params::Create(*args_)); |
| 133 EXTENSION_FUNCTION_VALIDATE(GetNameAndSample(&name, &sample)); | 140 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 134 static const int kThreeMinMs = 3 * 60 * 1000; | 141 static const int kThreeMinMs = 3 * 60 * 1000; |
| 135 return RecordValue(name, base::HISTOGRAM, 1, kThreeMinMs, 50, sample); | 142 return RecordValue(params->metric_name, base::HISTOGRAM, |
| 143 1, kThreeMinMs, 50, params->value); | |
| 136 } | 144 } |
| 137 | 145 |
| 138 bool MetricsPrivateRecordLongTimeFunction::RunImpl() { | 146 bool MetricsPrivateRecordLongTimeFunction::RunImpl() { |
| 139 std::string name; | 147 scoped_ptr<RecordLongTime::Params> params( |
| 140 int sample; | 148 RecordLongTime::Params::Create(*args_)); |
| 141 EXTENSION_FUNCTION_VALIDATE(GetNameAndSample(&name, &sample)); | 149 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 142 static const int kOneHourMs = 60 * 60 * 1000; | 150 static const int kOneHourMs = 60 * 60 * 1000; |
| 143 return RecordValue(name, base::HISTOGRAM, 1, kOneHourMs, 50, sample); | 151 return RecordValue(params->metric_name, base::HISTOGRAM, |
| 152 1, kOneHourMs, 50, params->value); | |
| 144 } | 153 } |
| 145 | 154 |
| 146 } // namespace extensions | 155 } // namespace extensions |
| OLD | NEW |