1/*
2 * Copyright (C) 2022 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 ACCESSIBLE_ABILITY_CHANNEL_STUB_H
17#define ACCESSIBLE_ABILITY_CHANNEL_STUB_H
18
19#include "i_accessible_ability_channel.h"
20#include "iremote_stub.h"
21
22namespace OHOS {
23namespace Accessibility {
24class AccessibleAbilityChannelStub : public IRemoteStub<IAccessibleAbilityChannel> {
25public:
26    /**
27     * @brief construct function
28     * @param object The object of IPC
29     */
30    AccessibleAbilityChannelStub();
31
32    /**
33     * @brief destruct function
34     */
35    virtual ~AccessibleAbilityChannelStub();
36
37    /**
38     * @brief Receive the event from proxy by IPC mechanism.
39     * @param code The code is matched with the process function.
40     * @param data The data of process communication
41     * @param reply The response of IPC request
42     * @param option The option parameter of IPC,such as: async,sync
43     */
44    virtual int OnRemoteRequest(uint32_t code, MessageParcel &data,
45        MessageParcel &reply, MessageOption &option) override;
46private:
47    /**
48     * @brief Handle the IPC request for the function:HandleSearchElementInfoByAccessibilityId.
49     * @param data The data of process communication
50     * @param reply The response of IPC request
51     * @return NO_ERROR: successful; otherwise is failed.
52     */
53    ErrCode HandleSearchElementInfoByAccessibilityId(MessageParcel &data, MessageParcel &reply);
54
55    /**
56     * @brief Handle the IPC request for the function:HandleSearchElementInfosByText.
57     * @param data The data of process communication
58     * @param reply The response of IPC request
59     * @return NO_ERROR: successful; otherwise is failed.
60     */
61    ErrCode HandleSearchElementInfosByText(MessageParcel &data, MessageParcel &reply);
62
63    /**
64     * @brief Handle the IPC request for the function:HandleFindFocusedElementInfo.
65     * @param data The data of process communication
66     * @param reply The response of IPC request
67     * @return NO_ERROR: successful; otherwise is failed.
68     */
69    ErrCode HandleFindFocusedElementInfo(MessageParcel &data, MessageParcel &reply);
70
71    /**
72     * @brief Handle the IPC request for the function:HandleFocusMoveSearch.
73     * @param data The data of process communication
74     * @param reply The response of IPC request
75     * @return NO_ERROR: successful; otherwise is failed.
76     */
77    ErrCode HandleFocusMoveSearch(MessageParcel &data, MessageParcel &reply);
78
79    /**
80     * @brief Handle the IPC request for the function:HandleExecuteAction.
81     * @param data The data of process communication
82     * @param reply The response of IPC request
83     * @return NO_ERROR: successful; otherwise is failed.
84     */
85    ErrCode HandleExecuteAction(MessageParcel &data, MessageParcel &reply);
86
87    /**
88     * @brief Handle the IPC request for the function:HandleEnableScreenCurtain.
89     * @param data The data of process communication
90     * @param reply The response of IPC request
91     * @return NO_ERROR: successful; otherwise is failed.
92     */
93    ErrCode HandleEnableScreenCurtain(MessageParcel &data, MessageParcel &reply);
94
95    /**
96     * @brief Handle the IPC request for the function:HandleGetWindow.
97     * @param data The data of process communication
98     * @param reply The response of IPC request
99     * @return NO_ERROR: successful; otherwise is failed.
100     */
101    ErrCode HandleGetWindow(MessageParcel &data, MessageParcel &reply);
102
103    /**
104     * @brief Handle the IPC request for the function:HandleGetWindows.
105     * @param data The data of process communication
106     * @param reply The response of IPC request
107     * @return NO_ERROR: successful; otherwise is failed.
108     */
109    ErrCode HandleGetWindows(MessageParcel &data, MessageParcel &reply);
110
111    /**
112     * @brief Handle the IPC request for the function:HandleGetWindows.
113     * @param data The data of process communication
114     * @param reply The response of IPC request
115     * @return NO_ERROR: successful; otherwise is failed.
116     */
117    ErrCode HandleGetWindowsByDisplayId(MessageParcel &data, MessageParcel &reply);
118
119    /**
120     * @brief Handle the IPC request for the function:HandleSetOnKeyPressEventResult.
121     * @param data The data of process communication
122     * @param reply The response of IPC request
123     * @return NO_ERROR: successful; otherwise is failed.
124     */
125    ErrCode HandleSetOnKeyPressEventResult(MessageParcel &data, MessageParcel &reply);
126
127    /**
128     * @brief Handle the IPC request for the function:HandleSendSimulateGesturePath.
129     * @param data The data of process communication
130     * @param reply The response of IPC request
131     * @return NO_ERROR: successful; otherwise is failed.
132     */
133    ErrCode HandleSendSimulateGesturePath(MessageParcel &data, MessageParcel &reply);
134
135    /**
136     * @brief Handle the IPC request for the function:HandleSetTargetBundleName.
137     * @param data The data of process communication
138     * @param reply The response of IPC request
139     * @return NO_ERROR: successful; otherwise is failed.
140     */
141    ErrCode HandleSetTargetBundleName(MessageParcel &data, MessageParcel &reply);
142
143    /**
144     * @brief Handle the IPC request for the function:HandleGetCursorPosition.
145     * @param data The data of process communication
146     * @param reply The response of IPC request
147     * @return NO_ERROR: successful; otherwise is failed.
148     */
149    ErrCode HandleGetCursorPosition(MessageParcel &data, MessageParcel &reply);
150
151    using AccessibleAbilityConnectionFunc =
152        ErrCode (AccessibleAbilityChannelStub::*)(MessageParcel &data, MessageParcel &reply);
153};
154} // namespace Accessibility
155} // namespace OHOS
156#endif // ACCESSIBLE_ABILITY_CHANNEL_STUB_H