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

Commit 927d6294 authored by Android Build Coastguard Worker's avatar Android Build Coastguard Worker
Browse files

Snap for 9438050 from f1fc4e77 to tm-qpr2-release

Change-Id: Iaa7e7c474c9b2f44c8f44638faac81256ae038ba
parents 7352559a f1fc4e77
Loading
Loading
Loading
Loading
+13 −2
Original line number Diff line number Diff line
@@ -4164,7 +4164,8 @@ public final class ActivityThread extends ClientTransactionHandler

    private void scheduleResume(ActivityClientRecord r) {
        final ClientTransaction transaction = ClientTransaction.obtain(this.mAppThread, r.token);
        transaction.setLifecycleStateRequest(ResumeActivityItem.obtain(/* isForward */ false));
        transaction.setLifecycleStateRequest(ResumeActivityItem.obtain(/* isForward */ false,
                /* shouldSendCompatFakeFocus */ false));
        executeTransaction(transaction);
    }

@@ -4791,7 +4792,7 @@ public final class ActivityThread extends ClientTransactionHandler

    @Override
    public void handleResumeActivity(ActivityClientRecord r, boolean finalStateRequest,
            boolean isForward, String reason) {
            boolean isForward, boolean shouldSendCompatFakeFocus, String reason) {
        // If we are getting ready to gc after going to the background, well
        // we are back active so skip it.
        unscheduleGcIdler();
@@ -4898,6 +4899,16 @@ public final class ActivityThread extends ClientTransactionHandler
            if (r.activity.mVisibleFromClient) {
                r.activity.makeVisible();
            }

            if (shouldSendCompatFakeFocus) {
                // Attaching to a window is asynchronous with the activity being resumed,
                // so it's possible we will need to send a fake focus event after attaching
                if (impl != null) {
                    impl.dispatchCompatFakeFocus();
                } else {
                    r.window.getDecorView().fakeFocusAfterAttachingToWindow();
                }
            }
        }

        r.nextIdle = mNewActivities;
+2 −1
Original line number Diff line number Diff line
@@ -109,7 +109,8 @@ public abstract class ClientTransactionHandler {
     * @param reason Reason for performing this operation.
     */
    public abstract void handleResumeActivity(@NonNull ActivityClientRecord r,
            boolean finalStateRequest, boolean isForward, String reason);
            boolean finalStateRequest, boolean isForward, boolean shouldSendCompatFakeFocus,
            String reason);

    /**
     * Notify the activity about top resumed state change.
+17 −5
Original line number Diff line number Diff line
@@ -39,6 +39,9 @@ public class ResumeActivityItem extends ActivityLifecycleItem {
    private int mProcState;
    private boolean mUpdateProcState;
    private boolean mIsForward;
    // Whether we should send compat fake focus when the activity is resumed. This is needed
    // because some game engines wait to get focus before drawing the content of the app.
    private boolean mShouldSendCompatFakeFocus;

    @Override
    public void preExecute(ClientTransactionHandler client, IBinder token) {
@@ -52,7 +55,7 @@ public class ResumeActivityItem extends ActivityLifecycleItem {
            PendingTransactionActions pendingActions) {
        Trace.traceBegin(TRACE_TAG_ACTIVITY_MANAGER, "activityResume");
        client.handleResumeActivity(r, true /* finalStateRequest */, mIsForward,
                "RESUME_ACTIVITY");
                mShouldSendCompatFakeFocus, "RESUME_ACTIVITY");
        Trace.traceEnd(TRACE_TAG_ACTIVITY_MANAGER);
    }

