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

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

Issue 7618036: mac: Only let two-finger-scrolling trigger history if web doesn't swallow gesture (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: TestRenderViewHost Created 9 years, 4 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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.h" 5 #include "content/browser/renderer_host/render_widget_host.h"
6 6
7 #include "base/auto_reset.h" 7 #include "base/auto_reset.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/debug/trace_event.h" 9 #include "base/debug/trace_event.h"
10 #include "base/i18n/rtl.h" 10 #include "base/i18n/rtl.h"
(...skipping 536 matching lines...) Expand 10 before | Expand all | Expand 10 after
547 &coalesced_mouse_wheel_events_.back(); 547 &coalesced_mouse_wheel_events_.back();
548 last_wheel_event->deltaX += wheel_event.deltaX; 548 last_wheel_event->deltaX += wheel_event.deltaX;
549 last_wheel_event->deltaY += wheel_event.deltaY; 549 last_wheel_event->deltaY += wheel_event.deltaY;
550 DCHECK_GE(wheel_event.timeStampSeconds, 550 DCHECK_GE(wheel_event.timeStampSeconds,
551 last_wheel_event->timeStampSeconds); 551 last_wheel_event->timeStampSeconds);
552 last_wheel_event->timeStampSeconds = wheel_event.timeStampSeconds; 552 last_wheel_event->timeStampSeconds = wheel_event.timeStampSeconds;
553 } 553 }
554 return; 554 return;
555 } 555 }
556 mouse_wheel_pending_ = true; 556 mouse_wheel_pending_ = true;
557 current_wheel_event_ = wheel_event;
557 558
558 HISTOGRAM_COUNTS_100("MPArch.RWH_WheelQueueSize", 559 HISTOGRAM_COUNTS_100("MPArch.RWH_WheelQueueSize",
559 coalesced_mouse_wheel_events_.size()); 560 coalesced_mouse_wheel_events_.size());
560 561
561 ForwardInputEvent(wheel_event, sizeof(WebMouseWheelEvent), false); 562 ForwardInputEvent(wheel_event, sizeof(WebMouseWheelEvent), false);
562 } 563 }
563 564
564 void RenderWidgetHost::ForwardGestureEvent( 565 void RenderWidgetHost::ForwardGestureEvent(
565 const WebKit::WebGestureEvent& gesture_event) { 566 const WebKit::WebGestureEvent& gesture_event) {
566 TRACE_EVENT0("renderer_host", "RenderWidgetHost::ForwardWheelEvent"); 567 TRACE_EVENT0("renderer_host", "RenderWidgetHost::ForwardWheelEvent");
(...skipping 439 matching lines...) Expand 10 before | Expand all | Expand 10 after
1006 UserMetrics::RecordAction(UserMetricsAction("BadMessageTerminate_RWH2")); 1007 UserMetrics::RecordAction(UserMetricsAction("BadMessageTerminate_RWH2"));
1007 process()->ReceivedBadMessage(); 1008 process()->ReceivedBadMessage();
1008 } else if (type == WebInputEvent::MouseMove) { 1009 } else if (type == WebInputEvent::MouseMove) {
1009 mouse_move_pending_ = false; 1010 mouse_move_pending_ = false;
1010 1011
1011 // now, we can send the next mouse move event 1012 // now, we can send the next mouse move event
1012 if (next_mouse_move_.get()) { 1013 if (next_mouse_move_.get()) {
1013 DCHECK(next_mouse_move_->type == WebInputEvent::MouseMove); 1014 DCHECK(next_mouse_move_->type == WebInputEvent::MouseMove);
1014 ForwardMouseEvent(*next_mouse_move_); 1015 ForwardMouseEvent(*next_mouse_move_);
1015 } 1016 }
1016 } else if (type == WebInputEvent::MouseWheel) {
1017 ProcessWheelAck();
1018 } else if (WebInputEvent::isKeyboardEventType(type)) { 1017 } else if (WebInputEvent::isKeyboardEventType(type)) {
1019 bool processed = false; 1018 bool processed = false;
1020 if (!message.ReadBool(&iter, &processed)) { 1019 if (!message.ReadBool(&iter, &processed)) {
1021 UserMetrics::RecordAction(UserMetricsAction("BadMessageTerminate_RWH3")); 1020 UserMetrics::RecordAction(UserMetricsAction("BadMessageTerminate_RWH3"));
1022 process()->ReceivedBadMessage(); 1021 process()->ReceivedBadMessage();
1023 } 1022 }
1024 1023
1025 ProcessKeyboardEventAck(type, processed); 1024 ProcessKeyboardEventAck(type, processed);
1025 } else if (type == WebInputEvent::MouseWheel) {
1026 bool processed = false;
1027 if (!message.ReadBool(&iter, &processed)) {
1028 UserMetrics::RecordAction(UserMetricsAction("BadMessageTerminate_RWH4"));
1029 process()->ReceivedBadMessage();
1030 }
1031
1032 ProcessWheelAck(processed);
1026 } else if (type == WebInputEvent::TouchMove) { 1033 } else if (type == WebInputEvent::TouchMove) {
1027 touch_move_pending_ = false; 1034 touch_move_pending_ = false;
1028 if (touch_event_is_queued_) { 1035 if (touch_event_is_queued_) {
1029 touch_event_is_queued_ = false; 1036 touch_event_is_queued_ = false;
1030 ForwardTouchEvent(queued_touch_event_); 1037 ForwardTouchEvent(queued_touch_event_);
1031 } 1038 }
1032 } 1039 }
1033 // This is used only for testing. 1040 // This is used only for testing.
1034 NotificationService::current()->Notify( 1041 NotificationService::current()->Notify(
1035 content::NOTIFICATION_RENDER_WIDGET_HOST_DID_RECEIVE_INPUT_EVENT_ACK, 1042 content::NOTIFICATION_RENDER_WIDGET_HOST_DID_RECEIVE_INPUT_EVENT_ACK,
1036 Source<RenderWidgetHost>(this), 1043 Source<RenderWidgetHost>(this),
1037 Details<int>(&type)); 1044 Details<int>(&type));
1038 } 1045 }
1039 1046
1040 void RenderWidgetHost::ProcessWheelAck() { 1047 void RenderWidgetHost::ProcessWheelAck(bool processed) {
1041 mouse_wheel_pending_ = false; 1048 mouse_wheel_pending_ = false;
1042 1049
1043 // Now send the next (coalesced) mouse wheel event. 1050 // Now send the next (coalesced) mouse wheel event.
1044 if (!coalesced_mouse_wheel_events_.empty()) { 1051 if (!coalesced_mouse_wheel_events_.empty()) {
1045 WebMouseWheelEvent next_wheel_event = 1052 WebMouseWheelEvent next_wheel_event =
1046 coalesced_mouse_wheel_events_.front(); 1053 coalesced_mouse_wheel_events_.front();
1047 coalesced_mouse_wheel_events_.pop_front(); 1054 coalesced_mouse_wheel_events_.pop_front();
1048 ForwardWheelEvent(next_wheel_event); 1055 ForwardWheelEvent(next_wheel_event);
1049 } 1056 }
1057
1058 if (!processed && !is_hidden_ && view_)
1059 view_->UnhandledWheelEvent(current_wheel_event_);
1050 } 1060 }
1051 1061
1052 void RenderWidgetHost::OnMsgFocus() { 1062 void RenderWidgetHost::OnMsgFocus() {
1053 // Only RenderViewHost can deal with that message. 1063 // Only RenderViewHost can deal with that message.
1054 UserMetrics::RecordAction(UserMetricsAction("BadMessageTerminate_RWH4")); 1064 UserMetrics::RecordAction(UserMetricsAction("BadMessageTerminate_RWH4"));
1055 process()->ReceivedBadMessage(); 1065 process()->ReceivedBadMessage();
1056 } 1066 }
1057 1067
1058 void RenderWidgetHost::OnMsgBlur() { 1068 void RenderWidgetHost::OnMsgBlur() {
1059 // Only RenderViewHost can deal with that message. 1069 // Only RenderViewHost can deal with that message.
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
1215 view_->CreatePluginContainer(deferred_plugin_handles_[i]); 1225 view_->CreatePluginContainer(deferred_plugin_handles_[i]);
1216 #endif 1226 #endif
1217 } 1227 }
1218 1228
1219 deferred_plugin_handles_.clear(); 1229 deferred_plugin_handles_.clear();
1220 } 1230 }
1221 1231
1222 void RenderWidgetHost::StartUserGesture() { 1232 void RenderWidgetHost::StartUserGesture() {
1223 OnUserGesture(); 1233 OnUserGesture();
1224 } 1234 }
OLDNEW
« no previous file with comments | « content/browser/renderer_host/render_widget_host.h ('k') | content/browser/renderer_host/render_widget_host_view.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698