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 #include <arm-linux-ohos/bits/user.h>
16 #include <hilog/log.h>
17 #include "napi/native_api.h"
18 #include "web/arkweb_scheme_handler.h"
19 #include <bits/alltypes.h>
20 #include <web/arkweb_interface.h>
21 #include "rawfile/raw_file_manager.h"
22 #include "test_request.h"
23
24 #undef LOG_DOMAIN
25
26 #undef LOG_TAG
27
28 #define LOG_DOMAIN 0x0000
29
30 #define LOG_TAG "webtest"
31
32 ArkWeb_SchemeHandler *g_schemeHandler;
33 ArkWeb_SchemeHandler *g_scheme_handler_for_service_worker;
34 NativeResourceManager *g_resourceManager;
35
36 std::string testUrl;
37 std::string testMethod;
38 std::string testRef("test");
39 bool testGetHttpBodyStream = false;
40 int32_t testHeaderSize = 0;
41 bool testHasHeader = false;
42 bool testDestroyHeaderList = false;
43 bool testHasGesture = false;
44 bool testIsMainFrame = false;
45 bool testIsRedirect = false;
46 bool testSchemeHandlerGetUserData = false;
47 int32_t testSchemeHandlerSetUserData = -1;
48 bool testResourceRequestGetUserData = false;
49 int32_t testResourceRequestSetUserData = -1;
50 int32_t testResourceRequestDestroy = -1;
51 std::string testResponseUrl("test");
52 int32_t testResponseError;
53 int32_t testResponseStatus;
54 std::string testResponseStatusText;
55 std::string testResponseMimeType;
56 std::string testResponseCharSet;
57 std::string testResponseHost("test");
58 int32_t testResponseSetUrl = -1;
59 int32_t testResponseSetError = -1;
60 int32_t testResponseSetStatus = -1;
61 int32_t testResponseSetStatusText = -1;
62 int32_t testResponseSetMimeType = -1;
63 int32_t testResponseSetCharSet = -1;
64 int32_t testResponseSetHost = -1;
65
66 const int DEFAULT_TYPE = -100;
67 int32_t testResourceType = DEFAULT_TYPE;
68 std::string testFrameUrl("test");
69
70 const int NOT_FOUND = 404;
71 const int OK = 200;
72
RegisterCustomSchemes(napi_env env,napi_callback_info info)73 static napi_value RegisterCustomSchemes(napi_env env, napi_callback_info info)
74 {
75 OH_LOG_INFO(LOG_APP, "register custom schemes start");
76
77 int32_t value;
78 value = OH_ArkWeb_RegisterCustomSchemes("custom",
79 ARKWEB_SCHEME_OPTION_DISPLAY_ISOLATED | ARKWEB_SCHEME_OPTION_FETCH_ENABLED | ARKWEB_SCHEME_OPTION_CORS_ENABLED);
80
81 OH_LOG_INFO(LOG_APP, "register custom schemes end %{public}d", value);
82
83 napi_value result;
84 napi_create_int32(env, value, &result);
85
86 return result;
87 }
88
ClearSchemeHandlers(napi_env env,napi_callback_info info)89 static napi_value ClearSchemeHandlers(napi_env env, napi_callback_info info)
90 {
91 int32_t value;
92 value = OH_ArkWeb_ClearSchemeHandlers("scheme-handler");
93
94 napi_value result;
95 napi_create_int32(env, value, &result);
96 return result;
97 }
98
ServiceWorkerClearSchemeHandlers(napi_env env,napi_callback_info info)99 static napi_value ServiceWorkerClearSchemeHandlers(napi_env env, napi_callback_info info)
100 {
101 int32_t value;
102 value = OH_ArkWebServiceWorker_ClearSchemeHandlers();
103 napi_value result;
104 napi_create_int32(env, value, &result);
105 return result;
106 }
107
OnURLRequestStart(const ArkWeb_SchemeHandler * schemeHandler,ArkWeb_ResourceRequest * resourceRequest,const ArkWeb_ResourceHandler * resourceHandler,bool * intercept)108 void OnURLRequestStart(const ArkWeb_SchemeHandler *schemeHandler, ArkWeb_ResourceRequest *resourceRequest,
109 const ArkWeb_ResourceHandler *resourceHandler, bool *intercept)
110 {
111 OH_LOG_INFO(LOG_APP, "OnURLRequestStart");
112
113 int32_t p = 6;
114 int* value = &p;
115 testSchemeHandlerSetUserData = OH_ArkWebSchemeHandler_SetUserData(g_schemeHandler, &value);
116
117 *intercept = true;
118
119 TestRequest* testRequest = new TestRequest(resourceRequest, resourceHandler, g_resourceManager);
120 testResourceRequestSetUserData = OH_ArkWebResourceRequest_SetUserData(resourceRequest, testRequest);
121
122 testRequest->Start();
123
124 testUrl = testRequest->url().c_str();
125 testMethod = testRequest->method().c_str();
126 testGetHttpBodyStream = testRequest->isGetBodyStream();
127 testHeaderSize = testRequest->header_size();
128 testHasHeader = testRequest->hasHeader();
129 testDestroyHeaderList = testRequest->isHeaderDestroy();
130 testHasGesture = testRequest->hasGesture();
131 testIsMainFrame = testRequest->isMainFrame();
132 testIsRedirect = testRequest->isRedirect();
133 testRef = testRequest->referrer().c_str();
134
135 testResourceType = testRequest->rspResourceType();
136 testFrameUrl = testRequest->rspFrameUrl();
137
138 testResponseUrl = testRequest->rspUrl();
139 testResponseError = testRequest->rspNetError();
140 testResponseStatus = testRequest->rspStatus();
141 testResponseStatusText = testRequest->rspStatusText();
142 testResponseMimeType = testRequest->rspMimeType();
143 testResponseCharSet = testRequest->rspCharSet();
144 testResponseHost = testRequest->rspHost();
145
146 testRequest->rawfilePath();
147
148 testResponseSetUrl = testRequest->setRspUrl();
149 testResponseSetError = testRequest->setRspError();
150 testResponseSetStatus = testRequest->setStatus();
151 testResponseSetStatusText = testRequest->setStatusText();
152 testResponseSetMimeType = testRequest->setMimeType();
153 testResponseSetCharSet = testRequest->setCharset();
154 testResponseSetHost = testRequest->setHeaderByName();
155
156 OH_LOG_INFO(LOG_APP, "testRequest->rawfilePath() %{public}s", testRequest->rawfilePath().c_str());
157
158 OH_LOG_INFO(LOG_APP, "testRequest->url() %{public}s", testUrl.c_str());
159 OH_LOG_INFO(LOG_APP, "testRequest->method() %{public}s", testMethod.c_str());
160 OH_LOG_INFO(LOG_APP, "testRequest->isGetBodyStream() %{public}d", testGetHttpBodyStream);
161 OH_LOG_INFO(LOG_APP, "testRequest->header_size() %{public}d", testHeaderSize);
162 OH_LOG_INFO(LOG_APP, "testRequest->hasHeader() %{public}d", testHasHeader);
163 OH_LOG_INFO(LOG_APP, "testRequest->isHeaderDestroy() %{public}d", testDestroyHeaderList);
164 OH_LOG_INFO(LOG_APP, "testRequest->hasGesture() %{public}d", testHasGesture);
165 OH_LOG_INFO(LOG_APP, "testRequest->isMainFrame() %{public}d", testIsMainFrame);
166 OH_LOG_INFO(LOG_APP, "testRequest->isRedirect() %{public}d", testIsRedirect);
167 OH_LOG_INFO(LOG_APP, "testRequest->referrer() %{public}s", testRef.c_str());
168
169 OH_LOG_INFO(LOG_APP, "testRequest->rspResourceType() %{public}d", testResourceType);
170 OH_LOG_INFO(LOG_APP, "testRequest->rspFrameUrl() %{public}s", testFrameUrl.c_str());
171
172 OH_LOG_INFO(LOG_APP, "testRequest->rspUrl() %{public}s", testResponseUrl.c_str());
173 OH_LOG_INFO(LOG_APP, "testRequest->rspNetError() %{public}d", testResponseError);
174 OH_LOG_INFO(LOG_APP, "testRequest->rspStatus() %{public}d", testResponseStatus);
175 OH_LOG_INFO(LOG_APP, "testRequest->rspStatusText() %{public}s", testResponseStatusText.c_str());
176 OH_LOG_INFO(LOG_APP, "testRequest->rspMimeType() %{public}s", testResponseMimeType.c_str());
177 OH_LOG_INFO(LOG_APP, "testRequest->rspCharSet() %{public}s", testResponseCharSet.c_str());
178 OH_LOG_INFO(LOG_APP, "testRequest->rspHost() %{public}s", testResponseHost.c_str());
179
180 OH_LOG_INFO(LOG_APP, "testRequest->setRspUrl() %{public}d", testResponseSetUrl);
181 OH_LOG_INFO(LOG_APP, "testRequest->setRspError() %{public}d", testResponseSetError);
182 OH_LOG_INFO(LOG_APP, "testRequest->setStatus() %{public}d", testResponseSetStatus);
183 OH_LOG_INFO(LOG_APP, "testRequest->setStatusText() %{public}d", testResponseSetStatusText);
184 OH_LOG_INFO(LOG_APP, "testRequest->setMimeType() %{public}d", testResponseSetMimeType);
185 OH_LOG_INFO(LOG_APP, "testRequest->setCharset() %{public}d", testResponseSetCharSet);
186 OH_LOG_INFO(LOG_APP, "testRequest->setHeaderByName() %{public}d", testResponseSetHost);
187
188 void* userdata = OH_ArkWebSchemeHandler_GetUserData(schemeHandler);
189 int* getValue = static_cast<int*>(userdata);
190 if (userdata) {
191 testSchemeHandlerGetUserData = true;
192 }
193
194 void* resourceUserData = OH_ArkWebResourceRequest_GetUserData(resourceRequest);
195 if (resourceUserData) {
196 testResourceRequestGetUserData = true;
197 }
198
199 OH_LOG_INFO(LOG_APP, "OH_ArkWebSchemeHandler_GetUserData %{public}d", *getValue);
200 OH_LOG_INFO(LOG_APP, "OH_ArkWebSchemeHandler_SetUserData %{public}d", testSchemeHandlerSetUserData);
201
202 OH_LOG_INFO(LOG_APP, "OH_ArkWebResourceRequest_GetUserData %{public}d", testResourceRequestGetUserData);
203 OH_LOG_INFO(LOG_APP, "OH_ArkWebResourceRequest_SetUserData %{public}d", testResourceRequestSetUserData);
204 }
205
OnURLRequestStartForSW(const ArkWeb_SchemeHandler * schemeHandler,ArkWeb_ResourceRequest * resourceRequest,const ArkWeb_ResourceHandler * resourceHandler,bool * intercept)206 void OnURLRequestStartForSW(const ArkWeb_SchemeHandler *schemeHandler, ArkWeb_ResourceRequest *resourceRequest,
207 const ArkWeb_ResourceHandler *resourceHandler, bool *intercept)
208 {
209 OH_LOG_INFO(LOG_APP, "OnURLRequestStartForSW");
210 }
211
OnURLRequestStop(const ArkWeb_SchemeHandler * schemeHandler,const ArkWeb_ResourceRequest * request)212 void OnURLRequestStop(const ArkWeb_SchemeHandler *schemeHandler, const ArkWeb_ResourceRequest *request)
213 {
214 OH_LOG_INFO(LOG_APP, "OnURLRequestStop");
215
216 if (!request) {
217 return;
218 }
219
220 TestRequest* testRequest = (TestRequest*)OH_ArkWebResourceRequest_GetUserData(request);
221 if (testRequest) {
222 testRequest->Stop();
223 testResourceRequestDestroy = testRequest->resourceRequestDestroy();
224 }
225 }
226
OnURLRequestStopForSW(const ArkWeb_SchemeHandler * schemeHandler,const ArkWeb_ResourceRequest * request)227 void OnURLRequestStopForSW(const ArkWeb_SchemeHandler *schemeHandler, const ArkWeb_ResourceRequest *request)
228 {
229 if (!request) {
230 return;
231 }
232 }
233
DestroySchemeHandler(napi_env env,napi_callback_info info)234 static napi_value DestroySchemeHandler(napi_env env, napi_callback_info info)
235 {
236 napi_value result;
237 OH_ArkWeb_DestroySchemeHandler(g_schemeHandler);
238 napi_create_int32(env, 0, &result);
239
240 return result;
241 }
242
GetNativeAPI(napi_env env,napi_callback_info info)243 static napi_value GetNativeAPI(napi_env env, napi_callback_info info)
244 {
245 napi_value result;
246 ArkWeb_AnyNativeAPI* api = OH_ArkWeb_GetNativeAPI(ARKWEB_NATIVE_CONTROLLER);
247 size_t api_size = api->size;
248 napi_create_int32(env, api_size, &result);
249
250 return result;
251 }
252
SetSchemeHandler(napi_env env,napi_callback_info info)253 static napi_value SetSchemeHandler(napi_env env, napi_callback_info info)
254 {
255 // 创建一个处理器
256 OH_LOG_INFO(LOG_APP, "OH_ArkWeb_CreateSchemeHandler");
257
258 OH_ArkWeb_CreateSchemeHandler(&g_schemeHandler);
259
260 OH_LOG_INFO(LOG_APP, "OH_ArkWeb_CreateSchemeHandler");
261 OH_ArkWeb_CreateSchemeHandler(&g_scheme_handler_for_service_worker);
262
263 // 给SchemeHandler创建回调函数
264 int32_t ret = OH_ArkWebSchemeHandler_SetOnRequestStart(g_schemeHandler, OnURLRequestStart);
265 if (ret != ARKWEB_NET_OK) {
266 return nullptr;
267 }
268 OH_LOG_INFO(LOG_APP, "OH_ArkWebSchemeHandler_SetOnRequestStart %{public}d", ret);
269
270 ret = OH_ArkWebSchemeHandler_SetOnRequestStop(g_schemeHandler, OnURLRequestStop);
271 if (ret != ARKWEB_NET_OK) {
272 return nullptr;
273 }
274 OH_LOG_INFO(LOG_APP, "OH_ArkWebSchemeHandler_SetOnRequestStop %{public}d", ret);
275
276 ret = OH_ArkWebSchemeHandler_SetOnRequestStart(g_scheme_handler_for_service_worker, OnURLRequestStartForSW);
277 if (ret != ARKWEB_NET_OK) {
278 return nullptr;
279 }
280 OH_LOG_INFO(LOG_APP, "OH_ArkWebSchemeHandler_SetOnRequestStart service_worker %{public}d", ret);
281
282 ret = OH_ArkWebSchemeHandler_SetOnRequestStop(g_scheme_handler_for_service_worker, OnURLRequestStopForSW);
283 if (ret != ARKWEB_NET_OK) {
284 return nullptr;
285 }
286 OH_LOG_INFO(LOG_APP, "OH_ArkWebSchemeHandler_SetOnRequestStop service_worker %{public}d", ret);
287
288 bool isSuccess1 = false;
289 bool isSuccess2 = false;
290
291 // 设置SchemeHandler到内核.
292 isSuccess1 = OH_ArkWeb_SetSchemeHandler("custom", "scheme-handler", g_schemeHandler);
293 isSuccess2 = OH_ArkWebServiceWorker_SetSchemeHandler("custom", g_scheme_handler_for_service_worker);
294
295 OH_LOG_INFO(LOG_APP, "OH_ArkWeb_SetSchemeHandler");
296 OH_LOG_INFO(LOG_APP, "OH_ArkWebServiceWorker_SetSchemeHandler");
297
298 napi_value result;
299
300 if (isSuccess1 && isSuccess2) {
301 napi_create_int32(env, 0, &result);
302 } else {
303 napi_create_int32(env, -1, &result);
304 }
305
306 return result;
307 }
308
InitResourceManager(napi_env env,napi_callback_info info)309 static napi_value InitResourceManager(napi_env env, napi_callback_info info)
310 {
311 size_t argc = 2;
312 napi_value argv[2] = {nullptr};
313 napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr);
314 g_resourceManager = OH_ResourceManager_InitNativeResourceManager(env, argv[0]);
315 OH_LOG_INFO(LOG_APP, "InitResourceManager");
316
317 return nullptr;
318 }
319
GetUrl(napi_env env,napi_callback_info info)320 static napi_value GetUrl(napi_env env, napi_callback_info info)
321 {
322 napi_value result;
323 if (testUrl == "custom://www.example.com/isolated_script.js") {
324 napi_create_int32(env, 0, &result);
325 } else {
326 napi_create_int32(env, -1, &result);
327 }
328 return result;
329 }
330
GetMethod(napi_env env,napi_callback_info info)331 static napi_value GetMethod(napi_env env, napi_callback_info info)
332 {
333 napi_value result;
334 if (testMethod == "GET") {
335 napi_create_int32(env, 0, &result);
336 } else {
337 napi_create_int32(env, -1, &result);
338 }
339 return result;
340 }
341
GetHttpBodyStream(napi_env env,napi_callback_info info)342 static napi_value GetHttpBodyStream(napi_env env, napi_callback_info info)
343 {
344 napi_value result;
345 if (testGetHttpBodyStream) {
346 napi_create_int32(env, 0, &result);
347 } else {
348 napi_create_int32(env, -1, &result);
349 }
350 return result;
351 }
352
GetHeaderListSize(napi_env env,napi_callback_info info)353 static napi_value GetHeaderListSize(napi_env env, napi_callback_info info)
354 {
355 napi_value result;
356 if (testHeaderSize != 0) {
357 napi_create_int32(env, 0, &result);
358 } else {
359 napi_create_int32(env, -1, &result);
360 }
361 return result;
362 }
363
GetHeader(napi_env env,napi_callback_info info)364 static napi_value GetHeader(napi_env env, napi_callback_info info)
365 {
366 napi_value result;
367 if (testHasHeader) {
368 napi_create_int32(env, 0, &result);
369 } else {
370 napi_create_int32(env, -1, &result);
371 }
372 return result;
373 }
374
GetRef(napi_env env,napi_callback_info info)375 static napi_value GetRef(napi_env env, napi_callback_info info)
376 {
377 napi_value result;
378 if (testRef == "") {
379 napi_create_int32(env, 0, &result);
380 } else {
381 napi_create_int32(env, -1, &result);
382 }
383 return result;
384 }
385
DestroyHeaderList(napi_env env,napi_callback_info info)386 static napi_value DestroyHeaderList(napi_env env, napi_callback_info info)
387 {
388 napi_value result;
389 if (testDestroyHeaderList) {
390 napi_create_int32(env, 0, &result);
391 } else {
392 napi_create_int32(env, -1, &result);
393 }
394 return result;
395 }
396
HasGesture(napi_env env,napi_callback_info info)397 static napi_value HasGesture(napi_env env, napi_callback_info info)
398 {
399 napi_value result;
400 if (!testHasGesture) {
401 napi_create_int32(env, 0, &result);
402 } else {
403 napi_create_int32(env, -1, &result);
404 }
405 return result;
406 }
407
IsMainFrame(napi_env env,napi_callback_info info)408 static napi_value IsMainFrame(napi_env env, napi_callback_info info)
409 {
410 napi_value result;
411 if (!testIsMainFrame) {
412 napi_create_int32(env, 0, &result);
413 } else {
414 napi_create_int32(env, -1, &result);
415 }
416 return result;
417 }
418
IsRedirect(napi_env env,napi_callback_info info)419 static napi_value IsRedirect(napi_env env, napi_callback_info info)
420 {
421 napi_value result;
422 if (!testIsRedirect) {
423 napi_create_int32(env, 0, &result);
424 } else {
425 napi_create_int32(env, -1, &result);
426 }
427 return result;
428 }
429
SchemeHandlerGetUserData(napi_env env,napi_callback_info info)430 static napi_value SchemeHandlerGetUserData(napi_env env, napi_callback_info info)
431 {
432 napi_value result;
433 if (testSchemeHandlerGetUserData) {
434 napi_create_int32(env, 0, &result);
435 } else {
436 napi_create_int32(env, -1, &result);
437 }
438 return result;
439 }
440
SchemeHandlerSetUserData(napi_env env,napi_callback_info info)441 static napi_value SchemeHandlerSetUserData(napi_env env, napi_callback_info info)
442 {
443 napi_value result;
444 if (testSchemeHandlerSetUserData == 0) {
445 napi_create_int32(env, 0, &result);
446 } else {
447 napi_create_int32(env, -1, &result);
448 }
449 return result;
450 }
451
ResourceRequestGetUserData(napi_env env,napi_callback_info info)452 static napi_value ResourceRequestGetUserData(napi_env env, napi_callback_info info)
453 {
454 napi_value result;
455 if (testResourceRequestGetUserData) {
456 napi_create_int32(env, 0, &result);
457 } else {
458 napi_create_int32(env, -1, &result);
459 }
460 return result;
461 }
462
ResourceRequestSetUserData(napi_env env,napi_callback_info info)463 static napi_value ResourceRequestSetUserData(napi_env env, napi_callback_info info)
464 {
465 napi_value result;
466 if (testResourceRequestSetUserData == 0) {
467 napi_create_int32(env, 0, &result);
468 } else {
469 napi_create_int32(env, -1, &result);
470 }
471 return result;
472 }
473
ResourceRequestDestroy(napi_env env,napi_callback_info info)474 static napi_value ResourceRequestDestroy(napi_env env, napi_callback_info info)
475 {
476 napi_value result;
477 if (testResourceRequestDestroy == 0) {
478 napi_create_int32(env, 0, &result);
479 } else {
480 napi_create_int32(env, -1, &result);
481 }
482 return result;
483 }
484
ResponseGetUrl(napi_env env,napi_callback_info info)485 static napi_value ResponseGetUrl(napi_env env, napi_callback_info info)
486 {
487 napi_value result;
488 if (testResponseUrl == "") {
489 napi_create_int32(env, 0, &result);
490 } else {
491 napi_create_int32(env, -1, &result);
492 }
493 return result;
494 }
495
ResponseGetError(napi_env env,napi_callback_info info)496 static napi_value ResponseGetError(napi_env env, napi_callback_info info)
497 {
498 napi_value result;
499 if (testResponseError == 0) {
500 napi_create_int32(env, 0, &result);
501 } else {
502 napi_create_int32(env, -1, &result);
503 }
504 return result;
505 }
506
ResponseGetStatus(napi_env env,napi_callback_info info)507 static napi_value ResponseGetStatus(napi_env env, napi_callback_info info)
508 {
509 napi_value result;
510 if (testResponseStatus == NOT_FOUND || testResponseStatus == OK) {
511 napi_create_int32(env, 0, &result);
512 } else {
513 napi_create_int32(env, -1, &result);
514 }
515 return result;
516 }
517
ResponseGetStatusText(napi_env env,napi_callback_info info)518 static napi_value ResponseGetStatusText(napi_env env, napi_callback_info info)
519 {
520 napi_value result;
521 // 与SetStatusText对应
522 if (testResponseStatusText == "not found" || testResponseStatusText == "ok") {
523 napi_create_int32(env, 0, &result);
524 } else {
525 napi_create_int32(env, -1, &result);
526 }
527 return result;
528 }
529
ResponseGetMimeType(napi_env env,napi_callback_info info)530 static napi_value ResponseGetMimeType(napi_env env, napi_callback_info info)
531 {
532 napi_value result;
533 if (testResponseMimeType == "text/javascript") {
534 napi_create_int32(env, 0, &result);
535 } else {
536 napi_create_int32(env, -1, &result);
537 }
538 return result;
539 }
540
ResponseGetCharSet(napi_env env,napi_callback_info info)541 static napi_value ResponseGetCharSet(napi_env env, napi_callback_info info)
542 {
543 napi_value result;
544 if (testResponseCharSet == "UTF-8") {
545 napi_create_int32(env, 0, &result);
546 } else {
547 napi_create_int32(env, -1, &result);
548 }
549 return result;
550 }
551
ResponseGetHeaderByName(napi_env env,napi_callback_info info)552 static napi_value ResponseGetHeaderByName(napi_env env, napi_callback_info info)
553 {
554 napi_value result;
555 if (testResponseHost == "") {
556 napi_create_int32(env, 0, &result);
557 } else {
558 napi_create_int32(env, -1, &result);
559 }
560 return result;
561 }
562
ResponseSetUrl(napi_env env,napi_callback_info info)563 static napi_value ResponseSetUrl(napi_env env, napi_callback_info info)
564 {
565 napi_value result;
566 if (testResponseSetUrl == 0) {
567 napi_create_int32(env, 0, &result);
568 } else {
569 napi_create_int32(env, -1, &result);
570 }
571 return result;
572 }
573
ResponseSetError(napi_env env,napi_callback_info info)574 static napi_value ResponseSetError(napi_env env, napi_callback_info info)
575 {
576 napi_value result;
577 if (testResponseSetError == 0) {
578 napi_create_int32(env, 0, &result);
579 } else {
580 napi_create_int32(env, -1, &result);
581 }
582 return result;
583 }
584
ResponseSetStatus(napi_env env,napi_callback_info info)585 static napi_value ResponseSetStatus(napi_env env, napi_callback_info info)
586 {
587 napi_value result;
588 if (testResponseSetStatus == 0) {
589 napi_create_int32(env, 0, &result);
590 } else {
591 napi_create_int32(env, -1, &result);
592 }
593 return result;
594 }
595
ResponseSetStatusText(napi_env env,napi_callback_info info)596 static napi_value ResponseSetStatusText(napi_env env, napi_callback_info info)
597 {
598 napi_value result;
599 if (testResponseSetStatusText == 0) {
600 napi_create_int32(env, 0, &result);
601 } else {
602 napi_create_int32(env, -1, &result);
603 }
604 return result;
605 }
606
ResponseSetMimeType(napi_env env,napi_callback_info info)607 static napi_value ResponseSetMimeType(napi_env env, napi_callback_info info)
608 {
609 napi_value result;
610 if (testResponseSetMimeType == 0) {
611 napi_create_int32(env, 0, &result);
612 } else {
613 napi_create_int32(env, -1, &result);
614 }
615 return result;
616 }
617
ResponseSetCharSet(napi_env env,napi_callback_info info)618 static napi_value ResponseSetCharSet(napi_env env, napi_callback_info info)
619 {
620 napi_value result;
621 if (testResponseSetCharSet == 0) {
622 napi_create_int32(env, 0, &result);
623 } else {
624 napi_create_int32(env, -1, &result);
625 }
626 return result;
627 }
628
ResponseSetHeaderByName(napi_env env,napi_callback_info info)629 static napi_value ResponseSetHeaderByName(napi_env env, napi_callback_info info)
630 {
631 napi_value result;
632 if (testResponseSetHost == 0) {
633 napi_create_int32(env, 0, &result);
634 } else {
635 napi_create_int32(env, -1, &result);
636 }
637 return result;
638 }
639
CreateResponse(napi_env env,napi_callback_info info)640 static napi_value CreateResponse(napi_env env, napi_callback_info info)
641 {
642 napi_value result;
643 OH_LOG_ERROR(LOG_APP, "OH_ArkWeb_CreateResponse napi_value ");
644
645 ArkWeb_Response* testResponse;
646 try {
647 OH_ArkWeb_CreateResponse(&testResponse);
648 OH_ArkWeb_DestroyResponse(testResponse);
649 OH_LOG_INFO(LOG_APP, "OH_ArkWeb_CreateResponse create");
650 napi_create_int32(env, 0, &result);
651 } catch (std::exception& e) {
652 OH_LOG_ERROR(LOG_APP, "OH_ArkWeb_CreateResponse ERROR %{public}s", e.what());
653 napi_create_int32(env, -1, &result);
654 }
655 return result;
656 }
657
GetResourceType(napi_env env,napi_callback_info info)658 static napi_value GetResourceType(napi_env env, napi_callback_info info)
659 {
660 napi_value result;
661 if (testResourceType != DEFAULT_TYPE) {
662 napi_create_int32(env, 0, &result);
663 } else {
664 napi_create_int32(env, -1, &result);
665 }
666 return result;
667 }
668
GetFrameUrl(napi_env env,napi_callback_info info)669 static napi_value GetFrameUrl(napi_env env, napi_callback_info info)
670 {
671 napi_value result;
672 if (testFrameUrl != "test") {
673 napi_create_int32(env, 0, &result);
674 } else {
675 napi_create_int32(env, -1, &result);
676 }
677 return result;
678 }
679
680
681
682 EXTERN_C_START
Init(napi_env env,napi_value exports)683 static napi_value Init(napi_env env, napi_value exports)
684 {
685 napi_property_descriptor desc[] = {
686 {"setSchemeHandler", nullptr, SetSchemeHandler, nullptr, nullptr, nullptr, napi_default, nullptr},
687 {"registerCustomSchemes", nullptr, RegisterCustomSchemes, nullptr, nullptr, nullptr, napi_default, nullptr},
688 {"clearSchemeHandlers", nullptr, ClearSchemeHandlers, nullptr, nullptr, nullptr, napi_default, nullptr},
689 {"serviceWorkerClearSchemeHandlers", nullptr, ServiceWorkerClearSchemeHandlers, nullptr, nullptr, nullptr,
690 napi_default, nullptr},
691 {"destroySchemeHandler", nullptr, DestroySchemeHandler, nullptr, nullptr, nullptr, napi_default, nullptr},
692 {"getNativeAPI", nullptr, GetNativeAPI, nullptr, nullptr, nullptr, napi_default, nullptr},
693 {"initResourceManager", nullptr, InitResourceManager, nullptr, nullptr, nullptr, napi_default, nullptr},
694 {"getUrl", nullptr, GetUrl, nullptr, nullptr, nullptr, napi_default, nullptr},
695 {"getMethod", nullptr, GetMethod, nullptr, nullptr, nullptr, napi_default, nullptr},
696 {"getRef", nullptr, GetRef, nullptr, nullptr, nullptr, napi_default, nullptr},
697 {"getHttpBodyStream", nullptr, GetHttpBodyStream, nullptr, nullptr, nullptr, napi_default, nullptr},
698 {"getHeaderListSize", nullptr, GetHeaderListSize, nullptr, nullptr, nullptr, napi_default, nullptr},
699 {"getHeader", nullptr, GetHeader, nullptr, nullptr, nullptr, napi_default, nullptr},
700 {"destroyHeaderList", nullptr, DestroyHeaderList, nullptr, nullptr, nullptr, napi_default, nullptr},
701 {"hasGesture", nullptr, HasGesture, nullptr, nullptr, nullptr, napi_default, nullptr},
702 {"isMainFrame", nullptr, IsMainFrame, nullptr, nullptr, nullptr, napi_default, nullptr},
703 {"isRedirect", nullptr, IsRedirect, nullptr, nullptr, nullptr, napi_default, nullptr},
704 {"schemeHandlerGetUserData", nullptr, SchemeHandlerGetUserData, nullptr, nullptr, nullptr, napi_default,
705 nullptr},
706 {"schemeHandlerSetUserData", nullptr, SchemeHandlerSetUserData, nullptr, nullptr, nullptr, napi_default,
707 nullptr},
708 {"resourceRequestGetUserData", nullptr, ResourceRequestGetUserData, nullptr, nullptr, nullptr, napi_default,
709 nullptr},
710 {"resourceRequestSetUserData", nullptr, ResourceRequestSetUserData, nullptr, nullptr, nullptr, napi_default,
711 nullptr},
712 {"resourceRequestDestroy", nullptr, ResourceRequestDestroy, nullptr, nullptr, nullptr, napi_default, nullptr},
713 {"responseGetUrl", nullptr, ResponseGetUrl, nullptr, nullptr, nullptr, napi_default, nullptr},
714 {"responseGetError", nullptr, ResponseGetError, nullptr, nullptr, nullptr, napi_default, nullptr},
715 {"responseGetStatus", nullptr, ResponseGetStatus, nullptr, nullptr, nullptr, napi_default, nullptr},
716 {"responseGetStatusText", nullptr, ResponseGetStatusText, nullptr, nullptr, nullptr, napi_default, nullptr},
717 {"responseGetMimeType", nullptr, ResponseGetMimeType, nullptr, nullptr, nullptr, napi_default, nullptr},
718 {"responseGetCharset", nullptr, ResponseGetCharSet, nullptr, nullptr, nullptr, napi_default, nullptr},
719 {"responseGetHeaderByName", nullptr, ResponseGetHeaderByName, nullptr, nullptr, nullptr, napi_default, nullptr},
720 {"responseSetUrl", nullptr, ResponseSetUrl, nullptr, nullptr, nullptr, napi_default, nullptr},
721 {"responseSetError", nullptr, ResponseSetError, nullptr, nullptr, nullptr, napi_default, nullptr},
722 {"responseSetStatus", nullptr, ResponseSetStatus, nullptr, nullptr, nullptr, napi_default, nullptr},
723 {"responseSetStatusText", nullptr, ResponseSetStatusText, nullptr, nullptr, nullptr, napi_default, nullptr},
724 {"responseSetMimeType", nullptr, ResponseSetMimeType, nullptr, nullptr, nullptr, napi_default, nullptr},
725 {"responseSetCharset", nullptr, ResponseSetCharSet, nullptr, nullptr, nullptr, napi_default, nullptr},
726 {"responseSetHeaderByName", nullptr, ResponseSetHeaderByName, nullptr, nullptr, nullptr, napi_default, nullptr},
727 {"createResponse", nullptr, CreateResponse, nullptr, nullptr, nullptr, napi_default, nullptr},
728 {"getResourceType", nullptr, GetResourceType, nullptr, nullptr, nullptr, napi_default, nullptr},
729 {"getFrameUrl", nullptr, GetFrameUrl, nullptr, nullptr, nullptr, napi_default, nullptr}
730 };
731 napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc);
732 return exports;
733 }
734 EXTERN_C_END
735
736 static napi_module demoModule = {
737 .nm_version = 1,
738 .nm_flags = 0,
739 .nm_filename = nullptr,
740 .nm_register_func = Init,
741 .nm_modname = "entry",
742 .nm_priv = ((void *)0),
743 .reserved = {0},
744 };
745
RegisterEntryModule(void)746 extern "C" __attribute__((constructor)) void RegisterEntryModule(void) { napi_module_register(&demoModule); }
747
748