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 WebKitGamepadList_h
6d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define WebKitGamepadList_h
7d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
8197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "bindings/core/v8/ScriptWrappable.h"
9d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#include "modules/gamepad/WebKitGamepad.h"
1010f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch#include "platform/heap/Handle.h"
11d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#include "public/platform/WebGamepads.h"
12d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
13c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink {
14d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
15c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)class WebKitGamepadList FINAL : public GarbageCollected<WebKitGamepadList>, public ScriptWrappable {
167242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    DEFINE_WRAPPERTYPEINFO();
17d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)public:
186f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch    static WebKitGamepadList* create()
19d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    {
206f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch        return new WebKitGamepadList;
21d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    }
22d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
236f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch    void set(unsigned index, WebKitGamepad*);
24d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    WebKitGamepad* item(unsigned index);
25e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    unsigned length() const { return WebGamepads::itemsLengthCap; }
26d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
27d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    void trace(Visitor*);
28d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
29d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)private:
30d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    WebKitGamepadList();
31e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    Member<WebKitGamepad> m_items[WebGamepads::itemsLengthCap];
32d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)};
33d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
34c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} // namespace blink
35d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
36d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#endif // WebKitGamepadList_h
37