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

Commit d3ab190f authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Clean up bundleClientTransactionFlag (2/n)" into main

parents 619c3cde 736fe0fd
Loading
Loading
Loading
Loading
+3 −5
Original line number Diff line number Diff line
@@ -89,12 +89,10 @@ public class ClientTransaction implements Parcelable, ObjectPoolItem {
     * @param item A single message that can contain a client activity/window request/callback.
     */
    public void addTransactionItem(@NonNull ClientTransactionItem item) {
        if (Flags.bundleClientTransactionFlag()) {
        if (mTransactionItems == null) {
            mTransactionItems = new ArrayList<>();
        }
        mTransactionItems.add(item);
        }

        // TODO(b/324203798): cleanup after remove UnsupportedAppUsage
        // Populate even if mTransactionItems is set to support the UnsupportedAppUsage.
+2 −3
Original line number Diff line number Diff line
@@ -20,7 +20,6 @@ import static android.app.WindowConfiguration.areConfigurationsEqualForDisplay;
import static android.view.Display.INVALID_DISPLAY;

import static com.android.window.flags.Flags.activityWindowInfoFlag;
import static com.android.window.flags.Flags.bundleClientTransactionFlag;

import static java.util.Objects.requireNonNull;

@@ -196,7 +195,7 @@ public class ClientTransactionListenerController {

    /** Called before updating the Configuration of the given {@code context}. */
    public void onContextConfigurationPreChanged(@NonNull Context context) {
        if (!bundleClientTransactionFlag() || ActivityThread.isSystem()) {
        if (ActivityThread.isSystem()) {
            // Not enable for system server.
            return;
        }
@@ -212,7 +211,7 @@ public class ClientTransactionListenerController {

    /** Called after updating the Configuration of the given {@code context}. */
    public void onContextConfigurationPostChanged(@NonNull Context context) {
        if (!bundleClientTransactionFlag() || ActivityThread.isSystem()) {
        if (ActivityThread.isSystem()) {
            // Not enable for system server.
            return;
        }
+1 −1
Original line number Diff line number Diff line
@@ -952,7 +952,7 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks {
                // Schedule transaction.
                if (shouldDispatchLaunchActivityItemIndependently(r.info.packageName, r.getUid())) {
                    // LaunchActivityItem has @UnsupportedAppUsage usages.
                    // Guard the bundleClientTransactionFlag feature with targetSDK on Android 15+.
                    // Guard with targetSDK on Android 15+.
                    // To not bundle the transaction, dispatch the pending before schedule new
                    // transaction.
                    mService.getLifecycleManager().dispatchPendingTransaction(proc.getThread());
+14 −37
Original line number Diff line number Diff line
@@ -35,7 +35,6 @@ import android.util.ArrayMap;
import android.util.Slog;

import com.android.internal.annotations.VisibleForTesting;
import com.android.window.flags.Flags;

/**
 * Class that is able to combine multiple client lifecycle transition requests and/or callbacks,
@@ -72,9 +71,8 @@ class ClientLifecycleManager {
     * @throws RemoteException
     *
     * @see ClientTransaction
     * @deprecated use {@link #scheduleTransactionItem(IApplicationThread, ClientTransactionItem)}.
     */
    @Deprecated
    @VisibleForTesting
    void scheduleTransaction(@NonNull ClientTransaction transaction) throws RemoteException {
        final IApplicationThread client = transaction.getClient();
        try {
@@ -114,22 +112,13 @@ class ClientLifecycleManager {
     */
    void scheduleTransactionItem(@NonNull IApplicationThread client,
            @NonNull ClientTransactionItem transactionItem) throws RemoteException {
        // The behavior is different depending on the flag.
        // When flag is on, we wait until RootWindowContainer#performSurfacePlacementNoTrace to
        // dispatch all pending transactions at once.
        if (Flags.bundleClientTransactionFlag()) {
        // Wait until RootWindowContainer#performSurfacePlacementNoTrace to dispatch all pending
        // transactions at once.
        final ClientTransaction clientTransaction = getOrCreatePendingTransaction(client);
        clientTransaction.addTransactionItem(transactionItem);

        onClientTransactionItemScheduled(clientTransaction,
                false /* shouldDispatchImmediately */);
        } else {
            // TODO(b/260873529): cleanup after launch.
            final ClientTransaction clientTransaction = ClientTransaction.obtain(client);
            clientTransaction.addTransactionItem(transactionItem);

            scheduleTransaction(clientTransaction);
        }
    }

    void scheduleTransactionAndLifecycleItems(@NonNull IApplicationThread client,
@@ -156,27 +145,18 @@ class ClientLifecycleManager {
            @NonNull ClientTransactionItem transactionItem,
            @NonNull ActivityLifecycleItem lifecycleItem,
            boolean shouldDispatchImmediately) throws RemoteException {
        // The behavior is different depending on the flag.
        // When flag is on, we wait until RootWindowContainer#performSurfacePlacementNoTrace to
        // dispatch all pending transactions at once.
        if (Flags.bundleClientTransactionFlag()) {
        // Wait until RootWindowContainer#performSurfacePlacementNoTrace to dispatch all pending
        // transactions at once.
        final ClientTransaction clientTransaction = getOrCreatePendingTransaction(client);
        clientTransaction.addTransactionItem(transactionItem);
        clientTransaction.addTransactionItem(lifecycleItem);

        onClientTransactionItemScheduled(clientTransaction, shouldDispatchImmediately);
        } else {
            // TODO(b/260873529): cleanup after launch.
            final ClientTransaction clientTransaction = ClientTransaction.obtain(client);
            clientTransaction.addTransactionItem(transactionItem);
            clientTransaction.addTransactionItem(lifecycleItem);
            scheduleTransaction(clientTransaction);
        }
    }

    /** Executes all the pending transactions. */
    void dispatchPendingTransactions() {
        if (!Flags.bundleClientTransactionFlag() || mPendingTransactions.isEmpty()) {
        if (mPendingTransactions.isEmpty()) {
            return;
        }
        Trace.traceBegin(Trace.TRACE_TAG_WINDOW_MANAGER, "clientTransactionsDispatched");
@@ -196,9 +176,6 @@ class ClientLifecycleManager {

    /** Executes the pending transaction for the given client process. */
    void dispatchPendingTransaction(@NonNull IApplicationThread client) {
        if (!Flags.bundleClientTransactionFlag()) {
            return;
        }
        final ClientTransaction pendingTransaction = mPendingTransactions.remove(client.asBinder());
        if (pendingTransaction != null) {
            try {
+5 −12
Original line number Diff line number Diff line
@@ -152,7 +152,6 @@ import com.android.server.pm.UserManagerInternal;
import com.android.server.policy.PermissionPolicyInternal;
import com.android.server.policy.WindowManagerPolicy;
import com.android.server.utils.Slogf;
import com.android.window.flags.Flags;

import java.io.FileDescriptor;
import java.io.PrintWriter;
@@ -789,13 +788,12 @@ class RootWindowContainer extends WindowContainer<DisplayContent>
            Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER);
        }

        if (Flags.bundleClientTransactionFlag()) {
        // mWmService.mResizingWindows is populated in #applySurfaceChangesTransaction()
        handleResizingWindows();
        clearFrameChangingWindows();

        // Called after #handleResizingWindows to include WindowStateResizeItem if any.
        mWmService.mAtmService.getLifecycleManager().dispatchPendingTransactions();
        }

        // Send any pending task-info changes that were queued-up during a layout deferment
        mWmService.mAtmService.mTaskOrganizerController.dispatchPendingEvents();
@@ -839,11 +837,6 @@ class RootWindowContainer extends WindowContainer<DisplayContent>
            }
        }

        if (!Flags.bundleClientTransactionFlag()) {
            handleResizingWindows();
        }
        clearFrameChangingWindows();

        if (mWmService.mDisplayFrozen) {
            ProtoLog.v(WM_DEBUG_ORIENTATION,
                    "With display frozen, orientationChangeComplete=%b",
Loading