Log visibility change for DialogCreatable in Settings.

Bug: 30681529
Test: adb logcat -b events | egrep "(sysui_|notification_)"
Test: make RunSettingsRoboTests
Change-Id: I51754d258ba1ddfae24323681f21cd02de4dbb4e
diff --git a/src/com/android/settings/SettingsPreferenceFragment.java b/src/com/android/settings/SettingsPreferenceFragment.java
index cc87c05..28230a9 100644
--- a/src/com/android/settings/SettingsPreferenceFragment.java
+++ b/src/com/android/settings/SettingsPreferenceFragment.java
@@ -46,9 +46,11 @@
 
 import com.android.settings.applications.LayoutPreference;
 import com.android.settings.core.InstrumentedFragment;
+import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
 import com.android.settingslib.HelpUtils;
 
 import java.util.UUID;
+import java.util.concurrent.atomic.AtomicInteger;
 
 /**
  * Base class for Settings fragments, with some helper functions and dialog management.
@@ -501,10 +503,16 @@
         mDialogFragment.show(getChildFragmentManager(), Integer.toString(dialogId));
     }
 
+    @Override
     public Dialog onCreateDialog(int dialogId) {
         return null;
     }
 
+    @Override
+    public int getDialogMetricsCategory(int dialogId) {
+        return 0;
+    }
+
     protected void removeDialog(int dialogId) {
         // mDialogFragment may not be visible yet in parent fragment's onResume().
         // To be able to dismiss dialog at that time, don't check
@@ -569,12 +577,10 @@
         onDialogShowing();
     }
 
-    public static class SettingsDialogFragment extends DialogFragment {
+    public static class SettingsDialogFragment extends InstrumentedDialogFragment {
         private static final String KEY_DIALOG_ID = "key_dialog_id";
         private static final String KEY_PARENT_FRAGMENT_ID = "key_parent_fragment_id";
 
-        private int mDialogId;
-
         private Fragment mParentFragment;
 
         private DialogInterface.OnCancelListener mOnCancelListener;
@@ -585,7 +591,7 @@
         }
 
         public SettingsDialogFragment(DialogCreatable fragment, int dialogId) {
-            mDialogId = dialogId;
+            super(fragment, dialogId);
             if (!(fragment instanceof Fragment)) {
                 throw new IllegalArgumentException("fragment argument must be an instance of "
                         + Fragment.class.getName());
@@ -593,6 +599,16 @@
             mParentFragment = (Fragment) fragment;
         }
 
+
+        @Override
+        public int getMetricsCategory() {
+            final int metricsCategory = mDialogCreatable.getDialogMetricsCategory(mDialogId);
+            if (metricsCategory <= 0) {
+                throw new IllegalStateException("Dialog must provide a metrics category");
+            }
+            return metricsCategory;
+        }
+
         @Override
         public void onSaveInstanceState(Bundle outState) {
             super.onSaveInstanceState(outState);