• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021-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_ADAPTER_OHOS_ENTRANCE_ACE_UI_CONTENT_IMPL_H
17 #define FOUNDATION_ACE_ADAPTER_OHOS_ENTRANCE_ACE_UI_CONTENT_IMPL_H
18 
19 #include <list>
20 #include <shared_mutex>
21 
22 #include "ability_info.h"
23 #include "display_manager.h"
24 #include "dm/display_manager.h"
25 #include "interfaces/inner_api/ace/arkui_rect.h"
26 #include "interfaces/inner_api/ace/ui_content.h"
27 #include "interfaces/inner_api/ace/viewport_config.h"
28 #include "interfaces/inner_api/ui_session/ui_content_stub_impl.h"
29 #include "key_event.h"
30 #include "native_engine/native_engine.h"
31 #include "native_engine/native_value.h"
32 #include "wm/data_handler_interface.h"
33 #include "wm/window.h"
34 
35 #include "adapter/ohos/entrance/distributed_ui_manager.h"
36 #include "adapter/ohos/entrance/ace_viewport_config.h"
37 #include "base/thread/task_executor.h"
38 #include "base/view_data/view_data_wrap.h"
39 #include "core/common/asset_manager_impl.h"
40 #include "core/common/update_config_manager.h"
41 #include "core/components/common/properties/animation_option.h"
42 #include "core/components/common/properties/popup_param.h"
43 
44 namespace OHOS::Accessibility {
45 class AccessibilityElementInfo;
46 }
47 
48 namespace OHOS::Ace {
49 class ACE_FORCE_EXPORT UIContentImpl : public UIContent {
50 public:
51     UIContentImpl(OHOS::AbilityRuntime::Context* context, void* runtime);
52     UIContentImpl(OHOS::AppExecFwk::Ability* ability);
53     UIContentImpl(OHOS::AbilityRuntime::Context* context, void* runtime, bool isCard);
~UIContentImpl()54     ~UIContentImpl()
55     {
56         UnSubscribeEventsPassThroughMode();
57         ProcessDestructCallbacks();
58         DestroyUIDirector();
59         DestroyCallback();
60     }
61 
62     // UI content lifeCycles
63     UIContentErrorCode Initialize(OHOS::Rosen::Window* window, const std::string& url, napi_value storage) override;
64     UIContentErrorCode Initialize(
65         OHOS::Rosen::Window* window, const std::shared_ptr<std::vector<uint8_t>>& content, napi_value storage) override;
66     UIContentErrorCode Initialize(OHOS::Rosen::Window* window, const std::shared_ptr<std::vector<uint8_t>>& content,
67         napi_value storage, const std::string& contentName) override;
68     UIContentErrorCode InitializeByName(
69         OHOS::Rosen::Window* window, const std::string& name, napi_value storage) override;
70     void InitializeByName(OHOS::Rosen::Window *window,
71         const std::string &name, napi_value storage, uint32_t focusWindowId) override;
72     void InitializeDynamic(int32_t hostInstanceId, const std::string& hapPath, const std::string& abcPath,
73         const std::string& entryPoint, const std::vector<std::string>& registerComponents) override;
74     void Initialize(
75         OHOS::Rosen::Window* window, const std::string& url, napi_value storage, uint32_t focusWindowId) override;
76     void Foreground() override;
77     void Background() override;
78     void Focus() override;
79     void UnFocus() override;
80     void ActiveWindow() override;
81     void UnActiveWindow() override;
82     void Destroy() override;
83     void OnNewWant(const OHOS::AAFwk::Want& want) override;
84 
85     // restore
86     UIContentErrorCode Restore(OHOS::Rosen::Window* window, const std::string& contentInfo,
87         napi_value storage, ContentInfoType type) override;
88     std::string GetContentInfo(ContentInfoType type) const override;
89     void DestroyUIDirector() override;
90     void SetUIContentType(UIContentType uIContentType) override;
91     void UpdateFontScale(const std::shared_ptr<OHOS::AppExecFwk::Configuration>& config);
92 
93     // UI content event process
94     bool ProcessBackPressed() override;
95     void UpdateDialogResourceConfiguration(RefPtr<Container>& container,
96         const std::shared_ptr<OHOS::AbilityRuntime::Context>& context);
97     bool ProcessPointerEvent(const std::shared_ptr<OHOS::MMI::PointerEvent>& pointerEvent) override;
98     bool ProcessPointerEventWithCallback(
99         const std::shared_ptr<OHOS::MMI::PointerEvent>& pointerEvent, const std::function<void()>& callback) override;
100     bool ProcessKeyEvent(const std::shared_ptr<OHOS::MMI::KeyEvent>& keyEvent, bool isPreIme) override;
101     bool ProcessAxisEvent(const std::shared_ptr<OHOS::MMI::AxisEvent>& axisEvent) override;
102     bool ProcessVsyncEvent(uint64_t timeStampNanos) override;
103     void UpdateConfiguration(const std::shared_ptr<OHOS::AppExecFwk::Configuration>& config) override;
104     void UpdateConfiguration(const std::shared_ptr<OHOS::AppExecFwk::Configuration>& config,
105         const std::shared_ptr<Global::Resource::ResourceManager>& resourceManager) override;
106     void UpdateViewportConfig(const ViewportConfig& config, OHOS::Rosen::WindowSizeChangeReason reason,
107         const std::shared_ptr<OHOS::Rosen::RSTransaction>& rsTransaction = nullptr,
108         const std::map<OHOS::Rosen::AvoidAreaType, OHOS::Rosen::AvoidArea>& avoidAreas = {}) override;
109     void UpdateViewportConfigWithAnimation(const ViewportConfig& config, OHOS::Rosen::WindowSizeChangeReason reason,
110         AnimationOption animationOpt, const std::shared_ptr<OHOS::Rosen::RSTransaction>& rsTransaction = nullptr,
111         const std::map<OHOS::Rosen::AvoidAreaType, OHOS::Rosen::AvoidArea>& avoidAreas = {});
112     void UIExtensionUpdateViewportConfig(const ViewportConfig& config);
113     void UpdateWindowMode(OHOS::Rosen::WindowMode mode, bool hasDecor = true) override;
114     void NotifyWindowMode(OHOS::Rosen::WindowMode mode) override;
115     void UpdateDecorVisible(bool visible, bool hasDecor) override;
116     void UpdateWindowBlur();
117     void RegisterGetCurrentPageName(RefPtr<PipelineBase> pipeline);
118     void HideWindowTitleButton(bool hideSplit, bool hideMaximize, bool hideMinimize, bool hideClose) override;
119     void SetIgnoreViewSafeArea(bool ignoreViewSafeArea) override;
120     void UpdateMaximizeMode(OHOS::Rosen::MaximizeMode mode) override;
121     void ProcessFormVisibleChange(bool isVisible) override;
122     void UpdateTitleInTargetPos(bool isShow, int32_t height) override;
123     void NotifyRotationAnimationEnd() override;
124 
125     void ChangeSensitiveNodes(bool isSensitive) override;
126 
127     // Window color
128     uint32_t GetBackgroundColor() override;
129     void SetBackgroundColor(uint32_t color) override;
130     void SetWindowContainerColor(uint32_t activeColor, uint32_t inactiveColor) override;
131 
132     bool NeedSoftKeyboard() override;
133 
134     void SetOnWindowFocused(const std::function<void()>& callback) override;
135 
136     // Current paintSize of window
137     void GetAppPaintSize(OHOS::Rosen::Rect& paintrect) override;
138 
139     // Get paintSize of window by calculating
140     void GetWindowPaintSize(OHOS::Rosen::Rect& paintrect) override;
141 
142     void DumpInfo(const std::vector<std::string>& params, std::vector<std::string>& info) override;
143 
144     // Set UIContent callback for custom window animation
145     void SetNextFrameLayoutCallback(std::function<void()>&& callback) override;
146 
147     // Set UIContent callback after layout finish
148     void SetFrameLayoutFinishCallback(std::function<void()>&& callback) override;
149 
150     // Receive memory level notification
151     void NotifyMemoryLevel(int32_t level) override;
152 
153     void SetAppWindowTitle(const std::string& title) override;
154     void SetAppWindowIcon(const std::shared_ptr<Media::PixelMap>& pixelMap) override;
155 
156     // ArkTS Form
157     void PreInitializeForm(OHOS::Rosen::Window* window, const std::string& url, napi_value storage) override;
158     void RunFormPage() override;
159     std::shared_ptr<Rosen::RSSurfaceNode> GetFormRootNode() override;
160     void UpdateFormData(const std::string& data) override;
161     void UpdateFormSharedImage(const std::map<std::string, sptr<OHOS::AppExecFwk::FormAshmem>>& imageDataMap) override;
162     void ReloadForm(const std::string& url) override;
163 
SetFormWidth(float width)164     void SetFormWidth(float width) override
165     {
166         formWidth_ = width;
167     }
SetFormHeight(float height)168     void SetFormHeight(float height) override
169     {
170         formHeight_ = height;
171     }
GetFormWidth()172     float GetFormWidth() override
173     {
174         return formWidth_;
175     }
GetFormHeight()176     float GetFormHeight() override
177     {
178         return formHeight_;
179     }
180 
181     void SetActionEventHandler(std::function<void(const std::string& action)>&& actionCallback) override;
182     void SetErrorEventHandler(std::function<void(const std::string&, const std::string&)>&& errorCallback) override;
183     void SetFormLinkInfoUpdateHandler(std::function<void(const std::vector<std::string>&)>&& callback) override;
184 
185     void OnFormSurfaceChange(float width, float height,
186         OHOS::Rosen::WindowSizeChangeReason type = static_cast<OHOS::Rosen::WindowSizeChangeReason>(0),
187         const std::shared_ptr<Rosen::RSTransaction>& rsTransaction = nullptr) override;
188 
189     void SetFormBackgroundColor(const std::string& color) override;
190 
191     void RegisterAccessibilityChildTree(
192         uint32_t parentWindowId, int32_t parentTreeId, int64_t parentElementId) override;
193     void SetAccessibilityGetParentRectHandler(std::function<void(int32_t&, int32_t&)>&& callback) override;
194     void SetAccessibilityGetParentRectHandler(
195         std::function<void(AccessibilityParentRectInfo&)>&& callback) override;
196     void DeregisterAccessibilityChildTree() override;
197     void AccessibilityDumpChildInfo(const std::vector<std::string>& params, std::vector<std::string>& info) override;
198 
199     void SetFontScaleFollowSystem(const bool fontScaleFollowSystem) override;
200 
DumpUITree()201     SerializeableObjectArray DumpUITree() override
202     {
203         CHECK_NULL_RETURN(uiManager_, SerializeableObjectArray());
204         return uiManager_->DumpUITree();
205     }
SubscribeUpdate(const std::function<void (int32_t,SerializeableObjectArray &)> & onUpdate)206     void SubscribeUpdate(const std::function<void(int32_t, SerializeableObjectArray&)>& onUpdate) override
207     {
208         CHECK_NULL_VOID(uiManager_);
209         return uiManager_->SubscribeUpdate(onUpdate);
210     }
UnSubscribeUpdate()211     void UnSubscribeUpdate() override
212     {
213         CHECK_NULL_VOID(uiManager_);
214         uiManager_->UnSubscribeUpdate();
215     }
ProcessSerializeableInputEvent(const SerializeableObjectArray & array)216     void ProcessSerializeableInputEvent(const SerializeableObjectArray& array) override
217     {
218         CHECK_NULL_VOID(uiManager_);
219         uiManager_->ProcessSerializeableInputEvent(array);
220     }
RestoreUITree(const SerializeableObjectArray & array)221     void RestoreUITree(const SerializeableObjectArray& array) override
222     {
223         CHECK_NULL_VOID(uiManager_);
224         uiManager_->RestoreUITree(array);
225     }
UpdateUITree(const SerializeableObjectArray & array)226     void UpdateUITree(const SerializeableObjectArray& array) override
227     {
228         CHECK_NULL_VOID(uiManager_);
229         uiManager_->UpdateUITree(array);
230     }
SubscribeInputEventProcess(const std::function<void (SerializeableObjectArray &)> & onEvent)231     void SubscribeInputEventProcess(const std::function<void(SerializeableObjectArray&)>& onEvent) override
232     {
233         CHECK_NULL_VOID(uiManager_);
234         uiManager_->SubscribeInputEventProcess(onEvent);
235     }
UnSubscribeInputEventProcess()236     void UnSubscribeInputEventProcess() override
237     {
238         CHECK_NULL_VOID(uiManager_);
239         uiManager_->UnSubscribeInputEventProcess();
240     }
241     void GetResourcePaths(std::vector<std::string>& resourcesPaths, std::string& assetRootPath,
242         std::vector<std::string>& assetBasePaths, std::string& resFolderName) override;
243     void SetResourcePaths(const std::vector<std::string>& resourcesPaths, const std::string& assetRootPath,
244         const std::vector<std::string>& assetBasePaths) override;
245 
246     napi_value GetUINapiContext() override;
247     void SetIsFocusActive(bool isFocusActive) override;
248 
249     void UpdateResource() override;
250 
251     int32_t CreateModalUIExtension(const AAFwk::Want& want,
252         const ModalUIExtensionCallbacks& callbacks, const ModalUIExtensionConfig& config) override;
253     void CloseModalUIExtension(int32_t sessionId) override;
254     void UpdateModalUIExtensionConfig(
255         int32_t sessionId, const ModalUIExtensionAllowedUpdateConfig& config) override;
256 
257     void SetParentToken(sptr<IRemoteObject> token) override;
258     sptr<IRemoteObject> GetParentToken() override;
259     AbilityBase::AutoFillType ViewDataToType(const AbilityBase::ViewData& viewData);
260     bool DumpViewData(AbilityBase::ViewData& viewData, AbilityBase::AutoFillType& type) override;
261     bool CheckNeedAutoSave() override;
262     bool DumpViewData(const RefPtr<NG::FrameNode>& node, RefPtr<ViewDataWrap> viewDataWrap,
263         bool skipSubAutoFillContainer = false, bool needsRecordData = false);
264 
265     void SearchElementInfoByAccessibilityId(
266         int64_t elementId, int32_t mode,
267         int64_t baseParent, std::list<Accessibility::AccessibilityElementInfo>& output) override;
268 
269     void SearchElementInfosByText(
270         int64_t elementId, const std::string& text, int64_t baseParent,
271         std::list<Accessibility::AccessibilityElementInfo>& output) override;
272 
273     void FindFocusedElementInfo(
274         int64_t elementId, int32_t focusType,
275         int64_t baseParent, Accessibility::AccessibilityElementInfo& output) override;
276 
277     void FocusMoveSearch(
278         int64_t elementId, int32_t direction,
279         int64_t baseParent, Accessibility::AccessibilityElementInfo& output) override;
280 
281     bool NotifyExecuteAction(int64_t elementId, const std::map<std::string, std::string>& actionArguments,
282         int32_t action, int64_t offset) override;
283 
284     void HandleAccessibilityHoverEvent(float pointX, float pointY, int32_t sourceType,
285         int32_t eventType, int64_t timeMs) override;
286 
GetInstanceId()287     int32_t GetInstanceId() override
288     {
289         return instanceId_;
290     }
291 
292     std::string RecycleForm() override;
293 
294     void RecoverForm(const std::string& statusData) override;
295     Shadow GetPopupShadow();
296 
297     int32_t CreateCustomPopupUIExtension(const AAFwk::Want& want,
298         const ModalUIExtensionCallbacks& callbacks, const CustomPopupUIExtensionConfig& config) override;
299     bool GetTargetNode(
300         int32_t& nodeIdLabel, RefPtr<NG::FrameNode>& targetNode, const CustomPopupUIExtensionConfig& config);
301     void DestroyCustomPopupUIExtension(int32_t nodeId) override;
302     void UpdateCustomPopupUIExtension(const CustomPopupUIExtensionConfig& config) override;
303 
304     void SetContainerModalTitleVisible(bool customTitleSettedShow, bool floatingTitleSettedShow) override;
305     bool GetContainerModalTitleVisible(bool isImmersive) override;
306     void SetContainerModalTitleHeight(int32_t height) override;
307     void SetContainerButtonStyle(const Rosen::DecorButtonStyle& buttonStyle) override;
308     int32_t GetContainerModalTitleHeight() override;
309     bool GetContainerModalButtonsRect(Rosen::Rect& containerModal, Rosen::Rect& buttons) override;
310     void SubscribeContainerModalButtonsRectChange(
311         std::function<void(Rosen::Rect& containerModal, Rosen::Rect& buttons)>&& callback) override;
312     void UpdateTransform(const OHOS::Rosen::Transform& transform) override;
313 
314     SerializedGesture GetFormSerializedGesture() override;
315 
SetUIExtensionSubWindow(bool isUIExtensionSubWindow)316     void SetUIExtensionSubWindow(bool isUIExtensionSubWindow) override
317     {
318         isUIExtensionSubWindow_ = isUIExtensionSubWindow;
319     }
320 
IsUIExtensionSubWindow()321     bool IsUIExtensionSubWindow() override
322     {
323         return isUIExtensionSubWindow_;
324     }
325 
SetUIExtensionAbilityProcess(bool isUIExtensionAbilityProcess)326     void SetUIExtensionAbilityProcess(bool isUIExtensionAbilityProcess) override
327     {
328         isUIExtensionAbilityProcess_ = isUIExtensionAbilityProcess;
329     }
330 
IsUIExtensionAbilityProcess()331     bool IsUIExtensionAbilityProcess() override
332     {
333         return isUIExtensionAbilityProcess_;
334     }
335 
SetUIExtensionAbilityHost(bool isUIExtensionAbilityHost)336     void SetUIExtensionAbilityHost(bool isUIExtensionAbilityHost) override
337     {
338         isUIExtensionAbilityHost_ = isUIExtensionAbilityHost;
339     }
340 
IsUIExtensionAbilityHost()341     bool IsUIExtensionAbilityHost() override
342     {
343         return isUIExtensionAbilityHost_;
344     }
345 
346     std::vector<Ace::RectF> GetOverlayNodePositions() const override;
347 
348     void RegisterOverlayNodePositionsUpdateCallback(
349         const std::function<void(std::vector<Ace::RectF>)>& callback) const override;
350 
351     void SetFormRenderingMode(int8_t renderMode) override;
352 
353     void SetFormEnableBlurBackground(bool enableBlurBackground) override;
354 
355     void SetContentNodeGrayScale(float grayscale) override;
356 
357     void PreLayout() override;
358 
GetRemoteObj()359     sptr<IRemoteObject> GetRemoteObj() override
360     {
361         return instance_;
362     }
363 
364     void SetStatusBarItemColor(uint32_t color) override;
365 
366     void SetFontScaleAndWeightScale(const RefPtr<Platform::AceContainer>& container, int32_t instanceId);
367 
368     void SetForceSplitEnable(bool isForceSplit, const std::string& homePage) override;
369 
AddDestructCallback(void * key,const std::function<void ()> & callback)370     void AddDestructCallback(void* key, const std::function<void()>& callback)
371     {
372         std::unique_lock<std::shared_mutex> lock(destructMutex_);
373         destructCallbacks_.emplace(key, callback);
374     }
375 
RemoveDestructCallback(void * key)376     void RemoveDestructCallback(void* key)
377     {
378         std::unique_lock<std::shared_mutex> lock(destructMutex_);
379         destructCallbacks_.erase(key);
380     }
381 
382     void EnableContainerModalGesture(bool isEnable) override;
383 
384     bool GetContainerFloatingTitleVisible() override;
385 
386     bool GetContainerCustomTitleVisible() override;
387 
388     bool GetContainerControlButtonVisible() override;
389 
390     void OnContainerModalEvent(const std::string& name, const std::string& value) override;
391     void UpdateConfigurationSyncForAll(const std::shared_ptr<OHOS::AppExecFwk::Configuration>& config) override;
392 
393     int32_t AddFocusActiveChangeCallback(const std::function<void(bool isFocusAvtive)>& callback) override;
394     void RemoveFocusActiveChangeCallback(int32_t handler) override;
395 
396     bool ProcessPointerEvent(const std::shared_ptr<OHOS::MMI::PointerEvent>& pointerEvent,
397         const std::function<void(bool)>& callback) override;
398 
399     bool ConfigCustomWindowMask(bool enable) override;
400     void UpdateSingleHandTransform(const OHOS::Rosen::SingleHandTransform& transform) override;
401 
402     std::shared_ptr<Rosen::RSNode> GetRSNodeByStringID(const std::string& stringId) override;
403     void SetTopWindowBoundaryByID(const std::string& stringId) override;
404     void SetupGetPixelMapCallback(RefPtr<PipelineBase> pipeline);
405     void InitUISessionManagerCallbacks(RefPtr<PipelineBase> pipeline);
406     bool SendUIExtProprty(uint32_t code, const AAFwk::Want& data, uint8_t subSystemId) override;
407     void EnableContainerModalCustomGesture(bool enable) override;
408 
409     void AddKeyFrameAnimateEndCallback(const std::function<void()>& callback) override;
410     void AddKeyFrameCanvasNodeCallback(const std::function<
411         void(std::shared_ptr<Rosen::RSCanvasNode>& canvasNode,
412             std::shared_ptr<OHOS::Rosen::RSTransaction>& rsTransaction)>& callback) override;
413     void LinkKeyFrameCanvasNode(std::shared_ptr<OHOS::Rosen::RSCanvasNode>& canvasNode) override;
414     void CacheAnimateInfo(const ViewportConfig& config,
415         OHOS::Rosen::WindowSizeChangeReason reason,
416         const std::shared_ptr<OHOS::Rosen::RSTransaction>& rsTransaction,
417         const std::map<OHOS::Rosen::AvoidAreaType, OHOS::Rosen::AvoidArea>& avoidAreas);
418     void ExecKeyFrameCachedAnimateAction();
419     void KeyFrameDragStartPolicy(RefPtr<NG::PipelineContext> context);
420     bool KeyFrameActionPolicy(const ViewportConfig& config,
421         OHOS::Rosen::WindowSizeChangeReason reason,
422         const std::shared_ptr<OHOS::Rosen::RSTransaction>& rsTransaction,
423         const std::map<OHOS::Rosen::AvoidAreaType, OHOS::Rosen::AvoidArea>& avoidAreas);
424 
425 private:
426     UIContentErrorCode InitializeInner(
427         OHOS::Rosen::Window* window, const std::string& contentInfo, napi_value storage, bool isNamedRouter);
428     UIContentErrorCode CommonInitialize(
429         OHOS::Rosen::Window* window, const std::string& contentInfo, napi_value storage, uint32_t focusWindowId = 0);
430     UIContentErrorCode CommonInitializeForm(
431         OHOS::Rosen::Window* window, const std::string& contentInfo, napi_value storage);
432     void InitializeSubWindow(OHOS::Rosen::Window* window, bool isDialog = false);
433     void DestroyCallback() const;
434     void ProcessDestructCallbacks();
435     void SetConfiguration(const std::shared_ptr<OHOS::AppExecFwk::Configuration>& config);
436 
437     void InitializeSafeArea(const RefPtr<Platform::AceContainer>& container);
438     void InitializeDisplayAvailableRect(const RefPtr<Platform::AceContainer>& container);
439 
440     RefPtr<PopupParam> CreateCustomPopupParam(bool isShow, const CustomPopupUIExtensionConfig& config);
441     void OnPopupStateChange(const std::string& event, const CustomPopupUIExtensionConfig& config, int32_t nodeId);
442     void SetCustomPopupConfig(int32_t nodeId, const CustomPopupUIExtensionConfig& config, int32_t popupId);
443     bool IfNeedTouchOutsideListener(const std::string& windowName);
444 
445     void AddWatchSystemParameter();
446     void StoreConfiguration(const std::shared_ptr<OHOS::AppExecFwk::Configuration>& config);
447     void UnregisterDisplayManagerCallback();
448     void RegisterLinkJumpCallback();
449     void ExecuteUITask(std::function<void()> task, const std::string& name);
450     void SubscribeEventsPassThroughMode();
451     void UnSubscribeEventsPassThroughMode();
452     bool GetWindowSizeChangeReason(OHOS::Rosen::WindowSizeChangeReason lastReason,
453         OHOS::Rosen::WindowSizeChangeReason reason);
454     void ChangeDisplayAvailableAreaListener(uint64_t displayId);
455     std::weak_ptr<OHOS::AbilityRuntime::Context> context_;
456     void* runtime_ = nullptr;
457     OHOS::Rosen::Window* window_ = nullptr;
458     std::string startUrl_;
459     int32_t instanceId_ = -1;
460     OHOS::sptr<OHOS::Rosen::IWindowDragListener> dragWindowListener_ = nullptr;
461     OHOS::sptr<OHOS::Rosen::IOccupiedAreaChangeListener> occupiedAreaChangeListener_ = nullptr;
462     OHOS::sptr<OHOS::Rosen::IAvoidAreaChangedListener> avoidAreaChangedListener_ = nullptr;
463     OHOS::sptr<OHOS::Rosen::DisplayManager::IFoldStatusListener> foldStatusListener_ = nullptr;
464     OHOS::sptr<OHOS::Rosen::DisplayManager::IDisplayModeListener> foldDisplayModeListener_ = nullptr;
465     OHOS::sptr<OHOS::Rosen::DisplayManager::IAvailableAreaListener> availableAreaChangedListener_ = nullptr;
466 
467     // ITouchOutsideListener is used for touching out of hot areas of window.
468     OHOS::sptr<OHOS::Rosen::ITouchOutsideListener> touchOutsideListener_ = nullptr;
469 
470     // ArkTS Form
471     bool isFormRender_ = false;
472     bool isFormRenderInit_ = false;
473     std::string bundleName_;
474     std::string moduleName_;
475     std::string hapPath_;
476     bool isBundle_ = false;
477     float formWidth_ = 0.0;
478     float formHeight_ = 0.0;
479     std::string formData_;
480     bool fontScaleFollowSystem_ = true;
481     std::map<std::string, sptr<OHOS::AppExecFwk::FormAshmem>> formImageDataMap_;
482     std::unordered_map<int32_t, CustomPopupUIExtensionConfig> customPopupConfigMap_;
483     std::unordered_map<int32_t, int32_t> popupUIExtensionRecords_;
484     std::unique_ptr<DistributedUIManager> uiManager_;
485 
486     bool isDynamicRender_ = false;
487     int32_t hostInstanceId_ = -1;
488     UIContentType uIContentType_ = UIContentType::UNDEFINED;
489     std::shared_ptr<TaskWrapper> taskWrapper_;
490     std::vector<std::string> registerComponents_;
491 
492     sptr<IRemoteObject> parentToken_ = nullptr;
493     sptr<IRemoteObject> instance_ = new (std::nothrow) UIContentServiceStubImpl();
494     bool isUIExtensionSubWindow_ = false;
495     bool isUIExtensionAbilityProcess_ = false;
496     bool isUIExtensionAbilityHost_ = false;
497     RefPtr<UpdateConfigManager<AceViewportConfig>> viewportConfigMgr_ =
498         Referenced::MakeRefPtr<UpdateConfigManager<AceViewportConfig>>();
499     std::unordered_map<void*, std::function<void()>> destructCallbacks_;
500 
501     SingleTaskExecutor::CancelableTask updateDecorVisibleTask_;
502     std::mutex updateDecorVisibleMutex_;
503     SingleTaskExecutor::CancelableTask setAppWindowIconTask_;
504     std::mutex setAppWindowIconMutex_;
505     uint64_t listenedDisplayId_ = 0;
506     OHOS::Rosen::WindowSizeChangeReason lastReason_ = OHOS::Rosen::WindowSizeChangeReason::UNDEFINED;
507     std::function<void(std::shared_ptr<Rosen::RSCanvasNode>& canvasNode,
508         std::shared_ptr<OHOS::Rosen::RSTransaction>& rsTransaction)> addNodeCallback_ = nullptr;
509     std::shared_ptr<Rosen::RSCanvasNode> canvasNode_ = nullptr;
510     std::atomic<bool> cachedAnimateFlag_ = false;
511     ViewportConfig cachedConfig_;
512     OHOS::Rosen::WindowSizeChangeReason cachedReason_;
513     std::shared_ptr<OHOS::Rosen::RSTransaction> cachedRsTransaction_;
514     std::map<OHOS::Rosen::AvoidAreaType, OHOS::Rosen::AvoidArea> cachedAvoidAreas_;
515     std::shared_mutex destructMutex_;
516 };
517 
518 } // namespace OHOS::Ace
519 
520 #endif // FOUNDATION_ACE_ADAPTER_OHOS_ENTRANCE_ACE_UI_CONTENT_IMPL_H
521