1 // Copyright 2014 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_OZONE_PLATFORM_CACA_CACA_EVENT_FACTORY_H_ 6 #define UI_OZONE_PLATFORM_CACA_CACA_EVENT_FACTORY_H_ 7 8 #include "base/memory/ref_counted.h" 9 #include "base/time/time.h" 10 #include "ui/events/platform/platform_event_source.h" 11 #include "ui/gfx/geometry/point_f.h" 12 #include "ui/ozone/public/event_factory_ozone.h" 13 14 namespace ui { 15 16 class CacaConnection; 17 18 class CacaEventFactory : public EventFactoryOzone, 19 public PlatformEventSource { 20 public: 21 CacaEventFactory(CacaConnection* connection); 22 virtual ~CacaEventFactory(); 23 24 // ui::EventFactoryOzone: 25 virtual void WarpCursorTo(gfx::AcceleratedWidget widget, 26 const gfx::PointF& location) OVERRIDE; 27 28 private: 29 // PlatformEventSource: 30 virtual void OnDispatcherListChanged() OVERRIDE; 31 32 void ScheduleEventProcessing(); 33 34 void TryProcessingEvent(); 35 36 CacaConnection* connection_; // Not owned. 37 38 base::WeakPtrFactory<CacaEventFactory> weak_ptr_factory_; 39 40 // Delay between event polls. 41 base::TimeDelta delay_; 42 43 // Keep track of last cursor position to dispatch correct mouse push/release 44 // events. 45 gfx::PointF last_cursor_location_; 46 47 int modifier_flags_; 48 49 DISALLOW_COPY_AND_ASSIGN(CacaEventFactory); 50 }; 51 52 } // namespace ui 53 54 #endif // UI_OZONE_PLATFORM_CACA_CACA_EVENT_FACTORY_H_ 55