Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 45fb1199 authored by Fan Zhang's avatar Fan Zhang
Browse files

Fix NPE when using VisibilityLogger.

Fix: 31612160
Test: make RunSettingsRoboTests
Change-Id: Ib040a40d27a76d9440f629ed4f768dc4bfde8ac2
parent 9560b363
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -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.
+6 −0
Original line number Diff line number Diff line
@@ -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) {
+6 −0
Original line number Diff line number Diff line
@@ -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;
+6 −2
Original line number Diff line number Diff line
@@ -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);
        }
    }
}
+14 −0
Original line number Diff line number Diff line
@@ -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;