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

Commit adf45889 authored by Chris Li's avatar Chris Li
Browse files

Synchronize window config updates (17/n)

Migrate all usages to ClientTransaction#addTransactionItem.
Since bundleClientTransactionFlag is read-only, no need to worry about
the performance impact.

Bug: 260873529
Test: refactor pass existing tests
Change-Id: I9cc35087ff8f3920dc0eef6e0ebcc6b77600ea19
parent 32d85627
Loading
Loading
Loading
Loading
+5 −23
Original line number Diff line number Diff line
@@ -235,7 +235,6 @@ import com.android.internal.util.Preconditions;
import com.android.internal.util.function.pooled.PooledLambda;
import com.android.org.conscrypt.TrustedCertificateStore;
import com.android.server.am.MemInfoDumpProto;
import com.android.window.flags.Flags;

import dalvik.annotation.optimization.NeverCompile;
import dalvik.system.AppSpecializationHooks;
@@ -3740,11 +3739,7 @@ public final class ActivityThread extends ClientTransactionHandler
        final ClientTransaction clientTransaction = ClientTransaction.obtain(mAppThread);
        final ActivityResultItem activityResultItem = ActivityResultItem.obtain(
                activityToken, list);
        if (Flags.bundleClientTransactionFlag()) {
        clientTransaction.addTransactionItem(activityResultItem);
        } else {
            clientTransaction.addCallback(activityResultItem);
        }
        try {
            mAppThread.scheduleTransaction(clientTransaction);
        } catch (RemoteException e) {
@@ -4526,11 +4521,7 @@ public final class ActivityThread extends ClientTransactionHandler
        final PauseActivityItem pauseActivityItem = PauseActivityItem.obtain(r.token,
                r.activity.isFinishing(), /* userLeaving */ true, r.activity.mConfigChangeFlags,
                /* dontReport */ false, /* autoEnteringPip */ false);
        if (Flags.bundleClientTransactionFlag()) {
        transaction.addTransactionItem(pauseActivityItem);
        } else {
            transaction.setLifecycleStateRequest(pauseActivityItem);
        }
        executeTransaction(transaction);
    }

@@ -4538,11 +4529,7 @@ public final class ActivityThread extends ClientTransactionHandler
        final ClientTransaction transaction = ClientTransaction.obtain(mAppThread);
        final ResumeActivityItem resumeActivityItem = ResumeActivityItem.obtain(r.token,
                /* isForward */ false, /* shouldSendCompatFakeFocus */ false);
        if (Flags.bundleClientTransactionFlag()) {
        transaction.addTransactionItem(resumeActivityItem);
        } else {
            transaction.setLifecycleStateRequest(resumeActivityItem);
        }
        executeTransaction(transaction);
    }

@@ -6136,13 +6123,8 @@ public final class ActivityThread extends ClientTransactionHandler
                TransactionExecutorHelper.getLifecycleRequestForCurrentState(r);
        // Schedule the transaction.
        final ClientTransaction transaction = ClientTransaction.obtain(mAppThread);
        if (Flags.bundleClientTransactionFlag()) {
        transaction.addTransactionItem(activityRelaunchItem);
        transaction.addTransactionItem(lifecycleRequest);
        } else {
            transaction.addCallback(activityRelaunchItem);
            transaction.setLifecycleStateRequest(lifecycleRequest);
        }
        executeTransaction(transaction);
    }

+9 −5
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ import android.os.Parcelable;
import android.os.RemoteException;

import com.android.internal.annotations.VisibleForTesting;
import com.android.window.flags.Flags;

