diff options
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.          } |