summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/app/servertransaction/MoveToDisplayItem.java58
-rw-r--r--core/tests/coretests/src/android/app/servertransaction/ObjectPoolTests.java7
-rw-r--r--core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java6
-rw-r--r--services/core/java/com/android/server/wm/ActivityRecord.java5
4 files changed, 28 insertions, 48 deletions
diff --git a/core/java/android/app/servertransaction/MoveToDisplayItem.java b/core/java/android/app/servertransaction/MoveToDisplayItem.java
index 8706edd26406..1aa563aa6363 100644
--- a/core/java/android/app/servertransaction/MoveToDisplayItem.java
+++ b/core/java/android/app/servertransaction/MoveToDisplayItem.java
@@ -18,6 +18,8 @@ package android.app.servertransaction;
import static android.os.Trace.TRACE_TAG_ACTIVITY_MANAGER;
+import static java.util.Objects.requireNonNull;
+
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.ActivityThread.ActivityClientRecord;
@@ -33,13 +35,26 @@ import java.util.Objects;
/**
* Activity move to a different display message.
+ *
* @hide
*/
public class MoveToDisplayItem extends ActivityTransactionItem {
- private int mTargetDisplayId;
- private Configuration mConfiguration;
- private ActivityWindowInfo mActivityWindowInfo;
+ private final int mTargetDisplayId;
+
+ @NonNull
+ private final Configuration mConfiguration;
+
+ @NonNull
+ private final ActivityWindowInfo mActivityWindowInfo;
+
+ public MoveToDisplayItem(@NonNull IBinder activityToken, int targetDisplayId,
+ @NonNull Configuration configuration, @NonNull ActivityWindowInfo activityWindowInfo) {
+ super(activityToken);
+ mTargetDisplayId = targetDisplayId;
+ mConfiguration = new Configuration(configuration);
+ mActivityWindowInfo = new ActivityWindowInfo(activityWindowInfo);
+ }
@Override
public void preExecute(@NonNull ClientTransactionHandler client) {
@@ -58,38 +73,9 @@ public class MoveToDisplayItem extends ActivityTransactionItem {
Trace.traceEnd(TRACE_TAG_ACTIVITY_MANAGER);
}
- // ObjectPoolItem implementation
-
- private MoveToDisplayItem() {}
-
- /** Obtain an instance initialized with provided params. */
- @NonNull
- public static MoveToDisplayItem obtain(@NonNull IBinder activityToken, int targetDisplayId,
- @NonNull Configuration configuration, @NonNull ActivityWindowInfo activityWindowInfo) {
- MoveToDisplayItem instance = ObjectPool.obtain(MoveToDisplayItem.class);
- if (instance == null) {
- instance = new MoveToDisplayItem();
- }
- instance.setActivityToken(activityToken);
- instance.mTargetDisplayId = targetDisplayId;
- instance.mConfiguration = new Configuration(configuration);
- instance.mActivityWindowInfo = new ActivityWindowInfo(activityWindowInfo);
-
- return instance;
- }
-
- @Override
- public void recycle() {
- super.recycle();
- mTargetDisplayId = 0;
- mConfiguration = null;
- mActivityWindowInfo = null;
- ObjectPool.recycle(this);
- }
-
// Parcelable implementation
- /** Write to Parcel. */
+ /** Writes to Parcel. */
@Override
public void writeToParcel(@NonNull Parcel dest, int flags) {
super.writeToParcel(dest, flags);
@@ -98,12 +84,12 @@ public class MoveToDisplayItem extends ActivityTransactionItem {
dest.writeTypedObject(mActivityWindowInfo, flags);
}
- /** Read from Parcel. */
+ /** Reads from Parcel. */
private MoveToDisplayItem(@NonNull Parcel in) {
super(in);
mTargetDisplayId = in.readInt();
- mConfiguration = in.readTypedObject(Configuration.CREATOR);
- mActivityWindowInfo = in.readTypedObject(ActivityWindowInfo.CREATOR);
+ mConfiguration = requireNonNull(in.readTypedObject(Configuration.CREATOR));
+ mActivityWindowInfo = requireNonNull(in.readTypedObject(ActivityWindowInfo.CREATOR));
}
public static final @NonNull Creator<MoveToDisplayItem> CREATOR = new Creator<>() {
diff --git a/core/tests/coretests/src/android/app/servertransaction/ObjectPoolTests.java b/core/tests/coretests/src/android/app/servertransaction/ObjectPoolTests.java
index 098e92e812b5..d5a7d51097d1 100644
--- a/core/tests/coretests/src/android/app/servertransaction/ObjectPoolTests.java
+++ b/core/tests/coretests/src/android/app/servertransaction/ObjectPoolTests.java
@@ -24,7 +24,6 @@ import static org.junit.Assert.assertNotSame;
import android.annotation.NonNull;
import android.os.IBinder;
import android.platform.test.annotations.Presubmit;
-import android.window.ActivityWindowInfo;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;
@@ -68,12 +67,6 @@ public class ObjectPoolTests {
}
@Test
- public void testRecycleMoveToDisplayItem() {
- testRecycle(() -> MoveToDisplayItem.obtain(mActivityToken, 4, config(),
- new ActivityWindowInfo()));
- }
-
- @Test
public void testRecycleNewIntentItem() {
testRecycle(() -> NewIntentItem.obtain(mActivityToken, referrerIntentList(), false));
}
diff --git a/core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java b/core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java
index dd4aa1dde54d..644e9f4dd562 100644
--- a/core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java
+++ b/core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java
@@ -108,12 +108,12 @@ public class TransactionParcelTests {
final ActivityWindowInfo activityWindowInfo = new ActivityWindowInfo();
activityWindowInfo.set(true /* isEmbedded */, new Rect(0, 0, 500, 1000),
new Rect(0, 0, 500, 500));
- MoveToDisplayItem item = MoveToDisplayItem.obtain(mActivityToken, 4 /* targetDisplayId */,
- config(), activityWindowInfo);
+ final MoveToDisplayItem item = new MoveToDisplayItem(mActivityToken,
+ 4 /* targetDisplayId */, config(), activityWindowInfo);
writeAndPrepareForReading(item);
// Read from parcel and assert
- MoveToDisplayItem result = MoveToDisplayItem.CREATOR.createFromParcel(mParcel);
+ final MoveToDisplayItem result = MoveToDisplayItem.CREATOR.createFromParcel(mParcel);
assertEquals(item.hashCode(), result.hashCode());
assertEquals(item, result);
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java
index e8aced824420..32a01cb71cbb 100644
--- a/services/core/java/com/android/server/wm/ActivityRecord.java
+++ b/services/core/java/com/android/server/wm/ActivityRecord.java
@@ -1467,8 +1467,9 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
+ "display, activityRecord=%s, displayId=%d, config=%s", this, displayId,
config);
- mAtmService.getLifecycleManager().scheduleTransactionItem(app.getThread(),
- MoveToDisplayItem.obtain(token, displayId, config, activityWindowInfo));
+ final MoveToDisplayItem item =
+ new MoveToDisplayItem(token, displayId, config, activityWindowInfo);
+ mAtmService.getLifecycleManager().scheduleTransactionItem(app.getThread(), item);
} catch (RemoteException e) {
// If process died, whatever.
}