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 #include "config.h"
6 #include "modules/gamepad/GamepadDispatcher.h"
7
8 #include "modules/gamepad/NavigatorGamepad.h"
9 #include "public/platform/Platform.h"
10 #include "wtf/TemporaryChange.h"
11
12 namespace blink {
13
instance()14 GamepadDispatcher& GamepadDispatcher::instance()
15 {
16 DEFINE_STATIC_LOCAL(GamepadDispatcher, gamepadDispatcher, ());
17 return gamepadDispatcher;
18 }
19
sampleGamepads(WebGamepads & gamepads)20 void GamepadDispatcher::sampleGamepads(WebGamepads& gamepads)
21 {
22 Platform::current()->sampleGamepads(gamepads);
23 }
24
GamepadDispatcher()25 GamepadDispatcher::GamepadDispatcher()
26 {
27 }
28
~GamepadDispatcher()29 GamepadDispatcher::~GamepadDispatcher()
30 {
31 }
32
didConnectGamepad(unsigned index,const WebGamepad & gamepad)33 void GamepadDispatcher::didConnectGamepad(unsigned index, const WebGamepad& gamepad)
34 {
35 dispatchDidConnectOrDisconnectGamepad(index, gamepad, true);
36 }
37
didDisconnectGamepad(unsigned index,const WebGamepad & gamepad)38 void GamepadDispatcher::didDisconnectGamepad(unsigned index, const WebGamepad& gamepad)
39 {
40 dispatchDidConnectOrDisconnectGamepad(index, gamepad, false);
41 }
42
dispatchDidConnectOrDisconnectGamepad(unsigned index,const WebGamepad & gamepad,bool connected)43 void GamepadDispatcher::dispatchDidConnectOrDisconnectGamepad(unsigned index, const WebGamepad& gamepad, bool connected)
44 {
45 ASSERT(index < WebGamepads::itemsLengthCap);
46 ASSERT(connected == gamepad.connected);
47
48 m_latestChange.pad = gamepad;
49 m_latestChange.index = index;
50 notifyControllers();
51 }
52
startListening()53 void GamepadDispatcher::startListening()
54 {
55 Platform::current()->startListening(WebPlatformEventGamepad, this);
56 }
57
stopListening()58 void GamepadDispatcher::stopListening()
59 {
60 Platform::current()->stopListening(WebPlatformEventGamepad);
61 }
62
63 } // namespace blink
64