Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2607)

Unified Diff: content/browser/renderer_host/render_widget_host_view_mac.mm

Issue 2914393002: Adding phase info to wheel events migrated to wheel phase handler class. (Closed)
Patch Set: fixed mouse_wheel_phase_handler_path in rwhv_mac Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/renderer_host/render_widget_host_view_mac.mm
diff --git a/content/browser/renderer_host/render_widget_host_view_mac.mm b/content/browser/renderer_host/render_widget_host_view_mac.mm
index 8febafce8fcb01a69c1ffd41e1fd43f8aa180aff..925dbe1b20109ad3ce54fa1aa9902a1f2f72d467 100644
--- a/content/browser/renderer_host/render_widget_host_view_mac.mm
+++ b/content/browser/renderer_host/render_widget_host_view_mac.mm
@@ -440,6 +440,7 @@ RenderWidgetHostViewMac::RenderWidgetHostViewMac(RenderWidgetHost* widget,
bool is_guest_view_hack)
: render_widget_host_(RenderWidgetHostImpl::From(widget)),
page_at_minimum_scale_(true),
+ mouse_wheel_phase_handler_(RenderWidgetHostImpl::From(widget), this),
is_loading_(false),
allow_pause_for_resize_or_repaint_(true),
is_guest_view_hack_(is_guest_view_hack),
@@ -1753,50 +1754,6 @@ void RenderWidgetHostViewMac::OnDisplayMetricsChanged(
UpdateScreenInfo(cocoa_view_);
}
-void RenderWidgetHostViewMac::ScheduleMouseWheelEndDispatching(
- blink::WebMouseWheelEvent wheel_event,
- bool should_route_event) {
- mouse_wheel_end_dispatch_timer_.Start(
- FROM_HERE,
- base::TimeDelta::FromMilliseconds(
- kDefaultMouseWheelLatchingTransactionMs),
- base::Bind(
- &RenderWidgetHostViewMac::SendSyntheticWheelEventWithPhaseEnded,
- base::Unretained(this), wheel_event, should_route_event));
-}
-
-void RenderWidgetHostViewMac::DispatchPendingWheelEndEvent() {
- if (mouse_wheel_end_dispatch_timer_.IsRunning()) {
- base::Closure task = mouse_wheel_end_dispatch_timer_.user_task();
- mouse_wheel_end_dispatch_timer_.Stop();
- task.Run();
- }
-}
-
-void RenderWidgetHostViewMac::IgnorePendingWheelEndEvent() {
- mouse_wheel_end_dispatch_timer_.Stop();
-}
-
-bool RenderWidgetHostViewMac::HasPendingWheelEndEvent() {
- return mouse_wheel_end_dispatch_timer_.IsRunning();
-}
-
-void RenderWidgetHostViewMac::SendSyntheticWheelEventWithPhaseEnded(
- blink::WebMouseWheelEvent wheel_event,
- bool should_route_event) {
- wheel_event.dispatch_type =
- blink::WebInputEvent::DispatchType::kEventNonBlocking;
- if (should_route_event) {
- render_widget_host_->delegate()
- ->GetInputEventRouter()
- ->RouteMouseWheelEvent(this, &wheel_event,
- ui::LatencyInfo(ui::SourceEventType::WHEEL));
- } else {
- ProcessMouseWheelEvent(wheel_event,
- ui::LatencyInfo(ui::SourceEventType::WHEEL));
- }
-}
-
} // namespace content
// RenderWidgetHostViewCocoa ---------------------------------------------------
@@ -2398,7 +2355,8 @@ void RenderWidgetHostViewMac::SendSyntheticWheelEventWithPhaseEnded(
event, self);
webEvent.rails_mode = mouseWheelFilter_.UpdateRailsMode(webEvent);
if (renderWidgetHostView_->wheel_scroll_latching_enabled()) {
- renderWidgetHostView_->ScheduleMouseWheelEndDispatching(webEvent, false);
+ renderWidgetHostView_->mouse_wheel_phase_handler_
+ .AddPhaseIfNeededAndScheduleEndEvent(webEvent, false);
} else {
ui::LatencyInfo latency_info(ui::SourceEventType::WHEEL);
latency_info.AddLatencyNumber(ui::INPUT_EVENT_LATENCY_UI_COMPONENT, 0, 0);
@@ -2611,25 +2569,15 @@ void RenderWidgetHostViewMac::SendSyntheticWheelEventWithPhaseEnded(
ui::LatencyInfo latency_info(ui::SourceEventType::WHEEL);
latency_info.AddLatencyNumber(ui::INPUT_EVENT_LATENCY_UI_COMPONENT, 0, 0);
if (renderWidgetHostView_->wheel_scroll_latching_enabled()) {
+ renderWidgetHostView_->mouse_wheel_phase_handler_
+ .AddPhaseIfNeededAndScheduleEndEvent(
+ webEvent, renderWidgetHostView_->ShouldRouteEvent(webEvent));
if (webEvent.phase == blink::WebMouseWheelEvent::kPhaseEnded) {
- // Don't send the wheel end event immediately, start a timer instead to
- // see whether momentum phase of the scrolling starts or not.
- renderWidgetHostView_->ScheduleMouseWheelEndDispatching(
- webEvent, renderWidgetHostView_->ShouldRouteEvent(webEvent));
+ // A wheel end event is scheduled and will get dispatched if momentum
+ // phase doesn't start in 100ms. Don't sent the wheel end event
+ // immediately.
return;
}
- if (webEvent.phase == blink::WebMouseWheelEvent::kPhaseBegan) {
- // A new scrolling sequence has started, send the pending wheel end
- // event to end the previous scrolling sequence.
- renderWidgetHostView_->DispatchPendingWheelEndEvent();
-
- } else if (webEvent.momentum_phase ==
- blink::WebMouseWheelEvent::kPhaseBegan) {
- // Momentum phase has started, drop the pending wheel end event to make
- // sure that no wheel end event will be sent during the momentum phase
- // of scrolling.
- renderWidgetHostView_->IgnorePendingWheelEndEvent();
- }
}
if (renderWidgetHostView_->ShouldRouteEvent(webEvent)) {

Powered by Google App Engine
This is Rietveld 408576698