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

Commit bd6fba9f authored by Hyunyoung Song's avatar Hyunyoung Song
Browse files

onResume event should be logged (not twice but once)

Bug: 79541772

Change-Id: I5fe1271007e4579e1ec95d51c215ef48d0c6eedd
parent 7b19b16f
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -155,6 +155,7 @@ message Action {
    CONFIRM = 4;        // Indicates thata confirmation screen was accepted
    STOP = 5;           // Indicates onStop() was called (screen time out, power off)
    RECENTS_BUTTON = 6; // Indicates that Recents button was pressed
    RESUME = 7;         // Indicates onResume() was called
  }

  optional Type type = 1;
+4 −2
Original line number Diff line number Diff line
@@ -102,9 +102,11 @@ public abstract class AbstractFloatingView extends LinearLayout implements Touch

    public final void close(boolean animate) {
        animate &= !Utilities.isPowerSaverPreventingAnimation(getContext());
        handleClose(animate);
        if (mIsOpen) {
            BaseActivity.fromContext(getContext()).getUserEventDispatcher()
                    .resetElapsedContainerMillis("container closed");
        }
        handleClose(animate);
        mIsOpen = false;
    }

+19 −3
Original line number Diff line number Diff line
@@ -50,6 +50,7 @@ import android.graphics.Point;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.Parcelable;
import android.os.Process;
import android.os.StrictMode;
@@ -243,6 +244,10 @@ public class Launcher extends BaseDraggingActivity

    private RotationHelper mRotationHelper;


    private final Handler mHandler = new Handler();
    private final Runnable mLogOnDelayedResume = this::logOnDelayedResume;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        if (DEBUG_STRICT_MODE) {
@@ -727,10 +732,11 @@ public class Launcher extends BaseDraggingActivity
        if (mLauncherCallbacks != null) {
            mLauncherCallbacks.onStop();
        }
        mAppWidgetHost.setListenIfResumed(false);

        getUserEventDispatcher().logActionCommand(Action.Command.STOP,
                mStateManager.getState().containerType, -1);

        mAppWidgetHost.setListenIfResumed(false);

        NotificationListener.removeNotificationsChangedListener();
        getStateManager().moveToRestState();

@@ -751,13 +757,23 @@ public class Launcher extends BaseDraggingActivity
        UiFactory.onStart(this);
    }

    private void logOnDelayedResume() {
        if (hasBeenResumed()) {
            getUserEventDispatcher().logActionCommand(Action.Command.RESUME,
                    mStateManager.getState().containerType, -1);
            getUserEventDispatcher().startSession();
        }
    }

    @Override
    protected void onResume() {
        TraceHelper.beginSection("ON_RESUME");
        super.onResume();
        TraceHelper.partitionSection("ON_RESUME", "superCall");

        getUserEventDispatcher().resetElapsedSessionMillis();
        mHandler.removeCallbacks(mLogOnDelayedResume);
        Utilities.postAsyncCallback(mHandler, mLogOnDelayedResume);

        setOnResumeCallback(null);
        // Process any items that were added while Launcher was away.
        InstallShortcutReceiver.disableAndFlushInstallQueue(
+8 −4
Original line number Diff line number Diff line
@@ -125,6 +125,7 @@ public class UserEventDispatcher {
        return null;
    }

    private boolean mSessionStarted;
    private long mElapsedContainerMillis;
    private long mElapsedSessionMillis;
    private long mActionDurationMillis;
@@ -216,10 +217,12 @@ public class UserEventDispatcher {

    public void logActionCommand(int command, Target srcTarget, Target dstTarget) {
        LauncherEvent event = newLauncherEvent(newCommandAction(command), srcTarget);
        if (command == Action.Command.STOP && mAppOrTaskLaunch) {
            // Prevent double logging by skipping STOP when app or task has been launched.
        if (command == Action.Command.STOP) {
            if (mAppOrTaskLaunch || !mSessionStarted) {
                mSessionStarted = false;
                return;
            }
        }

        if (dstTarget != null) {
            event.destTarget = new Target[1];
@@ -405,7 +408,8 @@ public class UserEventDispatcher {

    }

    public final void resetElapsedSessionMillis() {
    public final void startSession() {
        mSessionStarted = true;
        mElapsedSessionMillis = SystemClock.uptimeMillis();
        mElapsedContainerMillis = SystemClock.uptimeMillis();
    }