Fix NPE when using VisibilityLogger.
Fix: 31612160 Test: make RunSettingsRoboTests Change-Id: Ib040a40d27a76d9440f629ed4f768dc4bfde8ac2
This commit is contained in:
@@ -49,8 +49,8 @@ import android.widget.ListView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.android.internal.logging.MetricsProto;
|
||||
import com.android.settings.core.instrumentation.VisibilityLoggerMixin;
|
||||
import com.android.settings.core.instrumentation.Instrumentable;
|
||||
import com.android.settings.core.instrumentation.VisibilityLoggerMixin;
|
||||
|
||||
import org.xmlpull.v1.XmlPullParserException;
|
||||
|
||||
@@ -84,6 +84,13 @@ public class DeviceAdminSettings extends ListFragment implements Instrumentable
|
||||
return this.name.compareTo(other.name);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAttach(Context context) {
|
||||
super.onAttach(context);
|
||||
mVisibilityLoggerMixin.onAttach(context);
|
||||
}
|
||||
|
||||
/**
|
||||
* Internal collection of device admin info objects for all profiles associated with the current
|
||||
* user.
|
||||
|
@@ -80,6 +80,12 @@ public class UserDictionarySettings extends ListFragment implements Instrumentab
|
||||
return MetricsProto.MetricsEvent.USER_DICTIONARY_SETTINGS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAttach(Context context) {
|
||||
super.onAttach(context);
|
||||
mVisibilityLoggerMixin.onAttach(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public View onCreateView(
|
||||
LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
|
@@ -136,6 +136,12 @@ public class ZonePicker extends ListFragment implements Instrumentable {
|
||||
return TimeZone.getTimeZone((String)((Map<?, ?>)item).get(ZoneGetter.KEY_ID));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAttach(Context context) {
|
||||
super.onAttach(context);
|
||||
mVisibilityLoggerMixin.onAttach(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMetricsCategory() {
|
||||
return MetricsProto.MetricsEvent.ZONE_PICKER;
|
||||
|
@@ -50,11 +50,15 @@ public class VisibilityLoggerMixin implements LifecycleObserver, OnResume, OnPau
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
if (mMetricsFeature != null) {
|
||||
mMetricsFeature.visible(null /* context */, mMetricsCategory);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPause() {
|
||||
if (mMetricsFeature != null) {
|
||||
mMetricsFeature.hidden(null /* context */, mMetricsCategory);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -28,7 +28,9 @@ import org.robolectric.RobolectricTestRunner;
|
||||
import org.robolectric.annotation.Config;
|
||||
|
||||
import static org.mockito.Matchers.any;
|
||||
import static org.mockito.Matchers.anyInt;
|
||||
import static org.mockito.Matchers.eq;
|
||||
import static org.mockito.Mockito.never;
|
||||
import static org.mockito.Mockito.times;
|
||||
import static org.mockito.Mockito.verify;
|
||||
|
||||
@@ -51,6 +53,7 @@ public class VisibilityLoggerMixinTest {
|
||||
@Test
|
||||
public void shouldLogVisibleOnResume() {
|
||||
mMixin.onResume();
|
||||
|
||||
verify(mMetricsFeature, times(1))
|
||||
.visible(any(Context.class), eq(TestInstrumentable.TEST_METRIC));
|
||||
}
|
||||
@@ -58,10 +61,21 @@ public class VisibilityLoggerMixinTest {
|
||||
@Test
|
||||
public void shouldLogHideOnPause() {
|
||||
mMixin.onPause();
|
||||
|
||||
verify(mMetricsFeature, times(1))
|
||||
.hidden(any(Context.class), eq(TestInstrumentable.TEST_METRIC));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldNotLogIfMetricsFeatureIsNull() {
|
||||
mMixin = new VisibilityLoggerMixin(TestInstrumentable.TEST_METRIC);
|
||||
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;
|
||||
|
Reference in New Issue
Block a user