From d577a501038a4c352c42313d34333cb5e69f59c5 Mon Sep 17 00:00:00 2001 From: cuijiawei2022 Date: Sat, 21 Jun 2025 19:20:21 +0800 Subject: [PATCH] UEC visible Signed-off-by: cuijiawei2022 --- .../security_ui_extension_pattern.cpp | 4 +- .../security_ui_extension_pattern.h | 2 +- .../ui_extension_pattern.cpp | 4 +- .../ui_extension_pattern.h | 2 +- .../security_ui_extension_component_test.cpp | 18 +++--- .../ui_extension_component_test.cpp | 8 +-- .../ui_extension_component_testtwo.cpp | 55 +++++++++++++++++++ 7 files changed, 74 insertions(+), 19 deletions(-) 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 0a127feda40..be6bbaf8ae0 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 @@ -708,7 +708,7 @@ bool SecurityUIExtensionPattern::GetDensityDpi() return densityDpi_; } -void SecurityUIExtensionPattern::OnVisibleChange(bool visible) +void SecurityUIExtensionPattern::OnVisibleChangeInner(bool visible) { PLATFORM_LOGI("The component is changing from '%{public}s' to '%{public}s'.", isVisible_ ? "visible" : "invisible", visible ? "visible" : "invisible"); @@ -743,7 +743,7 @@ void SecurityUIExtensionPattern::RegisterVisibleAreaChange() auto callback = [weak = WeakClaim(this)](bool visible, double ratio) { auto uiExtension = weak.Upgrade(); CHECK_NULL_VOID(uiExtension); - uiExtension->OnVisibleChange(visible); + uiExtension->OnVisibleChangeInner(visible); }; auto host = GetHost(); CHECK_NULL_VOID(host); 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 936adc7e585..903d85faf35 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 @@ -88,7 +88,7 @@ public: void OnAttachToFrameNode() override; void OnDetachFromFrameNode(FrameNode* frameNode) override; void OnModifyDone() override; - void OnVisibleChange(bool visible) override; + void OnVisibleChangeInner(bool visible); void OnMountToParentDone() override; void OnLanguageConfigurationUpdate() override; void OnColorConfigurationUpdate() override; diff --git a/frameworks/core/components_ng/pattern/ui_extension/ui_extension_component/ui_extension_pattern.cpp b/frameworks/core/components_ng/pattern/ui_extension/ui_extension_component/ui_extension_pattern.cpp index e848b2afa0c..99be754adaf 100644 --- a/frameworks/core/components_ng/pattern/ui_extension/ui_extension_component/ui_extension_pattern.cpp +++ b/frameworks/core/components_ng/pattern/ui_extension/ui_extension_component/ui_extension_pattern.cpp @@ -1560,7 +1560,7 @@ bool UIExtensionPattern::GetDensityDpi() return densityDpi_; } -void UIExtensionPattern::OnVisibleChange(bool visible) +void UIExtensionPattern::OnVisibleChangeInner(bool visible) { UIEXT_LOGI("The component is changing from '%{public}s' to '%{public}s'.", isVisible_ ? "visible" : "invisible", visible ? "visible" : "invisible"); @@ -1732,7 +1732,7 @@ void UIExtensionPattern::HandleVisibleAreaChange(bool visible, double ratio) bool curVisible = !NearEqual(ratio, SHOW_START); if (curVisible_ != curVisible) { curVisible_ = curVisible; - OnVisibleChange(curVisible_); + OnVisibleChangeInner(curVisible_); } if (needCheckDisplayArea) { diff --git a/frameworks/core/components_ng/pattern/ui_extension/ui_extension_component/ui_extension_pattern.h b/frameworks/core/components_ng/pattern/ui_extension/ui_extension_component/ui_extension_pattern.h index 8e11e92d41e..3ff87027e0e 100644 --- a/frameworks/core/components_ng/pattern/ui_extension/ui_extension_component/ui_extension_pattern.h +++ b/frameworks/core/components_ng/pattern/ui_extension/ui_extension_component/ui_extension_pattern.h @@ -115,7 +115,7 @@ public: void OnWindowShow() override; void OnWindowHide() override; void OnWindowSizeChanged(int32_t width, int32_t height, WindowSizeChangeReason type) override; - void OnVisibleChange(bool visible) override; + void OnVisibleChangeInner(bool visible); void OnMountToParentDone() override; void AfterMountToParent() override; void OnSyncGeometryNode(const DirtySwapConfig& config) override; diff --git a/test/unittest/core/pattern/ui_extension/security_ui_extension_component_test.cpp b/test/unittest/core/pattern/ui_extension/security_ui_extension_component_test.cpp index 1bdcc11f5af..a7692df71f1 100644 --- a/test/unittest/core/pattern/ui_extension/security_ui_extension_component_test.cpp +++ b/test/unittest/core/pattern/ui_extension/security_ui_extension_component_test.cpp @@ -897,7 +897,7 @@ HWTEST_F(SecurityUIExtensionComponentTestNg, SecurityUIExtensionOnWindowTest, Te /** * @tc.name: SecurityUIExtensionVisibleTest - * @tc.desc: Test pattern onVisibleChange function + * @tc.desc: Test pattern OnVisibleChangeInner function * @tc.type: FUNC */ HWTEST_F(SecurityUIExtensionComponentTestNg, SecurityUIExtensionVisibleTest, TestSize.Level1) @@ -909,17 +909,17 @@ HWTEST_F(SecurityUIExtensionComponentTestNg, SecurityUIExtensionVisibleTest, Tes auto pattern = CreateSecurityUEC(); /** - * @tc.steps: step2. OnVisibleChange false, state change to BACKGROUND + * @tc.steps: step2. OnVisibleChangeInner false, state change to BACKGROUND */ pattern->state_ = SecurityUIExtensionPattern::AbilityState::FOREGROUND; - pattern->OnVisibleChange(false); + pattern->OnVisibleChangeInner(false); EXPECT_FALSE(pattern->isVisible_); ASSERT_EQ(pattern->state_, SecurityUIExtensionPattern::AbilityState::BACKGROUND); /** - * @tc.steps: step3. OnVisibleChange true, state change to FOREGROUND + * @tc.steps: step3. OnVisibleChangeInner true, state change to FOREGROUND */ - pattern->OnVisibleChange(true); + pattern->OnVisibleChangeInner(true); EXPECT_TRUE(pattern->isVisible_); ASSERT_EQ(pattern->state_, SecurityUIExtensionPattern::AbilityState::FOREGROUND); #endif @@ -1689,14 +1689,14 @@ HWTEST_F(SecurityUIExtensionComponentTestNg, SecurityUIExtensionComponentLifeCyc pattern->OnWindowShow(); EXPECT_EQ(pattern->state_, SecurityUIExtensionPattern::AbilityState::FOREGROUND); /** - * @tc.steps: step6. test Life Cycle OnVisibleChange false + * @tc.steps: step6. test Life Cycle OnVisibleChangeInner false */ - pattern->OnVisibleChange(false); + pattern->OnVisibleChangeInner(false); EXPECT_EQ(pattern->state_, SecurityUIExtensionPattern::AbilityState::BACKGROUND); /** - * @tc.steps: step7. test Life Cycle OnVisibleChange true + * @tc.steps: step7. test Life Cycle OnVisibleChangeInner true */ - pattern->OnVisibleChange(true); + pattern->OnVisibleChangeInner(true); EXPECT_EQ(pattern->state_, SecurityUIExtensionPattern::AbilityState::FOREGROUND); /** * @tc.steps: step8. test Life Cycle OnTerminated diff --git a/test/unittest/core/pattern/ui_extension/ui_extension_component/ui_extension_component_test.cpp b/test/unittest/core/pattern/ui_extension/ui_extension_component/ui_extension_component_test.cpp index 1d03d4d3912..8d742192bb4 100644 --- a/test/unittest/core/pattern/ui_extension/ui_extension_component/ui_extension_component_test.cpp +++ b/test/unittest/core/pattern/ui_extension/ui_extension_component/ui_extension_component_test.cpp @@ -385,8 +385,8 @@ HWTEST_F(UIExtensionComponentTestNg, UIExtensionPatternValidSessionTest, TestSiz ASSERT_NE(pattern, nullptr); pattern->AttachToFrameNode(uiExtNode); - pattern->OnVisibleChange(true); - pattern->OnVisibleChange(false); + pattern->OnVisibleChangeInner(true); + pattern->OnVisibleChangeInner(false); pattern->isVisible_ = true; pattern->SetDensityDpi(true); EXPECT_EQ(pattern->GetDensityDpi(), true); @@ -425,8 +425,8 @@ HWTEST_F(UIExtensionComponentTestNg, UIExtensionPatternInValidSessionTest, TestS ASSERT_NE(pattern, nullptr); pattern->AttachToFrameNode(uiExtNode); InValidSessionWrapper(pattern); - pattern->OnVisibleChange(true); - pattern->OnVisibleChange(false); + pattern->OnVisibleChangeInner(true); + pattern->OnVisibleChangeInner(false); pattern->isVisible_ = true; pattern->SetDensityDpi(true); EXPECT_EQ(pattern->GetDensityDpi(), true); diff --git a/test/unittest/core/pattern/ui_extension/ui_extension_component/ui_extension_component_testtwo.cpp b/test/unittest/core/pattern/ui_extension/ui_extension_component/ui_extension_component_testtwo.cpp index e057d0a7c18..bea1169242a 100644 --- a/test/unittest/core/pattern/ui_extension/ui_extension_component/ui_extension_component_testtwo.cpp +++ b/test/unittest/core/pattern/ui_extension/ui_extension_component/ui_extension_component_testtwo.cpp @@ -1108,6 +1108,61 @@ HWTEST_F(UIExtensionComponentTestTwoNg, UIExtensionComponentTabFocus, TestSize.L EXPECT_EQ(pattern->GetForceProcessOnKeyEventInternal(), false); #endif } + +/** + * @tc.name: UIExtensionComponentTestTwoNg + * @tc.desc: Test the method of pattern HandleTouch + * @tc.type: FUNC + */ +HWTEST_F(UIExtensionComponentTestTwoNg, UIExtensionComponentHandleTouch, TestSize.Level1) +{ + /** + * @tc.steps: step1. construct UIExtensionNode + */ + auto uiextensionNode = UIExtensionNode::GetOrCreateUIExtensionNode(V2::UI_EXTENSION_COMPONENT_ETS_TAG, 1, + []() { return AceType::MakeRefPtr(); }); + ASSERT_NE(uiextensionNode, nullptr); + auto pattern = uiextensionNode->GetPattern(); + ASSERT_NE(pattern, nullptr); + /** + * @tc.steps: step2. attach PipelineContext and FocusHub + */ + RefPtr eventHub = AceType::MakeRefPtr(); + eventHub->AttachHost(uiextensionNode); + auto focusHub = AceType::MakeRefPtr(AceType::WeakClaim(AceType::RawPtr(eventHub))); + uiextensionNode->focusHub_ = focusHub; + auto context = PipelineContext::GetCurrentContext(); + ASSERT_NE(context, nullptr); + context->SetEventManager(AceType::MakeRefPtr()); + EXPECT_NE(context->GetEventManager(), nullptr); + uiextensionNode->context_ = AceType::RawPtr(context); + /** + * @tc.steps: step3. Test HandleTouchEvent + */ + TouchEventInfo touchEventInfo("onTouch"); + touchEventInfo.SetSourceDevice(SourceType::MOUSE); + pattern->HandleTouchEvent(touchEventInfo); + touchEventInfo.SetSourceDevice(SourceType::TOUCH); + context->onFocus_ = false; + pattern->HandleTouchEvent(touchEventInfo); + EXPECT_EQ(pattern->canFocusSendToUIExtension_, true); + context->onFocus_ = true; + focusHub->currentFocus_ = true; + pattern->HandleTouchEvent(touchEventInfo); + EXPECT_EQ(pattern->canFocusSendToUIExtension_, true); + focusHub->currentFocus_ = false; + pattern->HandleTouchEvent(touchEventInfo); + EXPECT_EQ(pattern->canFocusSendToUIExtension_, true); + touchEventInfo.SetPointerEvent(nullptr); + pattern->HandleTouchEvent(touchEventInfo); + std::shared_ptr pointerEvent = std::make_shared(1); + pointerEvent->SetPointerAction(MMI::PointerEvent::POINTER_ACTION_UP); + touchEventInfo.SetPointerEvent(pointerEvent); + pattern->needReSendFocusToUIExtension_ = true; + pattern->HandleTouchEvent(touchEventInfo); + EXPECT_EQ(pattern->needReSendFocusToUIExtension_, false); +} + /** * @tc.name: UIExtensionComponentTestTwoNg * @tc.desc: Test the method of pattern HandleOcclusionScene -- Gitee