@@ -74,7 +77,8 @@ public class ResumeActivityItem extends ActivityLifecycleItem {
    private ResumeActivityItem() {}

    /** Obtain an instance initialized with provided params. */
    public static ResumeActivityItem obtain(int procState, boolean isForward) {
    public static ResumeActivityItem obtain(int procState, boolean isForward,
            boolean shouldSendCompatFakeFocus) {
        ResumeActivityItem instance = ObjectPool.obtain(ResumeActivityItem.class);
        if (instance == null) {
            instance = new ResumeActivityItem();
@@ -82,12 +86,13 @@ public class ResumeActivityItem extends ActivityLifecycleItem {
        instance.mProcState = procState;
        instance.mUpdateProcState = true;
        instance.mIsForward = isForward;
        instance.mShouldSendCompatFakeFocus = shouldSendCompatFakeFocus;

        return instance;
    }

    /** Obtain an instance initialized with provided params. */
    public static ResumeActivityItem obtain(boolean isForward) {
    public static ResumeActivityItem obtain(boolean isForward, boolean shouldSendCompatFakeFocus) {
        ResumeActivityItem instance = ObjectPool.obtain(ResumeActivityItem.class);
        if (instance == null) {
            instance = new ResumeActivityItem();
@@ -95,6 +100,7 @@ public class ResumeActivityItem extends ActivityLifecycleItem {
        instance.mProcState = ActivityManager.PROCESS_STATE_UNKNOWN;
        instance.mUpdateProcState = false;
        instance.mIsForward = isForward;
        instance.mShouldSendCompatFakeFocus = shouldSendCompatFakeFocus;

        return instance;
    }
@@ -105,6 +111,7 @@ public class ResumeActivityItem extends ActivityLifecycleItem {
        mProcState = ActivityManager.PROCESS_STATE_UNKNOWN;
        mUpdateProcState = false;
        mIsForward = false;
        mShouldSendCompatFakeFocus = false;
        ObjectPool.recycle(this);
    }

@@ -117,6 +124,7 @@ public class ResumeActivityItem extends ActivityLifecycleItem {
        dest.writeInt(mProcState);
        dest.writeBoolean(mUpdateProcState);
        dest.writeBoolean(mIsForward);
        dest.writeBoolean(mShouldSendCompatFakeFocus);
    }

    /** Read from Parcel. */
@@ -124,6 +132,7 @@ public class ResumeActivityItem extends ActivityLifecycleItem {
        mProcState = in.readInt();
        mUpdateProcState = in.readBoolean();
        mIsForward = in.readBoolean();
        mShouldSendCompatFakeFocus = in.readBoolean();
    }

    public static final @NonNull Creator<ResumeActivityItem> CREATOR =
@@ -147,7 +156,8 @@ public class ResumeActivityItem extends ActivityLifecycleItem {
        }
        final ResumeActivityItem other = (ResumeActivityItem) o;
        return mProcState == other.mProcState && mUpdateProcState == other.mUpdateProcState
                && mIsForward == other.mIsForward;
                && mIsForward == other.mIsForward
                && mShouldSendCompatFakeFocus == other.mShouldSendCompatFakeFocus;
    }

    @Override
@@ -156,12 +166,14 @@ public class ResumeActivityItem extends ActivityLifecycleItem {
        result = 31 * result + mProcState;
        result = 31 * result + (mUpdateProcState ? 1 : 0);
        result = 31 * result + (mIsForward ? 1 : 0);
        result = 31 * result + (mShouldSendCompatFakeFocus ? 1 : 0);
        return result;
    }

    @Override
    public String toString() {
        return "ResumeActivityItem{procState=" + mProcState
                + ",updateProcState=" + mUpdateProcState + ",isForward=" + mIsForward + "}";
                + ",updateProcState=" + mUpdateProcState + ",isForward=" + mIsForward
                + ",shouldSendCompatFakeFocus=" + mShouldSendCompatFakeFocus + "}";
    }
}
+2 −1
Original line number Diff line number Diff line
@@ -226,7 +226,8 @@ public class TransactionExecutor {
                    break;
                case ON_RESUME:
                    mTransactionHandler.handleResumeActivity(r, false /* finalStateRequest */,
                            r.isForward, "LIFECYCLER_RESUME_ACTIVITY");
                            r.isForward, false /* shouldSendCompatFakeFocus */,
                            "LIFECYCLER_RESUME_ACTIVITY");
                    break;
                case ON_PAUSE:
                    mTransactionHandler.handlePauseActivity(r, false /* finished */,
+2 −1
Original line number Diff line number Diff line
@@ -195,7 +195,8 @@ public class TransactionExecutorHelper {
                lifecycleItem = StopActivityItem.obtain(0 /* configChanges */);
                break;
            default:
                lifecycleItem = ResumeActivityItem.obtain(false /* isForward */);
                lifecycleItem = ResumeActivityItem.obtain(false /* isForward */,
                        false /* shouldSendCompatFakeFocus */);
                break;
        }

Loading