Add metrics for settings conditionals

Bug: 27851236
Change-Id: I400716457d3f628419410a02c2a457d41d19a067
diff --git a/src/com/android/settings/dashboard/DashboardAdapter.java b/src/com/android/settings/dashboard/DashboardAdapter.java
index 2226bc2..58990d3 100644
--- a/src/com/android/settings/dashboard/DashboardAdapter.java
+++ b/src/com/android/settings/dashboard/DashboardAdapter.java
@@ -28,6 +28,8 @@
 import android.view.ViewGroup;
 import android.widget.ImageView;
 import android.widget.TextView;
+import com.android.internal.logging.MetricsLogger;
+import com.android.internal.logging.MetricsProto.MetricsEvent;
 import com.android.internal.util.ArrayUtils;
 import com.android.settings.R;
 import com.android.settings.SettingsActivity;
@@ -343,18 +345,26 @@
     @Override
     public void onClick(View v) {
         if (v.getTag() == mExpandedCondition) {
+            MetricsLogger.action(mContext, MetricsEvent.ACTION_SETTINGS_CONDITION_CLICK,
+                    mExpandedCondition.getMetricsConstant());
             mExpandedCondition.onPrimaryClick();
         } else {
             mExpandedCondition = (Condition) v.getTag();
+            MetricsLogger.action(mContext, MetricsEvent.ACTION_SETTINGS_CONDITION_EXPAND,
+                    mExpandedCondition.getMetricsConstant());
             notifyDataSetChanged();
         }
     }
 
     public void onExpandClick(View v) {
         if (v.getTag() == mExpandedCondition) {
+            MetricsLogger.action(mContext, MetricsEvent.ACTION_SETTINGS_CONDITION_COLLAPSE,
+                    mExpandedCondition.getMetricsConstant());
             mExpandedCondition = null;
         } else {
             mExpandedCondition = (Condition) v.getTag();
+            MetricsLogger.action(mContext, MetricsEvent.ACTION_SETTINGS_CONDITION_EXPAND,
+                    mExpandedCondition.getMetricsConstant());
         }
         notifyDataSetChanged();
     }
diff --git a/src/com/android/settings/dashboard/DashboardSummary.java b/src/com/android/settings/dashboard/DashboardSummary.java
index c111992..4595629 100644
--- a/src/com/android/settings/dashboard/DashboardSummary.java
+++ b/src/com/android/settings/dashboard/DashboardSummary.java
@@ -25,12 +25,14 @@
 import android.view.MenuInflater;
 import android.view.View;
 import android.view.ViewGroup;
+import com.android.internal.logging.MetricsLogger;
 import com.android.internal.logging.MetricsProto.MetricsEvent;
 import com.android.settings.HelpUtils;
 import com.android.settings.InstrumentedFragment;
 import com.android.settings.R;
 import com.android.settings.Settings;
 import com.android.settings.SettingsActivity;
+import com.android.settings.dashboard.conditional.Condition;
 import com.android.settings.dashboard.conditional.ConditionAdapterUtils;
 import com.android.settings.dashboard.conditional.ConditionManager;
 import com.android.settings.dashboard.conditional.FocusRecyclerView;
@@ -109,7 +111,9 @@
 
         ((SettingsDrawerActivity) getActivity()).addCategoryListener(this);
         mSummaryLoader.setListening(true);
-        Log.d(TAG, "onResume");
+        for (Condition c : mConditionManager.getVisibleConditions()) {
+            MetricsLogger.visible(getContext(), c.getMetricsConstant());
+        }
     }
 
     @Override
@@ -118,6 +122,9 @@
 
         ((SettingsDrawerActivity) getActivity()).remCategoryListener(this);
         mSummaryLoader.setListening(false);
+        for (Condition c : mConditionManager.getVisibleConditions()) {
+            MetricsLogger.hidden(getContext(), c.getMetricsConstant());
+        }
     }
 
     @Override
diff --git a/src/com/android/settings/dashboard/conditional/AirplaneModeCondition.java b/src/com/android/settings/dashboard/conditional/AirplaneModeCondition.java
index 5b9bb40..221b64c 100644
--- a/src/com/android/settings/dashboard/conditional/AirplaneModeCondition.java
+++ b/src/com/android/settings/dashboard/conditional/AirplaneModeCondition.java
@@ -20,6 +20,7 @@
 import android.content.Intent;
 import android.graphics.drawable.Icon;
 import android.net.ConnectivityManager;
