1 /*
2  * Copyright (c) 2021-2024 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  * http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef MULTIMODAL_INPUT_CONNECT_STUB_H
17 #define MULTIMODAL_INPUT_CONNECT_STUB_H
18 
19 #include "iremote_stub.h"
20 #include "message_parcel.h"
21 #include "nocopyable.h"
22 
23 #include "i_multimodal_input_connect.h"
24 #include "mmi_event_observer.h"
25 #include "mmi_log.h"
26 #include "multimodalinput_ipc_interface_code.h"
27 #include "multimodal_input_connect_define.h"
28 
29 namespace OHOS {
30 namespace MMI {
31 struct ParseData {
32     int32_t actionsTypeSize;
33     uint32_t eventType;
34     int32_t priority;
35     int32_t deviceTags;
36     std::vector<int32_t> actionsType;
37 
ParseDataOHOS::MMI::ParseData38     ParseData()
39     {
40         actionsTypeSize = -1;
41         eventType = 0;
42         priority = 0;
43         deviceTags = 0;
44     }
45 };
46 class MultimodalInputConnectStub : public IRemoteStub<IMultimodalInputConnect> {
47 public:
48     MultimodalInputConnectStub() = default;
49     DISALLOW_COPY_AND_MOVE(MultimodalInputConnectStub);
50     virtual ~MultimodalInputConnectStub() = default;
51 
52     virtual bool IsRunning() const = 0;
53     virtual int32_t OnRemoteRequest(uint32_t code, MessageParcel& data, MessageParcel& reply,
54         MessageOption& options) override;
55 
56 protected:
57     int32_t StubHandleAllocSocketFd(MessageParcel &data, MessageParcel &reply);
58     int32_t StubAddInputEventFilter(MessageParcel& data, MessageParcel& reply);
59     int32_t StubRemoveInputEventFilter(MessageParcel& data, MessageParcel& reply);
60     int32_t StubSetMouseScrollRows(MessageParcel& data, MessageParcel& reply);
61     int32_t StubGetMouseScrollRows(MessageParcel& data, MessageParcel& reply);
62     int32_t StubSetPointerSize(MessageParcel& data, MessageParcel& reply);
63     int32_t StubGetPointerSize(MessageParcel& data, MessageParcel& reply);
64     int32_t StubSetCustomCursor(MessageParcel& data, MessageParcel& reply);
65     int32_t StubSetMouseIcon(MessageParcel& data, MessageParcel& reply);
66     int32_t StubSetMouseHotSpot(MessageParcel& data, MessageParcel& reply);
67     int32_t StubSetMousePrimaryButton(MessageParcel& data, MessageParcel& reply);
68     int32_t StubGetMousePrimaryButton(MessageParcel& data, MessageParcel& reply);
69     int32_t StubSetHoverScrollState(MessageParcel& data, MessageParcel& reply);
70     int32_t StubGetHoverScrollState(MessageParcel& data, MessageParcel& reply);
71     int32_t StubSetPointerVisible(MessageParcel& data, MessageParcel& reply);
72     int32_t StubSetPointerStyle(MessageParcel& data, MessageParcel& reply);
73     int32_t StubNotifyNapOnline(MessageParcel& data, MessageParcel& reply);
74     int32_t StubRemoveInputEventObserver(MessageParcel& data, MessageParcel& reply);
75     int32_t StubSetNapStatus(MessageParcel& data, MessageParcel& reply);
76     int32_t StubGetPointerStyle(MessageParcel& data, MessageParcel& reply);
77     int32_t StubIsPointerVisible(MessageParcel& data, MessageParcel& reply);
78     int32_t StubMarkProcessed(MessageParcel& data, MessageParcel& reply);
79     int32_t StubSupportKeys(MessageParcel& data, MessageParcel& reply);
80     int32_t StubGetDeviceIds(MessageParcel& data, MessageParcel& reply);
81     int32_t StubGetDevice(MessageParcel& data, MessageParcel& reply);
82     int32_t StubRegisterInputDeviceMonitor(MessageParcel& data, MessageParcel& reply);
83     int32_t StubUnregisterInputDeviceMonitor(MessageParcel& data, MessageParcel& reply);
84     int32_t StubGetKeyboardType(MessageParcel& data, MessageParcel& reply);
85     int32_t StubSetKeyboardRepeatDelay(MessageParcel& data, MessageParcel& reply);
86     int32_t StubSetKeyboardRepeatRate(MessageParcel& data, MessageParcel& reply);
87     int32_t StubGetKeyboardRepeatDelay(MessageParcel& data, MessageParcel& reply);
88     int32_t StubGetKeyboardRepeatRate(MessageParcel& data, MessageParcel& reply);
89     int32_t StubAddInputHandler(MessageParcel& data, MessageParcel& reply);
90     int32_t StubRemoveInputHandler(MessageParcel& data, MessageParcel& reply);
91     int32_t StubAddGestureMonitor(MessageParcel& data, MessageParcel& reply);
92     int32_t StubRemoveGestureMonitor(MessageParcel& data, MessageParcel& reply);
93     int32_t StubMarkEventConsumed(MessageParcel& data, MessageParcel& reply);
94     int32_t StubMoveMouseEvent(MessageParcel& data, MessageParcel& reply);
95     int32_t StubInjectKeyEvent(MessageParcel& data, MessageParcel& reply);
96     int32_t StubSubscribeKeyEvent(MessageParcel& data, MessageParcel& reply);
97     int32_t StubUnsubscribeKeyEvent(MessageParcel& data, MessageParcel& reply);
98     int32_t StubSubscribeHotkey(MessageParcel& data, MessageParcel& reply);
99     int32_t StubUnsubscribeHotkey(MessageParcel& data, MessageParcel& reply);
100     int32_t StubSubscribeSwitchEvent(MessageParcel& data, MessageParcel& reply);
101     int32_t StubUnsubscribeSwitchEvent(MessageParcel& data, MessageParcel& reply);
102     int32_t StubInjectPointerEvent(MessageParcel& data, MessageParcel& reply);
103     int32_t StubSetAnrListener(MessageParcel& data, MessageParcel& reply);
104     int32_t StubGetDisplayBindInfo(MessageParcel& data, MessageParcel& reply);
105     int32_t StubGetAllMmiSubscribedEvents(MessageParcel& data, MessageParcel& reply);
106     int32_t StubSetDisplayBind(MessageParcel& data, MessageParcel& reply);
107     int32_t StubSetPointerColor(MessageParcel& data, MessageParcel& reply);
108     int32_t StubGetPointerColor(MessageParcel& data, MessageParcel& reply);
109     int32_t StubEnableCombineKey(MessageParcel& data, MessageParcel& reply);
110     int32_t StubSetPointerSpeed(MessageParcel& data, MessageParcel& reply);
111     int32_t StubGetPointerSpeed(MessageParcel& data, MessageParcel& reply);
112     int32_t StubGetFunctionKeyState(MessageParcel &data, MessageParcel &reply);
113     int32_t StubSetFunctionKeyState(MessageParcel &data, MessageParcel &reply);
114     int32_t StubSetPointerLocation(MessageParcel &data, MessageParcel &reply);
115     int32_t StubSetMouseCaptureMode(MessageParcel& data, MessageParcel& reply);
116     int32_t StubGetWindowPid(MessageParcel& data, MessageParcel& reply);
117     int32_t StubAppendExtraData(MessageParcel& data, MessageParcel& reply);
118     int32_t StubEnableInputDevice(MessageParcel& data, MessageParcel& reply);
119     int32_t StubSetKeyDownDuration(MessageParcel& data, MessageParcel& reply);
120     int32_t StubSetTouchpadScrollSwitch(MessageParcel& data, MessageParcel& reply);
121     int32_t StubGetTouchpadScrollSwitch(MessageParcel& data, MessageParcel& reply);
122     int32_t StubSetTouchpadScrollDirection(MessageParcel& data, MessageParcel& reply);
123     int32_t StubGetTouchpadScrollDirection(MessageParcel& data, MessageParcel& reply);
124     int32_t StubSetTouchpadTapSwitch(MessageParcel& data, MessageParcel& reply);
125     int32_t StubGetTouchpadTapSwitch(MessageParcel& data, MessageParcel& reply);
126     int32_t StubSetTouchpadPointerSpeed(MessageParcel& data, MessageParcel& reply);
127     int32_t StubGetTouchpadPointerSpeed(MessageParcel& data, MessageParcel& reply);
128     int32_t StubSetTouchpadPinchSwitch(MessageParcel& data, MessageParcel& reply);
129     int32_t StubGetTouchpadPinchSwitch(MessageParcel& data, MessageParcel& reply);
130     int32_t StubSetTouchpadSwipeSwitch(MessageParcel& data, MessageParcel& reply);
131     int32_t StubGetTouchpadSwipeSwitch(MessageParcel& data, MessageParcel& reply);
132     int32_t StubSetTouchpadRightClickType(MessageParcel& data, MessageParcel& reply);
133     int32_t StubGetTouchpadRightClickType(MessageParcel& data, MessageParcel& reply);
134     int32_t StubSetTouchpadRotateSwitch(MessageParcel& data, MessageParcel& reply);
135     int32_t StubGetTouchpadRotateSwitch(MessageParcel& data, MessageParcel& reply);
136     int32_t StubClearWindowPointerStyle(MessageParcel& data, MessageParcel& reply);
137     int32_t StubSetShieldStatus(MessageParcel& data, MessageParcel& reply);
138     int32_t StubGetShieldStatus(MessageParcel& data, MessageParcel& reply);
139     int32_t StubGetKeyState(MessageParcel& data, MessageParcel& reply);
140     int32_t StubAuthorize(MessageParcel& data, MessageParcel& reply);
141     int32_t StubCancelInjection(MessageParcel& data, MessageParcel& reply);
142     int32_t StubHasIrEmitter(MessageParcel& data, MessageParcel& reply);
143     int32_t StubGetInfraredFrequencies(MessageParcel& data, MessageParcel& reply);
144     int32_t StubTransmitInfrared(MessageParcel& data, MessageParcel& reply);
145 #ifdef OHOS_BUILD_ENABLE_VKEYBOARD
146     int32_t StubSetVKeyboardArea(MessageParcel& data, MessageParcel& reply);
147     int32_t StubSetMotionSpace(MessageParcel& data, MessageParcel& reply);
148 #endif // OHOS_BUILD_ENABLE_VKEYBOARD
149     int32_t StubSetPixelMapData(MessageParcel& data, MessageParcel& reply);
150     int32_t StubSetMoveEventFilters(MessageParcel& data, MessageParcel& reply);
151     int32_t StubSetCurrentUser(MessageParcel& data, MessageParcel& reply);
152     int32_t StubSetTouchpadThreeFingersTapSwitch(MessageParcel& data, MessageParcel& reply);
153     int32_t StubGetTouchpadThreeFingersTapSwitch(MessageParcel& data, MessageParcel& reply);
154     int32_t StubAddVirtualInputDevice(MessageParcel& data, MessageParcel& reply);
155     int32_t StubRemoveVirtualInputDevice(MessageParcel& data, MessageParcel& reply);
156     int32_t StubEnableHardwareCursorStats(MessageParcel& data, MessageParcel& reply);
157     int32_t StubGetHardwareCursorStats(MessageParcel& data, MessageParcel& reply);
158 #ifdef OHOS_BUILD_ENABLE_MAGICCURSOR
159     int32_t StubGetPointerSnapshot(MessageParcel &data, MessageParcel &reply);
160 #endif // OHOS_BUILD_ENABLE_MAGICCURSOR
161     int32_t StubSetTouchpadScrollRows(MessageParcel& data, MessageParcel& reply);
162     int32_t StubGetTouchpadScrollRows(MessageParcel& data, MessageParcel& reply);
163     int32_t StubSetClientInfo(MessageParcel &data, MessageParcel &reply);
164 #ifdef OHOS_BUILD_ENABLE_ANCO
165     int32_t StubAncoAddChannel(MessageParcel& data, MessageParcel& reply);
166     int32_t StubAncoRemoveChannel(MessageParcel& data, MessageParcel& reply);
167 #endif // OHOS_BUILD_ENABLE_ANCO
168     int32_t StubTransferBinderClientService(MessageParcel& data, MessageParcel& reply);
169     int32_t StubSkipPointerLayer(MessageParcel& data, MessageParcel& reply);
170     int32_t StubGetIntervalSinceLastInput(MessageParcel& data, MessageParcel& reply);
171     int32_t StubGetAllSystemHotkeys(MessageParcel& data, MessageParcel& reply);
172     int32_t ParseAddInputHandlerData(MessageParcel& data, ParseData& parseData);
173 
174 private:
175     int32_t VerifyTouchPadSetting(void);
176     int32_t HandleGestureMonitor(MultimodalinputConnectInterfaceCode code,
177         MessageParcel& data, MessageParcel& reply);
178 };
179 } // namespace MMI
180 } // namespace OHOS
181 #endif // MULTIMODAL_INPUT_CONNECT_STUB_H
182