• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 }