summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/wm/ActivityRecord.java4
-rw-r--r--services/core/java/com/android/server/wm/ActivityRefresher.java2
-rw-r--r--services/core/java/com/android/server/wm/ActivityTaskSupervisor.java7
-rw-r--r--services/core/java/com/android/server/wm/ClientLifecycleManager.java42
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/ActivityRefresherTests.java2
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/CameraCompatFreeformPolicyTests.java2
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/ClientLifecycleManagerTests.java13
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/DisplayRotationCompatPolicyTests.java2
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/WindowProcessControllerTests.java1
9 files changed, 41 insertions, 34 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java
index 460de01a7d1d..78bf9104ae70 100644
--- a/services/core/java/com/android/server/wm/ActivityRecord.java
+++ b/services/core/java/com/android/server/wm/ActivityRecord.java
@@ -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
@@ -9628,7 +9628,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
diff --git a/services/core/java/com/android/server/wm/ActivityRefresher.java b/services/core/java/com/android/server/wm/ActivityRefresher.java
index 5243a1069bed..ed8b6890b2d3 100644
--- a/services/core/java/com/android/server/wm/ActivityRefresher.java
+++ b/services/core/java/com/android/server/wm/ActivityRefresher.java
@@ -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) {
diff --git a/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java b/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java
index 4f71719006f5..0cf8ac995741 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java
@@ -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
diff --git a/services/core/java/com/android/server/wm/ClientLifecycleManager.java b/services/core/java/com/android/server/wm/ClientLifecycleManager.java
index 0acc6610a218..d291d99f2a7a 100644
--- a/services/core/java/com/android/server/wm/ClientLifecycleManager.java
+++ b/services/core/java/com/android/server/wm/ClientLifecycleManager.java
@@ -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);
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityRefresherTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityRefresherTests.java
index cb17f35f64d7..63dafcd0b5a8 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityRefresherTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityRefresherTests.java
@@ -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);
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/CameraCompatFreeformPolicyTests.java b/services/tests/wmtests/src/com/android/server/wm/CameraCompatFreeformPolicyTests.java
index a07fd235d14f..e447565a55bd 100644
--- a/services/tests/wmtests/src/com/android/server/wm/CameraCompatFreeformPolicyTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/CameraCompatFreeformPolicyTests.java
@@ -453,7 +453,7 @@ public class CameraCompatFreeformPolicyTests extends WindowTestsBase {
/* isForward */ false, /* shouldSendCompatFakeFocus */ false);
verify(mActivity.mAtmService.getLifecycleManager(), times(refreshRequested ? 1 : 0))
- .scheduleTransactionAndLifecycleItems(mActivity.app.getThread(),
+ .scheduleTransactionItems(mActivity.app.getThread(),
refreshCallbackItem, resumeActivityItem);
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/ClientLifecycleManagerTests.java b/services/tests/wmtests/src/com/android/server/wm/ClientLifecycleManagerTests.java
index 3ddf8da18d16..02ad9dbfda8e 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ClientLifecycleManagerTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ClientLifecycleManagerTests.java
@@ -123,7 +123,7 @@ public class ClientLifecycleManagerTests extends SystemServiceTestsBase {
}
@Test
- public void testScheduleTransactionItemUnlocked() throws RemoteException {
+ public void testScheduleTransactionItemNow() throws RemoteException {
// Use non binder client to get non-recycled ClientTransaction.
mLifecycleManager.scheduleTransactionItemNow(mNonBinderClient, mTransactionItem);
@@ -133,12 +133,12 @@ public class ClientLifecycleManagerTests extends SystemServiceTestsBase {
}
@Test
- public void testScheduleTransactionAndLifecycleItems() throws RemoteException {
+ public void testScheduleTransactionItems() throws RemoteException {
spyOn(mWms.mWindowPlacerLocked);
doReturn(true).when(mWms.mWindowPlacerLocked).isTraversalScheduled();
// Use non binder client to get non-recycled ClientTransaction.
- mLifecycleManager.scheduleTransactionAndLifecycleItems(mNonBinderClient, mTransactionItem,
+ mLifecycleManager.scheduleTransactionItems(mNonBinderClient, mTransactionItem,
mLifecycleItem);
assertEquals(1, mLifecycleManager.mPendingTransactions.size());
@@ -155,14 +155,15 @@ public class ClientLifecycleManagerTests extends SystemServiceTestsBase {
}
@Test
- public void testScheduleTransactionAndLifecycleItems_shouldDispatchImmediately()
+ public void testScheduleTransactionItems_shouldDispatchImmediately()
throws RemoteException {
spyOn(mWms.mWindowPlacerLocked);
doReturn(true).when(mWms.mWindowPlacerLocked).isTraversalScheduled();
// Use non binder client to get non-recycled ClientTransaction.
- mLifecycleManager.scheduleTransactionAndLifecycleItems(mNonBinderClient, mTransactionItem,
- mLifecycleItem, true /* shouldDispatchImmediately */);
+ mLifecycleManager.scheduleTransactionItems(mNonBinderClient,
+ true /* shouldDispatchImmediately */,
+ mTransactionItem, mLifecycleItem);
verify(mLifecycleManager).scheduleTransaction(any());
assertTrue(mLifecycleManager.mPendingTransactions.isEmpty());
diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayRotationCompatPolicyTests.java b/services/tests/wmtests/src/com/android/server/wm/DisplayRotationCompatPolicyTests.java
index 35c9e3fb3aaf..9055353162a9 100644
--- a/services/tests/wmtests/src/com/android/server/wm/DisplayRotationCompatPolicyTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/DisplayRotationCompatPolicyTests.java
@@ -614,7 +614,7 @@ public final class DisplayRotationCompatPolicyTests extends WindowTestsBase {
/* isForward */ false, /* shouldSendCompatFakeFocus */ false);
verify(mActivity.mAtmService.getLifecycleManager(), times(refreshRequested ? 1 : 0))
- .scheduleTransactionAndLifecycleItems(mActivity.app.getThread(),
+ .scheduleTransactionItems(mActivity.app.getThread(),
refreshCallbackItem, resumeActivityItem);
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowProcessControllerTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowProcessControllerTests.java
index 9bad2ec2ca2a..1dfb20a41816 100644
--- a/services/tests/wmtests/src/com/android/server/wm/WindowProcessControllerTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/WindowProcessControllerTests.java
@@ -309,6 +309,7 @@ public class WindowProcessControllerTests extends WindowTestsBase {
newConfig.densityDpi += 100;
mWpc.onConfigurationChanged(newConfig);
verify(mClientLifecycleManager, never()).scheduleTransactionItem(eq(thread), any());
+ verify(mClientLifecycleManager, never()).scheduleTransactionItems(eq(thread), any());
verify(mClientLifecycleManager, never()).scheduleTransactionItemNow(eq(thread), any());
// Cached -> non-cached will send the previous deferred config immediately.