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

Commit 8840cf4f authored by Chris Li's avatar Chris Li Committed by Android (Google) Code Review
Browse files

Merge "Synchronize window config updates (5/n)" into main

parents f19a20ef 8d2fb5b7
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ import static android.view.Display.INVALID_DISPLAY;
import static android.window.ConfigurationHelper.freeTextLayoutCachesIfNeeded;
import static android.window.ConfigurationHelper.isDifferentDisplay;
import static android.window.ConfigurationHelper.shouldUpdateResources;

import static com.android.internal.annotations.VisibleForTesting.Visibility.PACKAGE;
import static com.android.internal.os.SafeZipPathValidatorCallback.VALIDATE_ZIP_PATH_FOR_PATH_TRAVERSAL;
import static com.android.sdksandbox.flags.Flags.sandboxActivitySdkBasedContext;
@@ -3663,10 +3664,9 @@ public final class ActivityThread extends ClientTransactionHandler
            int resultCode, Intent data) {
        if (DEBUG_RESULTS) Slog.v(TAG, "sendActivityResult: id=" + id
                + " req=" + requestCode + " res=" + resultCode + " data=" + data);
        ArrayList<ResultInfo> list = new ArrayList<ResultInfo>();
        final ArrayList<ResultInfo> list = new ArrayList<>();
        list.add(new ResultInfo(id, requestCode, resultCode, data));
        final ClientTransaction clientTransaction = ClientTransaction.obtain(mAppThread,
                activityToken);
        final ClientTransaction clientTransaction = ClientTransaction.obtain(mAppThread);
        clientTransaction.addCallback(ActivityResultItem.obtain(activityToken, list));
        try {
            mAppThread.scheduleTransaction(clientTransaction);
@@ -4441,7 +4441,7 @@ public final class ActivityThread extends ClientTransactionHandler
    }

    private void schedulePauseWithUserLeavingHint(ActivityClientRecord r) {
        final ClientTransaction transaction = ClientTransaction.obtain(this.mAppThread, r.token);
        final ClientTransaction transaction = ClientTransaction.obtain(mAppThread);
        transaction.setLifecycleStateRequest(PauseActivityItem.obtain(r.token,
                r.activity.isFinishing(), /* userLeaving */ true, r.activity.mConfigChangeFlags,
                /* dontReport */ false, /* autoEnteringPip */ false));
@@ -4449,7 +4449,7 @@ public final class ActivityThread extends ClientTransactionHandler
    }

    private void scheduleResume(ActivityClientRecord r) {
        final ClientTransaction transaction = ClientTransaction.obtain(this.mAppThread, r.token);
        final ClientTransaction transaction = ClientTransaction.obtain(mAppThread);
        transaction.setLifecycleStateRequest(ResumeActivityItem.obtain(r.token,
                /* isForward */ false, /* shouldSendCompatFakeFocus */ false));
        executeTransaction(transaction);
@@ -6041,7 +6041,7 @@ public final class ActivityThread extends ClientTransactionHandler
        final ActivityLifecycleItem lifecycleRequest =
                TransactionExecutorHelper.getLifecycleRequestForCurrentState(r);
        // Schedule the transaction.
        final ClientTransaction transaction = ClientTransaction.obtain(this.mAppThread, r.token);
        final ClientTransaction transaction = ClientTransaction.obtain(mAppThread);
        transaction.addCallback(activityRelaunchItem);
        transaction.setLifecycleStateRequest(lifecycleRequest);
        executeTransaction(transaction);
+2 −3
Original line number Diff line number Diff line
@@ -41,7 +41,7 @@ public class ActivityConfigurationChangeItem extends ActivityTransactionItem {
    private Configuration mConfiguration;

    @Override
    public void preExecute(@NonNull ClientTransactionHandler client, @Nullable IBinder token) {
    public void preExecute(@NonNull ClientTransactionHandler client) {
        CompatibilityInfo.applyOverrideScaleIfNeeded(mConfiguration);
        // Notify the client of an upcoming change in the token configuration. This ensures that
        // batches of config change items only process the newest configuration.
@@ -59,8 +59,7 @@ public class ActivityConfigurationChangeItem extends ActivityTransactionItem {

    @Nullable
    @Override
    public Context getContextToUpdate(@NonNull ClientTransactionHandler client,
            @Nullable IBinder token) {
    public Context getContextToUpdate(@NonNull ClientTransactionHandler client) {
        return client.getActivity(getActivityToken());
    }

+2 −2
Original line number Diff line number Diff line
@@ -56,7 +56,7 @@ public class ActivityRelaunchItem extends ActivityTransactionItem {
    private ActivityClientRecord mActivityClientRecord;

    @Override
    public void preExecute(@NonNull ClientTransactionHandler client, @NonNull IBinder token) {
    public void preExecute(@NonNull ClientTransactionHandler client) {
        // The local config is already scaled so only apply if this item is from server side.
        if (!client.isExecutingLocalTransaction()) {
            CompatibilityInfo.applyOverrideScaleIfNeeded(mConfig);
@@ -78,7 +78,7 @@ public class ActivityRelaunchItem extends ActivityTransactionItem {
    }

    @Override
    public void postExecute(@NonNull ClientTransactionHandler client, @NonNull IBinder token,
    public void postExecute(@NonNull ClientTransactionHandler client,
            @NonNull PendingTransactionActions pendingActions) {
        final ActivityClientRecord r = getActivityClientRecord(client);
        client.reportRelaunch(r);
+13 −2
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package android.app.servertransaction;

import static android.app.servertransaction.TransactionExecutorHelper.getActivityName;

import static com.android.internal.annotations.VisibleForTesting.Visibility.PACKAGE;

import android.annotation.CallSuper;
@@ -28,6 +30,7 @@ import android.os.Parcel;

import com.android.internal.annotations.VisibleForTesting;

import java.io.PrintWriter;
import java.util.Objects;

/**
@@ -49,14 +52,14 @@ public abstract class ActivityTransactionItem extends ClientTransactionItem {
    ActivityTransactionItem() {}

    @Override
    public final void execute(@NonNull ClientTransactionHandler client, @NonNull IBinder token,
    public final void execute(@NonNull ClientTransactionHandler client,
            @NonNull PendingTransactionActions pendingActions) {
        final ActivityClientRecord r = getActivityClientRecord(client);
        execute(client, r, pendingActions);
    }

    /**
     * Like {@link #execute(ClientTransactionHandler, IBinder, PendingTransactionActions)},
     * Like {@link #execute(ClientTransactionHandler, PendingTransactionActions)},
     * but take non-null {@link ActivityClientRecord} as a parameter.
     */
    @VisibleForTesting(visibility = PACKAGE)
@@ -111,6 +114,14 @@ public abstract class ActivityTransactionItem extends ClientTransactionItem {
        mActivityToken = null;
    }

    @Override
    void dump(@NonNull String prefix, @NonNull PrintWriter pw,
            @NonNull ClientTransactionHandler transactionHandler) {
        super.dump(prefix, pw, transactionHandler);
        pw.append(prefix).append("Target activity: ")
                .println(getActivityName(mActivityToken, transactionHandler));
    }

    // Subclass must override and call super.equals to compare the mActivityToken.
    @SuppressWarnings("EqualsGetClass")
    @CallSuper
+9 −12
Original line number Diff line number Diff line
@@ -16,8 +16,8 @@

package android.app.servertransaction;

import android.annotation.NonNull;
import android.app.ClientTransactionHandler;
import android.os.IBinder;

/**
 * Base interface for individual requests from server to client.
@@ -27,31 +27,28 @@ import android.os.IBinder;
public interface BaseClientRequest extends ObjectPoolItem {

    /**
     * Prepare the client request before scheduling.
     * Prepares the client request before scheduling.
     * An example of this might be informing about pending updates for some values.
     *
     * @param client Target client handler.
     * @param token  Target activity token.
     */
    default void preExecute(ClientTransactionHandler client, IBinder token) {
    default void preExecute(@NonNull ClientTransactionHandler client) {
    }

    /**
     * Execute the request.
     * Executes the request.
     * @param client Target client handler.
     * @param token Target activity token.
     * @param pendingActions Container that may have data pending to be used.
     */
    void execute(ClientTransactionHandler client, IBinder token,
            PendingTransactionActions pendingActions);
    void execute(@NonNull ClientTransactionHandler client,
            @NonNull PendingTransactionActions pendingActions);

    /**
     * Perform all actions that need to happen after execution, e.g. report the result to server.
     * Performs all actions that need to happen after execution, e.g. report the result to server.
     * @param client Target client handler.
     * @param token Target activity token.
     * @param pendingActions Container that may have data pending to be used.
     */
    default void postExecute(ClientTransactionHandler client, IBinder token,
            PendingTransactionActions pendingActions) {
    default void postExecute(@NonNull ClientTransactionHandler client,
            @NonNull PendingTransactionActions pendingActions) {
    }
}
Loading