Loading core/java/android/app/servertransaction/ClientTransaction.java +3 −5 Original line number Diff line number Diff line Loading @@ -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. Loading core/java/android/app/servertransaction/ClientTransactionListenerController.java +2 −3 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; } Loading @@ -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; } Loading services/core/java/com/android/server/wm/ActivityTaskSupervisor.java +1 −1 Original line number Diff line number Diff line Loading @@ -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()); Loading services/core/java/com/android/server/wm/ClientLifecycleManager.java +14 −37 Original line number Diff line number Diff line Loading @@ -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, Loading Loading @@ -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 { Loading Loading @@ -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, Loading @@ -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"); Loading @@ -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 { Loading services/core/java/com/android/server/wm/RootWindowContainer.java +5 −12 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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(); Loading Loading @@ -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 Loading
core/java/android/app/servertransaction/ClientTransaction.java +3 −5 Original line number Diff line number Diff line Loading @@ -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. Loading
core/java/android/app/servertransaction/ClientTransactionListenerController.java +2 −3 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; } Loading @@ -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; } Loading
services/core/java/com/android/server/wm/ActivityTaskSupervisor.java +1 −1 Original line number Diff line number Diff line Loading @@ -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()); Loading
services/core/java/com/android/server/wm/ClientLifecycleManager.java +14 −37 Original line number Diff line number Diff line Loading @@ -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, Loading Loading @@ -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 { Loading Loading @@ -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, Loading @@ -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"); Loading @@ -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 { Loading
services/core/java/com/android/server/wm/RootWindowContainer.java +5 −12 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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(); Loading Loading @@ -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