| @@ -5708,6 +5708,39 @@ HWTEST_F(WebSelectOverlayTest, OnHandleMove, TestSize.Level1) |
| #endif | #endif |
| } | } |
| | |
| + |
| + * @tc.name: OnHandleMove_002 |
| + * @tc.desc: OnHandleMove. |
| + * @tc.type: FUNC |
| + */ |
| +HWTEST_F(WebSelectOverlayTest, OnHandleMove_002, TestSize.Level1) |
| +{ |
| +#ifdef OHOS_STANDARD_SYSTEM |
| + auto* stack = ViewStackProcessor::GetInstance(); |
| + ASSERT_NE(stack, nullptr); |
| + auto nodeId = stack->ClaimNodeId(); |
| + auto frameNode = |
| + FrameNode::GetOrCreateFrameNode(V2::WEB_ETS_TAG, nodeId, []() { return AceType::MakeRefPtr<WebPattern>(); }); |
| + stack->Push(frameNode); |
| + auto webPattern = frameNode->GetPattern<WebPattern>(); |
| + ASSERT_NE(webPattern, nullptr); |
| + webPattern->OnModifyDone(); |
| + WebSelectOverlay overlay(webPattern); |
| + MockPipelineContext::SetUp(); |
| + auto pipeline = MockPipelineContext::GetCurrentContext(); |
| + RectF handleRect; |
| + webPattern->SetOverlayCreating(false); |
| + overlay.OnHandleMove(handleRect, true); |
| + EXPECT_EQ(overlay.isCurrentStartHandleDragging_, false); |
| + webPattern->SetOverlayCreating(true); |
| + GestureEvent event; |
| + overlay.OnHandleMoveStart(event, true); |
| + overlay.OnHandleMove(handleRect, true); |
| + EXPECT_EQ(overlay.isCurrentStartHandleDragging_, true); |
| + MockPipelineContext::TearDown(); |
| +#endif |
| +} |
| + |
| |
| * @tc.name: OnHandleMoveStart_001 | * @tc.name: OnHandleMoveStart_001 |
| * @tc.desc: OnHandleMoveStart. | * @tc.desc: OnHandleMoveStart. |
| |
🤖 AI 代码检视意见(回复本评论可解决检视意见,点击被检视代码行左侧的小头像可收起检视意见)
🟡 区域检查函数变更需要语义验证
位置:
L713| 严重程度: Medium❓ 问题描述
将IsInRegion改为IsInnerRegion,这两个函数的语义可能不同。IsInRegion可能包含边界检查,而IsInnerRegion可能是严格内部检查。这种改变可能会影响手柄在边界情况下的显示行为。
💡 修复建议
建议在代码注释中明确说明这两个函数的区别,并添加相应的单元测试来验证边界行为。示例:
// 使用IsInnerRegion确保手柄完全在可见区域内,避免部分遮挡 handleInfo.isShow = (visibleInnerRect.IsInnerRegion(bottomPoint) && visibleInnerRect.IsInnerRegion(topPoint));