зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1786452 - Add a gtest. r=hiro
Differential Revision: https://phabricator.services.mozilla.com/D156767
This commit is contained in:
Родитель
6f6a4de1ef
Коммит
27d6b966c4
|
@ -156,6 +156,10 @@ class MockContentController : public GeckoContentController {
|
|||
MOCK_METHOD1(CancelAutoscroll, void(const ScrollableLayerGuid&));
|
||||
MOCK_METHOD2(NotifyScaleGestureComplete,
|
||||
void(const ScrollableLayerGuid&, float aScale));
|
||||
MOCK_METHOD4(UpdateOverscrollVelocity,
|
||||
void(const ScrollableLayerGuid&, float, float, bool));
|
||||
MOCK_METHOD4(UpdateOverscrollOffset,
|
||||
void(const ScrollableLayerGuid&, float, float, bool));
|
||||
};
|
||||
|
||||
class MockContentControllerDelayed : public MockContentController {
|
||||
|
|
|
@ -1599,6 +1599,42 @@ TEST_F(APZCOverscrollTester, SmallAmountOfOverscroll) {
|
|||
}
|
||||
#endif
|
||||
|
||||
#ifdef MOZ_WIDGET_ANDROID // Only applies to WidgetOverscrollEffect
|
||||
TEST_F(APZCOverscrollTester, StuckInOverscroll_Bug1786452) {
|
||||
SCOPED_GFX_PREF_BOOL("apz.overscroll.enabled", true);
|
||||
|
||||
ScrollMetadata metadata;
|
||||
FrameMetrics& metrics = metadata.GetMetrics();
|
||||
metrics.SetCompositionBounds(ParentLayerRect(0, 0, 100, 100));
|
||||
metrics.SetScrollableRect(CSSRect(0, 0, 100, 1000));
|
||||
|
||||
// Over the course of the test, expect one or more calls to
|
||||
// UpdateOverscrollOffset(), followed by a call to UpdateOverscrollVelocity().
|
||||
// The latter ensures the widget has a chance to end its overscroll effect.
|
||||
InSequence s;
|
||||
EXPECT_CALL(*mcc, UpdateOverscrollOffset(_, _, _, _)).Times(AtLeast(1));
|
||||
EXPECT_CALL(*mcc, UpdateOverscrollVelocity(_, _, _, _)).Times(1);
|
||||
|
||||
// Pan into overscroll, keeping the finger down
|
||||
ScreenIntPoint startPoint(10, 500);
|
||||
ScreenIntPoint endPoint(10, 10);
|
||||
Pan(apzc, startPoint, endPoint, PanOptions::KeepFingerDown);
|
||||
EXPECT_TRUE(apzc->IsOverscrolled());
|
||||
|
||||
// Linger a while to cause the velocity to drop to very low or zero
|
||||
mcc->AdvanceByMillis(100);
|
||||
TouchMove(apzc, endPoint, mcc->Time());
|
||||
EXPECT_LT(apzc->GetVelocityVector().Length(),
|
||||
StaticPrefs::apz_fling_min_velocity_threshold());
|
||||
EXPECT_TRUE(apzc->IsOverscrolled());
|
||||
|
||||
// Lift the finger
|
||||
mcc->AdvanceByMillis(20);
|
||||
TouchUp(apzc, endPoint, mcc->Time());
|
||||
EXPECT_FALSE(apzc->IsOverscrolled());
|
||||
}
|
||||
#endif
|
||||
|
||||
class APZCOverscrollTesterMock : public APZCTreeManagerTester {
|
||||
public:
|
||||
APZCOverscrollTesterMock() { CreateMockHitTester(); }
|
||||
|
|
Загрузка…
Ссылка в новой задаче