Index: base/android/java/src/org/chromium/base/metrics/RecordUserAction.java |
diff --git a/base/android/java/src/org/chromium/base/metrics/RecordUserAction.java b/base/android/java/src/org/chromium/base/metrics/RecordUserAction.java |
index 06004d69597630759b1f533a9ff09467d9ed51df..5334746d918caa1076f91318231516809f3322cf 100644 |
--- a/base/android/java/src/org/chromium/base/metrics/RecordUserAction.java |
+++ b/base/android/java/src/org/chromium/base/metrics/RecordUserAction.java |
@@ -5,6 +5,7 @@ |
package org.chromium.base.metrics; |
import org.chromium.base.ThreadUtils; |
+import org.chromium.base.VisibleForTesting; |
import org.chromium.base.annotations.JNINamespace; |
/** |
@@ -18,7 +19,23 @@ import org.chromium.base.annotations.JNINamespace; |
*/ |
@JNINamespace("base::android") |
public class RecordUserAction { |
+ private static Throwable sDisabledBy; |
+ |
+ /** |
+ * Tests may not have native initialized, so they may need to disable metrics. The value should |
+ * be reset after the test done, to avoid carrying over state to unrelated tests. |
+ */ |
+ @VisibleForTesting |
+ public static void setDisabledForTests(boolean disabled) { |
+ if (disabled && sDisabledBy != null) { |
+ throw new IllegalStateException("UserActions are already disabled.", sDisabledBy); |
+ } |
+ sDisabledBy = disabled ? new Throwable() : null; |
+ } |
+ |
public static void record(final String action) { |
+ if (sDisabledBy != null) return; |
+ |
if (ThreadUtils.runningOnUiThread()) { |
nativeRecordUserAction(action); |
return; |