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