• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021-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 FRAMEWORKS_BRIDGE_DECLARATIVE_FRONTEND_JS_VIEW_JS_WEB_H
17 #define FRAMEWORKS_BRIDGE_DECLARATIVE_FRONTEND_JS_VIEW_JS_WEB_H
18 
19 #include <string>
20 
21 #include "bridge/declarative_frontend/jsview/js_view_common_def.h"
22 #include "core/components/web/web_component.h"
23 #include "frameworks/base/image/pixel_map.h"
24 #include "frameworks/bridge/declarative_frontend/jsview/js_container_base.h"
25 #include "core/event/mouse_event.h"
26 
27 namespace OHOS::Ace::Framework {
28 using JSwebEventCallback = std::function<void()>;
29 class JSWeb : public JSContainerBase {
30 public:
31     static void JSBind(BindingTarget globalObj);
32     static void Create(const JSCallbackInfo& info);
33     static void OnAlert(const JSCallbackInfo& args);
34     static void OnBeforeUnload(const JSCallbackInfo& args);
35     static void OnConfirm(const JSCallbackInfo& args);
36     static void OnFullScreenEnter(const JSCallbackInfo& args);
37     static void OnFullScreenExit(const JSCallbackInfo& args);
38     static void OnPrompt(const JSCallbackInfo& args);
39     static void OnConsoleLog(const JSCallbackInfo& args);
40     static void OnPageStart(const JSCallbackInfo& args);
41     static void OnPageFinish(const JSCallbackInfo& args);
42     static void OnProgressChange(const JSCallbackInfo& args);
43     static void OnTitleReceive(const JSCallbackInfo& args);
44     static void OnGeolocationHide(const JSCallbackInfo& args);
45     static void OnGeolocationShow(const JSCallbackInfo& args);
46     static void OnRequestFocus(const JSCallbackInfo& args);
47     static void OnError(const JSCallbackInfo& args);
48     static void OnMessage(const JSCallbackInfo& args);
49     static void OnDownloadStart(const JSCallbackInfo& args);
50     static void OnErrorReceive(const JSCallbackInfo& args);
51     static void OnHttpErrorReceive(const JSCallbackInfo& args);
52     static void OnFileSelectorShow(const JSCallbackInfo& args);
53     static void OnInterceptRequest(const JSCallbackInfo& args);
54     static void OnOverrideErrorPage(const JSCallbackInfo& args);
55     static void OnUrlLoadIntercept(const JSCallbackInfo& args);
56     static void OnLoadIntercept(const JSCallbackInfo& args);
57     static void JsEnabled(bool isJsEnabled);
58     static void ContentAccessEnabled(bool isContentAccessEnabled);
59     static void FileAccessEnabled(bool isFileAccessEnabled);
60     static void OnFocus(const JSCallbackInfo& args);
61     static void OnLineImageAccessEnabled(bool isOnLineImageAccessEnabled);
62     static void DomStorageAccessEnabled(bool isDomStorageAccessEnabled);
63     static void ImageAccessEnabled(bool isImageAccessEnabled);
64     static void MixedMode(int32_t MixedModeNum);
65     static void ZoomAccessEnabled(bool isZoomAccessEnabled);
66     static void GeolocationAccessEnabled(bool isGeolocationAccessEnabled);
67     static void JavaScriptProxy(const JSCallbackInfo& args);
68     static void UserAgent(const std::string& userAgent);
69     static void OnRenderExited(const JSCallbackInfo& args);
70     static void OnRefreshAccessedHistory(const JSCallbackInfo& args);
71     static void CacheMode(int32_t cacheMode);
72     static void OverviewModeAccess(bool isOverviewModeAccessEnabled);
73     static void WebDebuggingAccess(const JSCallbackInfo& args);
74     static void WideViewModeAccess(const JSCallbackInfo& args);
75     static void FileFromUrlAccess(bool isFileFromUrlAccessEnabled);
76     static void DatabaseAccess(bool isDatabaseAccessEnabled);
77     static void TextZoomRatio(int32_t textZoomRatioNum);
78     static void WebDebuggingAccessEnabled(bool isWebDebuggingAccessEnabled);
79     static void OnMouse(const JSCallbackInfo& args);
80     static void OnResourceLoad(const JSCallbackInfo& args);
81     static void OnScaleChange(const JSCallbackInfo& args);
82     static void OnScroll(const JSCallbackInfo& args);
83     static void WebRotate(const JSCallbackInfo& args);
84     static void BackgroundColor(const JSCallbackInfo& info);
85     static void InitialScale(float scale);
86     static void Password(bool password);
87     static void TableData(bool tableData);
88     static void OnFileSelectorShowAbandoned(const JSCallbackInfo& args);
89     static void OnHttpAuthRequest(const JSCallbackInfo& args);
90     static void OnSslErrRequest(const JSCallbackInfo& args);
91     static void OnSslErrorRequest(const JSCallbackInfo& args);
92     static void OnAllSslErrorRequest(const JSCallbackInfo& args);
93     static void OnSslSelectCertRequest(const JSCallbackInfo& args);
94     static void OnPermissionRequest(const JSCallbackInfo& args);
95     static void OnScreenCaptureRequest(const JSCallbackInfo& args);
96     static void BindSelectionMenu(const JSCallbackInfo& info);
97     static void OnContextMenuHide(const JSCallbackInfo& args);
98     static void OnContextMenuShow(const JSCallbackInfo& args);
99     static void OnSearchResultReceive(const JSCallbackInfo& args);
100     static void MediaPlayGestureAccess(bool isNeedGestureAccess);
101     static void OnKeyEvent(const JSCallbackInfo& args);
102     static void JsOnDragStart(const JSCallbackInfo& info);
103     static void JsOnDragEnter(const JSCallbackInfo& info);
104     static void JsOnDragMove(const JSCallbackInfo& info);
105     static void JsOnDragLeave(const JSCallbackInfo& info);
106     static void JsOnDrop(const JSCallbackInfo& info);
107     static void PinchSmoothModeEnabled(bool isPinchSmoothModeEnabled);
108     static void OnWindowNew(const JSCallbackInfo& args);
109     static void OnActivateContent(const JSCallbackInfo& args);
110     static void OnWindowExit(const JSCallbackInfo& args);
111     static void MultiWindowAccessEnabled(bool isMultiWindowAccessEnable);
112     static void AllowWindowOpenMethod(bool isAllowWindowOpenMethod);
113     static void WebCursiveFont(const std::string& cursiveFontFamily);
114     static void WebFantasyFont(const std::string& fantasyFontFamily);
115     static void WebFixedFont(const std::string& fixedFontFamily);
116     static void WebSansSerifFont(const std::string& sansSerifFontFamily);
117     static void WebSerifFont(const std::string& serifFontFamily);
118     static void WebStandardFont(const std::string& standardFontFamily);
119     static void DefaultFixedFontSize(int32_t defaultFixedFontSize);
120     static void DefaultFontSize(int32_t defaultFontSize);
121     static void DefaultTextEncodingFormat(const JSCallbackInfo& args);
122     static void MinFontSize(int32_t minFontSize);
123     static void MinLogicalFontSize(int32_t minLogicalFontSize);
124     static void BlockNetwork(bool isNetworkBlocked);
125     static void OnPageVisible(const JSCallbackInfo& args);
126     static void OnInterceptKeyEvent(const JSCallbackInfo& args);
127     static void OnDataResubmitted(const JSCallbackInfo& args);
128     static void OnFaviconReceived(const JSCallbackInfo& args);
129     static void OnTouchIconUrlReceived(const JSCallbackInfo& args);
130     static void DarkMode(int32_t darkMode);
131     static void ForceDarkAccess(bool access);
132     static void HorizontalScrollBarAccess(bool isHorizontalScrollBarAccessEnabled);
133     static void VerticalScrollBarAccess(bool isVerticalScrollBarAccessEnabled);
134     static void OnAudioStateChanged(const JSCallbackInfo& args);
135     static void MediaOptions(const JSCallbackInfo& args);
136     static void OnFirstContentfulPaint(const JSCallbackInfo& args);
137     static void OnFirstMeaningfulPaint(const JSCallbackInfo& args);
138     static void OnLargestContentfulPaint(const JSCallbackInfo& args);
139     static void OnSafeBrowsingCheckResult(const JSCallbackInfo& args);
140     static void OnNavigationEntryCommitted(const JSCallbackInfo& args);
141     static void OnIntelligentTrackingPreventionResult(const JSCallbackInfo& args);
142     static void OnControllerAttached(const JSCallbackInfo& args);
143     static void OnOverScroll(const JSCallbackInfo& args);
144     static void SetLayoutMode(int32_t layoutMode);
145     static void SetNestedScroll(const JSCallbackInfo& info);
146     static void SetMetaViewport(const JSCallbackInfo& args);
147     static void OverScrollMode(int overScrollMode);
148     static void BlurOnKeyboardHideMode(int blurOnKeyboardHideMode);
149     static void EnableNativeEmbedMode(bool isEmbedModeEnabled);
150     static void NativeEmbedOptions(const JSCallbackInfo& args);
151     static void RegisterNativeEmbedRule(const std::string& tag, const std::string& type);
152     static void OnNativeEmbedLifecycleChange(const JSCallbackInfo& args);
153     static void OnNativeEmbedVisibilityChange(const JSCallbackInfo& args);
154     static void OnNativeEmbedGestureEvent(const JSCallbackInfo& args);
155     static void OnNativeEmbedMouseEvent(const JSCallbackInfo& args);
156     static void JavaScriptOnDocumentStart(const JSCallbackInfo& args);
157     static void JavaScriptOnDocumentEnd(const JSCallbackInfo& args);
158     static void OptimizeParserBudgetEnabled(bool enable);
159     static void BypassVsyncCondition(int32_t webBypassVsyncCondition);
160     static void RunJavaScriptOnDocumentStart(const JSCallbackInfo& args);
161     static void RunJavaScriptOnDocumentEnd(const JSCallbackInfo& args);
162     static void RunJavaScriptOnHeadEnd(const JSCallbackInfo& args);
163     static void SetCallbackFromController(const JSRef<JSObject> controller);
164     static JSRef<JSVal> CreateJSWindowNewHandler(const WebWindowNewEvent& eventInfo);
165     static bool HandleWindowNewEvent(const WebWindowNewEvent* eventInfo);
166     static JSRef<JSVal> CreateScreenCaptureHandler(const WebScreenCaptureRequestEvent& eventInfo);
167     static JSRef<JSVal> CreatePermissionRequestHandler(const WebPermissionRequestEvent& eventInfo);
168     static JSRef<JSVal> CreateGeolocationShowHandler(const LoadWebGeolocationShowEvent& eventInfo);
169     static JSRef<JSVal> CreateNativeEmbedGestureHandler(const NativeEmbeadTouchInfo& eventInfo);
170     static JSRef<JSVal> CreateFullScreenEnterHandler(const FullScreenEnterEvent& eventInfo);
171     static JSRef<JSVal> CreateCommonDialogResultHandler(const WebDialogEvent& eventInfo);
172     static JSRef<JSVal> CreateFileSelectorResultHandler(const FileSelectorEvent& eventInfo);
173     static JSRef<JSVal> CreateFileSelectorParamHandler(const FileSelectorEvent& eventInfo);
174     static JSRef<JSVal> CreateContextMenuParamHandler(const ContextMenuEvent& eventInfo);
175     static JSRef<JSVal> CreateContextMenuResultHandler(const ContextMenuEvent& eventInfo);
176     static JSRef<JSVal> CreateRequestErrorHandler(const ReceivedErrorEvent& eventInfo);
177     static JSRef<JSVal> CreateResponseErrorHandler(const ReceivedErrorEvent& eventInfo);
178     static JSRef<JSVal> CreateLoadInterceptHandler(const LoadInterceptEvent& eventInfo);
179     static JSRef<JSVal> CreateHttpErrorReceiveRequestHandler(const ReceivedHttpErrorEvent& eventInfo);
180     static JSRef<JSVal> CreateHttpErrorReceiveResponseHandler(const ReceivedHttpErrorEvent& eventInfo);
181     static JSRef<JSVal> CreateOverrideUrlLoadingHandler(const LoadOverrideEvent& eventInfo);
182     static JSRef<JSVal> CreateHttpAuthRequestHandler(const WebHttpAuthEvent& eventInfo);
183     static JSRef<JSVal> CreateConsoleHandler(const LoadWebConsoleLogEvent& eventInfo);
184     static JSRef<JSVal> CreateSslErrorEventHandler(const WebAllSslErrorEvent& eventInfo);
185     static JSRef<JSVal> CreateDataResubmittedHandler(const DataResubmittedEvent& eventInfo);
186     static JSRef<JSVal> CreateClientAuthenticationRequestHandler(const WebSslSelectCertEvent& eventInfo);
187     static JSRef<JSVal> CreateSslErrorEventReceiveHandler(const WebSslErrorEvent& eventInfo);
188     static JSRef<JSVal> CreateInterceptRequestHandler(const OnInterceptRequestEvent& eventInfo);
189     static JSRef<JSVal> CreateFaviconReceivedHandler(const FaviconReceivedEvent& eventInfo);
190     static uint32_t GetBytesPerPixel(OHOS::Ace::PixelFormat format);
191 
192     // Enable or disable debugging of web content
193     static bool webDebuggingAccess_;
194     static int32_t webDebuggingPort_;
195     static JSwebEventCallback OnControllerAttachedCallback_;
196     static void CopyOption(int32_t copyOption);
197     static void OnOverrideUrlLoading(const JSCallbackInfo& args);
198     static void TextAutosizing(const JSCallbackInfo& args);
199     static void EnableNativeVideoPlayer(const JSCallbackInfo& args);
200     static void OnRenderProcessNotResponding(const JSCallbackInfo& args);
201     static void OnRenderProcessResponding(const JSCallbackInfo& args);
202     static void SelectionMenuOptions(const JSCallbackInfo& args);
203     static void OnViewportFitChanged(const JSCallbackInfo& args);
204     static void OnInterceptKeyboardAttach(const JSCallbackInfo& args);
205     static void OnAdsBlocked(const JSCallbackInfo& args);
206     static void ForceDisplayScrollBar(const JSCallbackInfo& args);
207     static void KeyboardAvoidMode(int32_t mode);
208     static void EditMenuOptions(const JSCallbackInfo& info);
209     static void EnableHapticFeedback(const JSCallbackInfo& args);
210     static void EnableWebAVSession(const JSCallbackInfo& args);
211     static void EnableDataDetector(const JSCallbackInfo& args);
212     static void DataDetectorConfig(const JSCallbackInfo& args);
213     static void EnableFollowSystemFontWeight(bool enableFollowSystemFontWeight);
214     static void OnLoadStarted(const JSCallbackInfo& args);
215     static void OnLoadFinished(const JSCallbackInfo& args);
216     static void GestureFocusMode(int32_t gestureFocusMode);
217     static void OnPdfScrollAtBottom(const JSCallbackInfo& args);
218     static void OnPdfLoadEvent(const JSCallbackInfo& args);
219 
220 protected:
221     static void OnCommonDialog(const JSCallbackInfo& args, int dialogEventType);
222     static void ParseRawfileWebSrc(const JSRef<JSVal>& srcValue, std::string& webSrc);
223     static void ParseJsCustomKeyboardOption(const JsiExecutionContext& context,
224         const JSRef<JSVal>& keyboardOpt, WebKeyboardOption& keyboardOption);
225 
226 private:
227     static void ParseScriptItems(const JSCallbackInfo& args, ScriptItems& scriptItems,
228         ScriptItemsByOrder& scriptItemsByOrder);
229     static bool CheckNestedScrollMode(const int32_t& modeValue);
230 };
231 } // namespace OHOS::Ace::Framework
232 #endif // FRAMEWORKS_BRIDGE_DECLARATIVE_FRONTEND_JS_VIEW_JS_WEB_H
233