Add visibility metrics to dialogs.

Bug: 30681529
Test: adb logcat -b events | egrep "(sysui_|notification_)"
Change-Id: I199d2e1b2cb8588a562b46bb8128d8ece24952f0
diff --git a/src/com/android/settings/SecuritySettings.java b/src/com/android/settings/SecuritySettings.java
index 300f316..9af91cc 100644
--- a/src/com/android/settings/SecuritySettings.java
+++ b/src/com/android/settings/SecuritySettings.java
@@ -55,6 +55,7 @@
 import com.android.internal.logging.MetricsProto.MetricsEvent;
 import com.android.internal.widget.LockPatternUtils;
 import com.android.settings.TrustAgentUtils.TrustAgentComponentInfo;
+import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
 import com.android.settings.fingerprint.FingerprintSettings;
 import com.android.settings.search.BaseSearchIndexProvider;
 import com.android.settings.search.Index;
@@ -1222,7 +1223,7 @@
         }
     }
 
-    public static class UnificationConfirmationDialog extends DialogFragment {
+    public static class UnificationConfirmationDialog extends InstrumentedDialogFragment {
         private static final String EXTRA_COMPLIANT = "compliant";
 
         public static UnificationConfirmationDialog newIntance(boolean compliant) {
@@ -1272,6 +1273,11 @@
             super.onDismiss(dialog);
             ((SecuritySettings) getParentFragment()).updateUnificationPreference();
         }
+
+        @Override
+        public int getMetricsCategory() {
+            return MetricsEvent.DIALOG_UNIFICATION_CONFIRMATION;
+        }
     }
 
 }
diff --git a/src/com/android/settings/UserCredentialsSettings.java b/src/com/android/settings/UserCredentialsSettings.java
index 8a75905..df073d1 100644
--- a/src/com/android/settings/UserCredentialsSettings.java
+++ b/src/com/android/settings/UserCredentialsSettings.java
@@ -50,6 +50,7 @@
 
 import com.android.internal.logging.MetricsProto.MetricsEvent;
 import com.android.internal.widget.LockPatternUtils;
+import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
 import com.android.settingslib.RestrictedLockUtils;
 import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
 
@@ -108,7 +109,7 @@
         }
     }
 
-    public static class CredentialDialogFragment extends DialogFragment {
+    public static class CredentialDialogFragment extends InstrumentedDialogFragment {
         private static final String TAG = "CredentialDialogFragment";
         private static final String ARG_CREDENTIAL = "credential";
 
@@ -166,6 +167,11 @@
             return builder.create();
         }
 
+        @Override
+        public int getMetricsCategory() {
+            return MetricsEvent.DIALOG_USER_CREDENTIAL;
+        }
+
         /**
          * Deletes all certificates and keys under a given alias.
          *
diff --git a/src/com/android/settings/accounts/AccountSettings.java b/src/com/android/settings/accounts/AccountSettings.java
index d0e200af..e93c7fa 100644
--- a/src/com/android/settings/accounts/AccountSettings.java
+++ b/src/com/android/settings/accounts/AccountSettings.java
@@ -56,6 +56,7 @@
 import com.android.settings.SettingsActivity;
 import com.android.settings.SettingsPreferenceFragment;
 import com.android.settings.Utils;
+import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
 import com.android.settings.search.BaseSearchIndexProvider;
 import com.android.settings.search.Index;
 import com.android.settings.search.Indexable;
@@ -625,7 +626,7 @@
         }
     }
 
-    public static class RemoveUserFragment extends DialogFragment {
+    public static class RemoveUserFragment extends InstrumentedDialogFragment {
         private static final String ARG_USER_ID = "userId";
 
         static RemoveUserFragment newInstance(int userId) {
@@ -649,12 +650,17 @@
                         }
                     });
         }
+
+        @Override
+        public int getMetricsCategory() {
+            return MetricsEvent.DIALOG_REMOVE_USER;
+        }
     }
 
     /**
      * Dialog to inform user about changing auto-sync setting
      */
-    public static class ConfirmAutoSyncChangeFragment extends DialogFragment {
+    public static class ConfirmAutoSyncChangeFragment extends InstrumentedDialogFragment {
         private static final String SAVE_ENABLING = "enabling";
         private static final String SAVE_USER_HANDLE = "userHandle";
         private boolean mEnabling;
@@ -705,6 +711,11 @@
             outState.putBoolean(SAVE_ENABLING, mEnabling);
             outState.putParcelable(SAVE_USER_HANDLE, mUserHandle);
         }
+
+        @Override
+        public int getMetricsCategory() {
+            return MetricsEvent.DIALOG_CONFIRM_AUTO_SYNC_CHANGE;
+        }
     }
 
     public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
diff --git a/src/com/android/settings/applications/AppInfoBase.java b/src/com/android/settings/applications/AppInfoBase.java
index f7992cc..138fadf 100644
--- a/src/com/android/settings/applications/AppInfoBase.java
+++ b/src/com/android/settings/applications/AppInfoBase.java
@@ -37,9 +37,11 @@
 import android.os.UserManager;
 import android.util.Log;
 
+import com.android.internal.logging.MetricsProto;
 import com.android.settings.SettingsActivity;
 import com.android.settings.SettingsPreferenceFragment;
 import com.android.settings.Utils;
+import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
 import com.android.settingslib.RestrictedLockUtils;
 import com.android.settingslib.applications.ApplicationsState;
 import com.android.settingslib.applications.ApplicationsState.AppEntry;
@@ -229,11 +231,18 @@
                 new UserHandle(UserHandle.getUserId(uid)));
     }
 
