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

Commit 84cc5988 authored by Raff Tsai's avatar Raff Tsai Committed by Android (Google) Code Review
Browse files

Merge "Add page creation latency"

parents 60a2a333 c90301c9
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -30,10 +30,12 @@ import com.android.internal.logging.nano.MetricsProto;
public class EventLogWriter implements LogWriter {

    @Override
    public void visible(Context context, int source, int category) {
    public void visible(Context context, int source, int category, int latency) {
        final LogMaker logMaker = new LogMaker(category)
                .setType(MetricsProto.MetricsEvent.TYPE_OPEN)
                .addTaggedData(MetricsProto.MetricsEvent.FIELD_CONTEXT, source);
                .addTaggedData(MetricsProto.MetricsEvent.FIELD_CONTEXT, source)
                .addTaggedData(MetricsProto.MetricsEvent.FIELD_SETTINGS_PREFERENCE_CHANGE_INT_VALUE,
                        latency);
        MetricsLogger.action(logMaker);
    }

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

    /**
     * Logs a visibility event when view becomes hidden.
+9 −2
Original line number Diff line number Diff line
@@ -67,9 +67,16 @@ public class MetricsFeatureProvider {
                SettingsEnums.PAGE_UNKNOWN);
    }

    public void visible(Context context, int source, int category) {
    /**
     * Logs an event when target page is visible.
     *
     * @param source from this page id to target page
     * @param category the target page id
     * @param latency the latency of target page creation
     */
    public void visible(Context context, int source, int category, int latency) {
        for (LogWriter writer : mLoggerWriters) {
            writer.visible(context, source, category);
            writer.visible(context, source, category, latency);
        }
    }

+20 −7
Original line number Diff line number Diff line
@@ -23,15 +23,16 @@ import android.content.Intent;
import android.os.SystemClock;

import androidx.lifecycle.Lifecycle.Event;
import androidx.lifecycle.LifecycleObserver;
import androidx.lifecycle.OnLifecycleEvent;

import com.android.internal.logging.nano.MetricsProto;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnAttach;

/**
 * Logs visibility change of a fragment.
 */
public class VisibilityLoggerMixin implements LifecycleObserver {
public class VisibilityLoggerMixin implements LifecycleObserver, OnAttach {

    private static final String TAG = "VisibilityLoggerMixin";

@@ -39,24 +40,36 @@ public class VisibilityLoggerMixin implements LifecycleObserver {

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

    public VisibilityLoggerMixin(int metricsCategory, MetricsFeatureProvider metricsFeature) {
        mMetricsCategory = metricsCategory;
        mMetricsFeature = metricsFeature;
    }

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

    @OnLifecycleEvent(Event.ON_RESUME)
    public void onResume() {
        mVisibleTimestamp = SystemClock.elapsedRealtime();
        if (mMetricsFeature != null && mMetricsCategory != METRICS_CATEGORY_UNKNOWN) {
            mMetricsFeature.visible(null /* context */, mSourceMetricsCategory, mMetricsCategory);
        if (mMetricsFeature == null || mMetricsCategory == METRICS_CATEGORY_UNKNOWN) {
            return;
        }
        if (mTimestamp != 0L) {
            final int elapse = (int) (SystemClock.elapsedRealtime() - mTimestamp);
            mMetricsFeature.visible(null /* context */, mSourceMetricsCategory,
                    mMetricsCategory, elapse);
        } else {
            mMetricsFeature.visible(null /* context */, mSourceMetricsCategory,
                    mMetricsCategory, 0);
        }
    }

    @OnLifecycleEvent(Event.ON_PAUSE)
    public void onPause() {
        mVisibleTimestamp = 0;
        mTimestamp = 0;
        if (mMetricsFeature != null && mMetricsCategory != METRICS_CATEGORY_UNKNOWN) {
            mMetricsFeature.hidden(null /* context */, mMetricsCategory);
        }
+4 −1
Original line number Diff line number Diff line
@@ -94,11 +94,14 @@ public class Lifecycle extends LifecycleRegistry {
        }
    }

    /**
     * Pass all onAttach event to {@link LifecycleObserver}.
     */
    public void onAttach(Context context) {
        for (int i = 0, size = mObservers.size(); i < size; i++) {
            final LifecycleObserver observer = mObservers.get(i);
            if (observer instanceof OnAttach) {
                ((OnAttach) observer).onAttach(context);
                ((OnAttach) observer).onAttach();
            }
        }
    }
Loading