fix according to review

Signed-off-by: Tianer Zhou <zhoutianer@huawei.com>
Change-Id: I0efdb72a761f92c9d2ce361804f1d621067102f0
This commit is contained in:
Tianer Zhou 2023-10-09 16:18:15 +08:00
parent c15990b447
commit 64fadc2ecb
4 changed files with 28 additions and 25 deletions

View File

@ -636,7 +636,8 @@ void Scrollable::HandleDragEnd(const GestureEvent& info)
FrameReport::GetInstance().EndListFling();
}
#endif
} else if (!Container::IsCurrentUseNewPipeline() && outBoundaryCallback_ && outBoundaryCallback_() && scrollOverCallback_) {
} else if (!Container::IsCurrentUseNewPipeline() && outBoundaryCallback_ && outBoundaryCallback_() &&
scrollOverCallback_) {
ResetContinueDragCount();
ProcessScrollOverCallback(correctVelocity);
} else if (canOverScroll_) {
@ -1066,7 +1067,7 @@ void Scrollable::ProcessScrollMotion(double position)
// spring effect special process
if ((IsSnapStopped() && canOverScroll_) || needScrollSnapChange_ ||
((outBoundaryCallback_ && outBoundaryCallback_()))) {
(!Container::IsCurrentUseNewPipeline() && outBoundaryCallback_ && outBoundaryCallback_())) {
scrollPause_ = true;
controller_->Stop();
}

View File

@ -3161,7 +3161,8 @@ bool SwiperPattern::HandleScrollVelocity(float velocity)
}
}
HandleDragEnd(velocity);
return GetEdgeEffect() == EdgeEffect::SPRING;
// after reached end, NONE doesn't consume velocity, other edge effects do
return GetEdgeEffect() != EdgeEffect::NONE;
}
ScrollResult SwiperPattern::HandleScroll(float offset, int32_t source, NestedState state)

View File

