1885b47fbSopenharmony_ci/* 2885b47fbSopenharmony_ci * Copyright (C) 2022 Huawei Device Co., Ltd. 3885b47fbSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4885b47fbSopenharmony_ci * you may not use this file except in compliance with the License. 5885b47fbSopenharmony_ci * You may obtain a copy of the License at 6885b47fbSopenharmony_ci * 7885b47fbSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8885b47fbSopenharmony_ci * 9885b47fbSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10885b47fbSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11885b47fbSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12885b47fbSopenharmony_ci * See the License for the specific language governing permissions and 13885b47fbSopenharmony_ci * limitations under the License. 14885b47fbSopenharmony_ci */ 15885b47fbSopenharmony_ci 16885b47fbSopenharmony_ci#ifndef ACCESSIBILITY_COMMON_UTILS_H 17885b47fbSopenharmony_ci#define ACCESSIBILITY_COMMON_UTILS_H 18885b47fbSopenharmony_ci 19885b47fbSopenharmony_ci#include <map> 20885b47fbSopenharmony_ci#include "accessibility_ability_info.h" 21885b47fbSopenharmony_ci#include "accessibility_caption.h" 22885b47fbSopenharmony_ci#include "accessibility_element_info.h" 23885b47fbSopenharmony_ci#include "accessibility_event_info.h" 24885b47fbSopenharmony_ci#include "accessibility_gesture_inject_path.h" 25885b47fbSopenharmony_ci#include "accessibility_window_info.h" 26885b47fbSopenharmony_ci#include "key_event.h" 27885b47fbSopenharmony_ci#include "napi/native_api.h" 28885b47fbSopenharmony_ci#include "napi/native_node_api.h" 29885b47fbSopenharmony_ci#include "accessibility_def.h" 30885b47fbSopenharmony_ci 31885b47fbSopenharmony_cinamespace OHOS { 32885b47fbSopenharmony_cinamespace AccessibilityNapi { 33885b47fbSopenharmony_ci// key action 34885b47fbSopenharmony_cienum KeyAction : int32_t { 35885b47fbSopenharmony_ci CANCEL = 0, 36885b47fbSopenharmony_ci DOWN = 1, 37885b47fbSopenharmony_ci UP = 2, 38885b47fbSopenharmony_ci UNKNOWN = 0xff, 39885b47fbSopenharmony_ci}; 40885b47fbSopenharmony_ci 41885b47fbSopenharmony_cistd::string GetStringFromNAPI(napi_env env, napi_value value); 42885b47fbSopenharmony_cibool ParseBool(napi_env env, bool& param, napi_value args); 43885b47fbSopenharmony_cibool ParseString(napi_env env, std::string& param, napi_value args); 44885b47fbSopenharmony_cibool ParseNumber(napi_env env, napi_value args); 45885b47fbSopenharmony_cibool ParseInt32(napi_env env, int32_t& param, napi_value args); 46885b47fbSopenharmony_cibool ParseInt64(napi_env env, int64_t& param, napi_value args); 47885b47fbSopenharmony_cibool ParseDouble(napi_env env, double& param, napi_value args); 48885b47fbSopenharmony_cibool CheckJsFunction(napi_env env, napi_value args); 49885b47fbSopenharmony_ciNAccessibilityErrMsg QueryRetMsg(OHOS::Accessibility::RetError errorCode); 50885b47fbSopenharmony_cinapi_value CreateBusinessError(napi_env env, OHOS::Accessibility::RetError errCode); 51885b47fbSopenharmony_cinapi_value GetErrorValue(napi_env env, int errCode); 52885b47fbSopenharmony_cibool CheckObserverEqual(napi_env env, napi_value observer, napi_env iterEnv, napi_ref iterRef); 53885b47fbSopenharmony_cistd::string ConvertWindowTypeToString(OHOS::Accessibility::AccessibilityWindowType type); 54885b47fbSopenharmony_cistd::string ConvertDaltonizationTypeToString(OHOS::AccessibilityConfig::DALTONIZATION_TYPE type); 55885b47fbSopenharmony_cistd::string ConvertClickResponseTimeTypeToString(OHOS::AccessibilityConfig::CLICK_RESPONSE_TIME type); 56885b47fbSopenharmony_cistd::string ConvertIgnoreRepeatClickTimeTypeToString(OHOS::AccessibilityConfig::IGNORE_REPEAT_CLICK_TIME type); 57885b47fbSopenharmony_civoid ConvertRectToJS(napi_env env, napi_value result, const OHOS::Accessibility::Rect& rect); 58885b47fbSopenharmony_civoid ConvertGridItemToJS(napi_env env, napi_value result, const Accessibility::GridItemInfo& gridItem); 59885b47fbSopenharmony_civoid ConvertAccessibleAbilityInfosToJS(napi_env env, napi_value& result, 60885b47fbSopenharmony_ci std::vector<OHOS::Accessibility::AccessibilityAbilityInfo>& accessibleAbilityInfos); 61885b47fbSopenharmony_civoid ConvertAccessibleAbilityInfoToJS( 62885b47fbSopenharmony_ci napi_env env, napi_value& result, OHOS::Accessibility::AccessibilityAbilityInfo& info); 63885b47fbSopenharmony_civoid ConvertAccessibleAbilityInfoToJSPart1( 64885b47fbSopenharmony_ci napi_env env, napi_value& result, OHOS::Accessibility::AccessibilityAbilityInfo& info); 65885b47fbSopenharmony_civoid ConvertAccessibleAbilityInfoToJSPart2( 66885b47fbSopenharmony_ci napi_env env, napi_value& result, OHOS::Accessibility::AccessibilityAbilityInfo& info); 67885b47fbSopenharmony_civoid ConvertAccessibleAbilityInfoToJSPart3( 68885b47fbSopenharmony_ci napi_env env, napi_value& result, OHOS::Accessibility::AccessibilityAbilityInfo& info); 69885b47fbSopenharmony_cibool ConvertEventInfoJSToNAPI( 70885b47fbSopenharmony_ci napi_env env, napi_value object, OHOS::Accessibility::AccessibilityEventInfo& eventInfo); 71885b47fbSopenharmony_cibool ConvertEventInfoJSToNAPIPart1( 72885b47fbSopenharmony_ci napi_env env, napi_value object, OHOS::Accessibility::AccessibilityEventInfo& eventInfo); 73885b47fbSopenharmony_cibool ConvertEventInfoJSToNAPIPart2( 74885b47fbSopenharmony_ci napi_env env, napi_value object, OHOS::Accessibility::AccessibilityEventInfo& eventInfo); 75885b47fbSopenharmony_cibool ConvertEventInfoJSToNAPIPart3( 76885b47fbSopenharmony_ci napi_env env, napi_value object, OHOS::Accessibility::AccessibilityEventInfo& eventInfo); 77885b47fbSopenharmony_ciOHOS::AccessibilityConfig::DALTONIZATION_TYPE ConvertStringToDaltonizationTypes(std::string& type); 78885b47fbSopenharmony_ciOHOS::AccessibilityConfig::CLICK_RESPONSE_TIME ConvertStringToClickResponseTimeTypes(std::string& type); 79885b47fbSopenharmony_ciOHOS::AccessibilityConfig::IGNORE_REPEAT_CLICK_TIME ConvertStringToIgnoreRepeatClickTimeTypes(std::string& type); 80885b47fbSopenharmony_civoid ConvertActionArgsJSToNAPI( 81885b47fbSopenharmony_ci napi_env env, napi_value object, std::map<std::string, std::string>& args, OHOS::Accessibility::ActionType action); 82885b47fbSopenharmony_ci 83885b47fbSopenharmony_ciKeyAction TransformKeyActionValue(int32_t keyAction); 84885b47fbSopenharmony_cibool HasKeyCode(const std::vector<int32_t>& pressedKeys, int32_t keyCode); 85885b47fbSopenharmony_civoid GetKeyValue(napi_env env, napi_value keyObject, const OHOS::MMI::KeyEvent::KeyItem* keyItem); 86885b47fbSopenharmony_civoid SetInputEventProperty(napi_env env, napi_value result, const std::shared_ptr<OHOS::MMI::KeyEvent> &keyEvent); 87885b47fbSopenharmony_civoid SetKeyPropertyPart1(napi_env env, napi_value result, const std::shared_ptr<OHOS::MMI::KeyEvent> &keyEvent); 88885b47fbSopenharmony_civoid SetKeyPropertyPart2(napi_env env, napi_value result, const std::shared_ptr<OHOS::MMI::KeyEvent> &keyEvent); 89885b47fbSopenharmony_civoid ConvertKeyEventToJS(napi_env env, napi_value result, const std::shared_ptr<OHOS::MMI::KeyEvent> &keyEvent); 90885b47fbSopenharmony_civoid ConvertCaptionPropertyToJS(napi_env env, napi_value& result, 91885b47fbSopenharmony_ci OHOS::AccessibilityConfig::CaptionProperty captionProperty); 92885b47fbSopenharmony_cibool ConvertObjToCaptionProperty( 93885b47fbSopenharmony_ci napi_env env, napi_value object, OHOS::AccessibilityConfig::CaptionProperty* ptrCaptionProperty); 94885b47fbSopenharmony_cibool ConvertObjToCaptionPropertyPart1( 95885b47fbSopenharmony_ci napi_env env, napi_value object, OHOS::AccessibilityConfig::CaptionProperty* ptrCaptionProperty); 96885b47fbSopenharmony_cibool ConvertObjToCaptionPropertyPart2( 97885b47fbSopenharmony_ci napi_env env, napi_value object, OHOS::AccessibilityConfig::CaptionProperty* ptrCaptionProperty); 98885b47fbSopenharmony_cistd::string ConvertCaptionPropertyJSToNAPI( 99885b47fbSopenharmony_ci napi_env env, napi_value object, napi_value propertyNameValue, bool &hasProperty); 100885b47fbSopenharmony_cibool ConvertJSToStringVec(napi_env env, napi_value arrayValue, std::vector<std::string> &values); 101885b47fbSopenharmony_civoid ConvertStringVecToJS(napi_env env, napi_value &result, std::vector<std::string> values); 102885b47fbSopenharmony_civoid ConvertJSToEventTypes(napi_env env, napi_value arrayValue, uint32_t &eventTypes); 103885b47fbSopenharmony_cibool ConvertJSToCapabilities(napi_env env, napi_value arrayValue, uint32_t &capabilities); 104885b47fbSopenharmony_ciuint32_t GetColorValue(napi_env env, napi_value object, napi_value propertyNameValue); 105885b47fbSopenharmony_ciuint32_t GetColorValue(napi_env env, napi_value value); 106885b47fbSopenharmony_ciuint32_t ConvertColorStringToNumer(std::string colorStr); 107885b47fbSopenharmony_cibool ColorRegexMatch(std::string colorStr, uint32_t &color); 108885b47fbSopenharmony_cistd::string ConvertColorToString(uint32_t color); 109885b47fbSopenharmony_cistd::string ConvertStringJSToNAPI(napi_env env, napi_value object, napi_value propertyNameValue, bool &hasProperty); 110885b47fbSopenharmony_ciint32_t ConvertIntJSToNAPI(napi_env env, napi_value object, napi_value propertyNameValue, bool &hasProperty); 111885b47fbSopenharmony_cibool ConvertBoolJSToNAPI(napi_env env, napi_value object, napi_value propertyNameValue, bool &hasProperty); 112885b47fbSopenharmony_civoid ConvertStringArrayJSToNAPI(napi_env env, napi_value object, 113885b47fbSopenharmony_ci napi_value propertyNameValue, bool &hasProperty, std::vector<std::string> &stringArray); 114885b47fbSopenharmony_civoid ConvertStringArrayJSToNAPICommon(napi_env env, napi_value object, std::vector<std::string> &stringArray); 115885b47fbSopenharmony_civoid ConvertSpanToJS(napi_env env, napi_value result, const Accessibility::SpanInfo& span); 116885b47fbSopenharmony_ci 117885b47fbSopenharmony_ciOHOS::Accessibility::ActionType ConvertStringToAccessibleOperationType(const std::string &type); 118885b47fbSopenharmony_ciOHOS::Accessibility::AccessibilityAbilityTypes ConvertStringToAccessibilityAbilityTypes(const std::string &type); 119885b47fbSopenharmony_ciOHOS::Accessibility::AbilityStateType ConvertStringToAbilityStateType(const std::string &type); 120885b47fbSopenharmony_ciOHOS::Accessibility::TextMoveUnit ConvertStringToTextMoveUnit(const std::string &type); 121885b47fbSopenharmony_ci 122885b47fbSopenharmony_cistd::string ConvertTextMoveUnitToString(OHOS::Accessibility::TextMoveUnit type); 123885b47fbSopenharmony_cistd::string ConvertOperationTypeToString(OHOS::Accessibility::ActionType type); 124885b47fbSopenharmony_cistd::string CoverGestureTypeToString(OHOS::Accessibility::GestureType type); 125885b47fbSopenharmony_ciconst std::string ConvertWindowUpdateTypeToString(OHOS::Accessibility::WindowUpdateType type); 126885b47fbSopenharmony_ciconst std::string ConvertAccessibilityEventTypeToString(OHOS::Accessibility::EventType type); 127885b47fbSopenharmony_civoid ConvertEventTypeToString(const OHOS::Accessibility::AccessibilityEventInfo &eventInfo, 128885b47fbSopenharmony_ci std::string &eventTypeString); 129885b47fbSopenharmony_cibool ConvertGesturePathJSToNAPI(napi_env env, napi_value object, 130885b47fbSopenharmony_ci std::shared_ptr<OHOS::Accessibility::AccessibilityGestureInjectPath>& gesturePath); 131885b47fbSopenharmony_cibool ConvertGesturePathJSToNAPIPart1(napi_env env, napi_value object, 132885b47fbSopenharmony_ci std::shared_ptr<OHOS::Accessibility::AccessibilityGestureInjectPath>& gesturePath); 133885b47fbSopenharmony_cibool ConvertGesturePathJSToNAPIPart2(napi_env env, napi_value object, 134885b47fbSopenharmony_ci std::shared_ptr<OHOS::Accessibility::AccessibilityGestureInjectPath>& gesturePath); 135885b47fbSopenharmony_ci 136885b47fbSopenharmony_cistruct AccessibilityCallbackInfo { 137885b47fbSopenharmony_ci napi_env env_; 138885b47fbSopenharmony_ci napi_ref ref_; 139885b47fbSopenharmony_ci}; 140885b47fbSopenharmony_ci 141885b47fbSopenharmony_cistruct StateCallbackInfo: public AccessibilityCallbackInfo { 142885b47fbSopenharmony_ci bool state_; 143885b47fbSopenharmony_ci std::string stringValue_; 144885b47fbSopenharmony_ci uint32_t uint32Value_; 145885b47fbSopenharmony_ci int32_t int32Value_; 146885b47fbSopenharmony_ci float floatValue_; 147885b47fbSopenharmony_ci std::vector<std::string> stringVector_; 148885b47fbSopenharmony_ci}; 149885b47fbSopenharmony_ci 150885b47fbSopenharmony_cistruct CaptionCallbackInfo: public AccessibilityCallbackInfo { 151885b47fbSopenharmony_ci OHOS::AccessibilityConfig::CaptionProperty caption_; 152885b47fbSopenharmony_ci}; 153885b47fbSopenharmony_ci} // namespace AccessibilityNapi 154885b47fbSopenharmony_ci} // OHOS 155885b47fbSopenharmony_ci#endif // ACCESSIBILITY_COMMON_UTILS_H