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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/physicalweb/PhysicalWebUma.java

Issue 1807343002: Add Physical Web UMA for ListUrlsActivity referers (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 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/physicalweb/PhysicalWebUma.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/physicalweb/PhysicalWebUma.java b/chrome/android/java/src/org/chromium/chrome/browser/physicalweb/PhysicalWebUma.java
index 16783ae9b0ba0efb69c1a22ab04adedba0c39425..78318e3e5a93de1d6dfaa186f8ed35e16bf41b71 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/physicalweb/PhysicalWebUma.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/physicalweb/PhysicalWebUma.java
@@ -26,7 +26,6 @@ import javax.annotation.concurrent.ThreadSafe;
@ThreadSafe
public class PhysicalWebUma {
private static final String TAG = "PhysicalWeb";
- private static final String NOTIFICATION_PRESS_COUNT = "PhysicalWeb.NotificationPressed";
private static final String OPT_IN_DECLINE_BUTTON_PRESS_COUNT =
"PhysicalWeb.OptIn.DeclineButtonPressed";
private static final String OPT_IN_ENABLE_BUTTON_PRESS_COUNT =
@@ -43,21 +42,19 @@ public class PhysicalWebUma {
private static final String PREFS_LOCATION_GRANTED_COUNT = "PhysicalWeb.Prefs.LocationGranted";
private static final String PWS_BACKGROUND_RESOLVE_TIMES = "PhysicalWeb.ResolveTime.Background";
private static final String PWS_FOREGROUND_RESOLVE_TIMES = "PhysicalWeb.ResolveTime.Foreground";
+ private static final String OPT_IN_NOTIFICATION_PRESS_DELAYS =
+ "PhysicalWeb.ReferralDelay.OptInNotification";
+ private static final String STANDARD_NOTIFICATION_PRESS_DELAYS =
+ "PhysicalWeb.ReferralDelay.StandardNotification";
private static final String URL_SELECTED_COUNT = "PhysicalWeb.UrlSelected";
private static final String TOTAL_URLS_INITIAL_COUNTS =
"PhysicalWeb.TotalUrls.OnInitialDisplay";
private static final String TOTAL_URLS_REFRESH_COUNTS =
"PhysicalWeb.TotalUrls.OnRefresh";
+ private static final String ACTIVITY_REFERRALS = "PhysicalWeb.ActivityReferral";
private static boolean sUploadAllowed = false;
/**
- * Records a notification press.
- */
- public static void onNotificationPressed(Context context) {
- handleAction(context, NOTIFICATION_PRESS_COUNT);
- }
-
- /**
* Records a URL selection.
*/
public static void onUrlSelected(Context context) {
@@ -99,7 +96,7 @@ public class PhysicalWebUma {
handleAction(context, OPT_IN_NOTIFICATION_PRESS_COUNT);
}
- /*
+ /**
* Records when the user disables the Physical Web fetaure.
*/
public static void onPrefsFeatureDisabled(Context context) {
@@ -170,6 +167,35 @@ public class PhysicalWebUma {
}
/**
+ * Records a ListUrlActivity referral.
+ * @param refer The type of referral. This enum is listed as PhysicalWebActivityReferer in
+ * histograms.xml.
+ */
+ public static void onActivityReferral(Context context, int referer) {
+ if (sUploadAllowed) {
+ RecordHistogram.recordEnumeratedHistogram(
+ ACTIVITY_REFERRALS, referer, ListUrlsActivity.REFERER_BOUNDARY);
+ } else {
+ storeValue(context, ACTIVITY_REFERRALS, referer);
+ }
+ long delay;
+ switch (referer) {
+ case ListUrlsActivity.NOTIFICATION_REFERER:
+ delay = UrlManager.getInstance(context).getTimeSinceNotificationUpdate();
+ handleTime(context, STANDARD_NOTIFICATION_PRESS_DELAYS, delay,
+ TimeUnit.MILLISECONDS);
+ break;
+ case ListUrlsActivity.OPTIN_REFERER:
+ delay = UrlManager.getInstance(context).getTimeSinceNotificationUpdate();
+ handleTime(context, OPT_IN_NOTIFICATION_PRESS_DELAYS, delay,
+ TimeUnit.MILLISECONDS);
+ break;
+ default:
+ break;
+ }
+ }
+
+ /**
* Uploads metrics that we have deferred for uploading.
* Additionally, this method will cause future stat records not to be deferred and instead
* uploaded immediately.
@@ -181,7 +207,6 @@ public class PhysicalWebUma {
// Read the metrics.
UmaUploader uploader = new UmaUploader();
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
- uploader.notificationPressCount = prefs.getInt(NOTIFICATION_PRESS_COUNT, 0);
uploader.urlSelectedCount = prefs.getInt(URL_SELECTED_COUNT, 0);
uploader.optInDeclineButtonTapCount = prefs.getInt(OPT_IN_DECLINE_BUTTON_PRESS_COUNT, 0);
uploader.optInEnableButtonTapCount = prefs.getInt(OPT_IN_ENABLE_BUTTON_PRESS_COUNT, 0);
@@ -196,8 +221,13 @@ public class PhysicalWebUma {
uploader.prefsLocationGrantedCount = prefs.getInt(PREFS_LOCATION_GRANTED_COUNT, 0);
uploader.pwsBackgroundResolveTimes = prefs.getString(PWS_BACKGROUND_RESOLVE_TIMES, "[]");
uploader.pwsForegroundResolveTimes = prefs.getString(PWS_FOREGROUND_RESOLVE_TIMES, "[]");
+ uploader.standardNotificationPressDelays =
+ prefs.getString(STANDARD_NOTIFICATION_PRESS_DELAYS, "[]");
+ uploader.optInNotificationPressDelays =
+ prefs.getString(OPT_IN_NOTIFICATION_PRESS_DELAYS, "[]");
uploader.totalUrlsInitialCounts = prefs.getString(TOTAL_URLS_INITIAL_COUNTS, "[]");
uploader.totalUrlsRefreshCounts = prefs.getString(TOTAL_URLS_REFRESH_COUNTS, "[]");
+ uploader.activityReferrals = prefs.getString(ACTIVITY_REFERRALS, "[]");
// If the metrics are empty, we are done.
if (uploader.isEmpty()) {
@@ -206,7 +236,6 @@ public class PhysicalWebUma {
// Clear out the stored deferred metrics that we are about to upload.
prefs.edit()
- .remove(NOTIFICATION_PRESS_COUNT)
.remove(URL_SELECTED_COUNT)
.remove(OPT_IN_DECLINE_BUTTON_PRESS_COUNT)
.remove(OPT_IN_ENABLE_BUTTON_PRESS_COUNT)
@@ -219,8 +248,11 @@ public class PhysicalWebUma {
.remove(PREFS_LOCATION_GRANTED_COUNT)
.remove(PWS_BACKGROUND_RESOLVE_TIMES)
.remove(PWS_FOREGROUND_RESOLVE_TIMES)
+ .remove(STANDARD_NOTIFICATION_PRESS_DELAYS)
+ .remove(OPT_IN_NOTIFICATION_PRESS_DELAYS)
.remove(TOTAL_URLS_INITIAL_COUNTS)
.remove(TOTAL_URLS_REFRESH_COUNTS)
+ .remove(ACTIVITY_REFERRALS)
.apply();
// Finally, upload the metrics.
@@ -266,7 +298,6 @@ public class PhysicalWebUma {
}
private static class UmaUploader implements Runnable {
- public int notificationPressCount;
public int urlSelectedCount;
public int optInDeclineButtonTapCount;
public int optInEnableButtonTapCount;
@@ -279,12 +310,14 @@ public class PhysicalWebUma {
public int prefsLocationGrantedCount;
public String pwsBackgroundResolveTimes;
public String pwsForegroundResolveTimes;
+ public String standardNotificationPressDelays;
+ public String optInNotificationPressDelays;
public String totalUrlsInitialCounts;
public String totalUrlsRefreshCounts;
+ public String activityReferrals;
public boolean isEmpty() {
- return notificationPressCount == 0
- && urlSelectedCount == 0
+ return urlSelectedCount == 0
&& optInDeclineButtonTapCount == 0
&& optInEnableButtonTapCount == 0
&& optInHighPriorityNotificationCount == 0
@@ -296,8 +329,11 @@ public class PhysicalWebUma {
&& prefsLocationGrantedCount == 0
&& pwsBackgroundResolveTimes.equals("[]")
&& pwsForegroundResolveTimes.equals("[]")
+ && standardNotificationPressDelays.equals("[]")
+ && optInNotificationPressDelays.equals("[]")
&& totalUrlsInitialCounts.equals("[]")
- && totalUrlsRefreshCounts.equals("[]");
+ && totalUrlsRefreshCounts.equals("[]")
+ && activityReferrals.equals("[]");
}
UmaUploader() {
@@ -305,7 +341,6 @@ public class PhysicalWebUma {
@Override
public void run() {
- uploadActions(notificationPressCount, NOTIFICATION_PRESS_COUNT);
uploadActions(urlSelectedCount, URL_SELECTED_COUNT);
uploadActions(optInDeclineButtonTapCount, OPT_IN_DECLINE_BUTTON_PRESS_COUNT);
uploadActions(optInEnableButtonTapCount, OPT_IN_ENABLE_BUTTON_PRESS_COUNT);
@@ -322,8 +357,13 @@ public class PhysicalWebUma {
TimeUnit.MILLISECONDS);
uploadTimes(pwsForegroundResolveTimes, PWS_FOREGROUND_RESOLVE_TIMES,
TimeUnit.MILLISECONDS);
+ uploadTimes(standardNotificationPressDelays, STANDARD_NOTIFICATION_PRESS_DELAYS,
+ TimeUnit.MILLISECONDS);
+ uploadTimes(optInNotificationPressDelays, OPT_IN_NOTIFICATION_PRESS_DELAYS,
+ TimeUnit.MILLISECONDS);
uploadCounts(totalUrlsInitialCounts, TOTAL_URLS_INITIAL_COUNTS);
uploadCounts(totalUrlsRefreshCounts, TOTAL_URLS_REFRESH_COUNTS);
+ uploadEnums(activityReferrals, ACTIVITY_REFERRALS, ListUrlsActivity.REFERER_BOUNDARY);
}
private static void uploadActions(int count, String key) {
@@ -394,5 +434,16 @@ public class PhysicalWebUma {
RecordHistogram.recordCountHistogram(key, count);
}
}
+
+ private static void uploadEnums(String jsonEnumsStr, final String key, int boundary) {
+ Integer[] values = parseJsonIntegerArray(jsonEnumsStr);
+ if (values == null) {
+ Log.e(TAG, "Error reporting " + key + " with values: " + jsonEnumsStr);
+ return;
+ }
+ for (Integer value: values) {
+ RecordHistogram.recordEnumeratedHistogram(key, value, boundary);
+ }
+ }
}
}

Powered by Google App Engine
This is Rietveld 408576698