Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6783)

Unified Diff: base/android/java/src/org/chromium/base/metrics/RecordHistogram.java

Issue 1597273005: Move ChromiumMultiDex to BuildConfig. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Test debug and release. Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..1fc245bdb2bc6520070252184a49a92d23c6c31d 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.base.annotations.RemovableInRelease;
import java.util.concurrent.TimeUnit;
@@ -18,6 +20,29 @@ import java.util.concurrent.TimeUnit;
*/
@JNINamespace("base::android")
public class RecordHistogram {
+ private static final String TAG = "RecordHistogram";
+
+ private static boolean sNativeInitialized = false;
+
+ @RemovableInRelease
+ private static void raiseExceptionInDebug(String name) {
+ throw new RuntimeException("Calling RecordHistogram for " + name + " before initialized.");
+ }
+
+ /**
+ * Ensures that an exception is thrown in debug builds when histograms are used before being
+ * initialized. In release just log a warning.
+ * @param name Name of the histogram.
+ * @return Whether histograms have been initialized.
+ */
+ private static boolean isNativeInitialized(String name) {
+ if (!sNativeInitialized) {
+ raiseExceptionInDebug(name);
+ Log.w(TAG, "Calling RecordHistogram for " + name + " before initialized.");
+ }
+ 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 +51,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(name)) {
+ nativeRecordBooleanHistogram(name, System.identityHashCode(name), sample);
+ }
}
/**
@@ -39,7 +66,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(name)) {
+ nativeRecordEnumeratedHistogram(name, System.identityHashCode(name), sample, boundary);
+ }
}
/**
@@ -83,8 +112,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(name)) {
+ nativeRecordCustomCountHistogram(
+ name, System.identityHashCode(name), sample, min, max, numBuckets);
+ }
}
/**
@@ -98,8 +129,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(name)) {
+ nativeRecordLinearCountHistogram(
+ name, System.identityHashCode(name), sample, min, max, numBuckets);
+ }
}
/**
@@ -109,7 +142,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(name)) {
+ nativeRecordEnumeratedHistogram(name, System.identityHashCode(name), sample, 101);
+ }
}
/**
@@ -119,7 +154,9 @@ public class RecordHistogram {
* values.
*/
public static void recordSparseSlowlyHistogram(String name, int sample) {
- nativeRecordSparseHistogram(name, System.identityHashCode(name), sample);
+ if (isNativeInitialized(name)) {
+ nativeRecordSparseHistogram(name, System.identityHashCode(name), sample);
+ }
}
/**
@@ -176,8 +213,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(name)) {
+ nativeRecordCustomTimesHistogramMilliseconds(
+ name, System.identityHashCode(name), duration, min, max, numBuckets);
+ }
}
/**
@@ -187,6 +226,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 +235,7 @@ public class RecordHistogram {
*/
public static void initialize() {
nativeInitialize();
+ sNativeInitialized = true;
}
private static native void nativeRecordCustomTimesHistogramMilliseconds(

Powered by Google App Engine
This is Rietveld 408576698