• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022-2024 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 #include "datetime_manager_addon.h"
16 #include "edm_log.h"
17 
18 #include "napi_edm_adapter.h"
19 using namespace OHOS::EDM;
20 
Init(napi_env env,napi_value exports)21 napi_value DatetimeManagerAddon::Init(napi_env env, napi_value exports)
22 {
23     napi_property_descriptor property[] = {
24         DECLARE_NAPI_FUNCTION("setDateTime", SetDateTime),
25         DECLARE_NAPI_FUNCTION("disallowModifyDateTime", DisallowModifyDateTime),
26         DECLARE_NAPI_FUNCTION("isModifyDateTimeDisallowed", IsModifyDateTimeDisallowed),
27     };
28     NAPI_CALL(env, napi_define_properties(env, exports, sizeof(property) / sizeof(property[0]), property));
29     return exports;
30 }
31 
SetDateTime(napi_env env,napi_callback_info info)32 napi_value DatetimeManagerAddon::SetDateTime(napi_env env, napi_callback_info info)
33 {
34     AddonMethodSign addonMethodSign;
35     addonMethodSign.name = "SetDateTime";
36     addonMethodSign.argsType = {EdmAddonCommonType::ELEMENT, EdmAddonCommonType::INT64};
37     addonMethodSign.methodAttribute = MethodAttribute::HANDLE;
38     addonMethodSign.apiVersionTag = EdmConstants::PERMISSION_TAG_VERSION_11;
39     return AddonMethodAdapter(env, info, addonMethodSign, NativeSetDateTime, NativeVoidCallbackComplete);
40 }
41 
NativeSetDateTime(napi_env env,void * data)42 void DatetimeManagerAddon::NativeSetDateTime(napi_env env, void *data)
43 {
44     EDMLOGI("NAPI_NativeSetDateTime called");
45     if (data == nullptr) {
46         EDMLOGE("data is nullptr");
47         return;
48     }
49     AdapterAddonData *asyncCallbackInfo = static_cast<AdapterAddonData *>(data);
50     auto dateTimeManagerProxy = DatetimeManagerProxy::GetDatetimeManagerProxy();
51     if (dateTimeManagerProxy == nullptr) {
52         EDMLOGE("can not get DatetimeManagerProxy");
53         return;
54     }
55     asyncCallbackInfo->ret = dateTimeManagerProxy->SetDateTime(asyncCallbackInfo->data);
56 }
57 
DisallowModifyDateTime(napi_env env,napi_callback_info info)58 napi_value DatetimeManagerAddon::DisallowModifyDateTime(napi_env env, napi_callback_info info)
59 {
60     AddonMethodSign addonMethodSign;
61     addonMethodSign.name = "DisallowModifyDateTime";
62     addonMethodSign.argsType = {EdmAddonCommonType::ELEMENT, EdmAddonCommonType::BOOLEAN};
63     addonMethodSign.methodAttribute = MethodAttribute::HANDLE;
64     addonMethodSign.apiVersionTag = EdmConstants::PERMISSION_TAG_VERSION_11;
65     return AddonMethodAdapter(env, info, addonMethodSign, NativeDisallowModifyDateTime, NativeVoidCallbackComplete);
66 }
67 
NativeDisallowModifyDateTime(napi_env env,void * data)68 void DatetimeManagerAddon::NativeDisallowModifyDateTime(napi_env env, void *data)
69 {
70     EDMLOGI("NAPI_NativeDisallowModifyDateTime called");
71     if (data == nullptr) {
72         EDMLOGE("data is nullptr");
73         return;
74     }
75     AdapterAddonData *asyncCallbackInfo =
76         static_cast<AdapterAddonData *>(data);
77     auto dateTimeManagerProxy = DatetimeManagerProxy::GetDatetimeManagerProxy();
78     if (dateTimeManagerProxy == nullptr) {
79         EDMLOGE("can not get DatetimeManagerProxy");
80         return;
81     }
82     asyncCallbackInfo->ret = dateTimeManagerProxy->DisallowModifyDateTime(asyncCallbackInfo->data);
83 }
84 
IsModifyDateTimeDisallowed(napi_env env,napi_callback_info info)85 napi_value DatetimeManagerAddon::IsModifyDateTimeDisallowed(napi_env env, napi_callback_info info)
86 {
87     AddonMethodSign addonMethodSign;
88     addonMethodSign.name = "IsModifyDateTimeDisallowed";
89     addonMethodSign.argsType = {EdmAddonCommonType::ELEMENT_NULL};
90     addonMethodSign.methodAttribute = MethodAttribute::GET;
91     addonMethodSign.apiVersionTag = EdmConstants::PERMISSION_TAG_VERSION_11;
92     return AddonMethodAdapter(env, info, addonMethodSign, NativeIsModifyDateTimeDisallowed, NativeBoolCallbackComplete);
93 }
94 
NativeIsModifyDateTimeDisallowed(napi_env env,void * data)95 void DatetimeManagerAddon::NativeIsModifyDateTimeDisallowed(napi_env env, void *data)
96 {
97     EDMLOGI("NativeIsModifyDateTimeDisallowed called");
98     if (data == nullptr) {
99         EDMLOGE("data is nullptr");
100         return;
101     }
102     AdapterAddonData *asyncCallbackInfo =
103         static_cast<AdapterAddonData *>(data);
104     auto dateTimeManagerProxy = DatetimeManagerProxy::GetDatetimeManagerProxy();
105     if (dateTimeManagerProxy == nullptr) {
106         EDMLOGE("can not get DatetimeManagerProxy");
107         return;
108     }
109     asyncCallbackInfo->ret = dateTimeManagerProxy->IsModifyDateTimeDisallowed(asyncCallbackInfo->data,
110         asyncCallbackInfo->boolRet);
111 }
112 
113 static napi_module g_dateTimeManagerModule = {
114     .nm_version = 1,
115     .nm_flags = 0,
116     .nm_filename = nullptr,
117     .nm_register_func = DatetimeManagerAddon::Init,
118     .nm_modname = "enterprise.dateTimeManager",
119     .nm_priv = ((void *)0),
120     .reserved = { 0 },
121 };
122 
DateTimeManagerRegister()123 extern "C" __attribute__((constructor)) void DateTimeManagerRegister()
124 {
125     napi_module_register(&g_dateTimeManagerModule);
126 }