|  | // Copyright 2015 The Chromium Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #ifndef COMPONENTS_EXO_TOUCH_DELEGATE_H_ | 
|  | #define COMPONENTS_EXO_TOUCH_DELEGATE_H_ | 
|  |  | 
|  | #include "base/time/time.h" | 
|  |  | 
|  | namespace gfx { | 
|  | class PointF; | 
|  | } | 
|  |  | 
|  | namespace exo { | 
|  | class Surface; | 
|  | class Touch; | 
|  |  | 
|  | // Handles events on touch devices in context-specific ways. | 
|  | class TouchDelegate { | 
|  | public: | 
|  | // Called at the top of the touch device's destructor, to give observers a | 
|  | // chance to remove themselves. | 
|  | virtual void OnTouchDestroying(Touch* touch) = 0; | 
|  |  | 
|  | // This should return true if |surface| is a valid target for this touch | 
|  | // device. E.g. the surface is owned by the same client as the touch device. | 
|  | virtual bool CanAcceptTouchEventsForSurface(Surface* surface) const = 0; | 
|  |  | 
|  | // Called when a new touch point has appeared on the surface. This touch | 
|  | // point is assigned a unique ID. Future events from this touch point | 
|  | // reference this ID. |location| is the initial location of touch point | 
|  | // relative to the origin of the surface. | 
|  | virtual void OnTouchDown(Surface* surface, | 
|  | base::TimeTicks time_stamp, | 
|  | int id, | 
|  | const gfx::PointF& location) = 0; | 
|  |  | 
|  | // Called when a touch point has disappeared. No further events will be sent | 
|  | // for this touch point. | 
|  | virtual void OnTouchUp(base::TimeTicks time_stamp, int id) = 0; | 
|  |  | 
|  | // Called when a touch point has changed coordinates. | 
|  | virtual void OnTouchMotion(base::TimeTicks time_stamp, | 
|  | int id, | 
|  | const gfx::PointF& location) = 0; | 
|  |  | 
|  | // Called when a touch point has changed its shape. | 
|  | virtual void OnTouchShape(int id, float major, float minor) = 0; | 
|  |  | 
|  | // Called when the client should apply all updated touches. | 
|  | virtual void OnTouchFrame() = 0; | 
|  |  | 
|  | // Called when the touch session has been canceled. Touch cancellation | 
|  | // applies to all touch points currently active. | 
|  | virtual void OnTouchCancel() = 0; | 
|  |  | 
|  | protected: | 
|  | virtual ~TouchDelegate() {} | 
|  | }; | 
|  |  | 
|  | }  // namespace exo | 
|  |  | 
|  | #endif  // COMPONENTS_EXO_TOUCH_DELEGATE_H_ |