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