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

Commit 8066d555 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Implement PointerController#getPositionInLogicalDisplay" into main

parents 0bd8e641 66e121aa
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -170,6 +170,11 @@ vec2 PointerController::getPosition() const {
    }
}

vec2 PointerController::getPositionInLogicalDisplay() const {
    const ui::LogicalDisplayId displayId = mCursorController.getDisplayId();
    return mCursorController.getPosition();
}

ui::LogicalDisplayId PointerController::getDisplayId() const {
    return mCursorController.getDisplayId();
}
+4 −0
Original line number Diff line number Diff line
@@ -54,6 +54,7 @@ public:
    vec2 move(float deltaX, float deltaY) override;
    void setPosition(float x, float y) override;
    vec2 getPosition() const override;
    vec2 getPositionInLogicalDisplay() const override;
    ui::LogicalDisplayId getDisplayId() const override;
    void fade(Transition transition) override;
    void unfade(Transition transition) override;
@@ -175,6 +176,9 @@ public:
    vec2 getPosition() const override {
        LOG_ALWAYS_FATAL("Should not be called");
    }
    vec2 getPositionInLogicalDisplay() const override {
        LOG_ALWAYS_FATAL("Should not be called");
    }
    ui::LogicalDisplayId getDisplayId() const override {
        LOG_ALWAYS_FATAL("Should not be called");
    }
+51 −0
Original line number Diff line number Diff line
@@ -179,6 +179,8 @@ protected:
    ~PointerControllerTest();

    void ensureDisplayViewportIsSet(ui::LogicalDisplayId displayId = ui::LogicalDisplayId::DEFAULT);
    void addDisplay(ui::LogicalDisplayId displayId, int32_t width, int32_t height,
                    ui::Rotation rotation = ui::ROTATION_0);

    sp<MockSprite> mPointerSprite;
    sp<MockPointerControllerPolicyInterface> mPolicy;
@@ -223,6 +225,17 @@ void PointerControllerTest::ensureDisplayViewportIsSet(ui::LogicalDisplayId disp
    mPointerController->setDisplayViewport(viewport);
}

void PointerControllerTest::addDisplay(ui::LogicalDisplayId displayId, int32_t logicalWidth,
                                       int32_t logicalHeight, ui::Rotation rotation) {
    gui::DisplayInfo displayInfo;
    displayInfo.displayId = displayId;
    displayInfo.logicalWidth = logicalWidth;
    displayInfo.logicalHeight = logicalHeight;
    displayInfo.transform.set(ui::Transform::toRotationFlags(rotation), logicalHeight,
                              logicalWidth);
    mRegisteredListener->onWindowInfosChanged({{}, {displayInfo}, 0, 0});
}

void PointerControllerTest::loopThread() {
    Looper::setForThread(mLooper);

@@ -231,6 +244,44 @@ void PointerControllerTest::loopThread() {
    }
}

TEST_F(PointerControllerTest, getPosition) {
    addDisplay(ui::LogicalDisplayId::DEFAULT, 800, 600);
    ensureDisplayViewportIsSet();

    mPointerController->setPosition(100, 200);

    vec2 absolutePosition = mPointerController->getPosition();
    EXPECT_EQ(100, absolutePosition.x);
    EXPECT_EQ(200, absolutePosition.y);

    vec2 logicalPosition = mPointerController->getPositionInLogicalDisplay();
    EXPECT_EQ(100, logicalPosition.x);
    EXPECT_EQ(200, logicalPosition.y);
}

TEST_F(PointerControllerTest, getPosition_withDisplayRotation) {
    addDisplay(ui::LogicalDisplayId::DEFAULT, 800, 600, ui::ROTATION_90);
    DisplayViewport viewport;
    viewport.displayId = ui::LogicalDisplayId::DEFAULT;
    viewport.logicalRight = 800;
    viewport.logicalBottom = 600;
    viewport.physicalRight = 600;
    viewport.physicalBottom = 800;
    viewport.deviceWidth = 600;
    viewport.deviceHeight = 800;
    mPointerController->setDisplayViewport(viewport);

    mPointerController->setPosition(100, 200);

    vec2 absolutePosition = mPointerController->getPosition();
    EXPECT_EQ(100, absolutePosition.x);
    EXPECT_EQ(200, absolutePosition.y);

    vec2 logicalPosition = mPointerController->getPositionInLogicalDisplay();
    EXPECT_EQ(400, logicalPosition.x);
    EXPECT_EQ(100, logicalPosition.y);
}

TEST_F(PointerControllerTest, useDefaultCursorTypeByDefault) {
    ensureDisplayViewportIsSet();
    mPointerController->unfade(PointerController::Transition::IMMEDIATE);