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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/metrics/MainIntentBehaviorMetrics.java

Issue 2850163002: Fix main intent metrics when zero tabs present. (Closed)
Patch Set: Add findbugs suppression in code only used for testing Created 3 years, 8 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: chrome/android/java/src/org/chromium/chrome/browser/metrics/MainIntentBehaviorMetrics.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/metrics/MainIntentBehaviorMetrics.java b/chrome/android/java/src/org/chromium/chrome/browser/metrics/MainIntentBehaviorMetrics.java
index 8feb225fd05542755cb04b32c78f57a3c911bcd1..2fa41d1bb46dada84aa97816050ffdf7cfe76637 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/metrics/MainIntentBehaviorMetrics.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/metrics/MainIntentBehaviorMetrics.java
@@ -10,6 +10,7 @@ import android.support.annotation.IntDef;
import org.chromium.base.ActivityState;
import org.chromium.base.ApplicationStatus;
+import org.chromium.base.annotations.SuppressFBWarnings;
import org.chromium.base.metrics.RecordHistogram;
import org.chromium.base.metrics.RecordUserAction;
import org.chromium.chrome.browser.ChromeActivity;
@@ -34,28 +35,26 @@ public class MainIntentBehaviorMetrics implements ApplicationStatus.ActivityStat
private static final long BACKGROUND_TIME_6_HOUR_MS = 21600000;
private static final long BACKGROUND_TIME_1_HOUR_MS = 3600000;
- private static final long TIMEOUT_DURATION_MS = 10000;
+ static final long TIMEOUT_DURATION_MS = 10000;
@Retention(RetentionPolicy.SOURCE)
- @IntDef({
- CONTINUATION,
- FOCUS_OMNIBOX,
- SWITCH_TABS,
- NTP_CREATED,
- BACKGROUNDED
- })
- private @interface MainIntentActionType {}
- private static final int CONTINUATION = 0;
- private static final int FOCUS_OMNIBOX = 1;
- private static final int SWITCH_TABS = 2;
- private static final int NTP_CREATED = 3;
- private static final int BACKGROUNDED = 4;
+ @IntDef({CONTINUATION, FOCUS_OMNIBOX, SWITCH_TABS, NTP_CREATED, BACKGROUNDED})
+ @interface MainIntentActionType {}
+ static final int CONTINUATION = 0;
+ static final int FOCUS_OMNIBOX = 1;
+ static final int SWITCH_TABS = 2;
+ static final int NTP_CREATED = 3;
+ static final int BACKGROUNDED = 4;
// Min and max values (in minutes) for the buckets in the duration histograms.
private static final int DURATION_HISTOGRAM_MIN = 5;
private static final int DURATION_HISTOGRAM_MAX = 48 * 60;
private static final int DURATION_HISTOGRAM_BUCKET_COUNT = 50;
+ @MainIntentActionType
+ private static Integer sLastMainIntentBehavior;
+ private static long sTimeoutDurationMs = TIMEOUT_DURATION_MS;
+
private final ChromeActivity mActivity;
private final Handler mHandler;
private final Runnable mTimeoutRunnable;
@@ -63,7 +62,7 @@ public class MainIntentBehaviorMetrics implements ApplicationStatus.ActivityStat
private boolean mPendingActionRecordForMainIntent;
private long mBackgroundDurationMs;
private TabModelSelectorTabModelObserver mTabModelObserver;
- private boolean mIgnorePendingAddTab;
+ private boolean mIgnoreEvents;
/**
* Constructs a metrics handler for ACTION_MAIN intents received for the specified activity.
@@ -84,7 +83,10 @@ public class MainIntentBehaviorMetrics implements ApplicationStatus.ActivityStat
*
* This must only be called after the native libraries have been initialized.
*/
+ @SuppressFBWarnings("ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD")
public void onMainIntentWithNative(long backgroundDurationMs) {
+ sLastMainIntentBehavior = null;
+
RecordUserAction.record("MobileStartup.MainIntentReceived");
if (backgroundDurationMs >= BACKGROUND_TIME_24_HOUR_MS) {
@@ -103,16 +105,12 @@ public class MainIntentBehaviorMetrics implements ApplicationStatus.ActivityStat
ApplicationStatus.registerStateListenerForActivity(this, mActivity);
mPendingActionRecordForMainIntent = true;
- mHandler.postDelayed(mTimeoutRunnable , TIMEOUT_DURATION_MS);
+ mHandler.postDelayed(mTimeoutRunnable, sTimeoutDurationMs);
mTabModelObserver = new TabModelSelectorTabModelObserver(
mActivity.getTabModelSelector()) {
@Override
public void didAddTab(Tab tab, TabLaunchType type) {
- if (mIgnorePendingAddTab) {
- mIgnorePendingAddTab = false;
- return;
- }
if (TabLaunchType.FROM_RESTORE.equals(type)) return;
if (NewTabPage.isNTPUrl(tab.getUrl())) recordUserBehavior(NTP_CREATED);
}
@@ -125,11 +123,12 @@ public class MainIntentBehaviorMetrics implements ApplicationStatus.ActivityStat
}
/**
- * Signal that the next tab addition should be ignored as a signal of MAIN intent behavior.
+ * Signal that any events should be ignored as a signal of MAIN intent behavior.
+ *
+ * @param shouldIgnore Whether events should be ignored.
*/
- public void ignorePendingAddTab() {
- if (!mPendingActionRecordForMainIntent) return;
- mIgnorePendingAddTab = true;
+ public void setIgnoreEvents(boolean shouldIgnore) {
+ mIgnoreEvents = shouldIgnore;
}
/**
@@ -146,6 +145,22 @@ public class MainIntentBehaviorMetrics implements ApplicationStatus.ActivityStat
}
}
+ /**
+ * @return The last main intent behavior recorded, which can be null if no MAIN intent has been
+ * received or if the event has not yet occurred.
+ */
+ @MainIntentActionType
+ public static Integer getLastMainIntentBehaviorForTesting() {
+ return sLastMainIntentBehavior;
+ }
+
+ /**
+ * Allows test to override the timeout duration.
+ */
+ public static void setTimeoutDurationMsForTesting(long duration) {
+ sTimeoutDurationMs = duration;
+ }
+
private String getHistogramNameForBehavior(@MainIntentActionType int behavior) {
switch (behavior) {
case CONTINUATION:
@@ -164,9 +179,10 @@ public class MainIntentBehaviorMetrics implements ApplicationStatus.ActivityStat
}
private void recordUserBehavior(@MainIntentActionType int behavior) {
- if (!mPendingActionRecordForMainIntent) return;
+ if (!mPendingActionRecordForMainIntent || mIgnoreEvents) return;
mPendingActionRecordForMainIntent = false;
+ sLastMainIntentBehavior = behavior;
String histogramName = getHistogramNameForBehavior(behavior);
if (histogramName != null) {
RecordHistogram.recordCustomCountHistogram(
« no previous file with comments | « chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java ('k') | chrome/android/java_sources.gni » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698