@ -101,7 +101,7 @@ HWTEST_F(ScrollableTestNg, HandleSelf001, TestSize.Level1)
EXPECT_CALL(*mockPn, HandleScroll).Times(0);
EXPECT_CALL(*scrollPn, GetOverScrollOffset)
.WillRepeatedly(Return(OverScrollOffset { .start = 5, .end = 0 }));
EXPECT_CALL(*scrollPn, IsAtTop).Times(3).WillRepeatedly(Return(false));
EXPECT_CALL(*scrollPn, IsAtTop).WillRepeatedly(Return(false));
EXPECT_CALL(*scrollPn, UpdateCurrentOffset).Times(3).WillRepeatedly(Return(true));
// test self only
@ -141,7 +141,7 @@ HWTEST_F(ScrollableTestNg, HandleParallel001, TestSize.Level1)
}));
EXPECT_CALL(*scrollPn, GetOverScrollOffset)
.WillRepeatedly(Return(OverScrollOffset { .start = 5, .end = 0 }));
EXPECT_CALL(*scrollPn, IsAtTop).Times(2).WillRepeatedly(Return(false));
EXPECT_CALL(*scrollPn, IsAtTop).WillRepeatedly(Return(false));
EXPECT_CALL(*scrollPn, UpdateCurrentOffset).Times(2).WillRepeatedly(Return(true));
scrollPn->nestedScroll_ = { .forward = NestedScrollMode::PARALLEL, .backward = NestedScrollMode::PARALLEL };
@ -177,7 +177,7 @@ HWTEST_F(ScrollableTestNg, HandleParallel002, TestSize.Level1)
}));
EXPECT_CALL(*scrollPn, GetOverScrollOffset)
.WillRepeatedly(Return(OverScrollOffset { .start = 5, .end = 0 }));
EXPECT_CALL(*scrollPn, IsAtTop).Times(1).WillRepeatedly(Return(false));
EXPECT_CALL(*scrollPn, IsAtTop).WillRepeatedly(Return(false));
EXPECT_CALL(*scrollPn, UpdateCurrentOffset).Times(1).WillRepeatedly(Return(true));
scrollPn->nestedScroll_ = { .forward = NestedScrollMode::PARALLEL, .backward = NestedScrollMode::PARALLEL };
@ -208,7 +208,7 @@ HWTEST_F(ScrollableTestNg, HandleParallel003, TestSize.Level1)
}));
EXPECT_CALL(*scrollPn, GetOverScrollOffset)
.WillRepeatedly(Return(OverScrollOffset { .start = 5, .end = 0 }));
EXPECT_CALL(*scrollPn, IsAtTop).Times(1).WillRepeatedly(Return(false));
EXPECT_CALL(*scrollPn, IsAtTop).WillRepeatedly(Return(false));
EXPECT_CALL(*scrollPn, UpdateCurrentOffset).Times(1).WillRepeatedly(Return(true));
scrollPn->nestedScroll_ = { .forward = NestedScrollMode::PARALLEL, .backward = NestedScrollMode::PARALLEL };
@ -239,7 +239,7 @@ HWTEST_F(ScrollableTestNg, HandleParallel004, TestSize.Level1)
}));
EXPECT_CALL(*scrollPn, GetOverScrollOffset)
.WillRepeatedly(Return(OverScrollOffset { .start = 5, .end = 0 }));
EXPECT_CALL(*scrollPn, IsAtTop).Times(1).WillRepeatedly(Return(false));
EXPECT_CALL(*scrollPn, IsAtTop).WillRepeatedly(Return(false));
EXPECT_CALL(*scrollPn, UpdateCurrentOffset).Times(1).WillRepeatedly(Return(true));
scrollPn->nestedScroll_ = { .forward = NestedScrollMode::PARALLEL, .backward = NestedScrollMode::PARALLEL };
@ -270,7 +270,7 @@ HWTEST_F(ScrollableTestNg, HandleParallel005, TestSize.Level1)
}));
EXPECT_CALL(*scrollPn, GetOverScrollOffset)
.WillRepeatedly(Return(OverScrollOffset { .start = 5, .end = 0 }));
EXPECT_CALL(*scrollPn, IsAtTop).Times(1).WillRepeatedly(Return(false));
EXPECT_CALL(*scrollPn, IsAtTop).WillRepeatedly(Return(false));
EXPECT_CALL(*scrollPn, UpdateCurrentOffset).Times(1).WillRepeatedly(Return(true));
scrollPn->nestedScroll_ = { .forward = NestedScrollMode::PARALLEL, .backward = NestedScrollMode::PARALLEL };
@ -301,7 +301,7 @@ HWTEST_F(ScrollableTestNg, HandleSelfFirst001, TestSize.Level1)
}));
EXPECT_CALL(*scrollPn, GetOverScrollOffset)
.WillRepeatedly(Return(OverScrollOffset { .start = 5, .end = 0 }));
EXPECT_CALL(*scrollPn, IsAtTop).Times(1).WillRepeatedly(Return(false));
EXPECT_CALL(*scrollPn, IsAtTop).WillRepeatedly(Return(false));
EXPECT_CALL(*scrollPn, UpdateCurrentOffset).Times(1).WillRepeatedly(Return(true));
scrollPn->nestedScroll_ = { .forward = NestedScrollMode::SELF_FIRST, .backward = NestedScrollMode::SELF_FIRST };
@ -332,7 +332,7 @@ HWTEST_F(ScrollableTestNg, HandleSelfFirst002, TestSize.Level1)
}));
EXPECT_CALL(*scrollPn, GetOverScrollOffset)
.WillRepeatedly(Return(OverScrollOffset { .start = 5, .end = 0 }));
EXPECT_CALL(*scrollPn, IsAtTop).Times(1).WillRepeatedly(Return(false));
EXPECT_CALL(*scrollPn, IsAtTop).WillRepeatedly(Return(false));
EXPECT_CALL(*scrollPn, UpdateCurrentOffset).Times(1).WillRepeatedly(Return(true));
scrollPn->nestedScroll_ = { .forward = NestedScrollMode::SELF_FIRST, .backward = NestedScrollMode::SELF_FIRST };
@ -363,7 +363,7 @@ HWTEST_F(ScrollableTestNg, HandleSelfFirst003, TestSize.Level1)
}));
EXPECT_CALL(*scrollPn, GetOverScrollOffset)
.WillRepeatedly(Return(OverScrollOffset { .start = 5, .end = 0 }));
EXPECT_CALL(*scrollPn, IsAtTop).Times(1).WillRepeatedly(Return(false));
EXPECT_CALL(*scrollPn, IsAtTop).WillRepeatedly(Return(false));
EXPECT_CALL(*scrollPn, UpdateCurrentOffset).Times(1).WillRepeatedly(Return(true));
scrollPn->nestedScroll_ = { .forward = NestedScrollMode::SELF_FIRST, .backward = NestedScrollMode::SELF_FIRST };
@ -389,7 +389,7 @@ HWTEST_F(ScrollableTestNg, HandleSelfFirst004, TestSize.Level1)
EXPECT_CALL(*mockPn, HandleScroll).Times(0);
EXPECT_CALL(*scrollPn, GetOverScrollOffset)
.WillRepeatedly(Return(OverScrollOffset { .start = 0, .end = 0 }));
EXPECT_CALL(*scrollPn, IsAtTop).Times(1).WillRepeatedly(Return(false));
EXPECT_CALL(*scrollPn, IsAtTop).WillRepeatedly(Return(false));
EXPECT_CALL(*scrollPn, UpdateCurrentOffset).Times(1).WillRepeatedly(Return(true));
scrollPn->nestedScroll_ = { .forward = NestedScrollMode::SELF_FIRST, .backward = NestedScrollMode::SELF_FIRST };
@ -420,7 +420,7 @@ HWTEST_F(ScrollableTestNg, HandleSelfFirst005, TestSize.Level1)
}));
EXPECT_CALL(*scrollPn, GetOverScrollOffset)
.WillRepeatedly(Return(OverScrollOffset { .start = 5, .end = 0 }));
EXPECT_CALL(*scrollPn, IsAtTop).Times(1).WillRepeatedly(Return(false));
EXPECT_CALL(*scrollPn, IsAtTop).WillRepeatedly(Return(false));
EXPECT_CALL(*scrollPn, UpdateCurrentOffset).Times(1).WillRepeatedly(Return(true));
scrollPn->nestedScroll_ = { .forward = NestedScrollMode::SELF_FIRST, .backward = NestedScrollMode::SELF_FIRST };
@ -451,7 +451,7 @@ HWTEST_F(ScrollableTestNg, HandleSelfFirst006, TestSize.Level1)
}));
EXPECT_CALL(*scrollPn, GetOverScrollOffset)
.WillRepeatedly(Return(OverScrollOffset { .start = 5, .end = 0 }));
EXPECT_CALL(*scrollPn, IsAtTop).Times(1).WillRepeatedly(Return(false));
EXPECT_CALL(*scrollPn, IsAtTop).WillRepeatedly(Return(false));
EXPECT_CALL(*scrollPn, UpdateCurrentOffset).Times(1).WillRepeatedly(Return(true));
scrollPn->nestedScroll_ = { .forward = NestedScrollMode::SELF_FIRST, .backward = NestedScrollMode::SELF_FIRST };
@ -482,7 +482,7 @@ HWTEST_F(ScrollableTestNg, HandleSelfFirst007, TestSize.Level1)
}));
EXPECT_CALL(*scrollPn, GetOverScrollOffset)
.WillRepeatedly(Return(OverScrollOffset { .start = 5, .end = 0 }));
EXPECT_CALL(*scrollPn, IsAtTop).Times(1).WillRepeatedly(Return(false));
EXPECT_CALL(*scrollPn, IsAtTop).WillRepeatedly(Return(false));
EXPECT_CALL(*scrollPn, UpdateCurrentOffset).Times(1).WillRepeatedly(Return(true));
scrollPn->nestedScroll_ = { .forward = NestedScrollMode::SELF_FIRST, .backward = NestedScrollMode::SELF_FIRST };
@ -513,7 +513,7 @@ HWTEST_F(ScrollableTestNg, HandleScrollParent001, TestSize.Level1)
}));
EXPECT_CALL(*scrollPn, GetOverScrollOffset)
.WillRepeatedly(Return(OverScrollOffset { .start = 5, .end = 0 }));
EXPECT_CALL(*scrollPn, IsAtTop).Times(1).WillRepeatedly(Return(false));
EXPECT_CALL(*scrollPn, IsAtTop).WillRepeatedly(Return(false));
EXPECT_CALL(*scrollPn, UpdateCurrentOffset).Times(1).WillRepeatedly(Return(true));
scrollPn->nestedScroll_ = { .forward = NestedScrollMode::PARENT_FIRST, .backward = NestedScrollMode::PARENT_FIRST };
@ -539,7 +539,7 @@ HWTEST_F(ScrollableTestNg, HandleScrollParent002, TestSize.Level1)
EXPECT_CALL(*mockPn, HandleScroll).Times(0);
EXPECT_CALL(*scrollPn, GetOverScrollOffset)
.WillRepeatedly(Return(OverScrollOffset { .start = 5, .end = 0 }));
EXPECT_CALL(*scrollPn, IsAtTop).Times(1).WillRepeatedly(Return(false));
EXPECT_CALL(*scrollPn, IsAtTop).WillRepeatedly(Return(false));
EXPECT_CALL(*scrollPn, UpdateCurrentOffset).Times(1).WillRepeatedly(Return(true));
scrollPn->nestedScroll_ = { .forward = NestedScrollMode::PARENT_FIRST, .backward = NestedScrollMode::PARENT_FIRST };
@ -570,7 +570,7 @@ HWTEST_F(ScrollableTestNg, HandleScrollParent003, TestSize.Level1)
}));
EXPECT_CALL(*scrollPn, GetOverScrollOffset)
.WillRepeatedly(Return(OverScrollOffset { .start = 5, .end = 0 }));
EXPECT_CALL(*scrollPn, IsAtTop).Times(1).WillRepeatedly(Return(false));
EXPECT_CALL(*scrollPn, IsAtTop).WillRepeatedly(Return(false));
EXPECT_CALL(*scrollPn, UpdateCurrentOffset).Times(1).WillRepeatedly(Return(true));
scrollPn->nestedScroll_ = { .forward = NestedScrollMode::PARENT_FIRST, .backward = NestedScrollMode::PARENT_FIRST };
@ -601,7 +601,7 @@ HWTEST_F(ScrollableTestNg, HandleScrollParent004, TestSize.Level1)
}));
EXPECT_CALL(*scrollPn, GetOverScrollOffset)
.WillRepeatedly(Return(OverScrollOffset { .start = 0, .end = 0 }));
EXPECT_CALL(*scrollPn, IsAtTop).Times(1).WillRepeatedly(Return(false));
EXPECT_CALL(*scrollPn, IsAtTop).WillRepeatedly(Return(false));
EXPECT_CALL(*scrollPn, UpdateCurrentOffset).Times(1).WillRepeatedly(Return(true));
scrollPn->nestedScroll_ = { .forward = NestedScrollMode::PARENT_FIRST, .backward = NestedScrollMode::PARENT_FIRST };
@ -632,7 +632,7 @@ HWTEST_F(ScrollableTestNg, HandleScrollParent005, TestSize.Level1)
}));
EXPECT_CALL(*scrollPn, GetOverScrollOffset)
.WillRepeatedly(Return(OverScrollOffset { .start = 5, .end = 0 }));
EXPECT_CALL(*scrollPn, IsAtTop).Times(1).WillRepeatedly(Return(false));
EXPECT_CALL(*scrollPn, IsAtTop).WillRepeatedly(Return(false));
EXPECT_CALL(*scrollPn, UpdateCurrentOffset).Times(1).WillRepeatedly(Return(true));
scrollPn->nestedScroll_ = { .forward = NestedScrollMode::PARENT_FIRST, .backward = NestedScrollMode::PARENT_FIRST };
@ -663,7 +663,7 @@ HWTEST_F(ScrollableTestNg, HandleScrollParent006, TestSize.Level1)
}));
EXPECT_CALL(*scrollPn, GetOverScrollOffset)
.WillRepeatedly(Return(OverScrollOffset { .start = 5, .end = 0 }));
EXPECT_CALL(*scrollPn, IsAtTop).Times(1).WillRepeatedly(Return(false));
EXPECT_CALL(*scrollPn, IsAtTop).WillRepeatedly(Return(false));
EXPECT_CALL(*scrollPn, UpdateCurrentOffset).Times(1).WillRepeatedly(Return(true));
scrollPn->nestedScroll_ = { .forward = NestedScrollMode::PARENT_FIRST, .backward = NestedScrollMode::PARENT_FIRST };
@ -694,7 +694,7 @@ HWTEST_F(ScrollableTestNg, HandleScrollParent007, TestSize.Level1)
}));
EXPECT_CALL(*scrollPn, GetOverScrollOffset)
.WillRepeatedly(Return(OverScrollOffset { .start = 0, .end = 0 }));
EXPECT_CALL(*scrollPn, IsAtTop).Times(1).WillRepeatedly(Return(false));
EXPECT_CALL(*scrollPn, IsAtTop).WillRepeatedly(Return(false));
EXPECT_CALL(*scrollPn, UpdateCurrentOffset).Times(1).WillRepeatedly(Return(true));
scrollPn->nestedScroll_ = { .forward = NestedScrollMode::PARENT_FIRST, .backward = NestedScrollMode::PARENT_FIRST };
@ -720,7 +720,7 @@ HWTEST_F(ScrollableTestNg, HandleScroll002, TestSize.Level1)
EXPECT_CALL(*mockPn, HandleScroll).Times(0);
EXPECT_CALL(*scrollPn, GetOverScrollOffset)
.WillRepeatedly(Return(OverScrollOffset { .start = 0, .end = 5 }));
EXPECT_CALL(*scrollPn, IsAtTop).Times(1).WillRepeatedly(Return(false));
EXPECT_CALL(*scrollPn, IsAtTop).WillRepeatedly(Return(false));
EXPECT_CALL(*scrollPn, UpdateCurrentOffset).Times(1).WillRepeatedly(Return(true));
scrollPn->nestedScroll_ = { .forward = NestedScrollMode::PARENT_FIRST, .backward = NestedScrollMode::PARENT_FIRST };
@ -833,7 +833,7 @@ HWTEST_F(ScrollableTestNg, OnScrollStart001, TestSize.Level1)
auto mockPn = mockScroll_->GetPattern<MockNestableScrollContainer>();
EXPECT_TRUE(mockPn);
EXPECT_CALL(*scrollPn, IsAtTop).Times(1);
EXPECT_CALL(*scrollPn, IsAtTop).Times(AtLeast(1));
EXPECT_CALL(*mockPn, GetAxis).Times(1);
EXPECT_CALL(*mockPn, OnScrollStartRecursive).Times(1);

View File

@ -724,6 +724,7 @@ ohos_source_set("ace_components_pattern") {
"$ace_root/frameworks/core/components_ng/pattern/scroll_bar/scroll_bar_layout_algorithm.cpp",
"$ace_root/frameworks/core/components_ng/pattern/scroll_bar/scroll_bar_model_ng.cpp",
"$ace_root/frameworks/core/components_ng/pattern/scroll_bar/scroll_bar_pattern.cpp",
"$ace_root/frameworks/core/components_ng/pattern/scrollable/nestable_scroll_container.cpp",
"$ace_root/frameworks/core/components_ng/pattern/scrollable/refresh_coordination.cpp",
"$ace_root/frameworks/core/components_ng/pattern/scrollable/scrollable_controller.cpp",
"$ace_root/frameworks/core/components_ng/pattern/scrollable/scrollable_paint_property.cpp",