1 /*
2 * Copyright (c) 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
16 #include "BasicServicesKit/oh_commonevent.h"
17 #include "BasicServicesKit/oh_commonevent_support.h"
18 #include "common.h"
19 #include "hilog/log.h"
20 #include "napi/native_api.h"
21
CreatePublishInfo(napi_env env,napi_callback_info info)22 static napi_value CreatePublishInfo(napi_env env, napi_callback_info info)
23 {
24 bool ordered = true;
25 publishInfo = OH_CommonEvent_CreatePublishInfo(ordered);
26 ASSERT_OBJNE(publishInfo, nullptr);
27 NAPI_END;
28 }
29
DestroyPublishInfo(napi_env env,napi_callback_info info)30 static napi_value DestroyPublishInfo(napi_env env, napi_callback_info info)
31 {
32 if (publishInfo != nullptr) {
33 OH_CommonEvent_DestroyPublishInfo(publishInfo);
34 publishInfo = nullptr;
35 }
36 NAPI_END;
37 }
38
OnReceive(const CommonEvent_RcvData * data)39 void OnReceive(const CommonEvent_RcvData *data)
40 {
41 OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "CES_TEST PublishInfoCallback001",
42 "PublishInfoCallback001 Enter");
43 // 获取回调公共事件名称
44 const char *event = OH_CommonEvent_GetEventFromRcvData(data);
45
46 // 获取回调公共事件结果代码
47 int code = OH_CommonEvent_GetCodeFromRcvData(data);
48
49 // 获取回调公共事件自定义结果数据
50 const char *retData = OH_CommonEvent_GetDataStrFromRcvData(data);
51
52 // 获取回调公共事件包名称
53 const char *bundle = OH_CommonEvent_GetBundleNameFromRcvData(data);
54
55 // 获取回调公共事件附件信息
56 const CommonEvent_Parameters *parameters = OH_CommonEvent_GetParametersFromRcvData(data);
57 OH_LOG_Print(LOG_APP, LOG_INFO, 1, "CES_TEST",
58 "event: %{public}s, code: %{public}d, data: %{public}s, bundle: %{public}s", event, code, retData,
59 bundle);
60 OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN,
61 "CES_TEST event: %{public}s, code: %{public}d, data: %{public}s, bundle: %{public}s", event, code,
62 retData, bundle);
63 }
64
GetSetPublishInfoBundleName(napi_env env,napi_callback_info info)65 napi_value GetSetPublishInfoBundleName(napi_env env, napi_callback_info info)
66 {
67 OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "CES_TEST GetSetPublishInfoBundleName",
68 "GetSetPublishInfoBundleName Enter");
69 OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "CES_TEST GetSetPublishInfoBundleName",
70 "g_publishInfoBN %{public}s", g_publishInfoBN);
71 ASSERT_OBJNE(g_publishInfoBN, nullptr);
72 ASSERT_EQ(g_publishInfoBN, "com.example.hitsnotificationcommoneventcapi");
73 if (subscriber != nullptr) {
74 OH_CommonEvent_UnSubscribe(subscriber);
75 OH_CommonEvent_DestroySubscriber(subscriber);
76 subscriber = nullptr;
77 }
78 if (subscribeInfo != nullptr) {
79 OH_CommonEvent_DestroySubscribeInfo(subscribeInfo);
80 subscribeInfo = nullptr;
81 }
82 NAPI_END;
83 }
84
SetPublishInfoBundleName(napi_env env,napi_callback_info info)85 static napi_value SetPublishInfoBundleName(napi_env env, napi_callback_info info)
86 {
87 OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "CES_TEST SetPublishInfoBundleName",
88 "SetPublishInfoBundleName enter");
89
90 bool ordered = true;
91 auto publishInfo = OH_CommonEvent_CreatePublishInfo(ordered);
92 const char *bundleName = "com.example.hitsnotificationcommoneventcapi";
93 auto ret = OH_CommonEvent_SetPublishInfoBundleName(publishInfo, bundleName);
94 OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "CES_TEST SetPublishInfoBundleName",
95 "OH_CommonEvent_SetPublishInfoBundleName %{public}d", ret);
96 ASSERT_EQ(ret, COMMONEVENT_ERR_OK);
97 if (publishInfo != nullptr) {
98 OH_CommonEvent_PublishWithInfo(COMMON_EVENT_TEST, publishInfo);
99 OH_CommonEvent_DestroyPublishInfo(publishInfo);
100 }
101 publishInfo = nullptr;
102 NAPI_END;
103 }
104
SetPublishInfoPermissions(napi_env env,napi_callback_info info)105 static napi_value SetPublishInfoPermissions(napi_env env, napi_callback_info info)
106 {
107 bool ordered = true;
108 auto publishInfo = OH_CommonEvent_CreatePublishInfo(ordered);
109 if (publishInfo != nullptr) {
110 const char *permissions[] = {"ohos.permission.RECEIVER_STARTUP_COMPLETED"};
111 int32_t num = PARAM_1;
112 ASSERT_EQ(OH_CommonEvent_SetPublishInfoPermissions(publishInfo, permissions, num), COMMONEVENT_ERR_OK);
113 OH_CommonEvent_PublishWithInfo(COMMON_EVENT_USER_UNLOCKED, publishInfo);
114 OH_CommonEvent_DestroyPublishInfo(publishInfo);
115 publishInfo = nullptr;
116 }
117 NAPI_END;
118 }
119
PublishInfoCallback002(const CommonEvent_RcvData * data)120 void PublishInfoCallback002(const CommonEvent_RcvData *data)
121 {
122 OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "CES_TEST PublishInfoCallback002",
123 "PublishInfoCallback002 Enter");
124 if (data != nullptr) {
125 g_publishInfoCode = OH_CommonEvent_GetCodeFromRcvData(data);
126 } else {
127 g_publishInfoCode = PARAM_0;
128 }
129 OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "CES_TEST PublishInfoCallback002",
130 "OH_CommonEvent_GetCodeFromRcvData %{public}d", g_publishInfoCode);
131 }
132
GetSetPublishInfoCode(napi_env env,napi_callback_info info)133 static napi_value GetSetPublishInfoCode(napi_env env, napi_callback_info info)
134 {
135 if (subscriber != nullptr) {
136 OH_CommonEvent_UnSubscribe(subscriber);
137 OH_CommonEvent_DestroySubscriber(subscriber);
138 subscriber = nullptr;
139 }
140 if (subscribeInfo != nullptr) {
141 OH_CommonEvent_DestroySubscribeInfo(subscribeInfo);
142 subscribeInfo = nullptr;
143 }
144 ASSERT_EQ(g_publishInfoCode, PARAM_1);
145 NAPI_END;
146 }
147
SetPublishInfoCode(napi_env env,napi_callback_info info)148 static napi_value SetPublishInfoCode(napi_env env, napi_callback_info info)
149 {
150 const char *events[] = {COMMON_EVENT_TEST};
151 int32_t eventsNum = sizeof(events) / sizeof(char *);
152 subscribeInfo = OH_CommonEvent_CreateSubscribeInfo(events, eventsNum);
153 ASSERT_OBJNE(subscribeInfo, nullptr);
154 subscriber = OH_CommonEvent_CreateSubscriber(subscribeInfo, PublishInfoCallback002);
155 ASSERT_OBJNE(subscriber, nullptr);
156 ASSERT_EQ(OH_CommonEvent_Subscribe(subscriber), COMMONEVENT_ERR_OK);
157 bool ordered = true;
158 auto publishInfo = OH_CommonEvent_CreatePublishInfo(ordered);
159 int32_t code = PARAM_1;
160 if (publishInfo != nullptr) {
161 ASSERT_EQ(OH_CommonEvent_SetPublishInfoCode(publishInfo, code), COMMONEVENT_ERR_OK);
162 OH_CommonEvent_PublishWithInfo(COMMON_EVENT_TEST, publishInfo);
163 OH_CommonEvent_DestroyPublishInfo(publishInfo);
164 publishInfo = nullptr;
165 }
166 NAPI_END;
167 }
168
PublishInfoCallback003(const CommonEvent_RcvData * data)169 void PublishInfoCallback003(const CommonEvent_RcvData *data)
170 {
171 dataStr = (char *)OH_CommonEvent_GetDataStrFromRcvData(data);
172 if (subscriber != nullptr) {
173 OH_CommonEvent_UnSubscribe(subscriber);
174 }
175 if (subscribeInfo != nullptr) {
176 OH_CommonEvent_DestroySubscribeInfo(subscribeInfo);
177 subscribeInfo = nullptr;
178 }
179 if (subscriber != nullptr) {
180 OH_CommonEvent_DestroySubscriber(subscriber);
181 subscriber = nullptr;
182 }
183 }
184
GetSetPublishInfoData(napi_env env,napi_callback_info info)185 static napi_value GetSetPublishInfoData(napi_env env, napi_callback_info info)
186 {
187 ASSERT_OBJNE(dataStr, nullptr);
188 ASSERT_STREQ(dataStr, "data");
189 OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "CES_TEST GetSetPublishInfoData",
190 "GetSetPublishInfoData %{public}s", dataStr);
191 NAPI_END;
192 }
193
SetPublishInfoData(napi_env env,napi_callback_info info)194 static napi_value SetPublishInfoData(napi_env env, napi_callback_info info)
195 {
196 const char *events[] = {COMMON_EVENT_TEST};
197 int32_t eventsNum = sizeof(events) / sizeof(char *);
198 subscribeInfo = OH_CommonEvent_CreateSubscribeInfo(events, eventsNum);
199 ASSERT_OBJNE(subscribeInfo, nullptr);
200 subscriber = OH_CommonEvent_CreateSubscriber(subscribeInfo, PublishInfoCallback003);
201 ASSERT_OBJNE(subscriber, nullptr);
202 ASSERT_EQ(OH_CommonEvent_Subscribe(subscriber), COMMONEVENT_ERR_OK);
203 bool ordered = true;
204 auto publishInfo = OH_CommonEvent_CreatePublishInfo(ordered);
205 const char *data = "data";
206 size_t length = PARAM_4;
207 dataStr = nullptr;
208 ASSERT_EQ(OH_CommonEvent_SetPublishInfoData(publishInfo, data, length), COMMONEVENT_ERR_OK);
209 if (publishInfo != nullptr) {
210 OH_CommonEvent_PublishWithInfo(COMMON_EVENT_TEST, publishInfo);
211 OH_CommonEvent_DestroyPublishInfo(publishInfo);
212 publishInfo = nullptr;
213 }
214 NAPI_END;
215 }
216
PublishInfoCallback005(const CommonEvent_RcvData * data)217 void PublishInfoCallback005(const CommonEvent_RcvData *data)
218 {
219 if (data != nullptr) {
220 auto parameters = OH_CommonEvent_GetParametersFromRcvData(data);
221 if (parameters != nullptr) {
222 g_parametersInt = OH_CommonEvent_GetIntFromParameters(parameters, KEY_INT, PARAM_0);
223 }
224 } else {
225 g_parametersInt = PARAM_0;
226 }
227 }
228
GetSetPublishInfoParameters(napi_env env,napi_callback_info info)229 static napi_value GetSetPublishInfoParameters(napi_env env, napi_callback_info info)
230 {
231 if (subscriber != nullptr) {
232 OH_CommonEvent_UnSubscribe(subscriber);
233 OH_CommonEvent_DestroySubscriber(subscriber);
234 subscriber = nullptr;
235 }
236 if (subscribeInfo != nullptr) {
237 OH_CommonEvent_DestroySubscribeInfo(subscribeInfo);
238 subscribeInfo = nullptr;
239 }
240 ASSERT_EQ(g_parametersInt, PARAM_1);
241 NAPI_END;
242 }
243
SetPublishInfoParameters(napi_env env,napi_callback_info info)244 static napi_value SetPublishInfoParameters(napi_env env, napi_callback_info info)
245 {
246 const char *events[] = {COMMON_EVENT_TEST};
247 int32_t eventsNum = sizeof(events) / sizeof(char *);
248 subscribeInfo = OH_CommonEvent_CreateSubscribeInfo(events, eventsNum);
249 ASSERT_OBJNE(subscribeInfo, nullptr);
250 subscriber = OH_CommonEvent_CreateSubscriber(subscribeInfo, PublishInfoCallback005);
251 ASSERT_OBJNE(subscriber, nullptr);
252 ASSERT_EQ(OH_CommonEvent_Subscribe(subscriber), COMMONEVENT_ERR_OK);
253 bool ordered = true;
254 auto publishInfo = OH_CommonEvent_CreatePublishInfo(ordered);
255 if (publishInfo != nullptr) {
256 auto parameters = OH_CommonEvent_CreateParameters();
257 if (parameters != nullptr) {
258 ASSERT_EQ(OH_CommonEvent_SetIntToParameters(parameters, KEY_INT, PARAM_1), COMMONEVENT_ERR_OK);
259 ASSERT_EQ(OH_CommonEvent_SetPublishInfoParameters(publishInfo, parameters), COMMONEVENT_ERR_OK);
260 }
261 OH_CommonEvent_PublishWithInfo(COMMON_EVENT_TEST, publishInfo);
262 OH_CommonEvent_DestroyPublishInfo(publishInfo);
263 OH_CommonEvent_DestroyParameters(parameters);
264 publishInfo = nullptr;
265 }
266 NAPI_END;
267 }