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