Expose AXObjectCache methods so that WebAccessibilityCache
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 19 Sep 2011 23:04:11 +0000 (23:04 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 19 Sep 2011 23:04:11 +0000 (23:04 +0000)
can be deleted.
https://bugs.webkit.org/show_bug.cgi?id=68225

Patch by Dominic Mazzoni <dmazzoni@google.com> on 2011-09-19
Reviewed by Dimitri Glazkov.

This patch exposes the functionality needed from AXObjectCache
with new methods in WebAccessibilityObject and WebDocument.
Next, Chromium will be updated to use only these methods and
not WebAccessibilityCache. Then, WebAccessibilityCache can be
deleted from WebKit.

* public/WebAccessibilityObject.h:
* public/WebDocument.h:
* src/WebAccessibilityObject.cpp:
(WebKit::WebAccessibilityObject::enableAccessibility):
(WebKit::WebAccessibilityObject::accessibilityEnabled):
(WebKit::WebAccessibilityObject::axID):
* src/WebDocument.cpp:
(WebKit::WebDocument::accessibilityObject):
(WebKit::WebDocument::accessibilityObjectFromID):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@95491 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebKit/chromium/ChangeLog
Source/WebKit/chromium/public/WebAccessibilityObject.h
Source/WebKit/chromium/public/WebDocument.h
Source/WebKit/chromium/src/WebAccessibilityObject.cpp
Source/WebKit/chromium/src/WebDocument.cpp

index 1d1a8ac..48a8102 100644 (file)
@@ -1,3 +1,27 @@
+2011-09-19  Dominic Mazzoni  <dmazzoni@google.com>
+
+        Expose AXObjectCache methods so that WebAccessibilityCache
+        can be deleted.
+        https://bugs.webkit.org/show_bug.cgi?id=68225
+
+        Reviewed by Dimitri Glazkov.
+
+        This patch exposes the functionality needed from AXObjectCache
+        with new methods in WebAccessibilityObject and WebDocument.
+        Next, Chromium will be updated to use only these methods and
+        not WebAccessibilityCache. Then, WebAccessibilityCache can be
+        deleted from WebKit.
+
+        * public/WebAccessibilityObject.h:
+        * public/WebDocument.h:
+        * src/WebAccessibilityObject.cpp:
+        (WebKit::WebAccessibilityObject::enableAccessibility):
+        (WebKit::WebAccessibilityObject::accessibilityEnabled):
+        (WebKit::WebAccessibilityObject::axID):
+        * src/WebDocument.cpp:
+        (WebKit::WebDocument::accessibilityObject):
+        (WebKit::WebDocument::accessibilityObjectFromID):
+
 2011-09-19  Bill Budge  <bbudge@chromium.org>
 
         Perform HTTP method and header validation in AssociatedURLLoader for
index 364297e..6137d00 100644 (file)
@@ -70,6 +70,12 @@ public:
 
     bool isNull() const { return m_private.isNull(); }
 
+    // Static methods for enabling accessibility.
+    WEBKIT_EXPORT static void enableAccessibility();
+    WEBKIT_EXPORT static bool accessibilityEnabled();
+
+    WEBKIT_EXPORT int axID() const;
+
     WEBKIT_EXPORT WebString accessibilityDescription() const;
     WEBKIT_EXPORT WebString actionVerb() const;
     WEBKIT_EXPORT bool canSetFocusAttribute() const;
index 0c14939..69624e3 100644 (file)
@@ -98,9 +98,17 @@ public:
     WEBKIT_EXPORT WebElement getElementById(const WebString&) const;
     WEBKIT_EXPORT WebNode focusedNode() const;
     WEBKIT_EXPORT WebDocumentType doctype() const;
-    WEBKIT_EXPORT WebAccessibilityObject accessibilityObject() const;
     WEBKIT_EXPORT void cancelFullScreen();
 
+    // Accessibility support. These methods should only be called on the
+    // top-level document, because one accessibility cache spans all of
+    // the documents on the page.
+
+    // Gets the accessibility object for this document.
+    WEBKIT_EXPORT WebAccessibilityObject accessibilityObject() const;
+
+    // Gets the accessibility object for an object on this page by ID.
+    WEBKIT_EXPORT WebAccessibilityObject accessibilityObjectFromID(int axID) const;
     // Inserts the given CSS source code as a user stylesheet in the document.
     // Meant for programatic/one-off injection, as opposed to
     // WebView::addUserStyleSheet which inserts styles for the lifetime of the
index e5c23f0..cfce40a 100644 (file)
@@ -31,6 +31,7 @@
 #include "config.h"
 #include "WebAccessibilityObject.h"
 
+#include "AXObjectCache.h"
 #include "AccessibilityObject.h"
 #include "AccessibilityTable.h"
 #include "AccessibilityTableCell.h"
@@ -69,6 +70,27 @@ bool WebAccessibilityObject::equals(const WebAccessibilityObject& n) const
     return (m_private.get() == n.m_private.get());
 }
 
+// static
+void WebAccessibilityObject::enableAccessibility()
+{
+    AXObjectCache::enableAccessibility();
+}
+
+// static
+bool WebAccessibilityObject::accessibilityEnabled()
+{
+    return AXObjectCache::accessibilityEnabled();
+}
+
+int WebAccessibilityObject::axID() const
+{
+    if (m_private.isNull())
+        return -1;
+
+    m_private->updateBackingStore();
+    return m_private->axObjectID();
+}
+
 WebString WebAccessibilityObject::accessibilityDescription() const
 {
     if (m_private.isNull())
index d896b1e..dbd9f46 100644 (file)
@@ -172,13 +172,6 @@ WebDocumentType WebDocument::doctype() const
     return WebDocumentType(constUnwrap<Document>()->doctype());
 }
 
-WebAccessibilityObject WebDocument::accessibilityObject() const
-{
-    const Document* document = constUnwrap<Document>();
-    return WebAccessibilityObject(
-        document->axObjectCache()->getOrCreate(document->renderer()));
-}
-
 void WebDocument::insertUserStyleSheet(const WebString& sourceCode, UserStyleLevel level)
 {
     RefPtr<Document> document = unwrap<Document>();
@@ -196,6 +189,20 @@ void WebDocument::cancelFullScreen()
 #endif
 }
 
+WebAccessibilityObject WebDocument::accessibilityObject() const
+{
+    const Document* document = constUnwrap<Document>();
+    return WebAccessibilityObject(
+        document->axObjectCache()->getOrCreate(document->renderer()));
+}
+
+WebAccessibilityObject WebDocument::accessibilityObjectFromID(int axID) const
+{
+    const Document* document = constUnwrap<Document>();
+    return WebAccessibilityObject(
+        document->axObjectCache()->objectFromAXID(axID));
+}
+
 WebDocument::WebDocument(const PassRefPtr<Document>& elem)
     : WebNode(elem)
 {