Revert "Check if cursor has moved out of viewport bounds in Curs..."

Revert submission 30111126-cd-cursor

Reason for revert: DroidMonitor: Potential culprit for http://b/379706345 - verifying through ABTD before revert submission. This is part of the standard investigation process, and does not mean your CL will be reverted.

Reverted changes: /q/submissionid:30111126-cd-cursor

Change-Id: Ibff6c02be1359729802d4c85fa8dc0fdb4c75492
diff --git a/libs/input/MouseCursorController.cpp b/libs/input/MouseCursorController.cpp
index 4330f0a..d993b87 100644
--- a/libs/input/MouseCursorController.cpp
+++ b/libs/input/MouseCursorController.cpp
@@ -28,15 +28,13 @@
 #define INDENT "  "
 #define INDENT2 "    "
 
-namespace android {
-
 namespace {
-
 // Time to spend fading out the pointer completely.
 const nsecs_t POINTER_FADE_DURATION = 500 * 1000000LL; // 500 ms
-
 } // namespace
 
+namespace android {
+
 // --- MouseCursorController ---
 
 MouseCursorController::MouseCursorController(PointerControllerContext& context)
@@ -66,21 +64,17 @@
     mLocked.pointerSprite.clear();
 }
 
-vec2 MouseCursorController::move(float deltaX, float deltaY) {
+void MouseCursorController::move(float deltaX, float deltaY) {
 #if DEBUG_MOUSE_CURSOR_UPDATES
     ALOGD("Move pointer by deltaX=%0.3f, deltaY=%0.3f", deltaX, deltaY);
 #endif
     if (deltaX == 0.0f && deltaY == 0.0f) {
-        return {};
+        return;
     }
 
-    // When transition occurs, the MouseCursorController object may or may not be deleted, depending
-    // if there's another display on the other side of the transition. At this point we still need
-    // to move the cursor to the boundary.
     std::scoped_lock lock(mLock);
-    const vec2 pos{mLocked.pointerX + deltaX, mLocked.pointerY + deltaY};
-    setPositionLocked(pos.x, pos.y);
-    return vec2{pos.x - mLocked.pointerX, pos.y - mLocked.pointerY};
+
+    setPositionLocked(mLocked.pointerX + deltaX, mLocked.pointerY + deltaY);
 }
 
 void MouseCursorController::setPosition(float x, float y) {
@@ -88,26 +82,22 @@
     ALOGD("Set pointer position to x=%0.3f, y=%0.3f", x, y);
 #endif
     std::scoped_lock lock(mLock);
-
     setPositionLocked(x, y);
 }
 
-FloatRect MouseCursorController::getBoundsLocked() REQUIRES(mLock) {
+void MouseCursorController::setPositionLocked(float x, float y) REQUIRES(mLock) {
+    const auto& v = mLocked.viewport;
+    if (!v.isValid()) return;
+
     // The valid bounds for a mouse cursor. Since the right and bottom edges are considered outside
     // the display, clip the bounds by one pixel instead of letting the cursor get arbitrarily
     // close to the outside edge.
-    return FloatRect{
+    const FloatRect bounds{
             static_cast<float>(mLocked.viewport.logicalLeft),
             static_cast<float>(mLocked.viewport.logicalTop),
             static_cast<float>(mLocked.viewport.logicalRight - 1),
             static_cast<float>(mLocked.viewport.logicalBottom - 1),
     };
-}
-void MouseCursorController::setPositionLocked(float x, float y) REQUIRES(mLock) {
-    const auto& v = mLocked.viewport;
-    if (!v.isValid()) return;
-
-    const FloatRect bounds = getBoundsLocked();
     mLocked.pointerX = std::max(bounds.left, std::min(bounds.right, x));
     mLocked.pointerY = std::max(bounds.top, std::min(bounds.bottom, y));
 
diff --git a/libs/input/MouseCursorController.h b/libs/input/MouseCursorController.h
index 10f0d76..12b31a8 100644
--- a/libs/input/MouseCursorController.h
+++ b/libs/input/MouseCursorController.h
@@ -20,6 +20,9 @@
 #include <gui/DisplayEventReceiver.h>
 #include <input/DisplayViewport.h>
 #include <input/Input.h>
+#include <utils/BitSet.h>
+#include <utils/Looper.h>
+#include <utils/RefBase.h>
 
 #include <functional>
 #include <map>
@@ -40,8 +43,7 @@
     MouseCursorController(PointerControllerContext& context);
     ~MouseCursorController();
 
-    // Move the pointer and return unconsumed delta
-    vec2 move(float deltaX, float deltaY);
+    void move(float deltaX, float deltaY);
     void setPosition(float x, float y);
     FloatPoint getPosition() const;
     ui::LogicalDisplayId getDisplayId() const;
@@ -111,7 +113,6 @@
     bool doFadingAnimationLocked(nsecs_t timestamp);
 
     void startAnimationLocked();
-    FloatRect getBoundsLocked();
 };
 
 } // namespace android
diff --git a/libs/input/PointerController.cpp b/libs/input/PointerController.cpp
index 59397da..78d7d3a 100644
--- a/libs/input/PointerController.cpp
+++ b/libs/input/PointerController.cpp
@@ -138,18 +138,15 @@
     return mDisplayInfoListener->mLock;
 }
 
-vec2 PointerController::move(float deltaX, float deltaY) {
+void PointerController::move(float deltaX, float deltaY) {
     const ui::LogicalDisplayId displayId = mCursorController.getDisplayId();
-    ui::Transform transform;
+    vec2 transformed;
     {
         std::scoped_lock lock(getLock());
-        transform = getTransformForDisplayLocked(displayId);
+        const auto& transform = getTransformForDisplayLocked(displayId);
+        transformed = transformWithoutTranslation(transform, {deltaX, deltaY});
     }
-
-    vec2 transformed = transformWithoutTranslation(transform, {deltaX, deltaY});
-
-    vec2 unconsumedDelta = mCursorController.move(transformed.x, transformed.y);
-    return transformWithoutTranslation(transform.inverse(), unconsumedDelta);
+    mCursorController.move(transformed.x, transformed.y);
 }
 
 void PointerController::setPosition(float x, float y) {
diff --git a/libs/input/PointerController.h b/libs/input/PointerController.h
index 69bef54..ee8d121 100644
--- a/libs/input/PointerController.h
+++ b/libs/input/PointerController.h
@@ -51,7 +51,7 @@
 
     ~PointerController() override;
 
-    vec2 move(float deltaX, float deltaY) override;
+    void move(float deltaX, float deltaY) override;
     void setPosition(float x, float y) override;
     FloatPoint getPosition() const override;
     ui::LogicalDisplayId getDisplayId() const override;
@@ -165,7 +165,7 @@
 
     ~TouchPointerController() override;
 
-    vec2 move(float, float) override {
+    void move(float, float) override {
         LOG_ALWAYS_FATAL("Should not be called");
     }
     void setPosition(float, float) override {
diff --git a/libs/input/tests/PointerController_test.cpp b/libs/input/tests/PointerController_test.cpp
index 80c934a..5b00fca 100644
--- a/libs/input/tests/PointerController_test.cpp
+++ b/libs/input/tests/PointerController_test.cpp
@@ -40,8 +40,6 @@
     CURSOR_TYPE_CUSTOM = -1,
 };
 
-static constexpr float EPSILON = MotionEvent::ROUNDING_PRECISION;
-
 using ::testing::AllOf;
 using ::testing::Field;
 using ::testing::NiceMock;
@@ -401,135 +399,6 @@
                          testing::Values(PointerControllerInterface::ControllerType::MOUSE,
                                          PointerControllerInterface::ControllerType::STYLUS));
 
-class MousePointerControllerTest : public PointerControllerTest {
-protected:
-    MousePointerControllerTest() {
-        sp<MockSprite> testPointerSprite(new NiceMock<MockSprite>);
-        EXPECT_CALL(*mSpriteController, createSprite).WillOnce(Return(testPointerSprite));
-
-        // create a mouse pointer controller
-        mPointerController =
-                PointerController::create(mPolicy, mLooper, *mSpriteController,
-                                          PointerControllerInterface::ControllerType::MOUSE);
-
-        // set display viewport
-        DisplayViewport viewport;
-        viewport.displayId = ui::LogicalDisplayId::DEFAULT;
-        viewport.logicalRight = 5;
-        viewport.logicalBottom = 5;
-        viewport.physicalRight = 5;
-        viewport.physicalBottom = 5;
-        viewport.deviceWidth = 5;
-        viewport.deviceHeight = 5;
-        mPointerController->setDisplayViewport(viewport);
-    }
-};
-
-struct MousePointerControllerTestParam {
-    vec2 startPosition;
-    vec2 delta;
-    vec2 endPosition;
-    vec2 unconsumedDelta;
-};
-
-class PointerControllerViewportTransitionTest
-      : public MousePointerControllerTest,
-        public testing::WithParamInterface<MousePointerControllerTestParam> {};
-
-TEST_P(PointerControllerViewportTransitionTest, testPointerViewportTransition) {
-    const auto& params = GetParam();
-
-    mPointerController->setPosition(params.startPosition.x, params.startPosition.y);
-    auto unconsumedDelta = mPointerController->move(params.delta.x, params.delta.y);
-
-    auto position = mPointerController->getPosition();
-    EXPECT_NEAR(position.x, params.endPosition.x, EPSILON);
-    EXPECT_NEAR(position.y, params.endPosition.y, EPSILON);
-    EXPECT_NEAR(unconsumedDelta.x, params.unconsumedDelta.x, EPSILON);
-    EXPECT_NEAR(unconsumedDelta.y, params.unconsumedDelta.y, EPSILON);
-}
-
-INSTANTIATE_TEST_SUITE_P(PointerControllerViewportTransitionTest,
-                         PointerControllerViewportTransitionTest,
-                         testing::Values(
-                                 // no transition
-                                 MousePointerControllerTestParam{{2.0f, 2.0f},
-                                                                 {2.0f, 2.0f},
-                                                                 {4.0f, 4.0f},
-                                                                 {0.0f, 0.0f}},
-                                 // right boundary
-                                 MousePointerControllerTestParam{{2.0f, 2.0f},
-                                                                 {3.0f, 0.0f},
-                                                                 {4.0f, 2.0f},
-                                                                 {1.0f, 0.0f}},
-                                 MousePointerControllerTestParam{{2.0f, 2.0f},
-                                                                 {3.0f, -1.0f},
-                                                                 {4.0f, 1.0f},
-                                                                 {1.0f, 0.0f}},
-                                 MousePointerControllerTestParam{{2.0f, 2.0f},
-                                                                 {3.0f, 1.0f},
-                                                                 {4.0f, 3.0f},
-                                                                 {1.0f, 0.0f}},
-                                 // left boundary
-                                 MousePointerControllerTestParam{{2.0f, 2.0f},
-                                                                 {-3.0f, 0.0f},
-                                                                 {0.0f, 2.0f},
-                                                                 {-1.0f, 0.0f}},
-                                 MousePointerControllerTestParam{{2.0f, 2.0f},
-                                                                 {-3.0f, -1.0f},
-                                                                 {0.0f, 1.0f},
-                                                                 {-1.0f, 0.0f}},
-                                 MousePointerControllerTestParam{{2.0f, 2.0f},
-                                                                 {-3.0f, 1.0f},
-                                                                 {0.0f, 3.0f},
-                                                                 {-1.0f, 0.0f}},
-                                 // bottom boundary
-                                 MousePointerControllerTestParam{{2.0f, 2.0f},
-                                                                 {0.0f, 3.0f},
-                                                                 {2.0f, 4.0f},
-                                                                 {0.0f, 1.0f}},
-                                 MousePointerControllerTestParam{{2.0f, 2.0f},
-                                                                 {-1.0f, 3.0f},
-                                                                 {1.0f, 4.0f},
-                                                                 {0.0f, 1.0f}},
-                                 MousePointerControllerTestParam{{2.0f, 2.0f},
-                                                                 {1.0f, 3.0f},
-                                                                 {3.0f, 4.0f},
-                                                                 {0.0f, 1.0f}},
-                                 // top boundary
-                                 MousePointerControllerTestParam{{2.0f, 2.0f},
-                                                                 {0.0f, -3.0f},
-                                                                 {2.0f, 0.0f},
-                                                                 {0.0f, -1.0f}},
-                                 MousePointerControllerTestParam{{2.0f, 2.0f},
-                                                                 {-1.0f, -3.0f},
-                                                                 {1.0f, 0.0f},
-                                                                 {0.0f, -1.0f}},
-                                 MousePointerControllerTestParam{{2.0f, 2.0f},
-                                                                 {1.0f, -3.0f},
-                                                                 {3.0f, 0.0f},
-                                                                 {0.0f, -1.0f}},
-                                 // top-left corner
-                                 MousePointerControllerTestParam{{2.0f, 2.0f},
-                                                                 {-3.0f, -3.0f},
-                                                                 {0.0f, 0.0f},
-                                                                 {-1.0f, -1.0f}},
-                                 // top-right corner
-                                 MousePointerControllerTestParam{{2.0f, 2.0f},
-                                                                 {3.0f, -3.0f},
-                                                                 {4.0f, 0.0f},
-                                                                 {1.0f, -1.0f}},
-                                 // bottom-right corner
-                                 MousePointerControllerTestParam{{2.0f, 2.0f},
-                                                                 {3.0f, 3.0f},
-                                                                 {4.0f, 4.0f},
-                                                                 {1.0f, 1.0f}},
-                                 // bottom-left corner
-                                 MousePointerControllerTestParam{{2.0f, 2.0f},
-                                                                 {-3.0f, 3.0f},
-                                                                 {0.0f, 4.0f},
-                                                                 {-1.0f, 1.0f}}));
-
 class PointerControllerWindowInfoListenerTest : public Test {};
 
 TEST_F(PointerControllerWindowInfoListenerTest,