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