Loading core/java/android/app/servertransaction/ActivityConfigurationChangeItem.java +12 −5 Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ import java.util.Objects; public class ActivityConfigurationChangeItem extends ActivityTransactionItem { private Configuration mConfiguration; private ActivityWindowInfo mActivityWindowInfo; @Override public void preExecute(@NonNull ClientTransactionHandler client) { Loading @@ -55,8 +56,7 @@ public class ActivityConfigurationChangeItem extends ActivityTransactionItem { // TODO(lifecycler): detect if PIP or multi-window mode changed and report it here. Trace.traceBegin(TRACE_TAG_ACTIVITY_MANAGER, "activityConfigChanged"); client.handleActivityConfigurationChanged(r, mConfiguration, INVALID_DISPLAY, // TODO(b/287582673): add ActivityWindowInfo new ActivityWindowInfo()); mActivityWindowInfo); Trace.traceEnd(TRACE_TAG_ACTIVITY_MANAGER); } Loading @@ -73,7 +73,7 @@ public class ActivityConfigurationChangeItem extends ActivityTransactionItem { /** Obtain an instance initialized with provided params. */ @NonNull public static ActivityConfigurationChangeItem obtain(@NonNull IBinder activityToken, @NonNull Configuration config) { @NonNull Configuration config, @NonNull ActivityWindowInfo activityWindowInfo) { ActivityConfigurationChangeItem instance = ObjectPool.obtain(ActivityConfigurationChangeItem.class); if (instance == null) { Loading @@ -81,6 +81,7 @@ public class ActivityConfigurationChangeItem extends ActivityTransactionItem { } instance.setActivityToken(activityToken); instance.mConfiguration = new Configuration(config); instance.mActivityWindowInfo = new ActivityWindowInfo(activityWindowInfo); return instance; } Loading @@ -89,6 +90,7 @@ public class ActivityConfigurationChangeItem extends ActivityTransactionItem { public void recycle() { super.recycle(); mConfiguration = null; mActivityWindowInfo = null; ObjectPool.recycle(this); } Loading @@ -100,12 +102,14 @@ public class ActivityConfigurationChangeItem extends ActivityTransactionItem { public void writeToParcel(@NonNull Parcel dest, int flags) { super.writeToParcel(dest, flags); dest.writeTypedObject(mConfiguration, flags); dest.writeTypedObject(mActivityWindowInfo, flags); } /** Read from Parcel. */ private ActivityConfigurationChangeItem(@NonNull Parcel in) { super(in); mConfiguration = in.readTypedObject(Configuration.CREATOR); mActivityWindowInfo = in.readTypedObject(ActivityWindowInfo.CREATOR); } public static final @NonNull Creator<ActivityConfigurationChangeItem> CREATOR = Loading @@ -128,7 +132,8 @@ public class ActivityConfigurationChangeItem extends ActivityTransactionItem { return false; } final ActivityConfigurationChangeItem other = (ActivityConfigurationChangeItem) o; return Objects.equals(mConfiguration, other.mConfiguration); return Objects.equals(mConfiguration, other.mConfiguration) && Objects.equals(mActivityWindowInfo, other.mActivityWindowInfo); } @Override Loading @@ -136,12 +141,14 @@ public class ActivityConfigurationChangeItem extends ActivityTransactionItem { int result = 17; result = 31 * result + super.hashCode(); result = 31 * result + Objects.hashCode(mConfiguration); result = 31 * result + Objects.hashCode(mActivityWindowInfo); return result; } @Override public String toString() { return "ActivityConfigurationChange{" + super.toString() + ",config=" + mConfiguration + "}"; + ",config=" + mConfiguration + ",activityWindowInfo=" + mActivityWindowInfo + "}"; } } core/tests/coretests/src/android/app/activity/ActivityThreadTest.java +4 −4 Original line number Diff line number Diff line Loading @@ -247,7 +247,7 @@ public class ActivityThreadTest { newConfig.smallestScreenWidthDp++; transaction = newTransaction(activityThread); transaction.addTransactionItem(ActivityConfigurationChangeItem.obtain( activity.getActivityToken(), newConfig)); activity.getActivityToken(), newConfig, new ActivityWindowInfo())); appThread.scheduleTransaction(transaction); InstrumentationRegistry.getInstrumentation().waitForIdleSync(); Loading Loading @@ -455,11 +455,11 @@ public class ActivityThreadTest { transaction = newTransaction(activityThread); transaction.addTransactionItem(ActivityConfigurationChangeItem.obtain( activity.getActivityToken(), activityConfigLandscape)); activity.getActivityToken(), activityConfigLandscape, new ActivityWindowInfo())); transaction.addTransactionItem(ConfigurationChangeItem.obtain( processConfigPortrait, DEVICE_ID_INVALID)); transaction.addTransactionItem(ActivityConfigurationChangeItem.obtain( activity.getActivityToken(), activityConfigPortrait)); activity.getActivityToken(), activityConfigPortrait, new ActivityWindowInfo())); appThread.scheduleTransaction(transaction); activity.mTestLatch.await(TIMEOUT_SEC, TimeUnit.SECONDS); Loading Loading @@ -883,7 +883,7 @@ public class ActivityThreadTest { private static ClientTransaction newActivityConfigTransaction(@NonNull Activity activity, @NonNull Configuration config) { final ActivityConfigurationChangeItem item = ActivityConfigurationChangeItem.obtain( activity.getActivityToken(), config); activity.getActivityToken(), config, new ActivityWindowInfo()); final ClientTransaction transaction = newTransaction(activity); transaction.addTransactionItem(item); Loading core/tests/coretests/src/android/app/servertransaction/ClientTransactionItemTest.java +1 −1 Original line number Diff line number Diff line Loading @@ -107,7 +107,7 @@ public class ClientTransactionItemTest { @Test public void testActivityConfigurationChangeItem_getContextToUpdate() { final ActivityConfigurationChangeItem item = ActivityConfigurationChangeItem .obtain(mActivityToken, mConfiguration); .obtain(mActivityToken, mConfiguration, new ActivityWindowInfo()); final Context context = item.getContextToUpdate(mHandler); assertEquals(mActivity, context); Loading core/tests/coretests/src/android/app/servertransaction/ObjectPoolTests.java +2 −1 Original line number Diff line number Diff line Loading @@ -82,7 +82,8 @@ public class ObjectPoolTests { @Test public void testRecycleActivityConfigurationChangeItem() { testRecycle(() -> ActivityConfigurationChangeItem.obtain(mActivityToken, config())); testRecycle(() -> ActivityConfigurationChangeItem.obtain(mActivityToken, config(), new ActivityWindowInfo())); } @Test Loading core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java +6 −3 Original line number Diff line number Diff line Loading @@ -95,8 +95,11 @@ public class TransactionParcelTests { @Test public void testActivityConfigChange() { // Write to parcel final ActivityWindowInfo activityWindowInfo = new ActivityWindowInfo(); activityWindowInfo.set(true /* isEmbedded */, new Rect(0, 0, 500, 1000), new Rect(0, 0, 500, 500)); ActivityConfigurationChangeItem item = ActivityConfigurationChangeItem.obtain( mActivityToken, config()); mActivityToken, config(), activityWindowInfo); writeAndPrepareForReading(item); // Read from parcel and assert Loading Loading @@ -300,7 +303,7 @@ public class TransactionParcelTests { // Write to parcel NewIntentItem callback1 = NewIntentItem.obtain(mActivityToken, new ArrayList<>(), true); ActivityConfigurationChangeItem callback2 = ActivityConfigurationChangeItem.obtain( mActivityToken, config()); mActivityToken, config(), new ActivityWindowInfo()); StopActivityItem lifecycleRequest = StopActivityItem.obtain(mActivityToken, 78 /* configChanges */); Loading @@ -327,7 +330,7 @@ public class TransactionParcelTests { // Write to parcel NewIntentItem callback1 = NewIntentItem.obtain(mActivityToken, new ArrayList<>(), true); ActivityConfigurationChangeItem callback2 = ActivityConfigurationChangeItem.obtain( mActivityToken, config()); mActivityToken, config(), new ActivityWindowInfo()); ClientTransaction transaction = ClientTransaction.obtain(null /* client */); transaction.addTransactionItem(callback1); Loading Loading
core/java/android/app/servertransaction/ActivityConfigurationChangeItem.java +12 −5 Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ import java.util.Objects; public class ActivityConfigurationChangeItem extends ActivityTransactionItem { private Configuration mConfiguration; private ActivityWindowInfo mActivityWindowInfo; @Override public void preExecute(@NonNull ClientTransactionHandler client) { Loading @@ -55,8 +56,7 @@ public class ActivityConfigurationChangeItem extends ActivityTransactionItem { // TODO(lifecycler): detect if PIP or multi-window mode changed and report it here. Trace.traceBegin(TRACE_TAG_ACTIVITY_MANAGER, "activityConfigChanged"); client.handleActivityConfigurationChanged(r, mConfiguration, INVALID_DISPLAY, // TODO(b/287582673): add ActivityWindowInfo new ActivityWindowInfo()); mActivityWindowInfo); Trace.traceEnd(TRACE_TAG_ACTIVITY_MANAGER); } Loading @@ -73,7 +73,7 @@ public class ActivityConfigurationChangeItem extends ActivityTransactionItem { /** Obtain an instance initialized with provided params. */ @NonNull public static ActivityConfigurationChangeItem obtain(@NonNull IBinder activityToken, @NonNull Configuration config) { @NonNull Configuration config, @NonNull ActivityWindowInfo activityWindowInfo) { ActivityConfigurationChangeItem instance = ObjectPool.obtain(ActivityConfigurationChangeItem.class); if (instance == null) { Loading @@ -81,6 +81,7 @@ public class ActivityConfigurationChangeItem extends ActivityTransactionItem { } instance.setActivityToken(activityToken); instance.mConfiguration = new Configuration(config); instance.mActivityWindowInfo = new ActivityWindowInfo(activityWindowInfo); return instance; } Loading @@ -89,6 +90,7 @@ public class ActivityConfigurationChangeItem extends ActivityTransactionItem { public void recycle() { super.recycle(); mConfiguration = null; mActivityWindowInfo = null; ObjectPool.recycle(this); } Loading @@ -100,12 +102,14 @@ public class ActivityConfigurationChangeItem extends ActivityTransactionItem { public void writeToParcel(@NonNull Parcel dest, int flags) { super.writeToParcel(dest, flags); dest.writeTypedObject(mConfiguration, flags); dest.writeTypedObject(mActivityWindowInfo, flags); } /** Read from Parcel. */ private ActivityConfigurationChangeItem(@NonNull Parcel in) { super(in); mConfiguration = in.readTypedObject(Configuration.CREATOR); mActivityWindowInfo = in.readTypedObject(ActivityWindowInfo.CREATOR); } public static final @NonNull Creator<ActivityConfigurationChangeItem> CREATOR = Loading @@ -128,7 +132,8 @@ public class ActivityConfigurationChangeItem extends ActivityTransactionItem { return false; } final ActivityConfigurationChangeItem other = (ActivityConfigurationChangeItem) o; return Objects.equals(mConfiguration, other.mConfiguration); return Objects.equals(mConfiguration, other.mConfiguration) && Objects.equals(mActivityWindowInfo, other.mActivityWindowInfo); } @Override Loading @@ -136,12 +141,14 @@ public class ActivityConfigurationChangeItem extends ActivityTransactionItem { int result = 17; result = 31 * result + super.hashCode(); result = 31 * result + Objects.hashCode(mConfiguration); result = 31 * result + Objects.hashCode(mActivityWindowInfo); return result; } @Override public String toString() { return "ActivityConfigurationChange{" + super.toString() + ",config=" + mConfiguration + "}"; + ",config=" + mConfiguration + ",activityWindowInfo=" + mActivityWindowInfo + "}"; } }
core/tests/coretests/src/android/app/activity/ActivityThreadTest.java +4 −4 Original line number Diff line number Diff line Loading @@ -247,7 +247,7 @@ public class ActivityThreadTest { newConfig.smallestScreenWidthDp++; transaction = newTransaction(activityThread); transaction.addTransactionItem(ActivityConfigurationChangeItem.obtain( activity.getActivityToken(), newConfig)); activity.getActivityToken(), newConfig, new ActivityWindowInfo())); appThread.scheduleTransaction(transaction); InstrumentationRegistry.getInstrumentation().waitForIdleSync(); Loading Loading @@ -455,11 +455,11 @@ public class ActivityThreadTest { transaction = newTransaction(activityThread); transaction.addTransactionItem(ActivityConfigurationChangeItem.obtain( activity.getActivityToken(), activityConfigLandscape)); activity.getActivityToken(), activityConfigLandscape, new ActivityWindowInfo())); transaction.addTransactionItem(ConfigurationChangeItem.obtain( processConfigPortrait, DEVICE_ID_INVALID)); transaction.addTransactionItem(ActivityConfigurationChangeItem.obtain( activity.getActivityToken(), activityConfigPortrait)); activity.getActivityToken(), activityConfigPortrait, new ActivityWindowInfo())); appThread.scheduleTransaction(transaction); activity.mTestLatch.await(TIMEOUT_SEC, TimeUnit.SECONDS); Loading Loading @@ -883,7 +883,7 @@ public class ActivityThreadTest { private static ClientTransaction newActivityConfigTransaction(@NonNull Activity activity, @NonNull Configuration config) { final ActivityConfigurationChangeItem item = ActivityConfigurationChangeItem.obtain( activity.getActivityToken(), config); activity.getActivityToken(), config, new ActivityWindowInfo()); final ClientTransaction transaction = newTransaction(activity); transaction.addTransactionItem(item); Loading
core/tests/coretests/src/android/app/servertransaction/ClientTransactionItemTest.java +1 −1 Original line number Diff line number Diff line Loading @@ -107,7 +107,7 @@ public class ClientTransactionItemTest { @Test public void testActivityConfigurationChangeItem_getContextToUpdate() { final ActivityConfigurationChangeItem item = ActivityConfigurationChangeItem .obtain(mActivityToken, mConfiguration); .obtain(mActivityToken, mConfiguration, new ActivityWindowInfo()); final Context context = item.getContextToUpdate(mHandler); assertEquals(mActivity, context); Loading
core/tests/coretests/src/android/app/servertransaction/ObjectPoolTests.java +2 −1 Original line number Diff line number Diff line Loading @@ -82,7 +82,8 @@ public class ObjectPoolTests { @Test public void testRecycleActivityConfigurationChangeItem() { testRecycle(() -> ActivityConfigurationChangeItem.obtain(mActivityToken, config())); testRecycle(() -> ActivityConfigurationChangeItem.obtain(mActivityToken, config(), new ActivityWindowInfo())); } @Test Loading
core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java +6 −3 Original line number Diff line number Diff line Loading @@ -95,8 +95,11 @@ public class TransactionParcelTests { @Test public void testActivityConfigChange() { // Write to parcel final ActivityWindowInfo activityWindowInfo = new ActivityWindowInfo(); activityWindowInfo.set(true /* isEmbedded */, new Rect(0, 0, 500, 1000), new Rect(0, 0, 500, 500)); ActivityConfigurationChangeItem item = ActivityConfigurationChangeItem.obtain( mActivityToken, config()); mActivityToken, config(), activityWindowInfo); writeAndPrepareForReading(item); // Read from parcel and assert Loading Loading @@ -300,7 +303,7 @@ public class TransactionParcelTests { // Write to parcel NewIntentItem callback1 = NewIntentItem.obtain(mActivityToken, new ArrayList<>(), true); ActivityConfigurationChangeItem callback2 = ActivityConfigurationChangeItem.obtain( mActivityToken, config()); mActivityToken, config(), new ActivityWindowInfo()); StopActivityItem lifecycleRequest = StopActivityItem.obtain(mActivityToken, 78 /* configChanges */); Loading @@ -327,7 +330,7 @@ public class TransactionParcelTests { // Write to parcel NewIntentItem callback1 = NewIntentItem.obtain(mActivityToken, new ArrayList<>(), true); ActivityConfigurationChangeItem callback2 = ActivityConfigurationChangeItem.obtain( mActivityToken, config()); mActivityToken, config(), new ActivityWindowInfo()); ClientTransaction transaction = ClientTransaction.obtain(null /* client */); transaction.addTransactionItem(callback1); Loading