• 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 napi_status ParseResourceIdFromNAPI(napi_env env, napi_value value, uint32_t &idValue);
42 napi_status ParseResourceBundleNameFromNAPI(napi_env env, napi_value value, std::string &bundleNameValue);
43 napi_status ParseResourceModuleNameFromNAPI(napi_env env, napi_value value, std::string &moduleNameValue);
44 napi_status ParseResourceParamsFromNAPI(napi_env env, napi_value value,
45     std::vector<std::tuple<int32_t, std::string>> &resourceParamsValue);
46 std::string GetStringFromNAPI(napi_env env, napi_value value);
47 bool ParseBool(napi_env env, bool& param, napi_value args);
48 bool ParseString(napi_env env, std::string& param, napi_value args);
49 bool ParseNumber(napi_env env, napi_value args);
50 bool ParseInt32(napi_env env, int32_t& param, napi_value args);
51 bool ParseInt64(napi_env env, int64_t& param, napi_value args);
52 bool ParseDouble(napi_env env, double& param, napi_value args);
53 bool CheckJsFunction(napi_env env, napi_value args);
54 NAccessibilityErrMsg QueryRetMsg(OHOS::Accessibility::RetError errorCode);
55 napi_value CreateBusinessError(napi_env env, OHOS::Accessibility::RetError errCode);
56 napi_value GetErrorValue(napi_env env, int errCode);
57 bool CheckObserverEqual(napi_env env, napi_value observer, napi_env iterEnv, napi_ref iterRef);
58 std::string ConvertWindowTypeToString(OHOS::Accessibility::AccessibilityWindowType type);
59 std::string ConvertDaltonizationTypeToString(OHOS::AccessibilityConfig::DALTONIZATION_TYPE type);
60 std::string ConvertClickResponseTimeTypeToString(OHOS::AccessibilityConfig::CLICK_RESPONSE_TIME type);
61 std::string ConvertIgnoreRepeatClickTimeTypeToString(OHOS::AccessibilityConfig::IGNORE_REPEAT_CLICK_TIME type);
62 void ConvertRectToJS(napi_env env, napi_value result, const OHOS::Accessibility::Rect& rect);
63 void ConvertGridItemToJS(napi_env env, napi_value result, const Accessibility::GridItemInfo& gridItem);
64 void ConvertAccessibleAbilityInfosToJS(napi_env env, napi_value& result,
65     std::vector<OHOS::Accessibility::AccessibilityAbilityInfo>& accessibleAbilityInfos);
66 void ConvertAccessibleAbilityInfoToJS(
67     napi_env env, napi_value& result, OHOS::Accessibility::AccessibilityAbilityInfo& info);
68 void ConvertAccessibleAbilityInfoToJSPart1(
69     napi_env env, napi_value& result, OHOS::Accessibility::AccessibilityAbilityInfo& info);
70 void ConvertAccessibleAbilityInfoToJSPart2(
71     napi_env env, napi_value& result, OHOS::Accessibility::AccessibilityAbilityInfo& info);
72 void ConvertAccessibleAbilityInfoToJSPart3(
73     napi_env env, napi_value& result, OHOS::Accessibility::AccessibilityAbilityInfo& info);
74 bool ConvertEventInfoJSToNAPI(
75     napi_env env, napi_value object, OHOS::Accessibility::AccessibilityEventInfo& eventInfo);
76 bool ConvertEventInfoJSToNAPIPart1(
77     napi_env env, napi_value object, OHOS::Accessibility::AccessibilityEventInfo& eventInfo);
78 bool ConvertEventInfoJSToNAPIPart2(
79     napi_env env, napi_value object, OHOS::Accessibility::AccessibilityEventInfo& eventInfo);
80 bool ConvertEventInfoJSToNAPIPart3(
81     napi_env env, napi_value object, OHOS::Accessibility::AccessibilityEventInfo& eventInfo);
82 bool ConvertEventInfoJSToNAPIPart4(
83     napi_env env, napi_value object, OHOS::Accessibility::AccessibilityEventInfo& eventInfo);
84 OHOS::AccessibilityConfig::DALTONIZATION_TYPE ConvertStringToDaltonizationTypes(std::string& type);
85 OHOS::AccessibilityConfig::CLICK_RESPONSE_TIME ConvertStringToClickResponseTimeTypes(std::string& type);
86 OHOS::AccessibilityConfig::IGNORE_REPEAT_CLICK_TIME ConvertStringToIgnoreRepeatClickTimeTypes(std::string& type);
87 void ConvertActionArgsJSToNAPI(
88     napi_env env, napi_value object, std::map<std::string, std::string>& args, OHOS::Accessibility::ActionType action);
89 
90 KeyAction TransformKeyActionValue(int32_t keyAction);
91 bool HasKeyCode(const std::vector<int32_t>& pressedKeys, int32_t keyCode);
92 void GetKeyValue(napi_env env, napi_value keyObject, const OHOS::MMI::KeyEvent::KeyItem* keyItem);
93 void SetInputEventProperty(napi_env env, napi_value result, const std::shared_ptr<OHOS::MMI::KeyEvent> &keyEvent);
94 void SetKeyPropertyPart1(napi_env env, napi_value result, const std::shared_ptr<OHOS::MMI::KeyEvent> &keyEvent);
95 void SetKeyPropertyPart2(napi_env env, napi_value result, const std::shared_ptr<OHOS::MMI::KeyEvent> &keyEvent);
96 void ConvertKeyEventToJS(napi_env env, napi_value result, const std::shared_ptr<OHOS::MMI::KeyEvent> &keyEvent);
97 void ConvertCaptionPropertyToJS(napi_env env, napi_value& result,
98     OHOS::AccessibilityConfig::CaptionProperty captionProperty);
99 bool ConvertObjToCaptionProperty(
100     napi_env env, napi_value object, OHOS::AccessibilityConfig::CaptionProperty* ptrCaptionProperty);
101 bool ConvertObjToCaptionPropertyPart1(
102     napi_env env, napi_value object, OHOS::AccessibilityConfig::CaptionProperty* ptrCaptionProperty);
103 bool ConvertObjToCaptionPropertyPart2(
104     napi_env env, napi_value object, OHOS::AccessibilityConfig::CaptionProperty* ptrCaptionProperty);
105 std::string ConvertCaptionPropertyJSToNAPI(
106     napi_env env, napi_value object, napi_value propertyNameValue, bool &hasProperty);
107 bool ConvertJSToStringVec(napi_env env, napi_value arrayValue, std::vector<std::string> &values);
108 void ConvertStringVecToJS(napi_env env, napi_value &result, std::vector<std::string> values);
109 void ConvertInt64VecToJS(napi_env env, napi_value &result, std::vector<std::int64_t> values);
110 void ConvertJSToEventTypes(napi_env env, napi_value arrayValue, uint32_t &eventTypes);
111 bool ConvertJSToCapabilities(napi_env env, napi_value arrayValue, uint32_t &capabilities);
112 bool ConvertStringToInt64(std::string &str, int64_t &value);
113 uint32_t GetColorValue(napi_env env, napi_value object, napi_value propertyNameValue);
114 uint32_t GetColorValue(napi_env env, napi_value value);
115 uint32_t ConvertColorStringToNumer(std::string colorStr);
116 bool ColorRegexMatch(std::string colorStr, uint32_t &color);
117 std::string ConvertColorToString(uint32_t color);
118 std::string ConvertStringJSToNAPI(napi_env env, napi_value object, napi_value propertyNameValue, bool &hasProperty);
119 int32_t ConvertIntJSToNAPI(napi_env env, napi_value object, napi_value propertyNameValue, bool &hasProperty);
120 bool ConvertBoolJSToNAPI(napi_env env, napi_value object, napi_value propertyNameValue, bool &hasProperty);
121 void ConvertStringArrayJSToNAPI(napi_env env, napi_value object,
122     napi_value propertyNameValue, bool &hasProperty, std::vector<std::string> &stringArray);
123 void ConvertStringArrayJSToNAPICommon(napi_env env, napi_value object, std::vector<std::string> &stringArray);
124 void ConvertSpanToJS(napi_env env, napi_value result, const Accessibility::SpanInfo& span);
125 void ConvertResourceJSToNAPI(napi_env env, napi_value object, napi_value propertyNameValue, bool &hasProperty,
126     Accessibility::ResourceInfo& resourceInfo);
127 bool IsColorWithMagic(const std::string& colorStr);
128 
129 OHOS::Accessibility::ActionType ConvertStringToAccessibleOperationType(const std::string &type);
130 OHOS::Accessibility::AccessibilityAbilityTypes ConvertStringToAccessibilityAbilityTypes(const std::string &type);
131 OHOS::Accessibility::AbilityStateType ConvertStringToAbilityStateType(const std::string &type);
132 OHOS::Accessibility::TextMoveUnit ConvertStringToTextMoveUnit(const std::string &type);
133 
134 std::string ConvertTextMoveUnitToString(OHOS::Accessibility::TextMoveUnit type);
135 std::string ConvertOperationTypeToString(OHOS::Accessibility::ActionType type);
136 std::string CoverGestureTypeToString(OHOS::Accessibility::GestureType type);
137 const std::string ConvertWindowUpdateTypeToString(OHOS::Accessibility::WindowUpdateType type);
138 const std::string ConvertAccessibilityEventTypeToString(OHOS::Accessibility::EventType type);
139 void ConvertEventTypeToString(const OHOS::Accessibility::AccessibilityEventInfo &eventInfo,
140     std::string &eventTypeString);
141 bool ConvertGesturePathJSToNAPI(napi_env env, napi_value object,
142     std::shared_ptr<OHOS::Accessibility::AccessibilityGestureInjectPath>& gesturePath);
143 bool ConvertGesturePathJSToNAPIPart1(napi_env env, napi_value object,
144     std::shared_ptr<OHOS::Accessibility::AccessibilityGestureInjectPath>& gesturePath);
145 bool ConvertGesturePathJSToNAPIPart2(napi_env env, napi_value object,
146     std::shared_ptr<OHOS::Accessibility::AccessibilityGestureInjectPath>& gesturePath);
147 
148 struct AccessibilityCallbackInfo {
149     napi_env env_;
150     napi_ref ref_;
151 };
152 
153 struct StateCallbackInfo: public AccessibilityCallbackInfo {
154     bool state_;
155     std::string stringValue_;
156     uint32_t uint32Value_;
157     int32_t int32Value_;
158     double doubleValue_;
159     std::vector<std::string> stringVector_;
160 };
161 
162 struct CaptionCallbackInfo: public AccessibilityCallbackInfo {
163     OHOS::AccessibilityConfig::CaptionProperty caption_;
164 };
165 } // namespace AccessibilityNapi
166 } // OHOS
167 #endif // ACCESSIBILITY_COMMON_UTILS_H