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

Unified Diff: content/renderer/browser_plugin/browser_plugin.cc

Issue 557863002: Remove references to WebTouchEvent.targetTouches (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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/renderer/browser_plugin/browser_plugin.cc
diff --git a/content/renderer/browser_plugin/browser_plugin.cc b/content/renderer/browser_plugin/browser_plugin.cc
index d7ba64b88e5514c9cb2d25e06f651a7e6968d74a..71dc8c2d70b378d2fa6c4925e6085752fb3671de 100644
--- a/content/renderer/browser_plugin/browser_plugin.cc
+++ b/content/renderer/browser_plugin/browser_plugin.cc
@@ -582,42 +582,48 @@ bool BrowserPlugin::handleInputEvent(const blink::WebInputEvent& event,
if (blink::WebInputEvent::isTouchEventType(event.type)) {
const blink::WebTouchEvent* orig_touch_event =
static_cast<const blink::WebTouchEvent*>(&event);
-
- touch_event.reset(new blink::WebTouchEvent());
- memcpy(touch_event.get(), orig_touch_event, sizeof(blink::WebTouchEvent));
-
- // TODO(bokan): Blink passes back a WebGestureEvent with a touches,
- // changedTouches, and targetTouches lists; however, it doesn't set
- // the state field on the touches which is what the RenderWidget uses
- // to create a WebCore::TouchEvent. crbug.com/358132 tracks removing
- // these multiple lists from WebTouchEvent since they lead to misuse
- // like this and are functionally unused. In the mean time we'll setup
- // the state field here manually to fix multi-touch BrowserPlugins.
- for (size_t i = 0; i < touch_event->touchesLength; ++i) {
- blink::WebTouchPoint& touch = touch_event->touches[i];
- touch.state = blink::WebTouchPoint::StateStationary;
- for (size_t j = 0; j < touch_event->changedTouchesLength; ++j) {
- blink::WebTouchPoint& changed_touch = touch_event->changedTouches[j];
- if (touch.id == changed_touch.id) {
- touch.state = changed_touch.state;
- break;
+ // TODO(jdduke): Remove this branch when Blink starts forwarding
+ // WebTouchEvents with a fully populated |touches| field.
+ if (orig_touch_event->changedTouchesLength) {
+ touch_event.reset(new blink::WebTouchEvent());
+ memcpy(touch_event.get(), orig_touch_event, sizeof(blink::WebTouchEvent));
+
+ if (touch_event->changedTouchesLength)
bokan 2014/09/09 20:17:38 Nit: I should have done this when i was here...can
jdduke (slow) 2014/09/09 20:52:24 Done.
+ // TODO(bokan): Blink passes back a WebGestureEvent with touches and
+ // changedTouches lists; however, it doesn't set the state field on the
+ // touches which is what the RenderWidget uses to create a
+ // WebCore::TouchEvent. crbug.com/358132 tracks removing these multiple
+ // from WebTouchEvent since they lead to misuse like this and are
+ // functionally unused. In the mean time we'll setup the state field
+ // here manually to fix multi-touch BrowserPlugins.
+ for (size_t i = 0; i < touch_event->touchesLength; ++i) {
+ blink::WebTouchPoint& touch = touch_event->touches[i];
+ touch.state = blink::WebTouchPoint::StateStationary;
+ for (size_t j = 0; j < touch_event->changedTouchesLength; ++j) {
+ blink::WebTouchPoint& changed_touch =
+ touch_event->changedTouches[j];
+ if (touch.id == changed_touch.id) {
+ touch.state = changed_touch.state;
+ break;
+ }
+ }
}
- }
- }
- // For End and Cancel, Blink gives BrowserPlugin a list of touches that
- // are down, but the browser process expects a list of all touches. We
- // modify these events here to match these expectations.
- if (event.type == blink::WebInputEvent::TouchEnd ||
- event.type == blink::WebInputEvent::TouchCancel) {
- if (touch_event->changedTouchesLength > 0) {
- memcpy(&touch_event->touches[touch_event->touchesLength],
- &touch_event->changedTouches,
+ // For End and Cancel, Blink gives BrowserPlugin a list of touches that
+ // are down, but the browser process expects a list of all touches. We
+ // modify these events here to match these expectations.
+ if (event.type == blink::WebInputEvent::TouchEnd ||
+ event.type == blink::WebInputEvent::TouchCancel) {
+ if (touch_event->changedTouchesLength > 0) {
+ memcpy(
+ &touch_event->touches[touch_event->touchesLength],
+ &touch_event->changedTouches,
touch_event->changedTouchesLength * sizeof(blink::WebTouchPoint));
- touch_event->touchesLength += touch_event->changedTouchesLength;
+ touch_event->touchesLength += touch_event->changedTouchesLength;
+ }
}
+ modified_event = touch_event.get();
}
- modified_event = touch_event.get();
}
if (blink::WebInputEvent::isKeyboardEventType(event.type) &&
« no previous file with comments | « no previous file | content/renderer/pepper/event_conversion.cc » ('j') | content/renderer/pepper/event_conversion.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698