summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/app/servertransaction/ConfigurationChangeItem.java62
-rw-r--r--core/tests/coretests/src/android/app/activity/ActivityThreadTest.java12
-rw-r--r--core/tests/coretests/src/android/app/servertransaction/ObjectPoolTests.java81
-rw-r--r--core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java6
-rw-r--r--services/core/java/com/android/server/wm/WindowProcessController.java6
5 files changed, 37 insertions, 130 deletions
diff --git a/core/java/android/app/servertransaction/ConfigurationChangeItem.java b/core/java/android/app/servertransaction/ConfigurationChangeItem.java
index 22da706cc7f4..123d7926160c 100644
--- a/core/java/android/app/servertransaction/ConfigurationChangeItem.java
+++ b/core/java/android/app/servertransaction/ConfigurationChangeItem.java
@@ -16,6 +16,8 @@
package android.app.servertransaction;
+import static java.util.Objects.requireNonNull;
+
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.ClientTransactionHandler;
@@ -27,12 +29,20 @@ import java.util.Objects;
/**
* App configuration change message.
+ *
* @hide
*/
public class ConfigurationChangeItem extends ClientTransactionItem {
- private Configuration mConfiguration;
- private int mDeviceId;
+ @NonNull
+ private final Configuration mConfiguration;
+
+ private final int mDeviceId;
+
+ public ConfigurationChangeItem(@NonNull Configuration config, int deviceId) {
+ mConfiguration = new Configuration(config);
+ mDeviceId = deviceId;
+ }
@Override
public void preExecute(@NonNull ClientTransactionHandler client) {
@@ -46,55 +56,31 @@ public class ConfigurationChangeItem extends ClientTransactionItem {
client.handleConfigurationChanged(mConfiguration, mDeviceId);
}
- // ObjectPoolItem implementation
-
- private ConfigurationChangeItem() {}
-
- /** Obtain an instance initialized with provided params. */
- public static ConfigurationChangeItem obtain(@NonNull Configuration config, int deviceId) {
- ConfigurationChangeItem instance = ObjectPool.obtain(ConfigurationChangeItem.class);
- if (instance == null) {
- instance = new ConfigurationChangeItem();
- }
- instance.mConfiguration = new Configuration(config);
- instance.mDeviceId = deviceId;
-
- return instance;
- }
-
- @Override
- public void recycle() {
- mConfiguration = null;
- mDeviceId = 0;
- ObjectPool.recycle(this);
- }
-
-
// Parcelable implementation
- /** Write to Parcel. */
+ /** Writes to Parcel. */
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeTypedObject(mConfiguration, flags);
dest.writeInt(mDeviceId);
}
- /** Read from Parcel. */
+ /** Reads from Parcel. */
private ConfigurationChangeItem(Parcel in) {
- mConfiguration = in.readTypedObject(Configuration.CREATOR);
+ mConfiguration = requireNonNull(in.readTypedObject(Configuration.CREATOR));
mDeviceId = in.readInt();
}
public static final @android.annotation.NonNull Creator<ConfigurationChangeItem> CREATOR =
- new Creator<ConfigurationChangeItem>() {
- public ConfigurationChangeItem createFromParcel(Parcel in) {
- return new ConfigurationChangeItem(in);
- }
-
- public ConfigurationChangeItem[] newArray(int size) {
- return new ConfigurationChangeItem[size];
- }
- };
+ new Creator<>() {
+ public ConfigurationChangeItem createFromParcel(Parcel in) {
+ return new ConfigurationChangeItem(in);
+ }
+
+ public ConfigurationChangeItem[] newArray(int size) {
+ return new ConfigurationChangeItem[size];
+ }
+ };
@Override
public boolean equals(@Nullable Object o) {
diff --git a/core/tests/coretests/src/android/app/activity/ActivityThreadTest.java b/core/tests/coretests/src/android/app/activity/ActivityThreadTest.java
index c7d5f4182473..24f6ceaf786c 100644
--- a/core/tests/coretests/src/android/app/activity/ActivityThreadTest.java
+++ b/core/tests/coretests/src/android/app/activity/ActivityThreadTest.java
@@ -254,8 +254,8 @@ public class ActivityThreadTest {
try {
// Send process level config change.
ClientTransaction transaction = newTransaction(activityThread);
- transaction.addTransactionItem(ConfigurationChangeItem.obtain(
- newConfig, DEVICE_ID_INVALID));
+ transaction.addTransactionItem(
+ new ConfigurationChangeItem(newConfig, DEVICE_ID_INVALID));
appThread.scheduleTransaction(transaction);
InstrumentationRegistry.getInstrumentation().waitForIdleSync();
@@ -474,15 +474,15 @@ public class ActivityThreadTest {
activity.mTestLatch = new CountDownLatch(1);
ClientTransaction transaction = newTransaction(activityThread);
- transaction.addTransactionItem(ConfigurationChangeItem.obtain(
- processConfigLandscape, DEVICE_ID_INVALID));
+ transaction.addTransactionItem(
+ new ConfigurationChangeItem(processConfigLandscape, DEVICE_ID_INVALID));
appThread.scheduleTransaction(transaction);
transaction = newTransaction(activityThread);
transaction.addTransactionItem(new ActivityConfigurationChangeItem(
activity.getActivityToken(), activityConfigLandscape, new ActivityWindowInfo()));
- transaction.addTransactionItem(ConfigurationChangeItem.obtain(
- processConfigPortrait, DEVICE_ID_INVALID));
+ transaction.addTransactionItem(
+ new ConfigurationChangeItem(processConfigPortrait, DEVICE_ID_INVALID));
transaction.addTransactionItem(new ActivityConfigurationChangeItem(
activity.getActivityToken(), activityConfigPortrait, new ActivityWindowInfo()));
appThread.scheduleTransaction(transaction);
diff --git a/core/tests/coretests/src/android/app/servertransaction/ObjectPoolTests.java b/core/tests/coretests/src/android/app/servertransaction/ObjectPoolTests.java
deleted file mode 100644
index c068cdf6c93d..000000000000
--- a/core/tests/coretests/src/android/app/servertransaction/ObjectPoolTests.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.app.servertransaction;
-
-import static android.app.servertransaction.TestUtils.config;
-
-import static org.junit.Assert.assertNotSame;
-
-import android.annotation.NonNull;
-import android.os.IBinder;
-import android.platform.test.annotations.Presubmit;
-
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-import androidx.test.filters.SmallTest;
-
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.junit.MockitoJUnit;
-import org.mockito.junit.MockitoRule;
-
-import java.util.function.Supplier;
-
-/**
- * Tests for {@link ObjectPool}.
- *
- * <p>Build/Install/Run:
- * atest FrameworksCoreTests:ObjectPoolTests
- *
- * <p>This test class is a part of Window Manager Service tests and specified in
- * {@link com.android.server.wm.test.filters.FrameworksTestsFilter}.
- */
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-@Presubmit
-public class ObjectPoolTests {
-
- @Rule
- public final MockitoRule mocks = MockitoJUnit.rule();
-
- @Mock
- private IBinder mActivityToken;
-
- // 1. Check if two obtained objects from pool are not the same.
- // 2. Check if the state of the object is cleared after recycling.
- // 3. Check if the same object is obtained from pool after recycling.
-
- @Test
- public void testRecycleConfigurationChangeItem() {
- testRecycle(() -> ConfigurationChangeItem.obtain(config(), 1));
- }
-
- private void testRecycle(@NonNull Supplier<? extends ObjectPoolItem> obtain) {
- // Reuse the same object after recycle.
- final ObjectPoolItem item = obtain.get();
- item.recycle();
- final ObjectPoolItem item2 = obtain.get();
-
- assertNotSame(item, item2); // Different instance.
-
- // Create new object when the pool is empty.
- final ObjectPoolItem item3 = obtain.get();
-
- assertNotSame(item, item3);
- }
-}
diff --git a/core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java b/core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java
index 79b4b4f08ead..59d8c8dd3c60 100644
--- a/core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java
+++ b/core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java
@@ -74,11 +74,13 @@ public class TransactionParcelTests {
@Test
public void testConfigurationChange() {
// Write to parcel
- ConfigurationChangeItem item = ConfigurationChangeItem.obtain(config(), 1 /* deviceId */);
+ final ConfigurationChangeItem item =
+ new ConfigurationChangeItem(config(), 1 /* deviceId */);
writeAndPrepareForReading(item);
// Read from parcel and assert
- ConfigurationChangeItem result = ConfigurationChangeItem.CREATOR.createFromParcel(mParcel);
+ final ConfigurationChangeItem result =
+ ConfigurationChangeItem.CREATOR.createFromParcel(mParcel);
assertEquals(item.hashCode(), result.hashCode());
assertEquals(item, result);
diff --git a/services/core/java/com/android/server/wm/WindowProcessController.java b/services/core/java/com/android/server/wm/WindowProcessController.java
index 984caf1c692b..2bae0a826417 100644
--- a/services/core/java/com/android/server/wm/WindowProcessController.java
+++ b/services/core/java/com/android/server/wm/WindowProcessController.java
@@ -437,7 +437,7 @@ public class WindowProcessController extends ConfigurationContainer<Configuratio
final ConfigurationChangeItem configurationChangeItem;
synchronized (mLastReportedConfiguration) {
onConfigurationChangePreScheduled(mLastReportedConfiguration);
- configurationChangeItem = ConfigurationChangeItem.obtain(
+ configurationChangeItem = new ConfigurationChangeItem(
mLastReportedConfiguration, mLastTopActivityDeviceId);
}
// Schedule immediately to make sure the app component (e.g. receiver, service) can get
@@ -1721,8 +1721,8 @@ public class WindowProcessController extends ConfigurationContainer<Configuratio
}
onConfigurationChangePreScheduled(config);
- scheduleClientTransactionItem(thread, ConfigurationChangeItem.obtain(
- config, mLastTopActivityDeviceId));
+ scheduleClientTransactionItem(
+ thread, new ConfigurationChangeItem(config, mLastTopActivityDeviceId));
}
private void onConfigurationChangePreScheduled(@NonNull Configuration config) {