1 /*
2 * Copyright (c) 2023 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 "init.h"
17
18 #include "allow_type.h"
19 #include "common.h"
20 #include "standby_napi_module.h"
21
22 namespace OHOS {
23 namespace DevStandbyMgr {
24 EXTERN_C_START
25
DeviceStandbyFuncInit(napi_env env,napi_value exports)26 napi_value DeviceStandbyFuncInit(napi_env env, napi_value exports)
27 {
28 napi_property_descriptor desc[] = {
29 DECLARE_NAPI_FUNCTION("isDeviceInStandby", IsDeviceInStandby),
30 DECLARE_NAPI_FUNCTION("getExemptedApps", GetExemptionListApps),
31 DECLARE_NAPI_FUNCTION("requestExemptionResource", ApplyAllowResource),
32 DECLARE_NAPI_FUNCTION("releaseExemptionResource", UnapplyAllowResource),
33 };
34 NAPI_CALL(env, napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc));
35
36 return exports;
37 }
38
SetNamedPropertyByInteger(napi_env env,napi_value dstObj,int32_t objName,const char * propName)39 void SetNamedPropertyByInteger(napi_env env, napi_value dstObj, int32_t objName, const char *propName)
40 {
41 napi_value prop = nullptr;
42 if (napi_create_int32(env, objName, &prop) == napi_ok) {
43 napi_set_named_property(env, dstObj, propName, prop);
44 }
45 }
46
DeviceStandbyTypeInit(napi_env env,napi_value exports)47 napi_value DeviceStandbyTypeInit(napi_env env, napi_value exports)
48 {
49 napi_value obj = nullptr;
50 napi_create_object(env, &obj);
51
52 SetNamedPropertyByInteger(env, obj, static_cast<uint32_t>(AllowType::NETWORK), "NETWORK");
53 SetNamedPropertyByInteger(env, obj, static_cast<uint32_t>(AllowType::RUNNING_LOCK), "RUNNING_LOCK");
54 SetNamedPropertyByInteger(env, obj, static_cast<uint32_t>(AllowType::TIMER), "TIMER");
55 SetNamedPropertyByInteger(env, obj, static_cast<uint32_t>(AllowType::WORK_SCHEDULER), "WORK_SCHEDULER");
56 SetNamedPropertyByInteger(env, obj, static_cast<uint32_t>(AllowType::AUTO_SYNC), "AUTO_SYNC");
57 SetNamedPropertyByInteger(env, obj, static_cast<uint32_t>(AllowType::PUSH), "PUSH");
58 SetNamedPropertyByInteger(env, obj, static_cast<uint32_t>(AllowType::FREEZE), "FREEZE");
59
60 napi_property_descriptor exportFuncs[] = {
61 DECLARE_NAPI_PROPERTY("ResourceType", obj),
62 };
63
64 napi_define_properties(env, exports, sizeof(exportFuncs) / sizeof(*exportFuncs), exportFuncs);
65 return exports;
66 }
67
68 /*
69 * Module export function
70 */
DeviceStandbyInit(napi_env env,napi_value exports)71 static napi_value DeviceStandbyInit(napi_env env, napi_value exports)
72 {
73 /*
74 * Properties define
75 */
76 DeviceStandbyFuncInit(env, exports);
77 DeviceStandbyTypeInit(env, exports);
78 return exports;
79 }
80
81 /*
82 * Module register function
83 */
RegisterModule(void)84 __attribute__((constructor)) void RegisterModule(void)
85 {
86 napi_module_register(&g_module);
87 }
88 EXTERN_C_END
89 } // namespace DevStandbyMgr
90 } // namespace OHOS
91