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

Commit 3131ca1e authored by Chris Li's avatar Chris Li Committed by Android (Google) Code Review
Browse files

Merge "Cleanup scheduleTransactionAndLifecycleItems" into main

parents 91733d22 98f15b43
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -4916,7 +4916,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
            final ActivityLifecycleItem lifecycleItem = getLifecycleItemForCurrentStateForResult();
            try {
                if (lifecycleItem != null) {
                    mAtmService.getLifecycleManager().scheduleTransactionAndLifecycleItems(
                    mAtmService.getLifecycleManager().scheduleTransactionItems(
                            app.getThread(), activityResultItem, lifecycleItem);
                } else {
                    Slog.w(TAG, "Unable to get the lifecycle item for state " + mState
@@ -9629,7 +9629,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
            } else {
                lifecycleItem = new PauseActivityItem(token);
            }
            mAtmService.getLifecycleManager().scheduleTransactionAndLifecycleItems(
            mAtmService.getLifecycleManager().scheduleTransactionItems(
                    app.getThread(), callbackItem, lifecycleItem);
            startRelaunching();
            // Note: don't need to call pauseIfSleepingLocked() here, because the caller will only
+1 −1
Original line number Diff line number Diff line
@@ -89,7 +89,7 @@ class ActivityRefresher {
        final ResumeActivityItem resumeActivityItem = new ResumeActivityItem(
                activity.token, /* isForward */ false, /* shouldSendCompatFakeFocus */ false);
        try {
            activity.mAtmService.getLifecycleManager().scheduleTransactionAndLifecycleItems(
            activity.mAtmService.getLifecycleManager().scheduleTransactionItems(
                    activity.app.getThread(), refreshCallbackItem, resumeActivityItem);
            mHandler.postDelayed(() -> {
                synchronized (mWmService.mGlobalLock) {
+4 −3
Original line number Diff line number Diff line
@@ -964,11 +964,12 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks {
                    // transaction.
                    mService.getLifecycleManager().dispatchPendingTransaction(proc.getThread());
                }
                mService.getLifecycleManager().scheduleTransactionAndLifecycleItems(
                        proc.getThread(), launchActivityItem, lifecycleItem,
                mService.getLifecycleManager().scheduleTransactionItems(
                        proc.getThread(),
                        // Immediately dispatch the transaction, so that if it fails, the server can
                        // restart the process and retry now.
                        true /* shouldDispatchImmediately */);
                        true /* shouldDispatchImmediately */,
                        launchActivityItem, lifecycleItem);

                if (procConfig.seq > mRootWindowContainer.getConfiguration().seq) {
                    // If the seq is increased, there should be something changed (e.g. registered
+23 −19
Original line number Diff line number Diff line
@@ -19,7 +19,6 @@ package com.android.server.wm;
import android.annotation.NonNull;
import android.app.IApplicationThread;
import android.app.compat.CompatChanges;
import android.app.servertransaction.ActivityLifecycleItem;
import android.app.servertransaction.ClientTransaction;
import android.app.servertransaction.ClientTransactionItem;
import android.app.servertransaction.LaunchActivityItem;
@@ -97,31 +96,34 @@ class ClientLifecycleManager {
    }

    /**
     * Schedules a single transaction item, either a callback or a lifecycle request, delivery to
     * client application.
     * Schedules a transaction with the given item, delivery to client application.
     *
     * @throws RemoteException
     * @see ClientTransactionItem
     */
    void scheduleTransactionItem(@NonNull IApplicationThread client,
            @NonNull ClientTransactionItem transactionItem) throws RemoteException {
            @NonNull ClientTransactionItem item) throws RemoteException {
        // Wait until RootWindowContainer#performSurfacePlacementNoTrace to dispatch all pending
        // transactions at once.
        final ClientTransaction clientTransaction = getOrCreatePendingTransaction(client);
        clientTransaction.addTransactionItem(transactionItem);
        clientTransaction.addTransactionItem(item);

        onClientTransactionItemScheduled(clientTransaction,
                false /* shouldDispatchImmediately */);
        onClientTransactionItemScheduled(clientTransaction, false /* shouldDispatchImmediately */);
    }

    void scheduleTransactionAndLifecycleItems(@NonNull IApplicationThread client,
            @NonNull ClientTransactionItem transactionItem,
            @NonNull ActivityLifecycleItem lifecycleItem) throws RemoteException {
        scheduleTransactionAndLifecycleItems(client, transactionItem, lifecycleItem,
                false /* shouldDispatchImmediately */);
    /**
     * Schedules a transaction with the given items, delivery to client application.
     *
     * @throws RemoteException
     * @see ClientTransactionItem
     */
    void scheduleTransactionItems(@NonNull IApplicationThread client,
            @NonNull ClientTransactionItem... items) throws RemoteException {
        scheduleTransactionItems(client, false /* shouldDispatchImmediately */, items);
    }

    /**
     * Schedules a single transaction item with a lifecycle request, delivery to client application.
     * Schedules a transaction with the given items, delivery to client application.
     *
     * @param shouldDispatchImmediately whether or not to dispatch the transaction immediately. This
     *                                  should only be {@code true} when it is important to know the
@@ -133,15 +135,17 @@ class ClientLifecycleManager {
     * @throws RemoteException
     * @see ClientTransactionItem
     */
    void scheduleTransactionAndLifecycleItems(@NonNull IApplicationThread client,
            @NonNull ClientTransactionItem transactionItem,
            @NonNull ActivityLifecycleItem lifecycleItem,
            boolean shouldDispatchImmediately) throws RemoteException {
    void scheduleTransactionItems(@NonNull IApplicationThread client,
            boolean shouldDispatchImmediately,
            @NonNull ClientTransactionItem... items) throws RemoteException {
        // Wait until RootWindowContainer#performSurfacePlacementNoTrace to dispatch all pending
        // transactions at once.
        final ClientTransaction clientTransaction = getOrCreatePendingTransaction(client);
        clientTransaction.addTransactionItem(transactionItem);
        clientTransaction.addTransactionItem(lifecycleItem);

        final int size = items.length;
        for (int i = 0; i < size; i++) {
            clientTransaction.addTransactionItem(items[i]);
        }

        onClientTransactionItemScheduled(clientTransaction, shouldDispatchImmediately);
    }
+1 −1
Original line number Diff line number Diff line
@@ -197,7 +197,7 @@ public class ActivityRefresherTests extends WindowTestsBase {
                /* isForward */ false, /* shouldSendCompatFakeFocus */ false);

        verify(mActivity.mAtmService.getLifecycleManager(), times(refreshRequested ? 1 : 0))
                .scheduleTransactionAndLifecycleItems(mActivity.app.getThread(),
                .scheduleTransactionItems(mActivity.app.getThread(),
                        refreshCallbackItem, resumeActivityItem);
    }

Loading