• 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 #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