• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #ifndef ACCESSIBILITY_COMMON_UTILS_H
17 #define ACCESSIBILITY_COMMON_UTILS_H
18 
19 #include <map>
20 #include "accessibility_ability_info.h"
21 #include "accessibility_caption.h"
22 #include "accessibility_element_info.h"
23 #include "accessibility_event_info.h"
24 #include "accessibility_gesture_inject_path.h"
25 #include "accessibility_window_info.h"
26 #include "key_event.h"
27 #include "napi/native_api.h"
28 #include "napi/native_node_api.h"
29 #include "accessibility_def.h"
30 
31 namespace OHOS {
32 namespace AccessibilityNapi {
33 // key action
34 enum KeyAction : int32_t {
35     CANCEL = 0,
36     DOWN = 1,
37     UP = 2,
38     UNKNOWN = 0xff,
39 };
40 
41 uint32_t ParseResourceIdFromNAPI(napi_env env, napi_value value);
42 std::string ParseResourceBundleNameFromNAPI(napi_env env, napi_value value);
43 std::string ParseResourceModuleNameFromNAPI(napi_env env, napi_value value);
44 std::string GetStringFromNAPI(napi_env env, napi_value value);
45 bool ParseBool(napi_env env, bool& param, napi_value args);
46 bool ParseString(napi_env env, std::string& param, napi_value args);
47 bool ParseNumber(napi_env env, napi_value args);
48 bool ParseInt32(napi_env env, int32_t& param, napi_value args);
49 bool ParseInt64(napi_env env, int64_t& param, napi_value args);
50 bool ParseDouble(napi_env env, double& param, napi_value args);
51 bool CheckJsFunction(napi_env env, napi_value args);
52 NAccessibilityErrMsg QueryRetMsg(OHOS::Accessibility::RetError errorCode);
53 napi_value CreateBusinessError(napi_env env, OHOS::Accessibility::RetError errCode);
54 napi_value GetErrorValue(napi_env env, int errCode);
55 bool CheckObserverEqual(napi_env env, napi_value observer, napi_env iterEnv, napi_ref iterRef);
56 std::string ConvertWindowTypeToString(OHOS::Accessibility::AccessibilityWindowType type);
57 std::string ConvertDaltonizationTypeToString(OHOS::AccessibilityConfig::DALTONIZATION_TYPE type);
58 std::string ConvertClickResponseTimeTypeToString(OHOS::AccessibilityConfig::CLICK_RESPONSE_TIME type);
59 std::string ConvertIgnoreRepeatClickTimeTypeToString(OHOS::AccessibilityConfig::IGNORE_REPEAT_CLICK_TIME type);
60 void ConvertRectToJS(napi_env env, napi_value result, const OHOS::Accessibility::Rect& rect);
61 void ConvertGridItemToJS(napi_env env, napi_value result, const Accessibility::GridItemInfo& gridItem);
62 void ConvertAccessibleAbilityInfosToJS(napi_env env, napi_value& result,
63     std::vector<OHOS::Accessibility::AccessibilityAbilityInfo>& accessibleAbilityInfos);
64 void ConvertAccessibleAbilityInfoToJS(
65     napi_env env, napi_value& result, OHOS::Accessibility::AccessibilityAbilityInfo& info);
66 void ConvertAccessibleAbilityInfoToJSPart1(
67     napi_env env, napi_value& result, OHOS::Accessibility::AccessibilityAbilityInfo& info);
68 void ConvertAccessibleAbilityInfoToJSPart2(
69     napi_env env, napi_value& result, OHOS::Accessibility::AccessibilityAbilityInfo& info);
70 void ConvertAccessibleAbilityInfoToJSPart3(
71     napi_env env, napi_value& result, OHOS::Accessibility::AccessibilityAbilityInfo& info);
72 bool ConvertEventInfoJSToNAPI(
73     napi_env env, napi_value object, OHOS::Accessibility::AccessibilityEventInfo& eventInfo);
74 bool ConvertEventInfoJSToNAPIPart1(
75     napi_env env, napi_value object, OHOS::Accessibility::AccessibilityEventInfo& eventInfo);
76 bool ConvertEventInfoJSToNAPIPart2(
77     napi_env env, napi_value object, OHOS::Accessibility::AccessibilityEventInfo& eventInfo);
78 bool ConvertEventInfoJSToNAPIPart3(
79     napi_env env, napi_value object, OHOS::Accessibility::AccessibilityEventInfo& eventInfo);
80 bool ConvertEventInfoJSToNAPIPart4(
81     napi_env env, napi_value object, OHOS::Accessibility::AccessibilityEventInfo& eventInfo);
82 OHOS::AccessibilityConfig::DALTONIZATION_TYPE ConvertStringToDaltonizationTypes(std::string& type);
83 OHOS::AccessibilityConfig::CLICK_RESPONSE_TIME ConvertStringToClickResponseTimeTypes(std::string& type);
84 OHOS::AccessibilityConfig::IGNORE_REPEAT_CLICK_TIME ConvertStringToIgnoreRepeatClickTimeTypes(std::string& type);
85 void ConvertActionArgsJSToNAPI(
86     napi_env env, napi_value object, std::map<std::string, std::string>& args, OHOS::Accessibility::ActionType action);
87 void SetPermCheckFlagForAction(bool checkPerm, std::map<std::string, std::string>& args);
88 void SetScrollTypeParam(napi_env env, napi_value object, std::map<std::string, std::string>& args);
89 void SetSelectionParam(napi_env env, napi_value object, std::map<std::string, std::string>& args);
90 void CheckNumber(napi_env env, std::string value);
91 
92 KeyAction TransformKeyActionValue(int32_t keyAction);
93 bool HasKeyCode(const std::vector<int32_t>& pressedKeys, int32_t keyCode);
94 void GetKeyValue(napi_env env, napi_value keyObject, const OHOS::MMI::KeyEvent::KeyItem* keyItem);
95 void SetInputEventProperty(napi_env env, napi_value result, const std::shared_ptr<OHOS::MMI::KeyEvent> &keyEvent);
96 void SetKeyPropertyPart1(napi_env env, napi_value result, const std::shared_ptr<OHOS::MMI::KeyEvent> &keyEvent);
97 void SetKeyPropertyPart2(napi_env env, napi_value result, const std::shared_ptr<OHOS::MMI::KeyEvent> &keyEvent);
98 void ConvertKeyEventToJS(napi_env env, napi_value result, const std::shared_ptr<OHOS::MMI::KeyEvent> &keyEvent);
99 void ConvertCaptionPropertyToJS(napi_env env, napi_value& result,
100     OHOS::AccessibilityConfig::CaptionProperty captionProperty);
101 bool ConvertObjToCaptionProperty(
102     napi_env env, napi_value object, OHOS::AccessibilityConfig::CaptionProperty* ptrCaptionProperty);
103 bool ConvertObjToCaptionPropertyPart1(
104     napi_env env, napi_value object, OHOS::AccessibilityConfig::CaptionProperty* ptrCaptionProperty);
105 bool ConvertObjToCaptionPropertyPart2(
106     napi_env env, napi_value object, OHOS::AccessibilityConfig::CaptionProperty* ptrCaptionProperty);
107 std::string ConvertCaptionPropertyJSToNAPI(
108     napi_env env, napi_value object, napi_value propertyNameValue, bool &hasProperty);
109 bool ConvertJSToStringVec(napi_env env, napi_value arrayValue, std::vector<std::string> &values);
110 void ConvertStringVecToJS(napi_env env, napi_value &result, std::vector<std::string> values);
111 void ConvertInt64VecToJS(napi_env env, napi_value &result, std::vector<std::int64_t> values);
112 void ConvertJSToEventTypes(napi_env env, napi_value arrayValue, uint32_t &eventTypes);
113 bool ConvertJSToCapabilities(napi_env env, napi_value arrayValue, uint32_t &capabilities);
114 bool ConvertStringToInt64(std::string &str, int64_t &value);
115 uint32_t GetColorValue(napi_env env, napi_value object, napi_value propertyNameValue);
116 uint32_t GetColorValue(napi_env env, napi_value value);
117 uint32_t ConvertColorStringToNumer(std::string colorStr);
118 bool ColorRegexMatch(std::string colorStr, uint32_t &color);
119 std::string ConvertColorToString(uint32_t color);
120 std::string ConvertStringJSToNAPI(napi_env env, napi_value object, napi_value propertyNameValue, bool &hasProperty);
121 int32_t ConvertIntJSToNAPI(napi_env env, napi_value object, napi_value propertyNameValue, bool &hasProperty);
122 bool ConvertBoolJSToNAPI(napi_env env, napi_value object, napi_value propertyNameValue, bool &hasProperty);
123 void ConvertStringArrayJSToNAPI(napi_env env, napi_value object,
124     napi_value propertyNameValue, bool &hasProperty, std::vector<std::string> &stringArray);
125 void ConvertStringArrayJSToNAPICommon(napi_env env, napi_value object, std::vector<std::string> &stringArray);
126 void ConvertSpanToJS(napi_env env, napi_value result, const Accessibility::SpanInfo& span);
127 void ConvertResourceJSToNAPI(napi_env env, napi_value object, napi_value propertyNameValue, bool &hasProperty,
128     Accessibility::ResourceInfo& resourceInfo);
129 bool IsColorWithMagic(const std::string& colorStr);
130 
131 OHOS::Accessibility::ActionType ConvertStringToAccessibleOperationType(const std::string &type);
132 OHOS::Accessibility::AccessibilityAbilityTypes ConvertStringToAccessibilityAbilityTypes(const std::string &type);
133 OHOS::Accessibility::AbilityStateType ConvertStringToAbilityStateType(const std::string &type);
134 OHOS::Accessibility::TextMoveUnit ConvertStringToTextMoveUnit(const std::string &type);
135 
136 std::string ConvertTextMoveUnitToString(OHOS::Accessibility::TextMoveUnit type);
137 std::string ConvertOperationTypeToString(OHOS::Accessibility::ActionType type);
138 std::string CoverGestureTypeToString(OHOS::Accessibility::GestureType type);
139 const std::string ConvertWindowUpdateTypeToString(OHOS::Accessibility::WindowUpdateType type);
140 const std::string ConvertAccessibilityEventTypeToString(OHOS::Accessibility::EventType type);
141 void ConvertEventTypeToString(const OHOS::Accessibility::AccessibilityEventInfo &eventInfo,
142     std::string &eventTypeString);
143 bool ConvertGesturePathJSToNAPI(napi_env env, napi_value object,
144     std::shared_ptr<OHOS::Accessibility::AccessibilityGestureInjectPath>& gesturePath);
145 bool ConvertGesturePathJSToNAPIPart1(napi_env env, napi_value object,
146     std::shared_ptr<OHOS::Accessibility::AccessibilityGestureInjectPath>& gesturePath);
147 bool ConvertGesturePathJSToNAPIPart2(napi_env env, napi_value object,
148     std::shared_ptr<OHOS::Accessibility::AccessibilityGestureInjectPath>& gesturePath);
149 AccessibilityEventType CovertStringToAccessibilityEventType(const std::string &eventType);
150 AccessibilityEventType CovertStringToAccessibilityEventType(
151     const OHOS::Accessibility::AccessibilityEventInfo &eventInfo, const std::string &eventTypeString);
152 
153 struct AccessibilityCallbackInfo {
154     napi_env env_;
155     napi_ref ref_;
156 };
157 
158 struct StateCallbackInfo: public AccessibilityCallbackInfo {
159     bool state_;
160     std::string stringValue_;
161     uint32_t uint32Value_;
162     int32_t int32Value_;
163     float   floatValue_;
164     std::vector<std::string> stringVector_;
165 };
166 
167 struct CaptionCallbackInfo: public AccessibilityCallbackInfo {
168     OHOS::AccessibilityConfig::CaptionProperty caption_;
169 };
170 } // namespace AccessibilityNapi
171 } // OHOS
172 #endif // ACCESSIBILITY_COMMON_UTILS_H
173