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_WEB_DELEGATE_INTERFACE_H
17 #define FOUNDATION_ACE_FRAMEWORKS_WEB_DELEGATE_INTERFACE_H
18 
19 #include "base/geometry/size.h"
20 #include "base/geometry/offset.h"
21 #include "core/pipeline_ng/pipeline_context.h"
22 #include "core/event/ace_events.h"
23 #include "core/components/web/web_property.h"
24 
25 namespace OHOS::Ace {
26 namespace NG {
27 class WebPattern;
28 }; // namespace NG
29 class WebDelegateInterface : public virtual AceType {
30     DECLARE_ACE_TYPE(WebDelegateInterface, AceType);
31 public:
32     using CreatedCallback = std::function<void()>;
33     using ReleasedCallback = std::function<void(bool)>;
34     using EventCallback = std::function<void(const std::string&)>;
35     using EventCallbackV2 = std::function<void(const std::shared_ptr<BaseEventInfo>&)>;
36     enum class State : char {
37         WAITINGFORSIZE,
38         CREATING,
39         CREATED,
40         CREATEFAILED,
41         RELEASED,
42     };
43 
44     WebDelegateInterface() = default;
45     virtual ~WebDelegateInterface() = default;
46 
47     virtual void CreatePlatformResource(const Size& size,
48         const Offset& position, const WeakPtr<NG::PipelineContext>& context) = 0;
49     virtual void ShowWebView() = 0;
50     virtual void HideWebView() = 0;
51     virtual void UpdateUserAgent(const std::string& userAgent) = 0;
52     virtual void UpdateBackgroundColor(const int backgroundColor) = 0;
53     virtual void UpdateInitialScale(float scale) = 0;
54     virtual void UpdateJavaScriptEnabled(const bool& isJsEnabled) = 0;
55     virtual void UpdateAllowFileAccess(const bool& isFileAccessEnabled) = 0;
56     virtual void UpdateBlockNetworkImage(const bool& onLineImageAccessEnabled) = 0;
57     virtual void UpdateLoadsImagesAutomatically(const bool& isImageAccessEnabled) = 0;
58     virtual void UpdateMixedContentMode(const MixedModeContent& mixedMode) = 0;
59     virtual void UpdateSupportZoom(const bool& isZoomAccessEnabled) = 0;
60     virtual void UpdateDomStorageEnabled(const bool& isDomStorageAccessEnabled) = 0;
61     virtual void UpdateGeolocationEnabled(const bool& isGeolocationAccessEnabled) = 0;
62     virtual void UpdateCacheMode(const WebCacheMode& mode) = 0;
63     virtual void UpdateDarkMode(const WebDarkMode& mode) = 0;
64     virtual void UpdateForceDarkAccess(const bool& access) = 0;
65     virtual void UpdateAudioResumeInterval(const int32_t& resumeInterval) = 0;
66     virtual void UpdateAudioExclusive(const bool& audioExclusive) = 0;
67     virtual void UpdateOverviewModeEnabled(const bool& isOverviewModeAccessEnabled) = 0;
68     virtual void UpdateFileFromUrlEnabled(const bool& isFileFromUrlAccessEnabled) = 0;
69     virtual void UpdateDatabaseEnabled(const bool& isDatabaseAccessEnabled) = 0;
70     virtual void UpdateTextZoomRatio(const int32_t& textZoomRatioNum) = 0;
71     virtual void UpdateWebDebuggingAccess(bool isWebDebuggingAccessEnabled) = 0;
72     virtual void UpdatePinchSmoothModeEnabled(bool isPinchSmoothModeEnabled) = 0;
73     virtual void UpdateMediaPlayGestureAccess(bool isNeedGestureAccess) = 0;
74     virtual void UpdateMultiWindowAccess(bool isMultiWindowAccessEnabled) = 0;
75     virtual void UpdateAllowWindowOpenMethod(bool isAllowWindowOpenMethod) = 0;
76     virtual void UpdateWebCursiveFont(const std::string& cursiveFontFamily) = 0;
77     virtual void UpdateWebFantasyFont(const std::string& fantasyFontFamily) = 0;
78     virtual void UpdateWebFixedFont(const std::string& fixedFontFamily) = 0;
79     virtual void UpdateWebSansSerifFont(const std::string& sansSerifFontFamily) = 0;
80     virtual void UpdateWebSerifFont(const std::string& serifFontFamily) = 0;
81     virtual void UpdateWebStandardFont(const std::string& standardFontFamily) = 0;
82     virtual void UpdateDefaultFixedFontSize(int32_t size) = 0;
83     virtual void UpdateDefaultFontSize(int32_t defaultFontSize) = 0;
84     virtual void UpdateMinFontSize(int32_t minFontSize) = 0;
85     virtual void UpdateMinLogicalFontSize(int32_t minLogicalFontSize) = 0;
86     virtual void UpdateBlockNetwork(bool isNetworkBlocked) = 0;
87     virtual void UpdateHorizontalScrollBarAccess(bool isHorizontalScrollBarAccessEnabled) = 0;
88     virtual void UpdateVerticalScrollBarAccess(bool isVerticalScrollBarAccessEnabled) = 0;
89     virtual void UpdateScrollBarColor(const std::string& colorValue) = 0;
90     virtual void LoadUrl() = 0;
91     virtual void HandleTouchDown(const int32_t& id, const double& x, const double& y, bool from_overlay = false) = 0;
92     virtual void HandleTouchUp(const int32_t& id, const double& x, const double& y, bool from_overlay = false) = 0;
93     virtual void HandleTouchMove(const int32_t& id, const double& x, const double& y, bool from_overlay = false) = 0;
94     virtual void HandleTouchCancel() = 0;
95     virtual bool OnKeyEvent(int32_t keyCode, int32_t keyAction) = 0;
96     virtual void OnMouseEvent(int32_t x, int32_t y, const MouseButton button, const MouseAction action, int count) = 0;
97     virtual void OnFocus() = 0;
98     virtual void OnBlur() = 0;
99     virtual void UpdateLocale() = 0;
100     virtual void SetDrawRect(int32_t x, int32_t y, int32_t width, int32_t height) = 0;
101     virtual void OnInactive() = 0;
102     virtual void OnActive() = 0;
103     virtual void SetBackgroundColor(int32_t backgroundColor) = 0;
104     virtual void OnPageStarted(const std::string& param) = 0;
105     virtual void OnPageFinished(const std::string& param) = 0;
106     virtual void OnPageError(const std::string& param) = 0;
107     virtual void OnProgressChanged(const std::string& param) = 0;
108     virtual void OnReceivedTitle(const std::string& param) = 0;
109     virtual void OnPageVisible(const std::string& param) = 0;
110     virtual void OnGeolocationPermissionsHidePrompt() = 0;
111     virtual bool LoadDataWithRichText() = 0;
112     virtual void SetNGWebPattern(const RefPtr<NG::WebPattern>& webPattern) = 0;
113     virtual void SetBoundsOrResize(const Size& drawSize, const Offset& offset) = 0;
114     virtual int GetWebId() = 0;
115 };
116 }
117 #endif