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

Unified Diff: content/browser/renderer_host/render_widget_host_view_aura.cc

Issue 8377001: aura: Add touch-event support for RWHVA. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: windows Created 9 years, 2 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_aura.cc
diff --git a/content/browser/renderer_host/render_widget_host_view_aura.cc b/content/browser/renderer_host/render_widget_host_view_aura.cc
index 7e1e827a3fe25ad305e15ba165f99315f0c1c68a..61e1a4b16fc73edb1d5ebcde5e863b8ac419a329 100644
--- a/content/browser/renderer_host/render_widget_host_view_aura.cc
+++ b/content/browser/renderer_host/render_widget_host_view_aura.cc
@@ -25,6 +25,8 @@
#include "ui/gfx/gl/gl_bindings.h"
#endif
+using WebKit::WebTouchEvent;
+
namespace {
#if defined(UI_COMPOSITOR_IMAGE_TRANSPORT)
@@ -36,6 +38,37 @@ void AcknowledgeSwapBuffers(int32 route_id, int gpu_host_id) {
}
#endif
+ui::TouchStatus DecideTouchStatus(const WebKit::WebTouchEvent& event,
+ WebKit::WebTouchPoint* point) {
+ if (event.type == WebKit::WebInputEvent::TouchStart &&
+ event.touchesLength == 1)
+ return ui::TOUCH_STATUS_START;
+
+ if (event.type == WebKit::WebInputEvent::TouchMove && point == NULL)
+ return ui::TOUCH_STATUS_CONTINUE;
+
+ if (event.type == WebKit::WebInputEvent::TouchEnd &&
+ event.touchesLength == 0)
+ return ui::TOUCH_STATUS_END;
+
+ if (event.type == WebKit::WebInputEvent::TouchCancel)
+ return ui::TOUCH_STATUS_CANCEL;
+
+ return point ? ui::TOUCH_STATUS_CONTINUE : ui::TOUCH_STATUS_UNKNOWN;
+}
+
+void UpdateWebTouchEventAfterDispatch(WebKit::WebTouchEvent* event,
+ WebKit::WebTouchPoint* point) {
+ if (point->state != WebKit::WebTouchPoint::StateReleased)
sadrul 2011/10/25 19:09:55 I kept this here, and didn't move to content:: sin
+ return;
+ --event->touchesLength;
+ for (unsigned i = point - event->touches;
+ i < event->touchesLength;
+ ++i) {
+ event->touches[i] = event->touches[i + 1];
+ }
+}
+
} // namespace
////////////////////////////////////////////////////////////////////////////////
@@ -360,8 +393,17 @@ bool RenderWidgetHostViewAura::OnMouseEvent(aura::MouseEvent* event) {
ui::TouchStatus RenderWidgetHostViewAura::OnTouchEvent(
aura::TouchEvent* event) {
- NOTIMPLEMENTED();
- return ui::TOUCH_STATUS_UNKNOWN;
+ // Update the touch event first.
+ WebKit::WebTouchPoint* point = content::UpdateWebTouchEvent(event,
+ &touch_event_);
+
+ // Forward the touch event only if a touch point was updated.
+ if (point) {
+ host_->ForwardTouchEvent(touch_event_);
+ UpdateWebTouchEventAfterDispatch(&touch_event_, point);
+ }
+
+ return DecideTouchStatus(touch_event_, point);
}
bool RenderWidgetHostViewAura::ShouldActivate(aura::Event* event) {
« no previous file with comments | « content/browser/renderer_host/render_widget_host_view_aura.h ('k') | content/browser/renderer_host/web_input_event_aura.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698