Bug 1409268 - Add telemetry for pwa badge and oboarding usage. r?maliu
MozReview-Commit-ID: KGB5Fn5MI4A
--- 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() {