Loading core/java/android/app/servertransaction/ClientTransaction.java +34 −139 Original line number Diff line number Diff line Loading @@ -52,8 +52,8 @@ public class ClientTransaction implements Parcelable, ObjectPoolItem { * List of transaction items that should be executed in order. Including both * {@link ActivityLifecycleItem} and other {@link ClientTransactionItem}. */ @Nullable private List<ClientTransactionItem> mTransactionItems; @NonNull private final List<ClientTransactionItem> mTransactionItems = new ArrayList<>(); /** @deprecated use {@link #getTransactionItems} instead. */ @Nullable Loading Loading @@ -89,9 +89,6 @@ 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 (mTransactionItems == null) { mTransactionItems = new ArrayList<>(); } mTransactionItems.add(item); // TODO(b/324203798): cleanup after remove UnsupportedAppUsage Loading @@ -105,9 +102,8 @@ public class ClientTransaction implements Parcelable, ObjectPoolItem { /** * Gets the list of client window requests/callbacks. * TODO(b/260873529): must be non null after remove the deprecated methods. */ @Nullable @NonNull public List<ClientTransactionItem> getTransactionItems() { return mTransactionItems; } Loading Loading @@ -195,23 +191,10 @@ public class ClientTransaction implements Parcelable, ObjectPoolItem { * requested by transaction items. */ public void preExecute(@NonNull ClientTransactionHandler clientTransactionHandler) { if (mTransactionItems != null) { final int size = mTransactionItems.size(); for (int i = 0; i < size; ++i) { mTransactionItems.get(i).preExecute(clientTransactionHandler); } return; } if (mActivityCallbacks != null) { final int size = mActivityCallbacks.size(); for (int i = 0; i < size; ++i) { mActivityCallbacks.get(i).preExecute(clientTransactionHandler); } } if (mLifecycleStateRequest != null) { mLifecycleStateRequest.preExecute(clientTransactionHandler); } } /** Loading Loading @@ -250,29 +233,13 @@ public class ClientTransaction implements Parcelable, ObjectPoolItem { if (Flags.disableObjectPool()) { return; } if (mTransactionItems != null) { int size = mTransactionItems.size(); for (int i = 0; i < size; i++) { mTransactionItems.get(i).recycle(); } mTransactionItems = null; mTransactionItems.clear(); mActivityCallbacks = null; mLifecycleStateRequest = null; } else { // Only needed when mTransactionItems is null, otherwise these will have the same // reference as mTransactionItems to support UnsupportedAppUsage. if (mActivityCallbacks != null) { int size = mActivityCallbacks.size(); for (int i = 0; i < size; i++) { mActivityCallbacks.get(i).recycle(); } mActivityCallbacks = null; } if (mLifecycleStateRequest != null) { mLifecycleStateRequest.recycle(); mLifecycleStateRequest = null; } } mClient = null; mActivityToken = null; ObjectPool.recycle(this); Loading @@ -284,28 +251,11 @@ public class ClientTransaction implements Parcelable, ObjectPoolItem { @SuppressWarnings("AndroidFrameworkEfficientParcelable") // Item class is not final. @Override public void writeToParcel(@NonNull Parcel dest, int flags) { final boolean writeTransactionItems = mTransactionItems != null; dest.writeBoolean(writeTransactionItems); if (writeTransactionItems) { dest.writeParcelableList(mTransactionItems, flags); } else { // TODO(b/324203798): cleanup after remove UnsupportedAppUsage // Only write mLifecycleStateRequest and mActivityCallbacks when mTransactionItems is // null dest.writeParcelable(mLifecycleStateRequest, flags); final boolean writeActivityCallbacks = mActivityCallbacks != null; dest.writeBoolean(writeActivityCallbacks); if (writeActivityCallbacks) { dest.writeParcelableList(mActivityCallbacks, flags); } } } /** Read from Parcel. */ private ClientTransaction(@NonNull Parcel in) { final boolean readTransactionItems = in.readBoolean(); if (readTransactionItems) { mTransactionItems = new ArrayList<>(); in.readParcelableList(mTransactionItems, getClass().getClassLoader(), ClientTransactionItem.class); Loading @@ -321,25 +271,6 @@ public class ClientTransaction implements Parcelable, ObjectPoolItem { addCallback(item); } } } else { // TODO(b/324203798): cleanup after remove UnsupportedAppUsage // Only read mLifecycleStateRequest and mActivityCallbacks when mTransactionItems is // null mLifecycleStateRequest = in.readParcelable(getClass().getClassLoader(), ActivityLifecycleItem.class); setActivityTokenIfNotSet(mLifecycleStateRequest); final boolean readActivityCallbacks = in.readBoolean(); if (readActivityCallbacks) { mActivityCallbacks = new ArrayList<>(); in.readParcelableList(mActivityCallbacks, getClass().getClassLoader(), ClientTransactionItem.class); final int size = mActivityCallbacks.size(); for (int i = 0; mActivityToken == null && i < size; i++) { final ClientTransactionItem item = mActivityCallbacks.get(i); setActivityTokenIfNotSet(item); } } } } public static final @NonNull Creator<ClientTransaction> CREATOR = new Creator<>() { Loading Loading @@ -388,25 +319,12 @@ public class ClientTransaction implements Parcelable, ObjectPoolItem { public String toString() { final StringBuilder sb = new StringBuilder(); sb.append("ClientTransaction{"); if (mTransactionItems != null) { // #addTransactionItem sb.append("\n transactionItems=["); final int size = mTransactionItems.size(); for (int i = 0; i < size; i++) { sb.append("\n ").append(mTransactionItems.get(i)); } sb.append("\n ]"); } else { // #addCallback sb.append("\n callbacks=["); final int size = mActivityCallbacks != null ? mActivityCallbacks.size() : 0; for (int i = 0; i < size; i++) { sb.append("\n ").append(mActivityCallbacks.get(i)); } sb.append("\n ]"); // #setLifecycleStateRequest sb.append("\n stateRequest=").append(mLifecycleStateRequest); } sb.append("\n}"); return sb.toString(); } Loading @@ -415,7 +333,6 @@ public class ClientTransaction implements Parcelable, ObjectPoolItem { void dump(@NonNull String prefix, @NonNull PrintWriter pw, @NonNull ClientTransactionHandler transactionHandler) { pw.append(prefix).println("ClientTransaction{"); if (mTransactionItems != null) { pw.append(prefix).print(" transactionItems=["); final String itemPrefix = prefix + " "; final int size = mTransactionItems.size(); Loading @@ -429,27 +346,5 @@ public class ClientTransaction implements Parcelable, ObjectPoolItem { pw.println("]"); } pw.append(prefix).println("}"); return; } pw.append(prefix).print(" callbacks=["); final String itemPrefix = prefix + " "; final int size = mActivityCallbacks != null ? mActivityCallbacks.size() : 0; if (size > 0) { pw.println(); for (int i = 0; i < size; i++) { mActivityCallbacks.get(i).dump(itemPrefix, pw, transactionHandler); } pw.append(prefix).println(" ]"); } else { pw.println("]"); } pw.append(prefix).println(" stateRequest="); if (mLifecycleStateRequest != null) { mLifecycleStateRequest.dump(itemPrefix, pw, transactionHandler); } else { pw.append(itemPrefix).println("null"); } pw.append(prefix).println("}"); } } core/java/android/app/servertransaction/RefreshCallbackItem.java +2 −2 Original line number Diff line number Diff line Loading @@ -29,8 +29,8 @@ import android.os.Parcel; /** * Callback that allows to {@link TransactionExecutor#cycleToPath} to {@link ON_PAUSE} or * {@link ON_STOP} in {@link TransactionExecutor#executeCallbacks} for activity "refresh" flow * that goes through "paused -> resumed" or "stopped -> resumed" cycle. * {@link ON_STOP} in {@link TransactionExecutor#executeTransactionItems} for activity "refresh" * flow that goes through "paused -> resumed" or "stopped -> resumed" cycle. * * <p>This is used in combination with {@link com.android.server.wm.DisplayRotationCompatPolicy} * for camera compatibility treatment that handles orientation mismatch between camera buffers and Loading core/java/android/app/servertransaction/TransactionExecutor.java +1 −58 Original line number Diff line number Diff line Loading @@ -26,7 +26,6 @@ import static android.app.servertransaction.ActivityLifecycleItem.ON_STOP; import static android.app.servertransaction.ActivityLifecycleItem.UNDEFINED; import static android.app.servertransaction.TransactionExecutorHelper.getShortActivityName; import static android.app.servertransaction.TransactionExecutorHelper.getStateName; import static android.app.servertransaction.TransactionExecutorHelper.lastCallbackRequestingState; import static android.app.servertransaction.TransactionExecutorHelper.shouldExcludeLastLifecycleState; import static android.app.servertransaction.TransactionExecutorHelper.tId; import static android.app.servertransaction.TransactionExecutorHelper.transactionToString; Loading Loading @@ -77,13 +76,7 @@ public class TransactionExecutor { Trace.traceBegin(Trace.TRACE_TAG_WINDOW_MANAGER, "clientTransactionExecuted"); try { if (transaction.getTransactionItems() != null) { executeTransactionItems(transaction); } else { // TODO(b/260873529): cleanup after launch. executeCallbacks(transaction); executeLifecycleState(transaction); } } catch (Exception e) { Slog.e(TAG, "Failed to execute the transaction: " + transactionToString(transaction, mTransactionHandler)); Loading Loading @@ -112,41 +105,6 @@ public class TransactionExecutor { } } /** * Cycle through all states requested by callbacks and execute them at proper times. * @deprecated use {@link #executeTransactionItems} instead. */ @VisibleForTesting @Deprecated public void executeCallbacks(@NonNull ClientTransaction transaction) { final List<ClientTransactionItem> callbacks = transaction.getCallbacks(); if (callbacks == null || callbacks.isEmpty()) { // No callbacks to execute, return early. return; } if (DEBUG_RESOLVER) Slog.d(TAG, tId(transaction) + "Resolving callbacks in transaction"); // In case when post-execution state of the last callback matches the final state requested // for the activity in this transaction, we won't do the last transition here and do it when // moving to final state instead (because it may contain additional parameters from server). final ActivityLifecycleItem finalStateRequest = transaction.getLifecycleStateRequest(); final int finalState = finalStateRequest != null ? finalStateRequest.getTargetState() : UNDEFINED; // Index of the last callback that requests some post-execution state. final int lastCallbackRequestingState = lastCallbackRequestingState(transaction); final int size = callbacks.size(); for (int i = 0; i < size; ++i) { final ClientTransactionItem item = callbacks.get(i); // Skip the very last transition and perform it by explicit state request instead. final int postExecutionState = item.getPostExecutionState(); final boolean shouldExcludeLastLifecycleState = postExecutionState != UNDEFINED && i == lastCallbackRequestingState && finalState == postExecutionState; executeNonLifecycleItem(transaction, item, shouldExcludeLastLifecycleState); } } private void executeNonLifecycleItem(@NonNull ClientTransaction transaction, @NonNull ClientTransactionItem item, boolean shouldExcludeLastLifecycleState) { final IBinder token = item.getActivityToken(); Loading Loading @@ -184,21 +142,6 @@ public class TransactionExecutor { } } /** * Transition to the final state if requested by the transaction. * @deprecated use {@link #executeTransactionItems} instead */ @Deprecated private void executeLifecycleState(@NonNull ClientTransaction transaction) { final ActivityLifecycleItem lifecycleItem = transaction.getLifecycleStateRequest(); if (lifecycleItem == null) { // No lifecycle request, return early. return; } executeLifecycleItem(transaction, lifecycleItem); } private void executeLifecycleItem(@NonNull ClientTransaction transaction, @NonNull ActivityLifecycleItem lifecycleItem) { final IBinder token = lifecycleItem.getActivityToken(); Loading core/java/android/app/servertransaction/TransactionExecutorHelper.java +0 −23 Original line number Diff line number Diff line Loading @@ -225,29 +225,6 @@ public class TransactionExecutorHelper { return false; } /** * Return the index of the last callback that requests the state in which activity will be after * execution. If there is a group of callbacks in the end that requests the same specific state * or doesn't request any - we will find the first one from such group. * * E.g. ActivityResult requests RESUMED post-execution state, Configuration does not request any * specific state. If there is a sequence * Configuration - ActivityResult - Configuration - ActivityResult * index 1 will be returned, because ActivityResult request on position 1 will be the last * request that moves activity to the RESUMED state where it will eventually end. * @deprecated to be removed with {@link TransactionExecutor#executeCallbacks}. */ @Deprecated static int lastCallbackRequestingState(@NonNull ClientTransaction transaction) { final List<ClientTransactionItem> callbacks = transaction.getCallbacks(); if (callbacks == null || callbacks.isEmpty() || transaction.getLifecycleStateRequest() == null) { return -1; } return lastCallbackRequestingStateIndex(callbacks, 0, callbacks.size() - 1, transaction.getLifecycleStateRequest().getActivityToken()); } /** * Returns the index of the last callback between the start index and last index that requests * the state for the given activity token in which that activity will be after execution. Loading services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java +3 −9 Original line number Diff line number Diff line Loading @@ -263,18 +263,12 @@ public class ActivityRecordTests extends WindowTestsBase { doAnswer((InvocationOnMock invocationOnMock) -> { final ClientTransaction transaction = invocationOnMock.getArgument(0); final List<ClientTransactionItem> items = transaction.getTransactionItems(); if (items != null) { for (ClientTransactionItem item : items) { if (item instanceof PauseActivityItem) { pauseFound.value = true; break; } } } else { if (transaction.getLifecycleStateRequest() instanceof PauseActivityItem) { pauseFound.value = true; } } return null; }).when(mClientLifecycleManager).scheduleTransaction(any()); Loading Loading
core/java/android/app/servertransaction/ClientTransaction.java +34 −139 Original line number Diff line number Diff line Loading @@ -52,8 +52,8 @@ public class ClientTransaction implements Parcelable, ObjectPoolItem { * List of transaction items that should be executed in order. Including both * {@link ActivityLifecycleItem} and other {@link ClientTransactionItem}. */ @Nullable private List<ClientTransactionItem> mTransactionItems; @NonNull private final List<ClientTransactionItem> mTransactionItems = new ArrayList<>(); /** @deprecated use {@link #getTransactionItems} instead. */ @Nullable Loading Loading @@ -89,9 +89,6 @@ 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 (mTransactionItems == null) { mTransactionItems = new ArrayList<>(); } mTransactionItems.add(item); // TODO(b/324203798): cleanup after remove UnsupportedAppUsage Loading @@ -105,9 +102,8 @@ public class ClientTransaction implements Parcelable, ObjectPoolItem { /** * Gets the list of client window requests/callbacks. * TODO(b/260873529): must be non null after remove the deprecated methods. */ @Nullable @NonNull public List<ClientTransactionItem> getTransactionItems() { return mTransactionItems; } Loading Loading @@ -195,23 +191,10 @@ public class ClientTransaction implements Parcelable, ObjectPoolItem { * requested by transaction items. */ public void preExecute(@NonNull ClientTransactionHandler clientTransactionHandler) { if (mTransactionItems != null) { final int size = mTransactionItems.size(); for (int i = 0; i < size; ++i) { mTransactionItems.get(i).preExecute(clientTransactionHandler); } return; } if (mActivityCallbacks != null) { final int size = mActivityCallbacks.size(); for (int i = 0; i < size; ++i) { mActivityCallbacks.get(i).preExecute(clientTransactionHandler); } } if (mLifecycleStateRequest != null) { mLifecycleStateRequest.preExecute(clientTransactionHandler); } } /** Loading Loading @@ -250,29 +233,13 @@ public class ClientTransaction implements Parcelable, ObjectPoolItem { if (Flags.disableObjectPool()) { return; } if (mTransactionItems != null) { int size = mTransactionItems.size(); for (int i = 0; i < size; i++) { mTransactionItems.get(i).recycle(); } mTransactionItems = null; mTransactionItems.clear(); mActivityCallbacks = null; mLifecycleStateRequest = null; } else { // Only needed when mTransactionItems is null, otherwise these will have the same // reference as mTransactionItems to support UnsupportedAppUsage. if (mActivityCallbacks != null) { int size = mActivityCallbacks.size(); for (int i = 0; i < size; i++) { mActivityCallbacks.get(i).recycle(); } mActivityCallbacks = null; } if (mLifecycleStateRequest != null) { mLifecycleStateRequest.recycle(); mLifecycleStateRequest = null; } } mClient = null; mActivityToken = null; ObjectPool.recycle(this); Loading @@ -284,28 +251,11 @@ public class ClientTransaction implements Parcelable, ObjectPoolItem { @SuppressWarnings("AndroidFrameworkEfficientParcelable") // Item class is not final. @Override public void writeToParcel(@NonNull Parcel dest, int flags) { final boolean writeTransactionItems = mTransactionItems != null; dest.writeBoolean(writeTransactionItems); if (writeTransactionItems) { dest.writeParcelableList(mTransactionItems, flags); } else { // TODO(b/324203798): cleanup after remove UnsupportedAppUsage // Only write mLifecycleStateRequest and mActivityCallbacks when mTransactionItems is // null dest.writeParcelable(mLifecycleStateRequest, flags); final boolean writeActivityCallbacks = mActivityCallbacks != null; dest.writeBoolean(writeActivityCallbacks); if (writeActivityCallbacks) { dest.writeParcelableList(mActivityCallbacks, flags); } } } /** Read from Parcel. */ private ClientTransaction(@NonNull Parcel in) { final boolean readTransactionItems = in.readBoolean(); if (readTransactionItems) { mTransactionItems = new ArrayList<>(); in.readParcelableList(mTransactionItems, getClass().getClassLoader(), ClientTransactionItem.class); Loading @@ -321,25 +271,6 @@ public class ClientTransaction implements Parcelable, ObjectPoolItem { addCallback(item); } } } else { // TODO(b/324203798): cleanup after remove UnsupportedAppUsage // Only read mLifecycleStateRequest and mActivityCallbacks when mTransactionItems is // null mLifecycleStateRequest = in.readParcelable(getClass().getClassLoader(), ActivityLifecycleItem.class); setActivityTokenIfNotSet(mLifecycleStateRequest); final boolean readActivityCallbacks = in.readBoolean(); if (readActivityCallbacks) { mActivityCallbacks = new ArrayList<>(); in.readParcelableList(mActivityCallbacks, getClass().getClassLoader(), ClientTransactionItem.class); final int size = mActivityCallbacks.size(); for (int i = 0; mActivityToken == null && i < size; i++) { final ClientTransactionItem item = mActivityCallbacks.get(i); setActivityTokenIfNotSet(item); } } } } public static final @NonNull Creator<ClientTransaction> CREATOR = new Creator<>() { Loading Loading @@ -388,25 +319,12 @@ public class ClientTransaction implements Parcelable, ObjectPoolItem { public String toString() { final StringBuilder sb = new StringBuilder(); sb.append("ClientTransaction{"); if (mTransactionItems != null) { // #addTransactionItem sb.append("\n transactionItems=["); final int size = mTransactionItems.size(); for (int i = 0; i < size; i++) { sb.append("\n ").append(mTransactionItems.get(i)); } sb.append("\n ]"); } else { // #addCallback sb.append("\n callbacks=["); final int size = mActivityCallbacks != null ? mActivityCallbacks.size() : 0; for (int i = 0; i < size; i++) { sb.append("\n ").append(mActivityCallbacks.get(i)); } sb.append("\n ]"); // #setLifecycleStateRequest sb.append("\n stateRequest=").append(mLifecycleStateRequest); } sb.append("\n}"); return sb.toString(); } Loading @@ -415,7 +333,6 @@ public class ClientTransaction implements Parcelable, ObjectPoolItem { void dump(@NonNull String prefix, @NonNull PrintWriter pw, @NonNull ClientTransactionHandler transactionHandler) { pw.append(prefix).println("ClientTransaction{"); if (mTransactionItems != null) { pw.append(prefix).print(" transactionItems=["); final String itemPrefix = prefix + " "; final int size = mTransactionItems.size(); Loading @@ -429,27 +346,5 @@ public class ClientTransaction implements Parcelable, ObjectPoolItem { pw.println("]"); } pw.append(prefix).println("}"); return; } pw.append(prefix).print(" callbacks=["); final String itemPrefix = prefix + " "; final int size = mActivityCallbacks != null ? mActivityCallbacks.size() : 0; if (size > 0) { pw.println(); for (int i = 0; i < size; i++) { mActivityCallbacks.get(i).dump(itemPrefix, pw, transactionHandler); } pw.append(prefix).println(" ]"); } else { pw.println("]"); } pw.append(prefix).println(" stateRequest="); if (mLifecycleStateRequest != null) { mLifecycleStateRequest.dump(itemPrefix, pw, transactionHandler); } else { pw.append(itemPrefix).println("null"); } pw.append(prefix).println("}"); } }
core/java/android/app/servertransaction/RefreshCallbackItem.java +2 −2 Original line number Diff line number Diff line Loading @@ -29,8 +29,8 @@ import android.os.Parcel; /** * Callback that allows to {@link TransactionExecutor#cycleToPath} to {@link ON_PAUSE} or * {@link ON_STOP} in {@link TransactionExecutor#executeCallbacks} for activity "refresh" flow * that goes through "paused -> resumed" or "stopped -> resumed" cycle. * {@link ON_STOP} in {@link TransactionExecutor#executeTransactionItems} for activity "refresh" * flow that goes through "paused -> resumed" or "stopped -> resumed" cycle. * * <p>This is used in combination with {@link com.android.server.wm.DisplayRotationCompatPolicy} * for camera compatibility treatment that handles orientation mismatch between camera buffers and Loading
core/java/android/app/servertransaction/TransactionExecutor.java +1 −58 Original line number Diff line number Diff line Loading @@ -26,7 +26,6 @@ import static android.app.servertransaction.ActivityLifecycleItem.ON_STOP; import static android.app.servertransaction.ActivityLifecycleItem.UNDEFINED; import static android.app.servertransaction.TransactionExecutorHelper.getShortActivityName; import static android.app.servertransaction.TransactionExecutorHelper.getStateName; import static android.app.servertransaction.TransactionExecutorHelper.lastCallbackRequestingState; import static android.app.servertransaction.TransactionExecutorHelper.shouldExcludeLastLifecycleState; import static android.app.servertransaction.TransactionExecutorHelper.tId; import static android.app.servertransaction.TransactionExecutorHelper.transactionToString; Loading Loading @@ -77,13 +76,7 @@ public class TransactionExecutor { Trace.traceBegin(Trace.TRACE_TAG_WINDOW_MANAGER, "clientTransactionExecuted"); try { if (transaction.getTransactionItems() != null) { executeTransactionItems(transaction); } else { // TODO(b/260873529): cleanup after launch. executeCallbacks(transaction); executeLifecycleState(transaction); } } catch (Exception e) { Slog.e(TAG, "Failed to execute the transaction: " + transactionToString(transaction, mTransactionHandler)); Loading Loading @@ -112,41 +105,6 @@ public class TransactionExecutor { } } /** * Cycle through all states requested by callbacks and execute them at proper times. * @deprecated use {@link #executeTransactionItems} instead. */ @VisibleForTesting @Deprecated public void executeCallbacks(@NonNull ClientTransaction transaction) { final List<ClientTransactionItem> callbacks = transaction.getCallbacks(); if (callbacks == null || callbacks.isEmpty()) { // No callbacks to execute, return early. return; } if (DEBUG_RESOLVER) Slog.d(TAG, tId(transaction) + "Resolving callbacks in transaction"); // In case when post-execution state of the last callback matches the final state requested // for the activity in this transaction, we won't do the last transition here and do it when // moving to final state instead (because it may contain additional parameters from server). final ActivityLifecycleItem finalStateRequest = transaction.getLifecycleStateRequest(); final int finalState = finalStateRequest != null ? finalStateRequest.getTargetState() : UNDEFINED; // Index of the last callback that requests some post-execution state. final int lastCallbackRequestingState = lastCallbackRequestingState(transaction); final int size = callbacks.size(); for (int i = 0; i < size; ++i) { final ClientTransactionItem item = callbacks.get(i); // Skip the very last transition and perform it by explicit state request instead. final int postExecutionState = item.getPostExecutionState(); final boolean shouldExcludeLastLifecycleState = postExecutionState != UNDEFINED && i == lastCallbackRequestingState && finalState == postExecutionState; executeNonLifecycleItem(transaction, item, shouldExcludeLastLifecycleState); } } private void executeNonLifecycleItem(@NonNull ClientTransaction transaction, @NonNull ClientTransactionItem item, boolean shouldExcludeLastLifecycleState) { final IBinder token = item.getActivityToken(); Loading Loading @@ -184,21 +142,6 @@ public class TransactionExecutor { } } /** * Transition to the final state if requested by the transaction. * @deprecated use {@link #executeTransactionItems} instead */ @Deprecated private void executeLifecycleState(@NonNull ClientTransaction transaction) { final ActivityLifecycleItem lifecycleItem = transaction.getLifecycleStateRequest(); if (lifecycleItem == null) { // No lifecycle request, return early. return; } executeLifecycleItem(transaction, lifecycleItem); } private void executeLifecycleItem(@NonNull ClientTransaction transaction, @NonNull ActivityLifecycleItem lifecycleItem) { final IBinder token = lifecycleItem.getActivityToken(); Loading
core/java/android/app/servertransaction/TransactionExecutorHelper.java +0 −23 Original line number Diff line number Diff line Loading @@ -225,29 +225,6 @@ public class TransactionExecutorHelper { return false; } /** * Return the index of the last callback that requests the state in which activity will be after * execution. If there is a group of callbacks in the end that requests the same specific state * or doesn't request any - we will find the first one from such group. * * E.g. ActivityResult requests RESUMED post-execution state, Configuration does not request any * specific state. If there is a sequence * Configuration - ActivityResult - Configuration - ActivityResult * index 1 will be returned, because ActivityResult request on position 1 will be the last * request that moves activity to the RESUMED state where it will eventually end. * @deprecated to be removed with {@link TransactionExecutor#executeCallbacks}. */ @Deprecated static int lastCallbackRequestingState(@NonNull ClientTransaction transaction) { final List<ClientTransactionItem> callbacks = transaction.getCallbacks(); if (callbacks == null || callbacks.isEmpty() || transaction.getLifecycleStateRequest() == null) { return -1; } return lastCallbackRequestingStateIndex(callbacks, 0, callbacks.size() - 1, transaction.getLifecycleStateRequest().getActivityToken()); } /** * Returns the index of the last callback between the start index and last index that requests * the state for the given activity token in which that activity will be after execution. Loading
services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java +3 −9 Original line number Diff line number Diff line Loading @@ -263,18 +263,12 @@ public class ActivityRecordTests extends WindowTestsBase { doAnswer((InvocationOnMock invocationOnMock) -> { final ClientTransaction transaction = invocationOnMock.getArgument(0); final List<ClientTransactionItem> items = transaction.getTransactionItems(); if (items != null) { for (ClientTransactionItem item : items) { if (item instanceof PauseActivityItem) { pauseFound.value = true; break; } } } else { if (transaction.getLifecycleStateRequest() instanceof PauseActivityItem) { pauseFound.value = true; } } return null; }).when(mClientLifecycleManager).scheduleTransaction(any()); Loading