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 NAPI_ACCESSIBILITY_UTILS_H 17 #define NAPI_ACCESSIBILITY_UTILS_H 18 19 #include <map> 20 #include "accessibility_ability_info.h" 21 #include "accessibility_caption.h" 22 #include "accessibility_config.h" 23 #include "accessibility_element_info.h" 24 #include "accessibility_event_info.h" 25 #include "accessibility_gesture_inject_path.h" 26 #include "accessibility_window_info.h" 27 #include "key_event.h" 28 #include "napi/native_api.h" 29 #include "napi/native_node_api.h" 30 #include "napi_accessibility_def.h" 31 32 namespace OHOS { 33 namespace AccessibilityNapi { 34 // key action 35 enum KeyAction : int32_t { 36 CANCEL = 0, 37 DOWN = 1, 38 UP = 2, 39 UNKNOWN = 0xff, 40 }; 41 42 std::string GetStringFromNAPI(napi_env env, napi_value value); 43 bool ParseBool(napi_env env, bool& param, napi_value args); 44 bool ParseString(napi_env env, std::string& param, napi_value args); 45 bool ParseNumber(napi_env env, napi_value args); 46 bool ParseInt32(napi_env env, int32_t& param, napi_value args); 47 bool ParseDouble(napi_env env, double& param, napi_value args); 48 bool CheckJsFunction(napi_env env, napi_value args); 49 NAccessibilityErrMsg QueryRetMsg(OHOS::Accessibility::RetError errorCode); 50 napi_value CreateBusinessError(napi_env env, OHOS::Accessibility::RetError errCode); 51 napi_value GetErrorValue(napi_env env, int errCode); 52 bool CheckObserverEqual(napi_env env, napi_value observer, napi_env iterEnv, napi_ref iterRef); 53 std::string ConvertWindowTypeToString(OHOS::Accessibility::AccessibilityWindowType type); 54 std::string ConvertDaltonizationTypeToString(OHOS::AccessibilityConfig::DALTONIZATION_TYPE type); 55 void ConvertRectToJS(napi_env env, napi_value result, const OHOS::Accessibility::Rect& rect); 56 void ConvertAccessibleAbilityInfosToJS(napi_env env, napi_value& result, 57 std::vector<OHOS::Accessibility::AccessibilityAbilityInfo>& accessibleAbilityInfos); 58 bool ConvertEventInfoJSToNAPI(napi_env env, napi_value object, OHOS::Accessibility::AccessibilityEventInfo& eventInfo); 59 OHOS::AccessibilityConfig::DALTONIZATION_TYPE ConvertStringToDaltonizationTypes(std::string& type); 60 void ConvertActionArgsJSToNAPI( 61 napi_env env, napi_value object, std::map<std::string, std::string>& args, OHOS::Accessibility::ActionType action); 62 63 KeyAction TransformKeyActionValue(int32_t keyAction); 64 bool HasKeyCode(const std::vector<int32_t>& pressedKeys, int32_t keyCode); 65 void GetKeyValue(napi_env env, napi_value keyObject, const OHOS::MMI::KeyEvent::KeyItem* keyItem); 66 void SetInputEventProperty(napi_env env, napi_value result, const std::shared_ptr<OHOS::MMI::KeyEvent> &keyEvent); 67 void ConvertKeyEventToJS(napi_env env, napi_value result, const std::shared_ptr<OHOS::MMI::KeyEvent> &keyEvent); 68 void ConvertCaptionPropertyToJS(napi_env env, napi_value& result, 69 OHOS::AccessibilityConfig::CaptionProperty captionProperty); 70 bool ConvertObjToCaptionProperty( 71 napi_env env, napi_value object, OHOS::AccessibilityConfig::CaptionProperty* ptrCaptionProperty); 72 bool ConvertJSToStringVec(napi_env env, napi_value arrayValue, std::vector<std::string> &values); 73 void ConvertStringVecToJS(napi_env env, napi_value &result, std::vector<std::string> values); 74 void ConvertJSToEventTypes(napi_env env, napi_value arrayValue, uint32_t &eventTypes); 75 bool ConvertJSToCapabilities(napi_env env, napi_value arrayValue, uint32_t &capabilities); 76 uint32_t GetColorValue(napi_env env, napi_value object, napi_value propertyNameValue); 77 uint32_t GetColorValue(napi_env env, napi_value value); 78 uint32_t ConvertColorStringToNumer(std::string colorStr); 79 std::string ConvertColorToString(uint32_t color); 80 81 OHOS::Accessibility::ActionType ConvertStringToAccessibleOperationType(const std::string &type); 82 OHOS::Accessibility::AccessibilityAbilityTypes ConvertStringToAccessibilityAbilityTypes(const std::string &type); 83 OHOS::Accessibility::AbilityStateType ConvertStringToAbilityStateType(const std::string &type); 84 OHOS::Accessibility::TextMoveUnit ConvertStringToTextMoveUnit(const std::string &type); 85 86 std::string ConvertTextMoveUnitToString(OHOS::Accessibility::TextMoveUnit type); 87 std::string ConvertOperationTypeToString(OHOS::Accessibility::ActionType type); 88 std::string CoverGestureTypeToString(OHOS::Accessibility::GestureType type); 89 const std::string ConvertWindowUpdateTypeToString(OHOS::Accessibility::WindowUpdateType type); 90 const std::string ConvertAccessibilityEventTypeToString(OHOS::Accessibility::EventType type); 91 void ConvertEventTypeToString(const OHOS::Accessibility::AccessibilityEventInfo &eventInfo, 92 std::string &eventTypeString); 93 bool ConvertGesturePathJSToNAPI(napi_env env, napi_value object, 94 std::shared_ptr<OHOS::Accessibility::AccessibilityGestureInjectPath>& gesturePath); 95 96 struct AccessibilityCallbackInfo { 97 napi_env env_; 98 napi_ref ref_; 99 }; 100 101 struct StateCallbackInfo: public AccessibilityCallbackInfo { 102 bool state_; 103 std::string stringValue_; 104 uint32_t uint32Value_; 105 int32_t int32Value_; 106 float floatValue_; 107 }; 108 109 struct CaptionCallbackInfo: public AccessibilityCallbackInfo { 110 OHOS::AccessibilityConfig::CaptionProperty caption_; 111 }; 112 } // namespace AccessibilityNapi 113 } // OHOS 114 #endif // NAPI_ACCESSIBILITY_UTILS_H