Fix a NPE when rotating dialog created by DialogCreatable.
Bug: 30088727
Test: make RunSettingsRoboTests
Change-Id: I775899809dfe920daa294f70d646b141da7c0706
diff --git a/src/com/android/settings/SettingsPreferenceFragment.java b/src/com/android/settings/SettingsPreferenceFragment.java
index 575194b..b3f067a 100644
--- a/src/com/android/settings/SettingsPreferenceFragment.java
+++ b/src/com/android/settings/SettingsPreferenceFragment.java
@@ -46,6 +46,7 @@
import com.android.settings.applications.LayoutPreference;
import com.android.settings.core.InstrumentedFragment;
+import com.android.settings.core.instrumentation.Instrumentable;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
import com.android.settingslib.HelpUtils;
@@ -626,6 +627,9 @@
@Override
public int getMetricsCategory() {
+ if (mDialogCreatable == null) {
+ return Instrumentable.METRICS_CATEGORY_UNKNOWN;
+ }
final int metricsCategory = mDialogCreatable.getDialogMetricsCategory(mDialogId);
if (metricsCategory <= 0) {
throw new IllegalStateException("Dialog must provide a metrics category");
diff --git a/src/com/android/settings/core/instrumentation/Instrumentable.java b/src/com/android/settings/core/instrumentation/Instrumentable.java
index bd0bdf4..e48dbd7 100644
--- a/src/com/android/settings/core/instrumentation/Instrumentable.java
+++ b/src/com/android/settings/core/instrumentation/Instrumentable.java
@@ -18,6 +18,8 @@
public interface Instrumentable {
+ int METRICS_CATEGORY_UNKNOWN = 0;
+
/**
* Instrumented name for a view as defined in
* {@link com.android.internal.logging.MetricsProto.MetricsEvent}.
diff --git a/src/com/android/settings/core/instrumentation/VisibilityLoggerMixin.java b/src/com/android/settings/core/instrumentation/VisibilityLoggerMixin.java
index 101dccd..54183a2 100644
--- a/src/com/android/settings/core/instrumentation/VisibilityLoggerMixin.java
+++ b/src/com/android/settings/core/instrumentation/VisibilityLoggerMixin.java
@@ -24,6 +24,8 @@
import com.android.settings.core.lifecycle.events.OnResume;
import com.android.settings.overlay.FeatureFactory;
+import static com.android.settings.core.instrumentation.Instrumentable.METRICS_CATEGORY_UNKNOWN;
+
/**
* Logs visibility change of a fragment.
*/
@@ -50,14 +52,14 @@
@Override
public void onResume() {
- if (mMetricsFeature != null) {
+ if (mMetricsFeature != null && mMetricsCategory != METRICS_CATEGORY_UNKNOWN) {
mMetricsFeature.visible(null /* context */, mMetricsCategory);
}
}
@Override
public void onPause() {
- if (mMetricsFeature != null) {
+ if (mMetricsFeature != null && mMetricsCategory != METRICS_CATEGORY_UNKNOWN) {
mMetricsFeature.hidden(null /* context */, mMetricsCategory);
}
}