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