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