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