Bug 1251362 - Part 14 - Add telemetry for restoring tabs. r=liuche draft
authorJan Henning <jh+bugzilla@buttercookie.de>
Wed, 18 May 2016 19:04:49 +0200
changeset 376082 6d09fadb8ee5de47ffd183abead83b109e08e385
parent 376081 bbaecba8579b9fcdec4dc5b194759a25eefd4ead
child 376083 aa1cf12a44dd5229d5a2aa8d1bb6ee81bea90bcf
push id20500
push usermozilla@buttercookie.de
push dateTue, 07 Jun 2016 11:41:20 +0000
reviewersliuche
bugs1251362
milestone50.0a1
Bug 1251362 - Part 14 - Add telemetry for restoring tabs. r=liuche This adds telemetry for clicking on a closed tab or the "Open all" button. Methods and extras strings are based on those used for the old Recent Tabs panel. MozReview-Commit-ID: 1Kc8fACkmIc
mobile/android/base/java/org/mozilla/gecko/home/CombinedHistoryPanel.java
mobile/android/base/java/org/mozilla/gecko/home/CombinedHistoryRecyclerView.java
mobile/android/base/java/org/mozilla/gecko/home/RecentTabsAdapter.java
--- a/mobile/android/base/java/org/mozilla/gecko/home/CombinedHistoryPanel.java
+++ b/mobile/android/base/java/org/mozilla/gecko/home/CombinedHistoryPanel.java
@@ -420,17 +420,20 @@ public class CombinedHistoryPanel extend
                     mRecentTabsAdapter.clearLastSessionData();
                             Telemetry.sendUIEvent(TelemetryContract.Event.SANITIZE, TelemetryContract.Method.BUTTON, "history");
                         }
                     });
 
                     dialogBuilder.show();
                     break;
                 case CHILD_RECENT_TABS:
