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