• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021 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 #include <gtest/gtest.h>
17 #include "mock_accessible_ability_connection.h"
18 #include <algorithm>
19 #include <map>
20 #include <vector>
21 #include "accessibility_account_data.h"
22 #include "accessibility_ut_helper.h"
23 #include "accessible_ability_manager_service.h"
24 #include "hilog_wrapper.h"
25 
26 namespace OHOS {
27 namespace Accessibility {
MockAccessibleAbilityConnection(int32_t accountId,int32_t connectionId,AccessibilityAbilityInfo & abilityInfo)28 MockAccessibleAbilityConnection::MockAccessibleAbilityConnection(int32_t accountId, int32_t connectionId,
29     AccessibilityAbilityInfo& abilityInfo)
30     : AccessibleAbilityConnection(accountId, connectionId, abilityInfo)
31 {
32     (void)accountId;
33     (void)connectionId;
34     (void)abilityInfo;
35 }
~MockAccessibleAbilityConnection()36 MockAccessibleAbilityConnection::~MockAccessibleAbilityConnection()
37 {}
38 
AccessibleAbilityChannel(const int32_t accountId,const std::string & clientName)39 AccessibleAbilityChannel::AccessibleAbilityChannel(const int32_t accountId, const std::string &clientName)
40     : clientName_(clientName), accountId_(accountId)
41 {
42 }
43 
SearchElementInfoByAccessibilityId(const ElementBasicInfo elementBasicInfo,const int32_t requestId,const sptr<IAccessibilityElementOperatorCallback> & callback,const int32_t mode,bool isFilter)44 RetError AccessibleAbilityChannel::SearchElementInfoByAccessibilityId(const ElementBasicInfo elementBasicInfo,
45     const int32_t requestId, const sptr<IAccessibilityElementOperatorCallback>& callback,
46     const int32_t mode, bool isFilter)
47 {
48     GTEST_LOG_(INFO) << "MOCK AccessibleAbilityChannel SearchElementInfoByAccessibilityId";
49     (void)elementBasicInfo;
50     (void)requestId;
51     (void)callback;
52     (void)mode;
53     (void)isFilter;
54     return RET_OK;
55 }
56 
SearchDefaultFocusedByWindowId(const ElementBasicInfo elementBasicInfo,const int32_t requestId,const sptr<IAccessibilityElementOperatorCallback> & callback,const int32_t mode,bool isFilter)57 RetError AccessibleAbilityChannel::SearchDefaultFocusedByWindowId(const ElementBasicInfo elementBasicInfo,
58     const int32_t requestId, const sptr<IAccessibilityElementOperatorCallback>& callback,
59     const int32_t mode, bool isFilter)
60 {
61     GTEST_LOG_(INFO) << "MOCK AccessibleAbilityChannel SearchDefaultFocusedByWindowId";
62     (void)elementBasicInfo;
63     (void)requestId;
64     (void)callback;
65     (void)mode;
66     (void)isFilter;
67     return RET_OK;
68 }
69 
SearchElementInfosByText(const int32_t accessibilityWindowId,const int64_t elementId,const std::string & text,const int32_t requestId,const sptr<IAccessibilityElementOperatorCallback> & callback)70 RetError AccessibleAbilityChannel::SearchElementInfosByText(const int32_t accessibilityWindowId,
71     const int64_t elementId, const std::string& text, const int32_t requestId,
72     const sptr<IAccessibilityElementOperatorCallback>& callback)
73 {
74     GTEST_LOG_(INFO) << "MOCK AccessibleAbilityChannel SearchElementInfosByText";
75     (void)accessibilityWindowId;
76     (void)elementId;
77     (void)text;
78     (void)requestId;
79     (void)callback;
80     return RET_OK;
81 }
82 
FindFocusedElementInfo(const int32_t accessibilityWindowId,const int64_t elementId,const int32_t focusType,const int32_t requestId,const sptr<IAccessibilityElementOperatorCallback> & callback)83 RetError AccessibleAbilityChannel::FindFocusedElementInfo(const int32_t accessibilityWindowId,
84     const int64_t elementId, const int32_t focusType, const int32_t requestId,
85     const sptr<IAccessibilityElementOperatorCallback>& callback)
86 {
87     GTEST_LOG_(INFO) << "MOCK AccessibleAbilityChannel FindFocusedElementInfo";
88     (void)accessibilityWindowId;
89     (void)elementId;
90     (void)focusType;
91     (void)requestId;
92     (void)callback;
93     return RET_OK;
94 }
95 
FocusMoveSearch(const int32_t accessibilityWindowId,const int64_t elementId,const int32_t direction,const int32_t requestId,const sptr<IAccessibilityElementOperatorCallback> & callback)96 RetError AccessibleAbilityChannel::FocusMoveSearch(const int32_t accessibilityWindowId, const int64_t elementId,
97     const int32_t direction, const int32_t requestId, const sptr<IAccessibilityElementOperatorCallback>& callback)
98 {
99     GTEST_LOG_(INFO) << "MOCK AccessibleAbilityChannel FocusMoveSearch";
100     (void)accessibilityWindowId;
101     (void)elementId;
102     (void)direction;
103     (void)requestId;
104     (void)callback;
105     return RET_OK;
106 }
107 
ExecuteAction(const int32_t accessibilityWindowId,const int64_t elementId,const int32_t action,const std::map<std::string,std::string> & actionArguments,const int32_t requestId,const sptr<IAccessibilityElementOperatorCallback> & callback)108 RetError AccessibleAbilityChannel::ExecuteAction(const int32_t accessibilityWindowId, const int64_t elementId,
109     const int32_t action, const std::map<std::string, std::string> &actionArguments, const int32_t requestId,
110     const sptr<IAccessibilityElementOperatorCallback>& callback)
111 {
112     GTEST_LOG_(INFO) << "MOCK AccessibleAbilityChannel ExecuteAction";
113     (void)accessibilityWindowId;
114     (void)elementId;
115     (void)action;
116     (void)actionArguments;
117     (void)requestId;
118     (void)callback;
119     return RET_OK;
120 }
121 
GetWindows(uint64_t displayId,std::vector<AccessibilityWindowInfo> & windows) const122 RetError AccessibleAbilityChannel::GetWindows(uint64_t displayId, std::vector<AccessibilityWindowInfo> &windows) const
123 {
124     GTEST_LOG_(INFO) << "MOCK AccessibleAbilityChannel GetWindows";
125     (void)displayId;
126     (void)windows;
127     sptr<AccessibleAbilityConnection> clientConnection = GetConnection(accountId_, clientName_);
128     if (!clientConnection) {
129         HILOG_ERROR("There is no client connection");
130         return RET_ERR_NO_CONNECTION;
131     }
132 
133     if (!(clientConnection->GetAbilityInfo().GetCapabilityValues() & Capability::CAPABILITY_RETRIEVE)) {
134         HILOG_ERROR("AccessibleAbilityChannel::GetWindows failed: no capability");
135         return RET_ERR_NO_CAPABILITY;
136     }
137     return RET_OK;
138 }
139 
GetWindows(std::vector<AccessibilityWindowInfo> & windows)140 RetError AccessibleAbilityChannel::GetWindows(std::vector<AccessibilityWindowInfo> &windows)
141 {
142     GTEST_LOG_(INFO) << "MOCK AccessibleAbilityChannel GetWindows";
143     uint64_t displayId = 0;
144     return GetWindows(displayId, windows);
145 }
146 
GetWindow(const int32_t windowId,AccessibilityWindowInfo & windowInfo)147 RetError AccessibleAbilityChannel::GetWindow(const int32_t windowId, AccessibilityWindowInfo &windowInfo)
148 {
149     GTEST_LOG_(INFO) << "MOCK AccessibleAbilityChannel GetWindow";
150     (void)windowId;
151     (void)windowInfo;
152     return RET_OK;
153 }
154 
SetTargetBundleName(const std::vector<std::string> & targetBundleNames)155 RetError AccessibleAbilityChannel::SetTargetBundleName(const std::vector<std::string> &targetBundleNames)
156 {
157     GTEST_LOG_(INFO) << "MOCK AccessibleAbilityChannel SetTargetBundleName";
158     (void)targetBundleNames;
159     return RET_OK;
160 }
161 
GetWindowsByDisplayId(const uint64_t displayId,std::vector<AccessibilityWindowInfo> & windows)162 RetError AccessibleAbilityChannel::GetWindowsByDisplayId(const uint64_t displayId,
163     std::vector<AccessibilityWindowInfo> &windows)
164 {
165     GTEST_LOG_(INFO) << "MOCK AccessibleAbilityChannel GetWindowsByDisplayId";
166     return GetWindows(displayId, windows);
167 }
168 
SetOnKeyPressEventResult(const bool handled,const int32_t sequence)169 void AccessibleAbilityChannel::SetOnKeyPressEventResult(const bool handled, const int32_t sequence)
170 {
171     GTEST_LOG_(INFO) << "MOCK AccessibleAbilityChannel SetOnKeyPressEventResult";
172     (void)handled;
173     (void)sequence;
174 }
175 
SendSimulateGesture(const std::shared_ptr<AccessibilityGestureInjectPath> & gesturePath)176 RetError AccessibleAbilityChannel::SendSimulateGesture(
177     const std::shared_ptr<AccessibilityGestureInjectPath>& gesturePath)
178 {
179     GTEST_LOG_(INFO) << "MOCK AccessibleAbilityChannel SendSimulateGesture";
180     (void)gesturePath;
181     return RET_OK;
182 }
183 
GetConnection(int32_t accountId,const std::string & clientName)184 sptr<AccessibleAbilityConnection> AccessibleAbilityChannel::GetConnection(int32_t accountId,
185     const std::string &clientName)
186 {
187     sptr<AccessibilityAccountData> accountData =
188         Singleton<AccessibleAbilityManagerService>::GetInstance().GetAccountData(accountId);
189     if (!accountData) {
190         HILOG_ERROR("accountData is nullptr");
191         return nullptr;
192     }
193 
194     return accountData->GetAccessibleAbilityConnection(clientName);
195 }
196 
AccessibleAbilityConnection(int32_t accountId,int32_t connectionId,AccessibilityAbilityInfo & abilityInfo)197 AccessibleAbilityConnection::AccessibleAbilityConnection(
198     int32_t accountId, int32_t connectionId, AccessibilityAbilityInfo& abilityInfo)
199 {
200     accountId_ = accountId;
201     connectionId_ = connectionId;
202     abilityInfo_ = abilityInfo;
203 }
204 
~AccessibleAbilityConnection()205 AccessibleAbilityConnection::~AccessibleAbilityConnection()
206 {
207     HILOG_DEBUG("start");
208 }
209 
OnAbilityConnectDone(const AppExecFwk::ElementName & element,const sptr<IRemoteObject> & remoteObject,int32_t resultCode)210 void AccessibleAbilityConnection::OnAbilityConnectDone(
211     const AppExecFwk::ElementName& element, const sptr<IRemoteObject>& remoteObject, int32_t resultCode)
212 {
213     (void)element;
214     (void)remoteObject;
215     (void)resultCode;
216     auto accountData = Singleton<AccessibleAbilityManagerService>::GetInstance().GetAccountData(accountId_);
217     sptr<AccessibleAbilityConnection> pointer = this;
218     if (accountData) {
219         accountData->AddConnectedAbility(pointer);
220     }
221 }
222 
OnAbilityDisconnectDone(const AppExecFwk::ElementName & element,int32_t resultCode)223 void AccessibleAbilityConnection::OnAbilityDisconnectDone(const AppExecFwk::ElementName& element, int32_t resultCode)
224 {
225     (void)element;
226     (void)resultCode;
227     return;
228 }
229 
OnKeyPressEvent(const MMI::KeyEvent & keyEvent,const int32_t sequence)230 bool AccessibleAbilityConnection::OnKeyPressEvent(const MMI::KeyEvent& keyEvent, const int32_t sequence)
231 {
232     (void)sequence;
233     if (keyEvent.GetKeyAction() == MMI::KeyEvent::KEY_ACTION_UP) {
234         return false;
235     }
236     return true;
237 }
238 
IsWantedEvent(int32_t eventType)239 bool AccessibleAbilityConnection::IsWantedEvent(int32_t eventType)
240 {
241     (void)eventType;
242     return true;
243 }
244 
CreateWant(AppExecFwk::ElementName & element)245 AAFwk::Want CreateWant(AppExecFwk::ElementName& element)
246 {
247     (void)element;
248     AAFwk::Want want;
249     return want;
250 }
251 
Disconnect()252 void AccessibleAbilityConnection::Disconnect()
253 {
254     HILOG_DEBUG("start");
255     AccessibilityAbilityHelper::GetInstance().SetTestChannelId(-1);
256 }
257 
Connect(const AppExecFwk::ElementName & element)258 bool AccessibleAbilityConnection::Connect(const AppExecFwk::ElementName& element)
259 {
260     HILOG_DEBUG("start");
261     elementName_ = element;
262     return true;
263 }
264 
GetChannelId()265 int32_t AccessibleAbilityConnection::GetChannelId()
266 {
267     HILOG_DEBUG("connectionId_ is %{public}d", connectionId_);
268     return connectionId_;
269 }
270 
OnRemoteDied(const wptr<IRemoteObject> & remote)271 void AccessibleAbilityConnection::AccessibleAbilityConnectionDeathRecipient::OnRemoteDied(
272     const wptr<IRemoteObject>& remote)
273 {
274     (void)remote;
275     // Temp deal: notify setting
276 }
277 
OnAccessibilityEvent(AccessibilityEventInfo & eventInfo)278 void AccessibleAbilityConnection::OnAccessibilityEvent(AccessibilityEventInfo &eventInfo)
279 {
280     (void)eventInfo;
281 }
282 
OnAbilityConnectDoneSync(const AppExecFwk::ElementName & element,const sptr<IRemoteObject> & remoteObject)283 void AccessibleAbilityConnection::OnAbilityConnectDoneSync(const AppExecFwk::ElementName &element,
284     const sptr<IRemoteObject> &remoteObject)
285 {
286     HILOG_DEBUG();
287     auto accountData = Singleton<AccessibleAbilityManagerService>::GetInstance().GetAccountData(accountId_);
288     if (!accountData) {
289         HILOG_ERROR("accountData is nullptr.");
290         return;
291     }
292     if (!remoteObject) {
293         HILOG_ERROR("AccessibleAbilityConnection::OnAbilityConnectDone get remoteObject failed");
294         return;
295     }
296     elementName_ = element;
297 
298     sptr<AccessibleAbilityConnection> pointer = this;
299     accountData->AddConnectedAbility(pointer);
300 }
301 
OnAbilityDisconnectDoneSync(const AppExecFwk::ElementName & element)302 void AccessibleAbilityConnection::OnAbilityDisconnectDoneSync(const AppExecFwk::ElementName &element)
303 {
304     HILOG_DEBUG("start");
305     (void)element;
306 }
307 
EnableScreenCurtain(bool isEnable)308 RetError AccessibleAbilityChannel::EnableScreenCurtain(bool isEnable)
309 {
310     (void)isEnable;
311     return RET_OK;
312 }
313 
GetCursorPosition(const int32_t accessibilityWindowId,const int64_t elementId,const int32_t requestId,const sptr<IAccessibilityElementOperatorCallback> & callback)314 RetError AccessibleAbilityChannel::GetCursorPosition(const int32_t accessibilityWindowId, const int64_t elementId,
315     const int32_t requestId, const sptr<IAccessibilityElementOperatorCallback> &callback)
316 {
317     GTEST_LOG_(INFO) << "MOCK AccessibleAbilitychannel GetCursorPosition";
318     (void)accessibilityWindowId;
319     (void)elementId;
320     (void)requestId;
321     (void)callback;
322     return RET_OK;
323 }
324 } // namespace Accessibility
325 } // namespace OHOS