diff --git a/frameworks/core/common/event_dump.cpp b/frameworks/core/common/event_dump.cpp index 52b49847c3a78a3915fc176c069ffce78aacc6f9..589068e7916ff05b0a2e531a3b1d03308d763784 100644 --- a/frameworks/core/common/event_dump.cpp +++ b/frameworks/core/common/event_dump.cpp @@ -45,11 +45,14 @@ void FrameNodeSnapshot::Dump(std::list>& dumpLis for (const auto& rect : responseRegionList) { oss << rect.ToString().c_str(); } + oss << ", childTouchTestStrategy: " << static_cast(strategy); #else oss << "responseRegionSize: "; for (const auto& rect : responseRegionList) { oss << rect.GetSize().ToString().c_str(); } + oss << ", childTouchTestStrategy: " << static_cast(strategy) << ", " + << " childTouchResultId: " << id; #endif dumpList.emplace_back(std::make_pair(depth, oss.str())); } @@ -233,6 +236,22 @@ void EventTreeRecord::AddFrameNodeSnapshot(FrameNodeSnapshot&& node) } } +void EventTreeRecord::UpdateFrameNodeSnapshot(int32_t nodeId, const TouchTestStrategy& strategy, const std::string& id) +{ + if (eventTreeList.empty()) { + return; + } + if (eventTreeList.back().hitTestTree.size() < MAX_FRAME_NODE_CNT) { + for (auto& iter : eventTreeList.back().hitTestTree) { + if (iter.nodeId == nodeId) { + iter.strategy = strategy; + iter.id = id; + break; + } + } + } +} + void EventTreeRecord::AddGestureSnapshot(int32_t finger, RefPtr&& gesture) { if (eventTreeList.empty()) { diff --git a/frameworks/core/common/event_dump.h b/frameworks/core/common/event_dump.h index cbb77578f8e4365b1955da7e7c3ed4d65e0790e0..cb511a7d7edb099d061fb2e5c6a33f0aee786661 100644 --- a/frameworks/core/common/event_dump.h +++ b/frameworks/core/common/event_dump.h @@ -41,6 +41,8 @@ struct FrameNodeSnapshot { int32_t hitTestMode = 0; std::vector responseRegionList; bool active = false; + TouchTestStrategy strategy; + std::string id; }; struct TouchPointSnapshot { @@ -93,6 +95,8 @@ struct EventTreeRecord { void AddFrameNodeSnapshot(FrameNodeSnapshot&& node); + void UpdateFrameNodeSnapshot(int32_t nodeId, const TouchTestStrategy& strategy, const std::string& id); + void AddGestureSnapshot(int32_t finger, RefPtr&& gesture); void AddGestureProcedure(uint64_t id, const std::string& procedure, const std::string& extraInfo, diff --git a/frameworks/core/common/event_manager.cpp b/frameworks/core/common/event_manager.cpp index d6ad125447b444eafa371dbeb539f2b3fd37da56..e5bd5e73b54d9e05e1cca558c83afea2c58ecc68 100644 --- a/frameworks/core/common/event_manager.cpp +++ b/frameworks/core/common/event_manager.cpp @@ -946,7 +946,7 @@ void EventManager::LogTouchTestRecognizerStates(int32_t touchEventId) continue; } std::string gestureLog = "{"; - gestureLog += "types: " + gestureSnapshot->type.substr(0, gestureSnapshot->type.find("Recognizer")); + gestureLog += "type: " + gestureSnapshot->type.substr(0, gestureSnapshot->type.find("Recognizer")); gestureLog += ", tag: " + hitFrameNode[gestureSnapshot->nodeId]; #ifndef IS_RELEASE_VERSION auto frameNode = @@ -961,11 +961,11 @@ void EventManager::LogTouchTestRecognizerStates(int32_t touchEventId) auto stateHistorys = gestureSnapshot->stateHistory; for (auto stateHistory : stateHistorys) { if (stateHistory.procedure.find("Down") != std::string::npos) { - gestureLog += ", prcd: Down"; + gestureLog += ", prcd: D"; } else if (stateHistory.procedure.find("Move") != std::string::npos) { - gestureLog += ", prcd: Move"; + gestureLog += ", prcd: M"; } else { - gestureLog += ", prcd: Up"; + gestureLog += ", prcd: U"; } gestureLog += ", state: " + stateHistory.state; if (stateHistory.extraInfo != "") { @@ -2247,8 +2247,8 @@ bool EventManager::TryResampleTouchEvent(std::vector& history, history.assign(historyBegin, events.end()); if (SystemProperties::GetDebugEnabled()) { - TAG_LOGD(AceLogTag::ACE_UIEVENT, SEC_PLD(, - "Touch Interpolate point is %{public}d, %{public}f, %{public}f, %{public}f, %{public}f, %{public}" + TAG_LOGD(AceLogTag::ACE_UIEVENT, "Touch Interpolate" SEC_PLD(, + " point is %{public}d, %{public}f, %{public}f, %{public}f, %{public}f, %{public}" PRIu64), SEC_PARAM(resample.id, resample.x, resample.y, resample.screenX, resample.screenY, static_cast(resample.time.time_since_epoch().count()))); @@ -2287,8 +2287,8 @@ bool EventManager::GetResampleTouchEvent(const std::vector& history, ret = true; } if (SystemProperties::GetDebugEnabled()) { - TAG_LOGD(AceLogTag::ACE_UIEVENT, SEC_PLD(, - "Touch Interpolate point is %{public}d, %{public}f, %{public}f, %{public}f, %{public}f, %{public}" + TAG_LOGD(AceLogTag::ACE_UIEVENT, "Touch Interpolate" SEC_PLD(, + " point is %{public}d, %{public}f, %{public}f, %{public}f, %{public}f, %{public}" PRIu64), SEC_PARAM(newTouchEvent.id, newTouchEvent.x, newTouchEvent.y, newTouchEvent.screenX, newTouchEvent.screenY, static_cast(newTouchEvent.time.time_since_epoch().count()))); diff --git a/frameworks/core/components_ng/base/frame_node.cpp b/frameworks/core/components_ng/base/frame_node.cpp index c41f35ed2c4dda629c2673a5dc2d004cb6426e5f..039685053269e685e09af1426305201fa552d752 100755 --- a/frameworks/core/components_ng/base/frame_node.cpp +++ b/frameworks/core/components_ng/base/frame_node.cpp @@ -3135,6 +3135,7 @@ HitTestResult FrameNode::TouchTest(const PointF& globalPoint, const PointF& pare if (hitResult == HitTestResult::BUBBLING) { consumed = true; } + UpdateFrameNodeSnapshot(touchRes, touchRestrict.touchTestType); } } for (auto iter = frameChildren_.rbegin(); iter != frameChildren_.rend(); ++iter) { @@ -5756,10 +5757,21 @@ void FrameNode::AddFrameNodeSnapshot( .isHit = isHit, .hitTestMode = static_cast(GetHitTestMode()), .responseRegionList = responseRegionList, - .active = isActive_ }; + .active = isActive_, + .strategy = TouchTestStrategy::DEFAULT, + .id = "" }; eventMgr->GetEventTreeRecord(type).AddFrameNodeSnapshot(std::move(info)); } +void FrameNode::UpdateFrameNodeSnapshot(const TouchResult& touchResult, EventTreeType type) +{ + auto context = GetContext(); + CHECK_NULL_VOID(context); + auto eventMgr = context->GetEventManager(); + CHECK_NULL_VOID(eventMgr); + eventMgr->GetEventTreeRecord(type).UpdateFrameNodeSnapshot(nodeId_, touchResult.strategy, touchResult.id); +} + int32_t FrameNode::GetUiExtensionId() { if (pattern_) { diff --git a/frameworks/core/components_ng/base/frame_node.h b/frameworks/core/components_ng/base/frame_node.h index d7bea7b3614dd26bef0d9002ed59160a51b33246..74bc9ff8904d056f384b7d2645d380d5f1d09c76 100755 --- a/frameworks/core/components_ng/base/frame_node.h +++ b/frameworks/core/components_ng/base/frame_node.h @@ -1590,6 +1590,8 @@ private: void AddFrameNodeSnapshot( bool isHit, int32_t parentId, const std::vector& responseRegionList, EventTreeType type); + void UpdateFrameNodeSnapshot(const TouchResult& touchResult, EventTreeType type); + int32_t GetNodeExpectedRate(); void RecordExposureInner(); diff --git a/frameworks/core/components_ng/gestures/recognizers/gesture_recognizer.cpp b/frameworks/core/components_ng/gestures/recognizers/gesture_recognizer.cpp index 8e2ebae0d755f8176959c479deec3a0ae3cb82fe..d1892c645e8c7742b3fa61b81ab56be632f8d744 100644 --- a/frameworks/core/components_ng/gestures/recognizers/gesture_recognizer.cpp +++ b/frameworks/core/components_ng/gestures/recognizers/gesture_recognizer.cpp @@ -592,10 +592,10 @@ bool NGGestureRecognizer::IsInAttachedNode(const TouchEvent& event, bool isRealT for (const auto& item : responseRegion) { responseInfo.append(item.ToString()).append("; "); } - TAG_LOGW(AceLogTag::ACE_GESTURE, SEC_PLD(, - "%{public}s IsInAttachedNode result is negative, node tag = %{public}s, id = %{public}s, point = " - "%{public}s, frameRect = %{public}s, %{public}s"), - SEC_PARAM(AceType::TypeName(this), host->GetTag().c_str(), std::to_string(host->GetId()).c_str(), + TAG_LOGW(AceLogTag::ACE_GESTURE, "%{public}s IsInAttachedNode result is negative" SEC_PLD(, + ", node tag = %{public}s, id = %{public}s, point = " + "%{public}s, frameRect = %{public}s, %{public}s"), AceType::TypeName(this), + SEC_PARAM(host->GetTag().c_str(), std::to_string(host->GetId()).c_str(), localPoint.ToString().c_str(), host->GetFrameRectWithoutSafeArea().ToString().c_str(), responseInfo.c_str())); } diff --git a/frameworks/core/components_ng/gestures/recognizers/long_press_recognizer.cpp b/frameworks/core/components_ng/gestures/recognizers/long_press_recognizer.cpp index 31e72ae2c736b4466a56b624cae7c3078576a7e4..547d4c28f73d11dc9c44c6ce08be6c8a2888e17b 100644 --- a/frameworks/core/components_ng/gestures/recognizers/long_press_recognizer.cpp +++ b/frameworks/core/components_ng/gestures/recognizers/long_press_recognizer.cpp @@ -146,9 +146,8 @@ void LongPressRecognizer::HandleTouchDownEvent(const TouchEvent& event) } #endif int64_t currentTimeStamp = GetSysTimestamp(); - extraInfo_ += "currentTimeStamp: " + std::to_string(currentTimeStamp); - extraInfo_ += ", curDuration: " + std::to_string(curDuration); - extraInfo_ += ", duration_: " + std::to_string(duration_); + extraInfo_ += "curTimeStamp: " + std::to_string(currentTimeStamp); + extraInfo_ += ", Duration: " + std::to_string(curDuration) + "(cur) - " + std::to_string(duration_); extraInfo_ += "."; if (isForDrag_ && event.sourceType == SourceType::MOUSE) { curDuration = 0; diff --git a/frameworks/core/components_ng/gestures/recognizers/pan_recognizer.cpp b/frameworks/core/components_ng/gestures/recognizers/pan_recognizer.cpp index 1efdaa1999cf877c754d77c416f73fb9c12b5cc9..9363a93ef1aea5034419e1df6110f31efd9ea93e 100644 --- a/frameworks/core/components_ng/gestures/recognizers/pan_recognizer.cpp +++ b/frameworks/core/components_ng/gestures/recognizers/pan_recognizer.cpp @@ -351,7 +351,7 @@ void PanRecognizer::HandleTouchDownEvent(const AxisEvent& event) void PanRecognizer::HandleTouchUpEvent(const TouchEvent& event) { ResSchedTouchOptimizer::GetInstance().SetSlideAccepted(true); - extraInfo_ = "currentFingers: " + std::to_string(currentFingers_) + " fingers: " + std::to_string(fingers_); + extraInfo_ = "Fingers: " + std::to_string(currentFingers_) + "(cur) - " + std::to_string(fingers_); lastAction_ = inputEventType_ == InputEventType::TOUCH_SCREEN ? static_cast(TouchType::UP) : static_cast(MouseAction::RELEASE); fingersId_.erase(event.id); diff --git a/test/unittest/core/event/event_dump_test_ng.cpp b/test/unittest/core/event/event_dump_test_ng.cpp index 0faa4c0ad7b54d4a230fea3a284ea2e4bbec7bc5..e84709eb0ef30a697665de29b18ea94fdeca8681 100644 --- a/test/unittest/core/event/event_dump_test_ng.cpp +++ b/test/unittest/core/event/event_dump_test_ng.cpp @@ -80,6 +80,8 @@ std::shared_ptr EventDumpTestNg::CreateFrameNodeSnapshotWithI frameNodeSnapshotInstance->isHit = true; frameNodeSnapshotInstance->hitTestMode = DEFAULT_HITTEST_MODE; frameNodeSnapshotInstance->responseRegionList = { RectF(0, 0, 20, 10), RectF(25, 0, 20, 10) }; + frameNodeSnapshotInstance->strategy = TouchTestStrategy::DEFAULT; + frameNodeSnapshotInstance->id = "id_01"; return frameNodeSnapshotInstance; } @@ -437,6 +439,7 @@ HWTEST_F(EventDumpTestNg, EventDumpTestNg010, TestSize.Level1) auto frameNodeSnapshotInstance = CreateFrameNodeSnapshotWithInitValue(); ASSERT_NE(frameNodeSnapshotInstance, nullptr); eventTreeRecord->AddFrameNodeSnapshot(std::move(*frameNodeSnapshotInstance)); + eventTreeRecord->UpdateFrameNodeSnapshot(NODEID, TouchTestStrategy::DEFAULT, "id_01"); auto gestureSnapshot = AceType::MakeRefPtr(); int32_t finger = 0; eventTreeRecord->AddGestureSnapshot(finger, std::move(gestureSnapshot));