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

Commit b9acdaae authored by Riddle Hsu's avatar Riddle Hsu Committed by Android (Google) Code Review
Browse files

Merge "Skip applying scale by local relaunch item"

parents d94e560a 65d07552
Loading
Loading
Loading
Loading
+15 −3
Original line number Diff line number Diff line
@@ -42,6 +42,8 @@ import java.util.Map;
 */
public abstract class ClientTransactionHandler {

    private boolean mIsExecutingLocalTransaction;

    // Schedule phase related logic and handlers.

    /** Prepare and schedule transaction for execution. */
@@ -56,10 +58,20 @@ public abstract class ClientTransactionHandler {
     */
    @VisibleForTesting
    public void executeTransaction(ClientTransaction transaction) {
        mIsExecutingLocalTransaction = true;
        try {
            transaction.preExecute(this);
            getTransactionExecutor().execute(transaction);
        } finally {
            mIsExecutingLocalTransaction = false;
            transaction.recycle();
        }
    }

    /** Returns {@code true} if the current executing ClientTransaction is from local request. */
    public boolean isExecutingLocalTransaction() {
        return mIsExecutingLocalTransaction;
    }

    /**
     * Get the {@link TransactionExecutor} that will be performing lifecycle transitions and
+4 −1
Original line number Diff line number Diff line
@@ -57,7 +57,10 @@ public class ActivityRelaunchItem extends ActivityTransactionItem {

    @Override
    public void preExecute(ClientTransactionHandler client, IBinder token) {
        // The local config is already scaled so only apply if this item is from server side.
        if (!client.isExecutingLocalTransaction()) {
            CompatibilityInfo.applyOverrideScaleIfNeeded(mConfig);
        }
        mActivityClientRecord = client.prepareRelaunchActivity(token, mPendingResults,
                mPendingNewIntents, mConfigChanges, mConfig, mPreserveWindow);
    }
+14 −0
Original line number Diff line number Diff line
@@ -228,6 +228,20 @@ public class ActivityThreadTest {
            InstrumentationRegistry.getInstrumentation().waitForIdleSync();

            assertScreenScale(scale, activity, originalActivityConfig, originalActivityMetrics);

            // Execute a local relaunch item with current scaled config (e.g. simulate recreate),
            // the config should not be scaled again.
            final Configuration currentConfig = activity.getResources().getConfiguration();
            final ClientTransaction localTransaction =
                    newTransaction(activityThread, activity.getActivityToken());
            localTransaction.addCallback(ActivityRelaunchItem.obtain(
                    null /* pendingResults */, null /* pendingIntents */, 0 /* configChanges */,
                    new MergedConfiguration(currentConfig, currentConfig),
                    true /* preserveWindow */));
            InstrumentationRegistry.getInstrumentation().runOnMainSync(
                    () -> activityThread.executeTransaction(localTransaction));

            assertScreenScale(scale, activity, originalActivityConfig, originalActivityMetrics);
        } finally {
            CompatibilityInfo.setOverrideInvertedScale(originalScale);
            InstrumentationRegistry.getInstrumentation().runOnMainSync(