Home | History | Annotate | Download | only in caca
      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