• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #ifndef FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERNS_WEB_WEB_MODEL_H
17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERNS_WEB_WEB_MODEL_H
18 
19 #include <mutex>
20 
21 #include "bridge/declarative_frontend/view_stack_processor.h"
22 #include "core/components/web/web_property.h"
23 #include "core/components_ng/property/menu_property.h"
24 
25 namespace OHOS::Ace {
26 using ScriptItems = std::map<std::string, std::vector<std::string>>;
27 using ScriptItemsByOrder = std::vector<std::string>;
28 class ACE_FORCE_EXPORT WebModel {
29 public:
30     static WebModel* GetInstance();
31     virtual ~WebModel() = default;
32 
33     virtual void Create(const std::string& src, const RefPtr<WebController>& webController,
34         RenderMode renderMode = RenderMode::ASYNC_RENDER, bool incognitoMode = false,
35         const std::string& sharedRenderProcessToken = "") = 0;
36     virtual void Create(const std::string& src, std::function<void(int32_t)>&& setWebIdCallback,
37         std::function<void(const std::string&)>&& setHapPathCallback, int32_t parentWebId, bool popup,
38         RenderMode renderMode = RenderMode::ASYNC_RENDER, bool incognitoMode = false,
39         const std::string& sharedRenderProcessToken = "") = 0;
GetDefaultBackgroundColor()40     virtual Color GetDefaultBackgroundColor() { return Color::WHITE; }
41     virtual void SetCustomScheme(const std::string& cmdLine) = 0;
SetFocusable(bool focusable)42     virtual void SetFocusable(bool focusable) {};
SetFocusNode(bool isFocusNode)43     virtual void SetFocusNode(bool isFocusNode) {};
44     virtual void SetOnCommonDialog(
45         std::function<bool(const BaseEventInfo* info)>&& jsCallback, int dialogEventType) = 0;
46     virtual void SetOnConsoleLog(std::function<bool(const BaseEventInfo* info)>&& jsCallback) = 0;
47     virtual void SetOnPageStart(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
48     virtual void SetOnPageFinish(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
49     virtual void SetOnProgressChange(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
50     virtual void SetOnTitleReceive(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
51     virtual void SetOnFullScreenExit(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
52     virtual void SetOnFullScreenEnter(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
53     virtual void SetOnGeolocationHide(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
54     virtual void SetOnGeolocationShow(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
55     virtual void SetOnRequestFocus(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
56     virtual void SetOnDownloadStart(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
57     virtual void SetOnHttpAuthRequest(std::function<bool(const BaseEventInfo* info)>&& jsCallback) = 0;
58     virtual void SetOnSslErrorRequest(std::function<bool(const BaseEventInfo* info)>&& jsCallback) = 0;
59     virtual void SetOnAllSslErrorRequest(std::function<bool(const BaseEventInfo *info)> &&jsCallback) = 0;
60     virtual void SetOnSslSelectCertRequest(std::function<bool(const BaseEventInfo* info)>&& jsCallback) = 0;
61     virtual void SetMediaPlayGestureAccess(bool isNeedGestureAccess) = 0;
62     virtual void SetOnKeyEvent(std::function<void(KeyEventInfo& keyEventInfo)>&& jsCallback) = 0;
63     virtual void SetOnErrorReceive(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
64     virtual void SetOnHttpErrorReceive(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
65     virtual void SetOnInterceptRequest(std::function<RefPtr<WebResponse>(const BaseEventInfo* info)>&& jsCallback) = 0;
66     virtual void SetOnUrlLoadIntercept(std::function<bool(const BaseEventInfo* info)>&& jsCallback) = 0;
67     virtual void SetOnLoadIntercept(std::function<bool(const BaseEventInfo* info)>&& jsCallback) = 0;
68     virtual void SetOnFileSelectorShow(std::function<bool(const BaseEventInfo* info)>&& jsCallback) = 0;
69     virtual void SetOnContextMenuShow(std::function<bool(const BaseEventInfo* info)>&& jsCallback) = 0;
70     virtual void SetOnContextMenuHide(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
SetNewDragStyle(bool isNewDragStyle)71     virtual void SetNewDragStyle(bool isNewDragStyle) {}
SetPreviewSelectionMenu(const std::shared_ptr<WebPreviewSelectionMenuParam> & param)72     virtual void SetPreviewSelectionMenu(const std::shared_ptr<WebPreviewSelectionMenuParam>& param) {}
73     virtual void SetJsEnabled(bool isJsEnabled) = 0;
74     virtual void SetFileAccessEnabled(bool isFileAccessEnabled) = 0;
75     virtual void SetOnLineImageAccessEnabled(bool isOnLineImageAccessEnabled) = 0;
76     virtual void SetDomStorageAccessEnabled(bool isDomStorageAccessEnabled) = 0;
77     virtual void SetImageAccessEnabled(bool isImageAccessEnabled) = 0;
78     virtual void SetMixedMode(MixedModeContent mixedMode) = 0;
79     virtual void SetZoomAccessEnabled(bool isZoomAccessEnabled) = 0;
80     virtual void SetGeolocationAccessEnabled(bool isGeolocationAccessEnabled) = 0;
81     virtual void SetJsProxyCallback(std::function<void()>&& jsProxyCallback) = 0;
82     virtual void SetUserAgent(const std::string& userAgent) = 0;
83     virtual void SetRenderExitedId(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
84     virtual void SetRefreshAccessedHistoryId(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
85     virtual void SetCacheMode(WebCacheMode cacheMode) = 0;
86     virtual void SetOverviewModeAccessEnabled(bool isOverviewModeAccessEnabled) = 0;
87     virtual void SetFileFromUrlAccessEnabled(bool isFileFromUrlAccessEnabled) = 0;
88     virtual void SetDatabaseAccessEnabled(bool isDatabaseAccessEnabled) = 0;
89     virtual void SetTextZoomRatio(int32_t textZoomRatioNum) = 0;
90     virtual void SetWebDebuggingAccessEnabled(bool isWebDebuggingAccessEnabled) = 0;
91     virtual void SetOnMouseEvent(std::function<void(MouseInfo& info)>&& jsCallback) = 0;
92     virtual void SetResourceLoadId(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
93     virtual void SetScaleChangeId(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
94     virtual void SetScrollId(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
95     virtual void SetPermissionRequestEventId(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
96     virtual void SetBackgroundColor(Color backgroundColor) = 0;
97     virtual void InitialScale(float scale) = 0;
98     virtual void SetSearchResultReceiveEventId(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
99 
100     virtual void SetOnDragStart(
101         std::function<NG::DragDropBaseInfo(const RefPtr<OHOS::Ace::DragEvent>& info, const std::string& extraParams)>&&
102             onDragStart) = 0;
103     virtual void SetOnDragEnter(
104         std::function<void(const RefPtr<OHOS::Ace::DragEvent>& info, const std::string& extraParams)>&&
105             onDragEnter) = 0;
106     virtual void SetOnDragMove(
107         std::function<void(const RefPtr<DragEvent>& info, const std::string& extraParams)>&& onDragMoveId) = 0;
108     virtual void SetOnDragLeave(std::function<void(const RefPtr<DragEvent>&, const std::string&)>&& onDragLeave) = 0;
109     virtual void SetOnDrop(std::function<void(const RefPtr<DragEvent>&, const std::string&)>&& onDropId) = 0;
110     virtual void SetPinchSmoothModeEnabled(bool isPinchSmoothModeEnabled) = 0;
111     virtual void SetWindowNewEvent(std::function<void(const std::shared_ptr<BaseEventInfo>& info)>&& jsCallback) = 0;
112     virtual void SetWindowExitEventId(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
113 
114     virtual void SetMultiWindowAccessEnabled(bool isMultiWindowAccessEnable) = 0;
115     virtual void SetAllowWindowOpenMethod(bool isAllowWindowOpenMethod) = 0;
SetWebCursiveFont(const std::string & cursiveFontFamily)116     virtual void SetWebCursiveFont(const std::string& cursiveFontFamily) {};
SetWebFantasyFont(const std::string & fixedFontFamily)117     virtual void SetWebFantasyFont(const std::string& fixedFontFamily) {};
SetWebFixedFont(const std::string & fixedFontFamily)118     virtual void SetWebFixedFont(const std::string& fixedFontFamily) {};
SetWebSansSerifFont(const std::string & sansSerifFontFamily)119     virtual void SetWebSansSerifFont(const std::string& sansSerifFontFamily) {};
SetWebSerifFont(const std::string & serifFontFamily)120     virtual void SetWebSerifFont(const std::string& serifFontFamily) {};
SetWebStandardFont(const std::string & standardFontFamily)121     virtual void SetWebStandardFont(const std::string& standardFontFamily) {};
SetDefaultFixedFontSize(int32_t defaultFixedFontSize)122     virtual void SetDefaultFixedFontSize(int32_t defaultFixedFontSize) {};
SetDefaultFontSize(int32_t defaultFontSize)123     virtual void SetDefaultFontSize(int32_t defaultFontSize) {};
SetDefaultTextEncodingFormat(const std::string & textEncodingFormat)124     virtual void SetDefaultTextEncodingFormat(const std::string& textEncodingFormat) {};
SetMinFontSize(int32_t minFontSize)125     virtual void SetMinFontSize(int32_t minFontSize) {};
SetMinLogicalFontSize(int32_t minLogicalFontSize)126     virtual void SetMinLogicalFontSize(int32_t minLogicalFontSize) {};
SetBlockNetwork(bool isNetworkBlocked)127     virtual void SetBlockNetwork(bool isNetworkBlocked) {};
128 
SetPageVisibleId(std::function<void (const std::shared_ptr<BaseEventInfo> & info)> && pageVisibleId)129     virtual void SetPageVisibleId(std::function<void(const std::shared_ptr<BaseEventInfo>& info)>&& pageVisibleId) {};
SetAudioStateChangedId(std::function<void (const std::shared_ptr<BaseEventInfo> & info)> && audioStateChanged)130     virtual void SetAudioStateChangedId(
131         std::function<void(const std::shared_ptr<BaseEventInfo>& info)>&& audioStateChanged) {};
SetFirstContentfulPaintId(std::function<void (const std::shared_ptr<BaseEventInfo> & info)> && firstContentfulPaintId)132     virtual void SetFirstContentfulPaintId(
133         std::function<void(const std::shared_ptr<BaseEventInfo>& info)>&& firstContentfulPaintId) {};
SetFirstMeaningfulPaintId(std::function<void (const std::shared_ptr<BaseEventInfo> & info)> && firstMeaningfulPaintId)134     virtual void SetFirstMeaningfulPaintId(
135         std::function<void(const std::shared_ptr<BaseEventInfo>& info)>&& firstMeaningfulPaintId) {};
SetLargestContentfulPaintId(std::function<void (const std::shared_ptr<BaseEventInfo> & info)> && largestContentfulPaintId)136     virtual void SetLargestContentfulPaintId(
137         std::function<void(const std::shared_ptr<BaseEventInfo>& info)>&& largestContentfulPaintId) {};
SetSafeBrowsingCheckResultId(std::function<void (const std::shared_ptr<BaseEventInfo> & info)> && safeBrowsingCheckResultId)138     virtual void SetSafeBrowsingCheckResultId(
139         std::function<void(const std::shared_ptr<BaseEventInfo>& info)>&& safeBrowsingCheckResultId) {};
SetNavigationEntryCommittedId(std::function<void (const std::shared_ptr<BaseEventInfo> & info)> && navigationEntryCommittedId)140     virtual void SetNavigationEntryCommittedId(
141         std::function<void(const std::shared_ptr<BaseEventInfo>& info)>&& navigationEntryCommittedId) {};
142     virtual void SetOnInterceptKeyEventCallback(std::function<bool(KeyEventInfo& keyEventInfo)>&& keyEventInfo) = 0;
SetOnDataResubmitted(std::function<void (const std::shared_ptr<BaseEventInfo> & info)> && dataResubmittedId)143     virtual void SetOnDataResubmitted(
144         std::function<void(const std::shared_ptr<BaseEventInfo>& info)>&& dataResubmittedId) {};
SetDataResubmittedId(std::function<void (const std::shared_ptr<BaseEventInfo> & info)> && dataResubmittedId)145     virtual void SetDataResubmittedId(
146         std::function<void(const std::shared_ptr<BaseEventInfo>& info)>&& dataResubmittedId) {};
SetFaviconReceivedId(std::function<void (const std::shared_ptr<BaseEventInfo> & info)> && faviconReceivedId)147     virtual void SetFaviconReceivedId(
148         std::function<void(const std::shared_ptr<BaseEventInfo>& info)>&& faviconReceivedId) {};
SetTouchIconUrlId(std::function<void (const std::shared_ptr<BaseEventInfo> & info)> && touchIconUrlId)149     virtual void SetTouchIconUrlId(std::function<void(const std::shared_ptr<BaseEventInfo>& info)>&& touchIconUrlId) {};
150 
SetDarkMode(WebDarkMode mode)151     virtual void SetDarkMode(WebDarkMode mode) {};
SetForceDarkAccess(bool access)152     virtual void SetForceDarkAccess(bool access) {};
SetHorizontalScrollBarAccessEnabled(bool isHorizontalScrollBarAccessEnabled)153     virtual void SetHorizontalScrollBarAccessEnabled(bool isHorizontalScrollBarAccessEnabled) {};
SetVerticalScrollBarAccessEnabled(bool isVerticalScrollBarAccessEnabled)154     virtual void SetVerticalScrollBarAccessEnabled(bool isVerticalScrollBarAccessEnabled) {};
155 
SetOnControllerAttached(std::function<void ()> && callback)156     virtual void SetOnControllerAttached(std::function<void()>&& callback) {};
NotifyPopupWindowResult(int32_t webId,bool result)157     virtual void NotifyPopupWindowResult(int32_t webId, bool result) {};
SetAudioResumeInterval(int32_t resumeInterval)158     virtual void SetAudioResumeInterval(int32_t resumeInterval) {};
SetAudioExclusive(bool audioExclusive)159     virtual void SetAudioExclusive(bool audioExclusive) {};
160     virtual void SetOverScrollId(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
161     virtual void SetNativeEmbedModeEnabled(bool isEmbedModeEnabled) = 0;
162     virtual void RegisterNativeEmbedRule(const std::string&, const std::string&) = 0;
163     virtual void SetNativeEmbedLifecycleChangeId(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
164     virtual void SetNativeEmbedVisibilityChangeId(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
165     virtual void SetNativeEmbedGestureEventId(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
166 
SetScreenCaptureRequestEventId(std::function<void (const BaseEventInfo * info)> && jsCallback)167     virtual void SetScreenCaptureRequestEventId(std::function<void(const BaseEventInfo* info)>&& jsCallback) {};
168 
SetNestedScroll(const NestedScrollOptions & nestedOpt)169     virtual void SetNestedScroll(const NestedScrollOptions& nestedOpt) {}
SetNestedScrollExt(const NestedScrollOptionsExt & nestedOpt)170     virtual void SetNestedScrollExt(const NestedScrollOptionsExt& nestedOpt) {}
SetMetaViewport(bool enabled)171     virtual void SetMetaViewport(bool enabled) {}
SetLayoutMode(WebLayoutMode mode)172     virtual void SetLayoutMode(WebLayoutMode mode) {}
SetBlurOnKeyboardHideMode(BlurOnKeyboardHideMode mode)173     virtual void SetBlurOnKeyboardHideMode(BlurOnKeyboardHideMode mode) {}
JavaScriptOnDocumentStart(const ScriptItems & scriptItems)174     virtual void JavaScriptOnDocumentStart(const ScriptItems& scriptItems) {};
JavaScriptOnDocumentStartByOrder(const ScriptItems & scriptItems,const ScriptItemsByOrder & scriptItemsByOrder)175     virtual void JavaScriptOnDocumentStartByOrder(const ScriptItems& scriptItems,
176         const ScriptItemsByOrder& scriptItemsByOrder) {};
JavaScriptOnDocumentEndByOrder(const ScriptItems & scriptItems,const ScriptItemsByOrder & scriptItemsByOrder)177     virtual void JavaScriptOnDocumentEndByOrder(const ScriptItems& scriptItems,
178         const ScriptItemsByOrder& scriptItemsByOrder) {};
JavaScriptOnHeadReadyByOrder(const ScriptItems & scriptItems,const ScriptItemsByOrder & scriptItemsByOrder)179     virtual void JavaScriptOnHeadReadyByOrder(const ScriptItems& scriptItems,
180         const ScriptItemsByOrder& scriptItemsByOrder) {};
JavaScriptOnDocumentEnd(const ScriptItems & scriptItems)181     virtual void JavaScriptOnDocumentEnd(const ScriptItems& scriptItems) {};
SetOverScrollMode(OverScrollMode mode)182     virtual void SetOverScrollMode(OverScrollMode mode) {};
SetCopyOptionMode(CopyOptions mode)183     virtual void SetCopyOptionMode(CopyOptions mode) {};
184 
SetDefaultFileSelectorShow(std::function<void (const std::shared_ptr<BaseEventInfo> &)> && jsCallback)185     virtual void SetDefaultFileSelectorShow(std::function<void(const std::shared_ptr<BaseEventInfo>&)>&& jsCallback) {};
SetPermissionClipboard(std::function<void (const std::shared_ptr<BaseEventInfo> &)> && jsCallback)186     virtual void SetPermissionClipboard(std::function<void(const std::shared_ptr<BaseEventInfo>&)>&& jsCallback) {};
SetOpenAppLinkFunction(std::function<void (const std::shared_ptr<BaseEventInfo> &)> && jsCallback)187     virtual void SetOpenAppLinkFunction(std::function<void(const std::shared_ptr<BaseEventInfo>&)>&& jsCallback) {};
SetIntelligentTrackingPreventionResultId(std::function<void (const std::shared_ptr<BaseEventInfo> & info)> && intelligentTrackingPreventionResultId)188     virtual void SetIntelligentTrackingPreventionResultId(
189         std::function<void(const std::shared_ptr<BaseEventInfo>& info)>&&
190             intelligentTrackingPreventionResultId) {};
191     virtual void SetOnOverrideUrlLoading(std::function<bool(const BaseEventInfo* info)>&& jsCallback) = 0;
SetTextAutosizing(bool isTextAutosizing)192     virtual void SetTextAutosizing(bool isTextAutosizing) {};
193     virtual void SetNativeVideoPlayerConfig(bool enable, bool shouldOverlay) = 0;
194     virtual void SetRenderProcessNotRespondingId(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
195     virtual void SetRenderProcessRespondingId(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
196     virtual void SetViewportFitChangedId(std::function<void(const BaseEventInfo* info)> && jsCallback) = 0;
SetSelectionMenuOptions(const WebMenuOptionsParam & webMenuOption)197     virtual void SetSelectionMenuOptions(const WebMenuOptionsParam& webMenuOption) {};
SetOnInterceptKeyboardAttach(std::function<WebKeyboardOption (const BaseEventInfo * info)> && jsCallback)198     virtual void SetOnInterceptKeyboardAttach(
199         std::function<WebKeyboardOption(const BaseEventInfo* info)>&& jsCallback) {}
200 
201     virtual void SetUpdateInstanceIdCallback(std::function<void(int32_t)> &&callback) = 0;
202     virtual void SetAdsBlockedEventId(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
SetOverlayScrollbarEnabled(bool isEnabled)203     virtual void SetOverlayScrollbarEnabled(bool isEnabled) {};
SetKeyboardAvoidMode(const WebKeyboardAvoidMode & mode)204     virtual void SetKeyboardAvoidMode(const WebKeyboardAvoidMode& mode) {}
SetEditMenuOptions(const NG::OnCreateMenuCallback && onCreateMenuCallback,const NG::OnMenuItemClickCallback && onMenuItemClick)205     virtual void SetEditMenuOptions(const NG::OnCreateMenuCallback&& onCreateMenuCallback,
206         const NG::OnMenuItemClickCallback&& onMenuItemClick) {};
SetEnabledHapticFeedback(bool isEnabled)207     virtual void SetEnabledHapticFeedback(bool isEnabled) {}
208     virtual void SetOptimizeParserBudgetEnabled(bool enable) = 0;
209 private:
210     static std::unique_ptr<WebModel> instance_;
211     static std::mutex mutex_;
212 };
213 } // namespace OHOS::Ace
214 
215 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERNS_WEB_WEB_MODEL_H
216