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

Commit 3b0e0574 authored by Leif Hendrik Wilden's avatar Leif Hendrik Wilden Committed by Leif Wilden
Browse files

Migrate to lifecycle events from architecture components.

Bug: 70572789
Test: Added unit test. Manual: adb logcat -b events | egrep "(sysui_|notification_)".
Change-Id: If249f16c06ac439c6da1e419142bff6f22ffb0c9
parent 4aff2781
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;