Bug 1409268 - Add telemetry for pwa badge and oboarding usage. r?maliu draft
authorNevin Chen <cnevinchen@gmail.com>
Thu, 19 Oct 2017 11:05:45 +0800
changeset 684601 3905103fa216c606c1a81625a840b9685aefe36c
parent 684511 ce1a86d3b4db161c95d1147676bbed839d7a4732
child 684644 35f21fd8bb942adfde774cf72ed5a995117795f1
push id85668
push userbmo:cnevinchen@gmail.com
push dateMon, 23 Oct 2017 07:33:45 +0000
reviewersmaliu
bugs1409268
milestone58.0a1
Bug 1409268 - Add telemetry for pwa badge and oboarding usage. r?maliu MozReview-Commit-ID: KGB5Fn5MI4A
mobile/android/base/java/org/mozilla/gecko/BrowserApp.java
mobile/android/base/java/org/mozilla/gecko/toolbar/PwaConfirm.java
mobile/android/base/java/org/mozilla/gecko/toolbar/PwaOnboarding.java
--- a/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java
+++ b/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java
@@ -145,16 +145,17 @@ import org.mozilla.gecko.tabs.TabHistory
 import org.mozilla.gecko.tabs.TabHistoryPage;
 import org.mozilla.gecko.tabs.TabsPanel;
 import org.mozilla.gecko.telemetry.TelemetryCorePingDelegate;
 import org.mozilla.gecko.telemetry.TelemetryUploadService;
 import org.mozilla.gecko.telemetry.measurements.SearchCountMeasurements;
 import org.mozilla.gecko.toolbar.AutocompleteHandler;
 import org.mozilla.gecko.toolbar.BrowserToolbar;
 import org.mozilla.gecko.toolbar.BrowserToolbar.TabEditingState;
+import org.mozilla.gecko.toolbar.PwaConfirm;
 import org.mozilla.gecko.trackingprotection.TrackingProtectionPrompt;
 import org.mozilla.gecko.updater.PostUpdateHandler;
 import org.mozilla.gecko.updater.UpdateServiceHelper;
 import org.mozilla.gecko.util.ActivityUtils;
 import org.mozilla.gecko.util.Clipboard;
 import org.mozilla.gecko.util.ContextUtils;
 import org.mozilla.gecko.util.DrawableUtil;
 import org.mozilla.gecko.util.EventCallback;
@@ -2110,16 +2111,19 @@ public class BrowserApp extends GeckoApp
                 final String manifestPath = message.getString("manifest_path");
                 final String manifestUrl = message.getString("manifest_url");
                 final LoadFaviconResult loadIconResult = FaviconDecoder
                     .decodeDataURI(this, message.getString("icon"));
                 if (loadIconResult != null) {
                     final Bitmap icon = loadIconResult
                         .getBestBitmap(GeckoAppShell.getPreferredIconSize());
                     GeckoApplication.createAppShortcut(name, startUrl, manifestPath, manifestUrl, icon);
+
+                    Telemetry.sendUIEvent(TelemetryContract.Event.ACTION, TelemetryContract.Method.PAGEACTION, PwaConfirm.TELEMETRY_EXTRA_ADDED);
+
                 } else {
                     Log.e(LOGTAG, "Failed to load icon!");
                 }
 
                 break;
 
             case "Website:AppInstallFailed":
                 final String title = message.getString("title");
--- a/mobile/android/base/java/org/mozilla/gecko/toolbar/PwaConfirm.java
+++ b/mobile/android/base/java/org/mozilla/gecko/toolbar/PwaConfirm.java
@@ -17,24 +17,35 @@ import android.view.ViewGroup;
 import android.widget.ImageView;
 import android.widget.RelativeLayout;
 import android.widget.TextView;
 
 import org.mozilla.gecko.GeckoApplication;
 import org.mozilla.gecko.R;
 import org.mozilla.gecko.Tab;
 import org.mozilla.gecko.Tabs;
