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