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

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

Clean up activityWindowInfoFlag (2/n)

Remove the function from TaskFragmentOrganizerController.
Move the implementation from SplitController to TaskFragmentOrganizer so
that other implementation of TFOrganizer (system organizer for example)
can still use it to query the status.

Bug: 287582673
Test: atest WMJetpackUnitTests:SplitControllerTest
Flag: EXEMPT refactor for flag cleanup
Change-Id: Ide949b4457e787f6c117be0db463cc1825bb50f7
parent 033569f3
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