Index: chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java |
index da70c9e365de017276a632de783be584799e1f8d..745173a13fb610bb83f19290f64845a167269bd9 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java |
@@ -60,11 +60,6 @@ public class FirstRunActivity extends AppCompatActivity implements FirstRunPageD |
// UMA constants. |
private static final String UMA_SIGNIN_CHOICE = "MobileFre.SignInChoice"; |
- private static final String UMA_SIGNIN_CHOICE_ENTRY_MAIN_INTENT = ".MainIntent"; |
- private static final String UMA_SIGNIN_CHOICE_ENTRY_VIEW_INTENT = ".ViewIntent"; |
- private static final String UMA_SIGNIN_CHOICE_ZERO_ACCOUNTS = ".ZeroAccounts"; |
- private static final String UMA_SIGNIN_CHOICE_ONE_ACCOUNT = ".OneAccount"; |
- private static final String UMA_SIGNIN_CHOICE_MANY_ACCOUNTS = ".ManyAccounts"; |
private static final int SIGNIN_SETTINGS_DEFAULT_ACCOUNT = 0; |
private static final int SIGNIN_SETTINGS_ANOTHER_ACCOUNT = 1; |
private static final int SIGNIN_ACCEPT_DEFAULT_ACCOUNT = 2; |
@@ -72,6 +67,18 @@ public class FirstRunActivity extends AppCompatActivity implements FirstRunPageD |
private static final int SIGNIN_NO_THANKS = 4; |
private static final int SIGNIN_OPTION_COUNT = 5; |
+ private static final String FRE_ENTRY_MAIN_INTENT = ".MainIntent"; |
+ private static final String FRE_ENTRY_VIEW_INTENT = ".ViewIntent"; |
+ |
+ private static final String UMA_FRE_PROGRESS = "MobileFre.Progress"; |
+ private static final int FRE_PROGRESS_STARTED = 0; |
+ private static final int FRE_PROGRESS_WELCOME_SHOWN = 1; |
+ private static final int FRE_PROGRESS_DATA_SAVER_SHOWN = 2; |
+ private static final int FRE_PROGRESS_SIGNIN_SHOWN = 3; |
+ private static final int FRE_PROGRESS_COMPLETED_SIGNED_IN = 4; |
+ private static final int FRE_PROGRESS_COMPLETED_NOT_SIGNED_IN = 5; |
+ private static final int FRE_PROGRESS_TERMINATOR = 6; |
+ |
@VisibleForTesting |
static FirstRunGlue sGlue = new FirstRunGlueImpl(); |
@@ -89,6 +96,8 @@ public class FirstRunActivity extends AppCompatActivity implements FirstRunPageD |
private List<Callable<FirstRunPage>> mPages; |
+ private List<Integer> mFreProgressStates; |
+ |
/** |
* The pager adapter, which provides the pages to the view pager widget. |
*/ |
@@ -99,18 +108,24 @@ public class FirstRunActivity extends AppCompatActivity implements FirstRunPageD |
*/ |
private void createPageSequence() { |
mPages = new ArrayList<Callable<FirstRunPage>>(); |
+ mFreProgressStates = new ArrayList<Integer>(); |
// An optional welcome page. |
- if (mShowWelcomePage) mPages.add(pageOf(ToSAndUMAFirstRunFragment.class)); |
+ if (mShowWelcomePage) { |
+ mPages.add(pageOf(ToSAndUMAFirstRunFragment.class)); |
+ mFreProgressStates.add(FRE_PROGRESS_WELCOME_SHOWN); |
+ } |
// An optional Data Saver page. |
if (mFreProperties.getBoolean(SHOW_DATA_REDUCTION_PAGE)) { |
mPages.add(pageOf(DataReductionProxyFirstRunFragment.class)); |
+ mFreProgressStates.add(FRE_PROGRESS_DATA_SAVER_SHOWN); |
} |
// An optional sign-in page. |
if (mFreProperties.getBoolean(SHOW_SIGNIN_PAGE)) { |
mPages.add(pageOf(AccountFirstRunFragment.class)); |
+ mFreProgressStates.add(FRE_PROGRESS_SIGNIN_SHOWN); |
} |
} |
@@ -180,9 +195,13 @@ public class FirstRunActivity extends AppCompatActivity implements FirstRunPageD |
stopProgressionIfNotAcceptedTermsOfService(); |
mPager.setAdapter(mPagerAdapter); |
+ recordFreProgressHistogram(mFreProgressStates.get(0)); |
+ |
skipPagesIfNecessary(); |
} |
}.start(); |
+ |
+ recordFreProgressHistogram(FRE_PROGRESS_STARTED); |
} |
@Override |
@@ -284,19 +303,9 @@ public class FirstRunActivity extends AppCompatActivity implements FirstRunPageD |
RecordHistogram.recordEnumeratedHistogram( |
UMA_SIGNIN_CHOICE, choice, SIGNIN_OPTION_COUNT); |
- String entryType = mFreProperties.getBoolean(FirstRunActivity.COMING_FROM_CHROME_ICON) |
- ? UMA_SIGNIN_CHOICE_ENTRY_MAIN_INTENT : UMA_SIGNIN_CHOICE_ENTRY_VIEW_INTENT; |
- int numAccounts = sGlue.numberOfAccounts(getApplicationContext()); |
- String numAccountsString; |
- if (numAccounts == 0) { |
- numAccountsString = UMA_SIGNIN_CHOICE_ZERO_ACCOUNTS; |
- } else if (numAccounts == 1) { |
- numAccountsString = UMA_SIGNIN_CHOICE_ONE_ACCOUNT; |
- } else { |
- numAccountsString = UMA_SIGNIN_CHOICE_MANY_ACCOUNTS; |
- } |
- RecordHistogram.recordEnumeratedHistogram( |
- UMA_SIGNIN_CHOICE + entryType + numAccountsString, choice, SIGNIN_OPTION_COUNT); |
+ recordFreProgressHistogram(FRE_PROGRESS_COMPLETED_SIGNED_IN); |
+ } else { |
+ recordFreProgressHistogram(FRE_PROGRESS_COMPLETED_NOT_SIGNED_IN); |
} |
mFreProperties.putString(RESULT_SIGNIN_ACCOUNT_NAME, mResultSignInAccountName); |
@@ -398,6 +407,7 @@ public class FirstRunActivity extends AppCompatActivity implements FirstRunPageD |
return false; |
} |
mPager.setCurrentItem(position, false); |
+ recordFreProgressHistogram(mFreProgressStates.get(position)); |
return true; |
} |
@@ -434,6 +444,14 @@ public class FirstRunActivity extends AppCompatActivity implements FirstRunPageD |
} |
} |
+ private void recordFreProgressHistogram(int state) { |
+ String entryType = mFreProperties.getBoolean(FirstRunActivity.COMING_FROM_CHROME_ICON) |
+ ? FRE_ENTRY_MAIN_INTENT |
+ : FRE_ENTRY_VIEW_INTENT; |
+ RecordHistogram.recordEnumeratedHistogram( |
+ UMA_FRE_PROGRESS + entryType, state, FRE_PROGRESS_TERMINATOR); |
+ } |
+ |
/** |
* Creates a trivial page constructor for a given page type. |
* @param clazz The .class of the page type. |