| 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 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 167 std::map<jint, HistogramBase*> histograms_; | 167 std::map<jint, HistogramBase*> histograms_; |
| 168 | 168 |
| 169 DISALLOW_COPY_AND_ASSIGN(HistogramCache); | 169 DISALLOW_COPY_AND_ASSIGN(HistogramCache); |
| 170 }; | 170 }; |
| 171 | 171 |
| 172 base::LazyInstance<HistogramCache>::Leaky g_histograms; | 172 base::LazyInstance<HistogramCache>::Leaky g_histograms; |
| 173 | 173 |
| 174 } // namespace | 174 } // namespace |
| 175 | 175 |
| 176 void RecordBooleanHistogram(JNIEnv* env, | 176 void RecordBooleanHistogram(JNIEnv* env, |
| 177 jclass clazz, | 177 const JavaParamRef<jclass>& clazz, |
| 178 jstring j_histogram_name, | 178 const JavaParamRef<jstring>& j_histogram_name, |
| 179 jint j_histogram_key, | 179 jint j_histogram_key, |
| 180 jboolean j_sample) { | 180 jboolean j_sample) { |
| 181 bool sample = static_cast<bool>(j_sample); | 181 bool sample = static_cast<bool>(j_sample); |
| 182 g_histograms.Get() | 182 g_histograms.Get() |
| 183 .BooleanHistogram(env, j_histogram_name, j_histogram_key) | 183 .BooleanHistogram(env, j_histogram_name, j_histogram_key) |
| 184 ->AddBoolean(sample); | 184 ->AddBoolean(sample); |
| 185 } | 185 } |
| 186 | 186 |
| 187 void RecordEnumeratedHistogram(JNIEnv* env, | 187 void RecordEnumeratedHistogram(JNIEnv* env, |
| 188 jclass clazz, | 188 const JavaParamRef<jclass>& clazz, |
| 189 jstring j_histogram_name, | 189 const JavaParamRef<jstring>& j_histogram_name, |
| 190 jint j_histogram_key, | 190 jint j_histogram_key, |
| 191 jint j_sample, | 191 jint j_sample, |
| 192 jint j_boundary) { | 192 jint j_boundary) { |
| 193 int sample = static_cast<int>(j_sample); | 193 int sample = static_cast<int>(j_sample); |
| 194 | 194 |
| 195 g_histograms.Get() | 195 g_histograms.Get() |
| 196 .EnumeratedHistogram(env, j_histogram_name, j_histogram_key, j_boundary) | 196 .EnumeratedHistogram(env, j_histogram_name, j_histogram_key, j_boundary) |
| 197 ->Add(sample); | 197 ->Add(sample); |
| 198 } | 198 } |
| 199 | 199 |
| 200 void RecordCustomCountHistogram(JNIEnv* env, | 200 void RecordCustomCountHistogram(JNIEnv* env, |
| 201 jclass clazz, | 201 const JavaParamRef<jclass>& clazz, |
| 202 jstring j_histogram_name, | 202 const JavaParamRef<jstring>& j_histogram_name, |
| 203 jint j_histogram_key, | 203 jint j_histogram_key, |
| 204 jint j_sample, | 204 jint j_sample, |
| 205 jint j_min, | 205 jint j_min, |
| 206 jint j_max, | 206 jint j_max, |
| 207 jint j_num_buckets) { | 207 jint j_num_buckets) { |
| 208 int sample = static_cast<int>(j_sample); | 208 int sample = static_cast<int>(j_sample); |
| 209 | 209 |
| 210 g_histograms.Get() | 210 g_histograms.Get() |
| 211 .CustomCountHistogram(env, j_histogram_name, j_histogram_key, j_min, | 211 .CustomCountHistogram(env, j_histogram_name, j_histogram_key, j_min, |
| 212 j_max, j_num_buckets) | 212 j_max, j_num_buckets) |
| 213 ->Add(sample); | 213 ->Add(sample); |
| 214 } | 214 } |
| 215 | 215 |
| 216 void RecordLinearCountHistogram(JNIEnv* env, | 216 void RecordLinearCountHistogram(JNIEnv* env, |
| 217 jclass clazz, | 217 const JavaParamRef<jclass>& clazz, |
| 218 jstring j_histogram_name, | 218 const JavaParamRef<jstring>& j_histogram_name, |
| 219 jint j_histogram_key, | 219 jint j_histogram_key, |
| 220 jint j_sample, | 220 jint j_sample, |
| 221 jint j_min, | 221 jint j_min, |
| 222 jint j_max, | 222 jint j_max, |
| 223 jint j_num_buckets) { | 223 jint j_num_buckets) { |
| 224 int sample = static_cast<int>(j_sample); | 224 int sample = static_cast<int>(j_sample); |
| 225 | 225 |
| 226 g_histograms.Get() | 226 g_histograms.Get() |
| 227 .LinearCountHistogram(env, j_histogram_name, j_histogram_key, j_min, | 227 .LinearCountHistogram(env, j_histogram_name, j_histogram_key, j_min, |
| 228 j_max, j_num_buckets) | 228 j_max, j_num_buckets) |
| 229 ->Add(sample); | 229 ->Add(sample); |
| 230 } | 230 } |
| 231 | 231 |
| 232 void RecordSparseHistogram(JNIEnv* env, | 232 void RecordSparseHistogram(JNIEnv* env, |
| 233 jclass clazz, | 233 const JavaParamRef<jclass>& clazz, |
| 234 jstring j_histogram_name, | 234 const JavaParamRef<jstring>& j_histogram_name, |
| 235 jint j_histogram_key, | 235 jint j_histogram_key, |
| 236 jint j_sample) { | 236 jint j_sample) { |
| 237 int sample = static_cast<int>(j_sample); | 237 int sample = static_cast<int>(j_sample); |
| 238 g_histograms.Get() | 238 g_histograms.Get() |
| 239 .SparseHistogram(env, j_histogram_name, j_histogram_key) | 239 .SparseHistogram(env, j_histogram_name, j_histogram_key) |
| 240 ->Add(sample); | 240 ->Add(sample); |
| 241 } | 241 } |
| 242 | 242 |
| 243 void RecordCustomTimesHistogramMilliseconds(JNIEnv* env, | 243 void RecordCustomTimesHistogramMilliseconds( |
| 244 jclass clazz, | 244 JNIEnv* env, |
| 245 jstring j_histogram_name, | 245 const JavaParamRef<jclass>& clazz, |
| 246 jint j_histogram_key, | 246 const JavaParamRef<jstring>& j_histogram_name, |
| 247 jlong j_duration, | 247 jint j_histogram_key, |
| 248 jlong j_min, | 248 jlong j_duration, |
| 249 jlong j_max, | 249 jlong j_min, |
| 250 jint j_num_buckets) { | 250 jlong j_max, |
| 251 jint j_num_buckets) { |
| 251 g_histograms.Get() | 252 g_histograms.Get() |
| 252 .CustomTimesHistogram(env, j_histogram_name, j_histogram_key, j_min, | 253 .CustomTimesHistogram(env, j_histogram_name, j_histogram_key, j_min, |
| 253 j_max, j_num_buckets) | 254 j_max, j_num_buckets) |
| 254 ->AddTime(TimeDelta::FromMilliseconds(static_cast<int64>(j_duration))); | 255 ->AddTime(TimeDelta::FromMilliseconds(static_cast<int64>(j_duration))); |
| 255 } | 256 } |
| 256 | 257 |
| 257 void Initialize(JNIEnv* env, jclass) { | 258 void Initialize(JNIEnv* env, const JavaParamRef<jclass>&) { |
| 258 StatisticsRecorder::Initialize(); | 259 StatisticsRecorder::Initialize(); |
| 259 } | 260 } |
| 260 | 261 |
| 261 // This backs a Java test util for testing histograms - | 262 // This backs a Java test util for testing histograms - |
| 262 // MetricsUtils.HistogramDelta. It should live in a test-specific file, but we | 263 // MetricsUtils.HistogramDelta. It should live in a test-specific file, but we |
| 263 // currently can't have test-specific native code packaged in test-specific Java | 264 // currently can't have test-specific native code packaged in test-specific Java |
| 264 // targets - see http://crbug.com/415945. | 265 // targets - see http://crbug.com/415945. |
| 265 jint GetHistogramValueCountForTesting(JNIEnv* env, | 266 jint GetHistogramValueCountForTesting( |
| 266 jclass clazz, | 267 JNIEnv* env, |
| 267 jstring histogram_name, | 268 const JavaParamRef<jclass>& clazz, |
| 268 jint sample) { | 269 const JavaParamRef<jstring>& histogram_name, |
| 270 jint sample) { |
| 269 HistogramBase* histogram = StatisticsRecorder::FindHistogram( | 271 HistogramBase* histogram = StatisticsRecorder::FindHistogram( |
| 270 android::ConvertJavaStringToUTF8(env, histogram_name)); | 272 android::ConvertJavaStringToUTF8(env, histogram_name)); |
| 271 if (histogram == nullptr) { | 273 if (histogram == nullptr) { |
| 272 // No samples have been recorded for this histogram (yet?). | 274 // No samples have been recorded for this histogram (yet?). |
| 273 return 0; | 275 return 0; |
| 274 } | 276 } |
| 275 | 277 |
| 276 scoped_ptr<HistogramSamples> samples = histogram->SnapshotSamples(); | 278 scoped_ptr<HistogramSamples> samples = histogram->SnapshotSamples(); |
| 277 return samples->GetCount(static_cast<int>(sample)); | 279 return samples->GetCount(static_cast<int>(sample)); |
| 278 } | 280 } |
| 279 | 281 |
| 280 bool RegisterRecordHistogram(JNIEnv* env) { | 282 bool RegisterRecordHistogram(JNIEnv* env) { |
| 281 return RegisterNativesImpl(env); | 283 return RegisterNativesImpl(env); |
| 282 } | 284 } |
| 283 | 285 |
| 284 } // namespace android | 286 } // namespace android |
| 285 } // namespace base | 287 } // namespace base |
| OLD | NEW |