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