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

Commit 01ea1505 authored by Jason Chiu's avatar Jason Chiu Committed by Android (Google) Code Review
Browse files

Merge "[SettingsLib] Add a metric for time spending in each Settings page"

parents 7a339ca8 437cc9b0
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -40,8 +40,12 @@ public class EventLogWriter implements LogWriter {
    }

    @Override
    public void hidden(Context context, int category) {
        MetricsLogger.hidden(context, category);
    public void hidden(Context context, int category, int visibleTime) {
        final LogMaker logMaker = new LogMaker(category)
                .setType(MetricsProto.MetricsEvent.TYPE_CLOSE)
                .addTaggedData(MetricsProto.MetricsEvent.FIELD_SETTINGS_PREFERENCE_CHANGE_INT_VALUE,
                        visibleTime);
        MetricsLogger.action(logMaker);
    }

    @Override
+1 −1
Original line number Diff line number Diff line
@@ -31,7 +31,7 @@ public interface LogWriter {
    /**
     * Logs a visibility event when view becomes hidden.
     */
    void hidden(Context context, int category);
    void hidden(Context context, int category, int visibleTime);

    /**
     * Logs an user action.
+8 −2
Original line number Diff line number Diff line
@@ -83,9 +83,15 @@ public class MetricsFeatureProvider {
        }
    }

    public void hidden(Context context, int category) {
    /**
     * Logs an event when target page is hidden.
     *
     * @param category the target page id
     * @param visibleTime the time spending on target page since being visible
     */
    public void hidden(Context context, int category, int visibleTime) {
        for (LogWriter writer : mLoggerWriters) {
            writer.hidden(context, category);
            writer.hidden(context, category, visibleTime);
        }
    }

+10 −7
Original line number Diff line number Diff line
@@ -40,7 +40,8 @@ public class VisibilityLoggerMixin implements LifecycleObserver, OnAttach {

    private MetricsFeatureProvider mMetricsFeature;
    private int mSourceMetricsCategory = MetricsProto.MetricsEvent.VIEW_UNKNOWN;
    private long mTimestamp;
    private long mCreationTimestamp;
    private long mVisibleTimestamp;

    public VisibilityLoggerMixin(int metricsCategory, MetricsFeatureProvider metricsFeature) {
        mMetricsCategory = metricsCategory;
@@ -49,7 +50,7 @@ public class VisibilityLoggerMixin implements LifecycleObserver, OnAttach {

    @Override
    public void onAttach() {
        mTimestamp = SystemClock.elapsedRealtime();
        mCreationTimestamp = SystemClock.elapsedRealtime();
    }

    @OnLifecycleEvent(Event.ON_RESUME)
@@ -57,8 +58,9 @@ public class VisibilityLoggerMixin implements LifecycleObserver, OnAttach {
        if (mMetricsFeature == null || mMetricsCategory == METRICS_CATEGORY_UNKNOWN) {
            return;
        }
        if (mTimestamp != 0L) {
            final int elapse = (int) (SystemClock.elapsedRealtime() - mTimestamp);
        mVisibleTimestamp = SystemClock.elapsedRealtime();
        if (mCreationTimestamp != 0L) {
            final int elapse = (int) (mVisibleTimestamp - mCreationTimestamp);
            mMetricsFeature.visible(null /* context */, mSourceMetricsCategory,
                    mMetricsCategory, elapse);
        } else {
@@ -69,9 +71,10 @@ public class VisibilityLoggerMixin implements LifecycleObserver, OnAttach {

    @OnLifecycleEvent(Event.ON_PAUSE)
    public void onPause() {
        mTimestamp = 0;
        mCreationTimestamp = 0;
        if (mMetricsFeature != null && mMetricsCategory != METRICS_CATEGORY_UNKNOWN) {
            mMetricsFeature.hidden(null /* context */, mMetricsCategory);
            final int elapse = (int) (SystemClock.elapsedRealtime() - mVisibleTimestamp);
            mMetricsFeature.hidden(null /* context */, mMetricsCategory, elapse);
        }
    }

@@ -84,7 +87,7 @@ public class VisibilityLoggerMixin implements LifecycleObserver, OnAttach {
        if (mMetricsFeature == null || mMetricsCategory == METRICS_CATEGORY_UNKNOWN) {
            return;
        }
        final int elapse = (int) (SystemClock.elapsedRealtime() - mTimestamp);
        final int elapse = (int) (SystemClock.elapsedRealtime() - mCreationTimestamp);
        mMetricsFeature.action(METRICS_CATEGORY_UNKNOWN, action, mMetricsCategory, key, elapse);
    }

+4 −4
Original line number Diff line number Diff line
@@ -88,7 +88,7 @@ public class VisibilityLoggerMixinTest {
        mMixin.onPause();

        verify(mMetricsFeature, times(1))
                .hidden(nullable(Context.class), eq(TestInstrumentable.TEST_METRIC));
                .hidden(nullable(Context.class), eq(TestInstrumentable.TEST_METRIC), anyInt());
    }

    @Test
@@ -98,7 +98,7 @@ public class VisibilityLoggerMixinTest {
        mMixin.onPause();

        verify(mMetricsFeature, never())
                .hidden(nullable(Context.class), anyInt());
                .hidden(nullable(Context.class), anyInt(), anyInt());
    }

    @Test
@@ -109,7 +109,7 @@ public class VisibilityLoggerMixinTest {
        mMixin.onPause();

        verify(mMetricsFeature, never())
                .hidden(nullable(Context.class), anyInt());
                .hidden(nullable(Context.class), anyInt(), anyInt());
    }

    @Test
@@ -121,7 +121,7 @@ public class VisibilityLoggerMixinTest {
        verify(testActivity.mMetricsFeatureProvider, times(1)).visible(any(), anyInt(), anyInt(),
                anyInt());
        ac.pause().stop().destroy();
        verify(testActivity.mMetricsFeatureProvider, times(1)).hidden(any(), anyInt());
        verify(testActivity.mMetricsFeatureProvider, times(1)).hidden(any(), anyInt(), anyInt());
    }

    public static class TestActivity extends FragmentActivity {