• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2023 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 
24 namespace OHOS::Ace {
25 using ScriptItems = std::map<std::string, std::vector<std::string>>;
26 class WebModel {
27 public:
28     static WebModel* GetInstance();
29     virtual ~WebModel() = default;
30 
31     virtual void Create(const std::string& src, const RefPtr<WebController>& webController,
32         WebType type = WebType::SURFACE, bool incognitoMode = false) = 0;
33     virtual void Create(const std::string& src, std::function<void(int32_t)>&& setWebIdCallback,
34         std::function<void(const std::string&)>&& setHapPathCallback,
35         int32_t parentWebId, bool popup, WebType type = WebType::SURFACE, bool incognitoMode = false) = 0;
36     virtual void SetCustomScheme(const std::string& cmdLine) = 0;
SetFocusable(bool focusable)37     virtual void SetFocusable(bool focusable) {};
SetFocusNode(bool isFocusNode)38     virtual void SetFocusNode(bool isFocusNode) {};
39     virtual void SetOnCommonDialog(
40         std::function<bool(const BaseEventInfo* info)>&& jsCallback, int dialogEventType) = 0;
41     virtual void SetOnConsoleLog(std::function<bool(const BaseEventInfo* info)>&& jsCallback) = 0;
42     virtual void SetOnPageStart(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
43     virtual void SetOnPageFinish(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
44     virtual void SetOnProgressChange(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
45     virtual void SetOnTitleReceive(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
46     virtual void SetOnFullScreenExit(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
47     virtual void SetOnFullScreenEnter(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
48     virtual void SetOnGeolocationHide(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
49     virtual void SetOnGeolocationShow(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
50     virtual void SetOnRequestFocus(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
51     virtual void SetOnDownloadStart(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
52     virtual void SetOnHttpAuthRequest(std::function<bool(const BaseEventInfo* info)>&& jsCallback) = 0;
53     virtual void SetOnSslErrorRequest(std::function<bool(const BaseEventInfo* info)>&& jsCallback) = 0;
54     virtual void SetOnSslSelectCertRequest(std::function<bool(const BaseEventInfo* info)>&& jsCallback) = 0;
55     virtual void SetMediaPlayGestureAccess(bool isNeedGestureAccess) = 0;
56     virtual void SetOnKeyEvent(std::function<void(KeyEventInfo& keyEventInfo)>&& jsCallback) = 0;
57     virtual void SetOnErrorReceive(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
58     virtual void SetOnHttpErrorReceive(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
59     virtual void SetOnInterceptRequest(std::function<RefPtr<WebResponse>(const BaseEventInfo* info)>&& jsCallback) = 0;
60     virtual void SetOnUrlLoadIntercept(std::function<bool(const BaseEventInfo* info)>&& jsCallback) = 0;
61     virtual void SetOnLoadIntercept(std::function<bool(const BaseEventInfo* info)>&& jsCallback) = 0;
62     virtual void SetOnFileSelectorShow(std::function<bool(const BaseEventInfo* info)>&& jsCallback) = 0;
63     virtual void SetOnContextMenuShow(std::function<bool(const BaseEventInfo* info)>&& jsCallback) = 0;
64     virtual void SetOnContextMenuHide(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
65     virtual void SetJsEnabled(bool isJsEnabled) = 0;
66     virtual void SetFileAccessEnabled(bool isFileAccessEnabled) = 0;
67     virtual void SetOnLineImageAccessEnabled(bool isOnLineImageAccessEnabled) = 0;
68     virtual void SetDomStorageAccessEnabled(bool isDomStorageAccessEnabled) = 0;
69     virtual void SetImageAccessEnabled(bool isImageAccessEnabled) = 0;
70     virtual void SetMixedMode(MixedModeContent mixedMode) = 0;
71     virtual void SetZoomAccessEnabled(bool isZoomAccessEnabled) = 0;
72     virtual void SetGeolocationAccessEnabled(bool isGeolocationAccessEnabled) = 0;
73     virtual void SetJsProxyCallback(std::function<void()>&& jsProxyCallback) = 0;
74     virtual void SetUserAgent(const std::string& userAgent) = 0;
75     virtual void SetRenderExitedId(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
76     virtual void SetRefreshAccessedHistoryId(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
77     virtual void SetCacheMode(WebCacheMode cacheMode) = 0;
78     virtual void SetOverviewModeAccessEnabled(bool isOverviewModeAccessEnabled) = 0;
79     virtual void SetFileFromUrlAccessEnabled(bool isFileFromUrlAccessEnabled) = 0;
80     virtual void SetDatabaseAccessEnabled(bool isDatabaseAccessEnabled) = 0;
81     virtual void SetTextZoomRatio(int32_t textZoomRatioNum) = 0;
82     virtual void SetWebDebuggingAccessEnabled(bool isWebDebuggingAccessEnabled) = 0;
83     virtual void SetOnMouseEvent(std::function<void(MouseInfo& info)>&& jsCallback) = 0;
84     virtual void SetResourceLoadId(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
85     virtual void SetScaleChangeId(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
86     virtual void SetScrollId(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
87     virtual void SetPermissionRequestEventId(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
88     virtual void SetBackgroundColor(Color backgroundColor) = 0;
89     virtual void InitialScale(float scale) = 0;
90     virtual void SetSearchResultReceiveEventId(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
91 
92     virtual void SetOnDragStart(
93         std::function<NG::DragDropBaseInfo(const RefPtr<OHOS::Ace::DragEvent>& info, const std::string& extraParams)>&&
94             onDragStart) = 0;
95     virtual void SetOnDragEnter(
96         std::function<void(const RefPtr<OHOS::Ace::DragEvent>& info, const std::string& extraParams)>&&
97             onDragEnter) = 0;
98     virtual void SetOnDragMove(
99         std::function<void(const RefPtr<DragEvent>& info, const std::string& extraParams)>&& onDragMoveId) = 0;
100     virtual void SetOnDragLeave(std::function<void(const RefPtr<DragEvent>&, const std::string&)>&& onDragLeave) = 0;
101     virtual void SetOnDrop(std::function<void(const RefPtr<DragEvent>&, const std::string&)>&& onDropId) = 0;
102     virtual void SetPinchSmoothModeEnabled(bool isPinchSmoothModeEnabled) = 0;
103     virtual void SetWindowNewEvent(std::function<void(const std::shared_ptr<BaseEventInfo>& info)>&& jsCallback) = 0;
104     virtual void SetWindowExitEventId(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
105 
106     virtual void SetMultiWindowAccessEnabled(bool isMultiWindowAccessEnable) = 0;
107     virtual void SetAllowWindowOpenMethod(bool isAllowWindowOpenMethod) = 0;
SetWebCursiveFont(const std::string & cursiveFontFamily)108     virtual void SetWebCursiveFont(const std::string& cursiveFontFamily) {};
SetWebFantasyFont(const std::string & fixedFontFamily)109     virtual void SetWebFantasyFont(const std::string& fixedFontFamily) {};
SetWebFixedFont(const std::string & fixedFontFamily)110     virtual void SetWebFixedFont(const std::string& fixedFontFamily) {};
SetWebSansSerifFont(const std::string & sansSerifFontFamily)111     virtual void SetWebSansSerifFont(const std::string& sansSerifFontFamily) {};
SetWebSerifFont(const std::string & serifFontFamily)112     virtual void SetWebSerifFont(const std::string& serifFontFamily) {};
SetWebStandardFont(const std::string & standardFontFamily)113     virtual void SetWebStandardFont(const std::string& standardFontFamily) {};
SetDefaultFixedFontSize(int32_t defaultFixedFontSize)114     virtual void SetDefaultFixedFontSize(int32_t defaultFixedFontSize) {};
SetDefaultFontSize(int32_t defaultFontSize)115     virtual void SetDefaultFontSize(int32_t defaultFontSize) {};
SetMinFontSize(int32_t minFontSize)116     virtual void SetMinFontSize(int32_t minFontSize) {};
SetMinLogicalFontSize(int32_t minLogicalFontSize)117     virtual void SetMinLogicalFontSize(int32_t minLogicalFontSize) {};
SetBlockNetwork(bool isNetworkBlocked)118     virtual void SetBlockNetwork(bool isNetworkBlocked) {};
119 
SetPageVisibleId(std::function<void (const std::shared_ptr<BaseEventInfo> & info)> && pageVisibleId)120     virtual void SetPageVisibleId(std::function<void(const std::shared_ptr<BaseEventInfo>& info)>&& pageVisibleId) {};
SetAudioStateChangedId(std::function<void (const std::shared_ptr<BaseEventInfo> & info)> && audioStateChanged)121     virtual void SetAudioStateChangedId(
122         std::function<void(const std::shared_ptr<BaseEventInfo>& info)>&& audioStateChanged) {};
SetFirstContentfulPaintId(std::function<void (const std::shared_ptr<BaseEventInfo> & info)> && firstContentfulPaintId)123     virtual void SetFirstContentfulPaintId(
124         std::function<void(const std::shared_ptr<BaseEventInfo>& info)>&& firstContentfulPaintId) {};
SetSafeBrowsingCheckResultId(std::function<void (const std::shared_ptr<BaseEventInfo> & info)> && safeBrowsingCheckResultId)125     virtual void SetSafeBrowsingCheckResultId(
126         std::function<void(const std::shared_ptr<BaseEventInfo>& info)>&& safeBrowsingCheckResultId) {};
SetNavigationEntryCommittedId(std::function<void (const std::shared_ptr<BaseEventInfo> & info)> && navigationEntryCommittedId)127     virtual void SetNavigationEntryCommittedId(
128         std::function<void(const std::shared_ptr<BaseEventInfo>& info)>&& navigationEntryCommittedId) {};
129     virtual void SetOnInterceptKeyEventCallback(std::function<bool(KeyEventInfo& keyEventInfo)>&& keyEventInfo) = 0;
SetOnDataResubmitted(std::function<void (const std::shared_ptr<BaseEventInfo> & info)> && dataResubmittedId)130     virtual void SetOnDataResubmitted(
131         std::function<void(const std::shared_ptr<BaseEventInfo>& info)>&& dataResubmittedId) {};
SetDataResubmittedId(std::function<void (const std::shared_ptr<BaseEventInfo> & info)> && dataResubmittedId)132     virtual void SetDataResubmittedId(
133         std::function<void(const std::shared_ptr<BaseEventInfo>& info)>&& dataResubmittedId) {};
SetFaviconReceivedId(std::function<void (const std::shared_ptr<BaseEventInfo> & info)> && faviconReceivedId)134     virtual void SetFaviconReceivedId(
135         std::function<void(const std::shared_ptr<BaseEventInfo>& info)>&& faviconReceivedId) {};
SetTouchIconUrlId(std::function<void (const std::shared_ptr<BaseEventInfo> & info)> && touchIconUrlId)136     virtual void SetTouchIconUrlId(std::function<void(const std::shared_ptr<BaseEventInfo>& info)>&& touchIconUrlId) {};
137 
SetDarkMode(WebDarkMode mode)138     virtual void SetDarkMode(WebDarkMode mode) {};
SetForceDarkAccess(bool access)139     virtual void SetForceDarkAccess(bool access) {};
SetHorizontalScrollBarAccessEnabled(bool isHorizontalScrollBarAccessEnabled)140     virtual void SetHorizontalScrollBarAccessEnabled(bool isHorizontalScrollBarAccessEnabled) {};
SetVerticalScrollBarAccessEnabled(bool isVerticalScrollBarAccessEnabled)141     virtual void SetVerticalScrollBarAccessEnabled(bool isVerticalScrollBarAccessEnabled) {};
142 
SetOnControllerAttached(std::function<void ()> && callback)143     virtual void SetOnControllerAttached(std::function<void()>&& callback) {};
NotifyPopupWindowResult(int32_t webId,bool result)144     virtual void NotifyPopupWindowResult(int32_t webId, bool result) {};
SetAudioResumeInterval(int32_t resumeInterval)145     virtual void SetAudioResumeInterval(int32_t resumeInterval) {};
SetAudioExclusive(bool audioExclusive)146     virtual void SetAudioExclusive(bool audioExclusive) {};
147     virtual void SetOverScrollId(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
148     virtual void SetNativeEmbedModeEnabled(bool isEmbedModeEnabled) = 0;
149     virtual void SetNativeEmbedLifecycleChangeId(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
150     virtual void SetNativeEmbedGestureEventId(std::function<void(const BaseEventInfo* info)>&& jsCallback) = 0;
151 
SetScreenCaptureRequestEventId(std::function<void (const BaseEventInfo * info)> && jsCallback)152     virtual void SetScreenCaptureRequestEventId(std::function<void(const BaseEventInfo* info)>&& jsCallback) {};
SetNestedScroll(const NestedScrollOptions & nestedOpt)153     virtual void SetNestedScroll(const NestedScrollOptions& nestedOpt) {}
SetLayoutMode(WebLayoutMode mode)154     virtual void SetLayoutMode(WebLayoutMode mode) {}
SetOverScrollMode(OverScrollMode mode)155     virtual void SetOverScrollMode(OverScrollMode mode) {}
JavaScriptOnDocumentStart(const ScriptItems & scriptItems)156     virtual void JavaScriptOnDocumentStart(const ScriptItems& scriptItems) {};
JavaScriptOnDocumentEnd(const ScriptItems & scriptItems)157     virtual void JavaScriptOnDocumentEnd(const ScriptItems& scriptItems) {};
158 
SetCopyOptionMode(CopyOptions mode)159     virtual void SetCopyOptionMode(CopyOptions mode) {};
SetPermissionClipboard(std::function<void (const std::shared_ptr<BaseEventInfo> &)> && jsCallback)160     virtual void SetPermissionClipboard(std::function<void(const std::shared_ptr<BaseEventInfo>&)>&& jsCallback) {};
161 private:
162     static std::unique_ptr<WebModel> instance_;
163     static std::mutex mutex_;
164 };
165 } // namespace OHOS::Ace
166 
167 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERNS_WEB_WEB_MODEL_H
168