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 "napi/native_api.h"
17 #include "hilog/log.h"
18 #include <string>
19 #include <unistd.h>
20 #include "database/pasteboard/oh_pasteboard.h"
21 #include "database/pasteboard/oh_pasteboard_err_code.h"
22 #include "database/udmf/udmf.h"
23 #include "database/udmf/udmf_meta.h"
24 #include "database/udmf/uds.h"
25 #include "database/udmf/utd.h"
26 #include <iostream>
27 #include <map>
28 #include <ctime>
29 #include "common.h"
30 #include <cctype>
31 #include <condition_variable>
32 #include <cstdint>
33 #include <fcntl.h>
34 #include <functional>
35 #include <iostream>
36 #include <list>
37 #include <map>
38 #include <memory>
39 #include <mutex>
40 #include <string>
41 #include <sys/mman.h>
42 #include <thread>
43 #include <vector>
44 #include <string>
45 #include <random>
46 #include <chrono>
47
48
49 const char *TAG = "testLog";
50 static constexpr char HYPERLINK_URL[] = "file://data/image.png";
51 static constexpr char PLAINTEXT_CONTENT[] = "PLAINTEXT_CONTENT";
52 static void* GetDataCallback(void* context, const char* type);
53 static int g_callbackValue;
54 static constexpr int UPDATE_VALUE = 1;
55
FinalizeFunc(void* context)56 void FinalizeFunc(void* context) {};
ContextFinalizeFunc(void* context)57 void ContextFinalizeFunc(void* context) {};
CallbackFunc(void* context, Pasteboard_NotifyType type)58 void CallbackFunc(void* context, Pasteboard_NotifyType type)
59 {
60 g_callbackValue = UPDATE_VALUE;
61 }
62
63
GetDataCallbackFunc(void* context, const char* type)64 void* GetDataCallbackFunc(void* context, const char* type)
65 {
66 auto plainText = OH_UdsPlainText_Create();
67 OH_UdsPlainText_SetAbstract(plainText, "doing something");
68 OH_UdsPlainText_SetContent(plainText, "doing something");
69 return plainText;
70 }
71
GetDataCallback(void* context, const char* type)72 void* GetDataCallback(void* context, const char* type)
73 {
74 if (std::string(type) == "general.plain-text") {
75 OH_UdsPlainText* plainText = OH_UdsPlainText_Create();
76 OH_UdsPlainText_SetContent(plainText, PLAINTEXT_CONTENT);
77 return plainText;
78 } else if (std::string(type) == "general.hyperlink") {
79 OH_UdsHyperlink* link = OH_UdsHyperlink_Create();
80 OH_UdsHyperlink_SetUrl(link, HYPERLINK_URL);
81 return link;
82 }
83 return nullptr;
84 }
85
OH_PasteboardSubscriber_Create0100(napi_env env, napi_callback_info info)86 static napi_value OH_PasteboardSubscriber_Create0100(napi_env env, napi_callback_info info)
87 {
88 OH_PasteboardObserver* observer = OH_PasteboardObserver_Create();
89 napi_value result = nullptr;
90 napi_create_int32(env, observer != nullptr, &result);
91 OH_PasteboardObserver_Destroy(observer);
92 OH_PasteboardObserver_Destroy(nullptr);
93 return result;
94 }
95
OH_PasteboardObserver_SetData0100(napi_env env, napi_callback_info info)96 static napi_value OH_PasteboardObserver_SetData0100(napi_env env, napi_callback_info info)
97 {
98 napi_value returncode = nullptr;
99 OH_Pasteboard* pasteboard = OH_Pasteboard_Create();
100 void* context = static_cast<void*>(pasteboard);
101 OH_PasteboardObserver* observer = OH_PasteboardObserver_Create();
102 int setRes1 = OH_PasteboardObserver_SetData(observer, context, CallbackFunc, ContextFinalizeFunc);
103 napi_create_int32(env, setRes1 == ERR_OK, &returncode);
104 OH_PasteboardObserver_Destroy(observer);
105 OH_Pasteboard_Destroy(pasteboard);
106 return returncode;
107 }
108
OH_PasteboardObserver_SetData0200(napi_env env, napi_callback_info info)109 static napi_value OH_PasteboardObserver_SetData0200(napi_env env, napi_callback_info info)
110 {
111 napi_value result = nullptr;
112 OH_Pasteboard* pasteboard = OH_Pasteboard_Create();
113 void* context = static_cast<void*>(pasteboard);
114 OH_PasteboardObserver* observer = OH_PasteboardObserver_Create();
115
116 int setRes1 = OH_PasteboardObserver_SetData(nullptr, context, CallbackFunc, ContextFinalizeFunc);
117
118 napi_create_int32(env, setRes1 == ERR_INVALID_PARAMETER, &result);
119
120 OH_PasteboardObserver_Destroy(observer);
121 OH_Pasteboard_Destroy(pasteboard);
122 return result;
123 }
124
OH_PasteboardObserver_SetData0300(napi_env env, napi_callback_info info)125 static napi_value OH_PasteboardObserver_SetData0300(napi_env env, napi_callback_info info)
126 {
127 napi_value result = nullptr;
128 OH_Pasteboard* pasteboard = OH_Pasteboard_Create();
129 void* context = static_cast<void*>(pasteboard);
130 OH_PasteboardObserver* observer = OH_PasteboardObserver_Create();
131 int setRes2 = OH_PasteboardObserver_SetData(observer, context, nullptr, ContextFinalizeFunc);
132 napi_create_int32(env, setRes2 == ERR_INVALID_PARAMETER, &result);
133 OH_PasteboardObserver_Destroy(observer);
134 OH_Pasteboard_Destroy(pasteboard);
135 return result;
136 }
137
OH_PasteboardObserver_SetData0400(napi_env env, napi_callback_info info)138 static napi_value OH_PasteboardObserver_SetData0400(napi_env env, napi_callback_info info)
139 {
140 napi_value result = nullptr;
141 OH_Pasteboard* pasteboard = OH_Pasteboard_Create();
142 void* context = static_cast<void*>(pasteboard);
143 OH_PasteboardObserver* observer = OH_PasteboardObserver_Create();
144 int setRes3 = OH_PasteboardObserver_SetData(observer, context, CallbackFunc, nullptr);
145 napi_create_int32(env, setRes3 == ERR_INVALID_PARAMETER, &result);
146 OH_PasteboardObserver_Destroy(observer);
147 OH_Pasteboard_Destroy(pasteboard);
148 return result;
149 }
150
OH_Pasteboard_Create0100(napi_env env, napi_callback_info info)151 static napi_value OH_Pasteboard_Create0100(napi_env env, napi_callback_info info)
152 {
153 napi_value result = nullptr;
154 OH_Pasteboard* pasteboard = OH_Pasteboard_Create();
155 napi_create_int32(env, pasteboard != nullptr, &result);
156 OH_Pasteboard_Destroy(pasteboard);
157 return result;
158 }
159
OH_Pasteboard_Subscribe0100(napi_env env, napi_callback_info info)160 static napi_value OH_Pasteboard_Subscribe0100(napi_env env, napi_callback_info info)
161 {
162 napi_value result = nullptr;
163 OH_Pasteboard* pasteboard = OH_Pasteboard_Create();
164 OH_PasteboardObserver* observer = OH_PasteboardObserver_Create();
165 OH_PasteboardObserver_SetData(observer, nullptr, CallbackFunc, ContextFinalizeFunc);
166 int res = OH_Pasteboard_Subscribe(pasteboard, NOTIFY_LOCAL_DATA_CHANGE, observer);
167 napi_create_int32(env, res == ERR_OK, &result);
168 OH_Pasteboard_Destroy(pasteboard);
169 OH_PasteboardObserver_Destroy(observer);
170 return result;
171 }
172
OH_Pasteboard_Subscribe0200(napi_env env, napi_callback_info info)173 static napi_value OH_Pasteboard_Subscribe0200(napi_env env, napi_callback_info info)
174 {
175 napi_value result = nullptr;
176 OH_Pasteboard* pasteboard = OH_Pasteboard_Create();
177 OH_PasteboardObserver* observer = OH_PasteboardObserver_Create();
178 OH_PasteboardObserver_SetData(observer, nullptr, CallbackFunc, ContextFinalizeFunc);
179 int resRepeat = OH_Pasteboard_Subscribe(pasteboard, NOTIFY_LOCAL_DATA_CHANGE, observer);
180 napi_create_int32(env, resRepeat == ERR_OK, &result);
181 OH_Pasteboard_Destroy(pasteboard);
182 OH_PasteboardObserver_Destroy(observer);
183 return result;
184 }
185
OH_Pasteboard_Subscribe0300(napi_env env, napi_callback_info info)186 static napi_value OH_Pasteboard_Subscribe0300(napi_env env, napi_callback_info info)
187 {
188 napi_value result = nullptr;
189 OH_Pasteboard* pasteboard = OH_Pasteboard_Create();
190 OH_PasteboardObserver* observer = OH_PasteboardObserver_Create();
191 OH_PasteboardObserver_SetData(observer, nullptr, CallbackFunc, ContextFinalizeFunc);
192
193 int resRepeat = OH_Pasteboard_Subscribe(nullptr, NOTIFY_LOCAL_DATA_CHANGE, observer);
194 napi_create_int32(env, resRepeat == ERR_INVALID_PARAMETER, &result);
195
196 OH_Pasteboard_Destroy(pasteboard);
197 OH_PasteboardObserver_Destroy(observer);
198 return result;
199 }
200
OH_Pasteboard_Subscribe0400(napi_env env, napi_callback_info info)201 static napi_value OH_Pasteboard_Subscribe0400(napi_env env, napi_callback_info info)
202 {
203 napi_value result = nullptr;
204 OH_Pasteboard* pasteboard = OH_Pasteboard_Create();
205 OH_PasteboardObserver* observer = OH_PasteboardObserver_Create();
206 OH_PasteboardObserver_SetData(observer, nullptr, CallbackFunc, ContextFinalizeFunc);
207 int res = OH_Pasteboard_Subscribe(pasteboard, 10, observer);
208 napi_create_int32(env, res == ERR_INVALID_PARAMETER, &result);
209 OH_Pasteboard_Destroy(pasteboard);
210 OH_PasteboardObserver_Destroy(observer);
211 return result;
212 }
213
214
OH_Pasteboard_Subscribe0500(napi_env env, napi_callback_info info)215 static napi_value OH_Pasteboard_Subscribe0500(napi_env env, napi_callback_info info)
216
217 {
218 napi_value result = nullptr;
219 OH_Pasteboard* pasteboard = OH_Pasteboard_Create();
220 OH_PasteboardObserver* observer = OH_PasteboardObserver_Create();
221 OH_PasteboardObserver_SetData(observer, nullptr, CallbackFunc, ContextFinalizeFunc);
222 int res = OH_Pasteboard_Subscribe(pasteboard, -1, observer);
223 napi_create_int32(env, res == ERR_INVALID_PARAMETER, &result);
224 OH_Pasteboard_Destroy(pasteboard);
225 OH_PasteboardObserver_Destroy(observer);
226
227 return result;
228 }
229
OH_Pasteboard_Subscribe0600(napi_env env, napi_callback_info info)230 static napi_value OH_Pasteboard_Subscribe0600(napi_env env, napi_callback_info info)
231
232 {
233 napi_value result = nullptr;
234 OH_Pasteboard* pasteboard = OH_Pasteboard_Create();
235 OH_PasteboardObserver* observer = OH_PasteboardObserver_Create();
236 OH_PasteboardObserver_SetData(observer, nullptr, CallbackFunc, ContextFinalizeFunc);
237 int res = OH_Pasteboard_Subscribe(pasteboard, NOTIFY_LOCAL_DATA_CHANGE, nullptr);
238 napi_create_int32(env, res == ERR_INVALID_PARAMETER, &result);
239 OH_Pasteboard_Destroy(pasteboard);
240 OH_PasteboardObserver_Destroy(observer);
241 return result;
242 }
243
244
OH_Pasteboard_Unsubcribe0100(napi_env env, napi_callback_info info)245 static napi_value OH_Pasteboard_Unsubcribe0100(napi_env env, napi_callback_info info)
246 {
247 napi_value result = nullptr;
248 OH_Pasteboard* pasteboard = OH_Pasteboard_Create();
249 OH_PasteboardObserver* observer = OH_PasteboardObserver_Create();
250 OH_PasteboardObserver_SetData(observer, nullptr, CallbackFunc, ContextFinalizeFunc);
251 OH_Pasteboard_Subscribe(pasteboard, NOTIFY_LOCAL_DATA_CHANGE, observer);
252
253 int res = OH_Pasteboard_Unsubscribe(pasteboard, NOTIFY_LOCAL_DATA_CHANGE, observer);
254 napi_create_int32(env, res == ERR_OK, &result);
255
256 OH_Pasteboard_Destroy(pasteboard);
257 OH_PasteboardObserver_Destroy(observer);
258 return result;
259 }
260
OH_Pasteboard_Unsubcribe0200(napi_env env, napi_callback_info info)261 static napi_value OH_Pasteboard_Unsubcribe0200(napi_env env, napi_callback_info info)
262 {
263 napi_value result = nullptr;
264 OH_Pasteboard* pasteboard = OH_Pasteboard_Create();
265 OH_PasteboardObserver* observer = OH_PasteboardObserver_Create();
266 OH_PasteboardObserver_SetData(observer, nullptr, CallbackFunc, ContextFinalizeFunc);
267
268 int res = OH_Pasteboard_Unsubscribe(nullptr, NOTIFY_LOCAL_DATA_CHANGE, observer);
269 napi_create_int32(env, res == ERR_INVALID_PARAMETER, &result);
270 OH_Pasteboard_Destroy(pasteboard);
271 OH_PasteboardObserver_Destroy(observer);
272 return result;
273 }
274
275
OH_Pasteboard_Unsubcribe0300(napi_env env, napi_callback_info info)276 static napi_value OH_Pasteboard_Unsubcribe0300(napi_env env, napi_callback_info info)
277 {
278 napi_value result = nullptr;
279 OH_Pasteboard* pasteboard = OH_Pasteboard_Create();
280 OH_PasteboardObserver* observer = OH_PasteboardObserver_Create();
281 OH_PasteboardObserver_SetData(observer, nullptr, CallbackFunc, ContextFinalizeFunc);
282 int res = OH_Pasteboard_Unsubscribe(pasteboard, 10, observer);
283 napi_create_int32(env, res == ERR_INVALID_PARAMETER, &result);
284
285 OH_Pasteboard_Destroy(pasteboard);
286 OH_PasteboardObserver_Destroy(observer);
287 return result;
288 }
289
OH_Pasteboard_Unsubcribe0400(napi_env env, napi_callback_info info)290 static napi_value OH_Pasteboard_Unsubcribe0400(napi_env env, napi_callback_info info)
291 {
292 napi_value result = nullptr;
293 OH_Pasteboard* pasteboard = OH_Pasteboard_Create();
294 OH_PasteboardObserver* observer = OH_PasteboardObserver_Create();
295 OH_PasteboardObserver_SetData(observer, nullptr, CallbackFunc, ContextFinalizeFunc);
296 int res = OH_Pasteboard_Unsubscribe(pasteboard, -1, observer);
297 napi_create_int32(env, res == ERR_INVALID_PARAMETER, &result);
298
299 OH_Pasteboard_Destroy(pasteboard);
300 OH_PasteboardObserver_Destroy(observer);
301 return result;
302 }
303
OH_Pasteboard_Unsubcribe0500(napi_env env, napi_callback_info info)304 static napi_value OH_Pasteboard_Unsubcribe0500(napi_env env, napi_callback_info info)
305 {
306 napi_value result = nullptr;
307 OH_Pasteboard* pasteboard = OH_Pasteboard_Create();
308 OH_PasteboardObserver* observer = OH_PasteboardObserver_Create();
309 OH_PasteboardObserver_SetData(observer, nullptr, CallbackFunc, ContextFinalizeFunc);
310 int res = OH_Pasteboard_Unsubscribe(pasteboard, NOTIFY_LOCAL_DATA_CHANGE, nullptr);
311 napi_create_int32(env, res == ERR_INVALID_PARAMETER, &result);
312
313 OH_Pasteboard_Destroy(pasteboard);
314 OH_PasteboardObserver_Destroy(observer);
315 return result;
316 }
317
OH_Pasteboard_IsRemoteData0100(napi_env env, napi_callback_info info)318 static napi_value OH_Pasteboard_IsRemoteData0100(napi_env env, napi_callback_info info)
319 {
320 napi_value result = nullptr;
321 OH_Pasteboard* pasteboard = OH_Pasteboard_Create();
322
323 bool res = OH_Pasteboard_IsRemoteData(pasteboard);
324 napi_create_int32(env, res == false, &result);
325
326 OH_Pasteboard_Destroy(pasteboard);
327 return result;
328 }
329
OH_Pasteboard_GetDataSrouce0100(napi_env env, napi_callback_info info)330 static napi_value OH_Pasteboard_GetDataSrouce0100(napi_env env, napi_callback_info info)
331 {
332 napi_value result = nullptr;
333 OH_Pasteboard* pasteboard = OH_Pasteboard_Create();
334 OH_UdmfData* setData = OH_UdmfData_Create();
335 OH_UdmfRecord* record = OH_UdmfRecord_Create();
336 OH_UdsPlainText* plainText = OH_UdsPlainText_Create();
337 char content[] = "hello world";
338 OH_UdsPlainText_SetContent(plainText, content);
339 OH_UdmfRecord_AddPlainText(record, plainText);
340 OH_UdmfData_AddRecord(setData, record);
341
342 OH_Pasteboard_SetData(pasteboard, setData);
343
344 int len = 100;
345 char source[100];
346 int res = OH_Pasteboard_GetDataSource(pasteboard, source, len);
347 napi_create_int32(env, res == ERR_OK, &result);
348 OH_Pasteboard_Destroy(pasteboard);
349 return result;
350 }
351
OH_Pasteboard_HasType0100(napi_env env, napi_callback_info info)352 static napi_value OH_Pasteboard_HasType0100(napi_env env, napi_callback_info info)
353 {
354 napi_value result = nullptr;
355 OH_Pasteboard* pasteboard = OH_Pasteboard_Create();
356 OH_UdmfData* setData = OH_UdmfData_Create();
357 OH_UdmfRecord* record = OH_UdmfRecord_Create();
358 OH_UdsPlainText* plainText = OH_UdsPlainText_Create();
359 char content[] = "hello world";
360 OH_UdsPlainText_SetContent(plainText, content);
361 OH_UdmfRecord_AddPlainText(record, plainText);
362 OH_UdmfData_AddRecord(setData, record);
363
364 OH_Pasteboard_SetData(pasteboard, setData);
365 char type[] = "general.plain-text";
366 bool res = OH_Pasteboard_HasType(pasteboard, type);
367 napi_create_int32(env, res == false, &result);
368 OH_Pasteboard_Destroy(pasteboard);
369
370 return result;
371 }
372
373
OH_Pasteboard_HasData0100(napi_env env, napi_callback_info info)374 static napi_value OH_Pasteboard_HasData0100(napi_env env, napi_callback_info info)
375 {
376 napi_value result = nullptr;
377 OH_Pasteboard* pasteboard = OH_Pasteboard_Create();
378 OH_Pasteboard_ClearData(pasteboard);
379 bool res = OH_Pasteboard_HasData(pasteboard);
380 NAPI_ASSERT(env, res == false, "createTable is fail.");
381
382 OH_UdmfData* setData = OH_UdmfData_Create();
383 OH_UdmfRecord* record = OH_UdmfRecord_Create();
384 OH_UdsPlainText* plainText = OH_UdsPlainText_Create();
385 char content[] = "hello world";
386 OH_UdsPlainText_SetContent(plainText, content);
387 OH_UdmfRecord_AddPlainText(record, plainText);
388 OH_UdmfData_AddRecord(setData, record);
389 OH_Pasteboard_SetData(pasteboard, setData);
390 res = OH_Pasteboard_HasData(pasteboard);
391 NAPI_ASSERT(env, res == true, "OH_Pasteboard_HasData is fail.");
392 napi_create_int32(env, res == true, &result);
393 OH_Pasteboard_Destroy(pasteboard);
394 return result;
395 }
396
397
OH_Pasteboard_ClearData0100(napi_env env, napi_callback_info info)398 static napi_value OH_Pasteboard_ClearData0100(napi_env env, napi_callback_info info)
399 {
400 napi_value result = nullptr;
401 OH_Pasteboard* pasteboard = OH_Pasteboard_Create();
402 bool res = OH_Pasteboard_ClearData(pasteboard);
403 NAPI_ASSERT(env, res == ERR_OK, "OH_Pasteboard_ClearData is fail.");
404 napi_create_int32(env, res == ERR_OK, &result);
405 OH_Pasteboard_Destroy(pasteboard);
406 return result;
407 }
408
409
OH_Pasteboard_SetData0100(napi_env env, napi_callback_info info)410 static napi_value OH_Pasteboard_SetData0100(napi_env env, napi_callback_info info)
411 {
412 napi_value result = nullptr;
413 OH_Pasteboard* pasteboard = OH_Pasteboard_Create();
414 OH_UdmfData *setData = OH_UdmfData_Create();
415 OH_UdmfRecord *record = OH_UdmfRecord_Create();
416 OH_UdsPlainText *plainText = OH_UdsPlainText_Create();
417 char content[] = "hello world";
418 OH_UdsPlainText_SetContent(plainText, content);
419 OH_UdmfRecord_AddPlainText(record, plainText);
420 OH_UdmfData_AddRecord(setData, record);
421
422 bool res = OH_Pasteboard_SetData(pasteboard, setData);
423 NAPI_ASSERT(env, res == ERR_OK, "OH_Pasteboard_SetData is fail.");
424 napi_create_int32(env, res == ERR_OK, &result);
425 OH_Pasteboard_Destroy(pasteboard);
426 OH_UdsPlainText_Destroy(plainText);
427 OH_UdmfRecord_Destroy(record);
428 OH_UdmfData_Destroy(setData);
429 return result;
430 }
431
432
OH_Pasteboard_GetData0100(napi_env env, napi_callback_info info)433 static napi_value OH_Pasteboard_GetData0100(napi_env env, napi_callback_info info)
434 {
435 napi_value result = nullptr;
436 OH_Pasteboard* pasteboard = OH_Pasteboard_Create();
437 OH_UdmfData* setData = OH_UdmfData_Create();
438 OH_UdmfRecord* record = OH_UdmfRecord_Create();
439 OH_UdsPlainText* plainText = OH_UdsPlainText_Create();
440 char content[] = "hello world";
441 OH_UdsPlainText_SetContent(plainText, content);
442 OH_UdmfRecord_AddPlainText(record, plainText);
443 OH_UdmfData_AddRecord(setData, record);
444
445 int res = OH_Pasteboard_SetData(pasteboard, setData);
446 NAPI_ASSERT(env, res == ERR_OK, "OH_Pasteboard_SetData is fail.");
447
448 int status = -1;
449 OH_UdmfData* getData = OH_Pasteboard_GetData(pasteboard, &status);
450 NAPI_ASSERT(env, status == ERR_OK, "OH_Pasteboard_GetData is fail.");
451 NAPI_ASSERT(env, getData != nullptr, "OH_Pasteboard_GetData is fail.");
452
453 unsigned int count = 0;
454 OH_UdmfRecord **getRecords = OH_UdmfData_GetRecords(getData, &count);
455 NAPI_ASSERT(env, count == 1, "OH_Pasteboard_GetData is fail.");
456
457 OH_UdsPlainText *getPlainText = OH_UdsPlainText_Create();
458 OH_UdmfRecord_GetPlainText(getRecords[0], getPlainText);
459 const char *getContent = OH_UdsPlainText_GetContent(getPlainText);
460
461 NAPI_ASSERT(env, strcmp(getContent, content) == 0, "OH_Pasteboard_GetData is fail.");
462 napi_create_int32(env, res == ERR_OK, &result);
463 OH_Pasteboard_Destroy(pasteboard);
464 OH_UdsPlainText_Destroy(plainText);
465 OH_UdsPlainText_Destroy(getPlainText);
466 OH_UdmfRecord_Destroy(record);
467 OH_UdmfData_Destroy(setData);
468 OH_UdmfData_Destroy(getData);
469 return result;
470 }
471
472
OH_Pasteboard_GetData0200(napi_env env, napi_callback_info info)473 static napi_value OH_Pasteboard_GetData0200(napi_env env, napi_callback_info info)
474 {
475 int num = 3;
476 napi_value result = nullptr;
477 OH_Pasteboard* pasteboard = OH_Pasteboard_Create();
478 OH_UdmfData* setData = OH_UdmfData_Create();
479 OH_UdmfRecord* record = OH_UdmfRecord_Create();
480 OH_UdmfRecordProvider* provider = OH_UdmfRecordProvider_Create();
481 NAPI_ASSERT(env, provider != nullptr, "OH_Pasteboard_SetData is fail.");
482
483 OH_UdmfRecordProvider_SetData(provider, static_cast<void *>(record), GetDataCallback, ContextFinalizeFunc);
484 OH_UdmfData_AddRecord(setData, record);
485 const char* types[3] = { "general.plain-text", "general.hyperlink", "general.html" };
486 OH_UdmfRecord_SetProvider(record, types, num, provider);
487 int res = OH_Pasteboard_SetData(pasteboard, setData);
488 NAPI_ASSERT(env, res == ERR_OK, "OH_Pasteboard_SetData is fail.");
489
490 int status = -1;
491 OH_UdmfData* getData = OH_Pasteboard_GetData(pasteboard, &status);
492 NAPI_ASSERT(env, status == ERR_OK, "OH_Pasteboard_GetData is fail.");
493 NAPI_ASSERT(env, getData != nullptr, "OH_Pasteboard_GetData is fail.");
494
495 unsigned int count = 0;
496 OH_UdmfRecord **getRecords = OH_UdmfData_GetRecords(getData, &count);
497 NAPI_ASSERT(env, count == 1, "OH_UdmfData_GetRecords is fail.");
498
499 OH_UdsPlainText *getPlainText = OH_UdsPlainText_Create();
500 OH_UdmfRecord_GetPlainText(getRecords[0], getPlainText);
501 const char *getContent = OH_UdsPlainText_GetContent(getPlainText);
502 NAPI_ASSERT(env, strcmp(getContent, PLAINTEXT_CONTENT) == 0, "OH_UdsPlainText_GetContent is fail.");
503
504 OH_UdsHyperlink *getHyperLink = OH_UdsHyperlink_Create();
505 OH_UdmfRecord_GetHyperlink(getRecords[0], getHyperLink);
506 const char *getUrl = OH_UdsHyperlink_GetUrl(getHyperLink);
507 NAPI_ASSERT(env, strcmp(getUrl, HYPERLINK_URL) == 0, "OH_UdsHyperlink_GetUrl is fail.");
508 napi_create_int32(env, res == ERR_OK, &result);
509 OH_Pasteboard_Destroy(pasteboard);
510 OH_UdsPlainText_Destroy(getPlainText);
511 OH_UdsHyperlink_Destroy(getHyperLink);
512 OH_UdmfRecord_Destroy(record);
513 OH_UdmfData_Destroy(setData);
514 OH_UdmfData_Destroy(getData);
515 return result;
516 }
517
OH_Pasteboard_GetData0300(napi_env env, napi_callback_info info)518 static napi_value OH_Pasteboard_GetData0300(napi_env env, napi_callback_info info)
519 {
520 napi_value result = nullptr;
521 char typeId[] = "ApplicationDefined-myType";
522 unsigned char entry[] = "CreateGeneralRecord1";
523 unsigned int count = sizeof(entry);
524 OH_UdmfRecord *record = OH_UdmfRecord_Create();
525 int addRes1 = OH_UdmfRecord_AddGeneralEntry(record, typeId, entry, count);
526 NAPI_ASSERT(env, addRes1 == ERR_OK, "OH_AddGeneralEntry is fail.");
527
528 OH_UdmfData* setData = OH_UdmfData_Create();
529 OH_UdmfData_AddRecord(setData, record);
530 OH_Pasteboard* pasteboard = OH_Pasteboard_Create();
531 int res = OH_Pasteboard_SetData(pasteboard, setData);
532 NAPI_ASSERT(env, res == ERR_OK, "OH_SetData is fail.");
533
534 int status = -1;
535 OH_UdmfData* getData = OH_Pasteboard_GetData(pasteboard, &status);
536 NAPI_ASSERT(env, status == ERR_OK, "OH_GetData is fail");
537 NAPI_ASSERT(env, getData != nullptr, "OH_GetData is fail");
538
539 unsigned int getrecordCount = 0;
540 OH_UdmfRecord **getRecords = OH_UdmfData_GetRecords(getData, &getrecordCount);
541 NAPI_ASSERT(env, getrecordCount == 1, "OH_getRecords is fail");
542
543 unsigned int getCount = 0;
544 unsigned char *getEntry;
545 int getRes = OH_UdmfRecord_GetGeneralEntry(getRecords[0], typeId, &getEntry, &getCount);
546 NAPI_ASSERT(env, getRes == ERR_OK, "OH_getRecords is fail");
547 NAPI_ASSERT(env, getCount == count, "OH_getRecords is fail");
548 NAPI_ASSERT(env, memcmp(entry, getEntry, getCount) == 0, "OH_getRecords is fail");
549 napi_create_int32(env, res == ERR_OK, &result);
550 OH_Pasteboard_Destroy(pasteboard);
551 OH_UdmfRecord_Destroy(record);
552 OH_UdmfData_Destroy(setData);
553 OH_UdmfData_Destroy(getData);
554 return result;
555 }
556
557 EXTERN_C_START
Init(napi_env env, napi_value exports)558 static napi_value Init(napi_env env, napi_value exports)
559 {
560 napi_property_descriptor desc[] = {
561 {"OH_PasteboardSubscriber_Create0100", nullptr, OH_PasteboardSubscriber_Create0100,
562 nullptr, nullptr, nullptr, napi_default, nullptr},
563 {"OH_PasteboardObserver_SetData0100", nullptr, OH_PasteboardObserver_SetData0100, nullptr,
564 nullptr, nullptr, napi_default, nullptr},
565 {"OH_PasteboardObserver_SetData0200", nullptr, OH_PasteboardObserver_SetData0200, nullptr,
566 nullptr, nullptr, napi_default, nullptr},
567 {"OH_PasteboardObserver_SetData0300", nullptr, OH_PasteboardObserver_SetData0300, nullptr,
568 nullptr, nullptr, napi_default, nullptr},
569 {"OH_PasteboardObserver_SetData0400", nullptr, OH_PasteboardObserver_SetData0400, nullptr,
570 nullptr, nullptr, napi_default, nullptr},
571 {"OH_Pasteboard_Create0100", nullptr, OH_Pasteboard_Create0100, nullptr,
572 nullptr, nullptr, napi_default, nullptr},
573 {"OH_Pasteboard_Subscribe0100", nullptr, OH_Pasteboard_Subscribe0100, nullptr,
574 nullptr, nullptr, napi_default, nullptr},
575 {"OH_Pasteboard_Subscribe0200", nullptr, OH_Pasteboard_Subscribe0200, nullptr,
576 nullptr, nullptr, napi_default, nullptr},
577 {"OH_Pasteboard_Subscribe0300", nullptr, OH_Pasteboard_Subscribe0300, nullptr,
578 nullptr, nullptr, napi_default, nullptr},
579 {"OH_Pasteboard_Subscribe0400", nullptr, OH_Pasteboard_Subscribe0400, nullptr,
580 nullptr, nullptr, napi_default, nullptr},
581 {"OH_Pasteboard_Subscribe0500", nullptr, OH_Pasteboard_Subscribe0500, nullptr,
582 nullptr, nullptr, napi_default, nullptr},
583 {"OH_Pasteboard_Subscribe0600", nullptr, OH_Pasteboard_Subscribe0600, nullptr,
584 nullptr, nullptr, napi_default, nullptr},
585 {"OH_Pasteboard_Unsubcribe0100", nullptr, OH_Pasteboard_Unsubcribe0100, nullptr,
586 nullptr, nullptr, napi_default, nullptr},
587 {"OH_Pasteboard_Unsubcribe0200", nullptr, OH_Pasteboard_Unsubcribe0200, nullptr,
588 nullptr, nullptr, napi_default, nullptr},
589 {"OH_Pasteboard_Unsubcribe0300", nullptr, OH_Pasteboard_Unsubcribe0300, nullptr,
590 nullptr, nullptr, napi_default, nullptr},
591 {"OH_Pasteboard_Unsubcribe0400", nullptr, OH_Pasteboard_Unsubcribe0400, nullptr,
592 nullptr, nullptr, napi_default, nullptr},
593 {"OH_Pasteboard_Unsubcribe0500", nullptr, OH_Pasteboard_Unsubcribe0500, nullptr,
594 nullptr, nullptr, napi_default, nullptr},
595 {"OH_Pasteboard_IsRemoteData0100", nullptr, OH_Pasteboard_IsRemoteData0100, nullptr,
596 nullptr, nullptr, napi_default, nullptr},
597 {"OH_Pasteboard_GetDataSrouce0100", nullptr, OH_Pasteboard_GetDataSrouce0100, nullptr,
598 nullptr, nullptr, napi_default, nullptr},
599 {"OH_Pasteboard_HasType0100", nullptr, OH_Pasteboard_HasType0100, nullptr,
600 nullptr, nullptr, napi_default, nullptr},
601 {"OH_Pasteboard_HasData0100", nullptr, OH_Pasteboard_HasData0100, nullptr,
602 nullptr, nullptr, napi_default, nullptr},
603 {"OH_Pasteboard_ClearData0100", nullptr, OH_Pasteboard_ClearData0100, nullptr,
604 nullptr, nullptr, napi_default, nullptr},
605 {"OH_Pasteboard_SetData0100", nullptr, OH_Pasteboard_SetData0100, nullptr,
606 nullptr, nullptr, napi_default, nullptr},
607 {"OH_Pasteboard_GetData0100", nullptr, OH_Pasteboard_GetData0100, nullptr,
608 nullptr, nullptr, napi_default, nullptr},
609 {"OH_Pasteboard_GetData0200", nullptr, OH_Pasteboard_GetData0200, nullptr,
610 nullptr, nullptr, napi_default, nullptr},
611 {"OH_Pasteboard_GetData0300", nullptr, OH_Pasteboard_GetData0300, nullptr,
612 nullptr, nullptr, napi_default, nullptr}
613 };
614 napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc);
615 return exports;
616 }
617 EXTERN_C_END
618
619 static napi_module demoModule = {
620 .nm_version = 1,
621 .nm_flags = 0,
622 .nm_filename = nullptr,
623 .nm_register_func = Init,
624 .nm_modname = "entry",
625 .nm_priv = ((void*)0),
626 .reserved = { 0 },
627 };
628
RegisterEntryModule(void)629 extern "C" __attribute__((constructor)) void RegisterEntryModule(void)
630 {
631 napi_module_register(&demoModule);
632 }
633