• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2025 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 <gtest/gtest.h>
17 #include <gmock/gmock.h>
18 #include <securec.h>
19 
20 #define private public
21 #include "nweb.h"
22 #include "nweb_helper.h"
23 #include "nweb_config_helper.h"
24 #include "nweb_adapter_helper.h"
25 #include "base/web/webview/interfaces/native/arkweb_scheme_handler.h"
26 
27 using namespace testing;
28 using namespace testing::ext;
29 
30 namespace OHOS {
31 namespace {
32 
33 typedef void (*TYPE_OH_ArkWebRequestHeaderList_Destroy)(ArkWeb_RequestHeaderList* requestHeaderList);
34 typedef int32_t (*TYPE_OH_ArkWebRequestHeaderList_GetSize)(const ArkWeb_RequestHeaderList* requestHeaderList);
35 typedef void (*TYPE_OH_ArkWebRequestHeaderList_GetHeader)(
36     const ArkWeb_RequestHeaderList* requestHeaderList, int32_t index, char** key, char** value);
37 typedef void (*TYPE_OH_ArkWebResourceRequest_GetMethod)(const ArkWeb_ResourceRequest* resourceRequest, char** method);
38 typedef void (*TYPE_OH_ArkWebResourceRequest_GetUrl)(const ArkWeb_ResourceRequest* resourceRequest, char** url);
39 typedef void (*TYPE_OH_ArkWebResourceRequest_GetHttpBodyStream)(
40     const ArkWeb_ResourceRequest* resourceRequest, ArkWeb_HttpBodyStream** httpBodyStream);
41 typedef void (*TYPE_OH_ArkWebResourceRequest_DestroyHttpBodyStream)(ArkWeb_HttpBodyStream* httpBodyStream);
42 typedef int32_t (*TYPE_OH_ArkWebResourceRequest_GetResourceType)(const ArkWeb_ResourceRequest* resourceRequest);
43 typedef void (*TYPE_OH_ArkWebResourceRequest_GetFrameUrl)(
44     const ArkWeb_ResourceRequest* resourceRequest, char** frameUrl);
45 typedef int32_t (*TYPE_OH_ArkWebHttpBodyStream_SetUserData)(ArkWeb_HttpBodyStream* httpBodyStream, void* userData);
46 typedef void* (*TYPE_OH_ArkWebHttpBodyStream_GetUserData)(const ArkWeb_HttpBodyStream* httpBodyStream);
47 typedef int32_t (*TYPE_OH_ArkWebHttpBodyStream_SetReadCallback)(
48     ArkWeb_HttpBodyStream* httpBodyStream, ArkWeb_HttpBodyStreamReadCallback readCallback);
49 typedef int32_t (*TYPE_OH_ArkWebHttpBodyStream_SetAsyncReadCallback)(
50     ArkWeb_HttpBodyStream* httpBodyStream, ArkWeb_HttpBodyStreamAsyncReadCallback readCallback);
51 
52 typedef int32_t (*TYPE_OH_ArkWebHttpBodyStream_Init)(
53     ArkWeb_HttpBodyStream* httpBodyStream, ArkWeb_HttpBodyStreamInitCallback initCallback);
54 typedef void (*TYPE_OH_ArkWebHttpBodyStream_Read)(
55     const ArkWeb_HttpBodyStream* httpBodyStream, uint8_t* buffer, int bufLen);
56 typedef void (*TYPE_OH_ArkWebHttpBodyStream_AsyncRead)(
57     const ArkWeb_HttpBodyStream* httpBodyStream, uint8_t* buffer, int bufLen);
58 typedef uint64_t (*TYPE_OH_ArkWebHttpBodyStream_GetSize)(const ArkWeb_HttpBodyStream* httpBodyStream);
59 typedef uint64_t (*TYPE_OH_ArkWebHttpBodyStream_GetPosition)(const ArkWeb_HttpBodyStream* httpBodyStream);
60 typedef bool (*TYPE_OH_ArkWebHttpBodyStream_IsChunked)(const ArkWeb_HttpBodyStream* httpBodyStream);
61 typedef bool (*TYPE_OH_ArkWebHttpBodyStream_IsEof)(const ArkWeb_HttpBodyStream* httpBodyStream);
62 typedef bool (*TYPE_OH_ArkWebHttpBodyStream_IsInMemory)(const ArkWeb_HttpBodyStream* httpBodyStream);
63 typedef int32_t (*TYPE_OH_ArkWebResourceRequest_Destroy)(const ArkWeb_ResourceRequest* resourceRequest);
64 typedef void (*TYPE_OH_ArkWebResourceRequest_GetReferrer)(
65     const ArkWeb_ResourceRequest* resourceRequest, char** referrer);
66 typedef void (*TYPE_OH_ArkWebResourceRequest_GetRequestHeaders)(
67     const ArkWeb_ResourceRequest* resourceRequest, ArkWeb_RequestHeaderList** requestHeaderList);
68 typedef int32_t (*TYPE_OH_ArkWebResourceRequest_SetUserData)(ArkWeb_ResourceRequest* resourceRequest, void* userData);
69 typedef void* (*TYPE_OH_ArkWebResourceRequest_GetUserData)(const ArkWeb_ResourceRequest* resourceRequest);
70 typedef bool (*TYPE_OH_ArkWebResourceRequest_IsRedirect)(const ArkWeb_ResourceRequest* resourceRequest);
71 typedef bool (*TYPE_OH_ArkWebResourceRequest_IsMainFrame)(const ArkWeb_ResourceRequest* resourceRequest);
72 typedef bool (*TYPE_OH_ArkWebResourceRequest_HasGesture)(const ArkWeb_ResourceRequest* resourceRequest);
73 typedef int32_t (*TYPE_OH_ArkWeb_RegisterCustomSchemes)(const char* scheme, int32_t option);
74 typedef bool (*TYPE_OH_ArkWeb_SetSchemeHandler)(
75     const char* scheme, const char* webTag, ArkWeb_SchemeHandler* schemeHandler);
76 typedef bool (*TYPE_OH_ArkWebServiceWorker_SetSchemeHandler)(const char* scheme, ArkWeb_SchemeHandler* schemeHandler);
77 typedef int32_t (*TYPE_OH_ArkWeb_ClearSchemeHandlers)(const char* webTag);
78 typedef int32_t (*TYPE_OH_ArkWebServiceWorker_ClearSchemeHandlers)();
79 typedef void (*TYPE_OH_ArkWeb_CreateSchemeHandler)(ArkWeb_SchemeHandler** schemeHandler);
80 typedef void (*TYPE_OH_ArkWeb_DestroySchemeHandler)(ArkWeb_SchemeHandler* schemeHandler);
81 typedef int32_t (*TYPE_OH_ArkWebSchemeHandler_SetUserData)(ArkWeb_SchemeHandler* schemeHandler, void* userData);
82 typedef void* (*TYPE_OH_ArkWebSchemeHandler_GetUserData)(const ArkWeb_SchemeHandler* schemeHandler);
83 typedef int32_t (*TYPE_OH_ArkWebSchemeHandler_SetOnRequestStart)(
84     ArkWeb_SchemeHandler* schemeHandler, ArkWeb_OnRequestStart onRequestStart);
85 typedef int32_t (*TYPE_OH_ArkWebSchemeHandler_SetOnRequestStop)(
86     ArkWeb_SchemeHandler* schemeHandler, ArkWeb_OnRequestStop onRequestStop);
87 typedef void (*TYPE_OH_ArkWeb_CreateResponse)(ArkWeb_Response** response);
88 typedef void (*TYPE_OH_ArkWeb_DestroyResponse)(ArkWeb_Response* response);
89 typedef int32_t (*TYPE_OH_ArkWebResponse_SetUrl)(ArkWeb_Response* response, const char* url);
90 typedef void (*TYPE_OH_ArkWebResponse_GetUrl)(const ArkWeb_Response* response, char** url);
91 typedef int32_t (*TYPE_OH_ArkWebResponse_SetError)(ArkWeb_Response* response, ArkWeb_NetError errorCode);
92 typedef ArkWeb_NetError (*TYPE_OH_ArkWebResponse_GetError)(const ArkWeb_Response* response);
93 typedef int32_t (*TYPE_OH_ArkWebResponse_SetStatus)(ArkWeb_Response* response, int status);
94 typedef int (*TYPE_OH_ArkWebResponse_GetStatus)(const ArkWeb_Response* response);
95 typedef int32_t (*TYPE_OH_ArkWebResponse_SetStatusText)(ArkWeb_Response* response, const char* statusText);
96 typedef void (*TYPE_OH_ArkWebResponse_GetStatusText)(const ArkWeb_Response* response, char** statusText);
97 typedef int32_t (*TYPE_OH_ArkWebResponse_SetMimeType)(ArkWeb_Response* response, const char* mimeType);
98 typedef void (*TYPE_OH_ArkWebResponse_GetMimeType)(const ArkWeb_Response* response, char** mimeType);
99 typedef int32_t (*TYPE_OH_ArkWebResponse_SetCharset)(ArkWeb_Response* response, const char* charset);
100 typedef void (*TYPE_OH_ArkWebResponse_GetCharset)(const ArkWeb_Response* response, char** charset);
101 typedef int32_t (*TYPE_OH_ArkWebResponse_SetHeaderByName)(
102     ArkWeb_Response* response, const char* name, const char* value, bool ow);
103 typedef void (*TYPE_OH_ArkWebResponse_GetHeaderByName)(const ArkWeb_Response* response, const char* name, char** value);
104 typedef int32_t (*TYPE_OH_ArkWebResourceHandler_Destroy)(const ArkWeb_ResourceHandler* resourceHandler);
105 typedef int32_t (*TYPE_OH_ArkWebResourceHandler_DidReceiveResponse)(
106     const ArkWeb_ResourceHandler* resourceHandler, const ArkWeb_Response* response);
107 typedef int32_t (*TYPE_OH_ArkWebResourceHandler_DidReceiveData)(
108     const ArkWeb_ResourceHandler* resourceHandler, const uint8_t* buffer, int64_t bufLen);
109 typedef int32_t (*TYPE_OH_ArkWebResourceHandler_DidFinish)(const ArkWeb_ResourceHandler* resourceHandler);
110 typedef int32_t (*TYPE_OH_ArkWebResourceHandler_DidFailWithError)(
111     const ArkWeb_ResourceHandler* resourceHandler, ArkWeb_NetError errorCode);
112 typedef int32_t (*TYPE_OH_ArkWebResourceHandler_DidFailWithErrorV2)(
113     const ArkWeb_ResourceHandler* resourceHandler, ArkWeb_NetError errorCode, bool completeIfNoResponse);
114 typedef void (*TYPE_OH_ArkWeb_ReleaseString)(char* string);
115 typedef void (*TYPE_OH_ArkWeb_ReleaseByteArray)(uint8_t* byteArray);
116 typedef int32_t (*TYPE_OH_ArkWebSchemeHandler_SetFromEts)(ArkWeb_SchemeHandler* schemeHandler, bool fromEts);
117 
118 struct SchemeHandlerApi {
119     TYPE_OH_ArkWebRequestHeaderList_Destroy impl_OH_ArkWebRequestHeaderList_Destroy;
120     TYPE_OH_ArkWebRequestHeaderList_GetSize impl_OH_ArkWebRequestHeaderList_GetSize;
121     TYPE_OH_ArkWebRequestHeaderList_GetHeader impl_OH_ArkWebRequestHeaderList_GetHeader;
122     TYPE_OH_ArkWebResourceRequest_GetMethod impl_OH_ArkWebResourceRequest_GetMethod;
123     TYPE_OH_ArkWebResourceRequest_GetUrl impl_OH_ArkWebResourceRequest_GetUrl;
124     TYPE_OH_ArkWebResourceRequest_GetHttpBodyStream impl_OH_ArkWebResourceRequest_GetHttpBodyStream;
125     TYPE_OH_ArkWebResourceRequest_DestroyHttpBodyStream impl_OH_ArkWebResourceRequest_DestroyHttpBodyStream;
126     TYPE_OH_ArkWebResourceRequest_GetResourceType impl_OH_ArkWebResourceRequest_GetResourceType;
127     TYPE_OH_ArkWebResourceRequest_GetFrameUrl impl_OH_ArkWebResourceRequest_GetFrameUrl;
128     TYPE_OH_ArkWebHttpBodyStream_SetReadCallback impl_OH_ArkWebHttpBodyStream_SetReadCallback;
129     TYPE_OH_ArkWebHttpBodyStream_SetAsyncReadCallback impl_OH_ArkWebHttpBodyStream_SetAsyncReadCallback;
130     TYPE_OH_ArkWebHttpBodyStream_SetUserData impl_OH_ArkWebHttpBodyStream_SetUserData;
131     TYPE_OH_ArkWebHttpBodyStream_GetUserData impl_OH_ArkWebHttpBodyStream_GetUserData;
132     TYPE_OH_ArkWebHttpBodyStream_Init impl_OH_ArkWebHttpBodyStream_Init;
133     TYPE_OH_ArkWebHttpBodyStream_Read impl_OH_ArkWebHttpBodyStream_Read;
134     TYPE_OH_ArkWebHttpBodyStream_AsyncRead impl_OH_ArkWebHttpBodyStream_AsyncRead;
135     TYPE_OH_ArkWebHttpBodyStream_GetSize impl_OH_ArkWebHttpBodyStream_GetSize;
136     TYPE_OH_ArkWebHttpBodyStream_GetPosition impl_OH_ArkWebHttpBodyStream_GetPosition;
137     TYPE_OH_ArkWebHttpBodyStream_IsChunked impl_OH_ArkWebHttpBodyStream_IsChunked;
138     TYPE_OH_ArkWebHttpBodyStream_IsEof impl_OH_ArkWebHttpBodyStream_IsEof;
139     TYPE_OH_ArkWebHttpBodyStream_IsInMemory impl_OH_ArkWebHttpBodyStream_IsInMemory;
140     TYPE_OH_ArkWebResourceRequest_Destroy impl_OH_ArkWebResourceRequest_Destroy;
141     TYPE_OH_ArkWebResourceRequest_SetUserData impl_OH_ArkWebResourceRequest_SetUserData;
142     TYPE_OH_ArkWebResourceRequest_GetUserData impl_OH_ArkWebResourceRequest_GetUserData;
143     TYPE_OH_ArkWebResourceRequest_GetReferrer impl_OH_ArkWebResourceRequest_GetReferrer;
144     TYPE_OH_ArkWebResourceRequest_GetRequestHeaders impl_OH_ArkWebResourceRequest_GetRequestHeaders;
145     TYPE_OH_ArkWebResourceRequest_IsRedirect impl_OH_ArkWebResourceRequest_IsRedirect;
146     TYPE_OH_ArkWebResourceRequest_IsMainFrame impl_OH_ArkWebResourceRequest_IsMainFrame;
147     TYPE_OH_ArkWebResourceRequest_HasGesture impl_OH_ArkWebResourceRequest_HasGesture;
148     TYPE_OH_ArkWeb_RegisterCustomSchemes impl_OH_ArkWeb_RegisterCustomSchemes;
149     TYPE_OH_ArkWeb_SetSchemeHandler impl_OH_ArkWeb_SetSchemeHandler;
150     TYPE_OH_ArkWebServiceWorker_SetSchemeHandler impl_OH_ArkWebServiceWorker_SetSchemeHandler;
151     TYPE_OH_ArkWebServiceWorker_ClearSchemeHandlers impl_OH_ArkWebServiceWorker_ClearSchemeHandlers;
152     TYPE_OH_ArkWeb_ClearSchemeHandlers impl_OH_ArkWeb_ClearSchemeHandlers;
153     TYPE_OH_ArkWeb_CreateSchemeHandler impl_OH_ArkWeb_CreateSchemeHandler;
154     TYPE_OH_ArkWeb_DestroySchemeHandler impl_OH_ArkWeb_DestroySchemeHandler;
155     TYPE_OH_ArkWebSchemeHandler_SetOnRequestStart impl_OH_ArkWebSchemeHandler_SetOnRequestStart;
156     TYPE_OH_ArkWebSchemeHandler_SetOnRequestStop impl_OH_ArkWebSchemeHandler_SetOnRequestStop;
157     TYPE_OH_ArkWebSchemeHandler_SetUserData impl_OH_ArkWebSchemeHandler_SetUserData;
158     TYPE_OH_ArkWebSchemeHandler_GetUserData impl_OH_ArkWebSchemeHandler_GetUserData;
159     TYPE_OH_ArkWeb_CreateResponse impl_OH_ArkWeb_CreateResponse;
160     TYPE_OH_ArkWeb_DestroyResponse impl_OH_ArkWeb_DestroyResponse;
161     TYPE_OH_ArkWebResponse_GetUrl impl_OH_ArkWebResponse_GetUrl;
162     TYPE_OH_ArkWebResponse_SetUrl impl_OH_ArkWebResponse_SetUrl;
163     TYPE_OH_ArkWebResponse_SetError impl_OH_ArkWebResponse_SetError;
164     TYPE_OH_ArkWebResponse_GetError impl_OH_ArkWebResponse_GetError;
165     TYPE_OH_ArkWebResponse_SetStatus impl_OH_ArkWebResponse_SetStatus;
166     TYPE_OH_ArkWebResponse_GetStatus impl_OH_ArkWebResponse_GetStatus;
167     TYPE_OH_ArkWebResponse_SetStatusText impl_OH_ArkWebResponse_SetStatusText;
168     TYPE_OH_ArkWebResponse_GetStatusText impl_OH_ArkWebResponse_GetStatusText;
169     TYPE_OH_ArkWebResponse_SetMimeType impl_OH_ArkWebResponse_SetMimeType;
170     TYPE_OH_ArkWebResponse_GetMimeType impl_OH_ArkWebResponse_GetMimeType;
171     TYPE_OH_ArkWebResponse_SetCharset impl_OH_ArkWebResponse_SetCharset;
172     TYPE_OH_ArkWebResponse_GetCharset impl_OH_ArkWebResponse_GetCharset;
173     TYPE_OH_ArkWebResponse_SetHeaderByName impl_OH_ArkWebResponse_SetHeaderByName;
174     TYPE_OH_ArkWebResponse_GetHeaderByName impl_OH_ArkWebResponse_GetHeaderByName;
175     TYPE_OH_ArkWebResourceHandler_Destroy impl_OH_ArkWebResourceHandler_Destroy;
176     TYPE_OH_ArkWebResourceHandler_DidReceiveResponse impl_OH_ArkWebResourceHandler_DidReceiveResponse;
177     TYPE_OH_ArkWebResourceHandler_DidReceiveData impl_OH_ArkWebResourceHandler_DidReceiveData;
178     TYPE_OH_ArkWebResourceHandler_DidFinish impl_OH_ArkWebResourceHandler_DidFinish;
179     TYPE_OH_ArkWebResourceHandler_DidFailWithError impl_OH_ArkWebResourceHandler_DidFailWithError;
180     TYPE_OH_ArkWebResourceHandler_DidFailWithErrorV2 impl_OH_ArkWebResourceHandler_DidFailWithErrorV2;
181     TYPE_OH_ArkWeb_ReleaseString impl_OH_ArkWeb_ReleaseString;
182     TYPE_OH_ArkWeb_ReleaseByteArray impl_OH_ArkWeb_ReleaseByteArray;
183     TYPE_OH_ArkWebSchemeHandler_SetFromEts impl_OH_ArkWebSchemeHandler_SetFromEts;
184 };
185 
186 } // namespace
187 
TEST_OH_ArkWebRequestHeaderList_Destroy(ArkWeb_RequestHeaderList * requestHeaderList)188 void TEST_OH_ArkWebRequestHeaderList_Destroy(ArkWeb_RequestHeaderList* requestHeaderList) {
189     return;
190 }
191 
TEST_OH_ArkWebRequestHeaderList_GetSize(const ArkWeb_RequestHeaderList * requestHeaderList)192 int32_t TEST_OH_ArkWebRequestHeaderList_GetSize(const ArkWeb_RequestHeaderList* requestHeaderList) {
193     return 0;
194 }
195 
TEST_OH_ArkWebRequestHeaderList_GetHeader(const ArkWeb_RequestHeaderList * requestHeaderList,int32_t index,char ** key,char ** value)196 void TEST_OH_ArkWebRequestHeaderList_GetHeader(
197     const ArkWeb_RequestHeaderList* requestHeaderList, int32_t index, char** key, char** value) {
198     return;
199 }
200 
TEST_OH_ArkWebResourceRequest_GetMethod(const ArkWeb_ResourceRequest * resourceRequest,char ** method)201 void TEST_OH_ArkWebResourceRequest_GetMethod(const ArkWeb_ResourceRequest* resourceRequest, char** method) {
202     return;
203 }
204 
TEST_OH_ArkWebResourceRequest_GetUrl(const ArkWeb_ResourceRequest * resourceRequest,char ** url)205 void TEST_OH_ArkWebResourceRequest_GetUrl(const ArkWeb_ResourceRequest* resourceRequest, char** url) {
206     return;
207 }
208 
TEST_OH_ArkWebResourceRequest_GetHttpBodyStream(const ArkWeb_ResourceRequest * resourceRequest,ArkWeb_HttpBodyStream ** httpBodyStream)209 void TEST_OH_ArkWebResourceRequest_GetHttpBodyStream(
210     const ArkWeb_ResourceRequest* resourceRequest, ArkWeb_HttpBodyStream** httpBodyStream) {
211     return;
212 }
213 
TEST_OH_ArkWebResourceRequest_DestroyHttpBodyStream(ArkWeb_HttpBodyStream * httpBodyStream)214 void TEST_OH_ArkWebResourceRequest_DestroyHttpBodyStream(ArkWeb_HttpBodyStream* httpBodyStream) {
215     return;
216 }
217 
TEST_OH_ArkWebResourceRequest_GetResourceType(const ArkWeb_ResourceRequest * resourceRequest)218 int32_t TEST_OH_ArkWebResourceRequest_GetResourceType(const ArkWeb_ResourceRequest* resourceRequest) {
219     return 0;
220 }
221 
TEST_OH_ArkWebResourceRequest_GetFrameUrl(const ArkWeb_ResourceRequest * resourceRequest,char ** frameUrl)222 void TEST_OH_ArkWebResourceRequest_GetFrameUrl(const ArkWeb_ResourceRequest* resourceRequest, char** frameUrl) {
223     return;
224 }
225 
TEST_OH_ArkWebHttpBodyStream_SetUserData(ArkWeb_HttpBodyStream * httpBodyStream,void * userData)226 int32_t TEST_OH_ArkWebHttpBodyStream_SetUserData(ArkWeb_HttpBodyStream* httpBodyStream, void* userData) {
227     return 0;
228 }
229 
TEST_OH_ArkWebHttpBodyStream_GetUserData(const ArkWeb_HttpBodyStream * httpBodyStream)230 void* TEST_OH_ArkWebHttpBodyStream_GetUserData(const ArkWeb_HttpBodyStream* httpBodyStream) {
231     return nullptr;
232 }
233 
TEST_OH_ArkWebHttpBodyStream_SetReadCallback(ArkWeb_HttpBodyStream * httpBodyStream,ArkWeb_HttpBodyStreamReadCallback readCallback)234 int32_t TEST_OH_ArkWebHttpBodyStream_SetReadCallback(
235     ArkWeb_HttpBodyStream* httpBodyStream, ArkWeb_HttpBodyStreamReadCallback readCallback) {
236     return 0;
237 }
238 
TEST_OH_ArkWebHttpBodyStream_SetAsyncReadCallback(ArkWeb_HttpBodyStream * httpBodyStream,ArkWeb_HttpBodyStreamAsyncReadCallback readCallback)239 int32_t TEST_OH_ArkWebHttpBodyStream_SetAsyncReadCallback(
240     ArkWeb_HttpBodyStream* httpBodyStream, ArkWeb_HttpBodyStreamAsyncReadCallback readCallback) {
241     return 0;
242 }
243 
TEST_OH_ArkWebHttpBodyStream_Init(ArkWeb_HttpBodyStream * httpBodyStream,ArkWeb_HttpBodyStreamInitCallback initCallback)244 int32_t TEST_OH_ArkWebHttpBodyStream_Init(
245     ArkWeb_HttpBodyStream* httpBodyStream, ArkWeb_HttpBodyStreamInitCallback initCallback) {
246     return 0;
247 }
248 
TEST_OH_ArkWebHttpBodyStream_Read(const ArkWeb_HttpBodyStream * httpBodyStream,uint8_t * buffer,int bufLen)249 void TEST_OH_ArkWebHttpBodyStream_Read(
250     const ArkWeb_HttpBodyStream* httpBodyStream, uint8_t* buffer, int bufLen) {
251     return;
252 }
253 
TEST_OH_ArkWebHttpBodyStream_AsyncRead(const ArkWeb_HttpBodyStream * httpBodyStream,uint8_t * buffer,int bufLen)254 void TEST_OH_ArkWebHttpBodyStream_AsyncRead(
255     const ArkWeb_HttpBodyStream* httpBodyStream, uint8_t* buffer, int bufLen) {
256     return;
257 }
258 
TEST_OH_ArkWebHttpBodyStream_GetSize(const ArkWeb_HttpBodyStream * httpBodyStream)259 uint64_t TEST_OH_ArkWebHttpBodyStream_GetSize(const ArkWeb_HttpBodyStream* httpBodyStream) {
260     return 1;
261 }
262 
TEST_OH_ArkWebHttpBodyStream_GetPosition(const ArkWeb_HttpBodyStream * httpBodyStream)263 uint64_t TEST_OH_ArkWebHttpBodyStream_GetPosition(const ArkWeb_HttpBodyStream* httpBodyStream) {
264     return 1;
265 }
266 
TEST_OH_ArkWebHttpBodyStream_IsChunked(const ArkWeb_HttpBodyStream * httpBodyStream)267 bool TEST_OH_ArkWebHttpBodyStream_IsChunked(const ArkWeb_HttpBodyStream* httpBodyStream) {
268     return true;
269 }
270 
TEST_OH_ArkWebHttpBodyStream_IsEof(const ArkWeb_HttpBodyStream * httpBodyStream)271 bool TEST_OH_ArkWebHttpBodyStream_IsEof(const ArkWeb_HttpBodyStream* httpBodyStream) {
272     return true;
273 }
274 
TEST_OH_ArkWebHttpBodyStream_IsInMemory(const ArkWeb_HttpBodyStream * httpBodyStream)275 bool TEST_OH_ArkWebHttpBodyStream_IsInMemory(const ArkWeb_HttpBodyStream* httpBodyStream) {
276     return true;
277 }
278 
TEST_OH_ArkWebResourceRequest_Destroy(const ArkWeb_ResourceRequest * resourceRequest)279 int32_t TEST_OH_ArkWebResourceRequest_Destroy(const ArkWeb_ResourceRequest* resourceRequest) {
280     return 0;
281 }
282 
TEST_OH_ArkWebResourceRequest_GetReferrer(const ArkWeb_ResourceRequest * resourceRequest,char ** referrer)283 void TEST_OH_ArkWebResourceRequest_GetReferrer(const ArkWeb_ResourceRequest* resourceRequest, char** referrer) {
284     return;
285 }
286 
TEST_OH_ArkWebResourceRequest_SetUserData(ArkWeb_ResourceRequest * resourceRequest,void * userData)287 int32_t TEST_OH_ArkWebResourceRequest_SetUserData(ArkWeb_ResourceRequest* resourceRequest, void* userData) {
288     return 0;
289 }
290 
TEST_OH_ArkWebResourceRequest_GetUserData(const ArkWeb_ResourceRequest * resourceRequest)291 void* TEST_OH_ArkWebResourceRequest_GetUserData(const ArkWeb_ResourceRequest* resourceRequest) {
292     return NULL;
293 }
294 
TEST_OH_ArkWebResourceRequest_IsRedirect(const ArkWeb_ResourceRequest * resourceRequest)295 bool TEST_OH_ArkWebResourceRequest_IsRedirect(const ArkWeb_ResourceRequest* resourceRequest) {
296     return true;
297 }
298 
TEST_OH_ArkWebResourceRequest_IsMainFrame(const ArkWeb_ResourceRequest * resourceRequest)299 bool TEST_OH_ArkWebResourceRequest_IsMainFrame(const ArkWeb_ResourceRequest* resourceRequest) {
300     return true;
301 }
302 
TEST_OH_ArkWebResourceRequest_HasGesture(const ArkWeb_ResourceRequest * resourceRequest)303 bool TEST_OH_ArkWebResourceRequest_HasGesture(const ArkWeb_ResourceRequest* resourceRequest) {
304     return true;
305 }
306 
TEST_OH_ArkWeb_RegisterCustomSchemes(const char * scheme,int32_t option)307 int32_t TEST_OH_ArkWeb_RegisterCustomSchemes(const char* scheme, int32_t option) {
308     return 0;
309 }
310 
TEST_OH_ArkWeb_SetSchemeHandler(const char * scheme,const char * webTag,ArkWeb_SchemeHandler * schemeHandler)311 bool TEST_OH_ArkWeb_SetSchemeHandler(
312     const char* scheme, const char* webTag, ArkWeb_SchemeHandler* schemeHandler) {
313     return true;
314 }
315 
TEST_OH_ArkWebServiceWorker_SetSchemeHandler(const char * scheme,ArkWeb_SchemeHandler * schemeHandler)316 bool TEST_OH_ArkWebServiceWorker_SetSchemeHandler(
317     const char* scheme, ArkWeb_SchemeHandler* schemeHandler) {
318     return true;
319 }
320 
TEST_OH_ArkWeb_ClearSchemeHandlers(const char * webTag)321 int32_t TEST_OH_ArkWeb_ClearSchemeHandlers(const char* webTag) {
322     return 0;
323 }
324 
TEST_OH_ArkWebServiceWorker_ClearSchemeHandlers()325 int32_t TEST_OH_ArkWebServiceWorker_ClearSchemeHandlers() {
326     return 0;
327 }
328 
TEST_OH_ArkWeb_CreateSchemeHandler(ArkWeb_SchemeHandler ** schemeHandler)329 void TEST_OH_ArkWeb_CreateSchemeHandler(ArkWeb_SchemeHandler** schemeHandler) {
330     return;
331 }
332 
TEST_OH_ArkWeb_DestroySchemeHandler(ArkWeb_SchemeHandler * schemeHandler)333 void TEST_OH_ArkWeb_DestroySchemeHandler(ArkWeb_SchemeHandler* schemeHandler) {
334     return;
335 }
336 
TEST_OH_ArkWebSchemeHandler_SetUserData(ArkWeb_SchemeHandler * schemeHandler,void * userData)337 int32_t TEST_OH_ArkWebSchemeHandler_SetUserData(ArkWeb_SchemeHandler* schemeHandler, void* userData) {
338     return 0;
339 }
340 
TEST_OH_ArkWebSchemeHandler_GetUserData(const ArkWeb_SchemeHandler * schemeHandler)341 void* TEST_OH_ArkWebSchemeHandler_GetUserData(const ArkWeb_SchemeHandler* schemeHandler) {
342     return nullptr;
343 }
344 
TEST_OH_ArkWebSchemeHandler_SetOnRequestStart(ArkWeb_SchemeHandler * schemeHandler,ArkWeb_OnRequestStart onRequestStart)345 int32_t TEST_OH_ArkWebSchemeHandler_SetOnRequestStart(
346     ArkWeb_SchemeHandler* schemeHandler, ArkWeb_OnRequestStart onRequestStart) {
347     return 0;
348 }
349 
TEST_OH_ArkWebSchemeHandler_SetOnRequestStop(ArkWeb_SchemeHandler * schemeHandler,ArkWeb_OnRequestStop onRequestStop)350 int32_t TEST_OH_ArkWebSchemeHandler_SetOnRequestStop(
351     ArkWeb_SchemeHandler* schemeHandler, ArkWeb_OnRequestStop onRequestStop) {
352     return 0;
353 }
354 
TEST_OH_ArkWeb_CreateResponse(ArkWeb_Response ** response)355 void TEST_OH_ArkWeb_CreateResponse(ArkWeb_Response** response) {
356     return;
357 }
358 
TEST_OH_ArkWeb_DestroyResponse(ArkWeb_Response * response)359 void TEST_OH_ArkWeb_DestroyResponse(ArkWeb_Response* response) {
360     return;
361 }
362 
TEST_OH_ArkWebResponse_SetUrl(ArkWeb_Response * response,const char * url)363 int32_t TEST_OH_ArkWebResponse_SetUrl(ArkWeb_Response* response, const char* url) {
364     return 0;
365 }
366 
TEST_OH_ArkWebResponse_GetUrl(const ArkWeb_Response * response,char ** url)367 void TEST_OH_ArkWebResponse_GetUrl(const ArkWeb_Response* response, char** url) {
368     return;
369 }
370 
TEST_OH_ArkWebResponse_SetError(ArkWeb_Response * response,ArkWeb_NetError errorCode)371 int32_t TEST_OH_ArkWebResponse_SetError(ArkWeb_Response* response, ArkWeb_NetError errorCode) {
372     return 0;
373 }
374 
TEST_OH_ArkWebResponse_GetError(const ArkWeb_Response * response)375 ArkWeb_NetError TEST_OH_ArkWebResponse_GetError(const ArkWeb_Response* response) {
376     return ARKWEB_NET_OK;
377 }
378 
TEST_OH_ArkWebResponse_SetStatus(ArkWeb_Response * response,int status)379 int32_t TEST_OH_ArkWebResponse_SetStatus(ArkWeb_Response* response, int status) {
380     return 0;
381 }
382 
TEST_OH_ArkWebResponse_GetStatus(const ArkWeb_Response * response)383 int TEST_OH_ArkWebResponse_GetStatus(const ArkWeb_Response* response) {
384     return 0;
385 }
386 
TEST_OH_ArkWebResponse_SetStatusText(ArkWeb_Response * response,const char * statusText)387 int32_t TEST_OH_ArkWebResponse_SetStatusText(ArkWeb_Response* response, const char* statusText) {
388     return 0;
389 }
390 
TEST_OH_ArkWebResponse_GetStatusText(const ArkWeb_Response * response,char ** statusText)391 void TEST_OH_ArkWebResponse_GetStatusText(const ArkWeb_Response* response, char** statusText) {
392     return;
393 }
394 
TEST_OH_ArkWebResponse_SetMimeType(ArkWeb_Response * response,const char * mimeType)395 int32_t TEST_OH_ArkWebResponse_SetMimeType(ArkWeb_Response* response, const char* mimeType) {
396     return 0;
397 }
398 
TEST_OH_ArkWebResponse_GetMimeType(const ArkWeb_Response * response,char ** mimeType)399 void TEST_OH_ArkWebResponse_GetMimeType(const ArkWeb_Response* response, char** mimeType) {
400     return;
401 }
402 
TEST_OH_ArkWebResponse_SetCharset(ArkWeb_Response * response,const char * charset)403 int32_t TEST_OH_ArkWebResponse_SetCharset(ArkWeb_Response* response, const char* charset) {
404     return 0;
405 }
406 
TEST_OH_ArkWebResponse_GetCharset(const ArkWeb_Response * response,char ** charset)407 void TEST_OH_ArkWebResponse_GetCharset(const ArkWeb_Response* response, char** charset) {
408     return;
409 }
410 
TEST_OH_ArkWebResponse_SetHeaderByName(ArkWeb_Response * response,const char * name,const char * value,bool ow)411 int32_t TEST_OH_ArkWebResponse_SetHeaderByName(
412     ArkWeb_Response* response, const char* name, const char* value, bool ow) {
413     return 0;
414 }
415 
TEST_OH_ArkWebResponse_GetHeaderByName(const ArkWeb_Response * response,const char * name,char ** value)416 void TEST_OH_ArkWebResponse_GetHeaderByName(const ArkWeb_Response* response, const char* name, char** value) {
417     return;
418 }
419 
TEST_OH_ArkWebResourceHandler_Destroy(const ArkWeb_ResourceHandler * resourceHandler)420 int32_t TEST_OH_ArkWebResourceHandler_Destroy(const ArkWeb_ResourceHandler* resourceHandler) {
421     return 0;
422 }
423 
TEST_OH_ArkWebResourceHandler_DidReceiveResponse(const ArkWeb_ResourceHandler * resourceHandler,const ArkWeb_Response * response)424 int32_t TEST_OH_ArkWebResourceHandler_DidReceiveResponse(
425     const ArkWeb_ResourceHandler* resourceHandler, const ArkWeb_Response* response) {
426     return 0;
427 }
428 
TEST_OH_ArkWebResourceHandler_DidReceiveData(const ArkWeb_ResourceHandler * resourceHandler,const uint8_t * buffer,int64_t bufLen)429 int32_t TEST_OH_ArkWebResourceHandler_DidReceiveData(
430     const ArkWeb_ResourceHandler* resourceHandler, const uint8_t* buffer, int64_t bufLen) {
431     return 0;
432 }
433 
TEST_OH_ArkWebResourceHandler_DidFinish(const ArkWeb_ResourceHandler * resourceHandler)434 int32_t TEST_OH_ArkWebResourceHandler_DidFinish(const ArkWeb_ResourceHandler* resourceHandler) {
435     return 0;
436 }
437 
TEST_OH_ArkWebResourceHandler_DidFailWithError(const ArkWeb_ResourceHandler * resourceHandler,ArkWeb_NetError errorCode)438 int32_t TEST_OH_ArkWebResourceHandler_DidFailWithError(
439     const ArkWeb_ResourceHandler* resourceHandler, ArkWeb_NetError errorCode) {
440     return 0;
441 }
442 
TEST_OH_ArkWebResourceHandler_DidFailWithErrorV2(const ArkWeb_ResourceHandler * resourceHandler,ArkWeb_NetError errorCode,bool completeIfNoResponse)443 int32_t TEST_OH_ArkWebResourceHandler_DidFailWithErrorV2(
444     const ArkWeb_ResourceHandler* resourceHandler, ArkWeb_NetError errorCode, bool completeIfNoResponse) {
445     return 0;
446 }
447 
TEST_OH_ArkWeb_ReleaseString(char * string)448 void TEST_OH_ArkWeb_ReleaseString(char* string) {
449     return;
450 }
451 
TEST_OH_ArkWeb_ReleaseByteArray(uint8_t * byteArray)452 void TEST_OH_ArkWeb_ReleaseByteArray(uint8_t* byteArray) {
453     return;
454 }
455 
TEST_OH_ArkWebSchemeHandler_SetFromEts(ArkWeb_SchemeHandler * schemeHandler,bool fromEts)456 int32_t TEST_OH_ArkWebSchemeHandler_SetFromEts(ArkWeb_SchemeHandler* schemeHandler, bool fromEts) {
457     return 0;
458 }
459 
TEST_OH_ArkWebResourceRequest_GetRequestHeaders(const ArkWeb_ResourceRequest * resourceRequest,ArkWeb_RequestHeaderList ** requestHeaderList)460 void TEST_OH_ArkWebResourceRequest_GetRequestHeaders(
461     const ArkWeb_ResourceRequest* resourceRequest, ArkWeb_RequestHeaderList** requestHeaderList) {
462     return;
463 }
464 
465 SchemeHandlerApi g_testSchemeHandlerApi = {
466     .impl_OH_ArkWebRequestHeaderList_Destroy = TEST_OH_ArkWebRequestHeaderList_Destroy,
467     .impl_OH_ArkWebRequestHeaderList_GetSize = TEST_OH_ArkWebRequestHeaderList_GetSize,
468     .impl_OH_ArkWebRequestHeaderList_GetHeader = TEST_OH_ArkWebRequestHeaderList_GetHeader,
469     .impl_OH_ArkWebResourceRequest_GetMethod = TEST_OH_ArkWebResourceRequest_GetMethod,
470     .impl_OH_ArkWebResourceRequest_GetUrl = TEST_OH_ArkWebResourceRequest_GetUrl,
471     .impl_OH_ArkWebResourceRequest_GetHttpBodyStream = TEST_OH_ArkWebResourceRequest_GetHttpBodyStream,
472     .impl_OH_ArkWebResourceRequest_DestroyHttpBodyStream = TEST_OH_ArkWebResourceRequest_DestroyHttpBodyStream,
473     .impl_OH_ArkWebResourceRequest_GetResourceType = TEST_OH_ArkWebResourceRequest_GetResourceType,
474     .impl_OH_ArkWebResourceRequest_GetFrameUrl = TEST_OH_ArkWebResourceRequest_GetFrameUrl,
475     .impl_OH_ArkWebHttpBodyStream_SetUserData = TEST_OH_ArkWebHttpBodyStream_SetUserData,
476     .impl_OH_ArkWebHttpBodyStream_GetUserData = TEST_OH_ArkWebHttpBodyStream_GetUserData,
477     .impl_OH_ArkWebHttpBodyStream_SetReadCallback = TEST_OH_ArkWebHttpBodyStream_SetReadCallback,
478     .impl_OH_ArkWebHttpBodyStream_SetAsyncReadCallback = TEST_OH_ArkWebHttpBodyStream_SetAsyncReadCallback,
479     .impl_OH_ArkWebHttpBodyStream_Init = TEST_OH_ArkWebHttpBodyStream_Init,
480     .impl_OH_ArkWebHttpBodyStream_Read = TEST_OH_ArkWebHttpBodyStream_Read,
481     .impl_OH_ArkWebHttpBodyStream_AsyncRead = TEST_OH_ArkWebHttpBodyStream_AsyncRead,
482     .impl_OH_ArkWebHttpBodyStream_GetSize = TEST_OH_ArkWebHttpBodyStream_GetSize,
483     .impl_OH_ArkWebHttpBodyStream_GetPosition = TEST_OH_ArkWebHttpBodyStream_GetPosition,
484     .impl_OH_ArkWebHttpBodyStream_IsChunked = TEST_OH_ArkWebHttpBodyStream_IsChunked,
485     .impl_OH_ArkWebHttpBodyStream_IsEof = TEST_OH_ArkWebHttpBodyStream_IsEof,
486     .impl_OH_ArkWebHttpBodyStream_IsInMemory = TEST_OH_ArkWebHttpBodyStream_IsInMemory,
487     .impl_OH_ArkWebResourceRequest_Destroy = TEST_OH_ArkWebResourceRequest_Destroy,
488     .impl_OH_ArkWebResourceRequest_SetUserData = TEST_OH_ArkWebResourceRequest_SetUserData,
489     .impl_OH_ArkWebResourceRequest_GetUserData = TEST_OH_ArkWebResourceRequest_GetUserData,
490     .impl_OH_ArkWebResourceRequest_GetReferrer = TEST_OH_ArkWebResourceRequest_GetReferrer,
491     .impl_OH_ArkWebResourceRequest_GetRequestHeaders = TEST_OH_ArkWebResourceRequest_GetRequestHeaders,
492     .impl_OH_ArkWebResourceRequest_IsRedirect = TEST_OH_ArkWebResourceRequest_IsRedirect,
493     .impl_OH_ArkWebResourceRequest_IsMainFrame = TEST_OH_ArkWebResourceRequest_IsMainFrame,
494     .impl_OH_ArkWebResourceRequest_HasGesture = TEST_OH_ArkWebResourceRequest_HasGesture,
495     .impl_OH_ArkWeb_RegisterCustomSchemes = TEST_OH_ArkWeb_RegisterCustomSchemes,
496     .impl_OH_ArkWeb_SetSchemeHandler = TEST_OH_ArkWeb_SetSchemeHandler,
497     .impl_OH_ArkWebServiceWorker_SetSchemeHandler = TEST_OH_ArkWebServiceWorker_SetSchemeHandler,
498     .impl_OH_ArkWeb_ClearSchemeHandlers = TEST_OH_ArkWeb_ClearSchemeHandlers,
499     .impl_OH_ArkWebServiceWorker_ClearSchemeHandlers = TEST_OH_ArkWebServiceWorker_ClearSchemeHandlers,
500     .impl_OH_ArkWeb_CreateSchemeHandler = TEST_OH_ArkWeb_CreateSchemeHandler,
501     .impl_OH_ArkWeb_DestroySchemeHandler = TEST_OH_ArkWeb_DestroySchemeHandler,
502     .impl_OH_ArkWebSchemeHandler_SetUserData = TEST_OH_ArkWebSchemeHandler_SetUserData,
503     .impl_OH_ArkWebSchemeHandler_GetUserData = TEST_OH_ArkWebSchemeHandler_GetUserData,
504     .impl_OH_ArkWebSchemeHandler_SetOnRequestStart = TEST_OH_ArkWebSchemeHandler_SetOnRequestStart,
505     .impl_OH_ArkWebSchemeHandler_SetOnRequestStop = TEST_OH_ArkWebSchemeHandler_SetOnRequestStop,
506     .impl_OH_ArkWeb_CreateResponse = TEST_OH_ArkWeb_CreateResponse,
507     .impl_OH_ArkWeb_DestroyResponse = TEST_OH_ArkWeb_DestroyResponse,
508     .impl_OH_ArkWebResponse_SetUrl = TEST_OH_ArkWebResponse_SetUrl,
509     .impl_OH_ArkWebResponse_GetUrl = TEST_OH_ArkWebResponse_GetUrl,
510     .impl_OH_ArkWebResponse_SetError = TEST_OH_ArkWebResponse_SetError,
511     .impl_OH_ArkWebResponse_GetError = TEST_OH_ArkWebResponse_GetError,
512     .impl_OH_ArkWebResponse_SetStatus = TEST_OH_ArkWebResponse_SetStatus,
513     .impl_OH_ArkWebResponse_GetStatus = TEST_OH_ArkWebResponse_GetStatus,
514     .impl_OH_ArkWebResponse_SetStatusText = TEST_OH_ArkWebResponse_SetStatusText,
515     .impl_OH_ArkWebResponse_GetStatusText = TEST_OH_ArkWebResponse_GetStatusText,
516     .impl_OH_ArkWebResponse_SetMimeType = TEST_OH_ArkWebResponse_SetMimeType,
517     .impl_OH_ArkWebResponse_GetMimeType = TEST_OH_ArkWebResponse_GetMimeType,
518     .impl_OH_ArkWebResponse_SetCharset = TEST_OH_ArkWebResponse_SetCharset,
519     .impl_OH_ArkWebResponse_GetCharset = TEST_OH_ArkWebResponse_GetCharset,
520     .impl_OH_ArkWebResponse_SetHeaderByName = TEST_OH_ArkWebResponse_SetHeaderByName,
521     .impl_OH_ArkWebResponse_GetHeaderByName = TEST_OH_ArkWebResponse_GetHeaderByName,
522     .impl_OH_ArkWebResourceHandler_Destroy = TEST_OH_ArkWebResourceHandler_Destroy,
523     .impl_OH_ArkWebResourceHandler_DidReceiveResponse = TEST_OH_ArkWebResourceHandler_DidReceiveResponse,
524     .impl_OH_ArkWebResourceHandler_DidReceiveData = TEST_OH_ArkWebResourceHandler_DidReceiveData,
525     .impl_OH_ArkWebResourceHandler_DidFinish = TEST_OH_ArkWebResourceHandler_DidFinish,
526     .impl_OH_ArkWebResourceHandler_DidFailWithError = TEST_OH_ArkWebResourceHandler_DidFailWithError,
527     .impl_OH_ArkWebResourceHandler_DidFailWithErrorV2 = TEST_OH_ArkWebResourceHandler_DidFailWithErrorV2,
528     .impl_OH_ArkWeb_ReleaseString = TEST_OH_ArkWeb_ReleaseString,
529     .impl_OH_ArkWeb_ReleaseByteArray = TEST_OH_ArkWeb_ReleaseByteArray,
530     .impl_OH_ArkWebSchemeHandler_SetFromEts = TEST_OH_ArkWebSchemeHandler_SetFromEts
531 };
532 
533 
534 namespace NWeb {
535 class MockNWebEngine : public OHOS::NWeb::NWebEngine {
536 public:
CreateNWeb(std::shared_ptr<NWebCreateInfo> create_info)537     std::shared_ptr<NWeb> CreateNWeb(std::shared_ptr<NWebCreateInfo> create_info)
538     {
539         return nullptr;
540     }
541 
GetNWeb(int32_t nweb_id)542     std::shared_ptr<NWeb> GetNWeb(int32_t nweb_id)
543     {
544         return nullptr;
545     }
546 
GetDataBase()547     std::shared_ptr<NWebDataBase> GetDataBase()
548     {
549         return nullptr;
550     }
551 
GetWebStorage()552     std::shared_ptr<NWebWebStorage> GetWebStorage()
553     {
554         return nullptr;
555     }
556 
GetCookieManager()557     std::shared_ptr<NWebCookieManager> GetCookieManager()
558     {
559         return nullptr;
560     }
561 
GetDownloadManager()562     std::shared_ptr<NWebDownloadManager> GetDownloadManager()
563     {
564         return nullptr;
565     }
566 
SetWebTag(int32_t nweb_id,const char * web_tag)567     void SetWebTag(int32_t nweb_id, const char* web_tag) {}
568 
InitializeWebEngine(std::shared_ptr<NWebEngineInitArgs> init_args)569     void InitializeWebEngine(std::shared_ptr<NWebEngineInitArgs> init_args) {}
570 
PrepareForPageLoad(const std::string & url,bool preconnectable,int32_t num_sockets)571     void PrepareForPageLoad(const std::string& url, bool preconnectable, int32_t num_sockets) {}
572 
SetWebDebuggingAccess(bool isEnableDebug)573     void SetWebDebuggingAccess(bool isEnableDebug) {}
574 
AddIntelligentTrackingPreventionBypassingList(const std::vector<std::string> & hosts)575     void AddIntelligentTrackingPreventionBypassingList(const std::vector<std::string>& hosts) {}
576 
RemoveIntelligentTrackingPreventionBypassingList(const std::vector<std::string> & hosts)577     void RemoveIntelligentTrackingPreventionBypassingList(const std::vector<std::string>& hosts) {}
ClearIntelligentTrackingPreventionBypassingList()578     void ClearIntelligentTrackingPreventionBypassingList() {}
579 
GetDefaultUserAgent()580     std::string GetDefaultUserAgent()
581     {
582         return "";
583     }
584 
PauseAllTimers()585     void PauseAllTimers() {}
586 
ResumeAllTimers()587     void ResumeAllTimers() {}
588 
PrefetchResource(const std::shared_ptr<NWebEnginePrefetchArgs> & pre_args,const std::map<std::string,std::string> & additional_http_headers,const std::string & cache_key,const uint32_t & cache_valid_time)589     void PrefetchResource(const std::shared_ptr<NWebEnginePrefetchArgs>& pre_args,
590         const std::map<std::string, std::string>& additional_http_headers, const std::string& cache_key,
591         const uint32_t& cache_valid_time)
592     {}
593 
SetRenderProcessMode(RenderProcessMode mode)594     void SetRenderProcessMode(RenderProcessMode mode) {}
595 
GetRenderProcessMode()596     RenderProcessMode GetRenderProcessMode()
597     {
598         return RenderProcessMode::SINGLE_MODE;
599     }
600 
ClearPrefetchedResource(const std::vector<std::string> & cache_key_list)601     void ClearPrefetchedResource(const std::vector<std::string>& cache_key_list) {}
602 
WarmupServiceWorker(const std::string & url)603     void WarmupServiceWorker(const std::string& url) {}
604 
SetHostIP(const std::string & hostName,const std::string & address,int32_t aliveTime)605     void SetHostIP(const std::string& hostName, const std::string& address, int32_t aliveTime) {}
606 
ClearHostIP(const std::string & hostName)607     void ClearHostIP(const std::string& hostName) {}
608 
SetAppCustomUserAgent(const std::string & userAgent)609     void SetAppCustomUserAgent(const std::string& userAgent) {}
610 
SetUserAgentForHosts(const std::string & userAgent,const std::vector<std::string> & hosts)611     void SetUserAgentForHosts(const std::string& userAgent, const std::vector<std::string>& hosts) {}
612 
SetWholeWebDrawing()613     void SetWholeWebDrawing() {}
614 
GetAdsBlockManager()615     std::shared_ptr<NWebAdsBlockManager> GetAdsBlockManager()
616     {
617         return nullptr;
618     }
619 
EnableBackForwardCache(bool nativeEmbed,bool mediaTakeOver)620     void EnableBackForwardCache(bool nativeEmbed, bool mediaTakeOver) {}
621 
RemoveAllCache(bool include_disk_files)622     void RemoveAllCache(bool include_disk_files) {}
623 };
624 
625 
626 class OHArkwebSchemeHandlerTest : public testing::Test {
627 public:
628     static void SetUpTestCase(void);
629     static void TearDownTestCase(void);
630     void SetUp();
631     void TearDown();
632 };
633 
SetUpTestCase(void)634 void OHArkwebSchemeHandlerTest::SetUpTestCase(void)
635 {}
636 
TearDownTestCase(void)637 void OHArkwebSchemeHandlerTest::TearDownTestCase(void)
638 {}
639 
SetUp(void)640 void OHArkwebSchemeHandlerTest::SetUp(void)
641 {}
642 
TearDown(void)643 void OHArkwebSchemeHandlerTest::TearDown(void)
644 {}
645 
646 
647 /**
648  * @tc.name  : OHArkwebSchemeHandlerTest_SchemeHandlerApiIsNull_001
649  * @tc.desc  : g_SchemeHandlerApi is nullptr
650  */
651 HWTEST_F(OHArkwebSchemeHandlerTest, OHArkwebSchemeHandlerTest_SchemeHandlerApiIsNull_001, TestSize.Level1) {
652     ArkWeb_RequestHeaderList* headerList = nullptr;
653     OH_ArkWebRequestHeaderList_Destroy(headerList);
654     int32_t ret = OH_ArkWebRequestHeaderList_GetSize(headerList);
655     EXPECT_EQ(ret, -1);
656 
657     int32_t index = 0;
658     char* key = nullptr;
659     char* value = nullptr;
660     OH_ArkWebRequestHeaderList_GetHeader(headerList, index, &key, &value);
661 
662     ArkWeb_ResourceRequest* resourceRequest = nullptr;
663     char* method = nullptr;
664     OH_ArkWebResourceRequest_GetMethod(resourceRequest, &method);
665 
666     char* url = nullptr;
667     OH_ArkWebResourceRequest_GetUrl(resourceRequest, &url);
668 
669     ArkWeb_HttpBodyStream* httpBodyStream = nullptr;
670     OH_ArkWebResourceRequest_GetHttpBodyStream(resourceRequest, &httpBodyStream);
671     OH_ArkWebResourceRequest_DestroyHttpBodyStream(httpBodyStream);
672 
673     ret = OH_ArkWebResourceRequest_GetResourceType(resourceRequest);
674     EXPECT_EQ(ret, -1);
675 
676     char* frameUrl = nullptr;
677     OH_ArkWebResourceRequest_GetFrameUrl(resourceRequest, &frameUrl);
678 
679     void* userData = nullptr;
680     int32_t result = OH_ArkWebHttpBodyStream_SetUserData(httpBodyStream, userData);
681     EXPECT_EQ(result, ARKWEB_ERROR_UNKNOWN);
682 
683     void* userDataGet = OH_ArkWebHttpBodyStream_GetUserData(httpBodyStream);
684     EXPECT_EQ(userDataGet, nullptr);
685 }
686 
687 /**
688  * @tc.name  : OHArkwebSchemeHandlerTest_SchemeHandlerApiIsNull_002
689  * @tc.desc  : g_SchemeHandlerApi is nullptr
690  */
691 HWTEST_F(OHArkwebSchemeHandlerTest, OHArkwebSchemeHandlerTest_SchemeHandlerApiIsNull_002, TestSize.Level1) {
692     ArkWeb_HttpBodyStream* httpBodyStream = nullptr;
693     ArkWeb_HttpBodyStreamReadCallback readCallback = nullptr;
694     int32_t result = OH_ArkWebHttpBodyStream_SetReadCallback(httpBodyStream, readCallback);
695     EXPECT_EQ(result, ARKWEB_ERROR_UNKNOWN);
696     ArkWeb_HttpBodyStreamAsyncReadCallback readAsyncCallback = nullptr;
697     result = OH_ArkWebHttpBodyStream_SetAsyncReadCallback(httpBodyStream, readAsyncCallback);
698     EXPECT_EQ(result, ARKWEB_ERROR_UNKNOWN);
699 
700     ArkWeb_HttpBodyStreamInitCallback initCallback = nullptr;
701     result = OH_ArkWebHttpBodyStream_Init(httpBodyStream, initCallback);
702     EXPECT_EQ(result, ARKWEB_ERROR_UNKNOWN);
703 
704     const ArkWeb_HttpBodyStream* httpBodyStream1 = nullptr;
705     uint8_t buffer[256] = {0};
706     int bufLen = sizeof(buffer);
707     OH_ArkWebHttpBodyStream_Read(httpBodyStream1, buffer, bufLen);
708     OH_ArkWebHttpBodyStream_AsyncRead(httpBodyStream1, buffer, bufLen);
709 
710     uint64_t size = OH_ArkWebHttpBodyStream_GetSize(httpBodyStream1);
711     EXPECT_EQ(size, 0);
712     uint64_t position = OH_ArkWebHttpBodyStream_GetPosition(httpBodyStream1);
713     EXPECT_EQ(position, 0);
714     bool boolResult = OH_ArkWebHttpBodyStream_IsChunked(httpBodyStream);
715     EXPECT_FALSE(boolResult);
716     boolResult = OH_ArkWebHttpBodyStream_IsEof(httpBodyStream);
717     EXPECT_FALSE(boolResult);
718     boolResult = OH_ArkWebHttpBodyStream_IsInMemory(httpBodyStream);
719     EXPECT_FALSE(boolResult);
720 
721     const ArkWeb_ResourceRequest* resourceRequest = nullptr;
722     result = OH_ArkWebResourceRequest_Destroy(resourceRequest);
723     EXPECT_EQ(result, ARKWEB_ERROR_UNKNOWN);
724     char* referrer = nullptr;
725     OH_ArkWebResourceRequest_GetReferrer(resourceRequest, &referrer);
726 }
727 
728 /**
729  * @tc.name  : OHArkwebSchemeHandlerTest_SchemeHandlerApiIsNull_003
730  * @tc.desc  : g_SchemeHandlerApi is nullptr
731  */
732 HWTEST_F(OHArkwebSchemeHandlerTest, OHArkwebSchemeHandlerTest_SchemeHandlerApiIsNull_003, TestSize.Level1) {
733     ArkWeb_ResourceRequest* resourceRequest = nullptr;
734     void* userData = nullptr;
735     int32_t result = OH_ArkWebResourceRequest_SetUserData(resourceRequest, userData);
736     EXPECT_EQ(result, ARKWEB_ERROR_UNKNOWN);
737 
738     const ArkWeb_ResourceRequest* resourceRequest1 = nullptr;
739     void* userData1 = OH_ArkWebResourceRequest_GetUserData(resourceRequest1);
740     EXPECT_EQ(userData1, nullptr);
741 
742     ArkWeb_RequestHeaderList* requestHeaderList = nullptr;
743     OH_ArkWebResourceRequest_GetRequestHeaders(resourceRequest1, &requestHeaderList);
744     EXPECT_EQ(requestHeaderList, nullptr);
745 
746     bool boolResult = OH_ArkWebResourceRequest_IsRedirect(resourceRequest1);
747     EXPECT_EQ(boolResult, false);
748     boolResult = OH_ArkWebResourceRequest_IsMainFrame(resourceRequest1);
749     EXPECT_EQ(boolResult, false);
750     boolResult = OH_ArkWebResourceRequest_HasGesture(resourceRequest);
751     EXPECT_EQ(boolResult, false);
752 
753     const char* webTag = nullptr;
754     result = OH_ArkWeb_ClearSchemeHandlers(webTag);
755     EXPECT_EQ(result, ARKWEB_ERROR_UNKNOWN);
756     result = OH_ArkWebServiceWorker_ClearSchemeHandlers();
757     EXPECT_EQ(result, ARKWEB_ERROR_UNKNOWN);
758     ArkWeb_SchemeHandler* schemeHandler = nullptr;
759     OH_ArkWeb_DestroySchemeHandler(schemeHandler);
760 
761     result = OH_ArkWebSchemeHandler_SetUserData(schemeHandler, userData);
762     EXPECT_EQ(result, ARKWEB_ERROR_UNKNOWN);
763 
764     const ArkWeb_SchemeHandler* schemeHandler1 = nullptr;
765     void* userData2 = OH_ArkWebSchemeHandler_GetUserData(schemeHandler1);
766     EXPECT_EQ(userData2, nullptr);
767 }
768 
769 /**
770  * @tc.name  : OHArkwebSchemeHandlerTest_SchemeHandlerApiIsNull_004
771  * @tc.desc  : g_SchemeHandlerApi is nullptr
772  */
773 HWTEST_F(OHArkwebSchemeHandlerTest, OHArkwebSchemeHandlerTest_SchemeHandlerApiIsNull_004, TestSize.Level1) {
774     ArkWeb_SchemeHandler* schemeHandler = nullptr;
775     ArkWeb_OnRequestStart onRequestStart = nullptr;
776     int32_t result = OH_ArkWebSchemeHandler_SetOnRequestStart(schemeHandler, onRequestStart);
777     EXPECT_EQ(result, ARKWEB_ERROR_UNKNOWN);
778     ArkWeb_OnRequestStop onRequestStop = nullptr;
779     result = OH_ArkWebSchemeHandler_SetOnRequestStop(schemeHandler, onRequestStop);
780     EXPECT_EQ(result, ARKWEB_ERROR_UNKNOWN);
781     ArkWeb_Response* response = nullptr;
782     OH_ArkWeb_DestroyResponse(response);
783     const char* url = "www.example.com";
784     result = OH_ArkWebResponse_SetUrl(response, url);
785     EXPECT_EQ(result, ARKWEB_ERROR_UNKNOWN);
786     char* url1 = nullptr;
787     OH_ArkWebResponse_GetUrl(response, &url1);
788 
789     ArkWeb_NetError errorCode = ARKWEB_NET_OK;
790     result = OH_ArkWebResponse_SetError(response, errorCode);
791     EXPECT_EQ(result, ARKWEB_ERROR_UNKNOWN);
792     ArkWeb_NetError errorCodeRes = OH_ArkWebResponse_GetError(response);
793     EXPECT_EQ(errorCodeRes, ARKWEB_ERR_FAILED);
794     int status = -1;
795     result = OH_ArkWebResponse_SetStatus(response, status);
796     EXPECT_EQ(result, ARKWEB_ERROR_UNKNOWN);
797     int statusRes = OH_ArkWebResponse_GetStatus(response);
798     EXPECT_EQ(statusRes, -1);
799 
800     const char* statusText = "Test Status Text";
801     result = OH_ArkWebResponse_SetStatusText(response, statusText);
802     EXPECT_EQ(result, ARKWEB_ERROR_UNKNOWN);
803     char* statusTextGet = nullptr;
804     OH_ArkWebResponse_GetStatusText(response, &statusTextGet);
805 
806     const char* mimeType = "text/plain";
807     result = OH_ArkWebResponse_SetMimeType(response, mimeType);
808     EXPECT_EQ(result, ARKWEB_ERROR_UNKNOWN);
809     char* mimeTypeRes = nullptr;
810     OH_ArkWebResponse_GetMimeType(response, &mimeTypeRes);
811     const char* charSet = "";
812     result = OH_ArkWebResponse_SetCharset(response, charSet);
813     EXPECT_EQ(result, ARKWEB_ERROR_UNKNOWN);
814     char* charSetRes = nullptr;
815     OH_ArkWebResponse_GetCharset(response, &charSetRes);
816     const char* name = "TestHeaderName";
817     const char* value = "TestHeaderValue";
818     result = OH_ArkWebResponse_SetHeaderByName(response, name, value, true);
819     EXPECT_EQ(result, ARKWEB_ERROR_UNKNOWN);
820     char* valueRes = nullptr;
821     OH_ArkWebResponse_GetHeaderByName(response, name, &valueRes);
822 }
823 
824 /**
825  * @tc.name  : OHArkwebSchemeHandlerTest_SchemeHandlerApiIsNull_005
826  * @tc.desc  : g_SchemeHandlerApi is nullptr
827  */
828 HWTEST_F(OHArkwebSchemeHandlerTest, OHArkwebSchemeHandlerTest_SchemeHandlerApiIsNull_005, TestSize.Level1) {
829     ArkWeb_ResourceHandler* resourceHandler = nullptr;
830     int32_t res = OH_ArkWebResourceHandler_Destroy(resourceHandler);
831     EXPECT_EQ(res, ARKWEB_ERROR_UNKNOWN);
832 
833     ArkWeb_Response* response;
834     res = OH_ArkWebResourceHandler_DidReceiveResponse(resourceHandler, response);
835     EXPECT_EQ(res, ARKWEB_ERROR_UNKNOWN);
836 
837     const uint8_t* buffer = reinterpret_cast<const uint8_t*>("TestBuffer");
838     int64_t bufLen = strlen("TestBuffer");
839     res = OH_ArkWebResourceHandler_DidReceiveData(nullptr, buffer, bufLen);
840     EXPECT_EQ(res, ARKWEB_ERROR_UNKNOWN);
841     res = OH_ArkWebResourceHandler_DidFinish(nullptr);
842     EXPECT_EQ(res, ARKWEB_ERROR_UNKNOWN);
843 
844     ArkWeb_NetError errorCode = ARKWEB_NET_OK;
845     res = OH_ArkWebResourceHandler_DidFailWithError(resourceHandler, errorCode);
846     EXPECT_EQ(res, ARKWEB_ERROR_UNKNOWN);
847     res = OH_ArkWebResourceHandler_DidFailWithErrorV2(resourceHandler, errorCode, true);
848     EXPECT_EQ(res, ARKWEB_ERROR_UNKNOWN);
849     char* str = nullptr;
850     OH_ArkWeb_ReleaseString(str);
851     uint8_t byteArray[10] = {0};
852     OH_ArkWeb_ReleaseByteArray(byteArray);
853     ArkWeb_SchemeHandler* schemeHandler = nullptr;
854     res = OH_ArkWebSchemeHandler_SetFromEts(schemeHandler, true);
855     EXPECT_EQ(res, ARKWEB_ERROR_UNKNOWN);
856 }
857 
858 /**
859  * @tc.name  : OHArkwebSchemeHandlerTest_WebEngineHandleIsNull_004
860  * @tc.desc  : webEngineHandle is nullptr and g_SchemeHandlerApi is nullptr
861  */
862 HWTEST_F(OHArkwebSchemeHandlerTest, OHArkwebSchemeHandlerTest_WebEngineHandleIsNull_004, TestSize.Level1) {
863     NWebHelper::Instance().bundlePath_ = "";
864     const char* scheme = "scheme";
865     int32_t option = 0;
866     const char* webTag = "webTag";
867     ArkWeb_SchemeHandler* schemeHandler = nullptr;
868 
869     EXPECT_EQ(OH_ArkWeb_RegisterCustomSchemes(scheme, option), ARKWEB_ERROR_UNKNOWN);
870     EXPECT_FALSE(OH_ArkWeb_SetSchemeHandler(scheme, webTag, schemeHandler));
871     EXPECT_FALSE(OH_ArkWebServiceWorker_SetSchemeHandler(scheme, schemeHandler));
872     OH_ArkWeb_CreateSchemeHandler(&schemeHandler);
873     ArkWeb_Response* response = nullptr;
874     OH_ArkWeb_CreateResponse(&response);
875 
876     auto nwebEngineMock = std::make_shared<MockNWebEngine>();
877     NWebHelper::Instance().nwebEngine_ = nwebEngineMock;
878     EXPECT_EQ(OH_ArkWeb_RegisterCustomSchemes(scheme, option), ARKWEB_ERROR_UNKNOWN);
879     DestroySchemeHandlerApiForTest();
880     EXPECT_FALSE(OH_ArkWeb_SetSchemeHandler(scheme, webTag, schemeHandler));
881     DestroySchemeHandlerApiForTest();
882     EXPECT_FALSE(OH_ArkWebServiceWorker_SetSchemeHandler(scheme, schemeHandler));
883     DestroySchemeHandlerApiForTest();
884     OH_ArkWeb_CreateSchemeHandler(&schemeHandler);
885     DestroySchemeHandlerApiForTest();
886     OH_ArkWeb_CreateResponse(&response);
887 }
888 
889 /**
890  * @tc.name  : OHArkwebSchemeHandlerTest_SchemeHandlerApiXXXIsNull_001
891  * @tc.desc  : g_SchemeHandlerApi is not null but g_SchemeHandlerApi->xxx is null
892  */
893 HWTEST_F(OHArkwebSchemeHandlerTest, OHArkwebSchemeHandlerTest_SchemeHandlerApiXXXIsNull_001, TestSize.Level1) {
894     ArkWeb_RequestHeaderList* headerList = nullptr;
895     OH_ArkWebRequestHeaderList_Destroy(headerList);
896     EXPECT_EQ(OH_ArkWebRequestHeaderList_GetSize(headerList), -1);
897 
898     int32_t index = 0;
899     char* key = nullptr;
900     char* value = nullptr;
901     OH_ArkWebRequestHeaderList_GetHeader(headerList, index, &key, &value);
902 
903     ArkWeb_ResourceRequest* resourceRequest = nullptr;
904     char* method = nullptr;
905     OH_ArkWebResourceRequest_GetMethod(resourceRequest, &method);
906 
907     char* url = nullptr;
908     OH_ArkWebResourceRequest_GetUrl(resourceRequest, &url);
909 
910     ArkWeb_HttpBodyStream* httpBodyStream = nullptr;
911     OH_ArkWebResourceRequest_GetHttpBodyStream(resourceRequest, &httpBodyStream);
912     OH_ArkWebResourceRequest_DestroyHttpBodyStream(httpBodyStream);
913 
914     EXPECT_EQ(OH_ArkWebResourceRequest_GetResourceType(resourceRequest), -1);
915 
916     char* frameUrl = nullptr;
917     OH_ArkWebResourceRequest_GetFrameUrl(resourceRequest, &frameUrl);
918 
919     void* userData = nullptr;
920     int32_t result = OH_ArkWebHttpBodyStream_SetUserData(httpBodyStream, userData);
921     EXPECT_EQ(result, ARKWEB_ERROR_UNKNOWN);
922     EXPECT_EQ(OH_ArkWebHttpBodyStream_GetUserData(httpBodyStream), nullptr);
923 }
924 
925 /**
926  * @tc.name  : OHArkwebSchemeHandlerTest_SchemeHandlerApiXXXIsNull_002
927  * @tc.desc  : g_SchemeHandlerApi is not null but g_SchemeHandlerApi->xxx is null
928  */
929 HWTEST_F(OHArkwebSchemeHandlerTest, OHArkwebSchemeHandlerTest_SchemeHandlerApiXXXIsNull_002, TestSize.Level1) {
930     ArkWeb_HttpBodyStream* httpBodyStream = nullptr;
931     ArkWeb_HttpBodyStreamReadCallback readCallback = nullptr;
932     int32_t result = OH_ArkWebHttpBodyStream_SetReadCallback(httpBodyStream, readCallback);
933     EXPECT_EQ(result, ARKWEB_ERROR_UNKNOWN);
934     ArkWeb_HttpBodyStreamAsyncReadCallback readAsyncCallback = nullptr;
935     result = OH_ArkWebHttpBodyStream_SetAsyncReadCallback(httpBodyStream, readAsyncCallback);
936     EXPECT_EQ(result, ARKWEB_ERROR_UNKNOWN);
937 
938     ArkWeb_HttpBodyStreamInitCallback initCallback = nullptr;
939     result = OH_ArkWebHttpBodyStream_Init(httpBodyStream, initCallback);
940     EXPECT_EQ(result, ARKWEB_ERROR_UNKNOWN);
941 
942     const ArkWeb_HttpBodyStream* httpBodyStream1 = nullptr;
943     uint8_t buffer[256] = {0};
944     int bufLen = sizeof(buffer);
945     OH_ArkWebHttpBodyStream_Read(httpBodyStream1, buffer, bufLen);
946     OH_ArkWebHttpBodyStream_AsyncRead(httpBodyStream1, buffer, bufLen);
947 
948     uint64_t size = OH_ArkWebHttpBodyStream_GetSize(httpBodyStream1);
949     EXPECT_EQ(size, 0);
950     uint64_t position = OH_ArkWebHttpBodyStream_GetPosition(httpBodyStream1);
951     EXPECT_EQ(position, 0);
952     bool boolResult = OH_ArkWebHttpBodyStream_IsChunked(httpBodyStream);
953     EXPECT_FALSE(boolResult);
954     boolResult = OH_ArkWebHttpBodyStream_IsEof(httpBodyStream);
955     EXPECT_FALSE(boolResult);
956     boolResult = OH_ArkWebHttpBodyStream_IsInMemory(httpBodyStream);
957     EXPECT_FALSE(boolResult);
958 
959     const ArkWeb_ResourceRequest* resourceRequest = nullptr;
960     result = OH_ArkWebResourceRequest_Destroy(resourceRequest);
961     EXPECT_EQ(result, ARKWEB_ERROR_UNKNOWN);
962     char* referrer = nullptr;
963     OH_ArkWebResourceRequest_GetReferrer(resourceRequest, &referrer);
964 }
965 
966 /**
967  * @tc.name  : OHArkwebSchemeHandlerTest_SchemeHandlerApiXXXIsNull_003
968  * @tc.desc  : g_SchemeHandlerApi is not null but g_SchemeHandlerApi->xxx is null
969  */
970 HWTEST_F(OHArkwebSchemeHandlerTest, OHArkwebSchemeHandlerTest_SchemeHandlerApiXXXIsNull_003, TestSize.Level1) {
971     ArkWeb_ResourceRequest* resourceRequest = nullptr;
972     void* userData = nullptr;
973     int32_t result = OH_ArkWebResourceRequest_SetUserData(resourceRequest, userData);
974     EXPECT_EQ(result, ARKWEB_ERROR_UNKNOWN);
975 
976     const ArkWeb_ResourceRequest* resourceRequest1 = nullptr;
977     void* userData1 = OH_ArkWebResourceRequest_GetUserData(resourceRequest1);
978     EXPECT_EQ(userData1, nullptr);
979 
980     ArkWeb_RequestHeaderList* requestHeaderList = nullptr;
981     OH_ArkWebResourceRequest_GetRequestHeaders(resourceRequest1, &requestHeaderList);
982     EXPECT_EQ(requestHeaderList, nullptr);
983 
984     bool boolResult = OH_ArkWebResourceRequest_IsRedirect(resourceRequest1);
985     EXPECT_EQ(boolResult, false);
986     boolResult = OH_ArkWebResourceRequest_IsMainFrame(resourceRequest1);
987     EXPECT_EQ(boolResult, false);
988     boolResult = OH_ArkWebResourceRequest_HasGesture(resourceRequest);
989     EXPECT_EQ(boolResult, false);
990 
991     const char* webTag = nullptr;
992     result = OH_ArkWeb_ClearSchemeHandlers(webTag);
993     EXPECT_EQ(result, ARKWEB_ERROR_UNKNOWN);
994     result = OH_ArkWebServiceWorker_ClearSchemeHandlers();
995     EXPECT_EQ(result, ARKWEB_ERROR_UNKNOWN);
996     ArkWeb_SchemeHandler* schemeHandler = nullptr;
997     OH_ArkWeb_DestroySchemeHandler(schemeHandler);
998 
999     result = OH_ArkWebSchemeHandler_SetUserData(schemeHandler, userData);
1000     EXPECT_EQ(result, ARKWEB_ERROR_UNKNOWN);
1001 
1002     const ArkWeb_SchemeHandler* schemeHandler1 = nullptr;
1003     void* userData2 = OH_ArkWebSchemeHandler_GetUserData(schemeHandler1);
1004     EXPECT_EQ(userData2, nullptr);
1005 }
1006 
1007 /**
1008  * @tc.name  : OHArkwebSchemeHandlerTest_SchemeHandlerApiXXXIsNull_004
1009  * @tc.desc  : g_SchemeHandlerApi is not null but g_SchemeHandlerApi->xxx is null
1010  */
1011 HWTEST_F(OHArkwebSchemeHandlerTest, OHArkwebSchemeHandlerTest_SchemeHandlerApiXXXIsNull_004, TestSize.Level1) {
1012     ArkWeb_SchemeHandler* schemeHandler = nullptr;
1013     ArkWeb_OnRequestStart onRequestStart = nullptr;
1014     int32_t result = OH_ArkWebSchemeHandler_SetOnRequestStart(schemeHandler, onRequestStart);
1015     EXPECT_EQ(result, ARKWEB_ERROR_UNKNOWN);
1016     ArkWeb_OnRequestStop onRequestStop = nullptr;
1017     result = OH_ArkWebSchemeHandler_SetOnRequestStop(schemeHandler, onRequestStop);
1018     EXPECT_EQ(result, ARKWEB_ERROR_UNKNOWN);
1019     ArkWeb_Response* response = nullptr;
1020     OH_ArkWeb_DestroyResponse(response);
1021     const char* url = "www.example.com";
1022     EXPECT_EQ(OH_ArkWebResponse_SetUrl(response, url), ARKWEB_ERROR_UNKNOWN);
1023     char* url1 = nullptr;
1024     OH_ArkWebResponse_GetUrl(response, &url1);
1025 
1026     ArkWeb_NetError errorCode = ARKWEB_NET_OK;
1027     EXPECT_EQ(OH_ArkWebResponse_SetError(response, errorCode), ARKWEB_ERROR_UNKNOWN);
1028     ArkWeb_NetError errorCodeRes = OH_ArkWebResponse_GetError(response);
1029     EXPECT_EQ(errorCodeRes, ARKWEB_ERR_FAILED);
1030     int status = -1;
1031     EXPECT_EQ(OH_ArkWebResponse_SetStatus(response, status), ARKWEB_ERROR_UNKNOWN);
1032     EXPECT_EQ(OH_ArkWebResponse_GetStatus(response), -1);
1033 
1034     const char* statusText = "Test Status Text";
1035     EXPECT_EQ(OH_ArkWebResponse_SetStatusText(response, statusText), ARKWEB_ERROR_UNKNOWN);
1036     char* statusTextGet = nullptr;
1037     OH_ArkWebResponse_GetStatusText(response, &statusTextGet);
1038 
1039     const char* mimeType = "text/plain";
1040     EXPECT_EQ(OH_ArkWebResponse_SetMimeType(response, mimeType), ARKWEB_ERROR_UNKNOWN);
1041     char* mimeTypeRes = nullptr;
1042     OH_ArkWebResponse_GetMimeType(response, &mimeTypeRes);
1043     const char* charSet = "";
1044     EXPECT_EQ(OH_ArkWebResponse_SetCharset(response, charSet), ARKWEB_ERROR_UNKNOWN);
1045     char* charSetRes = nullptr;
1046     OH_ArkWebResponse_GetCharset(response, &charSetRes);
1047     const char* name = "TestHeaderName";
1048     const char* value = "TestHeaderValue";
1049     result = OH_ArkWebResponse_SetHeaderByName(response, name, value, true);
1050     EXPECT_EQ(result, ARKWEB_ERROR_UNKNOWN);
1051     char* valueRes = nullptr;
1052     OH_ArkWebResponse_GetHeaderByName(response, name, &valueRes);
1053 }
1054 
1055 /**
1056  * @tc.name  : OHArkwebSchemeHandlerTest_SchemeHandlerApiXXXIsNull_005
1057  * @tc.desc  : g_SchemeHandlerApi is not null but g_SchemeHandlerApi->xxx is null
1058  */
1059 HWTEST_F(OHArkwebSchemeHandlerTest, OHArkwebSchemeHandlerTest_SchemeHandlerApiXXXIsNull_005, TestSize.Level1) {
1060     ArkWeb_ResourceHandler* resourceHandler = nullptr;
1061     int32_t res = OH_ArkWebResourceHandler_Destroy(resourceHandler);
1062     EXPECT_EQ(res, ARKWEB_ERROR_UNKNOWN);
1063 
1064     ArkWeb_Response* response;
1065     res = OH_ArkWebResourceHandler_DidReceiveResponse(resourceHandler, response);
1066     EXPECT_EQ(res, ARKWEB_ERROR_UNKNOWN);
1067 
1068     const uint8_t* buffer = reinterpret_cast<const uint8_t*>("TestBuffer");
1069     int64_t bufLen = strlen("TestBuffer");
1070     res = OH_ArkWebResourceHandler_DidReceiveData(nullptr, buffer, bufLen);
1071     EXPECT_EQ(res, ARKWEB_ERROR_UNKNOWN);
1072     res = OH_ArkWebResourceHandler_DidFinish(nullptr);
1073     EXPECT_EQ(res, ARKWEB_ERROR_UNKNOWN);
1074 
1075     ArkWeb_NetError errorCode = ARKWEB_NET_OK;
1076     res = OH_ArkWebResourceHandler_DidFailWithError(resourceHandler, errorCode);
1077     EXPECT_EQ(res, ARKWEB_ERROR_UNKNOWN);
1078     res = OH_ArkWebResourceHandler_DidFailWithErrorV2(resourceHandler, errorCode, true);
1079     EXPECT_EQ(res, ARKWEB_ERROR_UNKNOWN);
1080     char* str = nullptr;
1081     OH_ArkWeb_ReleaseString(str);
1082     uint8_t byteArray[10] = {0};
1083     OH_ArkWeb_ReleaseByteArray(byteArray);
1084     ArkWeb_SchemeHandler* schemeHandler = nullptr;
1085     res = OH_ArkWebSchemeHandler_SetFromEts(schemeHandler, true);
1086     EXPECT_EQ(res, ARKWEB_ERROR_UNKNOWN);
1087 
1088     DestroySchemeHandlerApiForTest();
1089     NWebHelper::Instance().nwebEngine_ = nullptr;
1090 }
1091 
1092 /**
1093  * @tc.name  : OHArkwebSchemeHandlerTest_SchemeHandlerApiIsNotNull_001
1094  * @tc.desc  : g_SchemeHandlerApi is not nullptr
1095  */
1096 HWTEST_F(OHArkwebSchemeHandlerTest, OHArkwebSchemeHandlerTest_SchemeHandlerApiIsNotNull_001, TestSize.Level1) {
1097     SetSchemeHandlerApiForTest(&g_testSchemeHandlerApi);
1098     ArkWeb_RequestHeaderList* headerList = nullptr;
1099     OH_ArkWebRequestHeaderList_Destroy(headerList);
1100     int32_t ret = OH_ArkWebRequestHeaderList_GetSize(headerList);
1101     EXPECT_EQ(ret, 0);
1102 
1103     int32_t index = 0;
1104     char* key = nullptr;
1105     char* value = nullptr;
1106     OH_ArkWebRequestHeaderList_GetHeader(headerList, index, &key, &value);
1107 
1108     ArkWeb_ResourceRequest* resourceRequest = nullptr;
1109     char* method = nullptr;
1110     OH_ArkWebResourceRequest_GetMethod(resourceRequest, &method);
1111 
1112     char* url = nullptr;
1113     OH_ArkWebResourceRequest_GetUrl(resourceRequest, &url);
1114 
1115     ArkWeb_HttpBodyStream* httpBodyStream = nullptr;
1116     OH_ArkWebResourceRequest_GetHttpBodyStream(resourceRequest, &httpBodyStream);
1117     OH_ArkWebResourceRequest_DestroyHttpBodyStream(httpBodyStream);
1118     EXPECT_EQ(OH_ArkWebResourceRequest_GetResourceType(resourceRequest), 0);
1119     OH_ArkWebResourceRequest_GetFrameUrl(resourceRequest, &url);
1120 
1121     void* userData = nullptr;
1122     ret = OH_ArkWebHttpBodyStream_SetUserData(httpBodyStream, userData);
1123     EXPECT_EQ(ret, 0);
1124 
1125     std::ignore = OH_ArkWebHttpBodyStream_GetUserData(httpBodyStream);
1126     ArkWeb_HttpBodyStreamReadCallback readCallback = nullptr;
1127     ret = OH_ArkWebHttpBodyStream_SetReadCallback(httpBodyStream, readCallback);
1128     EXPECT_EQ(ret, 0);
1129     ArkWeb_HttpBodyStreamAsyncReadCallback readAsyncCallback = nullptr;
1130     ret = OH_ArkWebHttpBodyStream_SetAsyncReadCallback(httpBodyStream, readAsyncCallback);
1131     EXPECT_EQ(ret, 0);
1132 
1133     ArkWeb_HttpBodyStreamInitCallback initCallback = nullptr;
1134     EXPECT_EQ(OH_ArkWebHttpBodyStream_Init(httpBodyStream, initCallback), 0);
1135 
1136     const ArkWeb_HttpBodyStream* httpBodyStream1 = nullptr;
1137     uint8_t buffer[256] = {0};
1138     int bufLen = sizeof(buffer);
1139     OH_ArkWebHttpBodyStream_Read(httpBodyStream1, buffer, bufLen);
1140     OH_ArkWebHttpBodyStream_AsyncRead(httpBodyStream1, buffer, bufLen);
1141     EXPECT_EQ(OH_ArkWebHttpBodyStream_GetSize(httpBodyStream1), 1);
1142     EXPECT_EQ(OH_ArkWebHttpBodyStream_GetPosition(httpBodyStream1), 1);
1143     EXPECT_TRUE(OH_ArkWebHttpBodyStream_IsChunked(httpBodyStream));
1144     EXPECT_TRUE(OH_ArkWebHttpBodyStream_IsEof(httpBodyStream));
1145     EXPECT_TRUE(OH_ArkWebHttpBodyStream_IsInMemory(httpBodyStream));
1146     EXPECT_EQ(OH_ArkWebResourceRequest_Destroy(resourceRequest), 0);
1147     char* referrer = nullptr;
1148     OH_ArkWebResourceRequest_GetReferrer(resourceRequest, &referrer);
1149 }
1150 
1151 /**
1152  * @tc.name  : OHArkwebSchemeHandlerTest_SchemeHandlerApiIsNotNull_002
1153  * @tc.desc  : g_SchemeHandlerApi is not nullptr
1154  */
1155 HWTEST_F(OHArkwebSchemeHandlerTest, OHArkwebSchemeHandlerTest_SchemeHandlerApiIsNotNull_002, TestSize.Level1) {
1156     ArkWeb_ResourceRequest* resourceRequest = nullptr;
1157     void* userData = nullptr;
1158     EXPECT_EQ(OH_ArkWebResourceRequest_SetUserData(resourceRequest, userData), 0);
1159 
1160     const ArkWeb_ResourceRequest* resourceRequest1 = nullptr;
1161     std::ignore = OH_ArkWebResourceRequest_GetUserData(resourceRequest1);
1162     ArkWeb_RequestHeaderList* requestHeaderList = nullptr;
1163     OH_ArkWebResourceRequest_GetRequestHeaders(resourceRequest1, &requestHeaderList);
1164 
1165     EXPECT_TRUE(OH_ArkWebResourceRequest_IsRedirect(resourceRequest1));
1166     EXPECT_TRUE(OH_ArkWebResourceRequest_IsMainFrame(resourceRequest1));
1167     EXPECT_TRUE(OH_ArkWebResourceRequest_HasGesture(resourceRequest1));
1168 
1169     const char* webTag = nullptr;
1170     EXPECT_EQ(OH_ArkWeb_ClearSchemeHandlers(webTag), 0);
1171     EXPECT_EQ(OH_ArkWebServiceWorker_ClearSchemeHandlers(), 0);
1172     ArkWeb_SchemeHandler* schemeHandler = nullptr;
1173     OH_ArkWeb_DestroySchemeHandler(schemeHandler);
1174     EXPECT_EQ(OH_ArkWebSchemeHandler_SetUserData(schemeHandler, userData), 0);
1175 
1176     const ArkWeb_SchemeHandler* schemeHandler1 = nullptr;
1177     void* userData2 = OH_ArkWebSchemeHandler_GetUserData(schemeHandler1);
1178     EXPECT_EQ(userData2, nullptr);
1179 
1180     ArkWeb_OnRequestStart onRequestStart = nullptr;
1181     EXPECT_EQ(OH_ArkWebSchemeHandler_SetOnRequestStart(schemeHandler, onRequestStart), 0);
1182     ArkWeb_OnRequestStop onRequestStop = nullptr;
1183     EXPECT_EQ(OH_ArkWebSchemeHandler_SetOnRequestStop(schemeHandler, onRequestStop), 0);
1184     ArkWeb_Response* response = nullptr;
1185     OH_ArkWeb_DestroyResponse(response);
1186     const char* url = "www.example.com";
1187     EXPECT_EQ(OH_ArkWebResponse_SetUrl(response, url), 0);
1188     char* url1 = nullptr;
1189     OH_ArkWebResponse_GetUrl(response, &url1);
1190 
1191     const char* statusText = "Test Status Text";
1192     EXPECT_EQ(OH_ArkWebResponse_SetStatusText(response, statusText), 0);
1193     char* statusTextGet = nullptr;
1194     OH_ArkWebResponse_GetStatusText(response, &statusTextGet);
1195     const char* mimeType = "text/plain";
1196     EXPECT_EQ(OH_ArkWebResponse_SetMimeType(response, mimeType), 0);
1197     char* mimeTypeRes = nullptr;
1198     OH_ArkWebResponse_GetMimeType(response, &mimeTypeRes);
1199     const char* charSet = "";
1200     EXPECT_EQ(OH_ArkWebResponse_SetCharset(response, charSet), 0);
1201     char* charSetRes = nullptr;
1202     OH_ArkWebResponse_GetCharset(response, &charSetRes);
1203     const char* name = "TestHeaderName";
1204     const char* value = "TestHeaderValue";
1205     EXPECT_EQ(OH_ArkWebResponse_SetHeaderByName(response, name, value, true), 0);
1206     char* valueRes = nullptr;
1207     OH_ArkWebResponse_GetHeaderByName(response, name, &valueRes);
1208 }
1209 
1210 /**
1211  * @tc.name  : OHArkwebSchemeHandlerTest_SchemeHandlerApiIsNotNull_003
1212  * @tc.desc  : g_SchemeHandlerApi is not nullptr
1213  */
1214 HWTEST_F(OHArkwebSchemeHandlerTest, OHArkwebSchemeHandlerTest_SchemeHandlerApiIsNotNull_003, TestSize.Level1) {
1215     ArkWeb_ResourceHandler* resourceHandler = nullptr;
1216     EXPECT_EQ(OH_ArkWebResourceHandler_Destroy(resourceHandler), 0);
1217 
1218     ArkWeb_Response* response;
1219     EXPECT_EQ(OH_ArkWebResourceHandler_DidReceiveResponse(resourceHandler, response), 0);
1220 
1221     const uint8_t* buffer = reinterpret_cast<const uint8_t*>("TestBuffer");
1222     int64_t bufLen = strlen("TestBuffer");
1223     EXPECT_EQ(OH_ArkWebResourceHandler_DidReceiveData(nullptr, buffer, bufLen), 0);
1224     EXPECT_EQ(OH_ArkWebResourceHandler_DidFinish(nullptr), 0);
1225 
1226     ArkWeb_NetError errorCode = ARKWEB_NET_OK;
1227     EXPECT_EQ(OH_ArkWebResourceHandler_DidFailWithError(resourceHandler, errorCode), 0);
1228     EXPECT_EQ(OH_ArkWebResourceHandler_DidFailWithErrorV2(resourceHandler, errorCode, true), 0);
1229     char* str = nullptr;
1230     OH_ArkWeb_ReleaseString(str);
1231     uint8_t byteArray[10] = {0};
1232     OH_ArkWeb_ReleaseByteArray(byteArray);
1233     ArkWeb_SchemeHandler* schemeHandler = nullptr;
1234     EXPECT_EQ(OH_ArkWebSchemeHandler_SetFromEts(schemeHandler, true), 0);
1235 
1236     NWebHelper::Instance().bundlePath_ = "";
1237     const char* scheme = "scheme";
1238     int32_t option = 0;
1239     const char* webTag = "webTag";
1240     EXPECT_EQ(OH_ArkWeb_RegisterCustomSchemes(scheme, option), 0);
1241     EXPECT_TRUE(OH_ArkWeb_SetSchemeHandler(scheme, webTag, schemeHandler));
1242     EXPECT_TRUE(OH_ArkWebServiceWorker_SetSchemeHandler(scheme, schemeHandler));
1243     OH_ArkWeb_CreateSchemeHandler(&schemeHandler);
1244     ArkWeb_Response* response1 = nullptr;
1245     OH_ArkWeb_CreateResponse(&response1);
1246 
1247     EXPECT_EQ(OH_ArkWebResponse_SetError(response1, errorCode), 0);
1248     EXPECT_EQ(OH_ArkWebResponse_GetError(response1), ARKWEB_NET_OK);
1249     EXPECT_EQ(OH_ArkWebResponse_SetStatus(response1, -1), 0);
1250     EXPECT_EQ(OH_ArkWebResponse_GetStatus(response1), 0);
1251 
1252     SetSchemeHandlerApiForTest(nullptr);
1253 }
1254 
1255 }
1256 }
1257