| OLD | NEW | 
|    1 // Copyright 2016 The Chromium Authors. All rights reserved. |    1 // Copyright 2016 The Chromium Authors. All rights reserved. | 
|    2 // Use of this source code is governed by a BSD-style license that can be |    2 // Use of this source code is governed by a BSD-style license that can be | 
|    3 // found in the LICENSE file. |    3 // found in the LICENSE file. | 
|    4  |    4  | 
|    5 #include "content/browser/renderer_host/input/mouse_wheel_event_queue.h" |    5 #include "content/browser/renderer_host/input/mouse_wheel_event_queue.h" | 
|    6  |    6  | 
|    7 #include "base/memory/ptr_util.h" |    7 #include "base/memory/ptr_util.h" | 
|    8 #include "base/metrics/histogram_macros.h" |    8 #include "base/metrics/histogram_macros.h" | 
|    9 #include "base/trace_event/trace_event.h" |    9 #include "base/trace_event/trace_event.h" | 
|   10 #include "ui/events/base_event_utils.h" |   10 #include "ui/events/base_event_utils.h" | 
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   82  |   82  | 
|   83   // If event wasn't consumed then generate a gesture scroll for it. |   83   // If event wasn't consumed then generate a gesture scroll for it. | 
|   84   if (ack_result != INPUT_EVENT_ACK_STATE_CONSUMED && |   84   if (ack_result != INPUT_EVENT_ACK_STATE_CONSUMED && | 
|   85       ui::WebInputEventTraits::CanCauseScroll( |   85       ui::WebInputEventTraits::CanCauseScroll( | 
|   86           event_sent_for_gesture_ack_->event) && |   86           event_sent_for_gesture_ack_->event) && | 
|   87       event_sent_for_gesture_ack_->event.resendingPluginId == -1 && |   87       event_sent_for_gesture_ack_->event.resendingPluginId == -1 && | 
|   88       (scrolling_device_ == blink::WebGestureDeviceUninitialized || |   88       (scrolling_device_ == blink::WebGestureDeviceUninitialized || | 
|   89        scrolling_device_ == blink::WebGestureDeviceTouchpad)) { |   89        scrolling_device_ == blink::WebGestureDeviceTouchpad)) { | 
|   90     WebGestureEvent scroll_update( |   90     WebGestureEvent scroll_update( | 
|   91         WebInputEvent::GestureScrollUpdate, WebInputEvent::NoModifiers, |   91         WebInputEvent::GestureScrollUpdate, WebInputEvent::NoModifiers, | 
|   92         event_sent_for_gesture_ack_->event.timeStampSeconds); |   92         event_sent_for_gesture_ack_->event.timeStampSeconds()); | 
|   93  |   93  | 
|   94     scroll_update.x = event_sent_for_gesture_ack_->event.x; |   94     scroll_update.x = event_sent_for_gesture_ack_->event.x; | 
|   95     scroll_update.y = event_sent_for_gesture_ack_->event.y; |   95     scroll_update.y = event_sent_for_gesture_ack_->event.y; | 
|   96     scroll_update.globalX = event_sent_for_gesture_ack_->event.globalX; |   96     scroll_update.globalX = event_sent_for_gesture_ack_->event.globalX; | 
|   97     scroll_update.globalY = event_sent_for_gesture_ack_->event.globalY; |   97     scroll_update.globalY = event_sent_for_gesture_ack_->event.globalY; | 
|   98     scroll_update.sourceDevice = blink::WebGestureDeviceTouchpad; |   98     scroll_update.sourceDevice = blink::WebGestureDeviceTouchpad; | 
|   99     scroll_update.resendingPluginId = -1; |   99     scroll_update.resendingPluginId = -1; | 
|  100  |  100  | 
|  101     // Swap X & Y if Shift is down and when there is no horizontal movement. |  101     // Swap X & Y if Shift is down and when there is no horizontal movement. | 
|  102     if ((event_sent_for_gesture_ack_->event.modifiers & |  102     if ((event_sent_for_gesture_ack_->event.modifiers() & | 
|  103          WebInputEvent::ShiftKey) != 0 && |  103          WebInputEvent::ShiftKey) != 0 && | 
|  104         event_sent_for_gesture_ack_->event.deltaX == 0) { |  104         event_sent_for_gesture_ack_->event.deltaX == 0) { | 
|  105       scroll_update.data.scrollUpdate.deltaX = |  105       scroll_update.data.scrollUpdate.deltaX = | 
|  106           event_sent_for_gesture_ack_->event.deltaY; |  106           event_sent_for_gesture_ack_->event.deltaY; | 
|  107       scroll_update.data.scrollUpdate.deltaY = |  107       scroll_update.data.scrollUpdate.deltaY = | 
|  108           event_sent_for_gesture_ack_->event.deltaX; |  108           event_sent_for_gesture_ack_->event.deltaX; | 
|  109     } else { |  109     } else { | 
|  110       scroll_update.data.scrollUpdate.deltaX = |  110       scroll_update.data.scrollUpdate.deltaX = | 
|  111           event_sent_for_gesture_ack_->event.deltaX; |  111           event_sent_for_gesture_ack_->event.deltaX; | 
|  112       scroll_update.data.scrollUpdate.deltaY = |  112       scroll_update.data.scrollUpdate.deltaY = | 
| (...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  255       } |  255       } | 
|  256     } |  256     } | 
|  257   } |  257   } | 
|  258  |  258  | 
|  259   event_sent_for_gesture_ack_.reset(); |  259   event_sent_for_gesture_ack_.reset(); | 
|  260   TryForwardNextEventToRenderer(); |  260   TryForwardNextEventToRenderer(); | 
|  261 } |  261 } | 
|  262  |  262  | 
|  263 void MouseWheelEventQueue::OnGestureScrollEvent( |  263 void MouseWheelEventQueue::OnGestureScrollEvent( | 
|  264     const GestureEventWithLatencyInfo& gesture_event) { |  264     const GestureEventWithLatencyInfo& gesture_event) { | 
|  265   if (gesture_event.event.type == blink::WebInputEvent::GestureScrollBegin) { |  265   if (gesture_event.event.type() == blink::WebInputEvent::GestureScrollBegin) { | 
|  266     // If there is a current scroll going on and a new scroll that isn't |  266     // If there is a current scroll going on and a new scroll that isn't | 
|  267     // wheel based cancel current one by sending a ScrollEnd. |  267     // wheel based cancel current one by sending a ScrollEnd. | 
|  268     if (scroll_end_timer_.IsRunning() && |  268     if (scroll_end_timer_.IsRunning() && | 
|  269         gesture_event.event.sourceDevice != blink::WebGestureDeviceTouchpad) { |  269         gesture_event.event.sourceDevice != blink::WebGestureDeviceTouchpad) { | 
|  270       base::Closure task = scroll_end_timer_.user_task(); |  270       base::Closure task = scroll_end_timer_.user_task(); | 
|  271       scroll_end_timer_.Reset(); |  271       scroll_end_timer_.Reset(); | 
|  272       task.Run(); |  272       task.Run(); | 
|  273     } |  273     } | 
|  274     scrolling_device_ = gesture_event.event.sourceDevice; |  274     scrolling_device_ = gesture_event.event.sourceDevice; | 
|  275   } else if (scrolling_device_ == gesture_event.event.sourceDevice && |  275   } else if (scrolling_device_ == gesture_event.event.sourceDevice && | 
|  276              (gesture_event.event.type == |  276              (gesture_event.event.type() == | 
|  277                   blink::WebInputEvent::GestureScrollEnd || |  277                   blink::WebInputEvent::GestureScrollEnd || | 
|  278               gesture_event.event.type == |  278               gesture_event.event.type() == | 
|  279                   blink::WebInputEvent::GestureFlingStart)) { |  279                   blink::WebInputEvent::GestureFlingStart)) { | 
|  280     scrolling_device_ = blink::WebGestureDeviceUninitialized; |  280     scrolling_device_ = blink::WebGestureDeviceUninitialized; | 
|  281     if (scroll_end_timer_.IsRunning()) { |  281     if (scroll_end_timer_.IsRunning()) { | 
|  282       if (enable_scroll_latching_) { |  282       if (enable_scroll_latching_) { | 
|  283         // Don't send the pending ScrollEnd if a fling is happening. |  283         // Don't send the pending ScrollEnd if a fling is happening. | 
|  284         // The next wheel event will still need a ScrollBegin. |  284         // The next wheel event will still need a ScrollBegin. | 
|  285         scroll_end_timer_.Stop(); |  285         scroll_end_timer_.Stop(); | 
|  286         needs_scroll_begin_ = true; |  286         needs_scroll_begin_ = true; | 
|  287         needs_scroll_end_ = false; |  287         needs_scroll_end_ = false; | 
|  288       } else { |  288       } else { | 
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  348   scroll_begin.data.scrollBegin.deltaHintUnits = |  348   scroll_begin.data.scrollBegin.deltaHintUnits = | 
|  349       gesture_update.data.scrollUpdate.deltaUnits; |  349       gesture_update.data.scrollUpdate.deltaUnits; | 
|  350  |  350  | 
|  351   needs_scroll_begin_ = false; |  351   needs_scroll_begin_ = false; | 
|  352   needs_scroll_end_ = true; |  352   needs_scroll_end_ = true; | 
|  353   client_->ForwardGestureEventWithLatencyInfo( |  353   client_->ForwardGestureEventWithLatencyInfo( | 
|  354       scroll_begin, ui::LatencyInfo(ui::SourceEventType::WHEEL)); |  354       scroll_begin, ui::LatencyInfo(ui::SourceEventType::WHEEL)); | 
|  355 } |  355 } | 
|  356  |  356  | 
|  357 }  // namespace content |  357 }  // namespace content | 
| OLD | NEW |