diff options
author | gogerald <gogerald@google.com> | 2016-02-13 16:28:50 -0500 |
---|---|---|
committer | gogerald <gogerald@google.com> | 2016-02-13 21:30:53 +0000 |
commit | 2df95d805360f76f8b819d1644c99900d0c68eea (patch) | |
tree | d6d5a3b1812a3f0316ff65f1f8490837a073bacf | |
parent | fdca520d59ce2738c799ec91479bbdf3df751550 (diff) | |
download | chromium_src-2df95d805360f76f8b819d1644c99900d0c68eea.zip chromium_src-2df95d805360f76f8b819d1644c99900d0c68eea.tar.gz chromium_src-2df95d805360f76f8b819d1644c99900d0c68eea.tar.bz2 |
Implementation of newly designed sign in related histograms for Android.
This CL is dedicated to implement newly designed sign in related histograms (Signin.SigninStartedAccessPoint, Signin.SigninCompletedAccessPoint, Signin.SigninReason) for Android. Please refer https://docs.google.com/a/google.com/document/d/1-gXYAMXXgsJhk6jxO55RuYJ00JBGermevJZ0sIlk6ko/edit?usp=sharing for details.
BUG=532557
Review URL: https://codereview.chromium.org/1578433002
Cr-Commit-Position: refs/heads/master@{#373577}
(cherry picked from commit 5a9e2b34d01056dfdc1a60ce418f5e9f884c9967)
Review URL: https://codereview.chromium.org/1699633002 .
Cr-Commit-Position: refs/branch-heads/2623@{#392}
Cr-Branched-From: 92d77538a86529ca35f9220bd3cd512cbea1f086-refs/heads/master@{#369907}
12 files changed, 73 insertions, 1 deletions
diff --git a/chrome/BUILD.gn b/chrome/BUILD.gn index cc14b81..4edb1d6 100644 --- a/chrome/BUILD.gn +++ b/chrome/BUILD.gn @@ -945,6 +945,13 @@ if (is_android) { ] } + # GYP: //chrome/chrome.gyp:signin_metrics_enum_java + java_cpp_enum("signin_metrics_enum_javagen") { + sources = [ + "../components/signin/core/browser/signin_metrics.h", + ] + } + # GYP: //chrome/chrome.gyp:page_info_connection_type_java java_cpp_enum("page_info_connection_type_javagen") { sources = [ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn index 37ced33..5e50b32 100644 --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn @@ -167,6 +167,7 @@ android_library("chrome_java") { ":resource_id_javagen", "//chrome:content_setting_javagen", "//chrome:content_settings_type_javagen", + "//chrome:signin_metrics_enum_javagen", ] # TODO(sievers): Split java code into components. Not everything diff --git a/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkSigninActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkSigninActivity.java index 7912bd04..5d2d7c6 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkSigninActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkSigninActivity.java @@ -13,6 +13,7 @@ import org.chromium.chrome.browser.ntp.RecentTabsPromoView; import org.chromium.chrome.browser.ntp.RecentTabsPromoView.SyncPromoModel; import org.chromium.chrome.browser.ntp.RecentTabsPromoView.UserActionListener; import org.chromium.chrome.browser.profiles.Profile; +import org.chromium.chrome.browser.signin.SigninAccessPoint; import org.chromium.chrome.browser.signin.SigninManager; import org.chromium.chrome.browser.signin.SigninManager.SignInStateObserver; import org.chromium.chrome.browser.sync.ProfileSyncService; @@ -136,4 +137,9 @@ public class EnhancedBookmarkSigninActivity extends EnhancedBookmarkActivityBase } return mProfileDataCache; } + + @Override + public int getAccessPoint() { + return SigninAccessPoint.BOOKMARK_MANAGER; + } } 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 0318783..fdd9e72 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 @@ -26,6 +26,8 @@ import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings; import org.chromium.chrome.browser.preferences.datareduction.DataReductionPromoScreen; import org.chromium.chrome.browser.preferences.datareduction.DataReductionProxyUma; import org.chromium.chrome.browser.profiles.Profile; +import org.chromium.chrome.browser.signin.SigninAccessPoint; +import org.chromium.chrome.browser.signin.SigninManager; import java.lang.ref.WeakReference; import java.lang.reflect.Constructor; @@ -307,6 +309,7 @@ public class FirstRunActivity extends AppCompatActivity implements FirstRunPageD public void onSigninDialogShown() { RecordUserAction.record("MobileFre.SignInShown"); RecordUserAction.record("Signin_Impression_FromStartPage"); + SigninManager.logSigninStartAccessPoint(SigninAccessPoint.START_PAGE); } @Override diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java index 5f2749c..c598cfa 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java @@ -22,6 +22,7 @@ import org.chromium.chrome.browser.ntp.RecentTabsPromoView.SyncPromoModel; import org.chromium.chrome.browser.ntp.RecentlyClosedBridge.RecentlyClosedCallback; import org.chromium.chrome.browser.ntp.RecentlyClosedBridge.RecentlyClosedTab; import org.chromium.chrome.browser.profiles.Profile; +import org.chromium.chrome.browser.signin.SigninAccessPoint; import org.chromium.chrome.browser.signin.SigninManager; import org.chromium.chrome.browser.signin.SigninManager.SignInStateObserver; import org.chromium.chrome.browser.sync.ProfileSyncService; @@ -475,4 +476,9 @@ public class RecentTabsManager implements AndroidSyncSettingsObserver, SignInSta } return mProfileDataCache; } + + @Override + public int getAccessPoint() { + return SigninAccessPoint.RECENT_TABS; + } } diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsPromoView.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsPromoView.java index 946b28a..8356faa 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsPromoView.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsPromoView.java @@ -19,6 +19,7 @@ import org.chromium.chrome.R; import org.chromium.chrome.browser.firstrun.AccountFirstRunView; import org.chromium.chrome.browser.firstrun.ProfileDataCache; import org.chromium.chrome.browser.signin.AccountAdder; +import org.chromium.chrome.browser.signin.SigninManager; import org.chromium.chrome.browser.sync.ui.ConfirmAccountChangeFragment; import org.chromium.sync.AndroidSyncSettings.AndroidSyncSettingsObserver; @@ -73,6 +74,11 @@ public class RecentTabsPromoView extends FrameLayout implements AndroidSyncSetti * @return A ProfileDataCache to retrieve user account info. */ public ProfileDataCache getProfileDataCache(); + + /** + * @return the access point of creating this view. + */ + public int getAccessPoint(); } /** @@ -282,7 +288,7 @@ public class RecentTabsPromoView extends FrameLayout implements AndroidSyncSetti assert false : "No forced accounts in SignInPromoView"; } }); - + SigninManager.logSigninStartAccessPoint(mModel.getAccessPoint()); return signInPromoView; } } diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/MainPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/MainPreferences.java index 76a086a..6a9496c 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/MainPreferences.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/MainPreferences.java @@ -24,6 +24,7 @@ import org.chromium.chrome.browser.preferences.datareduction.DataReductionPrefer import org.chromium.chrome.browser.signin.AccountAdder; import org.chromium.chrome.browser.signin.AddGoogleAccountDialogFragment; import org.chromium.chrome.browser.signin.AddGoogleAccountDialogFragment.AddGoogleAccountListener; +import org.chromium.chrome.browser.signin.SigninAccessPoint; import org.chromium.chrome.browser.signin.SigninManager; import org.chromium.chrome.browser.signin.SigninManager.SignInStateObserver; import org.chromium.chrome.browser.sync.ui.ChooseAccountFragment; @@ -202,6 +203,7 @@ public class MainPreferences extends PreferenceFragment implements SignInStateOb new ChooseAccountFragment(accountNames); chooserFragment.show(getFragmentManager(), ACCOUNT_PICKER_DIALOG_TAG); callback.onResult(chooserFragment); + SigninManager.logSigninStartAccessPoint(SigninAccessPoint.SETTINGS); } } else { AddGoogleAccountDialogFragment dialog = new AddGoogleAccountDialogFragment(); diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManager.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManager.java index d1ac844..9f4d3f6 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManager.java @@ -18,6 +18,7 @@ import org.chromium.base.Log; import org.chromium.base.ObserverList; import org.chromium.base.ThreadUtils; import org.chromium.base.annotations.CalledByNative; +import org.chromium.base.metrics.RecordHistogram; import org.chromium.chrome.browser.externalauth.ExternalAuthUtils; import org.chromium.chrome.browser.externalauth.UserRecoverableErrorHandler; import org.chromium.sync.signin.ChromeSigninController; @@ -51,6 +52,7 @@ public class SigninManager implements AccountTrackerService.OnSystemAccountsSeed private static final String TAG = "SigninManager"; private static SigninManager sSigninManager; + private static int sSignInAccessPoint = SigninAccessPoint.UNKNOWN; private final Context mContext; private final long mNativeSigninManagerAndroid; @@ -163,6 +165,22 @@ public class SigninManager implements AccountTrackerService.OnSystemAccountsSeed } /** + * Log the access point when the user see the view of choosing account to sign in. + * @param accessPoint the enum value of AccessPoint defined in signin_metrics.h. + */ + public static void logSigninStartAccessPoint(int accessPoint) { + RecordHistogram.recordEnumeratedHistogram( + "Signin.SigninStartedAccessPoint", accessPoint, SigninAccessPoint.MAX); + sSignInAccessPoint = accessPoint; + } + + private void logSigninCompleteAccessPoint() { + RecordHistogram.recordEnumeratedHistogram( + "Signin.SigninCompletedAccessPoint", sSignInAccessPoint, SigninAccessPoint.MAX); + sSignInAccessPoint = SigninAccessPoint.UNKNOWN; + } + + /** * Notifies the SigninManager that the First Run check has completed. * * The user will be allowed to sign-in once this is signaled. @@ -488,6 +506,11 @@ public class SigninManager implements AccountTrackerService.OnSystemAccountsSeed } SigninManager.get(mContext).logInSignedInUser(); + logSigninCompleteAccessPoint(); + // Log signin in reason as defined in signin_metrics.h. Right now only + // SIGNIN_PRIMARY_ACCOUNT available on Android. + RecordHistogram.recordEnumeratedHistogram("Signin.SigninReason", + SigninReason.SIGNIN_PRIMARY_ACCOUNT, SigninReason.MAX); } @Override public void onSigninCancelled() { diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninPromoScreen.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninPromoScreen.java index 8fff265..067efea 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninPromoScreen.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninPromoScreen.java @@ -61,6 +61,7 @@ public class SigninPromoScreen SigninPromoScreen promoScreen = new SigninPromoScreen(activity); promoScreen.show(); + SigninManager.logSigninStartAccessPoint(SigninAccessPoint.SIGNIN_PROMO); preferenceManager.setSigninPromoShown(); return true; } diff --git a/chrome/chrome.gyp b/chrome/chrome.gyp index cc6424b..5a16c54 100644 --- a/chrome/chrome.gyp +++ b/chrome/chrome.gyp @@ -547,6 +547,7 @@ 'profile_account_management_metrics_java', 'resource_id_java', 'shortcut_source_java', + 'signin_metrics_enum_java', 'tab_load_status_java', '../base/base.gyp:base', '../build/android/java_google_api_keys.gyp:google_api_keys_java', @@ -670,6 +671,15 @@ }, 'includes': [ '../build/android/java_cpp_enum.gypi' ], }, + { + # GN: //chrome:signin_metrics_enum_javagen + 'target_name': 'signin_metrics_enum_java', + 'type': 'none', + 'variables': { + 'source_file': '../components/signin/core/browser/signin_metrics.h', + }, + 'includes': [ '../build/android/java_cpp_enum.gypi' ], + }, ], # 'targets' 'includes': [ 'chrome_android.gypi', diff --git a/components/signin/core/browser/signin_metrics.h b/components/signin/core/browser/signin_metrics.h index 762fd37..420916a 100644 --- a/components/signin/core/browser/signin_metrics.h +++ b/components/signin/core/browser/signin_metrics.h @@ -115,6 +115,9 @@ enum Source { // initiated. Not all of them exist on all platforms. They are used with // "Signin.SigninStartedAccessPoint" and "Signin.SigninCompletedAccessPoint" // histograms. +// A Java counterpart will be generated for this enum. +// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.chrome.browser.signin +// GENERATED_JAVA_CLASS_NAME_OVERRIDE: SigninAccessPoint enum class AccessPoint : int { ACCESS_POINT_START_PAGE = 0, ACCESS_POINT_NTP_LINK, @@ -138,6 +141,9 @@ enum class AccessPoint : int { }; // Enum values which enumerates all reasons to start sign in process. +// A Java counterpart will be generated for this enum. +// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.chrome.browser.signin +// GENERATED_JAVA_CLASS_NAME_OVERRIDE: SigninReason enum class Reason : int { REASON_SIGNIN_PRIMARY_ACCOUNT = 0, REASON_ADD_SECONDARY_ACCOUNT, diff --git a/tools/android/eclipse/.classpath b/tools/android/eclipse/.classpath index eef7d41..f498617 100644 --- a/tools/android/eclipse/.classpath +++ b/tools/android/eclipse/.classpath @@ -135,6 +135,7 @@ to the classpath for downstream development. See "additional_entries" below. <classpathentry kind="src" path="out/Debug/gen/enums/result_codes_java"/> <classpathentry kind="src" path="out/Debug/gen/enums/screen_orientation_values_java"/> <classpathentry kind="src" path="out/Debug/gen/enums/selection_event_type_java"/> + <classpathentry kind="src" path="out/Debug/gen/enums/signin_metrics_enum_java"/> <classpathentry kind="src" path="out/Debug/gen/enums/speech_recognition_error_java"/> <classpathentry kind="src" path="out/Debug/gen/enums/system_ui_resource_type_java"/> <classpathentry kind="src" path="out/Debug/gen/enums/tab_load_status_java"/> |