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