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 "hilog/log.h"
17 #include "napi/native_api.h"
18 #include "rawfile_request.h"
19 #include "rawfile/raw_file_manager.h"
20 #include "web/arkweb_scheme_handler.h"
21 #include "web/arkweb_net_error_list.h"
22 #include <bits/alltypes.h>
23 #include <web/arkweb_interface.h>
24
25 #undef LOG_TAG
26 #define LOG_TAG "ss-handler"
27
28 ArkWeb_SchemeHandler *g_schemeHandler;
29 ArkWeb_SchemeHandler *g_schemeHandlerForSW;
30 NativeResourceManager *g_resourceManager;
31
32 int32_t testReleaseString = -1;
33 int32_t testReleaseByteArray = -1;
34 int32_t testDestroyHttpBodyStream = -1;
35 int32_t testSetHeaderByName = -1;
36
37 int32_t testResourceHandler = -1;
38 int32_t testResponse = -1;
39 std::string testResourceRequest("test");
40 int32_t testRequestHeaderList = -1;
41 int32_t testHttpBodyStream = -1;
42 int32_t testHttpBodyStreamInitCallback = -1;
43 int32_t testHttpBodyStreamReadCallback = -1;
44 int32_t testRegisterCustom = -1;
45
46 // 注册三方协议的配置,需要在Web内核初始化之前调用,否则会注册失败。
RegisterCustomSchemes(napi_env env,napi_callback_info info)47 static napi_value RegisterCustomSchemes(napi_env env, napi_callback_info info)
48 {
49 OH_LOG_INFO(LOG_APP, "register custom schemes");
50 testRegisterCustom = OH_ArkWeb_RegisterCustomSchemes("custom", ARKWEB_SCHEME_OPTION_DISPLAY_ISOLATED
51 | ARKWEB_SCHEME_OPTION_FETCH_ENABLED | ARKWEB_SCHEME_OPTION_CORS_ENABLED | ARKWEB_SCHEME_OPTION_CSP_BYPASSING);
52
53 return nullptr;
54 }
55
56 // 请求开始的回调,在该函数中我们创建一个RawfileRequest来实现对Web内核请求的拦截。
OnURLRequestStart(const ArkWeb_SchemeHandler * schemeHandler,ArkWeb_ResourceRequest * resourceRequest,const ArkWeb_ResourceHandler * resourceHandler,bool * intercept)57 void OnURLRequestStart(const ArkWeb_SchemeHandler *schemeHandler, ArkWeb_ResourceRequest *resourceRequest,
58 const ArkWeb_ResourceHandler *resourceHandler, bool *intercept)
59 {
60 *intercept = true;
61 RawfileRequest *request = new RawfileRequest(resourceRequest, resourceHandler, g_resourceManager);
62
63 OH_ArkWebResourceRequest_SetUserData(resourceRequest, request);
64 request->Start();
65
66 testReleaseString = request->releaseString();
67 testReleaseByteArray = request->releaseByteArray();
68 testSetHeaderByName = request->setHeaderByName();
69
70 testHttpBodyStream = request->haveBodyStream();
71 testRequestHeaderList = request->getRequestHeaderList();
72 testResourceRequest = request->reqUrl();
73 testHttpBodyStreamInitCallback = request->isInit();
74 testHttpBodyStreamReadCallback = request->isRead();
75
76 OH_ArkWebSchemeHandler_GetUserData(schemeHandler);
77 }
78
79 // 请求结束的回调,在该函数中我们需要标记RawfileRequest已经结束了,内部不应该再使用ResourceHandler。
OnURLRequestStop(const ArkWeb_SchemeHandler * schemeHandler,const ArkWeb_ResourceRequest * request)80 void OnURLRequestStop(const ArkWeb_SchemeHandler *schemeHandler, const ArkWeb_ResourceRequest *request)
81 {
82 if (!request) {
83 OH_LOG_ERROR(LOG_APP, "on request stop request is nullptr.");
84 return;
85 }
86
87 RawfileRequest *rawfileRequest = (RawfileRequest *)OH_ArkWebResourceRequest_GetUserData(request);
88 if (rawfileRequest) {
89 rawfileRequest->Stop();
90 testDestroyHttpBodyStream = rawfileRequest->destroyHttpBodyStream();
91
92 testResponse = rawfileRequest->haveResponse();
93 testResourceHandler = rawfileRequest->haveResourceHandler();
94 }
95
96 OH_ArkWebSchemeHandler_SetUserData(g_schemeHandler, rawfileRequest);
97 OH_ArkWebServiceWorker_ClearSchemeHandlers();
98 }
99
100 // 设置SchemeHandler。
SetSchemeHandler(napi_env env,napi_callback_info info)101 static napi_value SetSchemeHandler(napi_env env, napi_callback_info info)
102 {
103 OH_LOG_INFO(LOG_APP, "set scheme handler");
104 napi_value result;
105
106 OH_ArkWeb_CreateSchemeHandler(&g_schemeHandler);
107 OH_ArkWeb_CreateSchemeHandler(&g_schemeHandlerForSW);
108 OH_ArkWebSchemeHandler_SetOnRequestStart(g_schemeHandler, OnURLRequestStart);
109
110 OH_ArkWebSchemeHandler_SetOnRequestStop(g_schemeHandler, OnURLRequestStop);
111
112 OH_ArkWebSchemeHandler_SetOnRequestStart(g_schemeHandlerForSW, OnURLRequestStart);
113 OH_ArkWebSchemeHandler_SetOnRequestStop(g_schemeHandlerForSW, OnURLRequestStop);
114 OH_ArkWeb_SetSchemeHandler("custom", "scheme-handler", g_schemeHandler);
115 OH_ArkWebServiceWorker_SetSchemeHandler("custom", g_schemeHandlerForSW);
116
117 OH_ArkWeb_SetSchemeHandler("http", "scheme-handler", g_schemeHandler);
118 OH_ArkWeb_SetSchemeHandler("https", "scheme-handler", g_schemeHandler);
119 OH_ArkWebServiceWorker_SetSchemeHandler("https", g_schemeHandlerForSW);
120
121 napi_create_int32(env, 0, &result);
122 return result;
123 }
124
InitResourceManager(napi_env env,napi_callback_info info)125 static napi_value InitResourceManager(napi_env env, napi_callback_info info)
126 {
127 size_t argc = 2;
128 napi_value argv[2] = {nullptr};
129 napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr);
130 g_resourceManager = OH_ResourceManager_InitNativeResourceManager(env, argv[0]);
131 return nullptr;
132 }
133
GetNativeAPI(napi_env env,napi_callback_info info)134 static napi_value GetNativeAPI(napi_env env, napi_callback_info info)
135 {
136 napi_value result;
137 OH_LOG_INFO(LOG_APP, "OH_ArkWeb_GetNativeAPI");
138 ArkWeb_AnyNativeAPI* api = OH_ArkWeb_GetNativeAPI(ARKWEB_NATIVE_COMPONENT);
139 size_t api_size = api->size;
140 napi_create_int32(env, api_size, &result);
141
142 return result;
143 }
144
ReleaseString(napi_env env,napi_callback_info info)145 static napi_value ReleaseString(napi_env env, napi_callback_info info)
146 {
147 napi_value result;
148 OH_LOG_INFO(LOG_APP, "OH_ArkWeb_ReleaseString");
149
150 if (testReleaseString == 0) {
151 napi_create_int32(env, 0, &result);
152 } else {
153 napi_create_int32(env, -1, &result);
154 }
155 return result;
156 }
157
ReleaseByteArray(napi_env env,napi_callback_info info)158 static napi_value ReleaseByteArray(napi_env env, napi_callback_info info)
159 {
160 napi_value result;
161 OH_LOG_INFO(LOG_APP, "OH_ArkWeb_ReleaseByteArray");
162
163 if (testReleaseByteArray == 0) {
164 napi_create_int32(env, 0, &result);
165 } else {
166 napi_create_int32(env, -1, &result);
167 }
168 return result;
169 }
170
DestroyHttpBodyStream(napi_env env,napi_callback_info info)171 static napi_value DestroyHttpBodyStream(napi_env env, napi_callback_info info)
172 {
173 napi_value result;
174 OH_LOG_INFO(LOG_APP, "OH_ArkWebResourceRequest_DestroyHttpBodyStream");
175
176 if (testDestroyHttpBodyStream == 0) {
177 napi_create_int32(env, 0, &result);
178 } else {
179 napi_create_int32(env, -1, &result);
180 }
181 return result;
182 }
183
SetHeaderByName(napi_env env,napi_callback_info info)184 static napi_value SetHeaderByName(napi_env env, napi_callback_info info)
185 {
186 napi_value result;
187 OH_LOG_INFO(LOG_APP, "OH_ArkWebResponse_SetHeaderByName");
188
189 if (testSetHeaderByName == 0) {
190 napi_create_int32(env, 0, &result);
191 } else {
192 napi_create_int32(env, -1, &result);
193 }
194 return result;
195 }
196
ResourceHandler(napi_env env,napi_callback_info info)197 static napi_value ResourceHandler(napi_env env, napi_callback_info info)
198 {
199 napi_value result;
200 OH_LOG_INFO(LOG_APP, "ArkWeb_ResourceHandler");
201
202 if (testResourceHandler == 0) {
203 napi_create_int32(env, 0, &result);
204 } else {
205 napi_create_int32(env, -1, &result);
206 }
207 return result;
208 }
209
Response(napi_env env,napi_callback_info info)210 static napi_value Response(napi_env env, napi_callback_info info)
211 {
212 napi_value result;
213 OH_LOG_INFO(LOG_APP, "ArkWeb_Response");
214
215 if (testResponse == 0) {
216 napi_create_int32(env, 0, &result);
217 } else {
218 napi_create_int32(env, -1, &result);
219 }
220 return result;
221 }
222
ResourceRequest(napi_env env,napi_callback_info info)223 static napi_value ResourceRequest(napi_env env, napi_callback_info info)
224 {
225 napi_value result;
226 OH_LOG_INFO(LOG_APP, "ArkWeb_ResourceRequest ");
227
228 if (testResourceRequest != "test") {
229 napi_create_int32(env, 0, &result);
230 } else {
231 napi_create_int32(env, -1, &result);
232 }
233 return result;
234 }
235
RequestHeaderList(napi_env env,napi_callback_info info)236 static napi_value RequestHeaderList(napi_env env, napi_callback_info info)
237 {
238 napi_value result;
239 OH_LOG_INFO(LOG_APP, "ArkWeb_RequestHeaderList ");
240
241 if (testRequestHeaderList != -1) {
242 napi_create_int32(env, 0, &result);
243 } else {
244 napi_create_int32(env, -1, &result);
245 }
246 return result;
247 }
248
HttpBodyStream(napi_env env,napi_callback_info info)249 static napi_value HttpBodyStream(napi_env env, napi_callback_info info)
250 {
251 napi_value result;
252 OH_LOG_INFO(LOG_APP, "ArkWeb_HttpBodyStream ");
253
254 if (testHttpBodyStream == 0) {
255 napi_create_int32(env, 0, &result);
256 } else {
257 napi_create_int32(env, -1, &result);
258 }
259 return result;
260 }
261
HttpBodyStreamInitCallback(napi_env env,napi_callback_info info)262 static napi_value HttpBodyStreamInitCallback(napi_env env, napi_callback_info info)
263 {
264 napi_value result;
265 OH_LOG_INFO(LOG_APP, "ArkWeb_HttpBodyStreamInitCallback");
266
267 if (testHttpBodyStreamInitCallback == 0) {
268 napi_create_int32(env, 0, &result);
269 } else {
270 napi_create_int32(env, -1, &result);
271 }
272 return result;
273 }
274
HttpBodyStreamReadCallback(napi_env env,napi_callback_info info)275 static napi_value HttpBodyStreamReadCallback(napi_env env, napi_callback_info info)
276 {
277 napi_value result;
278 OH_LOG_INFO(LOG_APP, "ArkWeb_HttpBodyStreamReadCallback ");
279
280 if (testHttpBodyStreamReadCallback == 0) {
281 napi_create_int32(env, 0, &result);
282 } else {
283 napi_create_int32(env, -1, &result);
284 }
285 return result;
286 }
287
GetNativeApiFalse(napi_env env,napi_callback_info info)288 static napi_value GetNativeApiFalse(napi_env env, napi_callback_info info)
289 {
290 napi_value result;
291 ArkWeb_AnyNativeAPI* api = OH_ArkWeb_GetNativeAPI(ArkWeb_NativeAPIVariantKind(5));
292 if (!api) {
293 OH_LOG_INFO(LOG_APP, "OH_ArkWeb_GetNativeAPI nullptr");
294 napi_create_int32(env, 0, &result);
295 } else {
296 napi_create_int32(env, -1, &result);
297 }
298 return result;
299 }
300
RequestHeaderListFalse(napi_env env,napi_callback_info info)301 static napi_value RequestHeaderListFalse(napi_env env, napi_callback_info info)
302 {
303 napi_value result;
304 int32_t headerSize = OH_ArkWebRequestHeaderList_GetSize(nullptr);
305 napi_create_int32(env, headerSize, &result);
306 return result;
307 }
308
HttpBodyStreamSetUserDataFalse(napi_env env,napi_callback_info info)309 static napi_value HttpBodyStreamSetUserDataFalse(napi_env env, napi_callback_info info)
310 {
311 napi_value result;
312 int32_t isTest = OH_ArkWebHttpBodyStream_SetUserData(nullptr, nullptr);
313 napi_create_int32(env, isTest, &result);
314 return result;
315 }
316
HttpBodyStreamSetReadCallbackFalse(napi_env env,napi_callback_info info)317 static napi_value HttpBodyStreamSetReadCallbackFalse(napi_env env, napi_callback_info info)
318 {
319 napi_value result;
320 int32_t isTest = OH_ArkWebHttpBodyStream_SetReadCallback(nullptr, nullptr);
321 napi_create_int32(env, isTest, &result);
322 return result;
323 }
324
HttpBodyStreamInitFalse(napi_env env,napi_callback_info info)325 static napi_value HttpBodyStreamInitFalse(napi_env env, napi_callback_info info)
326 {
327 napi_value result;
328 int32_t isTest = OH_ArkWebHttpBodyStream_Init(nullptr, nullptr);
329 napi_create_int32(env, isTest, &result);
330 return result;
331 }
332
333
HttpBodyStreamIsChunkedFalse(napi_env env,napi_callback_info info)334 static napi_value HttpBodyStreamIsChunkedFalse(napi_env env, napi_callback_info info)
335 {
336 napi_value result;
337
338 bool isTestChunked = OH_ArkWebHttpBodyStream_IsChunked(nullptr);
339 if (!isTestChunked) {
340 napi_create_int32(env, 0, &result);
341 } else {
342 napi_create_int32(env, -1, &result);
343 }
344 return result;
345 }
346
HttpBodyStreamIsEofFalse(napi_env env,napi_callback_info info)347 static napi_value HttpBodyStreamIsEofFalse(napi_env env, napi_callback_info info)
348 {
349 napi_value result;
350
351 bool isTestEof = OH_ArkWebHttpBodyStream_IsEof(nullptr);
352 if (!isTestEof) {
353 napi_create_int32(env, 0, &result);
354 } else {
355 napi_create_int32(env, -1, &result);
356 }
357 return result;
358 }
359
HttpBodyStreamIsInMemoryFalse(napi_env env,napi_callback_info info)360 static napi_value HttpBodyStreamIsInMemoryFalse(napi_env env, napi_callback_info info)
361 {
362 napi_value result;
363
364 bool isTestInMemory = OH_ArkWebHttpBodyStream_IsInMemory(nullptr);
365 if (!isTestInMemory) {
366 napi_create_int32(env, 0, &result);
367 } else {
368 napi_create_int32(env, -1, &result);
369 }
370 return result;
371 }
372
ResourceRequestIsRedirectFalse(napi_env env,napi_callback_info info)373 static napi_value ResourceRequestIsRedirectFalse(napi_env env, napi_callback_info info)
374 {
375 napi_value result;
376
377 bool isTestIsRedirect = OH_ArkWebResourceRequest_IsRedirect(nullptr);
378 if (!isTestIsRedirect) {
379 napi_create_int32(env, 0, &result);
380 } else {
381 napi_create_int32(env, -1, &result);
382 }
383 return result;
384 }
385
ResourceRequestIsMainFrameFalse(napi_env env,napi_callback_info info)386 static napi_value ResourceRequestIsMainFrameFalse(napi_env env, napi_callback_info info)
387 {
388 napi_value result;
389
390 bool isTestIsMainFrame = OH_ArkWebResourceRequest_IsMainFrame(nullptr);
391 if (!isTestIsMainFrame) {
392 napi_create_int32(env, 0, &result);
393 } else {
394 napi_create_int32(env, -1, &result);
395 }
396 return result;
397 }
398
ResourceRequestHasGestureFalse(napi_env env,napi_callback_info info)399 static napi_value ResourceRequestHasGestureFalse(napi_env env, napi_callback_info info)
400 {
401 napi_value result;
402
403 bool isTestHasGesture = OH_ArkWebResourceRequest_HasGesture(nullptr);
404 if (!isTestHasGesture) {
405 napi_create_int32(env, 0, &result);
406 } else {
407 napi_create_int32(env, -1, &result);
408 }
409 return result;
410 }
411
RegisterCustomSchemesTrue(napi_env env,napi_callback_info info)412 static napi_value RegisterCustomSchemesTrue(napi_env env, napi_callback_info info)
413 {
414 napi_value result;
415 napi_create_int32(env, testRegisterCustom, &result);
416 return result;
417 }
418
RegisterCustomSchemesInvalid(napi_env env,napi_callback_info info)419 static napi_value RegisterCustomSchemesInvalid(napi_env env, napi_callback_info info)
420 {
421 napi_value result;
422 int32_t isTest = OH_ArkWeb_RegisterCustomSchemes(nullptr, -2);
423 napi_create_int32(env, isTest, &result);
424 return result;
425 }
426
RegisterCustomSchemesError(napi_env env,napi_callback_info info)427 static napi_value RegisterCustomSchemesError(napi_env env, napi_callback_info info)
428 {
429 napi_value result;
430 int32_t isTest = OH_ArkWeb_RegisterCustomSchemes("test", -2);
431 napi_create_int32(env, isTest, &result);
432 return result;
433 }
434
ServiceWorkerSetSchemeHandlerFalse(napi_env env,napi_callback_info info)435 static napi_value ServiceWorkerSetSchemeHandlerFalse(napi_env env, napi_callback_info info)
436 {
437 napi_value result;
438 bool isTest = OH_ArkWebServiceWorker_SetSchemeHandler(nullptr, nullptr);
439 if (!isTest) {
440 napi_create_int32(env, 0, &result);
441 } else {
442 napi_create_int32(env, -1, &result);
443 }
444 return result;
445 }
446
SetSchemeHandlerFalse(napi_env env,napi_callback_info info)447 static napi_value SetSchemeHandlerFalse(napi_env env, napi_callback_info info)
448 {
449 napi_value result;
450 bool isTest = OH_ArkWeb_SetSchemeHandler(nullptr, nullptr, nullptr);
451 if (!isTest) {
452 napi_create_int32(env, 0, &result);
453 } else {
454 napi_create_int32(env, -1, &result);
455 }
456 return result;
457 }
458
ClearSchemeHandlersFalse(napi_env env,napi_callback_info info)459 static napi_value ClearSchemeHandlersFalse(napi_env env, napi_callback_info info)
460 {
461 napi_value result;
462 int32_t isTest = OH_ArkWeb_ClearSchemeHandlers(nullptr);
463 napi_create_int32(env, isTest, &result);
464 return result;
465 }
466
SchemeHandlerSetUserDataFalse(napi_env env,napi_callback_info info)467 static napi_value SchemeHandlerSetUserDataFalse(napi_env env, napi_callback_info info)
468 {
469 napi_value result;
470 int32_t isTest = OH_ArkWebSchemeHandler_SetUserData(nullptr, nullptr);
471 napi_create_int32(env, isTest, &result);
472 return result;
473 }
474
SetOnRequestStartFalse(napi_env env,napi_callback_info info)475 static napi_value SetOnRequestStartFalse(napi_env env, napi_callback_info info)
476 {
477 napi_value result;
478 int32_t isTest = OH_ArkWebSchemeHandler_SetOnRequestStart(nullptr, nullptr);
479 napi_create_int32(env, isTest, &result);
480 return result;
481 }
482
SetOnRequestStopFalse(napi_env env,napi_callback_info info)483 static napi_value SetOnRequestStopFalse(napi_env env, napi_callback_info info)
484 {
485 napi_value result;
486 int32_t isTest = OH_ArkWebSchemeHandler_SetOnRequestStop(nullptr, nullptr);
487 napi_create_int32(env, isTest, &result);
488 return result;
489 }
490
ResponseSetUrlFalse(napi_env env,napi_callback_info info)491 static napi_value ResponseSetUrlFalse(napi_env env, napi_callback_info info)
492 {
493 napi_value result;
494 int32_t isTestSetUrl = OH_ArkWebResponse_SetUrl(nullptr, "test");
495 napi_create_int32(env, isTestSetUrl, &result);
496 return result;
497 }
498
ResponseSetErrorFalse(napi_env env,napi_callback_info info)499 static napi_value ResponseSetErrorFalse(napi_env env, napi_callback_info info)
500 {
501 napi_value result;
502 int32_t isTestSetCode = OH_ArkWebResponse_SetError(nullptr, ARKWEB_ERR_CACHE_READ_FAILURE);
503 napi_create_int32(env, isTestSetCode, &result);
504 return result;
505 }
506
507
ResponseSetStatusFalse(napi_env env,napi_callback_info info)508 static napi_value ResponseSetStatusFalse(napi_env env, napi_callback_info info)
509 {
510 napi_value result;
511 int32_t isTestSetCode = OH_ArkWebResponse_SetStatus(nullptr, 0);
512 napi_create_int32(env, isTestSetCode, &result);
513 return result;
514 }
515
ResponseGetStatusFalse(napi_env env,napi_callback_info info)516 static napi_value ResponseGetStatusFalse(napi_env env, napi_callback_info info)
517 {
518 napi_value result;
519 int32_t isTestGetStatus = OH_ArkWebResponse_GetStatus(nullptr);
520 napi_create_int32(env, isTestGetStatus, &result);
521 return result;
522 }
523
ResponseSetStatusTextFalse(napi_env env,napi_callback_info info)524 static napi_value ResponseSetStatusTextFalse(napi_env env, napi_callback_info info)
525 {
526 napi_value result;
527 int32_t isTestSetStatusText = OH_ArkWebResponse_SetStatusText(nullptr, "test");
528 napi_create_int32(env, isTestSetStatusText, &result);
529 return result;
530 }
531
ResponseSetMimeTypeFalse(napi_env env,napi_callback_info info)532 static napi_value ResponseSetMimeTypeFalse(napi_env env, napi_callback_info info)
533 {
534 napi_value result;
535 int32_t isTestSetMimeType = OH_ArkWebResponse_SetMimeType(nullptr, "test");
536 napi_create_int32(env, isTestSetMimeType, &result);
537 return result;
538 }
539
ResponseSetCharsetFalse(napi_env env,napi_callback_info info)540 static napi_value ResponseSetCharsetFalse(napi_env env, napi_callback_info info)
541 {
542 napi_value result;
543 int32_t isTestSetCharset = OH_ArkWebResponse_SetCharset(nullptr, "test");
544 napi_create_int32(env, isTestSetCharset, &result);
545 return result;
546 }
547
SetHeaderByNameNameNull(napi_env env,napi_callback_info info)548 static napi_value SetHeaderByNameNameNull(napi_env env, napi_callback_info info)
549 {
550 napi_value result;
551 ArkWeb_Response* testResponse;
552 OH_ArkWeb_CreateResponse(&testResponse);
553 int32_t isSetHeader = OH_ArkWebResponse_SetHeaderByName(testResponse, nullptr, "test", true);
554 napi_create_int32(env, isSetHeader, &result);
555 return result;
556 }
557
SetHeaderByNameValueNull(napi_env env,napi_callback_info info)558 static napi_value SetHeaderByNameValueNull(napi_env env, napi_callback_info info)
559 {
560 napi_value result;
561 ArkWeb_Response* testResponse;
562 OH_ArkWeb_CreateResponse(&testResponse);
563 int32_t isSetHeader = OH_ArkWebResponse_SetHeaderByName(testResponse, "test", nullptr, true);
564 napi_create_int32(env, isSetHeader, &result);
565 return result;
566 }
567
SetHeaderByNameOverwriteNull(napi_env env,napi_callback_info info)568 static napi_value SetHeaderByNameOverwriteNull(napi_env env, napi_callback_info info)
569 {
570 napi_value result;
571 ArkWeb_Response* testResponse;
572 OH_ArkWeb_CreateResponse(&testResponse);
573 int32_t isSetHeader = OH_ArkWebResponse_SetHeaderByName(testResponse, "test", "test", 3);
574 napi_create_int32(env, isSetHeader, &result);
575 return result;
576 }
577
ResourceHandlerDestroyFalse(napi_env env,napi_callback_info info)578 static napi_value ResourceHandlerDestroyFalse(napi_env env, napi_callback_info info)
579 {
580 napi_value result;
581 int32_t isDestroy = OH_ArkWebResourceHandler_Destroy(nullptr);
582 napi_create_int32(env, isDestroy, &result);
583 return result;
584 }
585
DidReceiveResponseFalse(napi_env env,napi_callback_info info)586 static napi_value DidReceiveResponseFalse(napi_env env, napi_callback_info info)
587 {
588 napi_value result;
589 int32_t isResponse = OH_ArkWebResourceHandler_DidReceiveResponse(nullptr, nullptr);
590 napi_create_int32(env, isResponse, &result);
591 return result;
592 }
593
DidReceiveDataFalse(napi_env env,napi_callback_info info)594 static napi_value DidReceiveDataFalse(napi_env env, napi_callback_info info)
595 {
596 napi_value result;
597 int32_t isResponse = OH_ArkWebResourceHandler_DidReceiveData(nullptr, nullptr, 200);
598 napi_create_int32(env, isResponse, &result);
599 return result;
600 }
601
DidFinishFalse(napi_env env,napi_callback_info info)602 static napi_value DidFinishFalse(napi_env env, napi_callback_info info)
603 {
604 napi_value result;
605 int32_t isResponse = OH_ArkWebResourceHandler_DidFinish(nullptr);
606 napi_create_int32(env, isResponse, &result);
607 return result;
608 }
609
DidFailWithErrorFalse(napi_env env,napi_callback_info info)610 static napi_value DidFailWithErrorFalse(napi_env env, napi_callback_info info)
611 {
612 napi_value result;
613 int32_t isResponse = OH_ArkWebResourceHandler_DidFailWithError(nullptr, ARKWEB_ERR_CACHE_READ_FAILURE);
614 napi_create_int32(env, isResponse, &result);
615 return result;
616 }
617
618
619
620 EXTERN_C_START
Init(napi_env env,napi_value exports)621 static napi_value Init(napi_env env, napi_value exports) {
622 napi_property_descriptor desc[] = {
623 {"setSchemeHandler", nullptr, SetSchemeHandler, nullptr, nullptr, nullptr, napi_default, nullptr},
624 {"initResourceManager", nullptr, InitResourceManager, nullptr, nullptr, nullptr, napi_default, nullptr},
625 {"registerCustomSchemes", nullptr, RegisterCustomSchemes, nullptr, nullptr, nullptr, napi_default, nullptr},
626 {"getNativeAPI", nullptr, GetNativeAPI, nullptr, nullptr, nullptr, napi_default, nullptr},
627 {"releaseString", nullptr, ReleaseString, nullptr, nullptr, nullptr, napi_default, nullptr},
628 {"releaseByteArray", nullptr, ReleaseByteArray, nullptr, nullptr, nullptr, napi_default, nullptr},
629 {"destroyHttpBodyStream", nullptr, DestroyHttpBodyStream, nullptr, nullptr, nullptr, napi_default, nullptr},
630 {"setHeaderByName", nullptr, SetHeaderByName, nullptr, nullptr, nullptr, napi_default, nullptr},
631 {"resourceHandler", nullptr, ResourceHandler, nullptr, nullptr, nullptr, napi_default, nullptr},
632 {"response", nullptr, Response, nullptr, nullptr, nullptr, napi_default, nullptr},
633 {"resourceRequest", nullptr, ResourceRequest, nullptr, nullptr, nullptr, napi_default, nullptr},
634 {"requestHeaderList", nullptr, RequestHeaderList, nullptr, nullptr, nullptr, napi_default, nullptr},
635 {"httpBodyStream", nullptr, HttpBodyStream, nullptr, nullptr, nullptr, napi_default, nullptr},
636 {"httpBodyStreamInitCallback", nullptr, HttpBodyStreamInitCallback, nullptr, nullptr, nullptr, napi_default,
637 nullptr},
638 {"httpBodyStreamReadCallback", nullptr, HttpBodyStreamReadCallback, nullptr, nullptr, nullptr, napi_default,
639 nullptr},
640 {"getNativeApiFalse", nullptr, GetNativeApiFalse, nullptr, nullptr, nullptr, napi_default, nullptr},
641 {"requestHeaderListFalse", nullptr, RequestHeaderListFalse, nullptr, nullptr, nullptr, napi_default, nullptr},
642 {"httpBodyStreamSetUserDataFalse", nullptr, HttpBodyStreamSetUserDataFalse, nullptr, nullptr, nullptr, napi_default, nullptr},
643 {"httpBodyStreamSetReadCallbackFalse", nullptr, HttpBodyStreamSetReadCallbackFalse, nullptr, nullptr, nullptr, napi_default, nullptr},
644 {"httpBodyStreamInitFalse", nullptr, HttpBodyStreamInitFalse, nullptr, nullptr, nullptr, napi_default, nullptr},
645 {"httpBodyStreamIsChunkedFalse", nullptr, HttpBodyStreamIsChunkedFalse, nullptr, nullptr, nullptr, napi_default, nullptr},
646 {"httpBodyStreamIsEofFalse", nullptr, HttpBodyStreamIsEofFalse, nullptr, nullptr, nullptr, napi_default, nullptr},
647 {"httpBodyStreamIsInMemoryFalse", nullptr, HttpBodyStreamIsInMemoryFalse, nullptr, nullptr, nullptr, napi_default, nullptr},
648 {"resourceRequestIsRedirectFalse", nullptr, ResourceRequestIsRedirectFalse, nullptr, nullptr, nullptr, napi_default, nullptr},
649 {"resourceRequestIsMainFrameFalse", nullptr, ResourceRequestIsMainFrameFalse, nullptr, nullptr, nullptr, napi_default, nullptr},
650 {"resourceRequestHasGestureFalse", nullptr, ResourceRequestHasGestureFalse, nullptr, nullptr, nullptr, napi_default, nullptr},
651 {"registerCustomSchemesTrue", nullptr, RegisterCustomSchemesTrue, nullptr, nullptr, nullptr, napi_default, nullptr},
652 {"registerCustomSchemesInvalid", nullptr, RegisterCustomSchemesInvalid, nullptr, nullptr, nullptr, napi_default, nullptr},
653 {"registerCustomSchemesError", nullptr, RegisterCustomSchemesError, nullptr, nullptr, nullptr, napi_default, nullptr},
654 {"serviceWorkerSetSchemeHandlerFalse", nullptr, ServiceWorkerSetSchemeHandlerFalse, nullptr, nullptr, nullptr, napi_default, nullptr},
655 {"setSchemeHandlerFalse", nullptr, SetSchemeHandlerFalse, nullptr, nullptr, nullptr, napi_default, nullptr},
656 {"clearSchemeHandlersFalse", nullptr, ClearSchemeHandlersFalse, nullptr, nullptr, nullptr, napi_default, nullptr},
657 {"schemeHandlerSetUserDataFalse", nullptr, SchemeHandlerSetUserDataFalse, nullptr, nullptr, nullptr, napi_default, nullptr},
658 {"setOnRequestStartFalse", nullptr, SetOnRequestStartFalse, nullptr, nullptr, nullptr, napi_default, nullptr},
659 {"setOnRequestStopFalse", nullptr, SetOnRequestStopFalse, nullptr, nullptr, nullptr, napi_default, nullptr},
660 {"responseSetUrlFalse", nullptr, ResponseSetUrlFalse, nullptr, nullptr, nullptr, napi_default, nullptr},
661 {"responseSetErrorFalse", nullptr, ResponseSetErrorFalse, nullptr, nullptr, nullptr, napi_default, nullptr},
662 {"responseSetStatusFalse", nullptr, ResponseSetStatusFalse, nullptr, nullptr, nullptr, napi_default, nullptr},
663 {"responseGetStatusFalse", nullptr, ResponseGetStatusFalse, nullptr, nullptr, nullptr, napi_default, nullptr},
664 {"responseSetStatusTextFalse", nullptr, ResponseSetStatusTextFalse, nullptr, nullptr, nullptr, napi_default, nullptr},
665 {"responseSetMimeTypeFalse", nullptr, ResponseSetMimeTypeFalse, nullptr, nullptr, nullptr, napi_default, nullptr},
666 {"responseSetCharsetFalse", nullptr, ResponseSetCharsetFalse, nullptr, nullptr, nullptr, napi_default, nullptr},
667 {"setHeaderByNameNameNull", nullptr, SetHeaderByNameNameNull, nullptr, nullptr, nullptr, napi_default, nullptr},
668 {"setHeaderByNameValueNull", nullptr, SetHeaderByNameValueNull, nullptr, nullptr, nullptr, napi_default, nullptr},
669 {"setHeaderByNameOverwriteNull", nullptr, SetHeaderByNameOverwriteNull, nullptr, nullptr, nullptr, napi_default, nullptr},
670 {"resourceHandlerDestroyFalse", nullptr, ResourceHandlerDestroyFalse, nullptr, nullptr, nullptr, napi_default, nullptr},
671 {"didReceiveResponseFalse", nullptr, DidReceiveResponseFalse, nullptr, nullptr, nullptr, napi_default, nullptr},
672 {"didReceiveDataFalse", nullptr, DidReceiveDataFalse, nullptr, nullptr, nullptr, napi_default, nullptr},
673 {"didFinishFalse", nullptr, DidFinishFalse, nullptr, nullptr, nullptr, napi_default, nullptr},
674 {"didFailWithErrorFalse", nullptr, DidFailWithErrorFalse, nullptr, nullptr, nullptr, napi_default, nullptr},
675 };
676
677 napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc);
678 return exports;
679 }
680 EXTERN_C_END
681
682 static napi_module demoModule = {
683 .nm_version = 1,
684 .nm_flags = 0,
685 .nm_filename = nullptr,
686 .nm_register_func = Init,
687 .nm_modname = "entry",
688 .nm_priv = ((void *)0),
689 .reserved = {0},
690 };
691
RegisterEntryModule(void)692 extern "C" __attribute__((constructor)) void RegisterEntryModule(void) { napi_module_register(&demoModule); }
693