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 }