• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #include <cstdio>
17 #include <cstring>
18 #include <pthread.h>
19 #include <unistd.h>
20 
21 #include "hilog_wrapper.h"
22 #include "napi_accessibility_config.h"
23 #include "napi/native_api.h"
24 #include "napi/native_node_api.h"
25 #include "accessibility_config.h"
26 
27 EXTERN_C_START
28 /*
29  * function for module exports
30  */
31 static napi_property_descriptor configDesc[] = {
32     DECLARE_NAPI_FUNCTION("set", NAccessibilityConfig::SetConfig),
33     DECLARE_NAPI_FUNCTION("get", NAccessibilityConfig::GetConfig),
34     DECLARE_NAPI_FUNCTION("on", NAccessibilityConfig::SubscribeConfigObserver),
35     DECLARE_NAPI_FUNCTION("off", NAccessibilityConfig::UnSubscribeConfigObserver),
36 };
37 
InitHighContrastText(napi_env env)38 static napi_value InitHighContrastText(napi_env env)
39 {
40     napi_value highContrastTextValue;
41     napi_create_object(env, &highContrastTextValue);
42     NAPI_CALL(env, napi_define_properties(env, highContrastTextValue,
43                                           sizeof(configDesc) / sizeof(configDesc[0]),
44                                           configDesc));
45     NAccessibilityConfigClass* nativeObj =
46         new(std::nothrow) NAccessibilityConfigClass(OHOS::AccessibilityConfig::CONFIG_HIGH_CONTRAST_TEXT);
47     if (!nativeObj) {
48         HILOG_ERROR("Failed to create nativeObj.");
49         return nullptr;
50     }
51     nativeObj->SetEnv(env);
52     NAPI_CALL(env, napi_wrap(env, highContrastTextValue, reinterpret_cast<void*>(nativeObj),
53                              NAccessibilityConfigClass::Destructor, nullptr, nativeObj->GetWrapper()));
54     return highContrastTextValue;
55 }
56 
InitInvertColor(napi_env env)57 static napi_value InitInvertColor(napi_env env)
58 {
59     napi_value invertColorValue;
60     napi_create_object(env, &invertColorValue);
61     NAPI_CALL(env, napi_define_properties(env, invertColorValue,
62                                           sizeof(configDesc) / sizeof(configDesc[0]),
63                                           configDesc));
64     NAccessibilityConfigClass* nativeObj =
65         new(std::nothrow) NAccessibilityConfigClass(OHOS::AccessibilityConfig::CONFIG_INVERT_COLOR);
66     if (!nativeObj) {
67         HILOG_ERROR("Failed to create nativeObj.");
68         return nullptr;
69     }
70     nativeObj->SetEnv(env);
71     NAPI_CALL(env, napi_wrap(env, invertColorValue, reinterpret_cast<void*>(nativeObj),
72                              NAccessibilityConfigClass::Destructor, nullptr, nativeObj->GetWrapper()));
73     return invertColorValue;
74 }
75 
InitDaltonizationState(napi_env env)76 static napi_value InitDaltonizationState(napi_env env)
77 {
78     napi_value daltonizationStateValue;
79     napi_create_object(env, &daltonizationStateValue);
80     NAPI_CALL(env, napi_define_properties(env, daltonizationStateValue,
81                                           sizeof(configDesc) / sizeof(configDesc[0]),
82                                           configDesc));
83     NAccessibilityConfigClass* nativeObj =
84         new(std::nothrow) NAccessibilityConfigClass(OHOS::AccessibilityConfig::CONFIG_DALTONIZATION_STATE);
85     if (!nativeObj) {
86         HILOG_ERROR("Failed to create nativeObj.");
87         return nullptr;
88     }
89     nativeObj->SetEnv(env);
90     NAPI_CALL(env, napi_wrap(env, daltonizationStateValue, reinterpret_cast<void*>(nativeObj),
91                              NAccessibilityConfigClass::Destructor, nullptr, nativeObj->GetWrapper()));
92     return daltonizationStateValue;
93 }
94 
InitDaltonizationColorFilter(napi_env env)95 static napi_value InitDaltonizationColorFilter(napi_env env)
96 {
97     napi_value daltonizationColorFilterValue;
98     napi_create_object(env, &daltonizationColorFilterValue);
99     NAPI_CALL(env, napi_define_properties(env, daltonizationColorFilterValue,
100                                           sizeof(configDesc) /
101                                           sizeof(configDesc[0]),
102                                           configDesc));
103     NAccessibilityConfigClass* nativeObj =
104         new(std::nothrow) NAccessibilityConfigClass(OHOS::AccessibilityConfig::CONFIG_DALTONIZATION_COLOR_FILTER);
105     if (!nativeObj) {
106         HILOG_ERROR("Failed to create nativeObj.");
107         return nullptr;
108     }
109     nativeObj->SetEnv(env);
110     NAPI_CALL(env, napi_wrap(env, daltonizationColorFilterValue, reinterpret_cast<void*>(nativeObj),
111                              NAccessibilityConfigClass::Destructor, nullptr, nativeObj->GetWrapper()));
112     return daltonizationColorFilterValue;
113 }
114 
InitContentTimeout(napi_env env)115 static napi_value InitContentTimeout(napi_env env)
116 {
117     napi_value contentTimeoutValue;
118     napi_create_object(env, &contentTimeoutValue);
119     NAPI_CALL(env, napi_define_properties(env, contentTimeoutValue,
120                                           sizeof(configDesc) / sizeof(configDesc[0]),
121                                           configDesc));
122     NAccessibilityConfigClass* nativeObj =
123         new(std::nothrow) NAccessibilityConfigClass(OHOS::AccessibilityConfig::CONFIG_CONTENT_TIMEOUT);
124     if (!nativeObj) {
125         HILOG_ERROR("Failed to create nativeObj.");
126         return nullptr;
127     }
128     nativeObj->SetEnv(env);
129     NAPI_CALL(env, napi_wrap(env, contentTimeoutValue, reinterpret_cast<void*>(nativeObj),
130                              NAccessibilityConfigClass::Destructor, nullptr, nativeObj->GetWrapper()));
131     return contentTimeoutValue;
132 }
133 
InitAnimationOff(napi_env env)134 static napi_value InitAnimationOff(napi_env env)
135 {
136     napi_value animationOffValue;
137     napi_create_object(env, &animationOffValue);
138     NAPI_CALL(env, napi_define_properties(env, animationOffValue,
139                                           sizeof(configDesc) / sizeof(configDesc[0]),
140                                           configDesc));
141     NAccessibilityConfigClass* nativeObj =
142         new(std::nothrow) NAccessibilityConfigClass(OHOS::AccessibilityConfig::CONFIG_ANIMATION_OFF);
143     if (!nativeObj) {
144         HILOG_ERROR("Failed to create nativeObj.");
145         return nullptr;
146     }
147     nativeObj->SetEnv(env);
148     NAPI_CALL(env, napi_wrap(env, animationOffValue, reinterpret_cast<void*>(nativeObj),
149                              NAccessibilityConfigClass::Destructor, nullptr, nativeObj->GetWrapper()));
150     return animationOffValue;
151 }
152 
InitBrightnessDiscount(napi_env env)153 static napi_value InitBrightnessDiscount(napi_env env)
154 {
155     napi_value brightnessDiscountValue;
156     napi_create_object(env, &brightnessDiscountValue);
157     NAPI_CALL(env, napi_define_properties(env, brightnessDiscountValue,
158                                           sizeof(configDesc) / sizeof(configDesc[0]),
159                                           configDesc));
160     NAccessibilityConfigClass* nativeObj =
161         new(std::nothrow) NAccessibilityConfigClass(OHOS::AccessibilityConfig::CONFIG_BRIGHTNESS_DISCOUNT);
162     if (!nativeObj) {
163         HILOG_ERROR("Failed to create nativeObj.");
164         return nullptr;
165     }
166     nativeObj->SetEnv(env);
167     NAPI_CALL(env, napi_wrap(env, brightnessDiscountValue, reinterpret_cast<void*>(nativeObj),
168                              NAccessibilityConfigClass::Destructor, nullptr, nativeObj->GetWrapper()));
169     return brightnessDiscountValue;
170 }
171 
InitScreenMagnifier(napi_env env)172 static napi_value InitScreenMagnifier(napi_env env)
173 {
174     napi_value screenMagnifierValue;
175     napi_create_object(env, &screenMagnifierValue);
176     NAPI_CALL(env, napi_define_properties(env, screenMagnifierValue,
177                                           sizeof(configDesc) / sizeof(configDesc[0]),
178                                           configDesc));
179     NAccessibilityConfigClass* nativeObj =
180         new(std::nothrow) NAccessibilityConfigClass(OHOS::AccessibilityConfig::CONFIG_SCREEN_MAGNIFICATION);
181     if (!nativeObj) {
182         HILOG_ERROR("Failed to create nativeObj.");
183         return nullptr;
184     }
185     nativeObj->SetEnv(env);
186     NAPI_CALL(env, napi_wrap(env, screenMagnifierValue, reinterpret_cast<void*>(nativeObj),
187                              NAccessibilityConfigClass::Destructor, nullptr, nativeObj->GetWrapper()));
188     return screenMagnifierValue;
189 }
190 
InitAudioMono(napi_env env)191 static napi_value InitAudioMono(napi_env env)
192 {
193     napi_value audioMonoValue;
194     napi_create_object(env, &audioMonoValue);
195     NAPI_CALL(env, napi_define_properties(env, audioMonoValue,
196                                           sizeof(configDesc) / sizeof(configDesc[0]),
197                                           configDesc));
198     NAccessibilityConfigClass* nativeObj =
199         new(std::nothrow) NAccessibilityConfigClass(OHOS::AccessibilityConfig::CONFIG_AUDIO_MONO);
200     if (!nativeObj) {
201         HILOG_ERROR("Failed to create nativeObj.");
202         return nullptr;
203     }
204     nativeObj->SetEnv(env);
205     NAPI_CALL(env, napi_wrap(env, audioMonoValue, reinterpret_cast<void*>(nativeObj),
206                              NAccessibilityConfigClass::Destructor, nullptr, nativeObj->GetWrapper()));
207     return audioMonoValue;
208 }
209 
InitAudioBalance(napi_env env)210 static napi_value InitAudioBalance(napi_env env)
211 {
212     napi_value audioBalanceValue;
213     napi_create_object(env, &audioBalanceValue);
214     NAPI_CALL(env, napi_define_properties(env, audioBalanceValue,
215                                           sizeof(configDesc) / sizeof(configDesc[0]),
216                                           configDesc));
217     NAccessibilityConfigClass* nativeObj =
218         new(std::nothrow) NAccessibilityConfigClass(OHOS::AccessibilityConfig::CONFIG_AUDIO_BALANCE);
219     if (!nativeObj) {
220         HILOG_ERROR("Failed to create nativeObj.");
221         return nullptr;
222     }
223     nativeObj->SetEnv(env);
224     NAPI_CALL(env, napi_wrap(env, audioBalanceValue, reinterpret_cast<void*>(nativeObj),
225                              NAccessibilityConfigClass::Destructor, nullptr, nativeObj->GetWrapper()));
226     return audioBalanceValue;
227 }
228 
InitMouseKey(napi_env env)229 static napi_value InitMouseKey(napi_env env)
230 {
231     napi_value mouseKeyValue;
232     napi_create_object(env, &mouseKeyValue);
233     NAPI_CALL(env, napi_define_properties(env, mouseKeyValue,
234                                           sizeof(configDesc) / sizeof(configDesc[0]),
235                                           configDesc));
236     NAccessibilityConfigClass* nativeObj =
237         new(std::nothrow) NAccessibilityConfigClass(OHOS::AccessibilityConfig::CONFIG_MOUSE_KEY);
238     if (!nativeObj) {
239         HILOG_ERROR("Failed to create nativeObj.");
240         return nullptr;
241     }
242     nativeObj->SetEnv(env);
243     NAPI_CALL(env, napi_wrap(env, mouseKeyValue, reinterpret_cast<void*>(nativeObj),
244                              NAccessibilityConfigClass::Destructor, nullptr, nativeObj->GetWrapper()));
245     return mouseKeyValue;
246 }
247 
InitMouseAutoClick(napi_env env)248 static napi_value InitMouseAutoClick(napi_env env)
249 {
250     napi_value mouseAutoClickValue;
251     napi_create_object(env, &mouseAutoClickValue);
252     NAPI_CALL(env, napi_define_properties(env, mouseAutoClickValue,
253                                           sizeof(configDesc) / sizeof(configDesc[0]),
254                                           configDesc));
255     NAccessibilityConfigClass* nativeObj =
256         new(std::nothrow) NAccessibilityConfigClass(OHOS::AccessibilityConfig::CONFIG_MOUSE_AUTOCLICK);
257     if (!nativeObj) {
258         HILOG_ERROR("Failed to create nativeObj.");
259         return nullptr;
260     }
261     nativeObj->SetEnv(env);
262     NAPI_CALL(env, napi_wrap(env, mouseAutoClickValue, reinterpret_cast<void*>(nativeObj),
263                              NAccessibilityConfigClass::Destructor, nullptr, nativeObj->GetWrapper()));
264     return mouseAutoClickValue;
265 }
266 
InitShortKey(napi_env env)267 static napi_value InitShortKey(napi_env env)
268 {
269     napi_value shortKeyValue;
270     napi_create_object(env, &shortKeyValue);
271     NAPI_CALL(env, napi_define_properties(env, shortKeyValue,
272                                           sizeof(configDesc) / sizeof(configDesc[0]),
273                                           configDesc));
274     NAccessibilityConfigClass* nativeObj =
275         new(std::nothrow) NAccessibilityConfigClass(OHOS::AccessibilityConfig::CONFIG_SHORT_KEY);
276     if (!nativeObj) {
277         HILOG_ERROR("Failed to create nativeObj.");
278         return nullptr;
279     }
280     nativeObj->SetEnv(env);
281     NAPI_CALL(env, napi_wrap(env, shortKeyValue, reinterpret_cast<void*>(nativeObj),
282                              NAccessibilityConfigClass::Destructor, nullptr, nativeObj->GetWrapper()));
283     return shortKeyValue;
284 }
285 
InitShortKeyTarget(napi_env env)286 static napi_value InitShortKeyTarget(napi_env env)
287 {
288     napi_value shortKeyTargetValue;
289     napi_create_object(env, &shortKeyTargetValue);
290     NAPI_CALL(env, napi_define_properties(env, shortKeyTargetValue,
291                                           sizeof(configDesc) / sizeof(configDesc[0]),
292                                           configDesc));
293     NAccessibilityConfigClass* nativeObj =
294         new(std::nothrow) NAccessibilityConfigClass(OHOS::AccessibilityConfig::CONFIG_SHORT_KEY_TARGET);
295     if (!nativeObj) {
296         HILOG_ERROR("Failed to create nativeObj.");
297         return nullptr;
298     }
299     nativeObj->SetEnv(env);
300     NAPI_CALL(env, napi_wrap(env, shortKeyTargetValue, reinterpret_cast<void*>(nativeObj),
301                              NAccessibilityConfigClass::Destructor, nullptr, nativeObj->GetWrapper()));
302     return shortKeyTargetValue;
303 }
304 
InitShortKeyMultiTarget(napi_env env)305 static napi_value InitShortKeyMultiTarget(napi_env env)
306 {
307     napi_value shortKeyMultiTargetValue;
308     napi_create_object(env, &shortKeyMultiTargetValue);
309     NAPI_CALL(env, napi_define_properties(env, shortKeyMultiTargetValue,
310                                           sizeof(configDesc) / sizeof(configDesc[0]),
311                                           configDesc));
312     NAccessibilityConfigClass* nativeObj =
313         new(std::nothrow) NAccessibilityConfigClass(OHOS::AccessibilityConfig::CONFIG_SHORT_KEY_MULTI_TARGET);
314     if (!nativeObj) {
315         HILOG_ERROR("Failed to create nativeObj.");
316         return nullptr;
317     }
318     nativeObj->SetEnv(env);
319     NAPI_CALL(env, napi_wrap(env, shortKeyMultiTargetValue, reinterpret_cast<void*>(nativeObj),
320                              NAccessibilityConfigClass::Destructor, nullptr, nativeObj->GetWrapper()));
321     return shortKeyMultiTargetValue;
322 }
323 
InitCaptionsState(napi_env env)324 static napi_value InitCaptionsState(napi_env env)
325 {
326     napi_value captionsValue;
327     napi_create_object(env, &captionsValue);
328     NAPI_CALL(env, napi_define_properties(env, captionsValue,
329                                           sizeof(configDesc) / sizeof(configDesc[0]),
330                                           configDesc));
331     NAccessibilityConfigClass* nativeObj =
332         new(std::nothrow) NAccessibilityConfigClass(OHOS::AccessibilityConfig::CONFIG_CAPTION_STATE);
333     if (!nativeObj) {
334         HILOG_ERROR("Failed to create nativeObj.");
335         return nullptr;
336     }
337     nativeObj->SetEnv(env);
338     NAPI_CALL(env, napi_wrap(env, captionsValue, reinterpret_cast<void*>(nativeObj),
339                              NAccessibilityConfigClass::Destructor, nullptr, nativeObj->GetWrapper()));
340     return captionsValue;
341 }
342 
InitCaptionsStyle(napi_env env)343 static napi_value InitCaptionsStyle(napi_env env)
344 {
345     napi_value captionsStyleValue;
346     napi_create_object(env, &captionsStyleValue);
347     NAPI_CALL(env, napi_define_properties(env, captionsStyleValue,
348                                           sizeof(configDesc) / sizeof(configDesc[0]),
349                                           configDesc));
350     NAccessibilityConfigClass* nativeObj =
351         new(std::nothrow) NAccessibilityConfigClass(OHOS::AccessibilityConfig::CONFIG_CAPTION_STYLE);
352     if (!nativeObj) {
353         HILOG_ERROR("Failed to create nativeObj.");
354         return nullptr;
355     }
356     nativeObj->SetEnv(env);
357     NAPI_CALL(env, napi_wrap(env, captionsStyleValue, reinterpret_cast<void*>(nativeObj),
358                              NAccessibilityConfigClass::Destructor, nullptr, nativeObj->GetWrapper()));
359     return captionsStyleValue;
360 }
361 
InitClickResponseTime(napi_env env)362 static napi_value InitClickResponseTime(napi_env env)
363 {
364     napi_value clickResponseTimeValue;
365     napi_create_object(env, &clickResponseTimeValue);
366     NAPI_CALL(env, napi_define_properties(env, clickResponseTimeValue,
367                                           sizeof(configDesc) / sizeof(configDesc[0]),
368                                           configDesc));
369     NAccessibilityConfigClass* nativeObj =
370         new(std::nothrow) NAccessibilityConfigClass(OHOS::AccessibilityConfig::CONIFG_CLICK_RESPONSE_TIME);
371     if (!nativeObj) {
372         HILOG_ERROR("Failed to create nativeObj.");
373         return nullptr;
374     }
375     nativeObj->SetEnv(env);
376     NAPI_CALL(env, napi_wrap(env, clickResponseTimeValue, reinterpret_cast<void*>(nativeObj),
377                              NAccessibilityConfigClass::Destructor, nullptr, nativeObj->GetWrapper()));
378     return clickResponseTimeValue;
379 }
380 
InitIgnoreRepeatClickState(napi_env env)381 static napi_value InitIgnoreRepeatClickState(napi_env env)
382 {
383     napi_value ignoreRepeatClickStateValue;
384     napi_create_object(env, &ignoreRepeatClickStateValue);
385     NAPI_CALL(env, napi_define_properties(env, ignoreRepeatClickStateValue,
386                                           sizeof(configDesc) / sizeof(configDesc[0]),
387                                           configDesc));
388     NAccessibilityConfigClass* nativeObj =
389         new(std::nothrow) NAccessibilityConfigClass(OHOS::AccessibilityConfig::CONFIG_IGNORE_REPEAT_CLICK_STATE);
390     if (!nativeObj) {
391         HILOG_ERROR("Failed to create nativeObj.");
392         return nullptr;
393     }
394     nativeObj->SetEnv(env);
395     NAPI_CALL(env, napi_wrap(env, ignoreRepeatClickStateValue, reinterpret_cast<void*>(nativeObj),
396                              NAccessibilityConfigClass::Destructor, nullptr, nativeObj->GetWrapper()));
397     return ignoreRepeatClickStateValue;
398 }
399 
InitIgnoreRepeatClickTime(napi_env env)400 static napi_value InitIgnoreRepeatClickTime(napi_env env)
401 {
402     napi_value ignoreRepeatClickTimeValue;
403     napi_create_object(env, &ignoreRepeatClickTimeValue);
404     NAPI_CALL(env, napi_define_properties(env, ignoreRepeatClickTimeValue,
405                                           sizeof(configDesc) / sizeof(configDesc[0]),
406                                           configDesc));
407     NAccessibilityConfigClass* nativeObj =
408         new(std::nothrow) NAccessibilityConfigClass(OHOS::AccessibilityConfig::CONFIG_IGNORE_REPEAT_CLICK_TIME);
409     if (!nativeObj) {
410         HILOG_ERROR("Failed to create nativeObj.");
411         return nullptr;
412     }
413     nativeObj->SetEnv(env);
414     NAPI_CALL(env, napi_wrap(env, ignoreRepeatClickTimeValue, reinterpret_cast<void*>(nativeObj),
415                              NAccessibilityConfigClass::Destructor, nullptr, nativeObj->GetWrapper()));
416     return ignoreRepeatClickTimeValue;
417 }
418 
InitConfigModule(napi_env env,napi_value exports)419 static napi_value InitConfigModule(napi_env env, napi_value exports)
420 {
421     napi_property_descriptor desc[] = {
422         DECLARE_NAPI_FUNCTION("on", NAccessibilityConfig::SubscribeState),
423         DECLARE_NAPI_FUNCTION("off", NAccessibilityConfig::UnsubscribeState),
424         DECLARE_NAPI_FUNCTION("enableAbility", NAccessibilityConfig::EnableAbility),
425         DECLARE_NAPI_FUNCTION("disableAbility", NAccessibilityConfig::DisableAbility),
426         DECLARE_NAPI_STATIC_PROPERTY("highContrastText", InitHighContrastText(env)),
427         DECLARE_NAPI_STATIC_PROPERTY("invertColor", InitInvertColor(env)),
428         DECLARE_NAPI_STATIC_PROPERTY("daltonizationState", InitDaltonizationState(env)),
429         DECLARE_NAPI_STATIC_PROPERTY("daltonizationColorFilter", InitDaltonizationColorFilter(env)),
430         DECLARE_NAPI_STATIC_PROPERTY("contentTimeout", InitContentTimeout(env)),
431         DECLARE_NAPI_STATIC_PROPERTY("animationOff", InitAnimationOff(env)),
432         DECLARE_NAPI_STATIC_PROPERTY("brightnessDiscount", InitBrightnessDiscount(env)),
433         DECLARE_NAPI_STATIC_PROPERTY("screenMagnifier", InitScreenMagnifier(env)),
434         DECLARE_NAPI_STATIC_PROPERTY("audioMono", InitAudioMono(env)),
435         DECLARE_NAPI_STATIC_PROPERTY("audioBalance", InitAudioBalance(env)),
436         DECLARE_NAPI_STATIC_PROPERTY("mouseKey", InitMouseKey(env)),
437         DECLARE_NAPI_STATIC_PROPERTY("mouseAutoClick", InitMouseAutoClick(env)),
438         DECLARE_NAPI_STATIC_PROPERTY("shortkey", InitShortKey(env)),
439         DECLARE_NAPI_STATIC_PROPERTY("shortkeyTarget", InitShortKeyTarget(env)),
440         DECLARE_NAPI_STATIC_PROPERTY("shortkeyMultiTargets", InitShortKeyMultiTarget(env)),
441         DECLARE_NAPI_STATIC_PROPERTY("captions", InitCaptionsState(env)),
442         DECLARE_NAPI_STATIC_PROPERTY("captionsStyle", InitCaptionsStyle(env)),
443         DECLARE_NAPI_STATIC_PROPERTY("clickResponseTime", InitClickResponseTime(env)),
444         DECLARE_NAPI_STATIC_PROPERTY("ignoreRepeatClick", InitIgnoreRepeatClickState(env)),
445         DECLARE_NAPI_STATIC_PROPERTY("repeatClickInterval", InitIgnoreRepeatClickTime(env)),
446     };
447 
448     NAPI_CALL(env, napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc));
449 
450     auto &instance = OHOS::AccessibilityConfig::AccessibilityConfig::GetInstance();
451     (void)instance.InitializeContext();
452     NAccessibilityConfig::configObservers_->SubscribeToFramework();
453     NAccessibilityConfig::enableAbilityListsObservers_->SubscribeToFramework();
454     HILOG_INFO("-----Init config module end------");
455     return exports;
456 }
457 EXTERN_C_END
458 
459 /*
460  * Module define
461  */
462 static napi_module _config_module = {
463     .nm_version = 1,
464     .nm_flags = 0,
465     .nm_filename = nullptr,
466     .nm_register_func = InitConfigModule,
467     .nm_modname = "accessibility.config",
468     .nm_priv = ((void*)0),
469     .reserved = {0},
470 };
471 /*
472  * Module register function
473  */
RegisterNapiAccessibilityConfigModule(void)474 extern "C" __attribute__((constructor)) void RegisterNapiAccessibilityConfigModule(void)
475 {
476     napi_module_register(&_config_module);
477 }
478