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

Commit 8e7dbf73 authored by Evan Rosky's avatar Evan Rosky Committed by Android (Google) Code Review
Browse files

Merge "Make taskview control into an interface [4/4]" into main

parents 022435cd 1f9072f2
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -20,8 +20,8 @@ import android.app.ActivityManager
import android.content.Context
import com.android.wm.shell.common.ShellExecutor
import com.android.wm.shell.taskview.TaskView
import com.android.wm.shell.taskview.TaskViewController
import com.android.wm.shell.taskview.TaskViewTaskController
import com.android.wm.shell.taskview.TaskViewTransitions
import org.mockito.kotlin.mock
import org.mockito.kotlin.whenever

@@ -33,9 +33,8 @@ class FakeBubbleTaskViewFactory(
    private val mainExecutor: ShellExecutor,
) : BubbleTaskViewFactory {
    override fun create(): BubbleTaskView {
        val taskViewTransitions = mock<TaskViewTransitions>()
        val taskViewTaskController = mock<TaskViewTaskController>()
        val taskView = TaskView(context, taskViewTransitions, taskViewTaskController)
        val taskView = TaskView(context, mock<TaskViewController>(), taskViewTaskController)
        val taskInfo = mock<ActivityManager.RunningTaskInfo>()
        whenever(taskViewTaskController.taskInfo).thenReturn(taskInfo)
        return BubbleTaskView(taskView, mainExecutor)
+11 −11
Original line number Diff line number Diff line
@@ -47,8 +47,8 @@ import com.android.wm.shell.bubbles.FakeBubbleExpandedViewManager
import com.android.wm.shell.bubbles.FakeBubbleFactory
import com.android.wm.shell.common.TestShellExecutor
import com.android.wm.shell.taskview.TaskView
import com.android.wm.shell.taskview.TaskViewController
import com.android.wm.shell.taskview.TaskViewTaskController
import com.android.wm.shell.taskview.TaskViewTransitions
import com.google.common.truth.Truth.assertThat
import java.util.concurrent.Semaphore
import java.util.concurrent.TimeUnit
@@ -167,8 +167,8 @@ class BubbleBarAnimationHelperTest {
    fun animateSwitch_bubbleToBubble_updateTaskBounds() {
        val fromBubble = createBubble("from").initialize(container)
        val toBubbleTaskController = mock<TaskViewTaskController>()
        val taskTransitions = mock<TaskViewTransitions>()
        val toBubble = createBubble("to", taskTransitions, toBubbleTaskController).initialize(
        val taskController = mock<TaskViewController>()
        val toBubble = createBubble("to", taskController, toBubbleTaskController).initialize(
            container)

        activityScenario.onActivity {
@@ -178,11 +178,11 @@ class BubbleBarAnimationHelperTest {
        }
        getInstrumentation().waitForIdleSync()
        // Clear invocations to ensure that bounds update happens after animation ends
        clearInvocations(taskTransitions)
        clearInvocations(taskController)
        getInstrumentation().runOnMainSync { animatorTestRule.advanceTimeBy(900) }
        getInstrumentation().waitForIdleSync()

        verify(taskTransitions).setTaskBounds(eq(toBubbleTaskController), any())
        verify(taskController).setTaskBounds(eq(toBubbleTaskController), any())
    }

    @Test
@@ -234,8 +234,8 @@ class BubbleBarAnimationHelperTest {
    @Test
    fun animateToRestPosition_updateTaskBounds() {
        val taskView = mock<TaskViewTaskController>()
        val tvTransitions = mock<TaskViewTransitions>()
        val bubble = createBubble("key", tvTransitions, taskView).initialize(container)
        val controller = mock<TaskViewController>()
        val bubble = createBubble("key", controller, taskView).initialize(container)

        val semaphore = Semaphore(0)
        val after = Runnable { semaphore.release() }
@@ -252,11 +252,11 @@ class BubbleBarAnimationHelperTest {
            animatorTestRule.advanceTimeBy(100)
        }
        // Clear invocations to ensure that bounds update happens after animation ends
        clearInvocations(tvTransitions)
        clearInvocations(controller)
        getInstrumentation().runOnMainSync { animatorTestRule.advanceTimeBy(900) }
        getInstrumentation().waitForIdleSync()

        verify(tvTransitions).setTaskBounds(eq(taskView), any())
        verify(controller).setTaskBounds(eq(taskView), any())
    }

    @Test
@@ -334,10 +334,10 @@ class BubbleBarAnimationHelperTest {

    private fun createBubble(
        key: String,
        taskViewTransitions: TaskViewTransitions = mock<TaskViewTransitions>(),
        taskViewController: TaskViewController = mock<TaskViewController>(),
        taskViewTaskController: TaskViewTaskController = mock<TaskViewTaskController>(),
    ): Bubble {
        val taskView = TaskView(context, taskViewTransitions, taskViewTaskController)
        val taskView = TaskView(context, taskViewController, taskViewTaskController)
        val taskInfo = mock<ActivityManager.RunningTaskInfo>()
        whenever(taskViewTaskController.taskInfo).thenReturn(taskInfo)
        val bubbleTaskView = BubbleTaskView(taskView, mainExecutor)
+2 −2
Original line number Diff line number Diff line
@@ -46,8 +46,8 @@ import com.android.wm.shell.bubbles.UiEventSubject.Companion.assertThat
import com.android.wm.shell.common.TestShellExecutor
import com.android.wm.shell.shared.handles.RegionSamplingHelper
import com.android.wm.shell.taskview.TaskView
import com.android.wm.shell.taskview.TaskViewController
import com.android.wm.shell.taskview.TaskViewTaskController
import com.android.wm.shell.taskview.TaskViewTransitions
import com.google.common.truth.Truth.assertThat
import com.google.common.truth.Truth.assertWithMessage
import com.google.common.util.concurrent.MoreExecutors.directExecutor
@@ -357,7 +357,7 @@ class BubbleBarExpandedViewTest {
    private inner class FakeBubbleTaskViewFactory : BubbleTaskViewFactory {
        override fun create(): BubbleTaskView {
            val taskViewTaskController = mock<TaskViewTaskController>()
            val taskView = TaskView(context, mock<TaskViewTransitions>(), taskViewTaskController)
            val taskView = TaskView(context, mock<TaskViewController>(), taskViewTaskController)
            val taskInfo = mock<ActivityManager.RunningTaskInfo>()
            whenever(taskViewTaskController.taskInfo).thenReturn(taskInfo)
            return BubbleTaskView(taskView, mainExecutor)
+6 −5
Original line number Diff line number Diff line
@@ -117,6 +117,7 @@ import com.android.wm.shell.sysui.ShellCommandHandler;
import com.android.wm.shell.sysui.ShellController;
import com.android.wm.shell.sysui.ShellInit;
import com.android.wm.shell.taskview.TaskView;
import com.android.wm.shell.taskview.TaskViewController;
import com.android.wm.shell.taskview.TaskViewRepository;
import com.android.wm.shell.taskview.TaskViewTaskController;
import com.android.wm.shell.taskview.TaskViewTransitions;
@@ -193,7 +194,7 @@ public class BubbleController implements ConfigurationChangeListener,
    private final TaskStackListenerImpl mTaskStackListener;
    private final ShellTaskOrganizer mTaskOrganizer;
    private final DisplayController mDisplayController;
    private final TaskViewTransitions mTaskViewTransitions;
    private final TaskViewController mTaskViewController;
    private final Transitions mTransitions;
    private final SyncTransactionQueue mSyncQueue;
    private final ShellController mShellController;
@@ -350,10 +351,10 @@ public class BubbleController implements ConfigurationChangeListener,
                        com.android.internal.R.dimen.importance_ring_stroke_width));
        mDisplayController = displayController;
        if (TaskViewTransitions.useRepo()) {
            mTaskViewTransitions = new TaskViewTransitions(transitions, taskViewRepository,
            mTaskViewController = new TaskViewTransitions(transitions, taskViewRepository,
                    organizer, syncQueue);
        } else {
            mTaskViewTransitions = taskViewTransitions;
            mTaskViewController = taskViewTransitions;
        }
        mTransitions = transitions;
        mOneHandedOptional = oneHandedOptional;
@@ -366,8 +367,8 @@ public class BubbleController implements ConfigurationChangeListener,
            @Override
            public BubbleTaskView create() {
                TaskViewTaskController taskViewTaskController = new TaskViewTaskController(
                        context, organizer, mTaskViewTransitions, syncQueue);
                TaskView taskView = new TaskView(context, mTaskViewTransitions,
                        context, organizer, mTaskViewController, syncQueue);
                TaskView taskView = new TaskView(context, mTaskViewController,
                        taskViewTaskController);
                return new BubbleTaskView(taskView, mainExecutor);
            }
+10 −10
Original line number Diff line number Diff line
@@ -74,16 +74,16 @@ public class TaskView extends SurfaceView implements SurfaceHolder.Callback,
    private final Rect mTmpRootRect = new Rect();
    private final int[] mTmpLocation = new int[2];
    private final Rect mBoundsOnScreen = new Rect();
    private final TaskViewTransitions mTaskViewTransitions;
    private final TaskViewController mTaskViewController;
    private final TaskViewTaskController mTaskViewTaskController;
    private Region mObscuredTouchRegion;
    private Insets mCaptionInsets;
    private Handler mHandler;

    public TaskView(Context context, TaskViewTransitions taskViewTransitions,
    public TaskView(Context context, TaskViewController taskViewController,
            TaskViewTaskController taskViewTaskController) {
        super(context, null, 0, 0, true /* disableBackgroundLayer */);
        mTaskViewTransitions = taskViewTransitions;
        mTaskViewController = taskViewController;
        mTaskViewTaskController = taskViewTaskController;
        // TODO(b/266736992): Think about a better way to set the TaskViewBase on the
        //  TaskViewTaskController and vice-versa
@@ -103,7 +103,7 @@ public class TaskView extends SurfaceView implements SurfaceHolder.Callback,
     */
    public void startActivity(@NonNull PendingIntent pendingIntent, @Nullable Intent fillInIntent,
            @NonNull ActivityOptions options, @Nullable Rect launchBounds) {
        mTaskViewTransitions.startActivity(mTaskViewTaskController, pendingIntent, fillInIntent,
        mTaskViewController.startActivity(mTaskViewTaskController, pendingIntent, fillInIntent,
                options, launchBounds);
    }

@@ -119,7 +119,7 @@ public class TaskView extends SurfaceView implements SurfaceHolder.Callback,
     */
    public void startShortcutActivity(@NonNull ShortcutInfo shortcut,
            @NonNull ActivityOptions options, @Nullable Rect launchBounds) {
        mTaskViewTransitions.startShortcutActivity(mTaskViewTaskController, shortcut, options,
        mTaskViewController.startShortcutActivity(mTaskViewTaskController, shortcut, options,
                launchBounds);
    }

@@ -127,12 +127,12 @@ public class TaskView extends SurfaceView implements SurfaceHolder.Callback,
     * Moves the current task in taskview out of the view and back to fullscreen.
     */
    public void moveToFullscreen() {
        mTaskViewTransitions.moveTaskViewToFullscreen(mTaskViewTaskController);
        mTaskViewController.moveTaskViewToFullscreen(mTaskViewTaskController);
    }

    @Override
    public void onTaskAppeared(ActivityManager.RunningTaskInfo taskInfo, SurfaceControl leash) {
        if (mTaskViewTransitions.isUsingShellTransitions()) {
        if (mTaskViewController.isUsingShellTransitions()) {
            // No need for additional work as it is already taken care of during
            // prepareOpenAnimation().
            return;
@@ -227,14 +227,14 @@ public class TaskView extends SurfaceView implements SurfaceHolder.Callback,
     */
    public void onLocationChanged() {
        getBoundsOnScreen(mTmpRect);
        mTaskViewTransitions.setTaskBounds(mTaskViewTaskController, mTmpRect);
        mTaskViewController.setTaskBounds(mTaskViewTaskController, mTmpRect);
    }

    /**
     * Call to remove the task from window manager. This task will not appear in recents.
     */
    public void removeTask() {
        mTaskViewTransitions.removeTaskView(mTaskViewTaskController, null /* token */);
        mTaskViewController.removeTaskView(mTaskViewTaskController, null /* token */);
    }

    /**
@@ -259,7 +259,7 @@ public class TaskView extends SurfaceView implements SurfaceHolder.Callback,
    public void surfaceChanged(@androidx.annotation.NonNull SurfaceHolder holder, int format,
            int width, int height) {
        getBoundsOnScreen(mTmpRect);
        mTaskViewTransitions.setTaskBounds(mTaskViewTaskController, mTmpRect);
        mTaskViewController.setTaskBounds(mTaskViewTaskController, mTmpRect);
    }

    @Override
Loading