From 732db3672561e07a2485c0408ea025e6301979bf Mon Sep 17 00:00:00 2001 From: qingjy Date: Tue, 22 Jul 2025 16:29:25 +0800 Subject: [PATCH 1/5] gesture DFX: add stopProgation info to touchEventActuator Signed-off-by: qingjy --- frameworks/core/common/event_manager.cpp | 10 +++++++ .../core/components_ng/event/touch_event.cpp | 6 ++++- .../core/components_ng/event/touch_event.h | 9 +++++++ .../core/event/touch_event_test_ng.cpp | 26 +++++++++++++++++++ 4 files changed, 50 insertions(+), 1 deletion(-) diff --git a/frameworks/core/common/event_manager.cpp b/frameworks/core/common/event_manager.cpp index d0b9919bcfc..385951d4a3a 100644 --- a/frameworks/core/common/event_manager.cpp +++ b/frameworks/core/common/event_manager.cpp @@ -2039,6 +2039,16 @@ void EventManager::AddGestureSnapshot( info->nodeId = frameNode->GetId(); } info->depth = depth; + + if (info->type == "TouchEventActuator") { + auto touchEventActuator = AceType::DynamicCast(target); + if (touchEventActuator) { + std::stringstream oss; + oss << "StopProgation: " << std::to_string(touchEventActuator->GetStopPass()); + info->customInfo = oss.str(); + } + } + auto& eventTree = GetEventTreeRecord(type); eventTree.AddGestureSnapshot(finger, std::move(info)); diff --git a/frameworks/core/components_ng/event/touch_event.cpp b/frameworks/core/components_ng/event/touch_event.cpp index d01820bec22..864a2acd1d0 100644 --- a/frameworks/core/components_ng/event/touch_event.cpp +++ b/frameworks/core/components_ng/event/touch_event.cpp @@ -36,11 +36,15 @@ void TouchEventActuator::OnFlushTouchEventsEnd() bool TouchEventActuator::HandleEvent(const TouchEvent& point) { + bool stopPass = true; // if current node is forbidden by monopolize, upper nodes should not response either if (!ShouldResponse()) { + SetStopPass(stopPass); return false; } - return TriggerTouchCallBack(point); + stopPass = TriggerTouchCallBack(point); + SetStopPass(!stopPass); + return stopPass; } bool TouchEventActuator::TriggerTouchCallBack(const TouchEvent& point) diff --git a/frameworks/core/components_ng/event/touch_event.h b/frameworks/core/components_ng/event/touch_event.h index 3fb8b6b6c9a..3a8c709fbcd 100644 --- a/frameworks/core/components_ng/event/touch_event.h +++ b/frameworks/core/components_ng/event/touch_event.h @@ -154,6 +154,14 @@ public: commonTouchEventCallback_ = touchEventActuator->commonTouchEventCallback_; } + void SetStopPass(bool stopPass) { + stopPass_ = stopPass; + } + + bool GetStopPass() { + return stopPass_; + } + private: bool TriggerTouchCallBack(const TouchEvent& changedPoint); bool ShouldResponse() override; @@ -172,6 +180,7 @@ private: // if isFlushTouchEventsEnd_ is true, web_pattern start to send touch event list to chromium bool isFlushTouchEventsEnd_ = false; std::map firstInputTimeWithId_; + bool stopPass_ = false; }; } // namespace OHOS::Ace::NG diff --git a/test/unittest/core/event/touch_event_test_ng.cpp b/test/unittest/core/event/touch_event_test_ng.cpp index 11c9395c242..20c82760a79 100644 --- a/test/unittest/core/event/touch_event_test_ng.cpp +++ b/test/unittest/core/event/touch_event_test_ng.cpp @@ -605,6 +605,32 @@ HWTEST_F(TouchEventTestNg, TouchEventTest006, TestSize.Level1) EXPECT_TRUE(touchEventActuator->TriggerTouchCallBack(touchEvent)); } +/** + * @tc.name: StopPass001 + * @tc.desc: test functions GetStopPass SetStopPass. + * @tc.type: FUNC + */ +HWTEST_F(TouchEventTestNg, StopPass001, TestSize.Level1) +{ + /** + * @tc.steps: step1. Create TouchEventActuator. + */ + auto touchEventActuator = AceType::MakeRefPtr(); + + /** + * @tc.steps: step2. call GetStopPass. + * @tc.expected: Execute function return value is false. + */ + EXPECT_FALSE(touchEventActuator->GetStopPass()); + + /** + * @tc.steps: step3. call SetStopPass(true). + * @tc.expected: Execute function return value is true. + */ + touchEventActuator->SetStopPass(true); + EXPECT_TRUE(touchEventActuator->GetStopPass()); +} + /** * @tc.name: TouchEventOriginalIdTest001 * @tc.desc: TriggerTouchCallBack. -- Gitee From 169d355ac3f3b1ad226a9b8a409ff2d4e75c2e83 Mon Sep 17 00:00:00 2001 From: qingjy Date: Thu, 24 Jul 2025 10:54:19 +0800 Subject: [PATCH 2/5] polish variant name Signed-off-by: qingjy --- frameworks/core/common/event_manager.cpp | 4 +--- frameworks/core/components_ng/event/touch_event.cpp | 10 +++++----- frameworks/core/components_ng/event/touch_event.h | 10 +++++----- test/unittest/core/event/touch_event_test_ng.cpp | 12 ++++++------ 4 files changed, 17 insertions(+), 19 deletions(-) diff --git a/frameworks/core/common/event_manager.cpp b/frameworks/core/common/event_manager.cpp index 385951d4a3a..ffe2f08582c 100644 --- a/frameworks/core/common/event_manager.cpp +++ b/frameworks/core/common/event_manager.cpp @@ -2039,16 +2039,14 @@ void EventManager::AddGestureSnapshot( info->nodeId = frameNode->GetId(); } info->depth = depth; - if (info->type == "TouchEventActuator") { auto touchEventActuator = AceType::DynamicCast(target); if (touchEventActuator) { std::stringstream oss; - oss << "StopProgation: " << std::to_string(touchEventActuator->GetStopPass()); + oss << "NeedProgation: " << std::to_string(touchEventActuator->IsNeedPropagation()); info->customInfo = oss.str(); } } - auto& eventTree = GetEventTreeRecord(type); eventTree.AddGestureSnapshot(finger, std::move(info)); diff --git a/frameworks/core/components_ng/event/touch_event.cpp b/frameworks/core/components_ng/event/touch_event.cpp index 864a2acd1d0..35fd1b596be 100644 --- a/frameworks/core/components_ng/event/touch_event.cpp +++ b/frameworks/core/components_ng/event/touch_event.cpp @@ -36,15 +36,15 @@ void TouchEventActuator::OnFlushTouchEventsEnd() bool TouchEventActuator::HandleEvent(const TouchEvent& point) { - bool stopPass = true; + bool isNeedPropagation = false; // if current node is forbidden by monopolize, upper nodes should not response either if (!ShouldResponse()) { - SetStopPass(stopPass); + SetNeedPropagation(isNeedPropagation); return false; } - stopPass = TriggerTouchCallBack(point); - SetStopPass(!stopPass); - return stopPass; + isNeedPropagation = TriggerTouchCallBack(point); + SetNeedPropagation(isNeedPropagation); + return isNeedPropagation; } bool TouchEventActuator::TriggerTouchCallBack(const TouchEvent& point) diff --git a/frameworks/core/components_ng/event/touch_event.h b/frameworks/core/components_ng/event/touch_event.h index 3a8c709fbcd..d8d6233ac7f 100644 --- a/frameworks/core/components_ng/event/touch_event.h +++ b/frameworks/core/components_ng/event/touch_event.h @@ -154,12 +154,12 @@ public: commonTouchEventCallback_ = touchEventActuator->commonTouchEventCallback_; } - void SetStopPass(bool stopPass) { - stopPass_ = stopPass; + void SetNeedPropagation(bool isNeedPropagation) { + isNeedPropagation_ = isNeedPropagation; } - bool GetStopPass() { - return stopPass_; + bool IsNeedPropagation() { + return isNeedPropagation_; } private: @@ -180,7 +180,7 @@ private: // if isFlushTouchEventsEnd_ is true, web_pattern start to send touch event list to chromium bool isFlushTouchEventsEnd_ = false; std::map firstInputTimeWithId_; - bool stopPass_ = false; + bool isNeedPropagation_ = false; }; } // namespace OHOS::Ace::NG diff --git a/test/unittest/core/event/touch_event_test_ng.cpp b/test/unittest/core/event/touch_event_test_ng.cpp index 20c82760a79..c7e7956028e 100644 --- a/test/unittest/core/event/touch_event_test_ng.cpp +++ b/test/unittest/core/event/touch_event_test_ng.cpp @@ -607,7 +607,7 @@ HWTEST_F(TouchEventTestNg, TouchEventTest006, TestSize.Level1) /** * @tc.name: StopPass001 - * @tc.desc: test functions GetStopPass SetStopPass. + * @tc.desc: test functions SetNeedPropagation IsNeedPropagation. * @tc.type: FUNC */ HWTEST_F(TouchEventTestNg, StopPass001, TestSize.Level1) @@ -618,17 +618,17 @@ HWTEST_F(TouchEventTestNg, StopPass001, TestSize.Level1) auto touchEventActuator = AceType::MakeRefPtr(); /** - * @tc.steps: step2. call GetStopPass. + * @tc.steps: step2. call IsNeedPropagation. * @tc.expected: Execute function return value is false. */ - EXPECT_FALSE(touchEventActuator->GetStopPass()); + EXPECT_FALSE(touchEventActuator->IsNeedPropagation()); /** - * @tc.steps: step3. call SetStopPass(true). + * @tc.steps: step3. call SetNeedPropagation(true). * @tc.expected: Execute function return value is true. */ - touchEventActuator->SetStopPass(true); - EXPECT_TRUE(touchEventActuator->GetStopPass()); + touchEventActuator->SetNeedPropagation(true); + EXPECT_TRUE(touchEventActuator->IsNeedPropagation()); } /** -- Gitee From 1d1d116a097074b36f81ad3061e9761cc9da8a46 Mon Sep 17 00:00:00 2001 From: qingjy Date: Sun, 3 Aug 2025 10:11:01 +0800 Subject: [PATCH 3/5] add const Signed-off-by: qingjy --- frameworks/core/components_ng/event/touch_event.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frameworks/core/components_ng/event/touch_event.h b/frameworks/core/components_ng/event/touch_event.h index d8d6233ac7f..e452b776d43 100644 --- a/frameworks/core/components_ng/event/touch_event.h +++ b/frameworks/core/components_ng/event/touch_event.h @@ -158,7 +158,7 @@ public: isNeedPropagation_ = isNeedPropagation; } - bool IsNeedPropagation() { + const bool IsNeedPropagation() { return isNeedPropagation_; } -- Gitee From 39731ec4345903b3cec79d002c5751a0eef57b42 Mon Sep 17 00:00:00 2001 From: qingjy Date: Sun, 3 Aug 2025 10:51:29 +0800 Subject: [PATCH 4/5] no const Signed-off-by: qingjy --- frameworks/core/components_ng/event/touch_event.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frameworks/core/components_ng/event/touch_event.h b/frameworks/core/components_ng/event/touch_event.h index e452b776d43..d8d6233ac7f 100644 --- a/frameworks/core/components_ng/event/touch_event.h +++ b/frameworks/core/components_ng/event/touch_event.h @@ -158,7 +158,7 @@ public: isNeedPropagation_ = isNeedPropagation; } - const bool IsNeedPropagation() { + bool IsNeedPropagation() { return isNeedPropagation_; } -- Gitee From 9737cade2275e197c44e374f93a6c6343feabd7e Mon Sep 17 00:00:00 2001 From: qingjy Date: Tue, 5 Aug 2025 09:07:05 +0800 Subject: [PATCH 5/5] not change it Signed-off-by: qingjy --- frameworks/core/components_ng/event/touch_event.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frameworks/core/components_ng/event/touch_event.h b/frameworks/core/components_ng/event/touch_event.h index d8d6233ac7f..819e2590da0 100644 --- a/frameworks/core/components_ng/event/touch_event.h +++ b/frameworks/core/components_ng/event/touch_event.h @@ -158,7 +158,7 @@ public: isNeedPropagation_ = isNeedPropagation; } - bool IsNeedPropagation() { + bool IsNeedPropagation() const { return isNeedPropagation_; } -- Gitee