1 // Copyright 2018 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef UI_EVENTS_GESTURES_GESTURE_RECOGNIZER_IMPL_MAC_H_
6 #define UI_EVENTS_GESTURES_GESTURE_RECOGNIZER_IMPL_MAC_H_
7 
8 #include <stdint.h>
9 
10 #include "base/macros.h"
11 #include "ui/events/event.h"
12 #include "ui/events/events_export.h"
13 #include "ui/events/gestures/gesture_recognizer.h"
14 
15 namespace ui {
16 
17 // Stub implementation of GestureRecognizer for Mac. Currently only serves to
18 // provide a no-op implementation of TransferEventsTo().
19 class EVENTS_EXPORT GestureRecognizerImplMac : public GestureRecognizer {
20  public:
21   GestureRecognizerImplMac();
22   ~GestureRecognizerImplMac() override;
23 
24  private:
25   // GestureRecognizer:
26   bool ProcessTouchEventPreDispatch(TouchEvent* event,
27                                     GestureConsumer* consumer) override;
28   Gestures AckTouchEvent(uint32_t unique_event_id,
29                          ui::EventResult result,
30                          bool is_source_touch_event_set_non_blocking,
31                          GestureConsumer* consumer) override;
32   bool CleanupStateForConsumer(GestureConsumer* consumer) override;
33   GestureConsumer* GetTouchLockedTarget(const TouchEvent& event) override;
34   GestureConsumer* GetTargetForLocation(const gfx::PointF& location,
35                                         int source_device_id) override;
36   void CancelActiveTouchesExcept(GestureConsumer* not_cancelled) override;
37   void CancelActiveTouchesOn(
38       const std::vector<GestureConsumer*>& consumers) override;
39   void TransferEventsTo(
40       GestureConsumer* current_consumer,
41       GestureConsumer* new_consumer,
42       TransferTouchesBehavior transfer_touches_behavior) override;
43   std::vector<std::unique_ptr<ui::TouchEvent>> ExtractTouches(
44       GestureConsumer* consumer) override;
45   void TransferTouches(GestureConsumer* consumer,
46                        const std::vector<std::unique_ptr<ui::TouchEvent>>&
47                            touch_events) override;
48   bool GetLastTouchPointForTarget(GestureConsumer* consumer,
49                                   gfx::PointF* point) override;
50   bool CancelActiveTouches(GestureConsumer* consumer) override;
51   void AddGestureEventHelper(GestureEventHelper* helper) override;
52   void RemoveGestureEventHelper(GestureEventHelper* helper) override;
53 
54   DISALLOW_COPY_AND_ASSIGN(GestureRecognizerImplMac);
55 };
56 
57 }  // namespace ui
58 
59 #endif  // UI_EVENTS_GESTURES_GESTURE_RECOGNIZER_IMPL_MAC_H_
60