| Index: third_party/WebKit/Source/core/events/WheelEvent.cpp
|
| diff --git a/third_party/WebKit/Source/core/events/WheelEvent.cpp b/third_party/WebKit/Source/core/events/WheelEvent.cpp
|
| index 2d23921d8361523c34697fb0d943c77e2c06f68b..689d56af9011e5bd9c14729f85f1aef5f4a778e9 100644
|
| --- a/third_party/WebKit/Source/core/events/WheelEvent.cpp
|
| +++ b/third_party/WebKit/Source/core/events/WheelEvent.cpp
|
| @@ -34,6 +34,14 @@ inline static unsigned convertDeltaMode(const PlatformWheelEvent& event)
|
| return event.granularity() == ScrollByPageWheelEvent ? WheelEvent::kDomDeltaPage : WheelEvent::kDomDeltaPixel;
|
| }
|
|
|
| +// Negate a long value without integer overflow.
|
| +inline static long negateIfPossible(long value)
|
| +{
|
| + if (value == LONG_MIN)
|
| + return value;
|
| + return -value;
|
| +}
|
| +
|
| WheelEvent* WheelEvent::create(const PlatformWheelEvent& event, AbstractView* view)
|
| {
|
| return new WheelEvent(FloatPoint(event.wheelTicksX(), event.wheelTicksY()), FloatPoint(event.deltaX(), event.deltaY()),
|
| @@ -63,8 +71,8 @@ WheelEvent::WheelEvent()
|
| WheelEvent::WheelEvent(const AtomicString& type, const WheelEventInit& initializer)
|
| : MouseEvent(type, initializer)
|
| , m_wheelDelta(initializer.wheelDeltaX() ? initializer.wheelDeltaX() : -initializer.deltaX(), initializer.wheelDeltaY() ? initializer.wheelDeltaY() : -initializer.deltaY())
|
| - , m_deltaX(initializer.deltaX() ? initializer.deltaX() : -initializer.wheelDeltaX())
|
| - , m_deltaY(initializer.deltaY() ? initializer.deltaY() : -initializer.wheelDeltaY())
|
| + , m_deltaX(initializer.deltaX() ? initializer.deltaX() : negateIfPossible(initializer.wheelDeltaX()))
|
| + , m_deltaY(initializer.deltaY() ? initializer.deltaY() : negateIfPossible(initializer.wheelDeltaY()))
|
| , m_deltaZ(initializer.deltaZ())
|
| , m_deltaMode(initializer.deltaMode())
|
| , m_resendingPluginId(-1)
|
|
|