#ifndef UI_TOUCH_SELECTION_TOUCH_SELECTION_DRAGGABLE_H_
#define UI_TOUCH_SELECTION_TOUCH_SELECTION_DRAGGABLE_H_
#include "ui/gfx/geometry/point_f.h"
#include "ui/touch_selection/ui_touch_selection_export.h"
namespace ui {
class MotionEvent;
class TouchSelectionDraggable;
class UI_TOUCH_SELECTION_EXPORT TouchSelectionDraggableClient {
public:
virtual ~TouchSelectionDraggableClient() {}
virtual void OnDragBegin(const TouchSelectionDraggable& draggable,
const gfx::PointF& start_position) = 0;
virtual void OnDragUpdate(const TouchSelectionDraggable& draggable,
const gfx::PointF& new_position) = 0;
virtual void OnDragEnd(const TouchSelectionDraggable& draggable) = 0;
virtual bool IsWithinTapSlop(const gfx::Vector2dF& delta) const = 0;
#if BUILDFLAG(ARKWEB_MENU)
virtual void UpdateSelectionChanged(const TouchSelectionDraggable& draggable) = 0;
#endif
};
class UI_TOUCH_SELECTION_EXPORT TouchSelectionDraggable {
public:
enum class Type {
kNone,
kTouchHandle,
kLongpress,
};
protected:
virtual ~TouchSelectionDraggable() {}
virtual bool WillHandleTouchEvent(const MotionEvent& event) = 0;
virtual bool IsActive() const = 0;
#if BUILDFLAG(ARKWEB_MENU)
virtual bool IsDragging() const { return false; }
#endif
};
}
#endif