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