Fix NPE when using VisibilityLogger.

Fix: 31612160
Test: make RunSettingsRoboTests
Change-Id: Ib040a40d27a76d9440f629ed4f768dc4bfde8ac2
This commit is contained in:
Fan Zhang
2016-09-20 09:05:27 -07:00
parent 9560b36306
commit 45fb1199a2
5 changed files with 40 additions and 3 deletions

View File

@@ -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.

View File

@@ -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) {

View File

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

View File

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

View File

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