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