From 46adf3820f4d7b68deb11fe670ebe3197514448d Mon Sep 17 00:00:00 2001 From: cuijiawei2022 Date: Tue, 22 Jul 2025 00:03:38 +0800 Subject: [PATCH] suec instance fix Signed-off-by: cuijiawei2022 --- .../preview_session_wrapper_impl.h | 2 +- .../security_session_wrapper_impl.cpp | 43 ++-- .../security_session_wrapper_impl.h | 1 + .../security_ui_extension_pattern.cpp | 231 ++++++++++++++---- .../security_ui_extension_pattern.h | 40 ++- .../pattern/ui_extension/session_wrapper.h | 1 + .../session_wrapper_impl.h | 2 +- .../mock_security_session_wrapper_impl.cpp | 5 + .../mock/mock_session_wrapper_impl.cpp | 5 + 9 files changed, 264 insertions(+), 66 deletions(-) diff --git a/frameworks/core/components_ng/pattern/ui_extension/preview_ui_extension_component/preview_session_wrapper_impl.h b/frameworks/core/components_ng/pattern/ui_extension/preview_ui_extension_component/preview_session_wrapper_impl.h index 1b1322fffb2..1b3f1afb0b2 100644 --- a/frameworks/core/components_ng/pattern/ui_extension/preview_ui_extension_component/preview_session_wrapper_impl.h +++ b/frameworks/core/components_ng/pattern/ui_extension/preview_ui_extension_component/preview_session_wrapper_impl.h @@ -102,7 +102,7 @@ public: uint32_t GetReasonDump() const override; void NotifyUieDump(const std::vector& params, std::vector& info) override; int32_t GetInstanceId() const; - void UpdateInstanceId(int32_t instanceId); + void UpdateInstanceId(int32_t instanceId) override; bool SendBusinessDataSyncReply(UIContentBusinessCode code, const AAFwk::Want& data, AAFwk::Want& reply, RSSubsystemId subSystemId = RSSubsystemId::ARKUI_UIEXT) override; bool SendBusinessData(UIContentBusinessCode code, const AAFwk::Want& data, BusinessDataSendType type, diff --git a/frameworks/core/components_ng/pattern/ui_extension/security_ui_extension_component/security_session_wrapper_impl.cpp b/frameworks/core/components_ng/pattern/ui_extension/security_ui_extension_component/security_session_wrapper_impl.cpp index eeeee1508c9..d7d96e1ac1c 100644 --- a/frameworks/core/components_ng/pattern/ui_extension/security_ui_extension_component/security_session_wrapper_impl.cpp +++ b/frameworks/core/components_ng/pattern/ui_extension/security_ui_extension_component/security_session_wrapper_impl.cpp @@ -332,6 +332,23 @@ void SecuritySessionWrapperImpl::InitAllCallback() TaskExecutor::TaskType::UI, "ArkUIUIExtensionEventCallback"); }; } + +void SecuritySessionWrapperImpl::UpdateInstanceId(int32_t instanceId) +{ + if (instanceId_ == instanceId) { + PLATFORM_LOGI("InstanceId(%{public}d) has not changed when UpdateInstanceId.", instanceId); + return; + } + PLATFORM_LOGI("Update instanceId %{public}d to %{public}d.", instanceId_, instanceId); + auto container = Container::GetContainer(instanceId); + CHECK_NULL_VOID(container); + auto taskExecutor = container->GetTaskExecutor(); + CHECK_NULL_VOID(taskExecutor); + instanceId_ = instanceId; + taskExecutor_ = taskExecutor; + InitAllCallback(); + PLATFORM_LOGI("Update instanceId success."); +} /*********************** End: Initialization *************************************/ /*********************** Begin: About session ************************************/ @@ -398,7 +415,7 @@ void SecuritySessionWrapperImpl::UpdateWantPtr(std::shared_ptr& wan { CHECK_NULL_VOID(wantPtr); AAFwk::WantParams configParam; - auto container = Platform::AceContainer::GetContainer(GetInstanceIdFromHost()); + auto container = Platform::AceContainer::GetContainer(GetInstanceId()); CHECK_NULL_VOID(container); container->GetExtensionConfig(configParam); AAFwk::WantParams wantParam(wantPtr->GetParams()); @@ -412,7 +429,7 @@ void SecuritySessionWrapperImpl::ReDispatchWantParams() auto dataHandler = session_->GetExtensionDataHandler(); CHECK_NULL_VOID(dataHandler); AAFwk::WantParams configParam; - auto container = Platform::AceContainer::GetContainer(GetInstanceIdFromHost()); + auto container = Platform::AceContainer::GetContainer(GetInstanceId()); CHECK_NULL_VOID(container); container->GetExtensionConfig(configParam); AAFwk::WantParams wantParam(customWant_->GetParams()); @@ -863,19 +880,9 @@ bool SecuritySessionWrapperImpl::SendBusinessDataSyncReply( return true; } -int32_t SecuritySessionWrapperImpl::GetInstanceIdFromHost() const +int32_t SecuritySessionWrapperImpl::GetInstanceId() const { - auto pattern = hostPattern_.Upgrade(); - if (pattern == nullptr) { - PLATFORM_LOGW("UIExtension pattern is null, session wrapper get instanceId from host return fail."); - return INSTANCE_ID_UNDEFINED; - } - auto instanceId = pattern->GetInstanceIdFromHost(); - if (instanceId != instanceId_) { - PLATFORM_LOGW("SessionWrapper instanceId %{public}d not equal frame node instanceId %{public}d", - instanceId_, instanceId); - } - return instanceId; + return instanceId_; } bool SecuritySessionWrapperImpl::SendBusinessData( @@ -910,7 +917,7 @@ void SecuritySessionWrapperImpl::DispatchExtensionDataToHostWindow(uint32_t cust { int32_t callSessionId = GetSessionId(); CHECK_NULL_VOID(taskExecutor_); - auto instanceId = GetInstanceIdFromHost(); + auto instanceId = GetInstanceId(); taskExecutor_->PostTask( [instanceId, weak = hostPattern_, customId, data, callSessionId]() { ContainerScope scope(instanceId); @@ -935,7 +942,7 @@ void SecuritySessionWrapperImpl::PostBusinessDataConsumeAsync(uint32_t customId, PLATFORM_LOGI("PostBusinessDataConsumeAsync, businessCode=%{public}u.", customId); int32_t callSessionId = GetSessionId(); CHECK_NULL_VOID(taskExecutor_); - auto instanceId = GetInstanceIdFromHost(); + auto instanceId = GetInstanceId(); taskExecutor_->PostTask( [instanceId, weak = hostPattern_, customId, data, callSessionId]() { ContainerScope scope(instanceId); @@ -957,7 +964,7 @@ void SecuritySessionWrapperImpl::PostBusinessDataConsumeSyncReply( PLATFORM_LOGI("PostBusinessDataConsumeSyncReply, businessCode=%{public}u.", customId); int32_t callSessionId = GetSessionId(); CHECK_NULL_VOID(taskExecutor_); - auto instanceId = GetInstanceIdFromHost(); + auto instanceId = GetInstanceId(); taskExecutor_->PostSyncTask( [instanceId, weak = hostPattern_, customId, data, &reply, callSessionId]() { ContainerScope scope(instanceId); @@ -985,7 +992,7 @@ bool SecuritySessionWrapperImpl::RegisterDataConsumer() (Rosen::SubSystemId id, uint32_t customId, AAFwk::Want&& data, std::optional& reply) ->int32_t { auto sessionWrapper = wrapperWeak.Upgrade(); CHECK_NULL_RETURN(sessionWrapper, false); - auto instanceId = sessionWrapper->GetInstanceIdFromHost(); + auto instanceId = sessionWrapper->GetInstanceId(); ContainerScope scope(instanceId); if (id != subSystemId) { return false; diff --git a/frameworks/core/components_ng/pattern/ui_extension/security_ui_extension_component/security_session_wrapper_impl.h b/frameworks/core/components_ng/pattern/ui_extension/security_ui_extension_component/security_session_wrapper_impl.h index a94703e9c99..93ac8df7463 100644 --- a/frameworks/core/components_ng/pattern/ui_extension/security_ui_extension_component/security_session_wrapper_impl.h +++ b/frameworks/core/components_ng/pattern/ui_extension/security_ui_extension_component/security_session_wrapper_impl.h @@ -107,6 +107,7 @@ public: bool SendBusinessData(UIContentBusinessCode code, const AAFwk::Want& data, BusinessDataSendType type, RSSubsystemId subSystemId = RSSubsystemId::ARKUI_UIEXT) override; void ReDispatchWantParams() override; + void UpdateInstanceId(int32_t instanceId) override; private: void InitAllCallback(); diff --git a/frameworks/core/components_ng/pattern/ui_extension/security_ui_extension_component/security_ui_extension_pattern.cpp b/frameworks/core/components_ng/pattern/ui_extension/security_ui_extension_component/security_ui_extension_pattern.cpp index 7d604a2bb93..7389942ca46 100644 --- a/frameworks/core/components_ng/pattern/ui_extension/security_ui_extension_component/security_ui_extension_pattern.cpp +++ b/frameworks/core/components_ng/pattern/ui_extension/security_ui_extension_component/security_ui_extension_pattern.cpp @@ -200,10 +200,14 @@ void SecurityUIExtensionPattern::AfterMountToParent() void SecurityUIExtensionPattern::OnAttachContext(PipelineContext *context) { - CHECK_NULL_VOID(context); - hasAttachContext_ = true; + CHECK_NULL_VOID(context); auto newInstanceId = context->GetInstanceId(); + bool isMoving = IsMoving(); + PLATFORM_LOGI("OnAttachContext newInstanceId: %{public}d, oldInstanceId: %{public}d," + " isMoving: %{public}d.", newInstanceId, instanceId_, isMoving); if (newInstanceId != instanceId_) { + UnRegisterEvent(instanceId_); + RegisterEvent(newInstanceId); instanceId_ = newInstanceId; UpdateSessionInstanceId(newInstanceId); } @@ -211,15 +215,187 @@ void SecurityUIExtensionPattern::OnAttachContext(PipelineContext *context) needReNotifyForeground_ = false; NotifyForeground(); } + hasAttachContext_ = true; } void SecurityUIExtensionPattern::UpdateSessionInstanceId(int32_t instanceId) { - auto sessionWrapperImpl = AceType::DynamicCast(sessionWrapper_); - if (!sessionWrapperImpl) { + CHECK_NULL_VOID(sessionWrapper_); + sessionWrapper_->UpdateInstanceId(instanceId); +} + +void SecurityUIExtensionPattern::Initialize() +{ + if (sessionWrapper_ != nullptr) { + return; + } + sessionWrapper_ = SessionWrapperFactory::CreateSessionWrapper( + sessionType_, AceType::WeakClaim(this), instanceId_, isTransferringCaller_); + accessibilitySessionAdapter_ = + AceType::MakeRefPtr(sessionWrapper_); +} + + +void SecurityUIExtensionPattern::RegisterPipelineEvent( + const RefPtr& pipeline) +{ + CHECK_NULL_VOID(pipeline); + auto host = GetHost(); + CHECK_NULL_VOID(host); + auto eventHub = host->GetOrCreateEventHub(); + CHECK_NULL_VOID(eventHub); + OnAreaChangedFunc onAreaChangedFunc = [weak = WeakClaim(this)]( + const RectF& oldRect, + const OffsetF& oldOrigin, + const RectF& rect, + const OffsetF& origin) { + auto pattern = weak.Upgrade(); + CHECK_NULL_VOID(pattern); + pattern->DispatchDisplayArea(); + }; + eventHub->AddInnerOnAreaChangedCallback(host->GetId(), std::move(onAreaChangedFunc)); + pipeline->AddOnAreaChangeNode(host->GetId()); + surfacePositionCallBackId_ = pipeline->RegisterSurfacePositionChangedCallback( + [weak = WeakClaim(this)](int32_t, int32_t) { + auto pattern = weak.Upgrade(); + if (pattern) { + pattern->TransferAccessibilityRectInfo(); + pattern->DispatchDisplayArea(true); + } + }); + auto frontend = pipeline->GetFrontend(); + CHECK_NULL_VOID(frontend); + auto accessibilityManager = frontend->GetAccessibilityManager(); + CHECK_NULL_VOID(accessibilityManager); + accessibilityManager->AddFrameNodeToUecStatusVec(host); + host->RegisterNodeChangeListener(); + accessibilitySAObserverCallback_ = std::make_shared( + WeakClaim(this), host->GetAccessibilityId()); +#ifndef ACE_UNITTEST + auto accessibilityManager = pipeline->GetAccessibilityManager(); + CHECK_NULL_VOID(accessibilityManager); + accessibilityManager->RegisterAccessibilitySAObserverCallback(host->GetAccessibilityId(), + accessibilitySAObserverCallback_); +#endif + PLATFORM_LOGI("RegisterPipelineEvent"); +} + +void SecurityUIExtensionPattern::UnRegisterPipelineEvent( + const RefPtr& pipeline, FrameNode* frameNode) +{ + CHECK_NULL_VOID(pipeline); + CHECK_NULL_VOID(frameNode); + auto id = frameNode->GetId(); + pipeline->RemoveOnAreaChangeNode(id); + pipeline->UnregisterSurfacePositionChangedCallback(surfacePositionCallBackId_); + frameNode->UnregisterNodeChangeListener(); +#ifndef ACE_UNITTEST + auto accessibilityManager = pipeline->GetAccessibilityManager(); + CHECK_NULL_VOID(accessibilityManager); + accessibilityManager->DeregisterAccessibilitySAObserverCallback(frameNode->GetAccessibilityId()); +#endif + PLATFORM_LOGI("UnRegisterPipelineEvent"); +} + +void SecurityUIExtensionPattern::RegisterEvent(int32_t instanceId) +{ + RegisterUIExtensionManagerEvent(instanceId); + RegisterPipelineEvent(instanceId); + hasDetachContext_ = false; +} + +void SecurityUIExtensionPattern::UnRegisterEvent(int32_t instanceId) +{ + UnRegisterUIExtensionManagerEvent(instanceId); + UnRegisterPipelineEvent(instanceId); + hasDetachContext_ = true; +} + +void SecurityUIExtensionPattern::RegisterPipelineEvent(int32_t instanceId) +{ + ContainerScope scope(instanceId); + auto host = GetHost(); + CHECK_NULL_VOID(host); + auto pipeline = PipelineContext::GetContextByContainerId(instanceId); + CHECK_NULL_VOID(pipeline); + RegisterPipelineEvent(pipeline); +} + +void SecurityUIExtensionPattern::RegisterUIExtensionManagerEvent(int32_t instanceId) +{ + auto host = GetHost(); + CHECK_NULL_VOID(host); + auto pipeline = PipelineContext::GetContextByContainerId(instanceId); + CHECK_NULL_VOID(pipeline); + auto uiExtensionManager = pipeline->GetUIExtensionManager(); + CHECK_NULL_VOID(uiExtensionManager); + // 1. Add alive uec in uiExtensionManager + uiExtensionManager->AddAliveUIExtension(host->GetId(), WeakClaim(this)); + + // 2. Add focus uec in uiExtensionManager + auto focusHub = host->GetFocusHub(); + CHECK_NULL_VOID(focusHub); + bool isFocusd = focusHub && focusHub->IsCurrentFocus(); + if (isFocusd) { + uiExtensionManager->RegisterUIExtensionInFocus(WeakClaim(this), sessionWrapper_); + } + PLATFORM_LOGI("RegisterUIExtensionManagerEvent"); +} + +void SecurityUIExtensionPattern::OnDetachContext(PipelineContext *context) +{ + CHECK_NULL_VOID(context); + auto instanceId = context->GetInstanceId(); + if (instanceId != instanceId_) { + PLATFORM_LOGI("InstanceId(%{public}d) is inconsistent with the exist Id(%{public}d),", + instanceId, instanceId_); return; } - sessionWrapperImpl->UpdateInstanceId(instanceId); + + bool isMoving = IsMoving(); + PLATFORM_LOGI("OnDetachContext instanceId: %{public}d, isMoving: %{public}d," + " isOnDetachContext: %{public}d.", instanceId, isMoving, hasDetachContext_); + if (!isMoving && !hasDetachContext_) { + UnRegisterEvent(instanceId); + } +} + +void SecurityUIExtensionPattern::UnRegisterPipelineEvent(int32_t instanceId) +{ + auto host = GetHost(); + CHECK_NULL_VOID(host); + auto pipeline = PipelineContext::GetContextByContainerId(instanceId); + CHECK_NULL_VOID(pipeline); + ContainerScope scope(instanceId); + UnRegisterPipelineEvent(pipeline, AceType::RawPtr(host)); +} + +void SecurityUIExtensionPattern::UnRegisterUIExtensionManagerEvent(int32_t instanceId) +{ + auto host = GetHost(); + CHECK_NULL_VOID(host); + auto pipeline = PipelineContext::GetContextByContainerId(instanceId); + CHECK_NULL_VOID(pipeline); + auto uiExtensionManager = pipeline->GetUIExtensionManager(); + CHECK_NULL_VOID(uiExtensionManager); + // 1. Delete alive uec in uiExtensionManager + uiExtensionManager->RemoveDestroyedUIExtension(GetNodeId()); + + // 2. Delete focus uec in uiExtensionManager + auto focusHub = host->GetFocusHub(); + CHECK_NULL_VOID(focusHub); + bool isFocusd = focusHub && focusHub->IsCurrentFocus(); + if (isFocusd) { + uiExtensionManager->RegisterUIExtensionInFocus(nullptr, nullptr); + } + PLATFORM_LOGI("UnRegisterUIExtensionManagerEvent"); +} + +bool SecurityUIExtensionPattern::IsMoving() +{ + auto host = GetHost(); + CHECK_NULL_RETURN(host, false); + return host->IsMoving(); } void SecurityUIExtensionPattern::UpdateWant(const AAFwk::Want& want) @@ -236,7 +412,7 @@ void SecurityUIExtensionPattern::UpdateWant(const AAFwk::Want& want) if (sessionWrapper_->IsSessionValid()) { auto sessionWant = sessionWrapper_->GetWant(); if (sessionWant == nullptr) { - PLATFORM_LOGW("The sessionWrapper want is nulllptr."); + PLATFORM_LOGW("The sessionWrapper want is nullptr."); return; } if (sessionWant->IsEquals(want)) { @@ -480,40 +656,14 @@ private: void SecurityUIExtensionPattern::OnAttachToFrameNode() { ContainerScope scope(instanceId_); + if (context->GetFrontendType() == FrontendType::ARK_TS) { + Initialize(); + } auto host = GetHost(); CHECK_NULL_VOID(host); auto pipeline = host->GetContextRefPtr(); CHECK_NULL_VOID(pipeline); - auto eventHub = host->GetOrCreateEventHub(); - CHECK_NULL_VOID(eventHub); - OnAreaChangedFunc onAreaChangedFunc = [weak = WeakClaim(this)]( - const RectF& oldRect, - const OffsetF& oldOrigin, - const RectF& rect, - const OffsetF& origin) { - auto pattern = weak.Upgrade(); - CHECK_NULL_VOID(pattern); - pattern->DispatchDisplayArea(); - }; - eventHub->AddInnerOnAreaChangedCallback(host->GetId(), std::move(onAreaChangedFunc)); - pipeline->AddOnAreaChangeNode(host->GetId()); - callbackId_ = pipeline->RegisterSurfacePositionChangedCallback( - [weak = WeakClaim(this)](int32_t, int32_t) { - auto pattern = weak.Upgrade(); - if (pattern) { - pattern->TransferAccessibilityRectInfo(); - pattern->DispatchDisplayArea(true); - } - }); - host->RegisterNodeChangeListener(); - accessibilitySAObserverCallback_ = std::make_shared( - WeakClaim(this), host->GetAccessibilityId()); -#ifndef ACE_UNITTEST - auto accessibilityManager = pipeline->GetAccessibilityManager(); - CHECK_NULL_VOID(accessibilityManager); - accessibilityManager->RegisterAccessibilitySAObserverCallback(host->GetAccessibilityId(), - accessibilitySAObserverCallback_); -#endif + RegisterPipelineEvent(pipeline); PLATFORM_LOGI("OnAttachToFrameNode"); } @@ -523,14 +673,7 @@ void SecurityUIExtensionPattern::OnDetachFromFrameNode(FrameNode* frameNode) ContainerScope scope(instanceId_); auto pipeline = frameNode->GetContextRefPtr(); CHECK_NULL_VOID(pipeline); - pipeline->RemoveWindowStateChangedCallback(id); - pipeline->UnregisterSurfacePositionChangedCallback(callbackId_); - frameNode->UnregisterNodeChangeListener(); -#ifndef ACE_UNITTEST - auto accessibilityManager = pipeline->GetAccessibilityManager(); - CHECK_NULL_VOID(accessibilityManager); - accessibilityManager->DeregisterAccessibilitySAObserverCallback(frameNode->GetAccessibilityId()); -#endif + UnRegisterPipelineEvent(pipeline, frameNode); } void SecurityUIExtensionPattern::OnModifyDone() diff --git a/frameworks/core/components_ng/pattern/ui_extension/security_ui_extension_component/security_ui_extension_pattern.h b/frameworks/core/components_ng/pattern/ui_extension/security_ui_extension_component/security_ui_extension_pattern.h index ea355f1dc4a..55c7268c969 100644 --- a/frameworks/core/components_ng/pattern/ui_extension/security_ui_extension_component/security_ui_extension_pattern.h +++ b/frameworks/core/components_ng/pattern/ui_extension/security_ui_extension_component/security_ui_extension_pattern.h @@ -89,6 +89,8 @@ public: void OnWindowHide() override; void OnAttachToFrameNode() override; void OnDetachFromFrameNode(FrameNode* frameNode) override; + void OnAttachContext(PipelineContext* context) override; + void OnDetachContext(PipelineContext *context) override; void OnModifyDone() override; void OnVisibleChangeInner(bool visible); void OnMountToParentDone() override; @@ -141,6 +143,25 @@ public: void TransferAccessibilityRectInfo(bool isForce = false); void OnFrameNodeChanged(FrameNodeChangeInfoFlag flag) override; void UpdateWMSUIExtProperty(UIContentBusinessCode code, const AAFwk::Want& data, RSSubsystemId subSystemId); + bool GetIsTransferringCaller() + { + return isTransferringCaller_; + } + + void SetIsTransferringCaller(bool isTransferringCaller) + { + isTransferringCaller_ = isTransferringCaller; + } + + bool GetIsWindowModeFollowHost() + { + return isWindowModeFollowHost_; + } + + void SetIsWindowModeFollowHost(bool isWindowModeFollowHost) + { + isWindowModeFollowHost_ = isWindowModeFollowHost; + } protected: void UpdateSessionInstanceId(int32_t instanceId); @@ -159,6 +180,18 @@ protected: AccessibilityParentRectInfo GetAccessibilityRectInfo() const; void ReDispatchWantParams(); + bool IsMoving(); + void UnRegisterEvent(int32_t instanceId); + void UnRegisterPipelineEvent(int32_t instanceId); + void UnRegisterPipelineEvent( + const RefPtr& pipeline, FrameNode* frameNode); + void UnRegisterUIExtensionManagerEvent(int32_t instanceId); + void RegisterEvent(int32_t instanceId); + void RegisterPipelineEvent(int32_t instanceId); + void RegisterPipelineEvent(const RefPtr& pipeline); + void RegisterUIExtensionManagerEvent(int32_t instanceId); + void UpdateSessionInstanceId(int32_t instanceId); + enum class AbilityState { NONE = 0, FOREGROUND, @@ -185,9 +218,12 @@ protected: bool hasAttachContext_ = false; bool needReNotifyForeground_ = false; - int32_t callbackId_ = 0; + bool isTransferringCaller_ = false; + bool isWindowModeFollowHost_ = false; + + int32_t surfacePositionCallBackId_ = 0; RectF displayArea_; - SessionType sessionType_ = SessionType::UI_EXTENSION_ABILITY; + SessionType sessionType_ = SessionType::SECURITY_UI_EXTENSION_ABILITY; int32_t uiExtensionId_ = 0; std::string uiExtensionType_; std::shared_ptr accessibilityChildTreeCallback_ = nullptr; diff --git a/frameworks/core/components_ng/pattern/ui_extension/session_wrapper.h b/frameworks/core/components_ng/pattern/ui_extension/session_wrapper.h index d0948547a31..798b34fac3f 100644 --- a/frameworks/core/components_ng/pattern/ui_extension/session_wrapper.h +++ b/frameworks/core/components_ng/pattern/ui_extension/session_wrapper.h @@ -160,6 +160,7 @@ public: virtual void NotifyHostWindowMode(int32_t mode) {} virtual void ReDispatchWantParams() {} + virtual void UpdateInstanceId(int32_t instanceId) {} }; } // namespace OHOS::Ace::NG #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERN_UI_EXTENSION_SESSION_WRAPPER_H diff --git a/frameworks/core/components_ng/pattern/ui_extension/ui_extension_component/session_wrapper_impl.h b/frameworks/core/components_ng/pattern/ui_extension/ui_extension_component/session_wrapper_impl.h index c5c8ef2072a..1bcdcec730d 100644 --- a/frameworks/core/components_ng/pattern/ui_extension/ui_extension_component/session_wrapper_impl.h +++ b/frameworks/core/components_ng/pattern/ui_extension/ui_extension_component/session_wrapper_impl.h @@ -42,7 +42,7 @@ public: bool IsSessionValid() override; int32_t GetSessionId() const override; const std::shared_ptr GetWant() override; - void UpdateInstanceId(int32_t instanceId); + void UpdateInstanceId(int32_t instanceId) override; // Synchronous interface for event notify bool NotifyFocusEventSync(bool isFocus) override; diff --git a/test/unittest/core/pattern/ui_extension/mock/mock_security_session_wrapper_impl.cpp b/test/unittest/core/pattern/ui_extension/mock/mock_security_session_wrapper_impl.cpp index 7d07db1ae6c..1eb21e1da2b 100644 --- a/test/unittest/core/pattern/ui_extension/mock/mock_security_session_wrapper_impl.cpp +++ b/test/unittest/core/pattern/ui_extension/mock/mock_security_session_wrapper_impl.cpp @@ -292,4 +292,9 @@ void SecuritySessionWrapperImpl::ReDispatchWantParams() {} void SecuritySessionWrapperImpl::DispatchExtensionDataToHostWindow(uint32_t customId, const AAFwk::Want& data) { } + +void SecuritySessionWrapperImpl::UpdateInstanceId(int32_t instanceId) +{ + instanceId_ = instanceId; +} } // namespace OHOS::Ace::NG diff --git a/test/unittest/core/pattern/ui_extension/mock/mock_session_wrapper_impl.cpp b/test/unittest/core/pattern/ui_extension/mock/mock_session_wrapper_impl.cpp index be2eab3e291..eccd8e16baa 100644 --- a/test/unittest/core/pattern/ui_extension/mock/mock_session_wrapper_impl.cpp +++ b/test/unittest/core/pattern/ui_extension/mock/mock_session_wrapper_impl.cpp @@ -301,4 +301,9 @@ void SessionWrapperImpl::ReDispatchWantParams() {} void SessionWrapperImpl::DispatchExtensionDataToHostWindow(uint32_t customId, const AAFwk::Want& data) { } + +void SessionWrapperImpl::UpdateInstanceId(int32_t instanceId) +{ + instanceId_ = instanceId; +} } // namespace OHOS::Ace::NG -- Gitee