| 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 | 
|---|