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

Commit 121302c4 authored by Hongwei Wang's avatar Hongwei Wang Committed by Android (Google) Code Review
Browse files

Merge "Ensure isInPictureInPicture result in onPause" into tm-qpr-dev

parents 0e12415b ac611a12
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -980,7 +980,8 @@ public class Activity extends ContextThemeWrapper
    boolean mEnterAnimationComplete;

    private boolean mIsInMultiWindowMode;
    private boolean mIsInPictureInPictureMode;
    /** @hide */
    boolean mIsInPictureInPictureMode;

    private boolean mShouldDockBigOverlays;

+9 −2
Original line number Diff line number Diff line
@@ -4162,7 +4162,8 @@ public final class ActivityThread extends ClientTransactionHandler
    private void schedulePauseWithUserLeavingHint(ActivityClientRecord r) {
        final ClientTransaction transaction = ClientTransaction.obtain(this.mAppThread, r.token);
        transaction.setLifecycleStateRequest(PauseActivityItem.obtain(r.activity.isFinishing(),
                /* userLeaving */ true, r.activity.mConfigChangeFlags, /* dontReport */ false));
                /* userLeaving */ true, r.activity.mConfigChangeFlags, /* dontReport */ false,
                /* autoEnteringPip */ false));
        executeTransaction(transaction);
    }

@@ -4952,12 +4953,18 @@ public final class ActivityThread extends ClientTransactionHandler

    @Override
    public void handlePauseActivity(ActivityClientRecord r, boolean finished, boolean userLeaving,
            int configChanges, PendingTransactionActions pendingActions, String reason) {
            int configChanges, boolean autoEnteringPip, PendingTransactionActions pendingActions,
            String reason) {
        if (userLeaving) {
            performUserLeavingActivity(r);
        }

        r.activity.mConfigChangeFlags |= configChanges;
        if (autoEnteringPip) {
            // Set mIsInPictureInPictureMode earlier in case of auto-enter-pip, see also
            // {@link Activity#enterPictureInPictureMode(PictureInPictureParams)}.
            r.activity.mIsInPictureInPictureMode = true;
        }
        performPauseActivity(r, finished, reason, pendingActions);

        // Make sure any pending writes are now committed.
+2 −2
Original line number Diff line number Diff line
@@ -97,8 +97,8 @@ public abstract class ClientTransactionHandler {

    /** Pause the activity. */
    public abstract void handlePauseActivity(@NonNull ActivityClientRecord r, boolean finished,
            boolean userLeaving, int configChanges, PendingTransactionActions pendingActions,
            String reason);
            boolean userLeaving, int configChanges, boolean autoEnteringPip,
            PendingTransactionActions pendingActions, String reason);

    /**
     * Resume the activity.
+14 −5
Original line number Diff line number Diff line
@@ -39,13 +39,14 @@ public class PauseActivityItem extends ActivityLifecycleItem {
    private boolean mUserLeaving;
    private int mConfigChanges;
    private boolean mDontReport;
    private boolean mAutoEnteringPip;

    @Override
    public void execute(ClientTransactionHandler client, ActivityClientRecord r,
            PendingTransactionActions pendingActions) {
        Trace.traceBegin(TRACE_TAG_ACTIVITY_MANAGER, "activityPause");
        client.handlePauseActivity(r, mFinished, mUserLeaving, mConfigChanges, pendingActions,
                "PAUSE_ACTIVITY_ITEM");
        client.handlePauseActivity(r, mFinished, mUserLeaving, mConfigChanges, mAutoEnteringPip,
                pendingActions, "PAUSE_ACTIVITY_ITEM");
        Trace.traceEnd(TRACE_TAG_ACTIVITY_MANAGER);
    }

@@ -71,7 +72,7 @@ public class PauseActivityItem extends ActivityLifecycleItem {

    /** Obtain an instance initialized with provided params. */
    public static PauseActivityItem obtain(boolean finished, boolean userLeaving, int configChanges,
            boolean dontReport) {
            boolean dontReport, boolean autoEnteringPip) {
        PauseActivityItem instance = ObjectPool.obtain(PauseActivityItem.class);
        if (instance == null) {
            instance = new PauseActivityItem();
@@ -80,6 +81,7 @@ public class PauseActivityItem extends ActivityLifecycleItem {
        instance.mUserLeaving = userLeaving;
        instance.mConfigChanges = configChanges;
        instance.mDontReport = dontReport;
        instance.mAutoEnteringPip = autoEnteringPip;

        return instance;
    }
@@ -94,6 +96,7 @@ public class PauseActivityItem extends ActivityLifecycleItem {
        instance.mUserLeaving = false;
        instance.mConfigChanges = 0;
        instance.mDontReport = true;
        instance.mAutoEnteringPip = false;

        return instance;
    }
@@ -105,6 +108,7 @@ public class PauseActivityItem extends ActivityLifecycleItem {
        mUserLeaving = false;
        mConfigChanges = 0;
        mDontReport = false;
        mAutoEnteringPip = false;
        ObjectPool.recycle(this);
    }

@@ -117,6 +121,7 @@ public class PauseActivityItem extends ActivityLifecycleItem {
        dest.writeBoolean(mUserLeaving);
        dest.writeInt(mConfigChanges);
        dest.writeBoolean(mDontReport);
        dest.writeBoolean(mAutoEnteringPip);
    }

    /** Read from Parcel. */
@@ -125,6 +130,7 @@ public class PauseActivityItem extends ActivityLifecycleItem {
        mUserLeaving = in.readBoolean();
        mConfigChanges = in.readInt();
        mDontReport = in.readBoolean();
        mAutoEnteringPip = in.readBoolean();
    }

    public static final @NonNull Creator<PauseActivityItem> CREATOR =
@@ -148,7 +154,8 @@ public class PauseActivityItem extends ActivityLifecycleItem {
        }
        final PauseActivityItem other = (PauseActivityItem) o;
        return mFinished == other.mFinished && mUserLeaving == other.mUserLeaving
                && mConfigChanges == other.mConfigChanges && mDontReport == other.mDontReport;
                && mConfigChanges == other.mConfigChanges && mDontReport == other.mDontReport
                && mAutoEnteringPip == other.mAutoEnteringPip;
    }

    @Override
@@ -158,12 +165,14 @@ public class PauseActivityItem extends ActivityLifecycleItem {
        result = 31 * result + (mUserLeaving ? 1 : 0);
        result = 31 * result + mConfigChanges;
        result = 31 * result + (mDontReport ? 1 : 0);
        result = 31 * result + (mAutoEnteringPip ? 1 : 0);
        return result;
    }

    @Override
    public String toString() {
        return "PauseActivityItem{finished=" + mFinished + ",userLeaving=" + mUserLeaving
                + ",configChanges=" + mConfigChanges + ",dontReport=" + mDontReport + "}";
                + ",configChanges=" + mConfigChanges + ",dontReport=" + mDontReport
                + ",autoEnteringPip=" + mAutoEnteringPip + "}";
    }
}
+2 −1
Original line number Diff line number Diff line
@@ -227,7 +227,8 @@ public class TransactionExecutor {
                    break;
                case ON_PAUSE:
                    mTransactionHandler.handlePauseActivity(r, false /* finished */,
                            false /* userLeaving */, 0 /* configChanges */, mPendingActions,
                            false /* userLeaving */, 0 /* configChanges */,
                            false /* autoEnteringPip */, mPendingActions,
                            "LIFECYCLER_PAUSE_ACTIVITY");
                    break;
                case ON_STOP:
Loading