• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2023-2024 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include "arkweb_scheme_handler.h"
17 
18 #include <memory>
19 #include <mutex>
20 #include <unordered_map>
21 #include <vector>
22 
23 #include "nweb.h"
24 #include "nweb_helper.h"
25 #include "nweb_log.h"
26 
27 namespace {
28 
29 // Run DO macro for every function defined in the API.
30 #define FOR_EACH_API_FN(DO)                             \
31     DO(OH_ArkWebRequestHeaderList_Destroy);             \
32     DO(OH_ArkWebRequestHeaderList_GetSize);             \
33     DO(OH_ArkWebRequestHeaderList_GetHeader);           \
34     DO(OH_ArkWebResourceRequest_GetMethod);             \
35     DO(OH_ArkWebResourceRequest_GetUrl);                \
36     DO(OH_ArkWebResourceRequest_GetHttpBodyStream);     \
37     DO(OH_ArkWebResourceRequest_DestroyHttpBodyStream); \
38     DO(OH_ArkWebResourceRequest_GetResourceType);       \
39     DO(OH_ArkWebResourceRequest_GetFrameUrl);           \
40     DO(OH_ArkWebHttpBodyStream_SetReadCallback);        \
41     DO(OH_ArkWebHttpBodyStream_SetAsyncReadCallback);   \
42     DO(OH_ArkWebHttpBodyStream_SetUserData);            \
43     DO(OH_ArkWebHttpBodyStream_GetUserData);            \
44     DO(OH_ArkWebHttpBodyStream_Init);                   \
45     DO(OH_ArkWebHttpBodyStream_Read);                   \
46     DO(OH_ArkWebHttpBodyStream_AsyncRead);              \
47     DO(OH_ArkWebHttpBodyStream_GetSize);                \
48     DO(OH_ArkWebHttpBodyStream_GetPosition);            \
49     DO(OH_ArkWebHttpBodyStream_IsChunked);              \
50     DO(OH_ArkWebHttpBodyStream_IsEof);                  \
51     DO(OH_ArkWebHttpBodyStream_IsInMemory);             \
52     DO(OH_ArkWebResourceRequest_Destroy);               \
53     DO(OH_ArkWebResourceRequest_SetUserData);           \
54     DO(OH_ArkWebResourceRequest_GetUserData);           \
55     DO(OH_ArkWebResourceRequest_GetReferrer);           \
56     DO(OH_ArkWebResourceRequest_GetRequestHeaders);     \
57     DO(OH_ArkWebResourceRequest_IsRedirect);            \
58     DO(OH_ArkWebResourceRequest_IsMainFrame);           \
59     DO(OH_ArkWebResourceRequest_HasGesture);            \
60     DO(OH_ArkWeb_RegisterCustomSchemes);                \
61     DO(OH_ArkWeb_SetSchemeHandler);                     \
62     DO(OH_ArkWebServiceWorker_SetSchemeHandler);        \
63     DO(OH_ArkWebServiceWorker_ClearSchemeHandlers);     \
64     DO(OH_ArkWeb_ClearSchemeHandlers);                  \
65     DO(OH_ArkWeb_CreateSchemeHandler);                  \
66     DO(OH_ArkWeb_DestroySchemeHandler);                 \
67     DO(OH_ArkWebSchemeHandler_SetOnRequestStart);       \
68     DO(OH_ArkWebSchemeHandler_SetOnRequestStop);        \
69     DO(OH_ArkWebSchemeHandler_SetUserData);             \
70     DO(OH_ArkWebSchemeHandler_GetUserData);             \
71     DO(OH_ArkWeb_CreateResponse);                       \
72     DO(OH_ArkWeb_DestroyResponse);                      \
73     DO(OH_ArkWebResponse_GetUrl);                       \
74     DO(OH_ArkWebResponse_SetUrl);                       \
75     DO(OH_ArkWebResponse_SetError);                     \
76     DO(OH_ArkWebResponse_GetError);                     \
77     DO(OH_ArkWebResponse_SetStatus);                    \
78     DO(OH_ArkWebResponse_GetStatus);                    \
79     DO(OH_ArkWebResponse_SetStatusText);                \
80     DO(OH_ArkWebResponse_GetStatusText);                \
81     DO(OH_ArkWebResponse_SetMimeType);                  \
82     DO(OH_ArkWebResponse_GetMimeType);                  \
83     DO(OH_ArkWebResponse_SetCharset);                   \
84     DO(OH_ArkWebResponse_GetCharset);                   \
85     DO(OH_ArkWebResponse_SetHeaderByName);              \
86     DO(OH_ArkWebResponse_GetHeaderByName);              \
87     DO(OH_ArkWebResourceHandler_Destroy);               \
88     DO(OH_ArkWebResourceHandler_DidReceiveResponse);    \
89     DO(OH_ArkWebResourceHandler_DidReceiveData);        \
90     DO(OH_ArkWebResourceHandler_DidFinish);             \
91     DO(OH_ArkWebResourceHandler_DidFailWithError);      \
92     DO(OH_ArkWebResourceHandler_DidFailWithErrorV2);    \
93     DO(OH_ArkWeb_ReleaseString);                        \
94     DO(OH_ArkWeb_ReleaseByteArray);                     \
95     DO(OH_ArkWebSchemeHandler_SetFromEts)
96 
97 struct SchemeHandlerApi {
98 #define GEN_FN_PTR(fn) decltype(&(fn)) impl_##fn = nullptr
99     FOR_EACH_API_FN(GEN_FN_PTR);
100 #undef GEN_FN_PTR
101 };
102 
103 template<typename Fn>
LoadFunction(const char * functionName,Fn * fnOut)104 void LoadFunction(const char* functionName, Fn* fnOut)
105 {
106     void* fn = OHOS::NWeb::NWebHelper::Instance().LoadFuncSymbol(functionName);
107     if (!fn) {
108         WVLOG_E("%{public}s not found.", functionName);
109         return;
110     }
111     *fnOut = reinterpret_cast<Fn>(fn);
112 }
113 
114 SchemeHandlerApi* g_SchemeHandlerApi = nullptr;
115 
LoadSchemeHandlerApi(SchemeHandlerApi * api)116 void LoadSchemeHandlerApi(SchemeHandlerApi* api)
117 {
118     // Initialize each function pointer field from the so.
119 #define LOAD_FN_PTR(fn) LoadFunction(#fn, &api->impl_##fn)
120     FOR_EACH_API_FN(LOAD_FN_PTR);
121 #undef LOAD_FN_PTR
122 }
123 
EnsureSdkLoaded()124 bool EnsureSdkLoaded()
125 {
126     if (g_SchemeHandlerApi) {
127         WVLOG_I("SchemeHandlerApi had loaded.");
128         return true;
129     }
130 
131     auto* schemeHandlerApi = new (std::nothrow) SchemeHandlerApi();
132     if (schemeHandlerApi == nullptr) {
133         WVLOG_I("schemeHandlerApi is nullptr.");
134         return false;
135     }
136     LoadSchemeHandlerApi(schemeHandlerApi);
137     g_SchemeHandlerApi = schemeHandlerApi;
138     return true;
139 }
140 #undef FOR_EACH_API_FN
141 } // namespace
142 
DestroySchemeHandlerApiForTest()143 [[maybe_unused]] void DestroySchemeHandlerApiForTest()
144 {
145     if (g_SchemeHandlerApi) {
146         delete g_SchemeHandlerApi;
147         g_SchemeHandlerApi = nullptr;
148     }
149 }
150 
SetSchemeHandlerApiForTest(void * schemeHandlerApi)151 [[maybe_unused]] void SetSchemeHandlerApiForTest(void* schemeHandlerApi)
152 {
153     g_SchemeHandlerApi = static_cast<SchemeHandlerApi*>(schemeHandlerApi);
154 }
155 
156 using namespace OHOS;
OH_ArkWebRequestHeaderList_Destroy(ArkWeb_RequestHeaderList * requestHeaderList)157 void OH_ArkWebRequestHeaderList_Destroy(ArkWeb_RequestHeaderList* requestHeaderList)
158 {
159     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebRequestHeaderList_Destroy) {
160         WVLOG_E("OH_ArkWebRequestHeaderList_Destroy not found.");
161         return;
162     }
163 
164     return g_SchemeHandlerApi->impl_OH_ArkWebRequestHeaderList_Destroy(requestHeaderList);
165 }
166 
OH_ArkWebRequestHeaderList_GetSize(const ArkWeb_RequestHeaderList * requestHeaderList)167 int32_t OH_ArkWebRequestHeaderList_GetSize(const ArkWeb_RequestHeaderList* requestHeaderList)
168 {
169     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebRequestHeaderList_GetSize) {
170         WVLOG_E("OH_ArkWebRequestHeaderList_GetSize not found.");
171         return -1;
172     }
173 
174     return g_SchemeHandlerApi->impl_OH_ArkWebRequestHeaderList_GetSize(requestHeaderList);
175 }
176 
OH_ArkWebRequestHeaderList_GetHeader(const ArkWeb_RequestHeaderList * requestHeaderList,int32_t index,char ** key,char ** value)177 void OH_ArkWebRequestHeaderList_GetHeader(
178     const ArkWeb_RequestHeaderList* requestHeaderList, int32_t index, char** key, char** value)
179 {
180     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebRequestHeaderList_GetHeader) {
181         WVLOG_E("OH_ArkWebRequestHeaderList_GetHeader not found.");
182         return;
183     }
184 
185     return g_SchemeHandlerApi->impl_OH_ArkWebRequestHeaderList_GetHeader(requestHeaderList, index, key, value);
186 }
187 
OH_ArkWebResourceRequest_GetMethod(const ArkWeb_ResourceRequest * resourceRequest,char ** method)188 void OH_ArkWebResourceRequest_GetMethod(const ArkWeb_ResourceRequest* resourceRequest, char** method)
189 {
190     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_GetMethod) {
191         WVLOG_E("OH_ArkWebResourceRequest_GetMethod not found.");
192         return;
193     }
194 
195     return g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_GetMethod(resourceRequest, method);
196 }
197 
OH_ArkWebResourceRequest_GetUrl(const ArkWeb_ResourceRequest * resourceRequest,char ** url)198 void OH_ArkWebResourceRequest_GetUrl(const ArkWeb_ResourceRequest* resourceRequest, char** url)
199 {
200     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_GetUrl) {
201         WVLOG_E("OH_ArkWebResourceRequest_GetUrl not found.");
202         return;
203     }
204 
205     return g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_GetUrl(resourceRequest, url);
206 }
207 
OH_ArkWebResourceRequest_GetHttpBodyStream(const ArkWeb_ResourceRequest * resourceRequest,ArkWeb_HttpBodyStream ** httpBodyStream)208 void OH_ArkWebResourceRequest_GetHttpBodyStream(
209     const ArkWeb_ResourceRequest* resourceRequest, ArkWeb_HttpBodyStream** httpBodyStream)
210 {
211     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_GetHttpBodyStream) {
212         WVLOG_E("OH_ArkWebResourceRequest_GetHttpBodyStream not found.");
213         return;
214     }
215 
216     return g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_GetHttpBodyStream(resourceRequest, httpBodyStream);
217 }
218 
OH_ArkWebResourceRequest_DestroyHttpBodyStream(ArkWeb_HttpBodyStream * httpBodyStream)219 void OH_ArkWebResourceRequest_DestroyHttpBodyStream(ArkWeb_HttpBodyStream* httpBodyStream)
220 {
221     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_DestroyHttpBodyStream) {
222         WVLOG_E("OH_ArkWebResourceRequest_DestroyHttpBodyStream not found.");
223         return;
224     }
225 
226     return g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_DestroyHttpBodyStream(httpBodyStream);
227 }
228 
OH_ArkWebResourceRequest_GetResourceType(const ArkWeb_ResourceRequest * resourceRequest)229 int32_t OH_ArkWebResourceRequest_GetResourceType(const ArkWeb_ResourceRequest* resourceRequest)
230 {
231     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_GetResourceType) {
232         WVLOG_E("OH_ArkWebResourceRequest_GetResourceType not found.");
233         return -1;
234     }
235 
236     return g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_GetResourceType(resourceRequest);
237 }
238 
OH_ArkWebResourceRequest_GetFrameUrl(const ArkWeb_ResourceRequest * resourceRequest,char ** frameUrl)239 void OH_ArkWebResourceRequest_GetFrameUrl(const ArkWeb_ResourceRequest* resourceRequest, char** frameUrl)
240 {
241     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_GetFrameUrl) {
242         WVLOG_E("OH_ArkWebResourceRequest_GetFrameUrl not found.");
243         return;
244     }
245 
246     return g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_GetFrameUrl(resourceRequest, frameUrl);
247 }
248 
OH_ArkWebHttpBodyStream_SetUserData(ArkWeb_HttpBodyStream * httpBodyStream,void * userData)249 int32_t OH_ArkWebHttpBodyStream_SetUserData(ArkWeb_HttpBodyStream* httpBodyStream, void* userData)
250 {
251     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebHttpBodyStream_SetUserData) {
252         WVLOG_E("OH_ArkWebHttpBodyStream_SetUserData not found.");
253         return ARKWEB_ERROR_UNKNOWN;
254     }
255     return g_SchemeHandlerApi->impl_OH_ArkWebHttpBodyStream_SetUserData(httpBodyStream, userData);
256 }
257 
OH_ArkWebHttpBodyStream_GetUserData(const ArkWeb_HttpBodyStream * httpBodyStream)258 void* OH_ArkWebHttpBodyStream_GetUserData(const ArkWeb_HttpBodyStream* httpBodyStream)
259 {
260     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebHttpBodyStream_GetUserData) {
261         WVLOG_E("OH_ArkWebHttpBodyStream_GetUserData not found.");
262         return nullptr;
263     }
264     return g_SchemeHandlerApi->impl_OH_ArkWebHttpBodyStream_GetUserData(httpBodyStream);
265 }
266 
OH_ArkWebHttpBodyStream_SetReadCallback(ArkWeb_HttpBodyStream * httpBodyStream,ArkWeb_HttpBodyStreamReadCallback readCallback)267 int32_t OH_ArkWebHttpBodyStream_SetReadCallback(
268     ArkWeb_HttpBodyStream* httpBodyStream, ArkWeb_HttpBodyStreamReadCallback readCallback)
269 {
270     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebHttpBodyStream_SetReadCallback) {
271         WVLOG_E("OH_ArkWebHttpBodyStream_SetReadCallback not found.");
272         return ARKWEB_ERROR_UNKNOWN;
273     }
274 
275     return g_SchemeHandlerApi->impl_OH_ArkWebHttpBodyStream_SetReadCallback(httpBodyStream, readCallback);
276 }
277 
OH_ArkWebHttpBodyStream_SetAsyncReadCallback(ArkWeb_HttpBodyStream * httpBodyStream,ArkWeb_HttpBodyStreamAsyncReadCallback readCallback)278 int32_t OH_ArkWebHttpBodyStream_SetAsyncReadCallback(
279     ArkWeb_HttpBodyStream* httpBodyStream, ArkWeb_HttpBodyStreamAsyncReadCallback readCallback)
280 {
281     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebHttpBodyStream_SetAsyncReadCallback) {
282         WVLOG_E("OH_ArkWebHttpBodyStream_SetAsyncReadCallback not found.");
283         return ARKWEB_ERROR_UNKNOWN;
284     }
285 
286     return g_SchemeHandlerApi->impl_OH_ArkWebHttpBodyStream_SetAsyncReadCallback(httpBodyStream, readCallback);
287 }
288 
OH_ArkWebHttpBodyStream_Init(ArkWeb_HttpBodyStream * httpBodyStream,ArkWeb_HttpBodyStreamInitCallback initCallback)289 int32_t OH_ArkWebHttpBodyStream_Init(
290     ArkWeb_HttpBodyStream* httpBodyStream, ArkWeb_HttpBodyStreamInitCallback initCallback)
291 {
292     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebHttpBodyStream_Init) {
293         WVLOG_E("OH_ArkWebHttpBodyStream_Init not found.");
294         return ARKWEB_ERROR_UNKNOWN;
295     }
296 
297     return g_SchemeHandlerApi->impl_OH_ArkWebHttpBodyStream_Init(httpBodyStream, initCallback);
298 }
299 
OH_ArkWebHttpBodyStream_Read(const ArkWeb_HttpBodyStream * httpBodyStream,uint8_t * buffer,int bufLen)300 void OH_ArkWebHttpBodyStream_Read(const ArkWeb_HttpBodyStream* httpBodyStream, uint8_t* buffer, int bufLen)
301 {
302     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebHttpBodyStream_Read) {
303         WVLOG_E("OH_ArkWebHttpBodyStream_Read not found.");
304         return;
305     }
306 
307     return g_SchemeHandlerApi->impl_OH_ArkWebHttpBodyStream_Read(httpBodyStream, buffer, bufLen);
308 }
309 
OH_ArkWebHttpBodyStream_AsyncRead(const ArkWeb_HttpBodyStream * httpBodyStream,uint8_t * buffer,int bufLen)310 void OH_ArkWebHttpBodyStream_AsyncRead(const ArkWeb_HttpBodyStream* httpBodyStream, uint8_t* buffer, int bufLen)
311 {
312     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebHttpBodyStream_AsyncRead) {
313         WVLOG_E("OH_ArkWebHttpBodyStream_AsyncRead not found.");
314         return;
315     }
316 
317     return g_SchemeHandlerApi->impl_OH_ArkWebHttpBodyStream_AsyncRead(httpBodyStream, buffer, bufLen);
318 }
319 
OH_ArkWebHttpBodyStream_GetSize(const ArkWeb_HttpBodyStream * httpBodyStream)320 uint64_t OH_ArkWebHttpBodyStream_GetSize(const ArkWeb_HttpBodyStream* httpBodyStream)
321 {
322     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebHttpBodyStream_GetSize) {
323         WVLOG_E("OH_ArkWebHttpBodyStream_GetSize not found.");
324         return 0;
325     }
326 
327     return g_SchemeHandlerApi->impl_OH_ArkWebHttpBodyStream_GetSize(httpBodyStream);
328 }
329 
OH_ArkWebHttpBodyStream_GetPosition(const ArkWeb_HttpBodyStream * httpBodyStream)330 uint64_t OH_ArkWebHttpBodyStream_GetPosition(const ArkWeb_HttpBodyStream* httpBodyStream)
331 {
332     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebHttpBodyStream_GetPosition) {
333         WVLOG_E("OH_ArkWebHttpBodyStream_GetPosition not found.");
334         return 0;
335     }
336 
337     return g_SchemeHandlerApi->impl_OH_ArkWebHttpBodyStream_GetPosition(httpBodyStream);
338 }
339 
OH_ArkWebHttpBodyStream_IsChunked(const ArkWeb_HttpBodyStream * httpBodyStream)340 bool OH_ArkWebHttpBodyStream_IsChunked(const ArkWeb_HttpBodyStream* httpBodyStream)
341 {
342     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebHttpBodyStream_IsChunked) {
343         WVLOG_E("OH_ArkWebHttpBodyStream_IsTrunked not found.");
344         return false;
345     }
346 
347     return g_SchemeHandlerApi->impl_OH_ArkWebHttpBodyStream_IsChunked(httpBodyStream);
348 }
349 
OH_ArkWebHttpBodyStream_IsEof(const ArkWeb_HttpBodyStream * httpBodyStream)350 bool OH_ArkWebHttpBodyStream_IsEof(const ArkWeb_HttpBodyStream* httpBodyStream)
351 {
352     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebHttpBodyStream_IsEof) {
353         WVLOG_E("OH_ArkWebHttpBodyStream_HasNullSource not found.");
354         return false;
355     }
356 
357     return g_SchemeHandlerApi->impl_OH_ArkWebHttpBodyStream_IsEof(httpBodyStream);
358 }
359 
OH_ArkWebHttpBodyStream_IsInMemory(const ArkWeb_HttpBodyStream * httpBodyStream)360 bool OH_ArkWebHttpBodyStream_IsInMemory(const ArkWeb_HttpBodyStream* httpBodyStream)
361 {
362     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebHttpBodyStream_IsInMemory) {
363         WVLOG_E("OH_ArkWebHttpBodyStream_IsInMemory not found.");
364         return false;
365     }
366 
367     return g_SchemeHandlerApi->impl_OH_ArkWebHttpBodyStream_IsInMemory(httpBodyStream);
368 }
369 
OH_ArkWebResourceRequest_Destroy(const ArkWeb_ResourceRequest * resourceRequest)370 int32_t OH_ArkWebResourceRequest_Destroy(const ArkWeb_ResourceRequest* resourceRequest)
371 {
372     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_Destroy) {
373         WVLOG_E("OH_ArkWebResourceRequest_Destroy not found.");
374         return ARKWEB_ERROR_UNKNOWN;
375     }
376 
377     return g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_Destroy(resourceRequest);
378 }
379 
OH_ArkWebResourceRequest_GetReferrer(const ArkWeb_ResourceRequest * resourceRequest,char ** referrer)380 void OH_ArkWebResourceRequest_GetReferrer(const ArkWeb_ResourceRequest* resourceRequest, char** referrer)
381 {
382     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_GetReferrer) {
383         WVLOG_E("OH_ArkWebResourceRequest_GetReferrer not found.");
384         return;
385     }
386 
387     return g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_GetReferrer(resourceRequest, referrer);
388 }
389 
OH_ArkWebResourceRequest_SetUserData(ArkWeb_ResourceRequest * resourceRequest,void * userData)390 int32_t OH_ArkWebResourceRequest_SetUserData(ArkWeb_ResourceRequest* resourceRequest, void* userData)
391 {
392     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_SetUserData) {
393         WVLOG_E("OH_ArkWebResourceRequest_SetUserData not found.");
394         return ARKWEB_ERROR_UNKNOWN;
395     }
396 
397     return g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_SetUserData(resourceRequest, userData);
398 }
399 
OH_ArkWebResourceRequest_GetUserData(const ArkWeb_ResourceRequest * resourceRequest)400 void* OH_ArkWebResourceRequest_GetUserData(const ArkWeb_ResourceRequest* resourceRequest)
401 {
402     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_GetUserData) {
403         WVLOG_E("OH_ArkWebResourceRequest_GetUserData not found.");
404         return nullptr;
405     }
406 
407     return g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_GetUserData(resourceRequest);
408 }
409 
OH_ArkWebResourceRequest_GetRequestHeaders(const ArkWeb_ResourceRequest * resourceRequest,ArkWeb_RequestHeaderList ** requestHeaderList)410 void OH_ArkWebResourceRequest_GetRequestHeaders(
411     const ArkWeb_ResourceRequest* resourceRequest, ArkWeb_RequestHeaderList** requestHeaderList)
412 {
413     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_GetRequestHeaders) {
414         WVLOG_E("OH_ArkWebResourceRequest_GetRequestHeaders not found.");
415         return;
416     }
417 
418     return g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_GetRequestHeaders(resourceRequest, requestHeaderList);
419 }
420 
OH_ArkWebResourceRequest_IsRedirect(const ArkWeb_ResourceRequest * resourceRequest)421 bool OH_ArkWebResourceRequest_IsRedirect(const ArkWeb_ResourceRequest* resourceRequest)
422 {
423     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_IsRedirect) {
424         WVLOG_E("OH_ArkWebResourceRequest_IsRedirect not found.");
425         return false;
426     }
427 
428     return g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_IsRedirect(resourceRequest);
429 }
430 
OH_ArkWebResourceRequest_IsMainFrame(const ArkWeb_ResourceRequest * resourceRequest)431 bool OH_ArkWebResourceRequest_IsMainFrame(const ArkWeb_ResourceRequest* resourceRequest)
432 {
433     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_IsMainFrame) {
434         WVLOG_E("OH_ArkWebResourceRequest_IsMainFrame not found.");
435         return false;
436     }
437 
438     return g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_IsMainFrame(resourceRequest);
439 }
440 
OH_ArkWebResourceRequest_HasGesture(const ArkWeb_ResourceRequest * resourceRequest)441 bool OH_ArkWebResourceRequest_HasGesture(const ArkWeb_ResourceRequest* resourceRequest)
442 {
443     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_HasGesture) {
444         WVLOG_E("OH_ArkWebResourceRequest_HasGesture not found.");
445         return false;
446     }
447 
448     return g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_HasGesture(resourceRequest);
449 }
450 
OH_ArkWeb_RegisterCustomSchemes(const char * scheme,int32_t option)451 int32_t OH_ArkWeb_RegisterCustomSchemes(const char* scheme, int32_t option)
452 {
453     if (OHOS::NWeb::NWebHelper::Instance().LoadWebEngine(true, false)) {
454         if (!EnsureSdkLoaded()) {
455             WVLOG_E("OH_ArkWeb_RegisterCustomSchemes sdk not loaded.");
456         }
457     } else {
458         WVLOG_E("OH_ArkWeb_RegisterCustomSchemes webEngineHandle is nullptr.");
459     }
460 
461     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWeb_RegisterCustomSchemes) {
462         WVLOG_E("OH_ArkWeb_RegisterCustomSchemes not found.");
463         return ARKWEB_ERROR_UNKNOWN;
464     }
465 
466     return g_SchemeHandlerApi->impl_OH_ArkWeb_RegisterCustomSchemes(scheme, option);
467 }
468 
OH_ArkWeb_SetSchemeHandler(const char * scheme,const char * webTag,ArkWeb_SchemeHandler * schemeHandler)469 bool OH_ArkWeb_SetSchemeHandler(const char* scheme, const char* webTag, ArkWeb_SchemeHandler* schemeHandler)
470 {
471     if (OHOS::NWeb::NWebHelper::Instance().LoadWebEngine(true, false)) {
472         if (!EnsureSdkLoaded()) {
473             WVLOG_E("scheme_handler sdk not loaded.");
474         }
475     } else {
476         WVLOG_E("scheme_handler webEngineHandle is nullptr.");
477     }
478     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWeb_SetSchemeHandler) {
479         WVLOG_E("OH_ArkWeb_SetSchemeHandler not found.");
480         return false;
481     }
482 
483     return g_SchemeHandlerApi->impl_OH_ArkWeb_SetSchemeHandler(scheme, webTag, schemeHandler);
484 }
485 
OH_ArkWebServiceWorker_SetSchemeHandler(const char * scheme,ArkWeb_SchemeHandler * schemeHandler)486 bool OH_ArkWebServiceWorker_SetSchemeHandler(const char* scheme, ArkWeb_SchemeHandler* schemeHandler)
487 {
488     if (OHOS::NWeb::NWebHelper::Instance().LoadWebEngine(true, false)) {
489         if (!EnsureSdkLoaded()) {
490             WVLOG_E("scheme_handler sdk not loaded.");
491         }
492     } else {
493         WVLOG_E("scheme_handler webEngineHandle is nullptr.");
494     }
495     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebServiceWorker_SetSchemeHandler) {
496         WVLOG_E("OH_ArkWebServiceWorker_SetSchemeHandler not found.");
497         return false;
498     }
499 
500     return g_SchemeHandlerApi->impl_OH_ArkWebServiceWorker_SetSchemeHandler(scheme, schemeHandler);
501 }
502 
OH_ArkWeb_ClearSchemeHandlers(const char * webTag)503 int32_t OH_ArkWeb_ClearSchemeHandlers(const char* webTag)
504 {
505     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWeb_ClearSchemeHandlers) {
506         WVLOG_E("OH_ArkWeb_ClearSchemeHandlers not found.");
507         return ARKWEB_ERROR_UNKNOWN;
508     }
509 
510     return g_SchemeHandlerApi->impl_OH_ArkWeb_ClearSchemeHandlers(webTag);
511 }
512 
OH_ArkWebServiceWorker_ClearSchemeHandlers()513 int32_t OH_ArkWebServiceWorker_ClearSchemeHandlers()
514 {
515     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebServiceWorker_ClearSchemeHandlers) {
516         WVLOG_E("OH_ArkWebServiceWorker_ClearSchemeHandlers not found.");
517         return ARKWEB_ERROR_UNKNOWN;
518     }
519 
520     return g_SchemeHandlerApi->impl_OH_ArkWebServiceWorker_ClearSchemeHandlers();
521 }
522 
OH_ArkWeb_CreateSchemeHandler(ArkWeb_SchemeHandler ** schemeHandler)523 void OH_ArkWeb_CreateSchemeHandler(ArkWeb_SchemeHandler** schemeHandler)
524 {
525     if (OHOS::NWeb::NWebHelper::Instance().LoadWebEngine(true, false)) {
526         if (!EnsureSdkLoaded()) {
527             WVLOG_E("scheme_handler sdk not loaded.");
528         }
529     } else {
530         WVLOG_E("scheme_handler webEngineHandle is nullptr.");
531     }
532     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWeb_CreateSchemeHandler) {
533         WVLOG_E("OH_ArkWeb_CreateSchemeHandler not found.");
534         return;
535     }
536 
537     return g_SchemeHandlerApi->impl_OH_ArkWeb_CreateSchemeHandler(schemeHandler);
538 }
539 
OH_ArkWeb_DestroySchemeHandler(ArkWeb_SchemeHandler * schemeHandler)540 void OH_ArkWeb_DestroySchemeHandler(ArkWeb_SchemeHandler* schemeHandler)
541 {
542     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWeb_DestroySchemeHandler) {
543         WVLOG_E("OH_ArkWeb_DestroySchemeHandler not found.");
544         return;
545     }
546 
547     return g_SchemeHandlerApi->impl_OH_ArkWeb_DestroySchemeHandler(schemeHandler);
548 }
549 
OH_ArkWebSchemeHandler_SetUserData(ArkWeb_SchemeHandler * schemeHandler,void * userData)550 int32_t OH_ArkWebSchemeHandler_SetUserData(ArkWeb_SchemeHandler* schemeHandler, void* userData)
551 {
552     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebSchemeHandler_SetUserData) {
553         WVLOG_E("OH_ArkWebSchemeHandler_SetUserData not found.");
554         return ARKWEB_ERROR_UNKNOWN;
555     }
556     return g_SchemeHandlerApi->impl_OH_ArkWebSchemeHandler_SetUserData(schemeHandler, userData);
557 }
558 
OH_ArkWebSchemeHandler_GetUserData(const ArkWeb_SchemeHandler * schemeHandler)559 void* OH_ArkWebSchemeHandler_GetUserData(const ArkWeb_SchemeHandler* schemeHandler)
560 {
561     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebSchemeHandler_GetUserData) {
562         WVLOG_E("OH_ArkWebSchemeHandler_GetUserData not found.");
563         return nullptr;
564     }
565     return g_SchemeHandlerApi->impl_OH_ArkWebSchemeHandler_GetUserData(schemeHandler);
566 }
567 
OH_ArkWebSchemeHandler_SetOnRequestStart(ArkWeb_SchemeHandler * schemeHandler,ArkWeb_OnRequestStart onRequestStart)568 int32_t OH_ArkWebSchemeHandler_SetOnRequestStart(
569     ArkWeb_SchemeHandler* schemeHandler, ArkWeb_OnRequestStart onRequestStart)
570 {
571     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebSchemeHandler_SetOnRequestStart) {
572         WVLOG_E("OH_ArkWebSchemeHandler_SetOnRequestStart not found.");
573         return ARKWEB_ERROR_UNKNOWN;
574     }
575 
576     return g_SchemeHandlerApi->impl_OH_ArkWebSchemeHandler_SetOnRequestStart(schemeHandler, onRequestStart);
577 }
578 
OH_ArkWebSchemeHandler_SetOnRequestStop(ArkWeb_SchemeHandler * schemeHandler,ArkWeb_OnRequestStop onRequestStop)579 int32_t OH_ArkWebSchemeHandler_SetOnRequestStop(
580     ArkWeb_SchemeHandler* schemeHandler, ArkWeb_OnRequestStop onRequestStop)
581 {
582     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebSchemeHandler_SetOnRequestStop) {
583         WVLOG_E("OH_ArkWebSchemeHandler_SetOnRequestStop not found.");
584         return ARKWEB_ERROR_UNKNOWN;
585     }
586 
587     return g_SchemeHandlerApi->impl_OH_ArkWebSchemeHandler_SetOnRequestStop(schemeHandler, onRequestStop);
588 }
589 
OH_ArkWeb_CreateResponse(ArkWeb_Response ** response)590 void OH_ArkWeb_CreateResponse(ArkWeb_Response** response)
591 {
592     if (OHOS::NWeb::NWebHelper::Instance().LoadWebEngine(true, false)) {
593         if (!EnsureSdkLoaded()) {
594             WVLOG_E("scheme_handler sdk not loaded.");
595         }
596     } else {
597         WVLOG_E("scheme_handler webEngineHandle is nullptr.");
598     }
599     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWeb_CreateResponse) {
600         WVLOG_E("OH_ArkWeb_CreateResponse not found.");
601         return;
602     }
603 
604     return g_SchemeHandlerApi->impl_OH_ArkWeb_CreateResponse(response);
605 }
606 
OH_ArkWeb_DestroyResponse(ArkWeb_Response * response)607 void OH_ArkWeb_DestroyResponse(ArkWeb_Response* response)
608 {
609     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWeb_DestroyResponse) {
610         WVLOG_E("OH_ArkWeb_DestroyResponse not found.");
611         return;
612     }
613 
614     return g_SchemeHandlerApi->impl_OH_ArkWeb_DestroyResponse(response);
615 }
616 
OH_ArkWebResponse_SetUrl(ArkWeb_Response * response,const char * url)617 int32_t OH_ArkWebResponse_SetUrl(ArkWeb_Response* response, const char* url)
618 {
619     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResponse_SetUrl) {
620         WVLOG_E("OH_ArkWebResponse_SetUrl not found.");
621         return ARKWEB_ERROR_UNKNOWN;
622     }
623 
624     return g_SchemeHandlerApi->impl_OH_ArkWebResponse_SetUrl(response, url);
625 }
626 
OH_ArkWebResponse_GetUrl(const ArkWeb_Response * response,char ** url)627 void OH_ArkWebResponse_GetUrl(const ArkWeb_Response* response, char** url)
628 {
629     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResponse_GetUrl) {
630         WVLOG_E("OH_ArkWebResponse_GetUrl not found.");
631         return;
632     }
633 
634     return g_SchemeHandlerApi->impl_OH_ArkWebResponse_GetUrl(response, url);
635 }
636 
OH_ArkWebResponse_SetError(ArkWeb_Response * response,ArkWeb_NetError errorCode)637 int32_t OH_ArkWebResponse_SetError(ArkWeb_Response* response, ArkWeb_NetError errorCode)
638 {
639     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResponse_SetError) {
640         WVLOG_E("OH_ArkWebResponse_SetError not found.");
641         return ARKWEB_ERROR_UNKNOWN;
642     }
643 
644     return g_SchemeHandlerApi->impl_OH_ArkWebResponse_SetError(response, errorCode);
645 }
646 
OH_ArkWebResponse_GetError(const ArkWeb_Response * response)647 ArkWeb_NetError OH_ArkWebResponse_GetError(const ArkWeb_Response* response)
648 {
649     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResponse_GetError) {
650         WVLOG_E("OH_ArkWebResponse_GetError not found.");
651         return ARKWEB_ERR_FAILED;
652     }
653 
654     return g_SchemeHandlerApi->impl_OH_ArkWebResponse_GetError(response);
655 }
656 
OH_ArkWebResponse_SetStatus(ArkWeb_Response * response,int status)657 int32_t OH_ArkWebResponse_SetStatus(ArkWeb_Response* response, int status)
658 {
659     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResponse_SetStatus) {
660         WVLOG_E("OH_ArkWebResponse_SetStatus not found.");
661         return ARKWEB_ERROR_UNKNOWN;
662     }
663 
664     return g_SchemeHandlerApi->impl_OH_ArkWebResponse_SetStatus(response, status);
665 }
666 
OH_ArkWebResponse_GetStatus(const ArkWeb_Response * response)667 int OH_ArkWebResponse_GetStatus(const ArkWeb_Response* response)
668 {
669     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResponse_GetStatus) {
670         WVLOG_E("OH_ArkWebResponse_GetStatus not found.");
671         return -1;
672     }
673 
674     return g_SchemeHandlerApi->impl_OH_ArkWebResponse_GetStatus(response);
675 }
676 
OH_ArkWebResponse_SetStatusText(ArkWeb_Response * response,const char * statusText)677 int32_t OH_ArkWebResponse_SetStatusText(ArkWeb_Response* response, const char* statusText)
678 {
679     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResponse_SetStatusText) {
680         WVLOG_E("OH_ArkWebResponse_SetStatusText not found.");
681         return ARKWEB_ERROR_UNKNOWN;
682     }
683 
684     return g_SchemeHandlerApi->impl_OH_ArkWebResponse_SetStatusText(response, statusText);
685 }
686 
OH_ArkWebResponse_GetStatusText(const ArkWeb_Response * response,char ** statusText)687 void OH_ArkWebResponse_GetStatusText(const ArkWeb_Response* response, char** statusText)
688 {
689     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResponse_GetStatusText) {
690         WVLOG_E("OH_ArkWebResponse_GetStatusText not found.");
691         return;
692     }
693 
694     return g_SchemeHandlerApi->impl_OH_ArkWebResponse_GetStatusText(response, statusText);
695 }
696 
OH_ArkWebResponse_SetMimeType(ArkWeb_Response * response,const char * mimeType)697 int32_t OH_ArkWebResponse_SetMimeType(ArkWeb_Response* response, const char* mimeType)
698 {
699     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResponse_SetMimeType) {
700         WVLOG_E("OH_ArkWebResponse_SetMimeType not found.");
701         return ARKWEB_ERROR_UNKNOWN;
702     }
703 
704     return g_SchemeHandlerApi->impl_OH_ArkWebResponse_SetMimeType(response, mimeType);
705 }
706 
OH_ArkWebResponse_GetMimeType(const ArkWeb_Response * response,char ** mimeType)707 void OH_ArkWebResponse_GetMimeType(const ArkWeb_Response* response, char** mimeType)
708 {
709     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResponse_GetMimeType) {
710         WVLOG_E("OH_ArkWebResponse_GetMimeType not found.");
711         return;
712     }
713 
714     return g_SchemeHandlerApi->impl_OH_ArkWebResponse_GetMimeType(response, mimeType);
715 }
716 
OH_ArkWebResponse_SetCharset(ArkWeb_Response * response,const char * charset)717 int32_t OH_ArkWebResponse_SetCharset(ArkWeb_Response* response, const char* charset)
718 {
719     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResponse_SetCharset) {
720         WVLOG_E("OH_ArkWebResponse_SetCharset not found.");
721         return ARKWEB_ERROR_UNKNOWN;
722     }
723 
724     return g_SchemeHandlerApi->impl_OH_ArkWebResponse_SetCharset(response, charset);
725 }
726 
OH_ArkWebResponse_GetCharset(const ArkWeb_Response * response,char ** charset)727 void OH_ArkWebResponse_GetCharset(const ArkWeb_Response* response, char** charset)
728 {
729     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResponse_GetCharset) {
730         WVLOG_E("OH_ArkWebResponse_GetCharset not found.");
731         return;
732     }
733 
734     return g_SchemeHandlerApi->impl_OH_ArkWebResponse_GetCharset(response, charset);
735 }
736 
OH_ArkWebResponse_SetHeaderByName(ArkWeb_Response * response,const char * name,const char * value,bool overwrite)737 int32_t OH_ArkWebResponse_SetHeaderByName(
738     ArkWeb_Response* response, const char* name, const char* value, bool overwrite)
739 {
740     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResponse_SetHeaderByName) {
741         WVLOG_E("OH_ArkWebResponse_SetHeaderByName not found.");
742         return ARKWEB_ERROR_UNKNOWN;
743     }
744 
745     return g_SchemeHandlerApi->impl_OH_ArkWebResponse_SetHeaderByName(response, name, value, overwrite);
746 }
747 
OH_ArkWebResponse_GetHeaderByName(const ArkWeb_Response * response,const char * name,char ** value)748 void OH_ArkWebResponse_GetHeaderByName(const ArkWeb_Response* response, const char* name, char** value)
749 {
750     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResponse_GetHeaderByName) {
751         WVLOG_E("OH_ArkWebResponse_GetHeaderByName not found.");
752         return;
753     }
754 
755     return g_SchemeHandlerApi->impl_OH_ArkWebResponse_GetHeaderByName(response, name, value);
756 }
757 
OH_ArkWebResourceHandler_Destroy(const ArkWeb_ResourceHandler * resourceHandler)758 int32_t OH_ArkWebResourceHandler_Destroy(const ArkWeb_ResourceHandler* resourceHandler)
759 {
760     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResourceHandler_Destroy) {
761         WVLOG_E("OH_ArkWebResourceHandler_Destroy not found.");
762         return ARKWEB_ERROR_UNKNOWN;
763     }
764 
765     return g_SchemeHandlerApi->impl_OH_ArkWebResourceHandler_Destroy(resourceHandler);
766 }
767 
OH_ArkWebResourceHandler_DidReceiveResponse(const ArkWeb_ResourceHandler * resourceHandler,const ArkWeb_Response * response)768 int32_t OH_ArkWebResourceHandler_DidReceiveResponse(
769     const ArkWeb_ResourceHandler* resourceHandler, const ArkWeb_Response* response)
770 {
771     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResourceHandler_DidReceiveResponse) {
772         WVLOG_E("OH_ArkWebResourceHandler_DidReceiveResponse not found.");
773         return ARKWEB_ERROR_UNKNOWN;
774     }
775 
776     return g_SchemeHandlerApi->impl_OH_ArkWebResourceHandler_DidReceiveResponse(resourceHandler, response);
777 }
778 
OH_ArkWebResourceHandler_DidReceiveData(const ArkWeb_ResourceHandler * resourceHandler,const uint8_t * buffer,int64_t bufLen)779 int32_t OH_ArkWebResourceHandler_DidReceiveData(
780     const ArkWeb_ResourceHandler* resourceHandler, const uint8_t* buffer, int64_t bufLen)
781 {
782     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResourceHandler_DidReceiveData) {
783         WVLOG_E("OH_ArkWebResourceHandler_DidReceiveData not found.");
784         return ARKWEB_ERROR_UNKNOWN;
785     }
786 
787     return g_SchemeHandlerApi->impl_OH_ArkWebResourceHandler_DidReceiveData(resourceHandler, buffer, bufLen);
788 }
789 
OH_ArkWebResourceHandler_DidFinish(const ArkWeb_ResourceHandler * resourceHandler)790 int32_t OH_ArkWebResourceHandler_DidFinish(const ArkWeb_ResourceHandler* resourceHandler)
791 {
792     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResourceHandler_DidFinish) {
793         WVLOG_E("OH_ArkWeb_ResourceHandler_DidFinish not found.");
794         return ARKWEB_ERROR_UNKNOWN;
795     }
796 
797     return g_SchemeHandlerApi->impl_OH_ArkWebResourceHandler_DidFinish(resourceHandler);
798 }
799 
OH_ArkWebResourceHandler_DidFailWithError(const ArkWeb_ResourceHandler * resourceHandler,ArkWeb_NetError errorCode)800 int32_t OH_ArkWebResourceHandler_DidFailWithError(
801     const ArkWeb_ResourceHandler* resourceHandler, ArkWeb_NetError errorCode)
802 {
803     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResourceHandler_DidFailWithError) {
804         WVLOG_E("OH_ArkWeb_ResourceHandler_DidFailWithError not found.");
805         return ARKWEB_ERROR_UNKNOWN;
806     }
807 
808     return g_SchemeHandlerApi->impl_OH_ArkWebResourceHandler_DidFailWithError(resourceHandler, errorCode);
809 }
810 
OH_ArkWebResourceHandler_DidFailWithErrorV2(const ArkWeb_ResourceHandler * resourceHandler,ArkWeb_NetError errorCode,bool completeIfNoResponse)811 int32_t OH_ArkWebResourceHandler_DidFailWithErrorV2(
812     const ArkWeb_ResourceHandler* resourceHandler, ArkWeb_NetError errorCode, bool completeIfNoResponse)
813 {
814     if (!g_SchemeHandlerApi) {
815         WVLOG_E("g_SchemeHandlerApi is null.");
816         return ARKWEB_ERROR_UNKNOWN;
817     }
818 
819     if (g_SchemeHandlerApi->impl_OH_ArkWebResourceHandler_DidFailWithErrorV2) {
820         return g_SchemeHandlerApi->impl_OH_ArkWebResourceHandler_DidFailWithErrorV2(resourceHandler, errorCode,
821                                                                                     completeIfNoResponse);
822     }
823 
824     WVLOG_E("OH_ArkWebResourceHandler_DidFailWithErrorV2 not found.");
825     if (g_SchemeHandlerApi->impl_OH_ArkWebResourceHandler_DidFailWithError) {
826         return g_SchemeHandlerApi->impl_OH_ArkWebResourceHandler_DidFailWithError(resourceHandler, errorCode);
827     }
828 
829     WVLOG_E("OH_ArkWeb_ResourceHandler_DidFailWithError not found.");
830     return ARKWEB_ERROR_UNKNOWN;
831 }
832 
OH_ArkWeb_ReleaseString(char * string)833 void OH_ArkWeb_ReleaseString(char* string)
834 {
835     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWeb_ReleaseString) {
836         WVLOG_E("OH_ArkWeb_ReleaseString not found.");
837         return;
838     }
839 
840     return g_SchemeHandlerApi->impl_OH_ArkWeb_ReleaseString(string);
841 }
842 
OH_ArkWeb_ReleaseByteArray(uint8_t * byteArray)843 void OH_ArkWeb_ReleaseByteArray(uint8_t* byteArray)
844 {
845     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWeb_ReleaseByteArray) {
846         WVLOG_E("OH_ArkWeb_ReleaseByteArray not found.");
847         return;
848     }
849 
850     return g_SchemeHandlerApi->impl_OH_ArkWeb_ReleaseByteArray(byteArray);
851 }
852 
OH_ArkWebSchemeHandler_SetFromEts(ArkWeb_SchemeHandler * schemeHandler,bool fromEts)853 int32_t OH_ArkWebSchemeHandler_SetFromEts(
854     ArkWeb_SchemeHandler* schemeHandler, bool fromEts)
855 {
856     if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebSchemeHandler_SetFromEts) {
857         WVLOG_E("impl_OH_ArkWebSchemeHandler_SetFromEts not found.");
858         return ARKWEB_ERROR_UNKNOWN;
859     }
860 
861     return g_SchemeHandlerApi->impl_OH_ArkWebSchemeHandler_SetFromEts(schemeHandler, fromEts);
862 }
863