10826e83eSopenharmony_ci/* 20826e83eSopenharmony_ci * Copyright (c) 2023-2024 Huawei Device Co., Ltd. 30826e83eSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 40826e83eSopenharmony_ci * you may not use this file except in compliance with the License. 50826e83eSopenharmony_ci * You may obtain a copy of the License at 60826e83eSopenharmony_ci * 70826e83eSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 80826e83eSopenharmony_ci * 90826e83eSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 100826e83eSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 110826e83eSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 120826e83eSopenharmony_ci * See the License for the specific language governing permissions and 130826e83eSopenharmony_ci * limitations under the License. 140826e83eSopenharmony_ci */ 150826e83eSopenharmony_ci 160826e83eSopenharmony_ci#include "arkweb_scheme_handler.h" 170826e83eSopenharmony_ci 180826e83eSopenharmony_ci#include <memory> 190826e83eSopenharmony_ci#include <mutex> 200826e83eSopenharmony_ci#include <unordered_map> 210826e83eSopenharmony_ci#include <vector> 220826e83eSopenharmony_ci 230826e83eSopenharmony_ci#include "nweb.h" 240826e83eSopenharmony_ci#include "nweb_helper.h" 250826e83eSopenharmony_ci#include "nweb_log.h" 260826e83eSopenharmony_ci 270826e83eSopenharmony_cinamespace { 280826e83eSopenharmony_ci 290826e83eSopenharmony_ci// Run DO macro for every function defined in the API. 300826e83eSopenharmony_ci#define FOR_EACH_API_FN(DO) \ 310826e83eSopenharmony_ci DO(OH_ArkWebRequestHeaderList_Destroy); \ 320826e83eSopenharmony_ci DO(OH_ArkWebRequestHeaderList_GetSize); \ 330826e83eSopenharmony_ci DO(OH_ArkWebRequestHeaderList_GetHeader); \ 340826e83eSopenharmony_ci DO(OH_ArkWebResourceRequest_GetMethod); \ 350826e83eSopenharmony_ci DO(OH_ArkWebResourceRequest_GetUrl); \ 360826e83eSopenharmony_ci DO(OH_ArkWebResourceRequest_GetHttpBodyStream); \ 370826e83eSopenharmony_ci DO(OH_ArkWebResourceRequest_DestroyHttpBodyStream); \ 380826e83eSopenharmony_ci DO(OH_ArkWebResourceRequest_GetResourceType); \ 390826e83eSopenharmony_ci DO(OH_ArkWebResourceRequest_GetFrameUrl); \ 400826e83eSopenharmony_ci DO(OH_ArkWebHttpBodyStream_SetReadCallback); \ 410826e83eSopenharmony_ci DO(OH_ArkWebHttpBodyStream_SetUserData); \ 420826e83eSopenharmony_ci DO(OH_ArkWebHttpBodyStream_GetUserData); \ 430826e83eSopenharmony_ci DO(OH_ArkWebHttpBodyStream_Init); \ 440826e83eSopenharmony_ci DO(OH_ArkWebHttpBodyStream_Read); \ 450826e83eSopenharmony_ci DO(OH_ArkWebHttpBodyStream_GetSize); \ 460826e83eSopenharmony_ci DO(OH_ArkWebHttpBodyStream_GetPosition); \ 470826e83eSopenharmony_ci DO(OH_ArkWebHttpBodyStream_IsChunked); \ 480826e83eSopenharmony_ci DO(OH_ArkWebHttpBodyStream_IsEof); \ 490826e83eSopenharmony_ci DO(OH_ArkWebHttpBodyStream_IsInMemory); \ 500826e83eSopenharmony_ci DO(OH_ArkWebResourceRequest_Destroy); \ 510826e83eSopenharmony_ci DO(OH_ArkWebResourceRequest_SetUserData); \ 520826e83eSopenharmony_ci DO(OH_ArkWebResourceRequest_GetUserData); \ 530826e83eSopenharmony_ci DO(OH_ArkWebResourceRequest_GetReferrer); \ 540826e83eSopenharmony_ci DO(OH_ArkWebResourceRequest_GetRequestHeaders); \ 550826e83eSopenharmony_ci DO(OH_ArkWebResourceRequest_IsRedirect); \ 560826e83eSopenharmony_ci DO(OH_ArkWebResourceRequest_IsMainFrame); \ 570826e83eSopenharmony_ci DO(OH_ArkWebResourceRequest_HasGesture); \ 580826e83eSopenharmony_ci DO(OH_ArkWeb_RegisterCustomSchemes); \ 590826e83eSopenharmony_ci DO(OH_ArkWeb_SetSchemeHandler); \ 600826e83eSopenharmony_ci DO(OH_ArkWebServiceWorker_SetSchemeHandler); \ 610826e83eSopenharmony_ci DO(OH_ArkWebServiceWorker_ClearSchemeHandlers); \ 620826e83eSopenharmony_ci DO(OH_ArkWeb_ClearSchemeHandlers); \ 630826e83eSopenharmony_ci DO(OH_ArkWeb_CreateSchemeHandler); \ 640826e83eSopenharmony_ci DO(OH_ArkWeb_DestroySchemeHandler); \ 650826e83eSopenharmony_ci DO(OH_ArkWebSchemeHandler_SetOnRequestStart); \ 660826e83eSopenharmony_ci DO(OH_ArkWebSchemeHandler_SetOnRequestStop); \ 670826e83eSopenharmony_ci DO(OH_ArkWebSchemeHandler_SetUserData); \ 680826e83eSopenharmony_ci DO(OH_ArkWebSchemeHandler_GetUserData); \ 690826e83eSopenharmony_ci DO(OH_ArkWeb_CreateResponse); \ 700826e83eSopenharmony_ci DO(OH_ArkWeb_DestroyResponse); \ 710826e83eSopenharmony_ci DO(OH_ArkWebResponse_GetUrl); \ 720826e83eSopenharmony_ci DO(OH_ArkWebResponse_SetUrl); \ 730826e83eSopenharmony_ci DO(OH_ArkWebResponse_SetError); \ 740826e83eSopenharmony_ci DO(OH_ArkWebResponse_GetError); \ 750826e83eSopenharmony_ci DO(OH_ArkWebResponse_SetStatus); \ 760826e83eSopenharmony_ci DO(OH_ArkWebResponse_GetStatus); \ 770826e83eSopenharmony_ci DO(OH_ArkWebResponse_SetStatusText); \ 780826e83eSopenharmony_ci DO(OH_ArkWebResponse_GetStatusText); \ 790826e83eSopenharmony_ci DO(OH_ArkWebResponse_SetMimeType); \ 800826e83eSopenharmony_ci DO(OH_ArkWebResponse_GetMimeType); \ 810826e83eSopenharmony_ci DO(OH_ArkWebResponse_SetCharset); \ 820826e83eSopenharmony_ci DO(OH_ArkWebResponse_GetCharset); \ 830826e83eSopenharmony_ci DO(OH_ArkWebResponse_SetHeaderByName); \ 840826e83eSopenharmony_ci DO(OH_ArkWebResponse_GetHeaderByName); \ 850826e83eSopenharmony_ci DO(OH_ArkWebResourceHandler_Destroy); \ 860826e83eSopenharmony_ci DO(OH_ArkWebResourceHandler_DidReceiveResponse); \ 870826e83eSopenharmony_ci DO(OH_ArkWebResourceHandler_DidReceiveData); \ 880826e83eSopenharmony_ci DO(OH_ArkWebResourceHandler_DidFinish); \ 890826e83eSopenharmony_ci DO(OH_ArkWebResourceHandler_DidFailWithError); \ 900826e83eSopenharmony_ci DO(OH_ArkWeb_ReleaseString); \ 910826e83eSopenharmony_ci DO(OH_ArkWeb_ReleaseByteArray); \ 920826e83eSopenharmony_ci DO(OH_ArkWebSchemeHandler_SetFromEts) 930826e83eSopenharmony_ci 940826e83eSopenharmony_cistruct SchemeHandlerApi { 950826e83eSopenharmony_ci#define GEN_FN_PTR(fn) decltype(&(fn)) impl_##fn = nullptr 960826e83eSopenharmony_ci FOR_EACH_API_FN(GEN_FN_PTR); 970826e83eSopenharmony_ci#undef GEN_FN_PTR 980826e83eSopenharmony_ci}; 990826e83eSopenharmony_ci 1000826e83eSopenharmony_citemplate<typename Fn> 1010826e83eSopenharmony_civoid LoadFunction(const char* functionName, Fn* fnOut) 1020826e83eSopenharmony_ci{ 1030826e83eSopenharmony_ci void* fn = OHOS::NWeb::NWebHelper::Instance().LoadFuncSymbol(functionName); 1040826e83eSopenharmony_ci if (!fn) { 1050826e83eSopenharmony_ci WVLOG_E("%{public}s not found.", functionName); 1060826e83eSopenharmony_ci return; 1070826e83eSopenharmony_ci } 1080826e83eSopenharmony_ci *fnOut = reinterpret_cast<Fn>(fn); 1090826e83eSopenharmony_ci} 1100826e83eSopenharmony_ci 1110826e83eSopenharmony_ciSchemeHandlerApi* g_SchemeHandlerApi = nullptr; 1120826e83eSopenharmony_ci 1130826e83eSopenharmony_civoid LoadSchemeHandlerApi(SchemeHandlerApi* api) 1140826e83eSopenharmony_ci{ 1150826e83eSopenharmony_ci // Initialize each function pointer field from the so. 1160826e83eSopenharmony_ci#define LOAD_FN_PTR(fn) LoadFunction(#fn, &api->impl_##fn) 1170826e83eSopenharmony_ci FOR_EACH_API_FN(LOAD_FN_PTR); 1180826e83eSopenharmony_ci#undef LOAD_FN_PTR 1190826e83eSopenharmony_ci} 1200826e83eSopenharmony_ci 1210826e83eSopenharmony_cibool EnsureSdkLoaded() 1220826e83eSopenharmony_ci{ 1230826e83eSopenharmony_ci if (g_SchemeHandlerApi) { 1240826e83eSopenharmony_ci WVLOG_I("SchemeHandlerApi had loaded."); 1250826e83eSopenharmony_ci return true; 1260826e83eSopenharmony_ci } 1270826e83eSopenharmony_ci 1280826e83eSopenharmony_ci auto* schemeHandlerApi = new (std::nothrow) SchemeHandlerApi(); 1290826e83eSopenharmony_ci if (schemeHandlerApi == nullptr) { 1300826e83eSopenharmony_ci WVLOG_I("schemeHandlerApi is nullptr."); 1310826e83eSopenharmony_ci return false; 1320826e83eSopenharmony_ci } 1330826e83eSopenharmony_ci LoadSchemeHandlerApi(schemeHandlerApi); 1340826e83eSopenharmony_ci g_SchemeHandlerApi = schemeHandlerApi; 1350826e83eSopenharmony_ci return true; 1360826e83eSopenharmony_ci} 1370826e83eSopenharmony_ci#undef FOR_EACH_API_FN 1380826e83eSopenharmony_ci} // namespace 1390826e83eSopenharmony_ci 1400826e83eSopenharmony_ciusing namespace OHOS; 1410826e83eSopenharmony_civoid OH_ArkWebRequestHeaderList_Destroy(ArkWeb_RequestHeaderList* requestHeaderList) 1420826e83eSopenharmony_ci{ 1430826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebRequestHeaderList_Destroy) { 1440826e83eSopenharmony_ci WVLOG_E("OH_ArkWebRequestHeaderList_Destroy not found."); 1450826e83eSopenharmony_ci return; 1460826e83eSopenharmony_ci } 1470826e83eSopenharmony_ci 1480826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebRequestHeaderList_Destroy(requestHeaderList); 1490826e83eSopenharmony_ci} 1500826e83eSopenharmony_ci 1510826e83eSopenharmony_ciint32_t OH_ArkWebRequestHeaderList_GetSize(const ArkWeb_RequestHeaderList* requestHeaderList) 1520826e83eSopenharmony_ci{ 1530826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebRequestHeaderList_GetSize) { 1540826e83eSopenharmony_ci WVLOG_E("OH_ArkWebRequestHeaderList_GetSize not found."); 1550826e83eSopenharmony_ci return -1; 1560826e83eSopenharmony_ci } 1570826e83eSopenharmony_ci 1580826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebRequestHeaderList_GetSize(requestHeaderList); 1590826e83eSopenharmony_ci} 1600826e83eSopenharmony_ci 1610826e83eSopenharmony_civoid OH_ArkWebRequestHeaderList_GetHeader( 1620826e83eSopenharmony_ci const ArkWeb_RequestHeaderList* requestHeaderList, int32_t index, char** key, char** value) 1630826e83eSopenharmony_ci{ 1640826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebRequestHeaderList_GetHeader) { 1650826e83eSopenharmony_ci WVLOG_E("OH_ArkWebRequestHeaderList_GetHeader not found."); 1660826e83eSopenharmony_ci return; 1670826e83eSopenharmony_ci } 1680826e83eSopenharmony_ci 1690826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebRequestHeaderList_GetHeader(requestHeaderList, index, key, value); 1700826e83eSopenharmony_ci} 1710826e83eSopenharmony_ci 1720826e83eSopenharmony_civoid OH_ArkWebResourceRequest_GetMethod(const ArkWeb_ResourceRequest* resourceRequest, char** method) 1730826e83eSopenharmony_ci{ 1740826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_GetMethod) { 1750826e83eSopenharmony_ci WVLOG_E("OH_ArkWebResourceRequest_GetMethod not found."); 1760826e83eSopenharmony_ci return; 1770826e83eSopenharmony_ci } 1780826e83eSopenharmony_ci 1790826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_GetMethod(resourceRequest, method); 1800826e83eSopenharmony_ci} 1810826e83eSopenharmony_ci 1820826e83eSopenharmony_civoid OH_ArkWebResourceRequest_GetUrl(const ArkWeb_ResourceRequest* resourceRequest, char** url) 1830826e83eSopenharmony_ci{ 1840826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_GetUrl) { 1850826e83eSopenharmony_ci WVLOG_E("OH_ArkWebResourceRequest_GetUrl not found."); 1860826e83eSopenharmony_ci return; 1870826e83eSopenharmony_ci } 1880826e83eSopenharmony_ci 1890826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_GetUrl(resourceRequest, url); 1900826e83eSopenharmony_ci} 1910826e83eSopenharmony_ci 1920826e83eSopenharmony_civoid OH_ArkWebResourceRequest_GetHttpBodyStream( 1930826e83eSopenharmony_ci const ArkWeb_ResourceRequest* resourceRequest, ArkWeb_HttpBodyStream** httpBodyStream) 1940826e83eSopenharmony_ci{ 1950826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_GetHttpBodyStream) { 1960826e83eSopenharmony_ci WVLOG_E("OH_ArkWebResourceRequest_GetHttpBodyStream not found."); 1970826e83eSopenharmony_ci return; 1980826e83eSopenharmony_ci } 1990826e83eSopenharmony_ci 2000826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_GetHttpBodyStream(resourceRequest, httpBodyStream); 2010826e83eSopenharmony_ci} 2020826e83eSopenharmony_ci 2030826e83eSopenharmony_civoid OH_ArkWebResourceRequest_DestroyHttpBodyStream(ArkWeb_HttpBodyStream* httpBodyStream) 2040826e83eSopenharmony_ci{ 2050826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_DestroyHttpBodyStream) { 2060826e83eSopenharmony_ci WVLOG_E("OH_ArkWebResourceRequest_DestroyHttpBodyStream not found."); 2070826e83eSopenharmony_ci return; 2080826e83eSopenharmony_ci } 2090826e83eSopenharmony_ci 2100826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_DestroyHttpBodyStream(httpBodyStream); 2110826e83eSopenharmony_ci} 2120826e83eSopenharmony_ci 2130826e83eSopenharmony_ciint32_t OH_ArkWebResourceRequest_GetResourceType(const ArkWeb_ResourceRequest* resourceRequest) 2140826e83eSopenharmony_ci{ 2150826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_GetResourceType) { 2160826e83eSopenharmony_ci WVLOG_E("OH_ArkWebResourceRequest_GetResourceType not found."); 2170826e83eSopenharmony_ci return -1; 2180826e83eSopenharmony_ci } 2190826e83eSopenharmony_ci 2200826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_GetResourceType(resourceRequest); 2210826e83eSopenharmony_ci} 2220826e83eSopenharmony_ci 2230826e83eSopenharmony_civoid OH_ArkWebResourceRequest_GetFrameUrl(const ArkWeb_ResourceRequest* resourceRequest, char** frameUrl) 2240826e83eSopenharmony_ci{ 2250826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_GetFrameUrl) { 2260826e83eSopenharmony_ci WVLOG_E("OH_ArkWebResourceRequest_GetFrameUrl not found."); 2270826e83eSopenharmony_ci return; 2280826e83eSopenharmony_ci } 2290826e83eSopenharmony_ci 2300826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_GetFrameUrl(resourceRequest, frameUrl); 2310826e83eSopenharmony_ci} 2320826e83eSopenharmony_ci 2330826e83eSopenharmony_ciint32_t OH_ArkWebHttpBodyStream_SetUserData(ArkWeb_HttpBodyStream* httpBodyStream, void* userData) 2340826e83eSopenharmony_ci{ 2350826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebHttpBodyStream_SetUserData) { 2360826e83eSopenharmony_ci WVLOG_E("OH_ArkWebHttpBodyStream_SetUserData not found."); 2370826e83eSopenharmony_ci return ARKWEB_ERROR_UNKNOWN; 2380826e83eSopenharmony_ci } 2390826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebHttpBodyStream_SetUserData(httpBodyStream, userData); 2400826e83eSopenharmony_ci} 2410826e83eSopenharmony_ci 2420826e83eSopenharmony_civoid* OH_ArkWebHttpBodyStream_GetUserData(const ArkWeb_HttpBodyStream* httpBodyStream) 2430826e83eSopenharmony_ci{ 2440826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebHttpBodyStream_GetUserData) { 2450826e83eSopenharmony_ci WVLOG_E("OH_ArkWebHttpBodyStream_GetUserData not found."); 2460826e83eSopenharmony_ci return nullptr; 2470826e83eSopenharmony_ci } 2480826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebHttpBodyStream_GetUserData(httpBodyStream); 2490826e83eSopenharmony_ci} 2500826e83eSopenharmony_ci 2510826e83eSopenharmony_ciint32_t OH_ArkWebHttpBodyStream_SetReadCallback( 2520826e83eSopenharmony_ci ArkWeb_HttpBodyStream* httpBodyStream, ArkWeb_HttpBodyStreamReadCallback readCallback) 2530826e83eSopenharmony_ci{ 2540826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebHttpBodyStream_SetReadCallback) { 2550826e83eSopenharmony_ci WVLOG_E("OH_ArkWebHttpBodyStream_SetReadCallback not found."); 2560826e83eSopenharmony_ci return ARKWEB_ERROR_UNKNOWN; 2570826e83eSopenharmony_ci } 2580826e83eSopenharmony_ci 2590826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebHttpBodyStream_SetReadCallback(httpBodyStream, readCallback); 2600826e83eSopenharmony_ci} 2610826e83eSopenharmony_ci 2620826e83eSopenharmony_ciint32_t OH_ArkWebHttpBodyStream_Init( 2630826e83eSopenharmony_ci ArkWeb_HttpBodyStream* httpBodyStream, ArkWeb_HttpBodyStreamInitCallback initCallback) 2640826e83eSopenharmony_ci{ 2650826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebHttpBodyStream_Init) { 2660826e83eSopenharmony_ci WVLOG_E("OH_ArkWebHttpBodyStream_Init not found."); 2670826e83eSopenharmony_ci return ARKWEB_ERROR_UNKNOWN; 2680826e83eSopenharmony_ci } 2690826e83eSopenharmony_ci 2700826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebHttpBodyStream_Init(httpBodyStream, initCallback); 2710826e83eSopenharmony_ci} 2720826e83eSopenharmony_ci 2730826e83eSopenharmony_civoid OH_ArkWebHttpBodyStream_Read(const ArkWeb_HttpBodyStream* httpBodyStream, uint8_t* buffer, int bufLen) 2740826e83eSopenharmony_ci{ 2750826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebHttpBodyStream_Read) { 2760826e83eSopenharmony_ci WVLOG_E("OH_ArkWebHttpBodyStream_Read not found."); 2770826e83eSopenharmony_ci return; 2780826e83eSopenharmony_ci } 2790826e83eSopenharmony_ci 2800826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebHttpBodyStream_Read(httpBodyStream, buffer, bufLen); 2810826e83eSopenharmony_ci} 2820826e83eSopenharmony_ci 2830826e83eSopenharmony_ciuint64_t OH_ArkWebHttpBodyStream_GetSize(const ArkWeb_HttpBodyStream* httpBodyStream) 2840826e83eSopenharmony_ci{ 2850826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebHttpBodyStream_GetSize) { 2860826e83eSopenharmony_ci WVLOG_E("OH_ArkWebHttpBodyStream_GetSize not found."); 2870826e83eSopenharmony_ci return 0; 2880826e83eSopenharmony_ci } 2890826e83eSopenharmony_ci 2900826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebHttpBodyStream_GetSize(httpBodyStream); 2910826e83eSopenharmony_ci} 2920826e83eSopenharmony_ci 2930826e83eSopenharmony_ciuint64_t OH_ArkWebHttpBodyStream_GetPosition(const ArkWeb_HttpBodyStream* httpBodyStream) 2940826e83eSopenharmony_ci{ 2950826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebHttpBodyStream_GetPosition) { 2960826e83eSopenharmony_ci WVLOG_E("OH_ArkWebHttpBodyStream_GetPosition not found."); 2970826e83eSopenharmony_ci return 0; 2980826e83eSopenharmony_ci } 2990826e83eSopenharmony_ci 3000826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebHttpBodyStream_GetPosition(httpBodyStream); 3010826e83eSopenharmony_ci} 3020826e83eSopenharmony_ci 3030826e83eSopenharmony_cibool OH_ArkWebHttpBodyStream_IsChunked(const ArkWeb_HttpBodyStream* httpBodyStream) 3040826e83eSopenharmony_ci{ 3050826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebHttpBodyStream_IsChunked) { 3060826e83eSopenharmony_ci WVLOG_E("OH_ArkWebHttpBodyStream_IsTrunked not found."); 3070826e83eSopenharmony_ci return false; 3080826e83eSopenharmony_ci } 3090826e83eSopenharmony_ci 3100826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebHttpBodyStream_IsChunked(httpBodyStream); 3110826e83eSopenharmony_ci} 3120826e83eSopenharmony_ci 3130826e83eSopenharmony_cibool OH_ArkWebHttpBodyStream_IsEof(const ArkWeb_HttpBodyStream* httpBodyStream) 3140826e83eSopenharmony_ci{ 3150826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebHttpBodyStream_IsEof) { 3160826e83eSopenharmony_ci WVLOG_E("OH_ArkWebHttpBodyStream_HasNullSource not found."); 3170826e83eSopenharmony_ci return false; 3180826e83eSopenharmony_ci } 3190826e83eSopenharmony_ci 3200826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebHttpBodyStream_IsEof(httpBodyStream); 3210826e83eSopenharmony_ci} 3220826e83eSopenharmony_ci 3230826e83eSopenharmony_cibool OH_ArkWebHttpBodyStream_IsInMemory(const ArkWeb_HttpBodyStream* httpBodyStream) 3240826e83eSopenharmony_ci{ 3250826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebHttpBodyStream_IsInMemory) { 3260826e83eSopenharmony_ci WVLOG_E("OH_ArkWebHttpBodyStream_IsInMemory not found."); 3270826e83eSopenharmony_ci return false; 3280826e83eSopenharmony_ci } 3290826e83eSopenharmony_ci 3300826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebHttpBodyStream_IsInMemory(httpBodyStream); 3310826e83eSopenharmony_ci} 3320826e83eSopenharmony_ci 3330826e83eSopenharmony_ciint32_t OH_ArkWebResourceRequest_Destroy(const ArkWeb_ResourceRequest* resourceRequest) 3340826e83eSopenharmony_ci{ 3350826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_Destroy) { 3360826e83eSopenharmony_ci WVLOG_E("OH_ArkWebResourceRequest_Destroy not found."); 3370826e83eSopenharmony_ci return ARKWEB_ERROR_UNKNOWN; 3380826e83eSopenharmony_ci } 3390826e83eSopenharmony_ci 3400826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_Destroy(resourceRequest); 3410826e83eSopenharmony_ci} 3420826e83eSopenharmony_ci 3430826e83eSopenharmony_civoid OH_ArkWebResourceRequest_GetReferrer(const ArkWeb_ResourceRequest* resourceRequest, char** referrer) 3440826e83eSopenharmony_ci{ 3450826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_GetReferrer) { 3460826e83eSopenharmony_ci WVLOG_E("OH_ArkWebResourceRequest_GetReferrer not found."); 3470826e83eSopenharmony_ci return; 3480826e83eSopenharmony_ci } 3490826e83eSopenharmony_ci 3500826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_GetReferrer(resourceRequest, referrer); 3510826e83eSopenharmony_ci} 3520826e83eSopenharmony_ci 3530826e83eSopenharmony_ciint32_t OH_ArkWebResourceRequest_SetUserData(ArkWeb_ResourceRequest* resourceRequest, void* userData) 3540826e83eSopenharmony_ci{ 3550826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_SetUserData) { 3560826e83eSopenharmony_ci WVLOG_E("OH_ArkWebResourceRequest_SetUserData not found."); 3570826e83eSopenharmony_ci return ARKWEB_ERROR_UNKNOWN; 3580826e83eSopenharmony_ci } 3590826e83eSopenharmony_ci 3600826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_SetUserData(resourceRequest, userData); 3610826e83eSopenharmony_ci} 3620826e83eSopenharmony_ci 3630826e83eSopenharmony_civoid* OH_ArkWebResourceRequest_GetUserData(const ArkWeb_ResourceRequest* resourceRequest) 3640826e83eSopenharmony_ci{ 3650826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_GetUserData) { 3660826e83eSopenharmony_ci WVLOG_E("OH_ArkWebResourceRequest_GetUserData not found."); 3670826e83eSopenharmony_ci return nullptr; 3680826e83eSopenharmony_ci } 3690826e83eSopenharmony_ci 3700826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_GetUserData(resourceRequest); 3710826e83eSopenharmony_ci} 3720826e83eSopenharmony_ci 3730826e83eSopenharmony_civoid OH_ArkWebResourceRequest_GetRequestHeaders( 3740826e83eSopenharmony_ci const ArkWeb_ResourceRequest* resourceRequest, ArkWeb_RequestHeaderList** requestHeaderList) 3750826e83eSopenharmony_ci{ 3760826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_GetRequestHeaders) { 3770826e83eSopenharmony_ci WVLOG_E("OH_ArkWebResourceRequest_GetRequestHeaders not found."); 3780826e83eSopenharmony_ci return; 3790826e83eSopenharmony_ci } 3800826e83eSopenharmony_ci 3810826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_GetRequestHeaders(resourceRequest, requestHeaderList); 3820826e83eSopenharmony_ci} 3830826e83eSopenharmony_ci 3840826e83eSopenharmony_cibool OH_ArkWebResourceRequest_IsRedirect(const ArkWeb_ResourceRequest* resourceRequest) 3850826e83eSopenharmony_ci{ 3860826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_IsRedirect) { 3870826e83eSopenharmony_ci WVLOG_E("OH_ArkWebResourceRequest_IsRedirect not found."); 3880826e83eSopenharmony_ci return false; 3890826e83eSopenharmony_ci } 3900826e83eSopenharmony_ci 3910826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_IsRedirect(resourceRequest); 3920826e83eSopenharmony_ci} 3930826e83eSopenharmony_ci 3940826e83eSopenharmony_cibool OH_ArkWebResourceRequest_IsMainFrame(const ArkWeb_ResourceRequest* resourceRequest) 3950826e83eSopenharmony_ci{ 3960826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_IsMainFrame) { 3970826e83eSopenharmony_ci WVLOG_E("OH_ArkWebResourceRequest_IsMainFrame not found."); 3980826e83eSopenharmony_ci return false; 3990826e83eSopenharmony_ci } 4000826e83eSopenharmony_ci 4010826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_IsMainFrame(resourceRequest); 4020826e83eSopenharmony_ci} 4030826e83eSopenharmony_ci 4040826e83eSopenharmony_cibool OH_ArkWebResourceRequest_HasGesture(const ArkWeb_ResourceRequest* resourceRequest) 4050826e83eSopenharmony_ci{ 4060826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_HasGesture) { 4070826e83eSopenharmony_ci WVLOG_E("OH_ArkWebResourceRequest_HasGesture not found."); 4080826e83eSopenharmony_ci return false; 4090826e83eSopenharmony_ci } 4100826e83eSopenharmony_ci 4110826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebResourceRequest_HasGesture(resourceRequest); 4120826e83eSopenharmony_ci} 4130826e83eSopenharmony_ci 4140826e83eSopenharmony_ciint32_t OH_ArkWeb_RegisterCustomSchemes(const char* scheme, int32_t option) 4150826e83eSopenharmony_ci{ 4160826e83eSopenharmony_ci if (OHOS::NWeb::NWebHelper::Instance().LoadWebEngine(true, false)) { 4170826e83eSopenharmony_ci if (!EnsureSdkLoaded()) { 4180826e83eSopenharmony_ci WVLOG_E("OH_ArkWeb_RegisterCustomSchemes sdk not loaded."); 4190826e83eSopenharmony_ci } 4200826e83eSopenharmony_ci } else { 4210826e83eSopenharmony_ci WVLOG_E("OH_ArkWeb_RegisterCustomSchemes webEngineHandle is nullptr."); 4220826e83eSopenharmony_ci } 4230826e83eSopenharmony_ci 4240826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWeb_RegisterCustomSchemes) { 4250826e83eSopenharmony_ci WVLOG_E("OH_ArkWeb_RegisterCustomSchemes not found."); 4260826e83eSopenharmony_ci return ARKWEB_ERROR_UNKNOWN; 4270826e83eSopenharmony_ci } 4280826e83eSopenharmony_ci 4290826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWeb_RegisterCustomSchemes(scheme, option); 4300826e83eSopenharmony_ci} 4310826e83eSopenharmony_ci 4320826e83eSopenharmony_cibool OH_ArkWeb_SetSchemeHandler(const char* scheme, const char* webTag, ArkWeb_SchemeHandler* schemeHandler) 4330826e83eSopenharmony_ci{ 4340826e83eSopenharmony_ci if (OHOS::NWeb::NWebHelper::Instance().LoadWebEngine(true, false)) { 4350826e83eSopenharmony_ci if (!EnsureSdkLoaded()) { 4360826e83eSopenharmony_ci WVLOG_E("scheme_handler sdk not loaded."); 4370826e83eSopenharmony_ci } 4380826e83eSopenharmony_ci } else { 4390826e83eSopenharmony_ci WVLOG_E("scheme_handler webEngineHandle is nullptr."); 4400826e83eSopenharmony_ci } 4410826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWeb_SetSchemeHandler) { 4420826e83eSopenharmony_ci WVLOG_E("OH_ArkWeb_SetSchemeHandler not found."); 4430826e83eSopenharmony_ci return false; 4440826e83eSopenharmony_ci } 4450826e83eSopenharmony_ci 4460826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWeb_SetSchemeHandler(scheme, webTag, schemeHandler); 4470826e83eSopenharmony_ci} 4480826e83eSopenharmony_ci 4490826e83eSopenharmony_cibool OH_ArkWebServiceWorker_SetSchemeHandler(const char* scheme, ArkWeb_SchemeHandler* schemeHandler) 4500826e83eSopenharmony_ci{ 4510826e83eSopenharmony_ci if (OHOS::NWeb::NWebHelper::Instance().LoadWebEngine(true, false)) { 4520826e83eSopenharmony_ci if (!EnsureSdkLoaded()) { 4530826e83eSopenharmony_ci WVLOG_E("scheme_handler sdk not loaded."); 4540826e83eSopenharmony_ci } 4550826e83eSopenharmony_ci } else { 4560826e83eSopenharmony_ci WVLOG_E("scheme_handler webEngineHandle is nullptr."); 4570826e83eSopenharmony_ci } 4580826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebServiceWorker_SetSchemeHandler) { 4590826e83eSopenharmony_ci WVLOG_E("OH_ArkWebServiceWorker_SetSchemeHandler not found."); 4600826e83eSopenharmony_ci return false; 4610826e83eSopenharmony_ci } 4620826e83eSopenharmony_ci 4630826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebServiceWorker_SetSchemeHandler(scheme, schemeHandler); 4640826e83eSopenharmony_ci} 4650826e83eSopenharmony_ci 4660826e83eSopenharmony_ciint32_t OH_ArkWeb_ClearSchemeHandlers(const char* webTag) 4670826e83eSopenharmony_ci{ 4680826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWeb_ClearSchemeHandlers) { 4690826e83eSopenharmony_ci WVLOG_E("OH_ArkWeb_ClearSchemeHandlers not found."); 4700826e83eSopenharmony_ci return ARKWEB_ERROR_UNKNOWN; 4710826e83eSopenharmony_ci } 4720826e83eSopenharmony_ci 4730826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWeb_ClearSchemeHandlers(webTag); 4740826e83eSopenharmony_ci} 4750826e83eSopenharmony_ci 4760826e83eSopenharmony_ciint32_t OH_ArkWebServiceWorker_ClearSchemeHandlers() 4770826e83eSopenharmony_ci{ 4780826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebServiceWorker_ClearSchemeHandlers) { 4790826e83eSopenharmony_ci WVLOG_E("OH_ArkWebServiceWorker_ClearSchemeHandlers not found."); 4800826e83eSopenharmony_ci return ARKWEB_ERROR_UNKNOWN; 4810826e83eSopenharmony_ci } 4820826e83eSopenharmony_ci 4830826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebServiceWorker_ClearSchemeHandlers(); 4840826e83eSopenharmony_ci} 4850826e83eSopenharmony_ci 4860826e83eSopenharmony_civoid OH_ArkWeb_CreateSchemeHandler(ArkWeb_SchemeHandler** schemeHandler) 4870826e83eSopenharmony_ci{ 4880826e83eSopenharmony_ci if (OHOS::NWeb::NWebHelper::Instance().LoadWebEngine(true, false)) { 4890826e83eSopenharmony_ci if (!EnsureSdkLoaded()) { 4900826e83eSopenharmony_ci WVLOG_E("scheme_handler sdk not loaded."); 4910826e83eSopenharmony_ci } 4920826e83eSopenharmony_ci } else { 4930826e83eSopenharmony_ci WVLOG_E("scheme_handler webEngineHandle is nullptr."); 4940826e83eSopenharmony_ci } 4950826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWeb_CreateSchemeHandler) { 4960826e83eSopenharmony_ci WVLOG_E("OH_ArkWeb_CreateSchemeHandler not found."); 4970826e83eSopenharmony_ci return; 4980826e83eSopenharmony_ci } 4990826e83eSopenharmony_ci 5000826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWeb_CreateSchemeHandler(schemeHandler); 5010826e83eSopenharmony_ci} 5020826e83eSopenharmony_ci 5030826e83eSopenharmony_civoid OH_ArkWeb_DestroySchemeHandler(ArkWeb_SchemeHandler* schemeHandler) 5040826e83eSopenharmony_ci{ 5050826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWeb_DestroySchemeHandler) { 5060826e83eSopenharmony_ci WVLOG_E("OH_ArkWeb_DestroySchemeHandler not found."); 5070826e83eSopenharmony_ci return; 5080826e83eSopenharmony_ci } 5090826e83eSopenharmony_ci 5100826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWeb_DestroySchemeHandler(schemeHandler); 5110826e83eSopenharmony_ci} 5120826e83eSopenharmony_ci 5130826e83eSopenharmony_ciint32_t OH_ArkWebSchemeHandler_SetUserData(ArkWeb_SchemeHandler* schemeHandler, void* userData) 5140826e83eSopenharmony_ci{ 5150826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebSchemeHandler_SetUserData) { 5160826e83eSopenharmony_ci WVLOG_E("OH_ArkWebSchemeHandler_SetUserData not found."); 5170826e83eSopenharmony_ci return ARKWEB_ERROR_UNKNOWN; 5180826e83eSopenharmony_ci } 5190826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebSchemeHandler_SetUserData(schemeHandler, userData); 5200826e83eSopenharmony_ci} 5210826e83eSopenharmony_ci 5220826e83eSopenharmony_civoid* OH_ArkWebSchemeHandler_GetUserData(const ArkWeb_SchemeHandler* schemeHandler) 5230826e83eSopenharmony_ci{ 5240826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebSchemeHandler_GetUserData) { 5250826e83eSopenharmony_ci WVLOG_E("OH_ArkWebSchemeHandler_GetUserData not found."); 5260826e83eSopenharmony_ci return nullptr; 5270826e83eSopenharmony_ci } 5280826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebSchemeHandler_GetUserData(schemeHandler); 5290826e83eSopenharmony_ci} 5300826e83eSopenharmony_ci 5310826e83eSopenharmony_ciint32_t OH_ArkWebSchemeHandler_SetOnRequestStart( 5320826e83eSopenharmony_ci ArkWeb_SchemeHandler* schemeHandler, ArkWeb_OnRequestStart onRequestStart) 5330826e83eSopenharmony_ci{ 5340826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebSchemeHandler_SetOnRequestStart) { 5350826e83eSopenharmony_ci WVLOG_E("OH_ArkWebSchemeHandler_SetOnRequestStart not found."); 5360826e83eSopenharmony_ci return ARKWEB_ERROR_UNKNOWN; 5370826e83eSopenharmony_ci } 5380826e83eSopenharmony_ci 5390826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebSchemeHandler_SetOnRequestStart(schemeHandler, onRequestStart); 5400826e83eSopenharmony_ci} 5410826e83eSopenharmony_ci 5420826e83eSopenharmony_ciint32_t OH_ArkWebSchemeHandler_SetOnRequestStop( 5430826e83eSopenharmony_ci ArkWeb_SchemeHandler* schemeHandler, ArkWeb_OnRequestStop onRequestStop) 5440826e83eSopenharmony_ci{ 5450826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebSchemeHandler_SetOnRequestStop) { 5460826e83eSopenharmony_ci WVLOG_E("OH_ArkWebSchemeHandler_SetOnRequestStop not found."); 5470826e83eSopenharmony_ci return ARKWEB_ERROR_UNKNOWN; 5480826e83eSopenharmony_ci } 5490826e83eSopenharmony_ci 5500826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebSchemeHandler_SetOnRequestStop(schemeHandler, onRequestStop); 5510826e83eSopenharmony_ci} 5520826e83eSopenharmony_ci 5530826e83eSopenharmony_civoid OH_ArkWeb_CreateResponse(ArkWeb_Response** response) 5540826e83eSopenharmony_ci{ 5550826e83eSopenharmony_ci if (OHOS::NWeb::NWebHelper::Instance().LoadWebEngine(true, false)) { 5560826e83eSopenharmony_ci if (!EnsureSdkLoaded()) { 5570826e83eSopenharmony_ci WVLOG_E("scheme_handler sdk not loaded."); 5580826e83eSopenharmony_ci } 5590826e83eSopenharmony_ci } else { 5600826e83eSopenharmony_ci WVLOG_E("scheme_handler webEngineHandle is nullptr."); 5610826e83eSopenharmony_ci } 5620826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWeb_CreateResponse) { 5630826e83eSopenharmony_ci WVLOG_E("OH_ArkWeb_CreateResponse not found."); 5640826e83eSopenharmony_ci return; 5650826e83eSopenharmony_ci } 5660826e83eSopenharmony_ci 5670826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWeb_CreateResponse(response); 5680826e83eSopenharmony_ci} 5690826e83eSopenharmony_ci 5700826e83eSopenharmony_civoid OH_ArkWeb_DestroyResponse(ArkWeb_Response* response) 5710826e83eSopenharmony_ci{ 5720826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWeb_DestroyResponse) { 5730826e83eSopenharmony_ci WVLOG_E("OH_ArkWeb_DestroyResponse not found."); 5740826e83eSopenharmony_ci return; 5750826e83eSopenharmony_ci } 5760826e83eSopenharmony_ci 5770826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWeb_DestroyResponse(response); 5780826e83eSopenharmony_ci} 5790826e83eSopenharmony_ci 5800826e83eSopenharmony_ciint32_t OH_ArkWebResponse_SetUrl(ArkWeb_Response* response, const char* url) 5810826e83eSopenharmony_ci{ 5820826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResponse_SetUrl) { 5830826e83eSopenharmony_ci WVLOG_E("OH_ArkWebResponse_SetUrl not found."); 5840826e83eSopenharmony_ci return ARKWEB_ERROR_UNKNOWN; 5850826e83eSopenharmony_ci } 5860826e83eSopenharmony_ci 5870826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebResponse_SetUrl(response, url); 5880826e83eSopenharmony_ci} 5890826e83eSopenharmony_ci 5900826e83eSopenharmony_civoid OH_ArkWebResponse_GetUrl(const ArkWeb_Response* response, char** url) 5910826e83eSopenharmony_ci{ 5920826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResponse_GetUrl) { 5930826e83eSopenharmony_ci WVLOG_E("OH_ArkWebResponse_GetUrl not found."); 5940826e83eSopenharmony_ci return; 5950826e83eSopenharmony_ci } 5960826e83eSopenharmony_ci 5970826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebResponse_GetUrl(response, url); 5980826e83eSopenharmony_ci} 5990826e83eSopenharmony_ci 6000826e83eSopenharmony_ciint32_t OH_ArkWebResponse_SetError(ArkWeb_Response* response, ArkWeb_NetError errorCode) 6010826e83eSopenharmony_ci{ 6020826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResponse_SetError) { 6030826e83eSopenharmony_ci WVLOG_E("OH_ArkWebResponse_SetError not found."); 6040826e83eSopenharmony_ci return ARKWEB_ERROR_UNKNOWN; 6050826e83eSopenharmony_ci } 6060826e83eSopenharmony_ci 6070826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebResponse_SetError(response, errorCode); 6080826e83eSopenharmony_ci} 6090826e83eSopenharmony_ci 6100826e83eSopenharmony_ciArkWeb_NetError OH_ArkWebResponse_GetError(const ArkWeb_Response* response) 6110826e83eSopenharmony_ci{ 6120826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResponse_GetError) { 6130826e83eSopenharmony_ci WVLOG_E("OH_ArkWebResponse_GetError not found."); 6140826e83eSopenharmony_ci return ARKWEB_ERR_FAILED; 6150826e83eSopenharmony_ci } 6160826e83eSopenharmony_ci 6170826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebResponse_GetError(response); 6180826e83eSopenharmony_ci} 6190826e83eSopenharmony_ci 6200826e83eSopenharmony_ciint32_t OH_ArkWebResponse_SetStatus(ArkWeb_Response* response, int status) 6210826e83eSopenharmony_ci{ 6220826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResponse_SetStatus) { 6230826e83eSopenharmony_ci WVLOG_E("OH_ArkWebResponse_SetStatus not found."); 6240826e83eSopenharmony_ci return ARKWEB_ERROR_UNKNOWN; 6250826e83eSopenharmony_ci } 6260826e83eSopenharmony_ci 6270826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebResponse_SetStatus(response, status); 6280826e83eSopenharmony_ci} 6290826e83eSopenharmony_ci 6300826e83eSopenharmony_ciint OH_ArkWebResponse_GetStatus(const ArkWeb_Response* response) 6310826e83eSopenharmony_ci{ 6320826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResponse_GetStatus) { 6330826e83eSopenharmony_ci WVLOG_E("OH_ArkWebResponse_GetStatus not found."); 6340826e83eSopenharmony_ci return -1; 6350826e83eSopenharmony_ci } 6360826e83eSopenharmony_ci 6370826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebResponse_GetStatus(response); 6380826e83eSopenharmony_ci} 6390826e83eSopenharmony_ci 6400826e83eSopenharmony_ciint32_t OH_ArkWebResponse_SetStatusText(ArkWeb_Response* response, const char* statusText) 6410826e83eSopenharmony_ci{ 6420826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResponse_SetStatusText) { 6430826e83eSopenharmony_ci WVLOG_E("OH_ArkWebResponse_SetStatusText not found."); 6440826e83eSopenharmony_ci return ARKWEB_ERROR_UNKNOWN; 6450826e83eSopenharmony_ci } 6460826e83eSopenharmony_ci 6470826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebResponse_SetStatusText(response, statusText); 6480826e83eSopenharmony_ci} 6490826e83eSopenharmony_ci 6500826e83eSopenharmony_civoid OH_ArkWebResponse_GetStatusText(const ArkWeb_Response* response, char** statusText) 6510826e83eSopenharmony_ci{ 6520826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResponse_GetStatusText) { 6530826e83eSopenharmony_ci WVLOG_E("OH_ArkWebResponse_GetStatusText not found."); 6540826e83eSopenharmony_ci return; 6550826e83eSopenharmony_ci } 6560826e83eSopenharmony_ci 6570826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebResponse_GetStatusText(response, statusText); 6580826e83eSopenharmony_ci} 6590826e83eSopenharmony_ci 6600826e83eSopenharmony_ciint32_t OH_ArkWebResponse_SetMimeType(ArkWeb_Response* response, const char* mimeType) 6610826e83eSopenharmony_ci{ 6620826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResponse_SetMimeType) { 6630826e83eSopenharmony_ci WVLOG_E("OH_ArkWebResponse_SetMimeType not found."); 6640826e83eSopenharmony_ci return ARKWEB_ERROR_UNKNOWN; 6650826e83eSopenharmony_ci } 6660826e83eSopenharmony_ci 6670826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebResponse_SetMimeType(response, mimeType); 6680826e83eSopenharmony_ci} 6690826e83eSopenharmony_ci 6700826e83eSopenharmony_civoid OH_ArkWebResponse_GetMimeType(const ArkWeb_Response* response, char** mimeType) 6710826e83eSopenharmony_ci{ 6720826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResponse_GetMimeType) { 6730826e83eSopenharmony_ci WVLOG_E("OH_ArkWebResponse_GetMimeType not found."); 6740826e83eSopenharmony_ci return; 6750826e83eSopenharmony_ci } 6760826e83eSopenharmony_ci 6770826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebResponse_GetMimeType(response, mimeType); 6780826e83eSopenharmony_ci} 6790826e83eSopenharmony_ci 6800826e83eSopenharmony_ciint32_t OH_ArkWebResponse_SetCharset(ArkWeb_Response* response, const char* charset) 6810826e83eSopenharmony_ci{ 6820826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResponse_SetCharset) { 6830826e83eSopenharmony_ci WVLOG_E("OH_ArkWebResponse_SetCharset not found."); 6840826e83eSopenharmony_ci return ARKWEB_ERROR_UNKNOWN; 6850826e83eSopenharmony_ci } 6860826e83eSopenharmony_ci 6870826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebResponse_SetCharset(response, charset); 6880826e83eSopenharmony_ci} 6890826e83eSopenharmony_ci 6900826e83eSopenharmony_civoid OH_ArkWebResponse_GetCharset(const ArkWeb_Response* response, char** charset) 6910826e83eSopenharmony_ci{ 6920826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResponse_GetCharset) { 6930826e83eSopenharmony_ci WVLOG_E("OH_ArkWebResponse_GetCharset not found."); 6940826e83eSopenharmony_ci return; 6950826e83eSopenharmony_ci } 6960826e83eSopenharmony_ci 6970826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebResponse_GetCharset(response, charset); 6980826e83eSopenharmony_ci} 6990826e83eSopenharmony_ci 7000826e83eSopenharmony_ciint32_t OH_ArkWebResponse_SetHeaderByName( 7010826e83eSopenharmony_ci ArkWeb_Response* response, const char* name, const char* value, bool overwrite) 7020826e83eSopenharmony_ci{ 7030826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResponse_SetHeaderByName) { 7040826e83eSopenharmony_ci WVLOG_E("OH_ArkWebResponse_SetHeaderByName not found."); 7050826e83eSopenharmony_ci return ARKWEB_ERROR_UNKNOWN; 7060826e83eSopenharmony_ci } 7070826e83eSopenharmony_ci 7080826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebResponse_SetHeaderByName(response, name, value, overwrite); 7090826e83eSopenharmony_ci} 7100826e83eSopenharmony_ci 7110826e83eSopenharmony_civoid OH_ArkWebResponse_GetHeaderByName(const ArkWeb_Response* response, const char* name, char** value) 7120826e83eSopenharmony_ci{ 7130826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResponse_GetHeaderByName) { 7140826e83eSopenharmony_ci WVLOG_E("OH_ArkWebResponse_GetHeaderByName not found."); 7150826e83eSopenharmony_ci return; 7160826e83eSopenharmony_ci } 7170826e83eSopenharmony_ci 7180826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebResponse_GetHeaderByName(response, name, value); 7190826e83eSopenharmony_ci} 7200826e83eSopenharmony_ci 7210826e83eSopenharmony_ciint32_t OH_ArkWebResourceHandler_Destroy(const ArkWeb_ResourceHandler* resourceHandler) 7220826e83eSopenharmony_ci{ 7230826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResourceHandler_Destroy) { 7240826e83eSopenharmony_ci WVLOG_E("OH_ArkWebResourceHandler_Destroy not found."); 7250826e83eSopenharmony_ci return ARKWEB_ERROR_UNKNOWN; 7260826e83eSopenharmony_ci } 7270826e83eSopenharmony_ci 7280826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebResourceHandler_Destroy(resourceHandler); 7290826e83eSopenharmony_ci} 7300826e83eSopenharmony_ci 7310826e83eSopenharmony_ciint32_t OH_ArkWebResourceHandler_DidReceiveResponse( 7320826e83eSopenharmony_ci const ArkWeb_ResourceHandler* resourceHandler, const ArkWeb_Response* response) 7330826e83eSopenharmony_ci{ 7340826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResourceHandler_DidReceiveResponse) { 7350826e83eSopenharmony_ci WVLOG_E("OH_ArkWebResourceHandler_DidReceiveResponse not found."); 7360826e83eSopenharmony_ci return ARKWEB_ERROR_UNKNOWN; 7370826e83eSopenharmony_ci } 7380826e83eSopenharmony_ci 7390826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebResourceHandler_DidReceiveResponse(resourceHandler, response); 7400826e83eSopenharmony_ci} 7410826e83eSopenharmony_ci 7420826e83eSopenharmony_ciint32_t OH_ArkWebResourceHandler_DidReceiveData( 7430826e83eSopenharmony_ci const ArkWeb_ResourceHandler* resourceHandler, const uint8_t* buffer, int64_t bufLen) 7440826e83eSopenharmony_ci{ 7450826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResourceHandler_DidReceiveData) { 7460826e83eSopenharmony_ci WVLOG_E("OH_ArkWebResourceHandler_DidReceiveData not found."); 7470826e83eSopenharmony_ci return ARKWEB_ERROR_UNKNOWN; 7480826e83eSopenharmony_ci } 7490826e83eSopenharmony_ci 7500826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebResourceHandler_DidReceiveData(resourceHandler, buffer, bufLen); 7510826e83eSopenharmony_ci} 7520826e83eSopenharmony_ci 7530826e83eSopenharmony_ciint32_t OH_ArkWebResourceHandler_DidFinish(const ArkWeb_ResourceHandler* resourceHandler) 7540826e83eSopenharmony_ci{ 7550826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResourceHandler_DidFinish) { 7560826e83eSopenharmony_ci WVLOG_E("OH_ArkWeb_ResourceHandler_DidFinish not found."); 7570826e83eSopenharmony_ci return ARKWEB_ERROR_UNKNOWN; 7580826e83eSopenharmony_ci } 7590826e83eSopenharmony_ci 7600826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebResourceHandler_DidFinish(resourceHandler); 7610826e83eSopenharmony_ci} 7620826e83eSopenharmony_ci 7630826e83eSopenharmony_ciint32_t OH_ArkWebResourceHandler_DidFailWithError( 7640826e83eSopenharmony_ci const ArkWeb_ResourceHandler* resourceHandler, ArkWeb_NetError errorCode) 7650826e83eSopenharmony_ci{ 7660826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebResourceHandler_DidFailWithError) { 7670826e83eSopenharmony_ci WVLOG_E("OH_ArkWeb_ResourceHandler_DidFailWithError not found."); 7680826e83eSopenharmony_ci return ARKWEB_ERROR_UNKNOWN; 7690826e83eSopenharmony_ci } 7700826e83eSopenharmony_ci 7710826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebResourceHandler_DidFailWithError(resourceHandler, errorCode); 7720826e83eSopenharmony_ci} 7730826e83eSopenharmony_ci 7740826e83eSopenharmony_civoid OH_ArkWeb_ReleaseString(char* string) 7750826e83eSopenharmony_ci{ 7760826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWeb_ReleaseString) { 7770826e83eSopenharmony_ci WVLOG_E("OH_ArkWeb_ReleaseString not found."); 7780826e83eSopenharmony_ci return; 7790826e83eSopenharmony_ci } 7800826e83eSopenharmony_ci 7810826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWeb_ReleaseString(string); 7820826e83eSopenharmony_ci} 7830826e83eSopenharmony_ci 7840826e83eSopenharmony_civoid OH_ArkWeb_ReleaseByteArray(uint8_t* byteArray) 7850826e83eSopenharmony_ci{ 7860826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWeb_ReleaseByteArray) { 7870826e83eSopenharmony_ci WVLOG_E("OH_ArkWeb_ReleaseByteArray not found."); 7880826e83eSopenharmony_ci return; 7890826e83eSopenharmony_ci } 7900826e83eSopenharmony_ci 7910826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWeb_ReleaseByteArray(byteArray); 7920826e83eSopenharmony_ci} 7930826e83eSopenharmony_ci 7940826e83eSopenharmony_ciint32_t OH_ArkWebSchemeHandler_SetFromEts( 7950826e83eSopenharmony_ci ArkWeb_SchemeHandler* schemeHandler, bool fromEts) 7960826e83eSopenharmony_ci{ 7970826e83eSopenharmony_ci if (!g_SchemeHandlerApi || !g_SchemeHandlerApi->impl_OH_ArkWebSchemeHandler_SetFromEts) { 7980826e83eSopenharmony_ci WVLOG_E("impl_OH_ArkWebSchemeHandler_SetFromEts not found."); 7990826e83eSopenharmony_ci return ARKWEB_ERROR_UNKNOWN; 8000826e83eSopenharmony_ci } 8010826e83eSopenharmony_ci 8020826e83eSopenharmony_ci return g_SchemeHandlerApi->impl_OH_ArkWebSchemeHandler_SetFromEts(schemeHandler, fromEts); 8030826e83eSopenharmony_ci} 804