diff options
author | Simon Hausmann <simon.hausmann@digia.com> | 2012-09-24 13:09:44 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@digia.com> | 2012-09-24 13:09:44 +0200 |
commit | dc6262b587c71c14e30d93e57ed812e36a79a33e (patch) | |
tree | 03ff986e7aa38bba0c0ef374f44fda52aff93f01 /Tools/DumpRenderTree/chromium | |
parent | 02e1fbbefd49229b102ef107bd70ce974a2d85fb (diff) | |
download | qtwebkit-dc6262b587c71c14e30d93e57ed812e36a79a33e.tar.gz |
Imported WebKit commit 6339232fec7f5d9984a33388aecfd2cbc7832053 (http://svn.webkit.org/repository/webkit/trunk@129343)
New snapshot with build fixes for latest qtbase
Diffstat (limited to 'Tools/DumpRenderTree/chromium')
3 files changed, 54 insertions, 5 deletions
diff --git a/Tools/DumpRenderTree/chromium/TestRunner/AccessibilityControllerChromium.cpp b/Tools/DumpRenderTree/chromium/TestRunner/AccessibilityControllerChromium.cpp index b1d2948ae..89d5d5877 100644 --- a/Tools/DumpRenderTree/chromium/TestRunner/AccessibilityControllerChromium.cpp +++ b/Tools/DumpRenderTree/chromium/TestRunner/AccessibilityControllerChromium.cpp @@ -32,9 +32,11 @@ #include "AccessibilityControllerChromium.h" #include "WebAccessibilityObject.h" +#include "WebElement.h" #include "WebFrame.h" +#include "WebNode.h" #include "WebView.h" -#include "platform/WebString.h" +#include "platform/WebCString.h" using namespace WebKit; @@ -49,6 +51,8 @@ AccessibilityController::AccessibilityController() bindProperty("focusedElement", &AccessibilityController::focusedElementGetterCallback); bindProperty("rootElement", &AccessibilityController::rootElementGetterCallback); + bindMethod("accessibleElementById", &AccessibilityController::accessibleElementByIdGetterCallback); + bindFallbackMethod(&AccessibilityController::fallbackCallback); } @@ -86,6 +90,36 @@ AccessibilityUIElement* AccessibilityController::getRootElement() return m_elements.createRoot(m_rootElement); } +AccessibilityUIElement* AccessibilityController::findAccessibleElementByIdRecursive(const WebAccessibilityObject& obj, const WebString& id) +{ + if (obj.isNull() || obj.isDetached()) + return 0; + + WebNode node = obj.node(); + if (!node.isNull() && node.isElementNode()) { + WebElement element = node.to<WebElement>(); + element.getAttribute("id"); + if (element.getAttribute("id") == id) + return m_elements.getOrCreate(obj); + } + + unsigned childCount = obj.childCount(); + for (unsigned i = 0; i < childCount; i++) { + if (AccessibilityUIElement* result = findAccessibleElementByIdRecursive(obj.childAt(i), id)) + return result; + } + + return 0; +} + +AccessibilityUIElement* AccessibilityController::getAccessibleElementById(const std::string& id) +{ + if (m_rootElement.isNull()) + m_rootElement = m_webView->accessibilityObject(); + + return findAccessibleElementByIdRecursive(m_rootElement, WebString::fromUTF8(id.c_str())); +} + bool AccessibilityController::shouldLogAccessibilityEvents() { return m_logAccessibilityEvents; @@ -141,6 +175,21 @@ void AccessibilityController::rootElementGetterCallback(CppVariant* result) result->set(*(getRootElement()->getAsCppVariant())); } +void AccessibilityController::accessibleElementByIdGetterCallback(const CppArgumentList& arguments, CppVariant* result) +{ + result->setNull(); + + if (arguments.size() < 1 || !arguments[0].isString()) + return; + + std::string id = arguments[0].toString(); + AccessibilityUIElement* foundElement = getAccessibleElementById(id); + if (!foundElement) + return; + + result->set(*(foundElement->getAsCppVariant())); +} + void AccessibilityController::fallbackCallback(const CppArgumentList&, CppVariant* result) { printf("CONSOLE MESSAGE: JavaScript ERROR: unknown method called on " diff --git a/Tools/DumpRenderTree/chromium/TestRunner/AccessibilityControllerChromium.h b/Tools/DumpRenderTree/chromium/TestRunner/AccessibilityControllerChromium.h index 11c082b3e..f0f5dee85 100644 --- a/Tools/DumpRenderTree/chromium/TestRunner/AccessibilityControllerChromium.h +++ b/Tools/DumpRenderTree/chromium/TestRunner/AccessibilityControllerChromium.h @@ -51,6 +51,7 @@ public: void setFocusedElement(const WebKit::WebAccessibilityObject&); AccessibilityUIElement* getFocusedElement(); AccessibilityUIElement* getRootElement(); + AccessibilityUIElement* getAccessibleElementById(const std::string& id); bool shouldLogAccessibilityEvents(); @@ -70,6 +71,9 @@ private: void focusedElementGetterCallback(CppVariant*); void rootElementGetterCallback(CppVariant*); + void accessibleElementByIdGetterCallback(const CppArgumentList&, CppVariant*); + + AccessibilityUIElement* findAccessibleElementByIdRecursive(const WebKit::WebAccessibilityObject&, const WebKit::WebString& id); WebKit::WebAccessibilityObject m_focusedElement; WebKit::WebAccessibilityObject m_rootElement; diff --git a/Tools/DumpRenderTree/chromium/TestShellAndroid.cpp b/Tools/DumpRenderTree/chromium/TestShellAndroid.cpp index 8f8eedc3d..1a327bb85 100644 --- a/Tools/DumpRenderTree/chromium/TestShellAndroid.cpp +++ b/Tools/DumpRenderTree/chromium/TestShellAndroid.cpp @@ -32,7 +32,6 @@ #include "TestShell.h" #include "linux/WebFontRendering.h" -#include "tests/ForwardIOStreamsAndroid.h" #include "third_party/skia/include/ports/SkTypeface_android.h" namespace { @@ -51,9 +50,6 @@ void platformInit(int* argc, char*** argv) // Initialize skia with customized font config files. SkUseTestFontConfigFile(fontMainConfigFile, fontFallbackConfigFile, fontsDir); - // Set up IO stream forwarding if necessary. - WebKit::maybeInitIOStreamForwardingForAndroid(argc, argv); - // Disable auto hint and use normal hinting in layout test mode to produce the same font metrics as chromium-linux. WebKit::WebFontRendering::setAutoHint(false); WebKit::WebFontRendering::setHinting(SkPaint::kNormal_Hinting); |