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

Commit 12f5678e authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Move task positioning tasks from WindowManagerService.mH"

parents d361a515 ce2f97ac
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -203,7 +203,7 @@ class TaskPositioner {

                    // Post back to WM to handle clean-ups. We still need the input
                    // event handler for the last finishInputEvent()!
                    mService.mH.sendEmptyMessage(H.FINISH_TASK_POSITIONING);
                    mService.mTaskPositioningController.finishTaskPositioning();
                }
                handled = true;
            } catch (Exception e) {
+34 −25
Original line number Diff line number Diff line
@@ -22,6 +22,8 @@ import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM;
import android.annotation.Nullable;
import android.app.IActivityManager;
import android.os.RemoteException;
import android.os.Handler;
import android.os.Looper;
import android.util.Slog;
import android.view.Display;
import android.view.IWindow;
@@ -37,6 +39,7 @@ class TaskPositioningController {
    private final InputManagerService mInputManager;
    private final InputMonitor mInputMonitor;
    private final IActivityManager mActivityManager;
    private final Handler mHandler;

    @GuardedBy("WindowManagerSerivce.mWindowMap")
    private @Nullable TaskPositioner mTaskPositioner;
@@ -50,11 +53,12 @@ class TaskPositioningController {
    }

    TaskPositioningController(WindowManagerService service, InputManagerService inputManager,
            InputMonitor inputMonitor, IActivityManager activityManager) {
            InputMonitor inputMonitor, IActivityManager activityManager, Looper looper) {
        mService = service;
        mInputMonitor = inputMonitor;
        mInputManager = inputManager;
        mActivityManager = activityManager;
        mHandler = new Handler(looper);
    }

    boolean startMovingTask(IWindow window, float startX, float startY) {
@@ -75,6 +79,7 @@ class TaskPositioningController {
    }

    void handleTapOutsideTask(DisplayContent displayContent, int x, int y) {
        mHandler.post(() -> {
            int taskId = -1;
            synchronized (mService.mWindowMap) {
                final Task task = displayContent.findTaskForResizePoint(x, y);
@@ -91,8 +96,10 @@ class TaskPositioningController {
            if (taskId >= 0) {
                try {
                    mActivityManager.setFocusedTask(taskId);
            } catch(RemoteException e) {}
                } catch (RemoteException e) {
                }
            }
        });
    }

    private boolean startPositioningLocked(WindowState win, boolean resize,
@@ -145,7 +152,8 @@ class TaskPositioningController {
        return true;
    }

    void finishPositioning() {
    void finishTaskPositioning() {
        mHandler.post(() -> {
            if (DEBUG_TASK_POSITIONING) Slog.d(TAG_WM, "finishPositioning");

            synchronized (mService.mWindowMap) {
@@ -155,5 +163,6 @@ class TaskPositioningController {
                    mInputMonitor.updateInputWindowsLw(true /*force*/);
                }
            }
        });
    }
}
+2 −2
Original line number Diff line number Diff line
@@ -62,8 +62,8 @@ public class TaskTapPointerEventListener implements PointerEventListener {

                synchronized (this) {
                    if (!mTouchExcludeRegion.contains(x, y)) {
                        mService.mH.obtainMessage(H.TAP_OUTSIDE_TASK,
                                x, y, mDisplayContent).sendToTarget();
                        mService.mTaskPositioningController.handleTapOutsideTask(
                                mDisplayContent, x, y);
                    }
                }
            }
+2 −16
Original line number Diff line number Diff line
@@ -1086,8 +1086,8 @@ public class WindowManagerService extends IWindowManager.Stub
        mAllowTheaterModeWakeFromLayout = context.getResources().getBoolean(
                com.android.internal.R.bool.config_allowTheaterModeWakeFromWindowLayout);

        mTaskPositioningController =
                new TaskPositioningController(this, mInputManager, mInputMonitor, mActivityManager);
        mTaskPositioningController = new TaskPositioningController(
                this, mInputManager, mInputMonitor, mActivityManager, mH.getLooper());
        mDragDropController = new DragDropController(this, mH.getLooper());

        LocalServices.addService(WindowManagerInternal.class, new LocalService());
@@ -4609,7 +4609,6 @@ public class WindowManagerService extends IWindowManager.Stub
        public static final int DO_ANIMATION_CALLBACK = 26;

        public static final int CLIENT_FREEZE_TIMEOUT = 30;
        public static final int TAP_OUTSIDE_TASK = 31;
        public static final int NOTIFY_ACTIVITY_DRAWN = 32;

        public static final int ALL_WINDOWS_DRAWN = 33;
@@ -4623,8 +4622,6 @@ public class WindowManagerService extends IWindowManager.Stub
        public static final int RESET_ANR_MESSAGE = 38;
        public static final int WALLPAPER_DRAW_PENDING_TIMEOUT = 39;

        public static final int FINISH_TASK_POSITIONING = 40;

        public static final int UPDATE_DOCKED_STACK_DIVIDER = 41;

        public static final int WINDOW_REPLACEMENT_TIMEOUT = 46;
@@ -4901,17 +4898,6 @@ public class WindowManagerService extends IWindowManager.Stub
                    break;
                }

                case TAP_OUTSIDE_TASK: {
                    mTaskPositioningController.handleTapOutsideTask(
                            (DisplayContent)msg.obj, msg.arg1, msg.arg2);
                }
                break;

                case FINISH_TASK_POSITIONING: {
                    mTaskPositioningController.finishPositioning();
                }
                break;

                case NOTIFY_ACTIVITY_DRAWN:
                    try {
                        mActivityManager.notifyActivityDrawn((IBinder) msg.obj);
+9 −6
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ import android.view.InputChannel;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;

/**
 * Tests for the {@link TaskPositioningController} class.
 *
@@ -78,9 +79,9 @@ public class TaskPositioningControllerTests extends WindowTestsBase {
            assertNotNull(mTarget.getDragWindowHandleLocked());
        }

        assertTrue(sWm.mH.runWithScissors(() -> {
            mTarget.finishPositioning();
        }, TIMEOUT_MS));
        mTarget.finishTaskPositioning();
        // Wait until the looper processes finishTaskPositioning.
        assertTrue(sWm.mH.runWithScissors(() -> {}, TIMEOUT_MS));

        assertFalse(mTarget.isPositioningLocked());
        assertNull(mTarget.getDragWindowHandleLocked());
@@ -99,15 +100,17 @@ public class TaskPositioningControllerTests extends WindowTestsBase {
        assertNotNull(mWindow.getTask().getTopVisibleAppMainWindow());

        mTarget.handleTapOutsideTask(content, 0, 0);
        // Wait until the looper processes finishTaskPositioning.
        assertTrue(sWm.mH.runWithScissors(() -> {}, TIMEOUT_MS));

        synchronized (sWm.mWindowMap) {
            assertTrue(mTarget.isPositioningLocked());
            assertNotNull(mTarget.getDragWindowHandleLocked());
        }

        assertTrue(sWm.mH.runWithScissors(() -> {
            mTarget.finishPositioning();
        }, TIMEOUT_MS));
        mTarget.finishTaskPositioning();
        // Wait until the looper processes finishTaskPositioning.
        assertTrue(sWm.mH.runWithScissors(() -> {}, TIMEOUT_MS));

        assertFalse(mTarget.isPositioningLocked());
        assertNull(mTarget.getDragWindowHandleLocked());