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