diff --git a/dom/base/nsDOMWindowUtils.cpp b/dom/base/nsDOMWindowUtils.cpp index 7fd9dad16f..638ab1135c 100644 --- a/dom/base/nsDOMWindowUtils.cpp +++ b/dom/base/nsDOMWindowUtils.cpp @@ -1030,9 +1030,7 @@ nsDOMWindowUtils::SendWheelEvent(float aX, wheelEvent.refPoint = ToWidgetPoint(CSSPoint(aX, aY), offset, presContext); - nsEventStatus status; - nsresult rv = widget->DispatchEvent(&wheelEvent, status); - NS_ENSURE_SUCCESS(rv, rv); + widget->DispatchAPZAwareEvent(&wheelEvent); bool failedX = false; if ((aOptions & WHEEL_EVENT_EXPECTED_OVERFLOW_DELTA_X_ZERO) && diff --git a/dom/events/EventStateManager.cpp b/dom/events/EventStateManager.cpp index c178edc7aa..595c82c169 100644 --- a/dom/events/EventStateManager.cpp +++ b/dom/events/EventStateManager.cpp @@ -87,6 +87,7 @@ #include "mozilla/LookAndFeel.h" #include "GoannaProfiler.h" #include "Units.h" +#include "mozilla/layers/APZCTreeManager.h" #ifdef XP_MACOSX #import @@ -3046,13 +3047,18 @@ EventStateManager::PostHandleEvent(nsPresContext* aPresContext, } WidgetWheelEvent* wheelEvent = aEvent->AsWheelEvent(); - switch (WheelPrefs::GetInstance()->ComputeActionFor(wheelEvent)) { - case WheelPrefs::ACTION_HSCROLL: { - // Swap axes and fall through - double deltaX = wheelEvent->deltaX; - wheelEvent->deltaX = wheelEvent->deltaY; - wheelEvent->deltaY = deltaX; - } + + // When APZ is enabled, the actual scroll animation might be handled by + // the compositor. + WheelPrefs::Action action; + if (gfxPrefs::AsyncPanZoomEnabled() && + layers::APZCTreeManager::WillHandleWheelEvent(wheelEvent)) + { + action = WheelPrefs::ACTION_NONE; + } else { + action = WheelPrefs::GetInstance()->ComputeActionFor(wheelEvent); + } + switch (action) { case WheelPrefs::ACTION_SCROLL: { // For scrolling of default action, we should honor the mouse wheel // transaction. diff --git a/dom/events/EventStateManager.h b/dom/events/EventStateManager.h index fe94041f44..3abc247a33 100644 --- a/dom/events/EventStateManager.h +++ b/dom/events/EventStateManager.h @@ -447,8 +447,7 @@ protected: ACTION_SCROLL, ACTION_HISTORY, ACTION_ZOOM, - ACTION_HSCROLL, - ACTION_LAST = ACTION_HSCROLL + ACTION_LAST = ACTION_ZOOM }; Action ComputeActionFor(WidgetWheelEvent* aEvent); diff --git a/dom/events/test/mochitest.ini b/dom/events/test/mochitest.ini index c31a5183e9..66142ed386 100644 --- a/dom/events/test/mochitest.ini +++ b/dom/events/test/mochitest.ini @@ -131,6 +131,7 @@ skip-if = buildapp == 'mulet' || buildapp == 'b2g' # b2g(failing when the test g [test_bug944011.html] [test_bug944847.html] [test_bug946632.html] +skip-if = buildapp == 'b2g' [test_bug967796.html] skip-if = toolkit == "gonk" || e10s [test_bug985988.html] @@ -165,7 +166,7 @@ skip-if = toolkit == 'android' #CRASH_DUMP, RANDOM skip-if = buildapp == 'mulet' [test_messageEvent.html] [test_moz_mouse_pixel_scroll_event.html] -skip-if = buildapp == 'mulet' +skip-if = buildapp == 'mulet' || buildapp == 'b2g' # bug 1126090, no wheel events on b2g [test_onerror_handler_args.html] [test_wheel_default_action.html] skip-if = buildapp == 'mulet' || buildapp == 'b2g' || e10s diff --git a/dom/events/test/test_bug946632.html b/dom/events/test/test_bug946632.html index 2de34ed951..7e2154d34c 100644 --- a/dom/events/test/test_bug946632.html +++ b/dom/events/test/test_bug946632.html @@ -7,6 +7,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=946632 Test for bug 946632 - propagate mouse-wheel vertical scroll events to container +