diff --git a/gfx/layers/apz/test/gtest/APZTestCommon.h b/gfx/layers/apz/test/gtest/APZTestCommon.h index 201c27467c3f..6e210e24b585 100644 --- a/gfx/layers/apz/test/gtest/APZTestCommon.h +++ b/gfx/layers/apz/test/gtest/APZTestCommon.h @@ -22,6 +22,7 @@ #include "mozilla/layers/APZCTreeManager.h" #include "mozilla/layers/LayerMetricsWrapper.h" #include "mozilla/layers/APZThreadUtils.h" +#include "mozilla/TypedEnumBits.h" #include "mozilla/UniquePtr.h" #include "apz/src/AsyncPanZoomController.h" #include "apz/src/HitTestingTreeNode.h" @@ -288,6 +289,11 @@ public: mcc = new NiceMock(); } + enum class PanOptions { + None = 0, + KeepFingerDown = 0x1, + }; + template void Tap(const RefPtr& aTarget, const ScreenIntPoint& aPoint, TimeDuration aTapLength, @@ -302,7 +308,7 @@ public: void Pan(const RefPtr& aTarget, const ScreenIntPoint& aTouchStart, const ScreenIntPoint& aTouchEnd, - bool aKeepFingerDown = false, + PanOptions aOptions = PanOptions::None, nsTArray* aAllowedTouchBehaviors = nullptr, nsEventStatus (*aOutEventStatuses)[4] = nullptr, uint64_t* aOutInputBlockId = nullptr); @@ -314,7 +320,7 @@ public: */ template void Pan(const RefPtr& aTarget, int aTouchStartY, - int aTouchEndY, bool aKeepFingerDown = false, + int aTouchEndY, PanOptions aOptions = PanOptions::None, nsTArray* aAllowedTouchBehaviors = nullptr, nsEventStatus (*aOutEventStatuses)[4] = nullptr, uint64_t* aOutInputBlockId = nullptr); @@ -350,6 +356,8 @@ protected: RefPtr mcc; }; +MOZ_MAKE_ENUM_CLASS_BITWISE_OPERATORS(APZCTesterBase::PanOptions) + template void APZCTesterBase::Tap(const RefPtr& aTarget, @@ -399,7 +407,7 @@ void APZCTesterBase::Pan(const RefPtr& aTarget, const ScreenIntPoint& aTouchStart, const ScreenIntPoint& aTouchEnd, - bool aKeepFingerDown, + PanOptions aOptions, nsTArray* aAllowedTouchBehaviors, nsEventStatus (*aOutEventStatuses)[4], uint64_t* aOutInputBlockId) @@ -455,7 +463,7 @@ APZCTesterBase::Pan(const RefPtr& aTarget, mcc->AdvanceBy(TIME_BETWEEN_TOUCH_EVENT); - if (!aKeepFingerDown) { + if (!(aOptions & PanOptions::KeepFingerDown)) { status = TouchUp(aTarget, aTouchEnd, mcc->Time()); } else { status = nsEventStatus_eIgnore; @@ -472,13 +480,13 @@ APZCTesterBase::Pan(const RefPtr& aTarget, template void APZCTesterBase::Pan(const RefPtr& aTarget, - int aTouchStartY, int aTouchEndY, bool aKeepFingerDown, + int aTouchStartY, int aTouchEndY, PanOptions aOptions, nsTArray* aAllowedTouchBehaviors, nsEventStatus (*aOutEventStatuses)[4], uint64_t* aOutInputBlockId) { Pan(aTarget, ScreenIntPoint(10, aTouchStartY), ScreenIntPoint(10, aTouchEndY), - aKeepFingerDown, aAllowedTouchBehaviors, aOutEventStatuses, aOutInputBlockId); + aOptions, aAllowedTouchBehaviors, aOutEventStatuses, aOutInputBlockId); } template @@ -491,7 +499,7 @@ APZCTesterBase::PanAndCheckStatus(const RefPtr& aTarget, uint64_t* aOutInputBlockId) { nsEventStatus statuses[4]; // down, move, move, up - Pan(aTarget, aTouchStartY, aTouchEndY, false, aAllowedTouchBehaviors, &statuses, aOutInputBlockId); + Pan(aTarget, aTouchStartY, aTouchEndY, PanOptions::None, aAllowedTouchBehaviors, &statuses, aOutInputBlockId); EXPECT_EQ(nsEventStatus_eConsumeDoDefault, statuses[0]); @@ -510,7 +518,7 @@ APZCTesterBase::ApzcPanNoFling(const RefPtr& aApzc, int aTouchStartY, int aTouchEndY, uint64_t* aOutInputBlockId) { - Pan(aApzc, aTouchStartY, aTouchEndY, false, nullptr, nullptr, aOutInputBlockId); + Pan(aApzc, aTouchStartY, aTouchEndY, PanOptions::None, nullptr, nullptr, aOutInputBlockId); aApzc->CancelAnimation(); } diff --git a/gfx/layers/apz/test/gtest/TestBasic.cpp b/gfx/layers/apz/test/gtest/TestBasic.cpp index 921ea408009c..45679d4a9996 100644 --- a/gfx/layers/apz/test/gtest/TestBasic.cpp +++ b/gfx/layers/apz/test/gtest/TestBasic.cpp @@ -344,7 +344,7 @@ TEST_F(APZCBasicTester, OverScrollPanningAbort) { // the pan does not end. int touchStart = 500; int touchEnd = 10; - Pan(apzc, touchStart, touchEnd, true); // keep finger down + Pan(apzc, touchStart, touchEnd, PanOptions::KeepFingerDown); EXPECT_TRUE(apzc->IsOverscrolled()); // Check that calling CancelAnimation() while the user is still panning diff --git a/gfx/layers/apz/test/gtest/TestGestureDetector.cpp b/gfx/layers/apz/test/gtest/TestGestureDetector.cpp index fcbc250f760c..dba4f3cafc38 100644 --- a/gfx/layers/apz/test/gtest/TestGestureDetector.cpp +++ b/gfx/layers/apz/test/gtest/TestGestureDetector.cpp @@ -235,7 +235,7 @@ protected: uint64_t blockId = 0; // Start the fling down. - Pan(apzc, touchStart, touchEnd, false, nullptr, nullptr, &blockId); + Pan(apzc, touchStart, touchEnd, PanOptions::None, nullptr, nullptr, &blockId); apzc->ConfirmTarget(blockId); apzc->ContentReceivedInputBlock(blockId, false); diff --git a/gfx/layers/apz/test/gtest/TestScrollHandoff.cpp b/gfx/layers/apz/test/gtest/TestScrollHandoff.cpp index d57d09ead6cb..0f4f9bf44037 100644 --- a/gfx/layers/apz/test/gtest/TestScrollHandoff.cpp +++ b/gfx/layers/apz/test/gtest/TestScrollHandoff.cpp @@ -217,7 +217,7 @@ TEST_F(APZScrollHandoffTester, StuckInOverscroll_Bug1073250) { TestAsyncPanZoomController* child = ApzcOf(layers[1]); // Pan, causing the parent APZC to overscroll. - Pan(manager, 10, 40, true /* keep finger down */); + Pan(manager, 10, 40, PanOptions::KeepFingerDown); EXPECT_FALSE(child->IsOverscrolled()); EXPECT_TRUE(rootApzc->IsOverscrolled()); @@ -255,7 +255,7 @@ TEST_F(APZScrollHandoffTester, StuckInOverscroll_Bug1231228) { TestAsyncPanZoomController* child = ApzcOf(layers[1]); // Pan, causing the parent APZC to overscroll. - Pan(manager, 60, 90, true /* keep finger down */); + Pan(manager, 60, 90, PanOptions::KeepFingerDown); EXPECT_FALSE(child->IsOverscrolled()); EXPECT_TRUE(rootApzc->IsOverscrolled()); @@ -289,7 +289,7 @@ TEST_F(APZScrollHandoffTester, StuckInOverscroll_Bug1240202a) { TestAsyncPanZoomController* child = ApzcOf(layers[1]); // Pan, causing the parent APZC to overscroll. - Pan(manager, 60, 90, true /* keep finger down */); + Pan(manager, 60, 90, PanOptions::KeepFingerDown); EXPECT_FALSE(child->IsOverscrolled()); EXPECT_TRUE(rootApzc->IsOverscrolled()); @@ -322,7 +322,7 @@ TEST_F(APZScrollHandoffTester, StuckInOverscroll_Bug1240202b) { TestAsyncPanZoomController* child = ApzcOf(layers[1]); // Pan, causing the parent APZC to overscroll. - Pan(manager, 60, 90, true /* keep finger down */); + Pan(manager, 60, 90, PanOptions::KeepFingerDown); EXPECT_FALSE(child->IsOverscrolled()); EXPECT_TRUE(rootApzc->IsOverscrolled());