1d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
2d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)// found in the LICENSE file.
4d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
5d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#ifndef WebKitGamepad_h
6d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define WebKitGamepad_h
7d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
8197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "bindings/core/v8/ScriptWrappable.h"
9d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#include "modules/gamepad/GamepadCommon.h"
1010f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch#include "platform/heap/Handle.h"
11d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#include "wtf/Vector.h"
12d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
13c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink {
14d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
156f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdochclass WebKitGamepad FINAL : public GarbageCollectedFinalized<WebKitGamepad>, public GamepadCommon, public ScriptWrappable {
167242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    DEFINE_WRAPPERTYPEINFO();
17d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)public:
186f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch    static WebKitGamepad* create()
19d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    {
206f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch        return new WebKitGamepad();
21d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    }
22d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    ~WebKitGamepad();
23d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
24d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    typedef Vector<float> FloatVector;
25d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
26d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    const FloatVector& buttons() const { return m_buttons; }
27e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    void setButtons(unsigned count, const WebGamepadButton* data);
28d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
29d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    void trace(Visitor*) { }
30d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
31d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)private:
32d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    WebKitGamepad();
33d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    FloatVector m_buttons;
34d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)};
35d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
36c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} // namespace blink
37d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
38d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#endif // WebKitGamepad_h
39