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

Side by Side Diff: content/browser/renderer_host/input/input_router_impl.cc

Issue 2624783002: Fix movementX/Y attributes for touch pointer events (Closed)
Patch Set: Wrap ForwardTouchEventWithLatencyInfo to always reset points Created 3 years, 10 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/input_router_impl.h" 5 #include "content/browser/renderer_host/input/input_router_impl.h"
6 6
7 #include <math.h> 7 #include <math.h>
8 8
9 #include <utility> 9 #include <utility>
10 10
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 touch_scroll_started_sent_ = true; 179 touch_scroll_started_sent_ = true;
180 } 180 }
181 touch_event_queue_->OnGestureScrollEvent(gesture_event); 181 touch_event_queue_->OnGestureScrollEvent(gesture_event);
182 } 182 }
183 183
184 gesture_event_queue_.QueueEvent(gesture_event); 184 gesture_event_queue_.QueueEvent(gesture_event);
185 } 185 }
186 186
187 void InputRouterImpl::SendTouchEvent( 187 void InputRouterImpl::SendTouchEvent(
188 const TouchEventWithLatencyInfo& touch_event) { 188 const TouchEventWithLatencyInfo& touch_event) {
189 input_stream_validator_.Validate(touch_event.event); 189 TouchEventWithLatencyInfo updatd_touch_event = touch_event;
190 touch_event_queue_->QueueEvent(touch_event); 190 SetMovementXYForTouchPoints(&updatd_touch_event.event);
191 input_stream_validator_.Validate(updatd_touch_event.event);
192 touch_event_queue_->QueueEvent(updatd_touch_event);
191 } 193 }
192 194
193 // Forwards MouseEvent without passing it through 195 // Forwards MouseEvent without passing it through
194 // TouchpadTapSuppressionController. 196 // TouchpadTapSuppressionController.
195 void InputRouterImpl::SendMouseEventImmediately( 197 void InputRouterImpl::SendMouseEventImmediately(
196 const MouseEventWithLatencyInfo& mouse_event) { 198 const MouseEventWithLatencyInfo& mouse_event) {
197 if (mouse_event.event.type() == blink::WebInputEvent::MouseMove) 199 if (mouse_event.event.type() == blink::WebInputEvent::MouseMove)
198 mouse_move_queue_.push_back(mouse_event); 200 mouse_move_queue_.push_back(mouse_event);
199 201
200 FilterAndSendWebInputEvent(mouse_event.event, mouse_event.latency); 202 FilterAndSendWebInputEvent(mouse_event.event, mouse_event.latency);
(...skipping 430 matching lines...) Expand 10 before | Expand all | Expand 10 after
631 return; 633 return;
632 634
633 flush_requested_ = false; 635 flush_requested_ = false;
634 client_->DidFlush(); 636 client_->DidFlush();
635 } 637 }
636 638
637 void InputRouterImpl::SetFrameTreeNodeId(int frameTreeNodeId) { 639 void InputRouterImpl::SetFrameTreeNodeId(int frameTreeNodeId) {
638 frame_tree_node_id_ = frameTreeNodeId; 640 frame_tree_node_id_ = frameTreeNodeId;
639 } 641 }
640 642
643 void InputRouterImpl::SetMovementXYForTouchPoints(blink::WebTouchEvent* event) {
644 for (size_t i = 0; i < event->touchesLength; ++i) {
645 blink::WebTouchPoint* touch_point = &event->touches[i];
646 if (touch_point->state == blink::WebTouchPoint::StateMoved) {
647 const gfx::Point& last_position = global_touch_position_[touch_point->id];
648 touch_point->movementX =
649 touch_point->screenPosition.x - last_position.x();
650 touch_point->movementY =
651 touch_point->screenPosition.y - last_position.y();
652 global_touch_position_[touch_point->id].SetPoint(
653 touch_point->screenPosition.x, touch_point->screenPosition.y);
654 } else {
655 touch_point->movementX = 0;
656 touch_point->movementY = 0;
657 if (touch_point->state == blink::WebTouchPoint::StateReleased ||
658 touch_point->state == blink::WebTouchPoint::StateCancelled) {
659 global_touch_position_.erase(touch_point->id);
660 } else if (touch_point->state == blink::WebTouchPoint::StatePressed) {
661 DCHECK(global_touch_position_.find(touch_point->id) ==
662 global_touch_position_.end());
663 global_touch_position_[touch_point->id] = gfx::Point(
664 touch_point->screenPosition.x, touch_point->screenPosition.y);
665 }
666 }
667 }
668 }
669
641 } // namespace content 670 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698