Bug 1349750 - Have AsyncDragMetrics use ScrollDirection instead of rolling its own direction enum. r=kats
MozReview-Commit-ID: FKK4OBx12oa
--- a/gfx/ipc/GfxMessageUtils.h
+++ b/gfx/ipc/GfxMessageUtils.h
@@ -1282,24 +1282,16 @@ struct ParamTraits<APZStateChange>
template<>
struct ParamTraits<mozilla::layers::EventRegionsOverride>
: public BitFlagsEnumSerializer<
mozilla::layers::EventRegionsOverride,
mozilla::layers::EventRegionsOverride::ALL_BITS>
{};
template<>
-struct ParamTraits<mozilla::layers::AsyncDragMetrics::DragDirection>
- : public ContiguousEnumSerializer<
- mozilla::layers::AsyncDragMetrics::DragDirection,
- mozilla::layers::AsyncDragMetrics::DragDirection::NONE,
- mozilla::layers::AsyncDragMetrics::DragDirection::SENTINEL>
-{};
-
-template<>
struct ParamTraits<mozilla::layers::AsyncDragMetrics>
{
typedef mozilla::layers::AsyncDragMetrics paramType;
static void Write(Message* aMsg, const paramType& aParam)
{
WriteParam(aMsg, aParam.mViewId);
WriteParam(aMsg, aParam.mPresShellId);
--- a/gfx/layers/apz/src/AsyncDragMetrics.h
+++ b/gfx/layers/apz/src/AsyncDragMetrics.h
@@ -3,60 +3,54 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef mozilla_layers_DragMetrics_h
#define mozilla_layers_DragMetrics_h
#include "FrameMetrics.h"
+#include "LayersTypes.h"
namespace IPC {
template <typename T> struct ParamTraits;
} // namespace IPC
namespace mozilla {
namespace layers {
class AsyncDragMetrics {
friend struct IPC::ParamTraits<mozilla::layers::AsyncDragMetrics>;
public:
- enum DragDirection {
- NONE,
- VERTICAL,
- HORIZONTAL,
- SENTINEL,
- };
-
// IPC constructor
AsyncDragMetrics()
: mViewId(0)
, mPresShellId(0)
, mDragStartSequenceNumber(0)
, mScrollbarDragOffset(0)
- , mDirection(NONE)
+ , mDirection(ScrollDirection::NONE)
{}
AsyncDragMetrics(const FrameMetrics::ViewID& aViewId,
uint32_t aPresShellId,
uint64_t aDragStartSequenceNumber,
CSSCoord aScrollbarDragOffset,
- DragDirection aDirection)
+ ScrollDirection aDirection)
: mViewId(aViewId)
, mPresShellId(aPresShellId)
, mDragStartSequenceNumber(aDragStartSequenceNumber)
, mScrollbarDragOffset(aScrollbarDragOffset)
, mDirection(aDirection)
{}
FrameMetrics::ViewID mViewId;
uint32_t mPresShellId;
uint64_t mDragStartSequenceNumber;
CSSCoord mScrollbarDragOffset;
- DragDirection mDirection;
+ ScrollDirection mDirection;
};
}
}
#endif
--- a/gfx/layers/apz/src/AsyncPanZoomController.cpp
+++ b/gfx/layers/apz/src/AsyncPanZoomController.cpp
@@ -828,63 +828,63 @@ AsyncPanZoomController::ArePointerEvents
if (!consumable) {
return false;
}
return true;
}
template <typename Units>
-static CoordTyped<Units> GetAxisStart(AsyncDragMetrics::DragDirection aDir, const PointTyped<Units>& aValue) {
- if (aDir == AsyncDragMetrics::HORIZONTAL) {
+static CoordTyped<Units> GetAxisStart(ScrollDirection aDir, const PointTyped<Units>& aValue) {
+ if (aDir == ScrollDirection::HORIZONTAL) {
return aValue.x;
} else {
return aValue.y;
}
}
template <typename Units>
-static CoordTyped<Units> GetAxisStart(AsyncDragMetrics::DragDirection aDir, const RectTyped<Units>& aValue) {
- if (aDir == AsyncDragMetrics::HORIZONTAL) {
+static CoordTyped<Units> GetAxisStart(ScrollDirection aDir, const RectTyped<Units>& aValue) {
+ if (aDir == ScrollDirection::HORIZONTAL) {
return aValue.x;
} else {
return aValue.y;
}
}
template <typename Units>
-static IntCoordTyped<Units> GetAxisStart(AsyncDragMetrics::DragDirection aDir, const IntRectTyped<Units>& aValue) {
- if (aDir == AsyncDragMetrics::HORIZONTAL) {
+static IntCoordTyped<Units> GetAxisStart(ScrollDirection aDir, const IntRectTyped<Units>& aValue) {
+ if (aDir == ScrollDirection::HORIZONTAL) {
return aValue.x;
} else {
return aValue.y;
}
}
template <typename Units>
-static CoordTyped<Units> GetAxisEnd(AsyncDragMetrics::DragDirection aDir, const RectTyped<Units>& aValue) {
- if (aDir == AsyncDragMetrics::HORIZONTAL) {
+static CoordTyped<Units> GetAxisEnd(ScrollDirection aDir, const RectTyped<Units>& aValue) {
+ if (aDir == ScrollDirection::HORIZONTAL) {
return aValue.x + aValue.width;
} else {
return aValue.y + aValue.height;
}
}
template <typename Units>
-static CoordTyped<Units> GetAxisLength(AsyncDragMetrics::DragDirection aDir, const RectTyped<Units>& aValue) {
- if (aDir == AsyncDragMetrics::HORIZONTAL) {
+static CoordTyped<Units> GetAxisLength(ScrollDirection aDir, const RectTyped<Units>& aValue) {
+ if (aDir == ScrollDirection::HORIZONTAL) {
return aValue.width;
} else {
return aValue.height;
}
}
template <typename FromUnits, typename ToUnits>
-static float GetAxisScale(AsyncDragMetrics::DragDirection aDir, const ScaleFactors2D<FromUnits, ToUnits>& aValue) {
- if (aDir == AsyncDragMetrics::HORIZONTAL) {
+static float GetAxisScale(ScrollDirection aDir, const ScaleFactors2D<FromUnits, ToUnits>& aValue) {
+ if (aDir == ScrollDirection::HORIZONTAL) {
return aValue.xScale;
} else {
return aValue.yScale;
}
}
nsEventStatus AsyncPanZoomController::HandleDragEvent(const MouseInput& aEvent,
const AsyncDragMetrics& aDragMetrics)
@@ -931,17 +931,17 @@ nsEventStatus AsyncPanZoomController::Ha
GetAxisLength(aDragMetrics.mDirection, mFrameMetrics.GetScrollableRect()) -
GetAxisLength(aDragMetrics.mDirection, mFrameMetrics.CalculateCompositedRectInCssPixels());
CSSCoord scrollPosition = scrollPercent * maxScrollPosition;
scrollPosition = std::max(scrollPosition, minScrollPosition);
scrollPosition = std::min(scrollPosition, maxScrollPosition);
CSSPoint scrollOffset = mFrameMetrics.GetScrollOffset();
- if (aDragMetrics.mDirection == AsyncDragMetrics::HORIZONTAL) {
+ if (aDragMetrics.mDirection == ScrollDirection::HORIZONTAL) {
scrollOffset.x = scrollPosition;
} else {
scrollOffset.y = scrollPosition;
}
mFrameMetrics.SetScrollOffset(scrollOffset);
ScheduleCompositeAndMaybeRepaint();
UpdateSharedCompositorFrameMetrics();
--- a/gfx/layers/apz/src/HitTestingTreeNode.cpp
+++ b/gfx/layers/apz/src/HitTestingTreeNode.cpp
@@ -100,20 +100,18 @@ HitTestingTreeNode::SetScrollbarData(Fra
mScrollViewId = aScrollViewId;
mScrollThumbData = aThumbData;
mIsScrollbarContainer = aIsScrollContainer;
}
bool
HitTestingTreeNode::MatchesScrollDragMetrics(const AsyncDragMetrics& aDragMetrics) const
{
- return ((mScrollThumbData.mDirection == ScrollDirection::HORIZONTAL &&
- aDragMetrics.mDirection == AsyncDragMetrics::HORIZONTAL) ||
- (mScrollThumbData.mDirection == ScrollDirection::VERTICAL &&
- aDragMetrics.mDirection == AsyncDragMetrics::VERTICAL)) &&
+ return IsScrollThumbNode() &&
+ mScrollThumbData.mDirection == aDragMetrics.mDirection &&
mScrollViewId == aDragMetrics.mViewId;
}
bool
HitTestingTreeNode::IsScrollThumbNode() const
{
return mScrollThumbData.mDirection != ScrollDirection::NONE;
}
--- a/layout/xul/nsSliderFrame.cpp
+++ b/layout/xul/nsSliderFrame.cpp
@@ -1085,18 +1085,18 @@ nsSliderFrame::StartAPZDrag(WidgetGUIEve
nsCOMPtr<nsIContent> scrollbar = GetContentOfBox(scrollbarBox);
nsIPresShell* shell = PresContext()->PresShell();
uint64_t inputblockId = InputAPZContext::GetInputBlockId();
uint32_t presShellId = shell->GetPresShellId();
AsyncDragMetrics dragMetrics(scrollTargetId, presShellId, inputblockId,
NSAppUnitsToFloatPixels(mDragStart,
float(AppUnitsPerCSSPixel())),
- isHorizontal ? AsyncDragMetrics::HORIZONTAL :
- AsyncDragMetrics::VERTICAL);
+ isHorizontal ? ScrollDirection::HORIZONTAL :
+ ScrollDirection::VERTICAL);
if (!nsLayoutUtils::HasDisplayPort(scrollableContent)) {
return;
}
// It's important to set this before calling nsIWidget::StartAsyncScrollbarDrag(),
// because in some configurations, that can call AsyncScrollbarDragRejected()
// synchronously, which clears the flag (and we want it to stay cleared in