summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgogerald <gogerald@google.com>2016-02-13 16:28:50 -0500
committergogerald <gogerald@google.com>2016-02-13 21:30:53 +0000
commit2df95d805360f76f8b819d1644c99900d0c68eea (patch)
treed6d5a3b1812a3f0316ff65f1f8490837a073bacf
parentfdca520d59ce2738c799ec91479bbdf3df751550 (diff)
downloadchromium_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}
-rw-r--r--chrome/BUILD.gn7
-rw-r--r--chrome/android/BUILD.gn1
-rw-r--r--chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkSigninActivity.java6
-rw-r--r--chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java3
-rw-r--r--chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java6
-rw-r--r--chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsPromoView.java8
-rw-r--r--chrome/android/java/src/org/chromium/chrome/browser/preferences/MainPreferences.java2
-rw-r--r--chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManager.java23
-rw-r--r--chrome/android/java/src/org/chromium/chrome/browser/signin/SigninPromoScreen.java1
-rw-r--r--chrome/chrome.gyp10
-rw-r--r--components/signin/core/browser/signin_metrics.h6
-rw-r--r--tools/android/eclipse/.classpath1
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"/>