-                    mRecentTabsAdapter.restoreAllTabs();
+                    final String telemetryExtra = mRecentTabsAdapter.restoreAllTabs();
+                    if (telemetryExtra != null) {
+                        Telemetry.sendUIEvent(TelemetryContract.Event.LOAD_URL, TelemetryContract.Method.BUTTON, telemetryExtra);
+                    }
                     break;
             }
         }
     }
 
     private void updateEmptyView() {
         boolean showEmptyHistoryView = false;
         boolean showEmptyClientsView = false;
--- a/mobile/android/base/java/org/mozilla/gecko/home/CombinedHistoryRecyclerView.java
+++ b/mobile/android/base/java/org/mozilla/gecko/home/CombinedHistoryRecyclerView.java
@@ -85,16 +85,17 @@ public class CombinedHistoryRecyclerView
     public void setHiddenClientsDialogBuilder(CombinedHistoryPanel.DialogBuilder<RemoteClient> builder) {
         mDialogBuilder = builder;
     }
 
     @Override
     public void onItemClicked(RecyclerView recyclerView, int position, View v) {
         final int viewType = getAdapter().getItemViewType(position);
         final CombinedHistoryItem.ItemType itemType = CombinedHistoryItem.ItemType.viewTypeToItemType(viewType);
+        final String telemetryExtra;
 
         switch (itemType) {
             case RECENT_TABS:
                 mOnPanelLevelChangeListener.changeLevel(CHILD_RECENT_TABS);
                 break;
 
             case SYNCED_DEVICES:
                 mOnPanelLevelChangeListener.changeLevel(CHILD_SYNC);
@@ -119,17 +120,18 @@ public class CombinedHistoryRecyclerView
                 if (mOnUrlOpenListener != null) {
                     final TwoLinePageRow historyItem = (TwoLinePageRow) v;
                     Telemetry.sendUIEvent(TelemetryContract.Event.LOAD_URL, TelemetryContract.Method.LIST_ITEM, "history");
                     mOnUrlOpenListener.onUrlOpen(historyItem.getUrl(), EnumSet.of(HomePager.OnUrlOpenListener.Flags.ALLOW_SWITCH_TO_TAB));
                 }
                 break;
 
             case CLOSED_TAB:
-                ((RecentTabsAdapter) getAdapter()).restoreTabFromPosition(position);
+                telemetryExtra = ((RecentTabsAdapter) getAdapter()).restoreTabFromPosition(position);
+                Telemetry.sendUIEvent(TelemetryContract.Event.LOAD_URL, TelemetryContract.Method.LIST_ITEM, telemetryExtra);
                 break;
         }
     }
 
     @Override
     public boolean onItemLongClicked(RecyclerView recyclerView, int position, View v) {
         mContextMenuInfo = ((AdapterContextMenuBuilder) getAdapter()).makeContextMenuInfoFromPosition(v, position);
         return showContextMenuForChild(this);
--- a/mobile/android/base/java/org/mozilla/gecko/home/RecentTabsAdapter.java
+++ b/mobile/android/base/java/org/mozilla/gecko/home/RecentTabsAdapter.java
@@ -35,16 +35,20 @@ import java.util.List;
 import static org.mozilla.gecko.home.CombinedHistoryItem.ItemType;
 
 public class RecentTabsAdapter extends RecyclerView.Adapter<CombinedHistoryItem>
                                implements CombinedHistoryRecyclerView.AdapterContextMenuBuilder, NativeEventListener {
     private static final String LOGTAG = "GeckoRecentTabsAdapter";
 
     private static final int NAVIGATION_BACK_BUTTON_INDEX = 0;
 
+    private static final String TELEMETRY_EXTRA_LAST_TIME = "recent_tabs_last_time";
+    private static final String TELEMETRY_EXTRA_RECENTY_CLOSED = "recent_closed_tabs";
+    private static final String TELEMETRY_EXTRA_MIXED = "recent_tabs_mixed";
+
     // Recently closed tabs from Gecko.
     private ClosedTab[] recentlyClosedTabs;
 
     // "Tabs from last time".
     private ClosedTab[] lastSessionTabs;
 
     public static final class ClosedTab {
         public final String url;
@@ -228,32 +232,43 @@ public class RecentTabsAdapter extends R
             notifyItemRangeRemoved(lastTabListIndex + 1, -closedTabsCountChange); // Remove tabs from the bottom of the list.
             notifyItemRangeChanged(firstTabListIndex, closedTabsCount); // Update the contents of the remaining items.
         } else { // closedTabsCountChange > 0
             notifyItemRangeInserted(firstTabListIndex, closedTabsCountChange); // Add additional tabs at the top of the list.
             notifyItemRangeChanged(firstTabListIndex + closedTabsCountChange, prevClosedTabsCount); // Update any previous list items.
         }
     }
 
-    public void restoreTabFromPosition(int position) {
+    public String restoreTabFromPosition(int position) {
         final List<String> dataList = new ArrayList<>(1);
         dataList.add(getClosedTabForPosition(position).data);
+
+        final String telemetryExtra =
+                position > getLastRecentTabIndex() ? TELEMETRY_EXTRA_LAST_TIME : TELEMETRY_EXTRA_RECENTY_CLOSED;
+
         restoreSessionWithHistory(dataList);
+
+        return telemetryExtra;
     }
 
-    public void restoreAllTabs() {
+    public String restoreAllTabs() {
         if (recentlyClosedTabs.length == 0 && lastSessionTabs.length == 0) {
-            return;
+            return null;
         }
 
         final List<String> dataList = new ArrayList<>(getClosedTabsCount());
         addTabDataToList(dataList, recentlyClosedTabs);
         addTabDataToList(dataList, lastSessionTabs);
 
+        final String telemetryExtra = recentlyClosedTabs.length > 0 && lastSessionTabs.length > 0 ? TELEMETRY_EXTRA_MIXED :
+                recentlyClosedTabs.length > 0 ? TELEMETRY_EXTRA_RECENTY_CLOSED : TELEMETRY_EXTRA_LAST_TIME;
+
         restoreSessionWithHistory(dataList);
+
+        return telemetryExtra;
     }
 
     private void addTabDataToList(List<String> dataList, ClosedTab[] closedTabs) {
         for (ClosedTab closedTab : closedTabs) {
             dataList.add(closedTab.data);
         }
     }