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