14e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 24e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 34e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// found in the LICENSE file. 44e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 5a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "content/common/input/synthetic_web_input_event_builders.h" 64e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 74e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "base/logging.h" 85c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "content/common/input/web_touch_event_traits.h" 94e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "ui/events/keycodes/keyboard_codes.h" 104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)namespace content { 124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebInputEvent; 14f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebKeyboardEvent; 15f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebGestureEvent; 16f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebMouseEvent; 17f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebMouseWheelEvent; 18f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebTouchEvent; 19f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebTouchPoint; 204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 211e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)WebMouseEvent SyntheticWebMouseEventBuilder::Build( 22f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebInputEvent::Type type) { 234e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) WebMouseEvent result; 244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) result.type = type; 254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return result; 264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 281e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)WebMouseEvent SyntheticWebMouseEventBuilder::Build( 29f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebInputEvent::Type type, 301e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) int window_x, 311e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) int window_y, 321e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) int modifiers) { 334e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) DCHECK(WebInputEvent::isMouseEventType(type)); 344e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) WebMouseEvent result = Build(type); 354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) result.x = window_x; 364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) result.y = window_y; 374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) result.windowX = window_x; 384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) result.windowY = window_y; 394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) result.modifiers = modifiers; 404e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 414e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) if (type == WebInputEvent::MouseDown || type == WebInputEvent::MouseUp) 424e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) result.button = WebMouseEvent::ButtonLeft; 434e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) else 444e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) result.button = WebMouseEvent::ButtonNone; 454e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 464e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return result; 474e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 484e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 491e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)WebMouseWheelEvent SyntheticWebMouseWheelEventBuilder::Build( 504e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) WebMouseWheelEvent::Phase phase) { 514e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) WebMouseWheelEvent result; 524e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) result.type = WebInputEvent::MouseWheel; 534e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) result.phase = phase; 544e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return result; 554e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 564e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 571e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)WebMouseWheelEvent SyntheticWebMouseWheelEventBuilder::Build(float dx, 581e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) float dy, 591e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) int modifiers, 601e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) bool precise) { 614e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) WebMouseWheelEvent result; 624e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) result.type = WebInputEvent::MouseWheel; 634e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) result.deltaX = dx; 644e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) result.deltaY = dy; 655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (dx) 665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) result.wheelTicksX = dx > 0.0f ? 1.0f : -1.0f; 675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (dy) 685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) result.wheelTicksY = dy > 0.0f ? 1.0f : -1.0f; 694e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) result.modifiers = modifiers; 704e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) result.hasPreciseScrollingDeltas = precise; 714e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return result; 724e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 734e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 74a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)WebKeyboardEvent SyntheticWebKeyboardEventBuilder::Build( 754e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) WebInputEvent::Type type) { 764e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) DCHECK(WebInputEvent::isKeyboardEventType(type)); 77a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) WebKeyboardEvent result; 784e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) result.type = type; 794e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) result.windowsKeyCode = ui::VKEY_L; // non-null made up value. 804e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return result; 814e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 824e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 831e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)WebGestureEvent SyntheticWebGestureEventBuilder::Build( 844e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) WebInputEvent::Type type, 8546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) blink::WebGestureDevice source_device) { 864e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) DCHECK(WebInputEvent::isGestureEventType(type)); 874e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) WebGestureEvent result; 884e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) result.type = type; 894e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) result.sourceDevice = source_device; 90a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) if (type == WebInputEvent::GestureTap || 91a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) type == WebInputEvent::GestureTapUnconfirmed || 92a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) type == WebInputEvent::GestureDoubleTap) { 93a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) result.data.tap.tapCount = 1; 94a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) result.data.tap.width = 10; 95a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) result.data.tap.height = 10; 96a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) } 974e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return result; 984e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 994e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1005d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)WebGestureEvent SyntheticWebGestureEventBuilder::BuildScrollBegin( 1015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) float dx_hint, 1025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) float dy_hint) { 1035d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) WebGestureEvent result = Build(WebInputEvent::GestureScrollBegin, 10446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) blink::WebGestureDeviceTouchscreen); 1055d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) result.data.scrollBegin.deltaXHint = dx_hint; 1065d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) result.data.scrollBegin.deltaYHint = dy_hint; 1075d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return result; 1085d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 1095d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1101e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)WebGestureEvent SyntheticWebGestureEventBuilder::BuildScrollUpdate( 1114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) float dx, 1124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) float dy, 1134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) int modifiers) { 1144e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) WebGestureEvent result = Build(WebInputEvent::GestureScrollUpdate, 11546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) blink::WebGestureDeviceTouchscreen); 1164e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) result.data.scrollUpdate.deltaX = dx; 1174e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) result.data.scrollUpdate.deltaY = dy; 1184e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) result.modifiers = modifiers; 1194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return result; 1204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 1214e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1221e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)WebGestureEvent SyntheticWebGestureEventBuilder::BuildPinchUpdate( 1234e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) float scale, 1244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) float anchor_x, 1254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) float anchor_y, 126010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) int modifiers, 12746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) blink::WebGestureDevice source_device) { 128010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) WebGestureEvent result = 129010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) Build(WebInputEvent::GesturePinchUpdate, source_device); 1304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) result.data.pinchUpdate.scale = scale; 1314e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) result.x = anchor_x; 1324e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) result.y = anchor_y; 133010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) result.globalX = anchor_x; 134010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) result.globalY = anchor_y; 1354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) result.modifiers = modifiers; 1364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return result; 1374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 1384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1391e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)WebGestureEvent SyntheticWebGestureEventBuilder::BuildFling( 1404e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) float velocity_x, 1414e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) float velocity_y, 14246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) blink::WebGestureDevice source_device) { 1434e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) WebGestureEvent result = Build(WebInputEvent::GestureFlingStart, 1444e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) source_device); 1454e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) result.data.flingStart.velocityX = velocity_x; 1464e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) result.data.flingStart.velocityY = velocity_y; 1474e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return result; 1484e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 1494e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 15046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)SyntheticWebTouchEvent::SyntheticWebTouchEvent() : WebTouchEvent() { 15146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) SetTimestamp(base::TimeTicks::Now() - base::TimeTicks()); 15246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)} 1534e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1541e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)void SyntheticWebTouchEvent::ResetPoints() { 1554e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) int point = 0; 1564e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) for (unsigned int i = 0; i < touchesLength; ++i) { 1574e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) if (touches[i].state == WebTouchPoint::StateReleased) 1584e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) continue; 1594e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1604e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) touches[point] = touches[i]; 1614e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) touches[point].state = WebTouchPoint::StateStationary; 1624e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ++point; 1634e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 1644e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) touchesLength = point; 1654e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) type = WebInputEvent::Undefined; 1664e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 1674e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 16823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)int SyntheticWebTouchEvent::PressPoint(float x, float y) { 1694e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) if (touchesLength == touchesLengthCap) 1704e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return -1; 1714e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) WebTouchPoint& point = touches[touchesLength]; 1724e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) point.id = touchesLength; 1734e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) point.position.x = point.screenPosition.x = x; 1744e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) point.position.y = point.screenPosition.y = y; 1754e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) point.state = WebTouchPoint::StatePressed; 1764e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) point.radiusX = point.radiusY = 1.f; 1774e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ++touchesLength; 1785c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu WebTouchEventTraits::ResetType( 1795c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu WebInputEvent::TouchStart, timeStampSeconds, this); 1804e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return point.id; 1814e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 1824e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 18323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)void SyntheticWebTouchEvent::MovePoint(int index, float x, float y) { 1844e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) CHECK(index >= 0 && index < touchesLengthCap); 1854e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) WebTouchPoint& point = touches[index]; 1864e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) point.position.x = point.screenPosition.x = x; 1874e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) point.position.y = point.screenPosition.y = y; 1884e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) touches[index].state = WebTouchPoint::StateMoved; 1895c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu WebTouchEventTraits::ResetType( 1905c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu WebInputEvent::TouchMove, timeStampSeconds, this); 1914e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 1924e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1931e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)void SyntheticWebTouchEvent::ReleasePoint(int index) { 1944e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) CHECK(index >= 0 && index < touchesLengthCap); 1954e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) touches[index].state = WebTouchPoint::StateReleased; 1965c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu WebTouchEventTraits::ResetType( 1975c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu WebInputEvent::TouchEnd, timeStampSeconds, this); 1984e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 1994e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 200f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)void SyntheticWebTouchEvent::CancelPoint(int index) { 201f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) CHECK(index >= 0 && index < touchesLengthCap); 202f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) touches[index].state = WebTouchPoint::StateCancelled; 2035c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu WebTouchEventTraits::ResetType( 2045c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu WebInputEvent::TouchCancel, timeStampSeconds, this); 205f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 206f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 2071e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)void SyntheticWebTouchEvent::SetTimestamp(base::TimeDelta timestamp) { 2084e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) timeStampSeconds = timestamp.InSecondsF(); 2094e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 2104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 2114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} // namespace content 212