Home | History | Annotate | Download | only in gamepad
      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 GamepadDispatcher_h
      6 #define GamepadDispatcher_h
      7 
      8 #include "core/frame/PlatformEventDispatcher.h"
      9 #include "platform/heap/Handle.h"
     10 #include "public/platform/WebGamepad.h"
     11 #include "public/platform/WebGamepadListener.h"
     12 
     13 namespace blink {
     14 
     15 class NavigatorGamepad;
     16 class WebGamepads;
     17 
     18 class GamepadDispatcher : public PlatformEventDispatcher, public WebGamepadListener {
     19 public:
     20     static GamepadDispatcher& instance();
     21 
     22     void sampleGamepads(WebGamepads&);
     23 
     24     struct ConnectionChange {
     25         WebGamepad pad;
     26         unsigned index;
     27     };
     28 
     29     const ConnectionChange& latestConnectionChange() const { return m_latestChange; }
     30 
     31 private:
     32     GamepadDispatcher();
     33     virtual ~GamepadDispatcher();
     34 
     35     // WebGamepadListener
     36     virtual void didConnectGamepad(unsigned index, const WebGamepad&) OVERRIDE;
     37     virtual void didDisconnectGamepad(unsigned index, const WebGamepad&) OVERRIDE;
     38 
     39     // PlatformEventDispatcher
     40     virtual void startListening() OVERRIDE;
     41     virtual void stopListening() OVERRIDE;
     42 
     43     void dispatchDidConnectOrDisconnectGamepad(unsigned index, const WebGamepad&, bool connected);
     44 
     45     ConnectionChange m_latestChange;
     46 };
     47 
     48 } // namespace blink
     49 
     50 #endif
     51