Chromium Code Reviews| Index: base/android/java/src/org/chromium/base/metrics/RecordHistogram.java |
| diff --git a/base/android/java/src/org/chromium/base/metrics/RecordHistogram.java b/base/android/java/src/org/chromium/base/metrics/RecordHistogram.java |
| index c1b04892e87362dfc459bcbacdb75d817f4fb975..447dd87741aa2f414a99aa2758e3c77a62b0ce84 100644 |
| --- a/base/android/java/src/org/chromium/base/metrics/RecordHistogram.java |
| +++ b/base/android/java/src/org/chromium/base/metrics/RecordHistogram.java |
| @@ -4,8 +4,10 @@ |
| package org.chromium.base.metrics; |
| +import org.chromium.base.Log; |
| import org.chromium.base.VisibleForTesting; |
| import org.chromium.base.annotations.JNINamespace; |
| +import org.chromium.chrome.browser.ChromeVersionInfo; |
|
Yaron
2016/01/18 17:51:10
Unfortunately this dep won't work because you're i
Peter Wen
2016/01/18 22:18:08
Acknowledged.
|
| import java.util.concurrent.TimeUnit; |
| @@ -18,6 +20,21 @@ import java.util.concurrent.TimeUnit; |
| */ |
| @JNINamespace("base::android") |
| public class RecordHistogram { |
| + private static final String TAG = "RecordHistogram"; |
| + |
| + private static boolean sNativeInitialized = false; |
| + |
| + private static boolean isNativeInitialized() { |
| + if (!sNativeInitialized) { |
| + if (ChromeVersionInfo.isLocalBuild()) { |
| + throw new RuntimeException("Calling RecordHistogram before native is loaded."); |
| + } else { |
| + Log.w(TAG, "Calling RecordHistogram before native is loaded."); |
|
Yaron
2016/01/18 17:51:10
Can you make the histogram name a parameter to thi
Peter Wen
2016/01/18 22:18:08
Done.
|
| + } |
| + } |
| + return sNativeInitialized; |
| + } |
| + |
| /** |
| * Records a sample in a boolean UMA histogram of the given name. Boolean histogram has two |
| * buckets, corresponding to success (true) and failure (false). This is the Java equivalent of |
| @@ -26,7 +43,9 @@ public class RecordHistogram { |
| * @param sample sample to be recorded, either true or false |
| */ |
| public static void recordBooleanHistogram(String name, boolean sample) { |
| - nativeRecordBooleanHistogram(name, System.identityHashCode(name), sample); |
| + if (isNativeInitialized()) { |
| + nativeRecordBooleanHistogram(name, System.identityHashCode(name), sample); |
| + } |
| } |
| /** |
| @@ -39,7 +58,9 @@ public class RecordHistogram { |
| * lower than |boundary| |
| */ |
| public static void recordEnumeratedHistogram(String name, int sample, int boundary) { |
| - nativeRecordEnumeratedHistogram(name, System.identityHashCode(name), sample, boundary); |
| + if (isNativeInitialized()) { |
| + nativeRecordEnumeratedHistogram(name, System.identityHashCode(name), sample, boundary); |
| + } |
| } |
| /** |
| @@ -83,8 +104,10 @@ public class RecordHistogram { |
| */ |
| public static void recordCustomCountHistogram( |
| String name, int sample, int min, int max, int numBuckets) { |
| - nativeRecordCustomCountHistogram( |
| - name, System.identityHashCode(name), sample, min, max, numBuckets); |
| + if (isNativeInitialized()) { |
| + nativeRecordCustomCountHistogram( |
| + name, System.identityHashCode(name), sample, min, max, numBuckets); |
| + } |
| } |
| /** |
| @@ -98,8 +121,10 @@ public class RecordHistogram { |
| */ |
| public static void recordLinearCountHistogram( |
| String name, int sample, int min, int max, int numBuckets) { |
| - nativeRecordLinearCountHistogram( |
| - name, System.identityHashCode(name), sample, min, max, numBuckets); |
| + if (isNativeInitialized()) { |
| + nativeRecordLinearCountHistogram( |
| + name, System.identityHashCode(name), sample, min, max, numBuckets); |
| + } |
| } |
| /** |
| @@ -109,7 +134,9 @@ public class RecordHistogram { |
| * @param sample sample to be recorded, at least 0 and at most 100. |
| */ |
| public static void recordPercentageHistogram(String name, int sample) { |
| - nativeRecordEnumeratedHistogram(name, System.identityHashCode(name), sample, 101); |
| + if (isNativeInitialized()) { |
| + nativeRecordEnumeratedHistogram(name, System.identityHashCode(name), sample, 101); |
| + } |
| } |
| /** |
| @@ -119,7 +146,9 @@ public class RecordHistogram { |
| * values. |
| */ |
| public static void recordSparseSlowlyHistogram(String name, int sample) { |
| - nativeRecordSparseHistogram(name, System.identityHashCode(name), sample); |
| + if (isNativeInitialized()) { |
| + nativeRecordSparseHistogram(name, System.identityHashCode(name), sample); |
| + } |
| } |
| /** |
| @@ -176,8 +205,10 @@ public class RecordHistogram { |
| private static void recordCustomTimesHistogramMilliseconds( |
| String name, long duration, long min, long max, int numBuckets) { |
| - nativeRecordCustomTimesHistogramMilliseconds( |
| - name, System.identityHashCode(name), duration, min, max, numBuckets); |
| + if (isNativeInitialized()) { |
| + nativeRecordCustomTimesHistogramMilliseconds( |
| + name, System.identityHashCode(name), duration, min, max, numBuckets); |
| + } |
| } |
| /** |
| @@ -187,6 +218,7 @@ public class RecordHistogram { |
| */ |
| @VisibleForTesting |
| public static int getHistogramValueCountForTesting(String name, int sample) { |
| + // Should fail if native is not loaded since this is testing-only. |
| return nativeGetHistogramValueCountForTesting(name, sample); |
| } |
| @@ -195,6 +227,7 @@ public class RecordHistogram { |
| */ |
| public static void initialize() { |
| nativeInitialize(); |
| + sNativeInitialized = true; |
| } |
| private static native void nativeRecordCustomTimesHistogramMilliseconds( |