1 /*
2  * Copyright (c) 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 #ifndef OHOS_ACE_FRAMEWORK_CJ_WEB_H
17 #define OHOS_ACE_FRAMEWORK_CJ_WEB_H
18 #include <cstdint>
19 #include <map>
20 #include <string>
21 
22 #include "webview_controller_impl.h"
23 
24 #include "bridge/cj_frontend/interfaces/cj_ffi/cj_collection_ffi.h"
25 #include "bridge/cj_frontend/interfaces/cj_ffi/cj_common_ffi.h"
26 #include "bridge/cj_frontend/interfaces/cj_ffi/cj_container_base_ffi.h"
27 #include "core/components/web/web_component.h"
28 
29 struct FfiWebEvent;
30 
31 extern "C" {
32 struct CPermissionRequestResult {
33     CArrString permissions;
34     CArrI32 authResults;
35 };
36 
37 struct RetDataCPermissionRequestResult {
38     int32_t code;
39     CPermissionRequestResult data;
40 };
41 
42 struct MapToCFFIArray {
43     size_t size;
44     const char** key;
45     const char** value;
46 };
47 
48 struct FfiWebResourceRequest {
49     const char* url;
50     bool isMainFrame;
51     bool isRedirect;
52     bool hasGesture;
53     const char* method;
54     MapToCFFIArray* mapToCFFIArray;
55 };
56 
57 typedef void (*RequestResultCallback)(void*, CArrString, void*);
58 
59 CJ_EXPORT void FfiOHOSAceFrameworkWebHandleCancel(void* result);
60 CJ_EXPORT void FfiOHOSAceFrameworkWebHandleConfirm(void* result);
61 CJ_EXPORT void FfiOHOSAceFrameworkWebHandlePromptConfirm(void* result, const char* message);
62 CJ_EXPORT void FfiOHOSAceFrameworkWebReleaseResult(void* result);
63 
64 CJ_EXPORT void FfiOHOSAceFrameworkWebCreate(const char* src, int64_t controllerId, int32_t type, bool mode);
65 CJ_EXPORT void FfiOHOSAceFrameworkWebFileAccessEnabled(bool isFileAccessEnabled);
66 CJ_EXPORT void FfiOHOSAceFrameworkWebDomStorageAccessEnabled(bool isDomStorageAccessEnabled);
67 CJ_EXPORT void FfiOHOSAceFrameworkWebImageAccessEnabled(bool isImageAccessEnabled);
68 CJ_EXPORT void FfiOHOSAceFrameworkWebOnlineImageAccessEnabled(bool isImageAccessEnabled);
69 CJ_EXPORT void FfiOHOSAceFrameworkWebMixedMode(int32_t mixedModeNum);
70 CJ_EXPORT void FfiOHOSAceFrameworkWebZoomAccessEnabled(bool isZoomAccessEnabled);
71 CJ_EXPORT void FfiOHOSAceFrameworkWebGeolocationAccessEnabled(bool isGeolocationAccessEnabled);
72 CJ_EXPORT void FfiOHOSAceFrameworkWebVerticalScrollBarAccessEnabled(bool isVerticalScrollBarAccess);
73 CJ_EXPORT void FfiOHOSAceFrameworkNestedScroll(int32_t nestedScrollNum, int32_t scrollBackwardNum);
74 CJ_EXPORT void FfiOHOSAceFrameworkWebUserAgent(const std::string& userAgent);
75 CJ_EXPORT void FfiOHOSAceFrameworkWebBackgroundColor(uint32_t color);
76 CJ_EXPORT void FfiOHOSAceFrameworkWebDarkMode(int32_t darkMode);
77 CJ_EXPORT void FfiOHOSAceFrameworkWebForceDarkAccess(bool access);
78 
79 CJ_EXPORT void FfiOHOSAceFrameworkWebOnAlert(bool (*callback)(FfiWebEvent event));
80 CJ_EXPORT void FfiOHOSAceFrameworkWebOnPageStart(void (*callback)(const char* url));
81 CJ_EXPORT void FfiOHOSAceFrameworkWebOnPageFinish(void (*callback)(const char* url));
82 CJ_EXPORT void FfiOHOSAceFrameworkWebOnLoadIntercept(bool (*callback)(FfiWebResourceRequest event));
83 CJ_EXPORT void FfiOHOSAceFrameworkWebJavaScriptProxy(
84     VectorInt64Handle funcList, const char* name, VectorStringHandle methodList, int64_t controllerId);
85 CJ_EXPORT void FfiOHOSAceFrameworkWebSetCallback(RequestResultCallback cb);
86 };
87 #endif // OHOS_ACE_FRAMEWORK_CJ_WEB_H
88