Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2434731b authored by Chris Li's avatar Chris Li
Browse files

Add ActiviyWindowInfo into ActivityConfiguraionChangeItem

Bug: 287582673
Test: atest FrameworksCoreTests:ObjectPoolTests
Test: atest FrameworksCoreTests:TransactionParcelTests
Change-Id: Ia744a73278e6e19e26367ca7dafd49b446628587
parent d978414c
Loading
Loading
Loading
Loading
+12 −5
Original line number Diff line number Diff line
@@ -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) {
@@ -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);
    }

@@ -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) {
@@ -81,6 +81,7 @@ public class ActivityConfigurationChangeItem extends ActivityTransactionItem {
        }
        instance.setActivityToken(activityToken);
        instance.mConfiguration = new Configuration(config);
        instance.mActivityWindowInfo = new ActivityWindowInfo(activityWindowInfo);

        return instance;
    }
@@ -89,6 +90,7 @@ public class ActivityConfigurationChangeItem extends ActivityTransactionItem {
    public void recycle() {
        super.recycle();
        mConfiguration = null;
        mActivityWindowInfo = null;
        ObjectPool.recycle(this);
    }

@@ -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 =
@@ -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
@@ -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 + "}";
    }
}
+4 −4
Original line number Diff line number Diff line
@@ -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();

@@ -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);
@@ -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);
+1 −1
Original line number Diff line number Diff line
@@ -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);
+2 −1
Original line number Diff line number Diff line
@@ -82,7 +82,8 @@ public class ObjectPoolTests {

    @Test
    public void testRecycleActivityConfigurationChangeItem() {
        testRecycle(() -> ActivityConfigurationChangeItem.obtain(mActivityToken, config()));
        testRecycle(() -> ActivityConfigurationChangeItem.obtain(mActivityToken, config(),
                new ActivityWindowInfo()));
    }

    @Test
+6 −3
Original line number Diff line number Diff line
@@ -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
@@ -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 */);
@@ -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