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.
6 #include "modules/gamepad/GamepadDispatcher.h"
8 #include "modules/gamepad/NavigatorGamepad.h"
9 #include "public/platform/Platform.h"
10 #include "wtf/TemporaryChange.h"
14 GamepadDispatcher& GamepadDispatcher::instance()
16 DEFINE_STATIC_LOCAL(Persistent<GamepadDispatcher>, gamepadDispatcher, (new GamepadDispatcher()));
17 return *gamepadDispatcher;
20 void GamepadDispatcher::sampleGamepads(WebGamepads& gamepads)
22 Platform::current()->sampleGamepads(gamepads);
25 GamepadDispatcher::GamepadDispatcher()
29 GamepadDispatcher::~GamepadDispatcher()
33 void GamepadDispatcher::trace(Visitor* visitor)
35 PlatformEventDispatcher::trace(visitor);
38 void GamepadDispatcher::didConnectGamepad(unsigned index, const WebGamepad& gamepad)
40 dispatchDidConnectOrDisconnectGamepad(index, gamepad, true);
43 void GamepadDispatcher::didDisconnectGamepad(unsigned index, const WebGamepad& gamepad)
45 dispatchDidConnectOrDisconnectGamepad(index, gamepad, false);
48 void GamepadDispatcher::dispatchDidConnectOrDisconnectGamepad(unsigned index, const WebGamepad& gamepad, bool connected)
50 ASSERT(index < WebGamepads::itemsLengthCap);
51 ASSERT(connected == gamepad.connected);
53 m_latestChange.pad = gamepad;
54 m_latestChange.index = index;
58 void GamepadDispatcher::startListening()
60 Platform::current()->startListening(WebPlatformEventGamepad, this);
63 void GamepadDispatcher::stopListening()
65 Platform::current()->stopListening(WebPlatformEventGamepad);