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;
@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");
public interface Instrumentable {
+ int METRICS_CATEGORY_UNKNOWN = 0;
+
/**
* Instrumented name for a view as defined in
* {@link com.android.internal.logging.MetricsProto.MetricsEvent}.
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.
*/
@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);
}
}
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
+import static com.android.settings.core.instrumentation.Instrumentable.METRICS_CATEGORY_UNKNOWN;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyInt;
import static org.mockito.Matchers.eq;
.hidden(any(Context.class), anyInt());
}
+ @Test
+ public void shouldNotLogIfMetricsCategoryIsUnknown() {
+ mMixin = new VisibilityLoggerMixin(METRICS_CATEGORY_UNKNOWN, mMetricsFeature);
+
+ mMixin.onResume();
+ mMixin.onPause();
+
+ verify(mMetricsFeature, never())
+ .hidden(any(Context.class), anyInt());
+ }
+
private final class TestInstrumentable implements Instrumentable {
public static final int TEST_METRIC = 12345;