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