diff options
author | dmazzoni@chromium.org <dmazzoni@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-30 16:40:37 +0000 |
---|---|---|
committer | dmazzoni@chromium.org <dmazzoni@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-30 16:40:37 +0000 |
commit | a2b744888f9361c415c183da361863096dbb233b (patch) | |
tree | 7bb08929903d5de8601fb24af32580f631ab0ae7 /webkit/glue/webaccessibility.cc | |
parent | c48d8fada025ccfabd3e95e22b150d66fc98cb39 (diff) | |
download | chromium_src-a2b744888f9361c415c183da361863096dbb233b.zip chromium_src-a2b744888f9361c415c183da361863096dbb233b.tar.gz chromium_src-a2b744888f9361c415c183da361863096dbb233b.tar.bz2 |
Add html node info (tag name, attributes, and computed display) and document
info (url, title, mimetype, doctype) to WebAccessibility.
BUG=none
TEST=Modified unit test: RenderMessagesUnittest.WebAccessibility
TEST=Added new browser test: RendererAccessibilityBrowserTest.TestCrossPlatformAccessibilityTree
Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=57188
Review URL: http://codereview.chromium.org/3013035
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@57866 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/glue/webaccessibility.cc')
-rw-r--r-- | webkit/glue/webaccessibility.cc | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/webkit/glue/webaccessibility.cc b/webkit/glue/webaccessibility.cc index 7e5c0ef..d600d67 100644 --- a/webkit/glue/webaccessibility.cc +++ b/webkit/glue/webaccessibility.cc @@ -7,6 +7,13 @@ #include "third_party/WebKit/WebKit/chromium/public/WebAccessibilityCache.h" #include "third_party/WebKit/WebKit/chromium/public/WebAccessibilityObject.h" #include "third_party/WebKit/WebKit/chromium/public/WebAccessibilityRole.h" +#include "third_party/WebKit/WebKit/chromium/public/WebAttribute.h" +#include "third_party/WebKit/WebKit/chromium/public/WebDocument.h" +#include "third_party/WebKit/WebKit/chromium/public/WebDocumentType.h" +#include "third_party/WebKit/WebKit/chromium/public/WebElement.h" +#include "third_party/WebKit/WebKit/chromium/public/WebFrame.h" +#include "third_party/WebKit/WebKit/chromium/public/WebNamedNodeMap.h" +#include "third_party/WebKit/WebKit/chromium/public/WebNode.h" #include "third_party/WebKit/WebKit/chromium/public/WebString.h" using WebKit::WebAccessibilityCache; @@ -288,6 +295,36 @@ void WebAccessibility::Init(const WebKit::WebAccessibilityObject& src, attributes[ATTR_HELP] = src.helpText(); if (src.keyboardShortcut().length()) attributes[ATTR_SHORTCUT] = src.keyboardShortcut(); + if (src.hasComputedStyle()) + attributes[ATTR_DISPLAY] = src.computedStyleDisplay(); + + WebKit::WebNode node = src.node(); + + if (!node.isNull() && node.isElementNode()) { + WebKit::WebElement element = node.to<WebKit::WebElement>(); + attributes[ATTR_HTML_TAG] = element.tagName(); + for (unsigned i = 0; i < element.attributes().length(); i++) { + html_attributes.push_back( + std::pair<string16, string16>( + element.attributes().attributeItem(i).localName(), + element.attributes().attributeItem(i).value())); + } + } + + if (role == WebAccessibility::ROLE_DOCUMENT || + role == WebAccessibility::ROLE_WEB_AREA) { + WebKit::WebDocument document = src.document(); + attributes[ATTR_DOC_TITLE] = document.title(); + attributes[ATTR_DOC_URL] = document.frame()->url().spec().utf16(); + if (document.isXHTMLDocument()) + attributes[ATTR_DOC_MIMETYPE] = WebKit::WebString("text/xhtml"); + else + attributes[ATTR_DOC_MIMETYPE] = WebKit::WebString("text/html"); + + WebKit::WebDocumentType doctype = document.doctype(); + if (!doctype.isNull()) + attributes[ATTR_DOC_DOCTYPE] = doctype.name(); + } // Add the source object to the cache and store its id. id = cache->addOrGetId(src); |