Loading packages/SettingsLib/src/com/android/settingslib/core/instrumentation/VisibilityLoggerMixin.java +6 −7 Original line number Diff line number Diff line Loading @@ -17,21 +17,20 @@ package com.android.settingslib.core.instrumentation; import android.app.Activity; import android.content.Context; import android.arch.lifecycle.Lifecycle.Event; import android.arch.lifecycle.LifecycleObserver; import android.arch.lifecycle.OnLifecycleEvent; import android.content.Intent; import android.os.SystemClock; import com.android.internal.logging.nano.MetricsProto; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnPause; import com.android.settingslib.core.lifecycle.events.OnResume; import static com.android.settingslib.core.instrumentation.Instrumentable.METRICS_CATEGORY_UNKNOWN; /** * Logs visibility change of a fragment. */ public class VisibilityLoggerMixin implements LifecycleObserver, OnResume, OnPause { public class VisibilityLoggerMixin implements LifecycleObserver { private static final String TAG = "VisibilityLoggerMixin"; Loading @@ -55,7 +54,7 @@ public class VisibilityLoggerMixin implements LifecycleObserver, OnResume, OnPau mMetricsFeature = metricsFeature; } @Override @OnLifecycleEvent(Event.ON_RESUME) public void onResume() { mVisibleTimestamp = SystemClock.elapsedRealtime(); if (mMetricsFeature != null && mMetricsCategory != METRICS_CATEGORY_UNKNOWN) { Loading @@ -63,7 +62,7 @@ public class VisibilityLoggerMixin implements LifecycleObserver, OnResume, OnPau } } @Override @OnLifecycleEvent(Event.ON_PAUSE) public void onPause() { mVisibleTimestamp = 0; if (mMetricsFeature != null && mMetricsCategory != METRICS_CATEGORY_UNKNOWN) { Loading packages/SettingsLib/tests/robotests/src/com/android/settingslib/core/instrumentation/VisibilityLoggerMixinTest.java +29 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.settingslib.core.instrumentation; import static com.android.settingslib.core.instrumentation.Instrumentable.METRICS_CATEGORY_UNKNOWN; import static org.mockito.ArgumentMatchers.nullable; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyInt; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.mock; Loading @@ -30,6 +31,8 @@ import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import com.android.internal.logging.nano.MetricsProto; import com.android.settingslib.SettingsLibRobolectricTestRunner; import com.android.settingslib.TestConfig; Loading @@ -39,6 +42,8 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.Robolectric; import org.robolectric.android.controller.ActivityController; import org.robolectric.annotation.Config; Loading Loading @@ -110,6 +115,30 @@ public class VisibilityLoggerMixinTest { .hidden(nullable(Context.class), anyInt()); } @Test public void activityShouldBecomeVisibleAndHide() { ActivityController<TestActivity> ac = Robolectric.buildActivity(TestActivity.class); TestActivity testActivity = ac.get(); MockitoAnnotations.initMocks(testActivity); ac.create().start().resume(); verify(testActivity.mMetricsFeatureProvider, times(1)).visible(any(), anyInt(), anyInt()); ac.pause().stop().destroy(); verify(testActivity.mMetricsFeatureProvider, times(1)).hidden(any(), anyInt()); } public static class TestActivity extends FragmentActivity { @Mock MetricsFeatureProvider mMetricsFeatureProvider; @Override public void onCreate(Bundle savedInstanceState) { VisibilityLoggerMixin mixin = new VisibilityLoggerMixin( TestInstrumentable.TEST_METRIC, mMetricsFeatureProvider); getLifecycle().addObserver(mixin); super.onCreate(savedInstanceState); } } private final class TestInstrumentable implements Instrumentable { public static final int TEST_METRIC = 12345; Loading Loading
packages/SettingsLib/src/com/android/settingslib/core/instrumentation/VisibilityLoggerMixin.java +6 −7 Original line number Diff line number Diff line Loading @@ -17,21 +17,20 @@ package com.android.settingslib.core.instrumentation; import android.app.Activity; import android.content.Context; import android.arch.lifecycle.Lifecycle.Event; import android.arch.lifecycle.LifecycleObserver; import android.arch.lifecycle.OnLifecycleEvent; import android.content.Intent; import android.os.SystemClock; import com.android.internal.logging.nano.MetricsProto; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnPause; import com.android.settingslib.core.lifecycle.events.OnResume; import static com.android.settingslib.core.instrumentation.Instrumentable.METRICS_CATEGORY_UNKNOWN; /** * Logs visibility change of a fragment. */ public class VisibilityLoggerMixin implements LifecycleObserver, OnResume, OnPause { public class VisibilityLoggerMixin implements LifecycleObserver { private static final String TAG = "VisibilityLoggerMixin"; Loading @@ -55,7 +54,7 @@ public class VisibilityLoggerMixin implements LifecycleObserver, OnResume, OnPau mMetricsFeature = metricsFeature; } @Override @OnLifecycleEvent(Event.ON_RESUME) public void onResume() { mVisibleTimestamp = SystemClock.elapsedRealtime(); if (mMetricsFeature != null && mMetricsCategory != METRICS_CATEGORY_UNKNOWN) { Loading @@ -63,7 +62,7 @@ public class VisibilityLoggerMixin implements LifecycleObserver, OnResume, OnPau } } @Override @OnLifecycleEvent(Event.ON_PAUSE) public void onPause() { mVisibleTimestamp = 0; if (mMetricsFeature != null && mMetricsCategory != METRICS_CATEGORY_UNKNOWN) { Loading
packages/SettingsLib/tests/robotests/src/com/android/settingslib/core/instrumentation/VisibilityLoggerMixinTest.java +29 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.settingslib.core.instrumentation; import static com.android.settingslib.core.instrumentation.Instrumentable.METRICS_CATEGORY_UNKNOWN; import static org.mockito.ArgumentMatchers.nullable; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyInt; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.mock; Loading @@ -30,6 +31,8 @@ import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import com.android.internal.logging.nano.MetricsProto; import com.android.settingslib.SettingsLibRobolectricTestRunner; import com.android.settingslib.TestConfig; Loading @@ -39,6 +42,8 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.Robolectric; import org.robolectric.android.controller.ActivityController; import org.robolectric.annotation.Config; Loading Loading @@ -110,6 +115,30 @@ public class VisibilityLoggerMixinTest { .hidden(nullable(Context.class), anyInt()); } @Test public void activityShouldBecomeVisibleAndHide() { ActivityController<TestActivity> ac = Robolectric.buildActivity(TestActivity.class); TestActivity testActivity = ac.get(); MockitoAnnotations.initMocks(testActivity); ac.create().start().resume(); verify(testActivity.mMetricsFeatureProvider, times(1)).visible(any(), anyInt(), anyInt()); ac.pause().stop().destroy(); verify(testActivity.mMetricsFeatureProvider, times(1)).hidden(any(), anyInt()); } public static class TestActivity extends FragmentActivity { @Mock MetricsFeatureProvider mMetricsFeatureProvider; @Override public void onCreate(Bundle savedInstanceState) { VisibilityLoggerMixin mixin = new VisibilityLoggerMixin( TestInstrumentable.TEST_METRIC, mMetricsFeatureProvider); getLifecycle().addObserver(mixin); super.onCreate(savedInstanceState); } } private final class TestInstrumentable implements Instrumentable { public static final int TEST_METRIC = 12345; Loading