Add metrics for suggestions

Bug: 27851236
Change-Id: Ia5aa1d42a40ba09a19db3c3790f0a7342660e613
diff --git a/src/com/android/settings/dashboard/DashboardAdapter.java b/src/com/android/settings/dashboard/DashboardAdapter.java
index 58990d3..8082f62 100644
--- a/src/com/android/settings/dashboard/DashboardAdapter.java
+++ b/src/com/android/settings/dashboard/DashboardAdapter.java
@@ -225,6 +225,8 @@
                 holder.itemView.setOnClickListener(new View.OnClickListener() {
                     @Override
                     public void onClick(View v) {
+                        MetricsLogger.action(mContext, MetricsEvent.ACTION_SETTINGS_SUGGESTION,
+                                DashboardAdapter.getSuggestionIdentifier(mContext, suggestion));
                         ((SettingsActivity) mContext).startSuggestion(suggestion.intent);
                     }
                 });
@@ -259,6 +261,8 @@
                 new MenuItem.OnMenuItemClickListener() {
             @Override
             public boolean onMenuItemClick(MenuItem item) {
+                MetricsLogger.action(mContext, MetricsEvent.ACTION_SETTINGS_DISMISS_SUGGESTION,
+                        DashboardAdapter.getSuggestionIdentifier(mContext, suggestion));
                 disableSuggestion(suggestion);
                 mSuggestions.remove(suggestion);
                 recountItems();
@@ -378,6 +382,16 @@
         return null;
     }
 
+    public static String getSuggestionIdentifier(Context context, Tile suggestion) {
+        String packageName = suggestion.intent.getComponent().getPackageName();
+        if (packageName.equals(context.getPackageName())) {
+            // Since Settings provides several suggestions, fill in the class instead of the
+            // package for these.
+            packageName = suggestion.intent.getComponent().getClassName();
+        }
+        return packageName;
+    }
+
     public static class DashboardItemHolder extends RecyclerView.ViewHolder {
         public final ImageView icon;
         public final TextView title;
diff --git a/src/com/android/settings/dashboard/DashboardSummary.java b/src/com/android/settings/dashboard/DashboardSummary.java
index 4595629..5d9a79b 100644
--- a/src/com/android/settings/dashboard/DashboardSummary.java
+++ b/src/com/android/settings/dashboard/DashboardSummary.java
@@ -39,6 +39,7 @@
 import com.android.settingslib.SuggestionParser;
 import com.android.settingslib.drawer.DashboardCategory;
 import com.android.settingslib.drawer.SettingsDrawerActivity;
+import com.android.settingslib.drawer.Tile;
 
 import java.util.List;
 
@@ -114,6 +115,10 @@
         for (Condition c : mConditionManager.getVisibleConditions()) {
             MetricsLogger.visible(getContext(), c.getMetricsConstant());
         }
+        for (Tile suggestion : mSuggestionParser.getSuggestions()) {
+            MetricsLogger.action(getContext(), MetricsEvent.ACTION_SHOW_SETTINGS_SUGGESTION,
+                    DashboardAdapter.getSuggestionIdentifier(getContext(), suggestion));
+        }
     }
 
     @Override
@@ -125,6 +130,10 @@
         for (Condition c : mConditionManager.getVisibleConditions()) {
             MetricsLogger.hidden(getContext(), c.getMetricsConstant());
         }
+        for (Tile suggestion : mSuggestionParser.getSuggestions()) {
+            MetricsLogger.action(getContext(), MetricsEvent.ACTION_HIDE_SETTINGS_SUGGESTION,
+                    DashboardAdapter.getSuggestionIdentifier(getContext(), suggestion));
+        }
     }
 
     @Override