#include "base/gtest_prod_util.h"
#include "base/macros.h"
+#include "base/memory/scoped_ptr.h"
#include "base/time/time.h"
#include "content/common/content_export.h"
+#include "ui/events/gesture_detection/gesture_listeners.h"
namespace ui {
-struct GestureEventData;
+class GestureDetector;
class MotionEvent;
}
virtual void ShowSelectionHandlesAutomatically() = 0;
virtual void SelectRange(float x1, float y1, float x2, float y2) = 0;
- virtual void Unselect() = 0;
virtual void LongPress(base::TimeTicks time, float x, float y) = 0;
};
// A class to handle gesture-based text selection, such as when clicking first
// button on stylus input. It also generates a synthetic long press gesture on
// tap so that a word can be selected or the contextual menu can be shown.
-class CONTENT_EXPORT GestureTextSelector {
+class CONTENT_EXPORT GestureTextSelector : public ui::SimpleGestureListener {
public:
explicit GestureTextSelector(GestureTextSelectorClient* client);
- virtual ~GestureTextSelector();
+ ~GestureTextSelector() override;
- // This should be called after gesture detection but before associated
- // gestures are dispatched. Returns whether it will consume |event|.
+ // This should be called before |event| is seen by the platform gesture
+ // detector or forwarded to web content.
bool OnTouchEvent(const ui::MotionEvent& event);
- // Returns whether it will consume the event.
- bool OnGestureEvent(const ui::GestureEventData& gesture);
-
private:
friend class GestureTextSelectorTest;
FRIEND_TEST_ALL_PREFIXES(GestureTextSelectorTest,
ShouldStartTextSelection);
+ // SimpleGestureListener implementation.
+ bool OnSingleTapUp(const ui::MotionEvent& e) override;
+ bool OnScroll(const ui::MotionEvent& e1,
+ const ui::MotionEvent& e2,
+ float distance_x,
+ float distance_y) override;
+
static bool ShouldStartTextSelection(const ui::MotionEvent& event);
GestureTextSelectorClient* client_;
bool text_selection_triggered_;
+ bool secondary_button_pressed_;
float anchor_x_;
float anchor_y_;
+ scoped_ptr<ui::GestureDetector> gesture_detector_;
DISALLOW_COPY_AND_ASSIGN(GestureTextSelector);
};