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 #include "accessibility_extension_context.h"
17 #include "accessible_ability_client.h"
18 #include "hilog_wrapper.h"
19
20 using namespace std;
21
22 namespace OHOS {
23 namespace Accessibility {
GetFocus(const int32_t focusType,AccessibilityElementInfo & elementInfo)24 RetError AccessibilityExtensionContext::GetFocus(const int32_t focusType, AccessibilityElementInfo &elementInfo)
25 {
26 HILOG_DEBUG();
27 sptr<AccessibleAbilityClient> aaClient = AccessibleAbilityClient::GetInstance();
28 if (!aaClient) {
29 HILOG_ERROR("aaClient is nullptr");
30 return RET_ERR_NULLPTR;
31 }
32 return aaClient->GetFocus(focusType, elementInfo);
33 }
34
GetFocusByElementInfo(const AccessibilityElementInfo & sourceInfo,const int32_t focusType,AccessibilityElementInfo & elementInfo)35 RetError AccessibilityExtensionContext::GetFocusByElementInfo(const AccessibilityElementInfo &sourceInfo,
36 const int32_t focusType, AccessibilityElementInfo &elementInfo)
37 {
38 HILOG_DEBUG();
39 sptr<AccessibleAbilityClient> aaClient = AccessibleAbilityClient::GetInstance();
40 if (!aaClient) {
41 HILOG_ERROR("aaClient is nullptr");
42 return RET_ERR_NULLPTR;
43 }
44 return aaClient->GetFocusByElementInfo(sourceInfo, focusType, elementInfo);
45 }
46
InjectGesture(const std::shared_ptr<AccessibilityGestureInjectPath> & gesturePath)47 RetError AccessibilityExtensionContext::InjectGesture(
48 const std::shared_ptr<AccessibilityGestureInjectPath> &gesturePath)
49 {
50 HILOG_DEBUG();
51 sptr<AccessibleAbilityClient> aaClient = AccessibleAbilityClient::GetInstance();
52 if (!aaClient) {
53 HILOG_ERROR("aaClient is nullptr");
54 return RET_ERR_NULLPTR;
55 }
56 return aaClient->InjectGesture(gesturePath);
57 }
58
GetRoot(AccessibilityElementInfo & elementInfo)59 RetError AccessibilityExtensionContext::GetRoot(AccessibilityElementInfo &elementInfo)
60 {
61 HILOG_DEBUG();
62 sptr<AccessibleAbilityClient> aaClient = AccessibleAbilityClient::GetInstance();
63 if (!aaClient) {
64 HILOG_ERROR("aaClient is nullptr");
65 return RET_ERR_NULLPTR;
66 }
67 return aaClient->GetRoot(elementInfo);
68 }
69
GetRootByWindow(const AccessibilityWindowInfo & windowInfo,AccessibilityElementInfo & elementInfo)70 RetError AccessibilityExtensionContext::GetRootByWindow(const AccessibilityWindowInfo &windowInfo,
71 AccessibilityElementInfo &elementInfo)
72 {
73 HILOG_DEBUG();
74 sptr<AccessibleAbilityClient> aaClient = AccessibleAbilityClient::GetInstance();
75 if (!aaClient) {
76 HILOG_ERROR("aaClient is nullptr");
77 return RET_ERR_NULLPTR;
78 }
79 return aaClient->GetRootByWindow(windowInfo, elementInfo);
80 }
81
GetWindows(std::vector<AccessibilityWindowInfo> & windows)82 RetError AccessibilityExtensionContext::GetWindows(std::vector<AccessibilityWindowInfo> &windows)
83 {
84 HILOG_DEBUG();
85 sptr<AccessibleAbilityClient> aaClient = AccessibleAbilityClient::GetInstance();
86 if (!aaClient) {
87 HILOG_ERROR("aaClient is nullptr");
88 return RET_ERR_NULLPTR;
89 }
90 return aaClient->GetWindows(windows);
91 }
92
GetWindows(const uint64_t displayId,std::vector<AccessibilityWindowInfo> & windows)93 RetError AccessibilityExtensionContext::GetWindows(const uint64_t displayId,
94 std::vector<AccessibilityWindowInfo> &windows)
95 {
96 HILOG_DEBUG();
97 sptr<AccessibleAbilityClient> aaClient = AccessibleAbilityClient::GetInstance();
98 if (!aaClient) {
99 HILOG_ERROR("aaClient is nullptr");
100 return RET_ERR_NULLPTR;
101 }
102 return aaClient->GetWindows(displayId, windows);
103 }
104
GetNext(const AccessibilityElementInfo & elementInfo,const FocusMoveDirection direction,AccessibilityElementInfo & nextElementInfo)105 RetError AccessibilityExtensionContext::GetNext(const AccessibilityElementInfo &elementInfo,
106 const FocusMoveDirection direction, AccessibilityElementInfo &nextElementInfo)
107 {
108 HILOG_DEBUG();
109 sptr<AccessibleAbilityClient> aaClient = AccessibleAbilityClient::GetInstance();
110 if (!aaClient) {
111 HILOG_ERROR("aaClient is nullptr");
112 return RET_ERR_NULLPTR;
113 }
114 return aaClient->GetNext(elementInfo, direction, nextElementInfo);
115 }
116
GetChildElementInfo(const int32_t index,const AccessibilityElementInfo & parent,AccessibilityElementInfo & child)117 RetError AccessibilityExtensionContext::GetChildElementInfo(const int32_t index,
118 const AccessibilityElementInfo &parent, AccessibilityElementInfo &child)
119 {
120 HILOG_DEBUG();
121 sptr<AccessibleAbilityClient> aaClient = AccessibleAbilityClient::GetInstance();
122 if (!aaClient) {
123 HILOG_ERROR("aaClient is nullptr");
124 return RET_ERR_NULLPTR;
125 }
126 return aaClient->GetChildElementInfo(index, parent, child);
127 }
128
GetByContent(const AccessibilityElementInfo & elementInfo,const std::string & text,std::vector<AccessibilityElementInfo> & elementInfos)129 RetError AccessibilityExtensionContext::GetByContent(const AccessibilityElementInfo &elementInfo,
130 const std::string &text, std::vector<AccessibilityElementInfo> &elementInfos)
131 {
132 HILOG_DEBUG();
133 sptr<AccessibleAbilityClient> aaClient = AccessibleAbilityClient::GetInstance();
134 if (!aaClient) {
135 HILOG_ERROR("aaClient is nullptr");
136 return RET_ERR_NULLPTR;
137 }
138 return aaClient->GetByContent(elementInfo, text, elementInfos);
139 }
140
GetParentElementInfo(const AccessibilityElementInfo & child,AccessibilityElementInfo & parent)141 RetError AccessibilityExtensionContext::GetParentElementInfo(const AccessibilityElementInfo &child,
142 AccessibilityElementInfo &parent)
143 {
144 HILOG_DEBUG();
145 sptr<AccessibleAbilityClient> aaClient = AccessibleAbilityClient::GetInstance();
146 if (!aaClient) {
147 HILOG_ERROR("aaClient is nullptr");
148 return RET_ERR_NULLPTR;
149 }
150 return aaClient->GetParentElementInfo(child, parent);
151 }
152
ExecuteAction(const AccessibilityElementInfo & elementInfo,const ActionType action,const std::map<std::string,std::string> & actionArguments)153 RetError AccessibilityExtensionContext::ExecuteAction(const AccessibilityElementInfo &elementInfo,
154 const ActionType action, const std::map<std::string, std::string> &actionArguments)
155 {
156 HILOG_DEBUG();
157 sptr<AccessibleAbilityClient> aaClient = AccessibleAbilityClient::GetInstance();
158 if (!aaClient) {
159 HILOG_ERROR("aaClient is nullptr");
160 return RET_ERR_NULLPTR;
161 }
162 return aaClient->ExecuteAction(elementInfo, action, actionArguments);
163 }
164
SetTargetBundleName(const std::vector<std::string> & targetBundleNames)165 RetError AccessibilityExtensionContext::SetTargetBundleName(const std::vector<std::string> &targetBundleNames)
166 {
167 HILOG_DEBUG();
168 sptr<AccessibleAbilityClient> aaClient = AccessibleAbilityClient::GetInstance();
169 if (!aaClient) {
170 HILOG_ERROR("aaClient is nullptr");
171 return RET_ERR_NULLPTR;
172 }
173 return aaClient->SetTargetBundleName(targetBundleNames);
174 }
175 } // namespace Accessibility
176 } // namespace OHOS