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

Side by Side Diff: content/browser/renderer_host/render_widget_host_impl.cc

Issue 1407053010: Make mouse wheel events trigger WebContentsObserver::DidGetUserInteraction. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Removing static initializer Created 5 years, 1 month 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/render_widget_host_impl.h" 5 #include "content/browser/renderer_host/render_widget_host_impl.h"
6 6
7 #include <math.h> 7 #include <math.h>
8 #include <set> 8 #include <set>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 using blink::WebGestureEvent; 85 using blink::WebGestureEvent;
86 using blink::WebInputEvent; 86 using blink::WebInputEvent;
87 using blink::WebKeyboardEvent; 87 using blink::WebKeyboardEvent;
88 using blink::WebMouseEvent; 88 using blink::WebMouseEvent;
89 using blink::WebMouseWheelEvent; 89 using blink::WebMouseWheelEvent;
90 using blink::WebTextDirection; 90 using blink::WebTextDirection;
91 91
92 namespace content { 92 namespace content {
93 namespace { 93 namespace {
94 94
95 // The amount of time after a mouse wheel event is sent to the delegate
96 // OnUserInteraction method before another mouse wheel event will be sent. This
97 // interval is used by the Blink EventHandler in its orthogonal heuristic for
98 // detecting the end of a scroll event (if no event has been seen in 0.1
99 // seconds, send an end scroll).
100 const double kMouseWheelCoalesceIntervalInSeconds = 0.1;
101
95 bool g_check_for_pending_resize_ack = true; 102 bool g_check_for_pending_resize_ack = true;
96 103
97 // <process id, routing id> 104 // <process id, routing id>
98 using RenderWidgetHostID = std::pair<int32_t, int32_t>; 105 using RenderWidgetHostID = std::pair<int32_t, int32_t>;
99 using RoutingIDWidgetMap = 106 using RoutingIDWidgetMap =
100 base::hash_map<RenderWidgetHostID, RenderWidgetHostImpl*>; 107 base::hash_map<RenderWidgetHostID, RenderWidgetHostImpl*>;
101 base::LazyInstance<RoutingIDWidgetMap> g_routing_id_widget_map = 108 base::LazyInstance<RoutingIDWidgetMap> g_routing_id_widget_map =
102 LAZY_INSTANCE_INITIALIZER; 109 LAZY_INSTANCE_INITIALIZER;
103 110
104 // Implements the RenderWidgetHostIterator interface. It keeps a list of 111 // Implements the RenderWidgetHostIterator interface. It keeps a list of
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 has_touch_handler_(false), 204 has_touch_handler_(false),
198 is_in_gesture_scroll_(false), 205 is_in_gesture_scroll_(false),
199 received_paint_after_load_(false), 206 received_paint_after_load_(false),
200 next_browser_snapshot_id_(1), 207 next_browser_snapshot_id_(1),
201 owned_by_render_frame_host_(false), 208 owned_by_render_frame_host_(false),
202 is_focused_(false), 209 is_focused_(false),
203 hung_renderer_delay_( 210 hung_renderer_delay_(
204 base::TimeDelta::FromMilliseconds(kHungRendererDelayMs)), 211 base::TimeDelta::FromMilliseconds(kHungRendererDelayMs)),
205 new_content_rendering_delay_( 212 new_content_rendering_delay_(
206 base::TimeDelta::FromMilliseconds(kNewContentRenderingDelayMs)), 213 base::TimeDelta::FromMilliseconds(kNewContentRenderingDelayMs)),
214 mouse_wheel_coalesce_timer_(new base::ElapsedTimer()),
207 weak_factory_(this) { 215 weak_factory_(this) {
208 CHECK(delegate_); 216 CHECK(delegate_);
209 CHECK_NE(MSG_ROUTING_NONE, routing_id_); 217 CHECK_NE(MSG_ROUTING_NONE, routing_id_);
210 218
211 std::pair<RoutingIDWidgetMap::iterator, bool> result = 219 std::pair<RoutingIDWidgetMap::iterator, bool> result =
212 g_routing_id_widget_map.Get().insert(std::make_pair( 220 g_routing_id_widget_map.Get().insert(std::make_pair(
213 RenderWidgetHostID(process->GetID(), routing_id_), this)); 221 RenderWidgetHostID(process->GetID(), routing_id_), this));
214 CHECK(result.second) << "Inserting a duplicate item!"; 222 CHECK(result.second) << "Inserting a duplicate item!";
215 process_->AddRoute(routing_id_, this); 223 process_->AddRoute(routing_id_, this);
216 224
(...skipping 1636 matching lines...) Expand 10 before | Expand all | Expand 10 after
1853 if (event.type == WebInputEvent::MouseDown || 1861 if (event.type == WebInputEvent::MouseDown ||
1854 event.type == WebInputEvent::GestureTapDown) { 1862 event.type == WebInputEvent::GestureTapDown) {
1855 OnUserGesture(); 1863 OnUserGesture();
1856 } 1864 }
1857 1865
1858 if (delegate_) { 1866 if (delegate_) {
1859 if (event.type == WebInputEvent::MouseDown || 1867 if (event.type == WebInputEvent::MouseDown ||
1860 event.type == WebInputEvent::GestureTapDown || 1868 event.type == WebInputEvent::GestureTapDown ||
1861 event.type == WebInputEvent::RawKeyDown) { 1869 event.type == WebInputEvent::RawKeyDown) {
1862 delegate_->OnUserInteraction(event.type); 1870 delegate_->OnUserInteraction(event.type);
1871 } else if (event.type == WebInputEvent::MouseWheel) {
1872 if (mouse_wheel_coalesce_timer_->Elapsed().InSecondsF() >
1873 kMouseWheelCoalesceIntervalInSeconds) {
1874 delegate_->OnUserInteraction(event.type);
1875 }
1876
1877 mouse_wheel_coalesce_timer_.reset(new base::ElapsedTimer());
1863 } 1878 }
1864 } 1879 }
1865 1880
1866 return view_ ? view_->FilterInputEvent(event) 1881 return view_ ? view_->FilterInputEvent(event)
1867 : INPUT_EVENT_ACK_STATE_NOT_CONSUMED; 1882 : INPUT_EVENT_ACK_STATE_NOT_CONSUMED;
1868 } 1883 }
1869 1884
1870 void RenderWidgetHostImpl::IncrementInFlightEventCount() { 1885 void RenderWidgetHostImpl::IncrementInFlightEventCount() {
1871 increment_in_flight_event_count(); 1886 increment_in_flight_event_count();
1872 if (!is_hidden_) 1887 if (!is_hidden_)
(...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after
2191 } 2206 }
2192 2207
2193 #if defined(OS_WIN) 2208 #if defined(OS_WIN)
2194 gfx::NativeViewAccessible 2209 gfx::NativeViewAccessible
2195 RenderWidgetHostImpl::GetParentNativeViewAccessible() { 2210 RenderWidgetHostImpl::GetParentNativeViewAccessible() {
2196 return delegate_ ? delegate_->GetParentNativeViewAccessible() : NULL; 2211 return delegate_ ? delegate_->GetParentNativeViewAccessible() : NULL;
2197 } 2212 }
2198 #endif 2213 #endif
2199 2214
2200 } // namespace content 2215 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/renderer_host/render_widget_host_impl.h ('k') | content/public/browser/web_contents_observer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698