Bug 1337990 - Introduce a PanOptions enumeration for passing options to APZCTesterBase::Pan(). r=kats

MozReview-Commit-ID: 54UZV54IyfD

--HG--
extra : rebase_source : 83ef27a26c36f3b7bf72e92ca64a4628a2d6eb9f
This commit is contained in:
Botond Ballo 2017-02-10 16:08:12 -05:00
Родитель 4c4b9579cd
Коммит 411f673387
4 изменённых файлов: 22 добавлений и 14 удалений

Просмотреть файл

@ -22,6 +22,7 @@
#include "mozilla/layers/APZCTreeManager.h" #include "mozilla/layers/APZCTreeManager.h"
#include "mozilla/layers/LayerMetricsWrapper.h" #include "mozilla/layers/LayerMetricsWrapper.h"
#include "mozilla/layers/APZThreadUtils.h" #include "mozilla/layers/APZThreadUtils.h"
#include "mozilla/TypedEnumBits.h"
#include "mozilla/UniquePtr.h" #include "mozilla/UniquePtr.h"
#include "apz/src/AsyncPanZoomController.h" #include "apz/src/AsyncPanZoomController.h"
#include "apz/src/HitTestingTreeNode.h" #include "apz/src/HitTestingTreeNode.h"
@ -288,6 +289,11 @@ public:
mcc = new NiceMock<MockContentControllerDelayed>(); mcc = new NiceMock<MockContentControllerDelayed>();
} }
enum class PanOptions {
None = 0,
KeepFingerDown = 0x1,
};
template<class InputReceiver> template<class InputReceiver>
void Tap(const RefPtr<InputReceiver>& aTarget, const ScreenIntPoint& aPoint, void Tap(const RefPtr<InputReceiver>& aTarget, const ScreenIntPoint& aPoint,
TimeDuration aTapLength, TimeDuration aTapLength,
@ -302,7 +308,7 @@ public:
void Pan(const RefPtr<InputReceiver>& aTarget, void Pan(const RefPtr<InputReceiver>& aTarget,
const ScreenIntPoint& aTouchStart, const ScreenIntPoint& aTouchStart,
const ScreenIntPoint& aTouchEnd, const ScreenIntPoint& aTouchEnd,
bool aKeepFingerDown = false, PanOptions aOptions = PanOptions::None,
nsTArray<uint32_t>* aAllowedTouchBehaviors = nullptr, nsTArray<uint32_t>* aAllowedTouchBehaviors = nullptr,
nsEventStatus (*aOutEventStatuses)[4] = nullptr, nsEventStatus (*aOutEventStatuses)[4] = nullptr,
uint64_t* aOutInputBlockId = nullptr); uint64_t* aOutInputBlockId = nullptr);
@ -314,7 +320,7 @@ public:
*/ */
template<class InputReceiver> template<class InputReceiver>
void Pan(const RefPtr<InputReceiver>& aTarget, int aTouchStartY, void Pan(const RefPtr<InputReceiver>& aTarget, int aTouchStartY,
int aTouchEndY, bool aKeepFingerDown = false, int aTouchEndY, PanOptions aOptions = PanOptions::None,
nsTArray<uint32_t>* aAllowedTouchBehaviors = nullptr, nsTArray<uint32_t>* aAllowedTouchBehaviors = nullptr,
nsEventStatus (*aOutEventStatuses)[4] = nullptr, nsEventStatus (*aOutEventStatuses)[4] = nullptr,
uint64_t* aOutInputBlockId = nullptr); uint64_t* aOutInputBlockId = nullptr);
@ -350,6 +356,8 @@ protected:
RefPtr<MockContentControllerDelayed> mcc; RefPtr<MockContentControllerDelayed> mcc;
}; };
MOZ_MAKE_ENUM_CLASS_BITWISE_OPERATORS(APZCTesterBase::PanOptions)
template<class InputReceiver> template<class InputReceiver>
void void
APZCTesterBase::Tap(const RefPtr<InputReceiver>& aTarget, APZCTesterBase::Tap(const RefPtr<InputReceiver>& aTarget,
@ -399,7 +407,7 @@ void
APZCTesterBase::Pan(const RefPtr<InputReceiver>& aTarget, APZCTesterBase::Pan(const RefPtr<InputReceiver>& aTarget,
const ScreenIntPoint& aTouchStart, const ScreenIntPoint& aTouchStart,
const ScreenIntPoint& aTouchEnd, const ScreenIntPoint& aTouchEnd,
bool aKeepFingerDown, PanOptions aOptions,
nsTArray<uint32_t>* aAllowedTouchBehaviors, nsTArray<uint32_t>* aAllowedTouchBehaviors,
nsEventStatus (*aOutEventStatuses)[4], nsEventStatus (*aOutEventStatuses)[4],
uint64_t* aOutInputBlockId) uint64_t* aOutInputBlockId)
@ -455,7 +463,7 @@ APZCTesterBase::Pan(const RefPtr<InputReceiver>& aTarget,
mcc->AdvanceBy(TIME_BETWEEN_TOUCH_EVENT); mcc->AdvanceBy(TIME_BETWEEN_TOUCH_EVENT);
if (!aKeepFingerDown) { if (!(aOptions & PanOptions::KeepFingerDown)) {
status = TouchUp(aTarget, aTouchEnd, mcc->Time()); status = TouchUp(aTarget, aTouchEnd, mcc->Time());
} else { } else {
status = nsEventStatus_eIgnore; status = nsEventStatus_eIgnore;
@ -472,13 +480,13 @@ APZCTesterBase::Pan(const RefPtr<InputReceiver>& aTarget,
template<class InputReceiver> template<class InputReceiver>
void void
APZCTesterBase::Pan(const RefPtr<InputReceiver>& aTarget, APZCTesterBase::Pan(const RefPtr<InputReceiver>& aTarget,
int aTouchStartY, int aTouchEndY, bool aKeepFingerDown, int aTouchStartY, int aTouchEndY, PanOptions aOptions,
nsTArray<uint32_t>* aAllowedTouchBehaviors, nsTArray<uint32_t>* aAllowedTouchBehaviors,
nsEventStatus (*aOutEventStatuses)[4], nsEventStatus (*aOutEventStatuses)[4],
uint64_t* aOutInputBlockId) uint64_t* aOutInputBlockId)
{ {
Pan(aTarget, ScreenIntPoint(10, aTouchStartY), ScreenIntPoint(10, aTouchEndY), Pan(aTarget, ScreenIntPoint(10, aTouchStartY), ScreenIntPoint(10, aTouchEndY),
aKeepFingerDown, aAllowedTouchBehaviors, aOutEventStatuses, aOutInputBlockId); aOptions, aAllowedTouchBehaviors, aOutEventStatuses, aOutInputBlockId);
} }
template<class InputReceiver> template<class InputReceiver>
@ -491,7 +499,7 @@ APZCTesterBase::PanAndCheckStatus(const RefPtr<InputReceiver>& aTarget,
uint64_t* aOutInputBlockId) uint64_t* aOutInputBlockId)
{ {
nsEventStatus statuses[4]; // down, move, move, up 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]); EXPECT_EQ(nsEventStatus_eConsumeDoDefault, statuses[0]);
@ -510,7 +518,7 @@ APZCTesterBase::ApzcPanNoFling(const RefPtr<TestAsyncPanZoomController>& aApzc,
int aTouchStartY, int aTouchEndY, int aTouchStartY, int aTouchEndY,
uint64_t* aOutInputBlockId) uint64_t* aOutInputBlockId)
{ {
Pan(aApzc, aTouchStartY, aTouchEndY, false, nullptr, nullptr, aOutInputBlockId); Pan(aApzc, aTouchStartY, aTouchEndY, PanOptions::None, nullptr, nullptr, aOutInputBlockId);
aApzc->CancelAnimation(); aApzc->CancelAnimation();
} }

Просмотреть файл

@ -344,7 +344,7 @@ TEST_F(APZCBasicTester, OverScrollPanningAbort) {
// the pan does not end. // the pan does not end.
int touchStart = 500; int touchStart = 500;
int touchEnd = 10; int touchEnd = 10;
Pan(apzc, touchStart, touchEnd, true); // keep finger down Pan(apzc, touchStart, touchEnd, PanOptions::KeepFingerDown);
EXPECT_TRUE(apzc->IsOverscrolled()); EXPECT_TRUE(apzc->IsOverscrolled());
// Check that calling CancelAnimation() while the user is still panning // Check that calling CancelAnimation() while the user is still panning

Просмотреть файл

@ -235,7 +235,7 @@ protected:
uint64_t blockId = 0; uint64_t blockId = 0;
// Start the fling down. // 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->ConfirmTarget(blockId);
apzc->ContentReceivedInputBlock(blockId, false); apzc->ContentReceivedInputBlock(blockId, false);

Просмотреть файл

@ -217,7 +217,7 @@ TEST_F(APZScrollHandoffTester, StuckInOverscroll_Bug1073250) {
TestAsyncPanZoomController* child = ApzcOf(layers[1]); TestAsyncPanZoomController* child = ApzcOf(layers[1]);
// Pan, causing the parent APZC to overscroll. // 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_FALSE(child->IsOverscrolled());
EXPECT_TRUE(rootApzc->IsOverscrolled()); EXPECT_TRUE(rootApzc->IsOverscrolled());
@ -255,7 +255,7 @@ TEST_F(APZScrollHandoffTester, StuckInOverscroll_Bug1231228) {
TestAsyncPanZoomController* child = ApzcOf(layers[1]); TestAsyncPanZoomController* child = ApzcOf(layers[1]);
// Pan, causing the parent APZC to overscroll. // 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_FALSE(child->IsOverscrolled());
EXPECT_TRUE(rootApzc->IsOverscrolled()); EXPECT_TRUE(rootApzc->IsOverscrolled());
@ -289,7 +289,7 @@ TEST_F(APZScrollHandoffTester, StuckInOverscroll_Bug1240202a) {
TestAsyncPanZoomController* child = ApzcOf(layers[1]); TestAsyncPanZoomController* child = ApzcOf(layers[1]);
// Pan, causing the parent APZC to overscroll. // 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_FALSE(child->IsOverscrolled());
EXPECT_TRUE(rootApzc->IsOverscrolled()); EXPECT_TRUE(rootApzc->IsOverscrolled());
@ -322,7 +322,7 @@ TEST_F(APZScrollHandoffTester, StuckInOverscroll_Bug1240202b) {
TestAsyncPanZoomController* child = ApzcOf(layers[1]); TestAsyncPanZoomController* child = ApzcOf(layers[1]);
// Pan, causing the parent APZC to overscroll. // 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_FALSE(child->IsOverscrolled());
EXPECT_TRUE(rootApzc->IsOverscrolled()); EXPECT_TRUE(rootApzc->IsOverscrolled());