Diff
Modified: trunk/LayoutTests/ChangeLog (100832 => 100833)
--- trunk/LayoutTests/ChangeLog 2011-11-19 01:48:13 UTC (rev 100832)
+++ trunk/LayoutTests/ChangeLog 2011-11-19 02:03:15 UTC (rev 100833)
@@ -1,3 +1,35 @@
+2011-11-18 Scott Graham <[email protected]>
+
+ IDL changes for gamepad support
+ https://bugs.webkit.org/show_bug.cgi?id=71753
+
+ Reviewed by Adam Barth.
+
+ Add basic api existence test.
+
+ * gamepad/gamepad-api-expected.txt: Added.
+ * gamepad/gamepad-api.html: Added.
+ * gamepad/gamepad-test.js: Added.
+ (logConsole):
+ (testExpected):
+ (reportExpected):
+ (waitForEventAndEnd):
+ (waitForEvent._eventCallback):
+ (waitForEvent):
+ (waitForEventAndTest._eventCallback):
+ (waitForEventAndTest):
+ (waitForEventTestAndEnd):
+ (endTest):
+ (logResult):
+ (consoleWrite):
+ * platform/chromium/fast/dom/navigator-detached-no-crash-expected.txt:
+ * platform/efl/Skipped:
+ * platform/gtk/Skipped:
+ * platform/mac/Skipped:
+ * platform/qt/Skipped:
+ * platform/win/Skipped:
+ * platform/wincairo/Skipped:
+
2011-11-18 Sheriff Bot <[email protected]>
Unreviewed, rolling out r100693.
Added: trunk/LayoutTests/gamepad/gamepad-api-expected.txt (0 => 100833)
--- trunk/LayoutTests/gamepad/gamepad-api-expected.txt (rev 0)
+++ trunk/LayoutTests/gamepad/gamepad-api-expected.txt 2011-11-19 02:03:15 UTC (rev 100833)
@@ -0,0 +1,3 @@
+EXPECTED (navigator.webkitGamepads !== 'undefined') OK
+END OF TEST
+Make sure the main polling access point exists on navigator.
Added: trunk/LayoutTests/gamepad/gamepad-api.html (0 => 100833)
--- trunk/LayoutTests/gamepad/gamepad-api.html (rev 0)
+++ trunk/LayoutTests/gamepad/gamepad-api.html 2011-11-19 02:03:15 UTC (rev 100833)
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<body>
+<script src=""
+<script>
+ testExpected("navigator.webkitGamepads", undefined, "!==");
+ endTest();
+</script>
+<p>Make sure the main polling access point exists on navigator.</p>
+</body>
Added: trunk/LayoutTests/gamepad/gamepad-test.js (0 => 100833)
--- trunk/LayoutTests/gamepad/gamepad-test.js (rev 0)
+++ trunk/LayoutTests/gamepad/gamepad-test.js 2011-11-19 02:03:15 UTC (rev 100833)
@@ -0,0 +1,126 @@
+var console = null;
+var printFullTestDetails = true; // This is optionaly switched of by test whose tested values can differ. (see disableFullTestDetailsPrinting())
+
+logConsole();
+
+if (window.layoutTestController) {
+ layoutTestController.dumpAsText();
+ layoutTestController.waitUntilDone();
+}
+
+function logConsole()
+{
+ if (!console && document.body) {
+ console = document.createElement('div');
+ document.body.appendChild(console);
+ }
+ return console;
+}
+
+function testExpected(testFuncString, expected, comparison)
+{
+ try {
+ var observed = eval(testFuncString);
+ } catch (ex) {
+ consoleWrite(ex);
+ return;
+ }
+
+ if (comparison === undefined)
+ comparison = '==';
+
+ var success = false;
+ switch (comparison)
+ {
+ case '<': success = observed < expected; break;
+ case '<=': success = observed <= expected; break;
+ case '>': success = observed > expected; break;
+ case '>=': success = observed >= expected; break;
+ case '!=': success = observed != expected; break;
+ case '!==': success = observed !== expected; break;
+ case '==': success = observed == expected; break;
+ case '===': success = observed === expected; break;
+ }
+
+ reportExpected(success, testFuncString, comparison, expected, observed)
+}
+
+var testNumber = 0;
+
+function reportExpected(success, testFuncString, comparison, expected, observed)
+{
+ testNumber++;
+
+ var msg = "Test " + testNumber;
+
+ if (printFullTestDetails || !success)
+ msg = "EXPECTED (<em>" + testFuncString + " </em>" + comparison + " '<em>" + expected + "</em>')";
+
+ if (!success)
+ msg += ", OBSERVED '<em>" + observed + "</em>'";
+
+ logResult(success, msg);
+}
+
+function waitForEventAndEnd(element, eventName, funcString)
+{
+ waitForEvent(element, eventName, funcString, true)
+}
+
+function waitForEvent(element, eventName, func, endit)
+{
+ function _eventCallback(event)
+ {
+ consoleWrite("EVENT(" + eventName + ")");
+
+ if (func)
+ func(event);
+
+ if (endit)
+ endTest();
+ }
+
+ element.addEventListener(eventName, _eventCallback);
+}
+
+function waitForEventAndTest(element, eventName, testFuncString, endit)
+{
+ function _eventCallback(event)
+ {
+ logResult(eval(testFuncString), "EVENT(" + eventName + ") TEST(" + testFuncString + ")");
+ if (endit)
+ endTest();
+ }
+
+ element.addEventListener(eventName, _eventCallback);
+}
+
+function waitForEventTestAndEnd(element, eventName, testFuncString)
+{
+ waitForEventAndTest(element, eventName, testFuncString, true);
+}
+
+var testEnded = false;
+
+function endTest()
+{
+ consoleWrite("END OF TEST");
+ testEnded = true;
+ if (window.layoutTestController)
+ layoutTestController.notifyDone();
+}
+
+function logResult(success, text)
+{
+ if (success)
+ consoleWrite(text + " <span style='color:green'>OK</span>");
+ else
+ consoleWrite(text + " <span style='color:red'>FAIL</span>");
+}
+
+function consoleWrite(text)
+{
+ if (testEnded)
+ return;
+ logConsole().innerHTML += text + "<br>";
+}
Modified: trunk/LayoutTests/platform/chromium/fast/dom/navigator-detached-no-crash-expected.txt (100832 => 100833)
--- trunk/LayoutTests/platform/chromium/fast/dom/navigator-detached-no-crash-expected.txt 2011-11-19 01:48:13 UTC (rev 100832)
+++ trunk/LayoutTests/platform/chromium/fast/dom/navigator-detached-no-crash-expected.txt 2011-11-19 02:03:15 UTC (rev 100833)
@@ -17,6 +17,7 @@
navigator.userAgent is OK
navigator.vendor is OK
navigator.vendorSub is OK
+navigator.webkitGamepads is OK
navigator.appCodeName is OK
navigator.appName is OK
navigator.appVersion is OK
@@ -34,4 +35,5 @@
navigator.userAgent is OK
navigator.vendor is OK
navigator.vendorSub is OK
+navigator.webkitGamepads is OK
Modified: trunk/LayoutTests/platform/efl/Skipped (100832 => 100833)
--- trunk/LayoutTests/platform/efl/Skipped 2011-11-19 01:48:13 UTC (rev 100832)
+++ trunk/LayoutTests/platform/efl/Skipped 2011-11-19 02:03:15 UTC (rev 100833)
@@ -1909,6 +1909,9 @@
fast/forms/time
fast/forms/week
+# ENABLE_GAMEPAD not enabled.
+gamepad/
+
# MutationObservers are net yet enabled. http://webkit.org/b/68729
fast/mutation
Modified: trunk/LayoutTests/platform/gtk/Skipped (100832 => 100833)
--- trunk/LayoutTests/platform/gtk/Skipped 2011-11-19 01:48:13 UTC (rev 100832)
+++ trunk/LayoutTests/platform/gtk/Skipped 2011-11-19 02:03:15 UTC (rev 100833)
@@ -258,6 +258,9 @@
fast/forms/time
fast/forms/week
+# ENABLE_GAMEPAD not enabled.
+gamepad/
+
# Speech input is not yet enabled.
fast/speech
Modified: trunk/LayoutTests/platform/mac/Skipped (100832 => 100833)
--- trunk/LayoutTests/platform/mac/Skipped 2011-11-19 01:48:13 UTC (rev 100832)
+++ trunk/LayoutTests/platform/mac/Skipped 2011-11-19 02:03:15 UTC (rev 100833)
@@ -214,6 +214,9 @@
fast/forms/time
fast/forms/week
+# ENABLE_GAMEPAD not enabled.
+gamepad/
+
# Speech input is not yet enabled.
fast/speech
Modified: trunk/LayoutTests/platform/qt/Skipped (100832 => 100833)
--- trunk/LayoutTests/platform/qt/Skipped 2011-11-19 01:48:13 UTC (rev 100832)
+++ trunk/LayoutTests/platform/qt/Skipped 2011-11-19 02:03:15 UTC (rev 100833)
@@ -89,6 +89,9 @@
fast/forms/time
fast/forms/week
+# ENABLE_GAMEPAD not enabled.
+gamepad/
+
# ENABLE(INPUT_SPEECH) is disabled.
fast/speech
Modified: trunk/LayoutTests/platform/win/Skipped (100832 => 100833)
--- trunk/LayoutTests/platform/win/Skipped 2011-11-19 01:48:13 UTC (rev 100832)
+++ trunk/LayoutTests/platform/win/Skipped 2011-11-19 02:03:15 UTC (rev 100833)
@@ -1122,6 +1122,9 @@
fast/forms/time
fast/forms/week
+# ENABLE_GAMEPAD not enabled.
+gamepad/
+
# Speech input is not yet enabled.
fast/speech
Modified: trunk/LayoutTests/platform/wincairo/Skipped (100832 => 100833)
--- trunk/LayoutTests/platform/wincairo/Skipped 2011-11-19 01:48:13 UTC (rev 100832)
+++ trunk/LayoutTests/platform/wincairo/Skipped 2011-11-19 02:03:15 UTC (rev 100833)
@@ -1639,6 +1639,9 @@
fast/forms/time
fast/forms/week
+# ENABLE_GAMEPAD not enabled.
+gamepad/
+
# Speech input is not yet enabled.
fast/speech
Modified: trunk/Source/WebCore/ChangeLog (100832 => 100833)
--- trunk/Source/WebCore/ChangeLog 2011-11-19 01:48:13 UTC (rev 100832)
+++ trunk/Source/WebCore/ChangeLog 2011-11-19 02:03:15 UTC (rev 100833)
@@ -1,3 +1,42 @@
+2011-11-18 Scott Graham <[email protected]>
+
+ IDL changes for gamepad support
+ https://bugs.webkit.org/show_bug.cgi?id=71753
+
+ Reviewed by Adam Barth.
+
+ IDL changes and associated plumbing to expose list of gamepad objects
+ on navigator object (per current spec). Full patch is
+ https://bugs.webkit.org/show_bug.cgi?id=69451. Only basic existence
+ test until more plumbing in future patches.
+
+ Test: gamepad/gamepad-api.html
+
+ * WebCore.gypi:
+ * bindings/generic/RuntimeEnabledFeatures.h:
+ (WebCore::RuntimeEnabledFeatures::setWebkitGamepadsEnabled):
+ (WebCore::RuntimeEnabledFeatures::webkitGamepadsEnabled):
+ * page/Gamepad.cpp: Added.
+ (WebCore::Gamepad::Gamepad):
+ (WebCore::Gamepad::axes):
+ (WebCore::Gamepad::buttons):
+ (WebCore::Gamepad::~Gamepad):
+ * page/Gamepad.h: Added.
+ * page/Gamepad.idl: Added.
+ * page/GamepadList.cpp: Added.
+ (WebCore::GamepadList::~GamepadList):
+ (WebCore::GamepadList::set):
+ (WebCore::GamepadList::length):
+ (WebCore::GamepadList::item):
+ * page/GamepadList.h: Added.
+ (WebCore::GamepadList::create):
+ (WebCore::GamepadList::GamepadList):
+ * page/GamepadList.idl: Added.
+ * page/Navigator.cpp:
+ (WebCore::Navigator::webkitGamepads):
+ * page/Navigator.h:
+ * page/Navigator.idl:
+
2011-11-18 Sheriff Bot <[email protected]>
Unreviewed, rolling out r100693.
Modified: trunk/Source/WebCore/WebCore.gypi (100832 => 100833)
--- trunk/Source/WebCore/WebCore.gypi 2011-11-19 01:48:13 UTC (rev 100832)
+++ trunk/Source/WebCore/WebCore.gypi 2011-11-19 02:03:15 UTC (rev 100833)
@@ -1402,6 +1402,8 @@
'page/DOMSelection.idl',
'page/DOMWindow.idl',
'page/EventSource.idl',
+ 'page/Gamepad.idl',
+ 'page/GamepadList.idl',
'page/Geolocation.idl',
'page/Geoposition.idl',
'page/History.idl',
@@ -2949,6 +2951,10 @@
'page/FrameActionScheduler.h',
'page/FrameTree.cpp',
'page/FrameView.cpp',
+ 'page/Gamepad.cpp',
+ 'page/Gamepad.h',
+ 'page/GamepadList.cpp',
+ 'page/GamepadList.h',
'page/Geolocation.cpp',
'page/GeolocationController.cpp',
'page/GroupSettings.cpp',
Modified: trunk/Source/WebCore/bindings/generic/RuntimeEnabledFeatures.h (100832 => 100833)
--- trunk/Source/WebCore/bindings/generic/RuntimeEnabledFeatures.h 2011-11-19 01:48:13 UTC (rev 100832)
+++ trunk/Source/WebCore/bindings/generic/RuntimeEnabledFeatures.h 2011-11-19 02:03:15 UTC (rev 100833)
@@ -172,8 +172,8 @@
#endif
#if ENABLE(GAMEPAD)
- static void setGamepadsEnabled(bool isEnabled) { isGamepadEnabled = isEnabled; }
- static bool gamepadsEnabled() { return isGamepadEnabled; }
+ static void setWebkitGamepadsEnabled(bool isEnabled) { isGamepadEnabled = isEnabled; }
+ static bool webkitGamepadsEnabled() { return isGamepadEnabled; }
#endif
#if ENABLE(QUOTA)
Added: trunk/Source/WebCore/page/Gamepad.cpp (0 => 100833)
--- trunk/Source/WebCore/page/Gamepad.cpp (rev 0)
+++ trunk/Source/WebCore/page/Gamepad.cpp 2011-11-19 02:03:15 UTC (rev 100833)
@@ -0,0 +1,55 @@
+// Copyright (C) 2011, Google Inc. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// 2. Redistributions in binary form must reproduce the above copyright
+// notice, this list of conditions and the following disclaimer in the
+// documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND
+// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+// DAMAGE.
+
+#include "config.h"
+#include "Gamepad.h"
+
+#if ENABLE(GAMEPAD)
+
+#include <wtf/text/WTFString.h>
+
+namespace WebCore {
+
+Gamepad::Gamepad()
+{
+}
+
+void Gamepad::axes(unsigned count, float* data)
+{
+ m_axes.resize(count);
+ std::copy(data, data + count, m_axes.begin());
+}
+
+void Gamepad::buttons(unsigned count, float* data)
+{
+ m_buttons.resize(count);
+ std::copy(data, data + count, m_buttons.begin());
+}
+
+Gamepad::~Gamepad()
+{
+}
+
+} // namespace WebCore
+
+#endif // ENABLE(GAMEPAD)
Added: trunk/Source/WebCore/page/Gamepad.h (0 => 100833)
--- trunk/Source/WebCore/page/Gamepad.h (rev 0)
+++ trunk/Source/WebCore/page/Gamepad.h 2011-11-19 02:03:15 UTC (rev 100833)
@@ -0,0 +1,73 @@
+// Copyright (C) 2011, Google Inc. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// 2. Redistributions in binary form must reproduce the above copyright
+// notice, this list of conditions and the following disclaimer in the
+// documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND
+// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+// DAMAGE.
+
+#ifndef Gamepad_h
+#define Gamepad_h
+
+#if ENABLE(GAMEPAD)
+
+#include <wtf/RefCounted.h>
+#include <wtf/Vector.h>
+#include <wtf/text/WTFString.h>
+
+namespace WebCore {
+
+class Gamepad: public RefCounted<Gamepad> {
+public:
+ static PassRefPtr<Gamepad> create()
+ {
+ return adoptRef(new Gamepad);
+ }
+ ~Gamepad();
+
+ typedef Vector<float> FloatVector;
+
+ const String& id() const { return m_id; }
+ void id(const String& id) { m_id = id; }
+
+ unsigned index() const { return m_index; }
+ void index(unsigned val) { m_index = val; }
+
+ unsigned long long timestamp() const { return m_timestamp; }
+ void timestamp(unsigned long long val) { m_timestamp = val; }
+
+ const FloatVector& axes() const { return m_axes; }
+ void axes(unsigned count, float* data);
+
+ const FloatVector& buttons() const { return m_buttons; }
+ void buttons(unsigned count, float* data);
+
+private:
+ Gamepad();
+ String m_id;
+ unsigned m_index;
+ unsigned long long m_timestamp;
+ FloatVector m_axes;
+ FloatVector m_buttons;
+};
+
+} // namespace WebCore
+
+#endif // ENABLE(GAMEPAD)
+
+#endif // Gamepad_h
Added: trunk/Source/WebCore/page/Gamepad.idl (0 => 100833)
--- trunk/Source/WebCore/page/Gamepad.idl (rev 0)
+++ trunk/Source/WebCore/page/Gamepad.idl 2011-11-19 02:03:15 UTC (rev 100833)
@@ -0,0 +1,36 @@
+// Copyright (C) 2011, Google Inc. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// 2. Redistributions in binary form must reproduce the above copyright
+// notice, this list of conditions and the following disclaimer in the
+// documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND
+// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+// DAMAGE.
+
+module dom {
+
+ interface [
+ Conditional=GAMEPAD
+ ] Gamepad {
+ readonly attribute DOMString id;
+ readonly attribute unsigned long index;
+ readonly attribute unsigned long long timestamp;
+ readonly attribute float[] axes;
+ readonly attribute float[] buttons;
+ };
+
+}
Added: trunk/Source/WebCore/page/GamepadList.cpp (0 => 100833)
--- trunk/Source/WebCore/page/GamepadList.cpp (rev 0)
+++ trunk/Source/WebCore/page/GamepadList.cpp 2011-11-19 02:03:15 UTC (rev 100833)
@@ -0,0 +1,56 @@
+// Copyright (C) 2011, Google Inc. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// 2. Redistributions in binary form must reproduce the above copyright
+// notice, this list of conditions and the following disclaimer in the
+// documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND
+// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+// DAMAGE.
+
+#include "config.h"
+#include "GamepadList.h"
+
+#include "Gamepad.h"
+
+#if ENABLE(GAMEPAD)
+
+namespace WebCore {
+
+GamepadList::~GamepadList()
+{
+}
+
+void GamepadList::set(unsigned index, PassRefPtr<Gamepad> gamepad)
+{
+ if (index >= kMaximumGamepads)
+ return;
+ m_items[index] = gamepad;
+}
+
+unsigned GamepadList::length() const
+{
+ return kMaximumGamepads;
+}
+
+Gamepad* GamepadList::item(unsigned index)
+{
+ return index < length() ? m_items[index].get() : 0;
+}
+
+} // namespace WebCore
+
+#endif // ENABLE(GAMEPAD)
Added: trunk/Source/WebCore/page/GamepadList.h (0 => 100833)
--- trunk/Source/WebCore/page/GamepadList.h (rev 0)
+++ trunk/Source/WebCore/page/GamepadList.h 2011-11-19 02:03:15 UTC (rev 100833)
@@ -0,0 +1,57 @@
+// Copyright (C) 2011, Google Inc. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// 2. Redistributions in binary form must reproduce the above copyright
+// notice, this list of conditions and the following disclaimer in the
+// documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND
+// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+// DAMAGE.
+
+#ifndef GamepadList_h
+#define GamepadList_h
+
+#if ENABLE(GAMEPAD)
+
+#include "Gamepad.h"
+#include <wtf/PassRefPtr.h>
+#include <wtf/RefCounted.h>
+#include <wtf/Vector.h>
+
+namespace WebCore {
+
+typedef Vector<RefPtr<Gamepad> > GamepadVector;
+
+class GamepadList : public RefCounted<GamepadList> {
+public:
+ static PassRefPtr<GamepadList> create() { return adoptRef(new GamepadList); }
+ ~GamepadList();
+
+ void set(unsigned index, PassRefPtr<Gamepad>);
+ Gamepad* item(unsigned index);
+ unsigned length() const;
+
+private:
+ enum { kMaximumGamepads = 4 };
+ GamepadList() { }
+ RefPtr<Gamepad> m_items[kMaximumGamepads];
+};
+
+} // namespace WebCore
+
+#endif // ENABLE(GAMEPAD)
+
+#endif // GamepadList_h
Added: trunk/Source/WebCore/page/GamepadList.idl (0 => 100833)
--- trunk/Source/WebCore/page/GamepadList.idl (rev 0)
+++ trunk/Source/WebCore/page/GamepadList.idl 2011-11-19 02:03:15 UTC (rev 100833)
@@ -0,0 +1,34 @@
+// Copyright (C) 2011, Google Inc. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// 2. Redistributions in binary form must reproduce the above copyright
+// notice, this list of conditions and the following disclaimer in the
+// documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND
+// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+// DAMAGE.
+
+module dom {
+
+ interface [
+ Conditional=GAMEPAD,
+ HasIndexGetter
+ ] GamepadList {
+ readonly attribute unsigned long length;
+ Gamepad item(in [Optional=CallWithDefaultValue] unsigned long index);
+ };
+
+}
Modified: trunk/Source/WebCore/page/Navigator.cpp (100832 => 100833)
--- trunk/Source/WebCore/page/Navigator.cpp 2011-11-19 01:48:13 UTC (rev 100832)
+++ trunk/Source/WebCore/page/Navigator.cpp 2011-11-19 02:03:15 UTC (rev 100833)
@@ -32,6 +32,7 @@
#include "Frame.h"
#include "FrameLoader.h"
#include "FrameLoaderClient.h"
+#include "GamepadList.h"
#include "Geolocation.h"
#include "PointerLock.h"
#include "KURL.h"
@@ -304,4 +305,12 @@
}
#endif
+#if ENABLE(GAMEPAD)
+GamepadList* Navigator::webkitGamepads()
+{
+ // Stubbed until platform/ changes landed.
+ return 0;
+}
+#endif
+
} // namespace WebCore
Modified: trunk/Source/WebCore/page/Navigator.h (100832 => 100833)
--- trunk/Source/WebCore/page/Navigator.h 2011-11-19 01:48:13 UTC (rev 100832)
+++ trunk/Source/WebCore/page/Navigator.h 2011-11-19 02:03:15 UTC (rev 100833)
@@ -31,6 +31,7 @@
class DOMMimeTypeArray;
class DOMPluginArray;
class Frame;
+class GamepadList;
class Geolocation;
class PointerLock;
class NavigatorUserMediaErrorCallback;
@@ -74,6 +75,10 @@
virtual void webkitGetUserMedia(const String& options, PassRefPtr<NavigatorUserMediaSuccessCallback>, PassRefPtr<NavigatorUserMediaErrorCallback>, ExceptionCode&);
#endif
+#if ENABLE(GAMEPAD)
+ GamepadList* webkitGamepads();
+#endif
+
private:
Navigator(Frame*);
Frame* m_frame;
Modified: trunk/Source/WebCore/page/Navigator.idl (100832 => 100833)
--- trunk/Source/WebCore/page/Navigator.idl 2011-11-19 01:48:13 UTC (rev 100832)
+++ trunk/Source/WebCore/page/Navigator.idl 2011-11-19 02:03:15 UTC (rev 100833)
@@ -61,6 +61,8 @@
in [Callback=FunctionOnly, Optional] NavigatorUserMediaErrorCallback errorCallback)
raises(DOMException);
#endif
+
+ readonly attribute [Conditional=GAMEPAD, EnabledAtRuntime] GamepadList webkitGamepads;
};
}
Modified: trunk/Source/WebKit/chromium/ChangeLog (100832 => 100833)
--- trunk/Source/WebKit/chromium/ChangeLog 2011-11-19 01:48:13 UTC (rev 100832)
+++ trunk/Source/WebKit/chromium/ChangeLog 2011-11-19 02:03:15 UTC (rev 100833)
@@ -1,3 +1,16 @@
+2011-11-18 Scott Graham <[email protected]>
+
+ IDL changes for gamepad support
+ https://bugs.webkit.org/show_bug.cgi?id=71753
+
+ Reviewed by Adam Barth.
+
+ Update to use vendor-prefixed enable.
+
+ * src/WebRuntimeFeatures.cpp:
+ (WebKit::WebRuntimeFeatures::enableGamepad):
+ (WebKit::WebRuntimeFeatures::isGamepadEnabled):
+
2011-11-18 Daniel Cheng <[email protected]>
[chromium] Use correct backing store for ChromiumDataObject in pasteboard writes.
Modified: trunk/Source/WebKit/chromium/src/WebRuntimeFeatures.cpp (100832 => 100833)
--- trunk/Source/WebKit/chromium/src/WebRuntimeFeatures.cpp 2011-11-19 01:48:13 UTC (rev 100832)
+++ trunk/Source/WebKit/chromium/src/WebRuntimeFeatures.cpp 2011-11-19 02:03:15 UTC (rev 100833)
@@ -417,7 +417,7 @@
void WebRuntimeFeatures::enableGamepad(bool enable)
{
#if ENABLE(GAMEPAD)
- RuntimeEnabledFeatures::setGamepadsEnabled(enable);
+ RuntimeEnabledFeatures::setWebkitGamepadsEnabled(enable);
#else
UNUSED_PARAM(enable);
#endif
@@ -426,7 +426,7 @@
bool WebRuntimeFeatures::isGamepadEnabled()
{
#if ENABLE(GAMEPAD)
- return RuntimeEnabledFeatures::gamepadsEnabled();
+ return RuntimeEnabledFeatures::webkitGamepadsEnabled();
#else
return false;
#endif
Modified: trunk/Tools/ChangeLog (100832 => 100833)
--- trunk/Tools/ChangeLog 2011-11-19 01:48:13 UTC (rev 100832)
+++ trunk/Tools/ChangeLog 2011-11-19 02:03:15 UTC (rev 100833)
@@ -1,3 +1,15 @@
+2011-11-18 Scott Graham <[email protected]>
+
+ IDL changes for gamepad support
+ https://bugs.webkit.org/show_bug.cgi?id=71753
+
+ Reviewed by Adam Barth.
+
+ Runtime enable gamepad in chromium test shell.
+
+ * DumpRenderTree/chromium/TestShell.cpp:
+ (TestShell::TestShell):
+
2011-10-27 Darin Fisher <[email protected]>
[chromium] Improve fullscreen API
Modified: trunk/Tools/DumpRenderTree/chromium/TestShell.cpp (100832 => 100833)
--- trunk/Tools/DumpRenderTree/chromium/TestShell.cpp 2011-11-19 01:48:13 UTC (rev 100832)
+++ trunk/Tools/DumpRenderTree/chromium/TestShell.cpp 2011-11-19 02:03:15 UTC (rev 100833)
@@ -122,6 +122,7 @@
WebRuntimeFeatures::enableMediaStream(true);
WebRuntimeFeatures::enableWebAudio(true);
WebRuntimeFeatures::enableVideoTrack(true);
+ WebRuntimeFeatures::enableGamepad(true);
m_webPermissions = adoptPtr(new WebPermissions(this));
m_accessibilityController = adoptPtr(new AccessibilityController(this));