+import org.mozilla.gecko.Telemetry;
+import org.mozilla.gecko.TelemetryContract;
 import org.mozilla.gecko.webapps.WebAppManifest;
 
 public class PwaConfirm extends RelativeLayout {
 
-    boolean isAnimating = false;
+    private static final String TELEMETRY_EXTRA_SHOW = "pwa_confirm_show";
+    private static final String TELEMETRY_EXTRA_CANCEL = "pwa_confirm_cancel";
+    private static final String TELEMETRY_EXTRA_BACK = "pwa_confirm_back";
+    private static final String TELEMETRY_EXTRA_ACCEPT = "pwa_confirm_accept";
+    public static final String TELEMETRY_EXTRA_ADDED = "pwa_confirm_added";
 
 
+    private boolean isAnimating = false;
+
     public static PwaConfirm show(Context context) {
+
+        Telemetry.sendUIEvent(TelemetryContract.Event.ACTION, TelemetryContract.Method.ACTIONBAR, TELEMETRY_EXTRA_SHOW);
+
         if (context instanceof Activity) {
             final ViewGroup contetView = (ViewGroup) ((Activity) context).findViewById(R.id.gecko_layout);
             final View oldPwaConfirm = contetView.findViewById(R.id.pwa_confirm_root);
             if ((oldPwaConfirm != null)) {
                 // prevent this view to be added twice.
                 return (PwaConfirm) oldPwaConfirm;
             }
             View parent = LayoutInflater.from(context).inflate(R.layout.pwa_confirm, contetView);
@@ -94,23 +105,27 @@ public class PwaConfirm extends Relative
         init();
         setupBackpress();
     }
 
     private void init() {
         final OnClickListener dismiss = new OnClickListener() {
             @Override
             public void onClick(View v) {
+                Telemetry.sendUIEvent(TelemetryContract.Event.ACTION, TelemetryContract.Method.PAGEACTION, TELEMETRY_EXTRA_CANCEL);
                 disappear();
             }
         };
         final OnClickListener createShortcut = new OnClickListener() {
 
             @Override
             public void onClick(View v) {
+
+                Telemetry.sendUIEvent(TelemetryContract.Event.ACTION, TelemetryContract.Method.PAGEACTION, TELEMETRY_EXTRA_ACCEPT);
+
                 GeckoApplication.createShortcut();
                 disappear();
             }
         };
         findViewById(R.id.pwa_confirm_root).setOnClickListener(dismiss);
         findViewById(R.id.pwa_confirm_cancel).setOnClickListener(dismiss);
         findViewById(R.id.pwa_confirm_action).setOnClickListener(createShortcut);
 
@@ -130,16 +145,17 @@ public class PwaConfirm extends Relative
 
     private void setupBackpress() {
         setFocusableInTouchMode(true);
         requestFocus();
         setOnKeyListener(new OnKeyListener() {
             @Override
             public boolean onKey(View v, int keyCode, KeyEvent event) {
                 if (event.getAction() == KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_BACK) {
+                    Telemetry.sendUIEvent(TelemetryContract.Event.ACTION, TelemetryContract.Method.PAGEACTION, TELEMETRY_EXTRA_BACK);
                     dismiss();
                 }
                 return true;
             }
         });
     }
 
     public void dismiss() {
--- a/mobile/android/base/java/org/mozilla/gecko/toolbar/PwaOnboarding.java
+++ b/mobile/android/base/java/org/mozilla/gecko/toolbar/PwaOnboarding.java
@@ -12,22 +12,32 @@ import android.view.KeyEvent;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.LinearLayout;
 import android.widget.RelativeLayout;
 
 import org.mozilla.gecko.R;
 import org.mozilla.gecko.Tabs;
+import org.mozilla.gecko.Telemetry;
+import org.mozilla.gecko.TelemetryContract;
 
 public class PwaOnboarding extends RelativeLayout {
 
-    static final String LINK_PWA_SUMO = "https://developer.mozilla.org/en-US/Apps/Progressive";
+    private static final String LINK_PWA_SUMO = "https://developer.mozilla.org/en-US/Apps/Progressive";
+
+    private static final String TELEMETRY_EXTRA_SHOW = "pwa_onboarding_show";
+    private static final String TELEMETRY_EXTRA_CLOSE = "pwa_onboarding_close";
+    private static final String TELEMETRY_EXTRA_BACK = "pwa_onboarding_back";
+    private static final String TELEMETRY_EXTRA_SUMO = "pwa_onboarding_sumo";
 
     public static void show(Context context) {
+
+        Telemetry.sendUIEvent(TelemetryContract.Event.ACTION, TelemetryContract.Method.DIALOG, TELEMETRY_EXTRA_SHOW);
+
         if (context instanceof Activity) {
             final ViewGroup contetView = (ViewGroup) ((Activity) context).findViewById(android.R.id.content);
             LayoutInflater.from(context).inflate(R.layout.pwa_onboarding, contetView);
         }
     }
 
     public PwaOnboarding(Context context) {
         super(context);
@@ -47,23 +57,25 @@ public class PwaOnboarding extends Relat
         init();
         setupBackpress();
     }
 
     private void init() {
         final OnClickListener dismiss = new OnClickListener() {
             @Override
             public void onClick(View v) {
+                Telemetry.sendUIEvent(TelemetryContract.Event.ACTION, TelemetryContract.Method.DIALOG, TELEMETRY_EXTRA_CLOSE);
                 dismiss();
             }
         };
         final OnClickListener loadSumo = new OnClickListener() {
 
             @Override
             public void onClick(View v) {
+                Telemetry.sendUIEvent(TelemetryContract.Event.ACTION, TelemetryContract.Method.DIALOG, TELEMETRY_EXTRA_SUMO);
                 dismiss();
                 Tabs.getInstance().loadUrlInTab(LINK_PWA_SUMO);
             }
         };
         findViewById(R.id.pwa_onboarding_root).setOnClickListener(dismiss);
         findViewById(R.id.pwa_onboarding_dismiss).setOnClickListener(dismiss);
         findViewById(R.id.pwa_onboarding_sumo).setOnClickListener(loadSumo);
     }
@@ -71,16 +83,17 @@ public class PwaOnboarding extends Relat
 
     private void setupBackpress() {
         setFocusableInTouchMode(true);
         requestFocus();
         setOnKeyListener(new OnKeyListener() {
             @Override
             public boolean onKey(View v, int keyCode, KeyEvent event) {
                 if (event.getAction() == KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_BACK) {
+                    Telemetry.sendUIEvent(TelemetryContract.Event.ACTION, TelemetryContract.Method.DIALOG, TELEMETRY_EXTRA_BACK);
                     dismiss();
                 }
                 return true;
             }
         });
     }
 
     private void dismiss() {