• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
latestConnectionChange()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