• 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 #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