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