diff options
| author | Simon Hausmann <simon.hausmann@digia.com> | 2012-10-22 15:40:17 +0200 |
|---|---|---|
| committer | Simon Hausmann <simon.hausmann@digia.com> | 2012-10-22 15:40:17 +0200 |
| commit | 43a42f108af6bcbd91f2672731c3047c26213af1 (patch) | |
| tree | 7fa092e5f5d873c72f2486a70e26be26f7a38bec /Tools/DumpRenderTree/chromium/TestRunner/src/GamepadController.cpp | |
| parent | d9cf437c840c6eb7417bdd97e6c40979255d3158 (diff) | |
| download | qtwebkit-43a42f108af6bcbd91f2672731c3047c26213af1.tar.gz | |
Imported WebKit commit 302e7806bff028bd1167a1ec7c86a1ee00ecfb49 (http://svn.webkit.org/repository/webkit/trunk@132067)
New snapshot that fixes build without QtWidgets
Diffstat (limited to 'Tools/DumpRenderTree/chromium/TestRunner/src/GamepadController.cpp')
| -rw-r--r-- | Tools/DumpRenderTree/chromium/TestRunner/src/GamepadController.cpp | 196 |
1 files changed, 196 insertions, 0 deletions
diff --git a/Tools/DumpRenderTree/chromium/TestRunner/src/GamepadController.cpp b/Tools/DumpRenderTree/chromium/TestRunner/src/GamepadController.cpp new file mode 100644 index 000000000..cb36bfdfb --- /dev/null +++ b/Tools/DumpRenderTree/chromium/TestRunner/src/GamepadController.cpp @@ -0,0 +1,196 @@ +/* + * 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" +#include "TestDelegate.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::setDelegate(TestDelegate* delegate) +{ + m_delegate = delegate; +} + +void GamepadController::reset() +{ + memset(&m_gamepads, 0, sizeof(m_gamepads)); +} + +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; + m_gamepads.items[index].connected = true; + m_gamepads.length = 0; + for (unsigned i = 0; i < WebKit::WebGamepads::itemsLengthCap; ++i) + if (m_gamepads.items[i].connected) + m_gamepads.length = i + 1; + m_delegate->setGamepadData(m_gamepads); + 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; + m_gamepads.items[index].connected = false; + m_gamepads.length = 0; + for (unsigned i = 0; i < WebKit::WebGamepads::itemsLengthCap; ++i) + if (m_gamepads.items[i].connected) + m_gamepads.length = i + 1; + m_delegate->setGamepadData(m_gamepads); + 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(m_gamepads.items[index].id, 0, sizeof(m_gamepads.items[index].id)); + for (unsigned i = 0; *p && i < WebKit::WebGamepad::idLengthCap - 1; ++i) + m_gamepads.items[index].id[i] = *p++; + m_delegate->setGamepadData(m_gamepads); + 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(); + if (buttons < 0 || buttons >= static_cast<int>(WebKit::WebGamepad::buttonsLengthCap)) + return; + m_gamepads.items[index].buttonsLength = buttons; + m_delegate->setGamepadData(m_gamepads); + 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(); + if (button < 0 || button >= static_cast<int>(WebKit::WebGamepad::buttonsLengthCap)) + return; + double data = args[2].toDouble(); + m_gamepads.items[index].buttons[button] = data; + m_delegate->setGamepadData(m_gamepads); + 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(); + if (axes < 0 || axes >= static_cast<int>(WebKit::WebGamepad::axesLengthCap)) + return; + m_gamepads.items[index].axesLength = axes; + m_delegate->setGamepadData(m_gamepads); + 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(); + if (axis < 0 || axis >= static_cast<int>(WebKit::WebGamepad::axesLengthCap)) + return; + double data = args[2].toDouble(); + m_gamepads.items[index].axes[axis] = data; + m_delegate->setGamepadData(m_gamepads); + result->setNull(); +} + +void GamepadController::fallbackCallback(const CppArgumentList&, CppVariant* result) +{ + printf("CONSOLE MESSAGE: JavaScript ERROR: unknown method called on " + "GamepadController\n"); + result->setNull(); +} |
