Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / modules / gamepad / GamepadDispatcher.cpp
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
14 GamepadDispatcher& GamepadDispatcher::instance()
15 {
16     DEFINE_STATIC_LOCAL(Persistent<GamepadDispatcher>, gamepadDispatcher, (new GamepadDispatcher()));
17     return *gamepadDispatcher;
18 }
19
20 void GamepadDispatcher::sampleGamepads(WebGamepads& gamepads)
21 {
22     Platform::current()->sampleGamepads(gamepads);
23 }
24
25 GamepadDispatcher::GamepadDispatcher()
26 {
27 }
28
29 GamepadDispatcher::~GamepadDispatcher()
30 {
31 }
32
33 void GamepadDispatcher::trace(Visitor* visitor)
34 {
35     PlatformEventDispatcher::trace(visitor);
36 }
37
38 void GamepadDispatcher::didConnectGamepad(unsigned index, const WebGamepad& gamepad)
39 {
40     dispatchDidConnectOrDisconnectGamepad(index, gamepad, true);
41 }
42
43 void GamepadDispatcher::didDisconnectGamepad(unsigned index, const WebGamepad& gamepad)
44 {
45     dispatchDidConnectOrDisconnectGamepad(index, gamepad, false);
46 }
47
48 void GamepadDispatcher::dispatchDidConnectOrDisconnectGamepad(unsigned index, const WebGamepad& gamepad, bool connected)
49 {
50     ASSERT(index < WebGamepads::itemsLengthCap);
51     ASSERT(connected == gamepad.connected);
52
53     m_latestChange.pad = gamepad;
54     m_latestChange.index = index;
55     notifyControllers();
56 }
57
58 void GamepadDispatcher::startListening()
59 {
60     Platform::current()->startListening(WebPlatformEventGamepad, this);
61 }
62
63 void GamepadDispatcher::stopListening()
64 {
65     Platform::current()->stopListening(WebPlatformEventGamepad);
66 }
67
68 } // namespace blink