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