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