@@ -2617,12 +2617,17 @@ class PointerChoreographerDisplayTopologyTestFixture
26172617 static constexpr ui::LogicalDisplayId DISPLAY_BOTTOM_ID = ui::LogicalDisplayId{40 };
26182618 static constexpr ui::LogicalDisplayId DISPLAY_LEFT_ID = ui::LogicalDisplayId{50 };
26192619 static constexpr ui::LogicalDisplayId DISPLAY_TOP_RIGHT_CORNER_ID = ui::LogicalDisplayId{60 };
2620+ static constexpr ui::LogicalDisplayId DISPLAY_HIGH_DENSITY_ID = ui::LogicalDisplayId{70 };
2621+
2622+ static constexpr int DENSITY_MEDIUM = 160 ;
2623+ static constexpr int DENSITY_HIGH = 320 ;
26202624
26212625 PointerChoreographerDisplayTopologyTestFixture () {
26222626 com::android::input::flags::connected_displays_cursor (true );
26232627 }
26242628
26252629protected:
2630+ // Note: viewport size is in pixels and offsets in topology are in dp
26262631 std::vector<DisplayViewport> mViewports {
26272632 createViewport (DISPLAY_CENTER_ID, /* width*/ 100 , /* height*/ 100 , ui::ROTATION_0),
26282633 createViewport (DISPLAY_TOP_ID, /* width*/ 90 , /* height*/ 90 , ui::ROTATION_0),
@@ -2631,16 +2636,28 @@ class PointerChoreographerDisplayTopologyTestFixture
26312636 createViewport (DISPLAY_LEFT_ID, /* width*/ 90 , /* height*/ 90 , ui::ROTATION_270),
26322637 createViewport (DISPLAY_TOP_RIGHT_CORNER_ID, /* width*/ 90 , /* height*/ 90 ,
26332638 ui::ROTATION_0),
2639+ // Create a high density display size 100x100 dp i.e. 200x200 px
2640+ createViewport (DISPLAY_HIGH_DENSITY_ID, /* width*/ 200 , /* height*/ 200 , ui::ROTATION_0),
26342641 };
26352642
2636- DisplayTopologyGraph mTopology {DISPLAY_CENTER_ID,
2637- {{DISPLAY_CENTER_ID,
2638- {{DISPLAY_TOP_ID, DisplayTopologyPosition::TOP, 10 .0f },
2639- {DISPLAY_RIGHT_ID, DisplayTopologyPosition::RIGHT, 10 .0f },
2640- {DISPLAY_BOTTOM_ID, DisplayTopologyPosition::BOTTOM, 10 .0f },
2641- {DISPLAY_LEFT_ID, DisplayTopologyPosition::LEFT, 10 .0f },
2642- {DISPLAY_TOP_RIGHT_CORNER_ID, DisplayTopologyPosition::RIGHT,
2643- -90 .0f }}}}};
2643+ DisplayTopologyGraph
2644+ mTopology {DISPLAY_CENTER_ID,
2645+ {{DISPLAY_CENTER_ID,
2646+ {{DISPLAY_TOP_ID, DisplayTopologyPosition::TOP, 50 .0f },
2647+ // Place a high density display on the left of DISPLAY_TOP_ID with 25 dp
2648+ // gap
2649+ {DISPLAY_HIGH_DENSITY_ID, DisplayTopologyPosition::TOP, -75 .0f },
2650+ {DISPLAY_RIGHT_ID, DisplayTopologyPosition::RIGHT, 10 .0f },
2651+ {DISPLAY_BOTTOM_ID, DisplayTopologyPosition::BOTTOM, 10 .0f },
2652+ {DISPLAY_LEFT_ID, DisplayTopologyPosition::LEFT, 10 .0f },
2653+ {DISPLAY_TOP_RIGHT_CORNER_ID, DisplayTopologyPosition::RIGHT, -90 .0f }}}},
2654+ {{DISPLAY_CENTER_ID, DENSITY_MEDIUM},
2655+ {DISPLAY_TOP_ID, DENSITY_MEDIUM},
2656+ {DISPLAY_RIGHT_ID, DENSITY_MEDIUM},
2657+ {DISPLAY_BOTTOM_ID, DENSITY_MEDIUM},
2658+ {DISPLAY_LEFT_ID, DENSITY_MEDIUM},
2659+ {DISPLAY_TOP_RIGHT_CORNER_ID, DENSITY_MEDIUM},
2660+ {DISPLAY_HIGH_DENSITY_ID, DENSITY_HIGH}}};
26442661
26452662private:
26462663 DisplayViewport createViewport (ui::LogicalDisplayId displayId, int32_t width, int32_t height,
@@ -2731,19 +2748,20 @@ INSTANTIATE_TEST_SUITE_P(
27312748 ToolType::FINGER, vec2(50 , 50 ) /* initial x/y */ ,
27322749 vec2(25 , -100 ) /* delta x/y */ ,
27332750 PointerChoreographerDisplayTopologyTestFixture::DISPLAY_TOP_ID,
2734- vec2(50 + 25 - 10 ,
2751+ vec2(50 + 25 - 50 ,
27352752 90 ) /* Bottom edge: (source + delta - offset, height) */ ),
27362753 std::make_tuple(" TransitionToBottomDisplay" ,
27372754 AINPUT_SOURCE_MOUSE | AINPUT_SOURCE_TOUCHPAD, ControllerType::MOUSE,
27382755 ToolType::FINGER, vec2(50 , 50 ) /* initial x/y */ ,
27392756 vec2(25 , 100 ) /* delta x/y */ ,
27402757 PointerChoreographerDisplayTopologyTestFixture::DISPLAY_BOTTOM_ID,
27412758 vec2(50 + 25 - 10 , 0 ) /* Top edge: (source + delta - offset, 0) */ ),
2759+ // move towards 25 dp gap between DISPLAY_HIGH_DENSITY_ID and DISPLAY_TOP_ID
27422760 std::make_tuple(" NoTransitionAtTopOffset" , AINPUT_SOURCE_MOUSE,
27432761 ControllerType::MOUSE, ToolType::MOUSE,
2744- vec2 (5 , 50 ) /* initial x/y */ , vec2(0 , -100 ) /* Move Up */ ,
2762+ vec2 (35 , 50 ) /* initial x/y */ , vec2(0 , -100 ) /* Move Up */ ,
27452763 PointerChoreographerDisplayTopologyTestFixture::DISPLAY_CENTER_ID,
2746- vec2(5 , 0 ) /* Top edge */ ),
2764+ vec2(35 , 0 ) /* Top edge */ ),
27472765 std::make_tuple(" NoTransitionAtRightOffset" , AINPUT_SOURCE_MOUSE,
27482766 ControllerType::MOUSE, ToolType::MOUSE,
27492767 vec2 (95 , 5 ) /* initial x/y */ , vec2(100 , 0 ) /* Move Right */ ,
@@ -2764,9 +2782,16 @@ INSTANTIATE_TEST_SUITE_P(
27642782 std::make_tuple(
27652783 " TransitionAtTopRightCorner" , AINPUT_SOURCE_MOUSE | AINPUT_SOURCE_TOUCHPAD,
27662784 ControllerType::MOUSE, ToolType::FINGER, vec2(95 , 5 ) /* initial x/y */ ,
2767- vec2(10 , -10 ) /* Move dignally to top right corner */ ,
2785+ vec2(10 , -10 ) /* Move diagonally to top right corner */ ,
27682786 PointerChoreographerDisplayTopologyTestFixture::DISPLAY_TOP_RIGHT_CORNER_ID,
2769- vec2(0 , 90 ) /* bottom left corner */ )),
2787+ vec2(0 , 90 ) /* bottom left corner */ ),
2788+ std::make_tuple(
2789+ " TransitionToHighDpDisplay" , AINPUT_SOURCE_MOUSE | AINPUT_SOURCE_TOUCHPAD,
2790+ ControllerType::MOUSE, ToolType::MOUSE, vec2(20 , 20 ) /* initial x/y */ ,
2791+ vec2(0 , -50 ) /* delta x/y */ ,
2792+ PointerChoreographerDisplayTopologyTestFixture::DISPLAY_HIGH_DENSITY_ID,
2793+ /* Bottom edge: ((source + delta - offset) * density, height) */
2794+ vec2((20 + 0 + 75 ) * 2, 200))),
27702795 [](const testing::TestParamInfo<PointerChoreographerDisplayTopologyTestFixtureParam>& p) {
27712796 return std::string{std::get<0 >(p.param )};
27722797 });
0 commit comments