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

Commit 3806b910 authored by Leif Wilden's avatar Leif Wilden Committed by Android (Google) Code Review
Browse files

Merge "Migrate to lifecycle events from architecture components."

parents c13b5436 3b0e0574
Loading
Loading
Loading
Loading
+6 −7
Original line number Diff line number Diff line
@@ -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";

@@ -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) {
@@ -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) {
+29 −0
Original line number Diff line number Diff line
@@ -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;
@@ -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;
@@ -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;


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