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