Home | History | Annotate | Download | only in gamepad
      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