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

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

Merge "Clean up activityWindowInfoFlag (2/n)" into main

parents a2cf8a5e b4dbd650
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -18,6 +18,8 @@ package android.window;

import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.Activity;
import android.app.ActivityThread;
import android.graphics.Rect;
import android.os.Parcel;
import android.os.Parcelable;
@@ -144,4 +146,15 @@ public final class ActivityWindowInfo implements Parcelable {
                + ", taskFragmentBounds=" + mTaskFragmentBounds
                + "}";
    }

    /** Gets the {@link ActivityWindowInfo} of the given activity. */
    @Nullable
    public static ActivityWindowInfo getActivityWindowInfo(@NonNull Activity activity) {
        if (activity.isFinishing()) {
            return null;
        }
        final ActivityThread.ActivityClientRecord record = ActivityThread.currentActivityThread()
                .getActivityClient(activity.getActivityToken());
        return record != null ? record.getActivityWindowInfo() : null;
    }
}
+0 −6
Original line number Diff line number Diff line
@@ -38,12 +38,6 @@ interface ITaskFragmentOrganizerController {
     */
    void unregisterOrganizer(in ITaskFragmentOrganizer organizer);

    /**
     * Checks if an activity organized by a {@link android.window.TaskFragmentOrganizer} and
     * only occupies a portion of Task bounds.
     */
    boolean isActivityEmbedded(in IBinder activityToken);

    /**
     * Notifies the server that the organizer has finished handling the given transaction. The
     * server should apply the given {@link WindowContainerTransaction} for the necessary changes.
+10 −8
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import static android.view.WindowManager.TRANSIT_CLOSE;
import static android.view.WindowManager.TRANSIT_FIRST_CUSTOM;
import static android.view.WindowManager.TRANSIT_NONE;
import static android.view.WindowManager.TRANSIT_OPEN;
import static android.window.ActivityWindowInfo.getActivityWindowInfo;

import android.annotation.CallSuper;
import android.annotation.FlaggedApi;
@@ -29,6 +30,7 @@ import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.RequiresPermission;
import android.annotation.TestApi;
import android.app.Activity;
import android.os.Bundle;
import android.os.IBinder;
import android.os.RemoteException;
@@ -38,6 +40,7 @@ import com.android.window.flags.Flags;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.Objects;
import java.util.concurrent.Executor;

/**
@@ -324,16 +327,15 @@ public class TaskFragmentOrganizer extends WindowOrganizer {
    }

    /**
     * Checks if an activity organized by a {@link android.window.TaskFragmentOrganizer} and
     * Checks if an activity is organized by a {@link android.window.TaskFragmentOrganizer} and
     * only occupies a portion of Task bounds.
     *
     * @see ActivityWindowInfo for additional window info.
     * @hide
     */
    // TODO(b/287582673): cleanup
    public boolean isActivityEmbedded(@NonNull IBinder activityToken) {
        try {
            return getController().isActivityEmbedded(activityToken);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
    public static boolean isActivityEmbedded(@NonNull Activity activity) {
        Objects.requireNonNull(activity);
        final ActivityWindowInfo activityWindowInfo = getActivityWindowInfo(activity);
        return activityWindowInfo != null && activityWindowInfo.isEmbedded();
    }
}
+5 −14
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED;
import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED;
import static android.view.Display.DEFAULT_DISPLAY;
import static android.view.WindowManager.TRANSIT_CLOSE;
import static android.window.ActivityWindowInfo.getActivityWindowInfo;
import static android.window.TaskFragmentOperation.OP_TYPE_REPARENT_ACTIVITY_TO_TASK_FRAGMENT;
import static android.window.TaskFragmentOperation.OP_TYPE_START_ACTIVITY_IN_TASK_FRAGMENT;
import static android.window.TaskFragmentOrganizer.KEY_ERROR_CALLBACK_OP_TYPE;
@@ -80,6 +81,7 @@ import android.window.ActivityWindowInfo;
import android.window.TaskFragmentAnimationParams;
import android.window.TaskFragmentInfo;
import android.window.TaskFragmentOperation;
import android.window.TaskFragmentOrganizer;
import android.window.TaskFragmentParentInfo;
import android.window.TaskFragmentTransaction;
import android.window.WindowContainerTransaction;
@@ -2553,9 +2555,9 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen
        return ActivityThread.currentActivityThread().getActivity(activityToken);
    }

    @VisibleForTesting
    @Nullable
    ActivityThread.ActivityClientRecord getActivityClientRecord(@NonNull Activity activity) {
    private ActivityThread.ActivityClientRecord getActivityClientRecord(
            @NonNull Activity activity) {
        return ActivityThread.currentActivityThread()
                .getActivityClient(activity.getActivityToken());
    }
@@ -3092,10 +3094,8 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen
     */
    @Override
    public boolean isActivityEmbedded(@NonNull Activity activity) {
        Objects.requireNonNull(activity);
        synchronized (mLock) {
            final ActivityWindowInfo activityWindowInfo = getActivityWindowInfo(activity);
            return activityWindowInfo != null && activityWindowInfo.isEmbedded();
            return TaskFragmentOrganizer.isActivityEmbedded(activity);
        }
    }

@@ -3165,15 +3165,6 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen
        }
    }

    @Nullable
    private ActivityWindowInfo getActivityWindowInfo(@NonNull Activity activity) {
        if (activity.isFinishing()) {
            return null;
        }
        final ActivityThread.ActivityClientRecord record = getActivityClientRecord(activity);
        return record != null ? record.getActivityWindowInfo() : null;
    }

    @NonNull
    private static EmbeddedActivityWindowInfo translateActivityWindowInfo(
            @NonNull Activity activity, @NonNull ActivityWindowInfo activityWindowInfo) {
+5 −1
Original line number Diff line number Diff line
@@ -165,6 +165,7 @@ public class SplitControllerTest {
    private Consumer<List<SplitInfo>> mEmbeddingCallback;
    private List<SplitInfo> mSplitInfos;
    private TransactionManager mTransactionManager;
    private ActivityThread mCurrentActivityThread;

    @Before
    public void setUp() {
@@ -181,10 +182,12 @@ public class SplitControllerTest {
        };
        mSplitController.setSplitInfoCallback(mEmbeddingCallback);
        mTransactionManager = mSplitController.mTransactionManager;
        mCurrentActivityThread = ActivityThread.currentActivityThread();
        spyOn(mSplitController);
        spyOn(mSplitPresenter);
        spyOn(mEmbeddingCallback);
        spyOn(mTransactionManager);
        spyOn(mCurrentActivityThread);
        doNothing().when(mSplitPresenter).applyTransaction(any(), anyInt(), anyBoolean());
        final Configuration activityConfig = new Configuration();
        activityConfig.windowConfiguration.setBounds(TASK_BOUNDS);
@@ -1668,7 +1671,8 @@ public class SplitControllerTest {
        final IBinder activityToken = new Binder();
        doReturn(activityToken).when(activity).getActivityToken();
        doReturn(activity).when(mSplitController).getActivity(activityToken);
        doReturn(activityClientRecord).when(mSplitController).getActivityClientRecord(activity);
        doReturn(activityClientRecord).when(mCurrentActivityThread).getActivityClient(
                activityToken);
        doReturn(taskId).when(activity).getTaskId();
        doReturn(new ActivityInfo()).when(activity).getActivityInfo();
        doReturn(DEFAULT_DISPLAY).when(activity).getDisplayId();
Loading