-    public static class MyAlertDialogFragment extends DialogFragment {
+    public static class MyAlertDialogFragment extends InstrumentedDialogFragment {
+
+        private static final String ARG_ID = "id";
+
+        @Override
+        public int getMetricsCategory() {
+            return MetricsProto.MetricsEvent.DIALOG_APP_INFO_ACTION;
+        }
 
         @Override
         public Dialog onCreateDialog(Bundle savedInstanceState) {
-            int id = getArguments().getInt("id");
+            int id = getArguments().getInt(ARG_ID);
             int errorCode = getArguments().getInt("moveError");
             Dialog dialog = ((AppInfoBase) getTargetFragment()).createDialog(id, errorCode);
             if (dialog == null) {
@@ -245,7 +254,7 @@
         public static MyAlertDialogFragment newInstance(int id, int errorCode) {
             MyAlertDialogFragment dialogFragment = new MyAlertDialogFragment();
             Bundle args = new Bundle();
-            args.putInt("id", id);
+            args.putInt(ARG_ID, id);
             args.putInt("moveError", errorCode);
             dialogFragment.setArguments(args);
             return dialogFragment;
diff --git a/src/com/android/settings/applications/RunningServiceDetails.java b/src/com/android/settings/applications/RunningServiceDetails.java
index bfd275f..38b8f37 100644
--- a/src/com/android/settings/applications/RunningServiceDetails.java
+++ b/src/com/android/settings/applications/RunningServiceDetails.java
@@ -36,6 +36,7 @@
 import com.android.settings.core.InstrumentedFragment;
 import com.android.settings.R;
 import com.android.settings.Utils;
+import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -554,15 +555,15 @@
         }
         return null;
     }
-    
+
     private void showConfirmStopDialog(ComponentName comp) {
         DialogFragment newFragment = MyAlertDialogFragment.newConfirmStop(
                 DIALOG_CONFIRM_STOP, comp);
         newFragment.setTargetFragment(this, 0);
         newFragment.show(getFragmentManager(), "confirmstop");
     }
-    
-    public static class MyAlertDialogFragment extends DialogFragment {
+
+    public static class MyAlertDialogFragment extends InstrumentedDialogFragment {
 
         public static MyAlertDialogFragment newConfirmStop(int id, ComponentName comp) {
             MyAlertDialogFragment frag = new MyAlertDialogFragment();
@@ -605,6 +606,11 @@
             }
             throw new IllegalArgumentException("unknown id " + id);
         }
+
+        @Override
+        public int getMetricsCategory() {
+            return MetricsEvent.DIALOG_RUNNIGN_SERVICE;
+        }
     }
 
     void ensureData() {
diff --git a/src/com/android/settings/bluetooth/BluetoothNameDialogFragment.java b/src/com/android/settings/bluetooth/BluetoothNameDialogFragment.java
index 293a53e..1ee068f 100644
--- a/src/com/android/settings/bluetooth/BluetoothNameDialogFragment.java
+++ b/src/com/android/settings/bluetooth/BluetoothNameDialogFragment.java
@@ -40,14 +40,17 @@
 import android.widget.EditText;
 import android.widget.TextView;
 
+import com.android.internal.logging.MetricsProto;
 import com.android.settings.R;
+import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
 import com.android.settingslib.bluetooth.LocalBluetoothAdapter;
 import com.android.settingslib.bluetooth.LocalBluetoothManager;
 
 /**
  * Dialog fragment for renaming the local Bluetooth device.
  */
-public final class BluetoothNameDialogFragment extends DialogFragment implements TextWatcher {
+public final class BluetoothNameDialogFragment extends InstrumentedDialogFragment
+        implements TextWatcher {
     private static final int BLUETOOTH_NAME_MAX_LENGTH_BYTES = 248;
 
     private AlertDialog mAlertDialog;
@@ -88,6 +91,11 @@
     }
 
     @Override
+    public int getMetricsCategory() {
+        return MetricsProto.MetricsEvent.DIALOG_BLUETOOTH_RENAME;
+    }
+
+    @Override
     public Dialog onCreateDialog(Bundle savedInstanceState) {
         String deviceName = mLocalAdapter.getName();
         if (savedInstanceState != null) {
diff --git a/src/com/android/settings/bluetooth/DeviceProfilesSettings.java b/src/com/android/settings/bluetooth/DeviceProfilesSettings.java
index ca4d4f5..0c35b69 100755
--- a/src/com/android/settings/bluetooth/DeviceProfilesSettings.java
+++ b/src/com/android/settings/bluetooth/DeviceProfilesSettings.java
@@ -24,8 +24,6 @@
 import android.content.Context;
 import android.content.DialogInterface;
 import android.os.Bundle;
-import android.support.v7.preference.CheckBoxPreference;
-import android.support.v7.preference.EditTextPreference;
 import android.text.Html;
 import android.text.TextUtils;
 import android.util.Log;
@@ -37,7 +35,9 @@
 import android.widget.EditText;
 import android.widget.TextView;
 
+import com.android.internal.logging.MetricsProto;
 import com.android.settings.R;
+import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
 import com.android.settingslib.bluetooth.CachedBluetoothDevice;
 import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
 import com.android.settingslib.bluetooth.LocalBluetoothManager;
@@ -47,9 +47,7 @@
 import com.android.settingslib.bluetooth.PanProfile;
 import com.android.settingslib.bluetooth.PbapServerProfile;
 
-import java.util.HashMap;
-
-public final class DeviceProfilesSettings extends DialogFragment implements
+public final class DeviceProfilesSettings extends InstrumentedDialogFragment implements
         CachedBluetoothDevice.Callback, DialogInterface.OnClickListener, OnClickListener {
     private static final String TAG = "DeviceProfilesSettings";
 
@@ -65,10 +63,6 @@
 
     private ViewGroup mProfileContainer;
     private TextView mProfileLabel;
-    private EditTextPreference mDeviceNamePref;
-
-    private final HashMap<LocalBluetoothProfile, CheckBoxPreference> mAutoConnectPrefs
-            = new HashMap<LocalBluetoothProfile, CheckBoxPreference>();
 
     private AlertDialog mDisconnectDialog;
     private boolean mProfileGroupIsRemoved;
@@ -76,6 +70,11 @@
     private View mRootView;
 
     @Override
+    public int getMetricsCategory() {
+        return MetricsProto.MetricsEvent.DIALOG_BLUETOOTH_PAIRED_DEVICE_PROFILE;
+    }
+
+    @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
diff --git a/src/com/android/settings/dashboard/NoHomeDialogFragment.java b/src/com/android/settings/dashboard/NoHomeDialogFragment.java
index 0bc1705..b8ea9ea 100644
--- a/src/com/android/settings/dashboard/NoHomeDialogFragment.java
+++ b/src/com/android/settings/dashboard/NoHomeDialogFragment.java
@@ -22,9 +22,11 @@
 import android.app.DialogFragment;
 import android.os.Bundle;
 
+import com.android.internal.logging.MetricsProto;
 import com.android.settings.R;
+import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
 
-public class NoHomeDialogFragment extends DialogFragment {
+public class NoHomeDialogFragment extends InstrumentedDialogFragment {
     public static void show(Activity parent) {
         final NoHomeDialogFragment dialog = new NoHomeDialogFragment();
         dialog.show(parent.getFragmentManager(), null);
@@ -37,4 +39,9 @@
                 .setPositiveButton(android.R.string.ok, null)
                 .create();
     }
+
+    @Override
+    public int getMetricsCategory() {
+        return MetricsProto.MetricsEvent.DIALOG_NO_HOME;
+    }
 }
diff --git a/src/com/android/settings/datausage/BillingCycleSettings.java b/src/com/android/settings/datausage/BillingCycleSettings.java
index 7665bf4..deadc54 100644
--- a/src/com/android/settings/datausage/BillingCycleSettings.java
+++ b/src/com/android/settings/datausage/BillingCycleSettings.java
@@ -37,6 +37,7 @@
 
 import com.android.internal.logging.MetricsProto.MetricsEvent;
 import com.android.settings.R;
+import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
 import com.android.settingslib.NetworkPolicyEditor;
 import com.android.settingslib.net.DataUsageController;
 
@@ -191,7 +192,7 @@
     /**
      * Dialog to edit {@link NetworkPolicy#warningBytes}.
      */
-    public static class BytesEditorFragment extends DialogFragment
+    public static class BytesEditorFragment extends InstrumentedDialogFragment
             implements DialogInterface.OnClickListener {
         private static final String EXTRA_TEMPLATE = "template";
         private static final String EXTRA_LIMIT = "limit";
@@ -291,12 +292,17 @@
             }
             target.updateDataUsage();
         }
+
+        @Override
+        public int getMetricsCategory() {
+            return MetricsEvent.DIALOG_BILLING_BYTE_LIMIT;
+        }
     }
 
     /**
      * Dialog to edit {@link NetworkPolicy#cycleDay}.
      */
-    public static class CycleEditorFragment extends DialogFragment implements
+    public static class CycleEditorFragment extends InstrumentedDialogFragment implements
             DialogInterface.OnClickListener {
         private static final String EXTRA_TEMPLATE = "template";
         private NumberPicker mCycleDayPicker;
@@ -314,6 +320,11 @@
         }
 
         @Override
+        public int getMetricsCategory() {
+            return MetricsEvent.DIALOG_BILLING_CYCLE;
+        }
+
+        @Override
         public Dialog onCreateDialog(Bundle savedInstanceState) {
             final Context context = getActivity();
             final DataUsageEditController target = (DataUsageEditController) getTargetFragment();
@@ -359,7 +370,7 @@
      * Dialog to request user confirmation before setting
      * {@link NetworkPolicy#limitBytes}.
      */
-    public static class ConfirmLimitFragment extends DialogFragment implements
+    public static class ConfirmLimitFragment extends InstrumentedDialogFragment implements
             DialogInterface.OnClickListener {
         private static final String EXTRA_MESSAGE = "message";
         private static final String EXTRA_LIMIT_BYTES = "limitBytes";
@@ -392,6 +403,11 @@
         }
 
         @Override
+        public int getMetricsCategory() {
+            return MetricsEvent.DIALOG_BILLING_CONFIRM_LIMIT;
+        }
+
+        @Override
         public Dialog onCreateDialog(Bundle savedInstanceState) {
             final Context context = getActivity();
 
diff --git a/src/com/android/settings/deviceinfo/PrivateVolumeForget.java b/src/com/android/settings/deviceinfo/PrivateVolumeForget.java
index 2d408de..d7a57ca 100644
--- a/src/com/android/settings/deviceinfo/PrivateVolumeForget.java
+++ b/src/com/android/settings/deviceinfo/PrivateVolumeForget.java
@@ -36,6 +36,7 @@
 import com.android.internal.logging.MetricsProto.MetricsEvent;
 import com.android.settings.R;
 import com.android.settings.SettingsPreferenceFragment;
+import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
 
 public class PrivateVolumeForget extends SettingsPreferenceFragment {
     private static final String TAG_FORGET_CONFIRM = "forget_confirm";
@@ -72,7 +73,13 @@
         }
     };
 
-    public static class ForgetConfirmFragment extends DialogFragment {
+    public static class ForgetConfirmFragment extends InstrumentedDialogFragment {
+
+        @Override
+        public int getMetricsCategory() {
+            return MetricsEvent.DIALOG_VOLUME_FORGET;
+        }
+
         public static void show(Fragment parent, String fsUuid) {
             final Bundle args = new Bundle();
             args.putString(VolumeRecord.EXTRA_FS_UUID, fsUuid);
diff --git a/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java b/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java
index 428e472..4320223 100644
--- a/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java
+++ b/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java
@@ -60,6 +60,7 @@
 import com.android.settings.SettingsPreferenceFragment;
 import com.android.settings.Utils;
 import com.android.settings.applications.ManageApplications;
+import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
 import com.android.settings.deletionhelper.AutomaticStorageManagerSettings;
 import com.android.settings.deviceinfo.StorageSettings.MountTask;
 import com.android.settingslib.deviceinfo.StorageMeasurement;
@@ -705,7 +706,7 @@
     /**
      * Dialog that allows editing of volume nickname.
      */
-    public static class RenameFragment extends DialogFragment {
+    public static class RenameFragment extends InstrumentedDialogFragment {
         public static void show(PrivateVolumeSettings parent, VolumeInfo vol) {
             if (!parent.isAdded()) return;
 
@@ -718,6 +719,11 @@
         }
 
         @Override
+        public int getMetricsCategory() {
+            return MetricsEvent.DIALOG_VOLUME_RENAME;
+        }
+
+        @Override
         public Dialog onCreateDialog(Bundle savedInstanceState) {
             final Context context = getActivity();
             final StorageManager storageManager = context.getSystemService(StorageManager.class);
@@ -751,7 +757,7 @@
         }
     }
 
-    public static class SystemInfoFragment extends DialogFragment {
+    public static class SystemInfoFragment extends InstrumentedDialogFragment {
         public static void show(Fragment parent) {
             if (!parent.isAdded()) return;
 
@@ -761,6 +767,11 @@
         }
 
         @Override
+        public int getMetricsCategory() {
+            return MetricsEvent.DIALOG_STORAGE_SYSTEM_INFO;
+        }
+
+        @Override
         public Dialog onCreateDialog(Bundle savedInstanceState) {
             return new AlertDialog.Builder(getActivity())
                     .setMessage(R.string.storage_detail_dialog_system)
@@ -769,7 +780,7 @@
         }
     }
 
-    public static class OtherInfoFragment extends DialogFragment {
+    public static class OtherInfoFragment extends InstrumentedDialogFragment {
         public static void show(Fragment parent, String title, VolumeInfo sharedVol) {
             if (!parent.isAdded()) return;
 
@@ -783,6 +794,11 @@
         }
 
         @Override
+        public int getMetricsCategory() {
+            return MetricsEvent.DIALOG_STORAGE_OTHER_INFO;
+        }
+
+        @Override
         public Dialog onCreateDialog(Bundle savedInstanceState) {
             final Context context = getActivity();
 
@@ -806,7 +822,7 @@
         }
     }
 
-    public static class UserInfoFragment extends DialogFragment {
+    public static class UserInfoFragment extends InstrumentedDialogFragment {
         public static void show(Fragment parent, CharSequence userLabel, CharSequence userSize) {
             if (!parent.isAdded()) return;
 
@@ -820,6 +836,11 @@
         }
 
         @Override
+        public int getMetricsCategory() {
+            return MetricsEvent.DIALOG_STORAGE_USER_INFO;
+        }
+
+        @Override
         public Dialog onCreateDialog(Bundle savedInstanceState) {
             final Context context = getActivity();
 
@@ -839,7 +860,7 @@
     /**
      * Dialog to request user confirmation before clearing all cache data.
      */
-    public static class ConfirmClearCacheFragment extends DialogFragment {
+    public static class ConfirmClearCacheFragment extends InstrumentedDialogFragment {
         public static void show(Fragment parent) {
             if (!parent.isAdded()) return;
 
@@ -849,6 +870,11 @@
         }
 
         @Override
+        public int getMetricsCategory() {
+            return MetricsEvent.DIALOG_STORAGE_CLEAR_CACHE;
+        }
+
+        @Override
         public Dialog onCreateDialog(Bundle savedInstanceState) {
             final Context context = getActivity();
 
diff --git a/src/com/android/settings/deviceinfo/StorageSettings.java b/src/com/android/settings/deviceinfo/StorageSettings.java
index 05f5ef0..20717ae 100644
--- a/src/com/android/settings/deviceinfo/StorageSettings.java
+++ b/src/com/android/settings/deviceinfo/StorageSettings.java
@@ -47,6 +47,7 @@
 import com.android.settings.R;
 import com.android.settings.SettingsPreferenceFragment;
 import com.android.settings.Utils;
+import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
 import com.android.settings.dashboard.SummaryLoader;
 import com.android.settings.search.BaseSearchIndexProvider;
 import com.android.settings.search.Indexable;
@@ -382,7 +383,7 @@
         }
     }
 
-    public static class VolumeUnmountedFragment extends DialogFragment {
+    public static class VolumeUnmountedFragment extends InstrumentedDialogFragment {
         public static void show(Fragment parent, String volumeId) {
             final Bundle args = new Bundle();
             args.putString(VolumeInfo.EXTRA_VOLUME_ID, volumeId);
@@ -394,6 +395,11 @@
         }
 
         @Override
+        public int getMetricsCategory() {
+            return MetricsEvent.DIALOG_VOLUME_UNMOUNT;
+        }
+
+        @Override
         public Dialog onCreateDialog(Bundle savedInstanceState) {
             final Context context = getActivity();
             final StorageManager sm = context.getSystemService(StorageManager.class);
@@ -428,7 +434,12 @@
         }
     }
 
-    public static class DiskInitFragment extends DialogFragment {
+    public static class DiskInitFragment extends InstrumentedDialogFragment {
+        @Override
+        public int getMetricsCategory() {
+            return MetricsEvent.DIALOG_VOLUME_INIT;
+        }
+
         public static void show(Fragment parent, int resId, String diskId) {
             final Bundle args = new Bundle();
             args.putInt(Intent.EXTRA_TEXT, resId);
diff --git a/src/com/android/settings/deviceinfo/StorageWizardFormatProgress.java b/src/com/android/settings/deviceinfo/StorageWizardFormatProgress.java
index b44bc33..bf33487 100644
--- a/src/com/android/settings/deviceinfo/StorageWizardFormatProgress.java
+++ b/src/com/android/settings/deviceinfo/StorageWizardFormatProgress.java
@@ -33,7 +33,9 @@
 import android.view.View;
 import android.widget.Toast;
 
+import com.android.internal.logging.MetricsProto;
 import com.android.settings.R;
+import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
 
 import java.util.Objects;
 
@@ -168,7 +170,13 @@
         }
     }
 
-    public static class SlowWarningFragment extends DialogFragment {
+    public static class SlowWarningFragment extends InstrumentedDialogFragment {
+
+        @Override
+        public int getMetricsCategory() {
+            return MetricsProto.MetricsEvent.DIALOG_VOLUME_SLOW_WARNING;
+        }
+
         @Override
         public Dialog onCreateDialog(Bundle savedInstanceState) {
             final Context context = getActivity();
diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java b/src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java
index adc7a99..cd56458 100644
--- a/src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java
+++ b/src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java
@@ -44,6 +44,7 @@
 import com.android.internal.logging.MetricsProto.MetricsEvent;
 import com.android.settings.ChooseLockSettingsHelper;
 import com.android.settings.R;
+import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
 
 /**
  * Activity which handles the actual enrolling for fingerprint.
@@ -427,7 +428,7 @@
         return MetricsEvent.FINGERPRINT_ENROLLING;
     }
 
-    public static class IconTouchDialog extends DialogFragment {
+    public static class IconTouchDialog extends InstrumentedDialogFragment {
 
         @Override
         public Dialog onCreateDialog(Bundle savedInstanceState) {
@@ -443,9 +444,14 @@
                             });
             return builder.create();
         }
+
+        @Override
+        public int getMetricsCategory() {
+            return MetricsEvent.DIALOG_FINGERPRINT_ICON_TOUCH;
+        }
     }
 
-    public static class ErrorDialog extends DialogFragment {
+    public static class ErrorDialog extends InstrumentedDialogFragment {
 
         /**
          * Create a new instance of ErrorDialog.
@@ -488,5 +494,10 @@
             dialog.setCanceledOnTouchOutside(false);
             return dialog;
         }
+
+        @Override
+        public int getMetricsCategory() {
+            return MetricsEvent.DIALOG_FINGERPINT_ERROR;
+        }
     }
 }
diff --git a/src/com/android/settings/fingerprint/FingerprintSettings.java b/src/com/android/settings/fingerprint/FingerprintSettings.java
index 980bf0b..5bb0856 100644
--- a/src/com/android/settings/fingerprint/FingerprintSettings.java
+++ b/src/com/android/settings/fingerprint/FingerprintSettings.java
@@ -64,6 +64,7 @@
 import com.android.internal.logging.MetricsProto.MetricsEvent;
 import com.android.settings.ChooseLockGeneric;
 import com.android.settings.ChooseLockSettingsHelper;
+import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
 import com.android.settingslib.HelpUtils;
 import com.android.settings.R;
 import com.android.settings.SettingsPreferenceFragment;
@@ -562,7 +563,7 @@
             }
         };
 
-        public static class RenameDeleteDialog extends DialogFragment {
+        public static class RenameDeleteDialog extends InstrumentedDialogFragment {
 
             private Fingerprint mFp;
             private EditText mDialogTextField;
@@ -669,13 +670,23 @@
                     outState.putInt("endSelection", mDialogTextField.getSelectionEnd());
                 }
             }
+
+            @Override
+            public int getMetricsCategory() {
+                return MetricsEvent.DIALOG_FINGERPINT_EDIT;
+            }
         }
 
-        public static class ConfirmLastDeleteDialog extends DialogFragment {
+        public static class ConfirmLastDeleteDialog extends InstrumentedDialogFragment {
 
             private Fingerprint mFp;
 
             @Override
+            public int getMetricsCategory() {
+                return MetricsEvent.DIALOG_FINGERPINT_DELETE_LAST;
+            }
+
+            @Override
             public Dialog onCreateDialog(Bundle savedInstanceState) {
                 mFp = getArguments().getParcelable("fingerprint");
                 final boolean isProfileChallengeUser =
diff --git a/src/com/android/settings/fingerprint/SetupFingerprintEnrollEnrolling.java b/src/com/android/settings/fingerprint/SetupFingerprintEnrollEnrolling.java
index 7e95a9a..90b281f 100644
--- a/src/com/android/settings/fingerprint/SetupFingerprintEnrollEnrolling.java
+++ b/src/com/android/settings/fingerprint/SetupFingerprintEnrollEnrolling.java
@@ -31,6 +31,7 @@
 import com.android.internal.logging.MetricsProto.MetricsEvent;
 import com.android.settings.R;
 import com.android.settings.SetupWizardUtils;
+import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
 
 public class SetupFingerprintEnrollEnrolling extends FingerprintEnrollEnrolling {
 
@@ -73,7 +74,7 @@
         return MetricsEvent.FINGERPRINT_ENROLLING_SETUP;
     }
 
-    public static class SkipDialog extends DialogFragment {
+    public static class SkipDialog extends InstrumentedDialogFragment {
 
         @Override
         public void show(FragmentManager manager, String tag) {
@@ -111,5 +112,10 @@
                             })
                     .create();
         }
+
+        @Override
+        public int getMetricsCategory() {
+            return MetricsEvent.DIALOG_FINGERPRINT_CANCEL_SETUP;
+        }
     }
 }
diff --git a/src/com/android/settings/fingerprint/SetupSkipDialog.java b/src/com/android/settings/fingerprint/SetupSkipDialog.java
index c6e04d7..9e9bb4c 100644
--- a/src/com/android/settings/fingerprint/SetupSkipDialog.java
+++ b/src/com/android/settings/fingerprint/SetupSkipDialog.java
@@ -25,9 +25,12 @@
 import android.os.Bundle;
 import android.support.annotation.NonNull;
 
+import com.android.internal.logging.MetricsProto;
 import com.android.settings.R;
+import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
 
-public class SetupSkipDialog extends DialogFragment implements DialogInterface.OnClickListener {
+public class SetupSkipDialog extends InstrumentedDialogFragment
+        implements DialogInterface.OnClickListener {
 
     public static final String EXTRA_FRP_SUPPORTED = ":settings:frp_supported";
 
@@ -44,6 +47,11 @@
     }
 
     @Override
+    public int getMetricsCategory() {
+        return MetricsProto.MetricsEvent.DIALOG_FINGERPRINT_SKIP_SETUP;
+    }
+
+    @Override
     public Dialog onCreateDialog(Bundle savedInstanceState) {
         return onCreateDialogBuilder().create();
     }
diff --git a/src/com/android/settings/fuelgauge/HighPowerDetail.java b/src/com/android/settings/fuelgauge/HighPowerDetail.java
index 6946f62..c448756 100644
--- a/src/com/android/settings/fuelgauge/HighPowerDetail.java
+++ b/src/com/android/settings/fuelgauge/HighPowerDetail.java
@@ -30,11 +30,13 @@
 import android.widget.Checkable;
 import android.widget.TextView;
 
+import com.android.internal.logging.MetricsProto;
 import com.android.settings.R;
 import com.android.settings.applications.AppInfoBase;
+import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
 import com.android.settingslib.applications.ApplicationsState.AppEntry;
 
-public class HighPowerDetail extends DialogFragment implements OnClickListener,
+public class HighPowerDetail extends InstrumentedDialogFragment implements OnClickListener,
         View.OnClickListener {
 
     private static final String ARG_DEFAULT_ON = "default_on";
@@ -49,6 +51,11 @@
     private Checkable mOptionOff;
 
     @Override
+    public int getMetricsCategory() {
+        return MetricsProto.MetricsEvent.DIALOG_HIGH_POWER_DETAILS;
+    }
+
+    @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
diff --git a/src/com/android/settings/inputmethod/KeyboardLayoutDialogFragment.java b/src/com/android/settings/inputmethod/KeyboardLayoutDialogFragment.java
index ad7a2b1..24bdd61 100644
--- a/src/com/android/settings/inputmethod/KeyboardLayoutDialogFragment.java
+++ b/src/com/android/settings/inputmethod/KeyboardLayoutDialogFragment.java
@@ -40,12 +40,14 @@
 import android.widget.RadioButton;
 import android.widget.TextView;
 
+import com.android.internal.logging.MetricsProto;
 import com.android.settings.R;
+import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
 
 import java.util.ArrayList;
 import java.util.Collections;
 
-public class KeyboardLayoutDialogFragment extends DialogFragment
+public class KeyboardLayoutDialogFragment extends InstrumentedDialogFragment
         implements InputDeviceListener, LoaderCallbacks<KeyboardLayoutDialogFragment.Keyboards> {
     private static final String KEY_INPUT_DEVICE_IDENTIFIER = "inputDeviceIdentifier";
 
@@ -62,6 +64,12 @@
         mInputDeviceIdentifier = inputDeviceIdentifier;
     }
 
+
+    @Override
+    public int getMetricsCategory() {
+        return MetricsProto.MetricsEvent.DIALOG_KEYBOARD_LAYOUT;
+    }
+
     @Override
     public void onAttach(Activity activity) {
         super.onAttach(activity);
diff --git a/src/com/android/settings/notification/NotificationAccessSettings.java b/src/com/android/settings/notification/NotificationAccessSettings.java
index 78e90c8..ad3daae 100644
--- a/src/com/android/settings/notification/NotificationAccessSettings.java
+++ b/src/com/android/settings/notification/NotificationAccessSettings.java
@@ -31,6 +31,7 @@
 
 import com.android.internal.logging.MetricsProto.MetricsEvent;
 import com.android.settings.R;
+import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
 import com.android.settings.utils.ManagedServiceSettings;
 import com.android.settings.utils.ServiceListing;
 
@@ -102,7 +103,7 @@
         });
     }
 
-    public class FriendlyWarningDialogFragment extends DialogFragment {
+    public class FriendlyWarningDialogFragment extends InstrumentedDialogFragment {
         static final String KEY_COMPONENT = "c";
         static final String KEY_LABEL = "l";
 
@@ -115,6 +116,11 @@
         }
 
         @Override
+        public int getMetricsCategory() {
+            return MetricsEvent.DIALOG_DISABLE_NOTIFICATION_ACCESS;
+        }
+
+        @Override
         public Dialog onCreateDialog(Bundle savedInstanceState) {
             super.onCreate(savedInstanceState);
             final Bundle args = getArguments();
diff --git a/src/com/android/settings/notification/SoundSettings.java b/src/com/android/settings/notification/SoundSettings.java
index 8b8ef9e..7365995 100644
--- a/src/com/android/settings/notification/SoundSettings.java
+++ b/src/com/android/settings/notification/SoundSettings.java
@@ -66,6 +66,7 @@
 import com.android.settings.DefaultRingtonePreference;
 import com.android.settings.SettingsPreferenceFragment;
 import com.android.settings.Utils;
+import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
 import com.android.settings.dashboard.SummaryLoader;
 import com.android.settings.search.BaseSearchIndexProvider;
 import com.android.settings.search.Indexable;
@@ -826,12 +827,17 @@
         mWorkAlarmRingtonePreference = null;
     }
 
-    public static class UnifyWorkDialogFragment extends DialogFragment
+    public static class UnifyWorkDialogFragment extends InstrumentedDialogFragment
             implements DialogInterface.OnClickListener {
         private static final String TAG = "UnifyWorkDialogFragment";
         private static final int REQUEST_CODE = 200;
 
         @Override
+        public int getMetricsCategory() {
+            return MetricsEvent.DIALOG_UNIFY_SOUND_SETTINGS;
+        }
+
+        @Override
         public Dialog onCreateDialog(Bundle savedInstanceState) {
             return new AlertDialog.Builder(getActivity())
                     .setTitle(R.string.work_sync_dialog_title)
diff --git a/src/com/android/settings/notification/ZenAccessSettings.java b/src/com/android/settings/notification/ZenAccessSettings.java
index b0e8e9b..7312b1d 100644
--- a/src/com/android/settings/notification/ZenAccessSettings.java
+++ b/src/com/android/settings/notification/ZenAccessSettings.java
@@ -46,6 +46,7 @@
 
 import com.android.internal.logging.MetricsProto.MetricsEvent;
 import com.android.settings.R;
+import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -203,10 +204,15 @@
     /**
      * Warning dialog when allowing zen access warning about the privileges being granted.
      */
-    public static class ScaryWarningDialogFragment extends DialogFragment {
+    public static class ScaryWarningDialogFragment extends InstrumentedDialogFragment {
         static final String KEY_PKG = "p";
         static final String KEY_LABEL = "l";
 
+        @Override
+        public int getMetricsCategory() {
+            return MetricsEvent.DIALOG_ZEN_ACCESS_GRANT;
+        }
+
         public ScaryWarningDialogFragment setPkgInfo(String pkg, CharSequence label) {
             Bundle args = new Bundle();
             args.putString(KEY_PKG, pkg);
@@ -249,10 +255,16 @@
     /**
      * Warning dialog when revoking zen access warning that zen rule instances will be deleted.
      */
-    public static class FriendlyWarningDialogFragment extends DialogFragment {
+    public static class FriendlyWarningDialogFragment extends InstrumentedDialogFragment {
         static final String KEY_PKG = "p";
         static final String KEY_LABEL = "l";
 
+
+        @Override
+        public int getMetricsCategory() {
+            return MetricsEvent.DIALOG_ZEN_ACCESS_REVOKE;
+        }
+
         public FriendlyWarningDialogFragment setPkgInfo(String pkg, CharSequence label) {
             Bundle args = new Bundle();
             args.putString(KEY_PKG, pkg);
diff --git a/src/com/android/settings/notification/ZenModeScheduleRuleSettings.java b/src/com/android/settings/notification/ZenModeScheduleRuleSettings.java
index d2dcdf8..7a816c3 100644
--- a/src/com/android/settings/notification/ZenModeScheduleRuleSettings.java
+++ b/src/com/android/settings/notification/ZenModeScheduleRuleSettings.java
@@ -39,6 +39,7 @@
 
 import com.android.internal.logging.MetricsProto.MetricsEvent;
 import com.android.settings.R;
+import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
 
 import java.text.SimpleDateFormat;
 import java.util.Arrays;
@@ -275,11 +276,16 @@
             setSummary(time);
         }
 
-        public static class TimePickerFragment extends DialogFragment implements
+        public static class TimePickerFragment extends InstrumentedDialogFragment implements
                 TimePickerDialog.OnTimeSetListener {
             public TimePickerPreference pref;
 
             @Override
+            public int getMetricsCategory() {
+                return MetricsEvent.DIALOG_ZEN_TIMEPICKER;
+            }
+
+            @Override
             public Dialog onCreateDialog(Bundle savedInstanceState) {
                 final boolean usePref = pref != null && pref.mHourOfDay >= 0 && pref.mMinute >= 0;
                 final Calendar c = Calendar.getInstance();
diff --git a/src/com/android/settings/utils/ManagedServiceSettings.java b/src/com/android/settings/utils/ManagedServiceSettings.java
index 14c9b61..bd839c8 100644
--- a/src/com/android/settings/utils/ManagedServiceSettings.java
+++ b/src/com/android/settings/utils/ManagedServiceSettings.java
@@ -35,7 +35,9 @@
 import android.view.View;
 import android.widget.TextView;
 
+import com.android.internal.logging.MetricsProto;
 import com.android.settings.R;
+import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
 import com.android.settings.notification.EmptyTextSettings;
 
 import java.util.Collections;
@@ -130,10 +132,15 @@
         }
     }
 
-    public static class ScaryWarningDialogFragment extends DialogFragment {
+    public static class ScaryWarningDialogFragment extends InstrumentedDialogFragment {
         static final String KEY_COMPONENT = "c";
         static final String KEY_LABEL = "l";
 
+        @Override
+        public int getMetricsCategory() {
+            return MetricsProto.MetricsEvent.DIALOG_SERVICE_ACCESS_WARNING;
+        }
+
         public ScaryWarningDialogFragment setServiceInfo(ComponentName cn, String label,
                 Fragment target) {
             Bundle args = new Bundle();
diff --git a/src/com/android/settings/vpn2/AppDialogFragment.java b/src/com/android/settings/vpn2/AppDialogFragment.java
index 8013780..6093e89 100644
--- a/src/com/android/settings/vpn2/AppDialogFragment.java
+++ b/src/com/android/settings/vpn2/AppDialogFragment.java
@@ -31,13 +31,15 @@
 import android.os.UserManager;
 import android.util.Log;
 
+import com.android.internal.logging.MetricsProto;
 import com.android.internal.net.VpnConfig;
 import com.android.settings.R;
+import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
 
 /**
  * Fragment wrapper around an {@link AppDialog}.
  */
-public class AppDialogFragment extends DialogFragment implements AppDialog.Listener {
+public class AppDialogFragment extends InstrumentedDialogFragment implements AppDialog.Listener {
     private static final String TAG_APP_DIALOG = "vpnappdialog";
     private static final String TAG = "AppDialogFragment";
 
@@ -53,9 +55,14 @@
     private final IConnectivityManager mService = IConnectivityManager.Stub.asInterface(
             ServiceManager.getService(Context.CONNECTIVITY_SERVICE));
 
+    @Override
+    public int getMetricsCategory() {
+        return MetricsProto.MetricsEvent.DIALOG_VPN_APP_CONFIG;
+    }
+
     public interface Listener {
-        public void onForget();
-        public void onCancel();
+        void onForget();
+        void onCancel();
     }
 
     public static void show(Fragment parent, PackageInfo packageInfo, String label,
diff --git a/src/com/android/settings/vpn2/AppManagementFragment.java b/src/com/android/settings/vpn2/AppManagementFragment.java
index e9dd4fd..1a3000e 100644
--- a/src/com/android/settings/vpn2/AppManagementFragment.java
+++ b/src/com/android/settings/vpn2/AppManagementFragment.java
@@ -42,6 +42,7 @@
 import com.android.settings.R;
 import com.android.settings.SettingsPreferenceFragment;
 import com.android.settings.Utils;
+import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
 import com.android.settingslib.RestrictedSwitchPreference;
 import com.android.settingslib.RestrictedPreference;
 
@@ -303,10 +304,15 @@
         return getAlwaysOnVpnPackage() != null && !isVpnAlwaysOn();
     }
 
-    public static class CannotConnectFragment extends DialogFragment {
+    public static class CannotConnectFragment extends InstrumentedDialogFragment {
         private static final String TAG = "CannotConnect";
         private static final String ARG_VPN_LABEL = "label";
 
+        @Override
+        public int getMetricsCategory() {
+            return MetricsEvent.DIALOG_VPN_CANNOT_CONNECT;
+        }
+
         public static void show(AppManagementFragment parent, String vpnLabel) {
             if (parent.getFragmentManager().findFragmentByTag(TAG) == null) {
                 final Bundle args = new Bundle();
@@ -329,10 +335,15 @@
         }
     }
 
-    public static class ReplaceExistingVpnFragment extends DialogFragment
+    public static class ReplaceExistingVpnFragment extends InstrumentedDialogFragment
             implements DialogInterface.OnClickListener {
         private static final String TAG = "ReplaceExistingVpn";
 
+        @Override
+        public int getMetricsCategory() {
+            return MetricsEvent.DIALOG_VPN_REPLACE_EXISTING;
+        }
+
         public static void show(AppManagementFragment parent) {
             if (parent.getFragmentManager().findFragmentByTag(TAG) == null) {
                 final ReplaceExistingVpnFragment frag = new ReplaceExistingVpnFragment();
diff --git a/src/com/android/settings/vpn2/ConfigDialogFragment.java b/src/com/android/settings/vpn2/ConfigDialogFragment.java
index 1880a6b..1a180c5 100644
--- a/src/com/android/settings/vpn2/ConfigDialogFragment.java
+++ b/src/com/android/settings/vpn2/ConfigDialogFragment.java
@@ -16,8 +16,6 @@
 
 package com.android.settings.vpn2;
 
-import java.util.Arrays;
-
 import android.app.Dialog;
 import android.app.DialogFragment;
 import android.content.Context;
@@ -33,16 +31,18 @@
 import android.util.Log;
 import android.widget.Toast;
 
+import com.android.internal.logging.MetricsProto;
 import com.android.internal.net.LegacyVpnInfo;
 import com.android.internal.net.VpnConfig;
 import com.android.internal.net.VpnProfile;
 import com.android.settings.R;
+import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
 
 /**
  * Fragment wrapper around a {@link ConfigDialog}.
  */
-public class ConfigDialogFragment extends DialogFragment implements
-        DialogInterface.OnClickListener {
+public class ConfigDialogFragment extends InstrumentedDialogFragment
+        implements DialogInterface.OnClickListener {
     private static final String TAG_CONFIG_DIALOG = "vpnconfigdialog";
     private static final String TAG = "ConfigDialogFragment";
 
@@ -55,6 +55,12 @@
 
     private boolean mUnlocking = false;
 
+
+    @Override
+    public int getMetricsCategory() {
+        return MetricsProto.MetricsEvent.DIALOG_LEGACY_VPN_CONFIG;
+    }
+
     public static void show(VpnSettings parent, VpnProfile profile, boolean edit, boolean exists) {
         if (!parent.isAdded()) return;
 
diff --git a/src/com/android/settings/wifi/AdvancedWifiSettings.java b/src/com/android/settings/wifi/AdvancedWifiSettings.java
index f53f59a..b0bdd77 100644
--- a/src/com/android/settings/wifi/AdvancedWifiSettings.java
+++ b/src/com/android/settings/wifi/AdvancedWifiSettings.java
@@ -31,6 +31,7 @@
 import com.android.internal.logging.MetricsProto.MetricsEvent;
 import com.android.settings.R;
 import com.android.settings.RestrictedSettingsFragment;
+import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
 import com.android.settingslib.RestrictedLockUtils;
 
 public class AdvancedWifiSettings extends RestrictedSettingsFragment {
@@ -117,7 +118,7 @@
     }
 
     /* Wrapper class for the WPS dialog to properly handle life cycle events like rotation. */
-    public static class WpsFragment extends DialogFragment {
+    public static class WpsFragment extends InstrumentedDialogFragment {
         private static int mWpsSetup;
 
         // Public default constructor is required for rotation.
@@ -131,6 +132,11 @@
         }
 
         @Override
+        public int getMetricsCategory() {
+            return MetricsEvent.DIALOG_WPS_SETUP;
+        }
+
+        @Override
         public Dialog onCreateDialog(Bundle savedInstanceState) {
             return new WpsDialog(getActivity(), mWpsSetup);
         }
diff --git a/src/com/android/settings/wifi/WifiScanModeActivity.java b/src/com/android/settings/wifi/WifiScanModeActivity.java
index 893aaf4..29ef79e 100644
--- a/src/com/android/settings/wifi/WifiScanModeActivity.java
+++ b/src/com/android/settings/wifi/WifiScanModeActivity.java
@@ -28,7 +28,9 @@
 import android.os.Bundle;
 import android.provider.Settings;
 
+import com.android.internal.logging.MetricsProto;
 import com.android.settings.R;
+import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
 
 /**
  * This activity requests users permission to allow scanning even when Wi-Fi is turned off
@@ -104,7 +106,7 @@
         createDialog();
     }
 
-    public static class AlertDialogFragment extends DialogFragment {
+    public static class AlertDialogFragment extends InstrumentedDialogFragment {
         static AlertDialogFragment newInstance(String app) {
             AlertDialogFragment frag = new AlertDialogFragment(app);
             return frag;
@@ -122,6 +124,11 @@
         }
 
         @Override
+        public int getMetricsCategory() {
+            return MetricsProto.MetricsEvent.DIALOG_WIFI_SCAN_MODE;
+        }
+
+        @Override
         public Dialog onCreateDialog(Bundle savedInstanceState) {
             return new AlertDialog.Builder(getActivity())
                     .setMessage(getString(R.string.wifi_scan_always_turnon_message, mApp))
diff --git a/src/com/android/settings/wifi/WifiSetupActivity.java b/src/com/android/settings/wifi/WifiSetupActivity.java
index 2264546..70370b2 100644
--- a/src/com/android/settings/wifi/WifiSetupActivity.java
+++ b/src/com/android/settings/wifi/WifiSetupActivity.java
@@ -32,9 +32,11 @@
 import android.support.v14.preference.PreferenceFragment;
 import android.util.Log;
 
+import com.android.internal.logging.MetricsProto;
 import com.android.settings.ButtonBarHandler;
 import com.android.settings.R;
 import com.android.settings.SetupWizardUtils;
+import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
 import com.android.setupwizardlib.view.NavigationBar;
 
 public class WifiSetupActivity extends WifiPickerActivity
@@ -240,7 +242,7 @@
         return info != null && info.isConnected();
     }
 
-    public static class WifiSkipDialog extends DialogFragment {
+    public static class WifiSkipDialog extends InstrumentedDialogFragment {
         public static WifiSkipDialog newInstance(int messageRes) {
             final Bundle args = new Bundle();
             args.putInt("messageRes", messageRes);
@@ -254,6 +256,11 @@
         }
 
         @Override
+        public int getMetricsCategory() {
+            return MetricsProto.MetricsEvent.DIALOG_WIFI_SKIP;
+        }
+
+        @Override
         public Dialog onCreateDialog(Bundle savedInstanceState) {
             int messageRes = getArguments().getInt("messageRes");
             final AlertDialog dialog = new AlertDialog.Builder(getActivity())