• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021-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_INTERFACE_INNERKITS_ACE_UI_CONTENT_H
17 #define FOUNDATION_ACE_INTERFACE_INNERKITS_ACE_UI_CONTENT_H
18 
19 #include <functional>
20 #include <map>
21 #include <memory>
22 #include <refbase.h>
23 #include <string>
24 #include <vector>
25 
26 #include "macros.h"
27 #include "modal_ui_extension_callbacks.h"
28 #include "serializeable_object.h"
29 #include "viewport_config.h"
30 
31 namespace OHOS {
32 
33 namespace AbilityRuntime {
34 class Context;
35 } // namespace AbilityRuntime
36 
37 namespace AppExecFwk {
38 class Configuration;
39 class Ability;
40 class FormAshmem;
41 } // namespace AppExecFwk
42 
43 namespace Rosen {
44 class Window;
45 enum class WindowSizeChangeReason : uint32_t;
46 enum class WindowMode : uint32_t;
47 class RSSurfaceNode;
48 class RSTransaction;
49 } // namespace Rosen
50 
51 namespace AAFwk {
52 class Want;
53 } // namespace AAFwk
54 
55 namespace MMI {
56 class PointerEvent;
57 class KeyEvent;
58 class AxisEvent;
59 } // namespace MMI
60 
61 namespace Media {
62 class PixelMap;
63 } // namespace Media
64 
65 } // namespace OHOS
66 
67 class NativeEngine;
68 class NativeValue;
69 
70 namespace OHOS::Ace {
71 
72 class ACE_FORCE_EXPORT UIContent {
73 public:
74     static std::unique_ptr<UIContent> Create(
75         OHOS::AbilityRuntime::Context* context, NativeEngine* runtime, bool isFormRender);
76     static std::unique_ptr<UIContent> Create(OHOS::AbilityRuntime::Context* context, NativeEngine* runtime);
77     static std::unique_ptr<UIContent> Create(OHOS::AppExecFwk::Ability* ability);
78     static void ShowDumpHelp(std::vector<std::string>& info);
79 
80     virtual ~UIContent() = default;
81 
82     // UI content life-cycles
83     virtual void Initialize(OHOS::Rosen::Window* window, const std::string& url, NativeValue* storage) = 0;
84 
85     // UIExtensionAbility initialize for focusWindow ID
86     virtual void Initialize(
87         OHOS::Rosen::Window* window, const std::string& url, NativeValue* storage, uint32_t focusWindowID) = 0;
88     virtual void Foreground() = 0;
89     virtual void Background() = 0;
90     virtual void Focus() = 0;
91     virtual void UnFocus() = 0;
92     virtual void Destroy() = 0;
93     virtual void OnNewWant(const OHOS::AAFwk::Want& want) = 0;
94 
95     // distribute
96     virtual void Restore(OHOS::Rosen::Window* window, const std::string& contentInfo, NativeValue* storage) = 0;
97     virtual std::string GetContentInfo() const = 0;
98     virtual void DestroyUIDirector() = 0;
99 
100     // UI content event process
101     virtual bool ProcessBackPressed() = 0;
102     virtual bool ProcessPointerEvent(const std::shared_ptr<OHOS::MMI::PointerEvent>& pointerEvent) = 0;
103     virtual bool ProcessKeyEvent(const std::shared_ptr<OHOS::MMI::KeyEvent>& keyEvent) = 0;
104     virtual bool ProcessAxisEvent(const std::shared_ptr<OHOS::MMI::AxisEvent>& axisEvent) = 0;
105     virtual bool ProcessVsyncEvent(uint64_t timeStampNanos) = 0;
106     virtual void SetIsFocusActive(bool isFocusActive) = 0;
107     virtual void UpdateConfiguration(const std::shared_ptr<OHOS::AppExecFwk::Configuration>& config) = 0;
108     virtual void UpdateViewportConfig(const ViewportConfig& config, OHOS::Rosen::WindowSizeChangeReason reason,
109         const std::shared_ptr<OHOS::Rosen::RSTransaction>& rsTransaction = nullptr) = 0;
110     virtual void UpdateWindowMode(OHOS::Rosen::WindowMode mode, bool hasDeco = true) = 0;
111     virtual void HideWindowTitleButton(bool hideSplit, bool hideMaximize, bool hideMinimize) = 0;
112     virtual void SetIgnoreViewSafeArea(bool ignoreViewSafeArea) = 0;
113 
114     // Window color
115     virtual uint32_t GetBackgroundColor() = 0;
116     virtual void SetBackgroundColor(uint32_t color) = 0;
117 
118     virtual void DumpInfo(const std::vector<std::string>& params, std::vector<std::string>& info) = 0;
119 
120     // Set UIContent callback for custom window animation
121     virtual void SetNextFrameLayoutCallback(std::function<void()>&& callback) = 0;
122 
123     // Receive memory level notification
124     virtual void NotifyMemoryLevel(int32_t level) = 0;
125 
126     virtual void SetAppWindowTitle(const std::string& title) = 0;
127     virtual void SetAppWindowIcon(const std::shared_ptr<Media::PixelMap>& pixelMap) = 0;
128 
129     // ArkTS Form
130     virtual std::shared_ptr<Rosen::RSSurfaceNode> GetFormRootNode() = 0;
131 
132     virtual void UpdateFormData(const std::string& data) = 0;
UpdateFormSharedImage(const std::map<std::string,sptr<OHOS::AppExecFwk::FormAshmem>> & imageDataMap)133     virtual void UpdateFormSharedImage(const std::map<std::string, sptr<OHOS::AppExecFwk::FormAshmem>>& imageDataMap) {}
134 
135     virtual void SetFormWidth(const float width) = 0;
136     virtual void SetFormHeight(const float height) = 0;
137     virtual float GetFormWidth() = 0;
138     virtual float GetFormHeight() = 0;
ReloadForm(const std::string & url)139     virtual void ReloadForm(const std::string& url) {};
OnFormSurfaceChange(float width,float height)140     virtual void OnFormSurfaceChange(float width, float height) {}
141 
SetActionEventHandler(std::function<void (const std::string &)> && actionCallback)142     virtual void SetActionEventHandler(std::function<void(const std::string&)>&& actionCallback) {};
SetErrorEventHandler(std::function<void (const std::string &,const std::string &)> && errorCallback)143     virtual void SetErrorEventHandler(std::function<void(const std::string&, const std::string&)>&& errorCallback) {};
SetFormLinkInfoUpdateHandler(std::function<void (const std::vector<std::string> &)> && callback)144     virtual void SetFormLinkInfoUpdateHandler(std::function<void(const std::vector<std::string>&)>&& callback) {};
145 
146     // for distribute UI source
DumpUITree()147     virtual SerializeableObjectArray DumpUITree()
148     {
149         return SerializeableObjectArray();
150     };
SubscribeUpdate(const std::function<void (int32_t,SerializeableObjectArray &)> & onUpdate)151     virtual void SubscribeUpdate(const std::function<void(int32_t, SerializeableObjectArray&)>& onUpdate) {}
UnSubscribeUpdate()152     virtual void UnSubscribeUpdate() {}
ProcessSerializeableInputEvent(const SerializeableObjectArray & array)153     virtual void ProcessSerializeableInputEvent(const SerializeableObjectArray& array) {}
154     // for distribute UI sink
RestoreUITree(const SerializeableObjectArray & array)155     virtual void RestoreUITree(const SerializeableObjectArray& array) {}
UpdateUITree(const SerializeableObjectArray & array)156     virtual void UpdateUITree(const SerializeableObjectArray& array) {}
SubscribeInputEventProcess(const std::function<void (SerializeableObjectArray &)> & onEvent)157     virtual void SubscribeInputEventProcess(const std::function<void(SerializeableObjectArray&)>& onEvent) {}
UnSubscribeInputEventProcess()158     virtual void UnSubscribeInputEventProcess() {}
159 
GetResourcePaths(std::vector<std::string> & resourcesPaths,std::string & assetRootPath,std::vector<std::string> & assetBasePaths,std::string & resFolderName)160     virtual void GetResourcePaths(std::vector<std::string>& resourcesPaths, std::string& assetRootPath,
161         std::vector<std::string>& assetBasePaths, std::string& resFolderName) {};
SetResourcePaths(const std::vector<std::string> & resourcesPaths,const std::string & assetRootPath,const std::vector<std::string> & assetBasePaths)162     virtual void SetResourcePaths(const std::vector<std::string>& resourcesPaths, const std::string& assetRootPath,
163         const std::vector<std::string>& assetBasePaths) {};
164 
GetUIContext()165     virtual NativeValue* GetUIContext()
166     {
167         return nullptr;
168     }
169 
170     /**
171      * @description: Create a full-window modal UIExtensionComponent.
172      * @param want Indicates the want of UIExtensionAbility.
173      * @param callbacks Indicates the UIExtensionComponent callbacks.
174      * @return The return value is the ID of the session held by the UIExtensionComponent
175      * if creation is not successful, it returns 0 by default.
176      */
177     virtual int32_t CreateModalUIExtension(const AAFwk::Want& want, const ModalUIExtensionCallbacks& callbacks) = 0;
178 
179     /**
180      * @description: Close the full-window modal.
181      * @param sessionId Indicates the sessionId of UIExtensionAbility.
182      * If the sessionId is 0, refuse to close
183      */
184     virtual void CloseModalUIExtension(int32_t sessionId) = 0;
185 };
186 
187 } // namespace OHOS::Ace
188 
189 #endif // FOUNDATION_ACE_INTERFACE_INNERKITS_ACE_UI_CONTENT_H
190