summaryrefslogtreecommitdiff
path: root/Tools/DumpRenderTree/chromium/TestRunner/GamepadController.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@nokia.com>2012-07-18 13:59:13 +0200
committerSimon Hausmann <simon.hausmann@nokia.com>2012-07-18 13:59:28 +0200
commit4d6084feccab99c0a7b3ecef26bb49c41dd50201 (patch)
treefd1195897f551eee6d5a15d07ff5733b15aa2a5c /Tools/DumpRenderTree/chromium/TestRunner/GamepadController.cpp
parentae901828d4689ab9e89113f6b6ea8042b37a9fda (diff)
downloadqtwebkit-4d6084feccab99c0a7b3ecef26bb49c41dd50201.tar.gz
Imported WebKit commit ff52235a78888e5cb8e286a828a8698042200e67 (http://svn.webkit.org/repository/webkit/trunk@122948)
New snapshot that should fix the rendering issues recently introduced
Diffstat (limited to 'Tools/DumpRenderTree/chromium/TestRunner/GamepadController.cpp')
-rw-r--r--Tools/DumpRenderTree/chromium/TestRunner/GamepadController.cpp182
1 files changed, 182 insertions, 0 deletions
diff --git a/Tools/DumpRenderTree/chromium/TestRunner/GamepadController.cpp b/Tools/DumpRenderTree/chromium/TestRunner/GamepadController.cpp
new file mode 100644
index 000000000..cdf1befc3
--- /dev/null
+++ b/Tools/DumpRenderTree/chromium/TestRunner/GamepadController.cpp
@@ -0,0 +1,182 @@
+/*
+ * 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:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * 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.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
+ * OWNER OR 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 "GamepadController.h"
+
+using namespace WebKit;
+
+GamepadController::GamepadController()
+{
+ bindMethod("connect", &GamepadController::connect);
+ bindMethod("disconnect", &GamepadController::disconnect);
+ bindMethod("setId", &GamepadController::setId);
+ bindMethod("setButtonCount", &GamepadController::setButtonCount);
+ bindMethod("setButtonData", &GamepadController::setButtonData);
+ bindMethod("setAxisCount", &GamepadController::setAxisCount);
+ bindMethod("setAxisData", &GamepadController::setAxisData);
+
+ bindFallbackMethod(&GamepadController::fallbackCallback);
+
+ reset();
+}
+
+void GamepadController::bindToJavascript(WebFrame* frame, const WebString& classname)
+{
+ CppBoundClass::bindToJavascript(frame, classname);
+}
+
+void GamepadController::reset()
+{
+ memset(&internalData, 0, sizeof(internalData));
+}
+
+void GamepadController::connect(const CppArgumentList& args, CppVariant* result)
+{
+ if (args.size() < 1) {
+ printf("Invalid args");
+ return;
+ }
+ int index = args[0].toInt32();
+ if (index < 0 || index >= static_cast<int>(WebKit::WebGamepads::itemsLengthCap))
+ return;
+ internalData.items[index].connected = true;
+ internalData.length = 0;
+ for (unsigned i = 0; i < WebKit::WebGamepads::itemsLengthCap; ++i)
+ if (internalData.items[i].connected)
+ internalData.length = i + 1;
+ webkit_support::SetGamepadData(internalData);
+ result->setNull();
+}
+
+void GamepadController::disconnect(const CppArgumentList& args, CppVariant* result)
+{
+ if (args.size() < 1) {
+ printf("Invalid args");
+ return;
+ }
+ int index = args[0].toInt32();
+ if (index < 0 || index >= static_cast<int>(WebKit::WebGamepads::itemsLengthCap))
+ return;
+ internalData.items[index].connected = false;
+ internalData.length = 0;
+ for (unsigned i = 0; i < WebKit::WebGamepads::itemsLengthCap; ++i)
+ if (internalData.items[i].connected)
+ internalData.length = i + 1;
+ webkit_support::SetGamepadData(internalData);
+ result->setNull();
+}
+
+void GamepadController::setId(const CppArgumentList& args, CppVariant* result)
+{
+ if (args.size() < 2) {
+ printf("Invalid args");
+ return;
+ }
+ int index = args[0].toInt32();
+ if (index < 0 || index >= static_cast<int>(WebKit::WebGamepads::itemsLengthCap))
+ return;
+ std::string src = args[1].toString();
+ const char* p = src.c_str();
+ memset(internalData.items[index].id, 0, sizeof(internalData.items[index].id));
+ for (unsigned i = 0; *p && i < WebKit::WebGamepad::idLengthCap - 1; ++i)
+ internalData.items[index].id[i] = *p++;
+ webkit_support::SetGamepadData(internalData);
+ result->setNull();
+}
+
+void GamepadController::setButtonCount(const CppArgumentList& args, CppVariant* result)
+{
+ if (args.size() < 2) {
+ printf("Invalid args");
+ return;
+ }
+ int index = args[0].toInt32();
+ if (index < 0 || index >= static_cast<int>(WebKit::WebGamepads::itemsLengthCap))
+ return;
+ int buttons = args[1].toInt32();
+ internalData.items[index].buttonsLength = buttons;
+ webkit_support::SetGamepadData(internalData);
+ result->setNull();
+}
+
+void GamepadController::setButtonData(const CppArgumentList& args, CppVariant* result)
+{
+ if (args.size() < 3) {
+ printf("Invalid args");
+ return;
+ }
+ int index = args[0].toInt32();
+ if (index < 0 || index >= static_cast<int>(WebKit::WebGamepads::itemsLengthCap))
+ return;
+ int button = args[1].toInt32();
+ double data = args[2].toDouble();
+ internalData.items[index].buttons[button] = data;
+ webkit_support::SetGamepadData(internalData);
+ result->setNull();
+}
+
+void GamepadController::setAxisCount(const CppArgumentList& args, CppVariant* result)
+{
+ if (args.size() < 2) {
+ printf("Invalid args");
+ return;
+ }
+ int index = args[0].toInt32();
+ if (index < 0 || index >= static_cast<int>(WebKit::WebGamepads::itemsLengthCap))
+ return;
+ int axes = args[1].toInt32();
+ internalData.items[index].axesLength = axes;
+ webkit_support::SetGamepadData(internalData);
+ result->setNull();
+}
+
+void GamepadController::setAxisData(const CppArgumentList& args, CppVariant* result)
+{
+ if (args.size() < 3) {
+ printf("Invalid args");
+ return;
+ }
+ int index = args[0].toInt32();
+ if (index < 0 || index >= static_cast<int>(WebKit::WebGamepads::itemsLengthCap))
+ return;
+ int axis = args[1].toInt32();
+ double data = args[2].toDouble();
+ internalData.items[index].axes[axis] = data;
+ webkit_support::SetGamepadData(internalData);
+ result->setNull();
+}
+
+void GamepadController::fallbackCallback(const CppArgumentList&, CppVariant* result)
+{
+ printf("CONSOLE MESSAGE: JavaScript ERROR: unknown method called on "
+ "GamepadController\n");
+ result->setNull();
+}