+import com.android.internal.logging.MetricsProto.MetricsEvent;
 import com.android.settings.R;
 import com.android.settings.Settings;
 import com.android.settingslib.WirelessUtils;
@@ -76,6 +77,11 @@
         }
     }
 
+    @Override
+    public int getMetricsConstant() {
+        return MetricsEvent.SETTINGS_CONDITION_AIRPLANE_MODE;
+    }
+
     public static class Receiver extends BroadcastReceiver {
         @Override
         public void onReceive(Context context, Intent intent) {
diff --git a/src/com/android/settings/dashboard/conditional/BackgroundDataCondition.java b/src/com/android/settings/dashboard/conditional/BackgroundDataCondition.java
index 6bfc538..8287abd 100644
--- a/src/com/android/settings/dashboard/conditional/BackgroundDataCondition.java
+++ b/src/com/android/settings/dashboard/conditional/BackgroundDataCondition.java
@@ -18,6 +18,7 @@
 import android.content.Intent;
 import android.graphics.drawable.Icon;
 import android.net.NetworkPolicyManager;
+import com.android.internal.logging.MetricsProto.MetricsEvent;
 import com.android.settings.R;
 import com.android.settings.Settings;
 
@@ -59,6 +60,11 @@
     }
 
     @Override
+    public int getMetricsConstant() {
+        return MetricsEvent.SETTINGS_CONDITION_BACKGROUND_DATA;
+    }
+
+    @Override
     public void onActionClick(int index) {
         if (index == 0) {
             NetworkPolicyManager.from(mManager.getContext()).setRestrictBackground(false);
diff --git a/src/com/android/settings/dashboard/conditional/BatterySaverCondition.java b/src/com/android/settings/dashboard/conditional/BatterySaverCondition.java
index d902b04..8644117 100644
--- a/src/com/android/settings/dashboard/conditional/BatterySaverCondition.java
+++ b/src/com/android/settings/dashboard/conditional/BatterySaverCondition.java
@@ -17,6 +17,7 @@
 
 import android.graphics.drawable.Icon;
 import android.os.PowerManager;
+import com.android.internal.logging.MetricsProto.MetricsEvent;
 import com.android.settings.R;
 import com.android.settings.Utils;
 import com.android.settings.fuelgauge.BatterySaverSettings;
@@ -67,4 +68,9 @@
             throw new IllegalArgumentException("Unexpected index " + index);
         }
     }
+
+    @Override
+    public int getMetricsConstant() {
+        return MetricsEvent.SETTINGS_CONDITION_BATTERY_SAVER;
+    }
 }
diff --git a/src/com/android/settings/dashboard/conditional/CellularDataCondition.java b/src/com/android/settings/dashboard/conditional/CellularDataCondition.java
index edf5b21..c28d9fa 100644
--- a/src/com/android/settings/dashboard/conditional/CellularDataCondition.java
+++ b/src/com/android/settings/dashboard/conditional/CellularDataCondition.java
@@ -16,6 +16,7 @@
 import android.graphics.drawable.Icon;
 import android.net.ConnectivityManager;
 import android.telephony.TelephonyManager;
+import com.android.internal.logging.MetricsProto.MetricsEvent;
 import com.android.internal.telephony.TelephonyIntents;
 import com.android.settings.R;
 import com.android.settings.Settings;
@@ -82,6 +83,11 @@
         }
     }
 
