xref: /aosp_15_r20/frameworks/native/services/inputflinger/tests/FakePointerController.h (revision 38e8c45f13ce32b0dcecb25141ffecaf386fa17f)
1*38e8c45fSAndroid Build Coastguard Worker /*
2*38e8c45fSAndroid Build Coastguard Worker  * Copyright 2022 The Android Open Source Project
3*38e8c45fSAndroid Build Coastguard Worker  *
4*38e8c45fSAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*38e8c45fSAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*38e8c45fSAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*38e8c45fSAndroid Build Coastguard Worker  *
8*38e8c45fSAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
9*38e8c45fSAndroid Build Coastguard Worker  *
10*38e8c45fSAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*38e8c45fSAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*38e8c45fSAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*38e8c45fSAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*38e8c45fSAndroid Build Coastguard Worker  * limitations under the License.
15*38e8c45fSAndroid Build Coastguard Worker  */
16*38e8c45fSAndroid Build Coastguard Worker 
17*38e8c45fSAndroid Build Coastguard Worker #pragma once
18*38e8c45fSAndroid Build Coastguard Worker 
19*38e8c45fSAndroid Build Coastguard Worker #include <PointerControllerInterface.h>
20*38e8c45fSAndroid Build Coastguard Worker #include <input/DisplayViewport.h>
21*38e8c45fSAndroid Build Coastguard Worker #include <input/Input.h>
22*38e8c45fSAndroid Build Coastguard Worker #include <utils/BitSet.h>
23*38e8c45fSAndroid Build Coastguard Worker #include <unordered_set>
24*38e8c45fSAndroid Build Coastguard Worker 
25*38e8c45fSAndroid Build Coastguard Worker namespace android {
26*38e8c45fSAndroid Build Coastguard Worker 
27*38e8c45fSAndroid Build Coastguard Worker struct SpriteIcon {
28*38e8c45fSAndroid Build Coastguard Worker     PointerIconStyle style;
29*38e8c45fSAndroid Build Coastguard Worker };
30*38e8c45fSAndroid Build Coastguard Worker 
31*38e8c45fSAndroid Build Coastguard Worker class FakePointerController : public PointerControllerInterface {
32*38e8c45fSAndroid Build Coastguard Worker public:
FakePointerController()33*38e8c45fSAndroid Build Coastguard Worker     FakePointerController() : FakePointerController(/*enabled=*/true) {}
FakePointerController(bool enabled)34*38e8c45fSAndroid Build Coastguard Worker     FakePointerController(bool enabled) : mEnabled(enabled) {}
35*38e8c45fSAndroid Build Coastguard Worker 
~FakePointerController()36*38e8c45fSAndroid Build Coastguard Worker     virtual ~FakePointerController() {}
37*38e8c45fSAndroid Build Coastguard Worker 
38*38e8c45fSAndroid Build Coastguard Worker     void setBounds(float minX, float minY, float maxX, float maxY);
39*38e8c45fSAndroid Build Coastguard Worker     void clearBounds();
40*38e8c45fSAndroid Build Coastguard Worker     const std::map<ui::LogicalDisplayId, std::vector<int32_t>>& getSpots();
41*38e8c45fSAndroid Build Coastguard Worker 
42*38e8c45fSAndroid Build Coastguard Worker     void setPosition(float x, float y) override;
43*38e8c45fSAndroid Build Coastguard Worker     vec2 getPosition() const override;
44*38e8c45fSAndroid Build Coastguard Worker     ui::LogicalDisplayId getDisplayId() const override;
45*38e8c45fSAndroid Build Coastguard Worker     void setDisplayViewport(const DisplayViewport& viewport) override;
46*38e8c45fSAndroid Build Coastguard Worker     void updatePointerIcon(PointerIconStyle iconId) override;
47*38e8c45fSAndroid Build Coastguard Worker     void setCustomPointerIcon(const SpriteIcon& icon) override;
48*38e8c45fSAndroid Build Coastguard Worker     void setSkipScreenshotFlagForDisplay(ui::LogicalDisplayId displayId) override;
49*38e8c45fSAndroid Build Coastguard Worker     void clearSkipScreenshotFlags() override;
50*38e8c45fSAndroid Build Coastguard Worker     void fade(Transition) override;
51*38e8c45fSAndroid Build Coastguard Worker     ui::Transform getDisplayTransform() const override;
52*38e8c45fSAndroid Build Coastguard Worker 
53*38e8c45fSAndroid Build Coastguard Worker     void assertViewportSet(ui::LogicalDisplayId displayId);
54*38e8c45fSAndroid Build Coastguard Worker     void assertViewportNotSet();
55*38e8c45fSAndroid Build Coastguard Worker     void assertPosition(float x, float y);
56*38e8c45fSAndroid Build Coastguard Worker     void assertSpotCount(ui::LogicalDisplayId displayId, int32_t count);
57*38e8c45fSAndroid Build Coastguard Worker     void assertPointerIconSet(PointerIconStyle iconId);
58*38e8c45fSAndroid Build Coastguard Worker     void assertPointerIconNotSet();
59*38e8c45fSAndroid Build Coastguard Worker     void assertCustomPointerIconSet(PointerIconStyle iconId);
60*38e8c45fSAndroid Build Coastguard Worker     void assertCustomPointerIconNotSet();
61*38e8c45fSAndroid Build Coastguard Worker     void assertIsSkipScreenshotFlagSet(ui::LogicalDisplayId displayId);
62*38e8c45fSAndroid Build Coastguard Worker     void assertIsSkipScreenshotFlagNotSet(ui::LogicalDisplayId displayId);
63*38e8c45fSAndroid Build Coastguard Worker     void assertSkipScreenshotFlagChanged();
64*38e8c45fSAndroid Build Coastguard Worker     void assertSkipScreenshotFlagNotChanged();
65*38e8c45fSAndroid Build Coastguard Worker     bool isPointerShown();
66*38e8c45fSAndroid Build Coastguard Worker 
67*38e8c45fSAndroid Build Coastguard Worker private:
dump()68*38e8c45fSAndroid Build Coastguard Worker     std::string dump() override { return ""; }
69*38e8c45fSAndroid Build Coastguard Worker     vec2 move(float deltaX, float deltaY) override;
70*38e8c45fSAndroid Build Coastguard Worker     void unfade(Transition) override;
setPresentation(Presentation)71*38e8c45fSAndroid Build Coastguard Worker     void setPresentation(Presentation) override {}
72*38e8c45fSAndroid Build Coastguard Worker     void setSpots(const PointerCoords*, const uint32_t*, BitSet32 spotIdBits,
73*38e8c45fSAndroid Build Coastguard Worker                   ui::LogicalDisplayId displayId) override;
74*38e8c45fSAndroid Build Coastguard Worker     void clearSpots() override;
75*38e8c45fSAndroid Build Coastguard Worker 
76*38e8c45fSAndroid Build Coastguard Worker     const bool mEnabled;
77*38e8c45fSAndroid Build Coastguard Worker     bool mHaveBounds{false};
78*38e8c45fSAndroid Build Coastguard Worker     float mMinX{0}, mMinY{0}, mMaxX{0}, mMaxY{0};
79*38e8c45fSAndroid Build Coastguard Worker     float mX{0}, mY{0};
80*38e8c45fSAndroid Build Coastguard Worker     std::optional<ui::LogicalDisplayId> mDisplayId;
81*38e8c45fSAndroid Build Coastguard Worker     bool mIsPointerShown{false};
82*38e8c45fSAndroid Build Coastguard Worker     std::optional<PointerIconStyle> mIconStyle;
83*38e8c45fSAndroid Build Coastguard Worker     std::optional<PointerIconStyle> mCustomIconStyle;
84*38e8c45fSAndroid Build Coastguard Worker 
85*38e8c45fSAndroid Build Coastguard Worker     std::map<ui::LogicalDisplayId, std::vector<int32_t>> mSpotsByDisplay;
86*38e8c45fSAndroid Build Coastguard Worker     std::unordered_set<ui::LogicalDisplayId> mDisplaysToSkipScreenshot;
87*38e8c45fSAndroid Build Coastguard Worker     bool mDisplaysToSkipScreenshotFlagChanged{false};
88*38e8c45fSAndroid Build Coastguard Worker };
89*38e8c45fSAndroid Build Coastguard Worker 
90*38e8c45fSAndroid Build Coastguard Worker } // namespace android
91