| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "base/android/record_histogram.h" | 5 #include "base/android/record_histogram.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 | 8 |
| 9 #include "base/android/jni_android.h" | 9 #include "base/android/jni_android.h" |
| 10 #include "base/android/jni_string.h" | 10 #include "base/android/jni_string.h" |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 53 return histogram; | 53 return histogram; |
| 54 } | 54 } |
| 55 | 55 |
| 56 std::string histogram_name = ConvertJavaStringToUTF8(env, j_histogram_name); | 56 std::string histogram_name = ConvertJavaStringToUTF8(env, j_histogram_name); |
| 57 histogram = | 57 histogram = |
| 58 LinearHistogram::FactoryGet(histogram_name, 1, boundary, boundary + 1, | 58 LinearHistogram::FactoryGet(histogram_name, 1, boundary, boundary + 1, |
| 59 HistogramBase::kUmaTargetedHistogramFlag); | 59 HistogramBase::kUmaTargetedHistogramFlag); |
| 60 return InsertLocked(j_histogram_key, histogram); | 60 return InsertLocked(j_histogram_key, histogram); |
| 61 } | 61 } |
| 62 | 62 |
| 63 HistogramBase* CountHistogram(JNIEnv* env, |
| 64 jstring j_histogram_name, |
| 65 jint j_histogram_key) { |
| 66 // These values are based on the hard-coded constants in the |
| 67 // UMA_HISTOGRAM_COUNTS macro from base/metrics/histogram_macros.h. |
| 68 const int histogram_min = 1; |
| 69 const int histogram_max = 1000000; |
| 70 const int histogram_num_buckets = 50; |
| 71 |
| 72 DCHECK(j_histogram_name); |
| 73 DCHECK(j_histogram_key); |
| 74 HistogramBase* histogram = FindLocked(j_histogram_key); |
| 75 if (histogram) { |
| 76 DCHECK(histogram->HasConstructionArguments(histogram_min, histogram_max, |
| 77 histogram_num_buckets)); |
| 78 return histogram; |
| 79 } |
| 80 |
| 81 std::string histogram_name = ConvertJavaStringToUTF8(env, j_histogram_name); |
| 82 histogram = Histogram::FactoryGet(histogram_name, histogram_min, |
| 83 histogram_max, histogram_num_buckets, |
| 84 HistogramBase::kUmaTargetedHistogramFlag); |
| 85 return InsertLocked(j_histogram_key, histogram); |
| 86 } |
| 87 |
| 63 HistogramBase* CustomTimesHistogram(JNIEnv* env, | 88 HistogramBase* CustomTimesHistogram(JNIEnv* env, |
| 64 jstring j_histogram_name, | 89 jstring j_histogram_name, |
| 65 jint j_histogram_key, | 90 jint j_histogram_key, |
| 66 jlong j_min, | 91 jlong j_min, |
| 67 jlong j_max, | 92 jlong j_max, |
| 68 jint j_bucket_count) { | 93 jint j_bucket_count) { |
| 69 DCHECK(j_histogram_name); | 94 DCHECK(j_histogram_name); |
| 70 DCHECK(j_histogram_key); | 95 DCHECK(j_histogram_key); |
| 71 HistogramBase* histogram = FindLocked(j_histogram_key); | 96 HistogramBase* histogram = FindLocked(j_histogram_key); |
| 72 int64 min = static_cast<int64>(j_min); | 97 int64 min = static_cast<int64>(j_min); |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 126 jint j_histogram_key, | 151 jint j_histogram_key, |
| 127 jint j_sample, | 152 jint j_sample, |
| 128 jint j_boundary) { | 153 jint j_boundary) { |
| 129 int sample = static_cast<int>(j_sample); | 154 int sample = static_cast<int>(j_sample); |
| 130 | 155 |
| 131 g_histograms.Get() | 156 g_histograms.Get() |
| 132 .EnumeratedHistogram(env, j_histogram_name, j_histogram_key, j_boundary) | 157 .EnumeratedHistogram(env, j_histogram_name, j_histogram_key, j_boundary) |
| 133 ->Add(sample); | 158 ->Add(sample); |
| 134 } | 159 } |
| 135 | 160 |
| 161 void RecordCountHistogram(JNIEnv* env, |
| 162 jclass clazz, |
| 163 jstring j_histogram_name, |
| 164 jint j_histogram_key, |
| 165 jint j_sample) { |
| 166 int sample = static_cast<int>(j_sample); |
| 167 |
| 168 g_histograms.Get() |
| 169 .CountHistogram(env, j_histogram_name, j_histogram_key) |
| 170 ->Add(sample); |
| 171 } |
| 172 |
| 136 void RecordCustomTimesHistogramMilliseconds(JNIEnv* env, | 173 void RecordCustomTimesHistogramMilliseconds(JNIEnv* env, |
| 137 jclass clazz, | 174 jclass clazz, |
| 138 jstring j_histogram_name, | 175 jstring j_histogram_name, |
| 139 jint j_histogram_key, | 176 jint j_histogram_key, |
| 140 jlong j_duration, | 177 jlong j_duration, |
| 141 jlong j_min, | 178 jlong j_min, |
| 142 jlong j_max, | 179 jlong j_max, |
| 143 jint j_num_buckets) { | 180 jint j_num_buckets) { |
| 144 g_histograms.Get() | 181 g_histograms.Get() |
| 145 .CustomTimesHistogram(env, j_histogram_name, j_histogram_key, j_min, | 182 .CustomTimesHistogram(env, j_histogram_name, j_histogram_key, j_min, |
| (...skipping 23 matching lines...) Expand all Loading... |
| 169 scoped_ptr<HistogramSamples> samples = histogram->SnapshotSamples(); | 206 scoped_ptr<HistogramSamples> samples = histogram->SnapshotSamples(); |
| 170 return samples->GetCount(static_cast<int>(sample)); | 207 return samples->GetCount(static_cast<int>(sample)); |
| 171 } | 208 } |
| 172 | 209 |
| 173 bool RegisterRecordHistogram(JNIEnv* env) { | 210 bool RegisterRecordHistogram(JNIEnv* env) { |
| 174 return RegisterNativesImpl(env); | 211 return RegisterNativesImpl(env); |
| 175 } | 212 } |
| 176 | 213 |
| 177 } // namespace android | 214 } // namespace android |
| 178 } // namespace base | 215 } // namespace base |
| OLD | NEW |