+    @Override
+    public int getMetricsConstant() {
+        return MetricsEvent.SETTINGS_CONDITION_CELLULAR_DATA;
+    }
+
     public static class Receiver extends BroadcastReceiver {
         @Override
         public void onReceive(Context context, Intent intent) {
diff --git a/src/com/android/settings/dashboard/conditional/Condition.java b/src/com/android/settings/dashboard/conditional/Condition.java
index f5040e5..4352f2d 100644
--- a/src/com/android/settings/dashboard/conditional/Condition.java
+++ b/src/com/android/settings/dashboard/conditional/Condition.java
@@ -20,6 +20,8 @@
 import android.content.pm.PackageManager;
 import android.graphics.drawable.Icon;
 import android.os.PersistableBundle;
+import com.android.internal.logging.MetricsLogger;
+import com.android.internal.logging.MetricsProto.MetricsEvent;
 
 public abstract class Condition {
 
@@ -77,6 +79,8 @@
     public void silence() {
         if (!mIsSilenced) {
             mIsSilenced = true;
+            MetricsLogger.action(mManager.getContext(),
+                    MetricsEvent.ACTION_SETTINGS_CONDITION_DISMISS, getMetricsConstant());
             onSilenceChanged(mIsSilenced);
             notifyChanged();
         }
@@ -110,6 +114,8 @@
     // State.
     public abstract void refreshState();
 
+    public abstract int getMetricsConstant();
+
     // UI.
     public abstract Icon getIcon();
     public abstract CharSequence getTitle();
diff --git a/src/com/android/settings/dashboard/conditional/ConditionAdapterUtils.java b/src/com/android/settings/dashboard/conditional/ConditionAdapterUtils.java
index b64a595..a87b0d0 100644
--- a/src/com/android/settings/dashboard/conditional/ConditionAdapterUtils.java
+++ b/src/com/android/settings/dashboard/conditional/ConditionAdapterUtils.java
@@ -25,6 +25,8 @@
 import android.view.ViewGroup.LayoutParams;
 import android.widget.Button;
 import android.widget.ImageView;
+import com.android.internal.logging.MetricsLogger;
+import com.android.internal.logging.MetricsProto.MetricsEvent;
 import com.android.settings.R;
 import com.android.settings.dashboard.DashboardAdapter;
 
@@ -89,6 +91,9 @@
                     button.setOnClickListener(new View.OnClickListener() {
                         @Override
                         public void onClick(View v) {
+                            MetricsLogger.action(v.getContext(),
+                                    MetricsEvent.ACTION_SETTINGS_CONDITION_BUTTON,
+                                    condition.getMetricsConstant());
                             condition.onActionClick(index);
                         }
                     });
diff --git a/src/com/android/settings/dashboard/conditional/DndCondition.java b/src/com/android/settings/dashboard/conditional/DndCondition.java
index 38f5ef1..a816b33 100644
--- a/src/com/android/settings/dashboard/conditional/DndCondition.java
+++ b/src/com/android/settings/dashboard/conditional/DndCondition.java
@@ -24,6 +24,7 @@
 import android.graphics.drawable.Icon;
 import android.provider.Settings;
 import android.service.notification.ZenModeConfig;
+import com.android.internal.logging.MetricsProto.MetricsEvent;
 import com.android.settings.R;
 
 public class DndCondition extends Condition {
@@ -112,6 +113,11 @@
         }
     }
 
+    @Override
+    public int getMetricsConstant() {
+        return MetricsEvent.SETTINGS_CONDITION_DND;
+    }
+
     public static class Receiver extends BroadcastReceiver {
         @Override
         public void onReceive(Context context, Intent intent) {
diff --git a/src/com/android/settings/dashboard/conditional/HotspotCondition.java b/src/com/android/settings/dashboard/conditional/HotspotCondition.java
index e04eed2..be74c9e 100644
--- a/src/com/android/settings/dashboard/conditional/HotspotCondition.java
+++ b/src/com/android/settings/dashboard/conditional/HotspotCondition.java
@@ -21,7 +21,7 @@
 import android.graphics.drawable.Icon;
 import android.net.wifi.WifiConfiguration;
 import android.net.wifi.WifiManager;
-
+import com.android.internal.logging.MetricsProto.MetricsEvent;
 import com.android.settings.R;
 import com.android.settings.TetherSettings;
 import com.android.settings.Utils;
@@ -93,6 +93,11 @@
         }
     }
 
+    @Override
+    public int getMetricsConstant() {
+        return MetricsEvent.SETTINGS_CONDITION_HOTSPOT;
+    }
+
     public static class Receiver extends BroadcastReceiver {
         @Override
         public void onReceive(Context context, Intent intent) {
diff --git a/src/com/android/settings/dashboard/conditional/WorkModeCondition.java b/src/com/android/settings/dashboard/conditional/WorkModeCondition.java
index be333ea..f46b495 100644
--- a/src/com/android/settings/dashboard/conditional/WorkModeCondition.java
+++ b/src/com/android/settings/dashboard/conditional/WorkModeCondition.java
@@ -22,7 +22,7 @@
 import android.graphics.drawable.Icon;
 import android.os.UserHandle;
 import android.os.UserManager;
-
+import com.android.internal.logging.MetricsProto.MetricsEvent;
 import com.android.settings.R;
 import com.android.settings.Settings;
 
@@ -96,4 +96,9 @@
             throw new IllegalArgumentException("Unexpected index " + index);
         }
     }
+
+    @Override
+    public int getMetricsConstant() {
+        return MetricsEvent.SETTINGS_CONDITION_WORK_MODE;
+    }
 }