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);