summaryrefslogtreecommitdiff
path: root/Tools/DumpRenderTree/chromium
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2012-09-24 13:09:44 +0200
committerSimon Hausmann <simon.hausmann@digia.com>2012-09-24 13:09:44 +0200
commitdc6262b587c71c14e30d93e57ed812e36a79a33e (patch)
tree03ff986e7aa38bba0c0ef374f44fda52aff93f01 /Tools/DumpRenderTree/chromium
parent02e1fbbefd49229b102ef107bd70ce974a2d85fb (diff)
downloadqtwebkit-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')
-rw-r--r--Tools/DumpRenderTree/chromium/TestRunner/AccessibilityControllerChromium.cpp51
-rw-r--r--Tools/DumpRenderTree/chromium/TestRunner/AccessibilityControllerChromium.h4
-rw-r--r--Tools/DumpRenderTree/chromium/TestShellAndroid.cpp4
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);