import java.io.PrintWriter;
import java.util.ArrayList;
@@ -85,12 +86,15 @@ public class ClientTransaction implements Parcelable, ObjectPoolItem {
     * @param item A single message that can contain a client activity/window request/callback.
     */
    public void addTransactionItem(@NonNull ClientTransactionItem item) {
        if (Flags.bundleClientTransactionFlag()) {
            if (mTransactionItems == null) {
                mTransactionItems = new ArrayList<>();
            }
            mTransactionItems.add(item);
        }

        // TODO(b/324203798): cleanup after remove UnsupportedAppUsage
        // Populate even if mTransactionItems is set to support the UnsupportedAppUsage.
        if (item.isActivityLifecycleItem()) {
            setLifecycleStateRequest((ActivityLifecycleItem) item);
        } else {
@@ -114,7 +118,7 @@ public class ClientTransaction implements Parcelable, ObjectPoolItem {
     */
    // TODO(b/324203798): cleanup after remove UnsupportedAppUsage
    @Deprecated
    public void addCallback(@NonNull ClientTransactionItem activityCallback) {
    private void addCallback(@NonNull ClientTransactionItem activityCallback) {
        if (mActivityCallbacks == null) {
            mActivityCallbacks = new ArrayList<>();
        }
@@ -169,7 +173,7 @@ public class ClientTransaction implements Parcelable, ObjectPoolItem {
     */
    // TODO(b/324203798): cleanup after remove UnsupportedAppUsage
    @Deprecated
    public void setLifecycleStateRequest(@NonNull ActivityLifecycleItem stateRequest) {
    private void setLifecycleStateRequest(@NonNull ActivityLifecycleItem stateRequest) {
        if (mLifecycleStateRequest != null) {
            return;
        }
+1 −8
Original line number Diff line number Diff line
@@ -23,7 +23,6 @@ import static java.util.Objects.requireNonNull;
import android.annotation.NonNull;
import android.app.ActivityThread;
import android.hardware.display.DisplayManagerGlobal;
import android.os.Process;

import com.android.internal.annotations.VisibleForTesting;

@@ -67,7 +66,7 @@ public class ClientTransactionListenerController {
     * window configuration.
     */
    public void onDisplayChanged(int displayId) {
        if (!isBundleClientTransactionFlagEnabled()) {
        if (!bundleClientTransactionFlag()) {
            return;
        }
        if (ActivityThread.isSystem()) {
@@ -76,10 +75,4 @@ public class ClientTransactionListenerController {
        }
        mDisplayManager.handleDisplayChangeFromWindowManager(displayId);
    }

    /** Whether {@link #bundleClientTransactionFlag} feature flag is enabled. */
    public boolean isBundleClientTransactionFlagEnabled() {
        // Can't read flag from isolated process.
        return !Process.isIsolated() && bundleClientTransactionFlag();
    }
}
+0 −3
Original line number Diff line number Diff line
@@ -40,7 +40,6 @@ import android.app.ClientTransactionHandler;
import android.content.Context;
import android.content.res.Configuration;
import android.os.IBinder;
import android.os.Process;
import android.os.Trace;
import android.util.ArrayMap;
import android.util.ArraySet;
@@ -218,8 +217,6 @@ public class TransactionExecutor {
        final boolean shouldTrackConfigUpdatedContext =
                // No configuration change for local transaction.
                !mTransactionHandler.isExecutingLocalTransaction()
                        // Can't read flag from isolated process.
                        && !Process.isIsolated()
                        && bundleClientTransactionFlag();
        final Context configUpdatedContext = shouldTrackConfigUpdatedContext
                ? item.getContextToUpdate(mTransactionHandler)
+12 −25
Original line number Diff line number Diff line
@@ -42,7 +42,6 @@ import android.app.IApplicationThread;
import android.app.PictureInPictureParams;
import android.app.ResourcesManager;
import android.app.servertransaction.ActivityConfigurationChangeItem;
import android.app.servertransaction.ActivityLifecycleItem;
import android.app.servertransaction.ActivityRelaunchItem;
import android.app.servertransaction.ClientTransaction;
import android.app.servertransaction.ClientTransactionItem;
@@ -74,7 +73,6 @@ import androidx.test.rule.ActivityTestRule;
import androidx.test.runner.AndroidJUnit4;

import com.android.internal.content.ReferrerIntent;
import com.android.window.flags.Flags;

import org.junit.After;
import org.junit.Before;
@@ -229,7 +227,7 @@ public class ActivityThreadTest {
        try {
            // Send process level config change.
            ClientTransaction transaction = newTransaction(activityThread);
            addClientTransactionItem(transaction, ConfigurationChangeItem.obtain(
            transaction.addTransactionItem(ConfigurationChangeItem.obtain(
                    newConfig, DEVICE_ID_INVALID));
            appThread.scheduleTransaction(transaction);
            InstrumentationRegistry.getInstrumentation().waitForIdleSync();
@@ -246,7 +244,7 @@ public class ActivityThreadTest {
            newConfig.seq++;
            newConfig.smallestScreenWidthDp++;
            transaction = newTransaction(activityThread);
            addClientTransactionItem(transaction, ActivityConfigurationChangeItem.obtain(
            transaction.addTransactionItem(ActivityConfigurationChangeItem.obtain(
                    activity.getActivityToken(), newConfig));
            appThread.scheduleTransaction(transaction);
            InstrumentationRegistry.getInstrumentation().waitForIdleSync();
@@ -447,16 +445,16 @@ public class ActivityThreadTest {
        activity.mTestLatch = new CountDownLatch(1);

        ClientTransaction transaction = newTransaction(activityThread);
        addClientTransactionItem(transaction, ConfigurationChangeItem.obtain(
        transaction.addTransactionItem(ConfigurationChangeItem.obtain(
                processConfigLandscape, DEVICE_ID_INVALID));
        appThread.scheduleTransaction(transaction);

        transaction = newTransaction(activityThread);
        addClientTransactionItem(transaction, ActivityConfigurationChangeItem.obtain(
        transaction.addTransactionItem(ActivityConfigurationChangeItem.obtain(
                activity.getActivityToken(), activityConfigLandscape));
        addClientTransactionItem(transaction, ConfigurationChangeItem.obtain(
        transaction.addTransactionItem(ConfigurationChangeItem.obtain(
                processConfigPortrait, DEVICE_ID_INVALID));
        addClientTransactionItem(transaction, ActivityConfigurationChangeItem.obtain(
        transaction.addTransactionItem(ActivityConfigurationChangeItem.obtain(
                activity.getActivityToken(), activityConfigPortrait));
        appThread.scheduleTransaction(transaction);

@@ -843,8 +841,8 @@ public class ActivityThreadTest {
                        false /* shouldSendCompatFakeFocus*/);

        final ClientTransaction transaction = newTransaction(activity);
        addClientTransactionItem(transaction, callbackItem);
        addClientTransactionItem(transaction, resumeStateRequest);
        transaction.addTransactionItem(callbackItem);
        transaction.addTransactionItem(resumeStateRequest);

        return transaction;
    }
@@ -856,7 +854,7 @@ public class ActivityThreadTest {
                        false /* shouldSendCompatFakeFocus */);

        final ClientTransaction transaction = newTransaction(activity);
        addClientTransactionItem(transaction, resumeStateRequest);
        transaction.addTransactionItem(resumeStateRequest);

        return transaction;
    }
@@ -867,7 +865,7 @@ public class ActivityThreadTest {
                activity.getActivityToken(), 0 /* configChanges */);

        final ClientTransaction transaction = newTransaction(activity);
        addClientTransactionItem(transaction, stopStateRequest);
        transaction.addTransactionItem(stopStateRequest);

        return transaction;
    }
@@ -879,7 +877,7 @@ public class ActivityThreadTest {
                activity.getActivityToken(), config);

        final ClientTransaction transaction = newTransaction(activity);
        addClientTransactionItem(transaction, item);
        transaction.addTransactionItem(item);

        return transaction;
    }
@@ -891,7 +889,7 @@ public class ActivityThreadTest {
                resume);

        final ClientTransaction transaction = newTransaction(activity);
        addClientTransactionItem(transaction, item);
        transaction.addTransactionItem(item);

        return transaction;
    }
@@ -906,17 +904,6 @@ public class ActivityThreadTest {
        return ClientTransaction.obtain(activityThread.getApplicationThread());
    }

    private static void addClientTransactionItem(@NonNull ClientTransaction transaction,
            @NonNull ClientTransactionItem item) {
        if (Flags.bundleClientTransactionFlag()) {
            transaction.addTransactionItem(item);
        } else if (item.isActivityLifecycleItem()) {
            transaction.setLifecycleStateRequest((ActivityLifecycleItem) item);
        } else {
            transaction.addCallback(item);
        }
    }

    // Test activity
    public static class TestActivity extends Activity {
        static final String PIP_REQUESTED_OVERRIDE_ENTER = "pip_requested_override_enter";
Loading