Title: [91297] trunk/Source/WebKit/chromium
Revision
91297
Author
[email protected]
Date
2011-07-19 13:47:54 -0700 (Tue, 19 Jul 2011)

Log Message

Adds some methods to retrieve accessible information from tables and
table cells. Also refactors WebAccessibilityObject to use WebPrivatePtr
instead of its own implementation that didn't allow access to subclasses
of AccessibilityObject.
https://bugs.webkit.org/show_bug.cgi?id=64805

Patch by Dominic Mazzoni <[email protected]> on 2011-07-19
Reviewed by Dimitri Glazkov.

* public/WebAccessibilityObject.h:
(WebKit::WebAccessibilityObject::WebAccessibilityObject):
(WebKit::WebAccessibilityObject::isNull):
* src/WebAccessibilityObject.cpp:
(WebKit::WebAccessibilityObject::reset):
(WebKit::WebAccessibilityObject::assign):
(WebKit::WebAccessibilityObject::equals):
(WebKit::WebAccessibilityObject::accessibilityDescription):
(WebKit::WebAccessibilityObject::actionVerb):
(WebKit::WebAccessibilityObject::canSetFocusAttribute):
(WebKit::WebAccessibilityObject::canSetValueAttribute):
(WebKit::WebAccessibilityObject::isValid):
(WebKit::WebAccessibilityObject::childCount):
(WebKit::WebAccessibilityObject::childAt):
(WebKit::WebAccessibilityObject::firstChild):
(WebKit::WebAccessibilityObject::focusedChild):
(WebKit::WebAccessibilityObject::lastChild):
(WebKit::WebAccessibilityObject::nextSibling):
(WebKit::WebAccessibilityObject::parentObject):
(WebKit::WebAccessibilityObject::previousSibling):
(WebKit::WebAccessibilityObject::canSetSelectedAttribute):
(WebKit::WebAccessibilityObject::isAnchor):
(WebKit::WebAccessibilityObject::isChecked):
(WebKit::WebAccessibilityObject::isCollapsed):
(WebKit::WebAccessibilityObject::isFocused):
(WebKit::WebAccessibilityObject::isEnabled):
(WebKit::WebAccessibilityObject::isHovered):
(WebKit::WebAccessibilityObject::isIndeterminate):
(WebKit::WebAccessibilityObject::isLinked):
(WebKit::WebAccessibilityObject::isMultiSelectable):
(WebKit::WebAccessibilityObject::isOffScreen):
(WebKit::WebAccessibilityObject::isPasswordField):
(WebKit::WebAccessibilityObject::isPressed):
(WebKit::WebAccessibilityObject::isReadOnly):
(WebKit::WebAccessibilityObject::isSelected):
(WebKit::WebAccessibilityObject::isVisible):
(WebKit::WebAccessibilityObject::isVisited):
(WebKit::WebAccessibilityObject::boundingBoxRect):
(WebKit::WebAccessibilityObject::helpText):
(WebKit::WebAccessibilityObject::headingLevel):
(WebKit::WebAccessibilityObject::hitTest):
(WebKit::WebAccessibilityObject::keyboardShortcut):
(WebKit::WebAccessibilityObject::performDefaultAction):
(WebKit::WebAccessibilityObject::roleValue):
(WebKit::WebAccessibilityObject::selectionEnd):
(WebKit::WebAccessibilityObject::selectionStart):
(WebKit::WebAccessibilityObject::setFocused):
(WebKit::WebAccessibilityObject::stringValue):
(WebKit::WebAccessibilityObject::title):
(WebKit::WebAccessibilityObject::url):
(WebKit::WebAccessibilityObject::node):
(WebKit::WebAccessibilityObject::document):
(WebKit::WebAccessibilityObject::hasComputedStyle):
(WebKit::WebAccessibilityObject::computedStyleDisplay):
(WebKit::WebAccessibilityObject::accessibilityIsIgnored):
(WebKit::WebAccessibilityObject::lineBreaks):
(WebKit::WebAccessibilityObject::columnCount):
(WebKit::WebAccessibilityObject::rowCount):
(WebKit::WebAccessibilityObject::cellForColumnAndRow):
(WebKit::WebAccessibilityObject::cellColumnIndex):
(WebKit::WebAccessibilityObject::cellColumnSpan):
(WebKit::WebAccessibilityObject::cellRowIndex):
(WebKit::WebAccessibilityObject::cellRowSpan):
(WebKit::WebAccessibilityObject::WebAccessibilityObject):
(WebKit::WebAccessibilityObject::operator=):
(WebKit::WebAccessibilityObject::operator WTF::PassRefPtr<WebCore::AccessibilityObject>):

Modified Paths

Diff

Modified: trunk/Source/WebKit/chromium/ChangeLog (91296 => 91297)


--- trunk/Source/WebKit/chromium/ChangeLog	2011-07-19 20:40:51 UTC (rev 91296)
+++ trunk/Source/WebKit/chromium/ChangeLog	2011-07-19 20:47:54 UTC (rev 91297)
@@ -1,3 +1,80 @@
+2011-07-19  Dominic Mazzoni  <[email protected]>
+
+        Adds some methods to retrieve accessible information from tables and
+        table cells. Also refactors WebAccessibilityObject to use WebPrivatePtr
+        instead of its own implementation that didn't allow access to subclasses
+        of AccessibilityObject.
+        https://bugs.webkit.org/show_bug.cgi?id=64805
+
+        Reviewed by Dimitri Glazkov.
+
+        * public/WebAccessibilityObject.h:
+        (WebKit::WebAccessibilityObject::WebAccessibilityObject):
+        (WebKit::WebAccessibilityObject::isNull):
+        * src/WebAccessibilityObject.cpp:
+        (WebKit::WebAccessibilityObject::reset):
+        (WebKit::WebAccessibilityObject::assign):
+        (WebKit::WebAccessibilityObject::equals):
+        (WebKit::WebAccessibilityObject::accessibilityDescription):
+        (WebKit::WebAccessibilityObject::actionVerb):
+        (WebKit::WebAccessibilityObject::canSetFocusAttribute):
+        (WebKit::WebAccessibilityObject::canSetValueAttribute):
+        (WebKit::WebAccessibilityObject::isValid):
+        (WebKit::WebAccessibilityObject::childCount):
+        (WebKit::WebAccessibilityObject::childAt):
+        (WebKit::WebAccessibilityObject::firstChild):
+        (WebKit::WebAccessibilityObject::focusedChild):
+        (WebKit::WebAccessibilityObject::lastChild):
+        (WebKit::WebAccessibilityObject::nextSibling):
+        (WebKit::WebAccessibilityObject::parentObject):
+        (WebKit::WebAccessibilityObject::previousSibling):
+        (WebKit::WebAccessibilityObject::canSetSelectedAttribute):
+        (WebKit::WebAccessibilityObject::isAnchor):
+        (WebKit::WebAccessibilityObject::isChecked):
+        (WebKit::WebAccessibilityObject::isCollapsed):
+        (WebKit::WebAccessibilityObject::isFocused):
+        (WebKit::WebAccessibilityObject::isEnabled):
+        (WebKit::WebAccessibilityObject::isHovered):
+        (WebKit::WebAccessibilityObject::isIndeterminate):
+        (WebKit::WebAccessibilityObject::isLinked):
+        (WebKit::WebAccessibilityObject::isMultiSelectable):
+        (WebKit::WebAccessibilityObject::isOffScreen):
+        (WebKit::WebAccessibilityObject::isPasswordField):
+        (WebKit::WebAccessibilityObject::isPressed):
+        (WebKit::WebAccessibilityObject::isReadOnly):
+        (WebKit::WebAccessibilityObject::isSelected):
+        (WebKit::WebAccessibilityObject::isVisible):
+        (WebKit::WebAccessibilityObject::isVisited):
+        (WebKit::WebAccessibilityObject::boundingBoxRect):
+        (WebKit::WebAccessibilityObject::helpText):
+        (WebKit::WebAccessibilityObject::headingLevel):
+        (WebKit::WebAccessibilityObject::hitTest):
+        (WebKit::WebAccessibilityObject::keyboardShortcut):
+        (WebKit::WebAccessibilityObject::performDefaultAction):
+        (WebKit::WebAccessibilityObject::roleValue):
+        (WebKit::WebAccessibilityObject::selectionEnd):
+        (WebKit::WebAccessibilityObject::selectionStart):
+        (WebKit::WebAccessibilityObject::setFocused):
+        (WebKit::WebAccessibilityObject::stringValue):
+        (WebKit::WebAccessibilityObject::title):
+        (WebKit::WebAccessibilityObject::url):
+        (WebKit::WebAccessibilityObject::node):
+        (WebKit::WebAccessibilityObject::document):
+        (WebKit::WebAccessibilityObject::hasComputedStyle):
+        (WebKit::WebAccessibilityObject::computedStyleDisplay):
+        (WebKit::WebAccessibilityObject::accessibilityIsIgnored):
+        (WebKit::WebAccessibilityObject::lineBreaks):
+        (WebKit::WebAccessibilityObject::columnCount):
+        (WebKit::WebAccessibilityObject::rowCount):
+        (WebKit::WebAccessibilityObject::cellForColumnAndRow):
+        (WebKit::WebAccessibilityObject::cellColumnIndex):
+        (WebKit::WebAccessibilityObject::cellColumnSpan):
+        (WebKit::WebAccessibilityObject::cellRowIndex):
+        (WebKit::WebAccessibilityObject::cellRowSpan):
+        (WebKit::WebAccessibilityObject::WebAccessibilityObject):
+        (WebKit::WebAccessibilityObject::operator=):
+        (WebKit::WebAccessibilityObject::operator WTF::PassRefPtr<WebCore::AccessibilityObject>):
+
 2011-07-19  Robert Sesek  <[email protected]>
 
         [Chromium] Need to remove app/ from DEPS

Modified: trunk/Source/WebKit/chromium/public/WebAccessibilityObject.h (91296 => 91297)


--- trunk/Source/WebKit/chromium/public/WebAccessibilityObject.h	2011-07-19 20:40:51 UTC (rev 91296)
+++ trunk/Source/WebKit/chromium/public/WebAccessibilityObject.h	2011-07-19 20:47:54 UTC (rev 91297)
@@ -33,16 +33,17 @@
 
 #include "WebAccessibilityRole.h"
 #include "WebCommon.h"
+#include "WebPrivatePtr.h"
 #include "WebVector.h"
 
 #if WEBKIT_IMPLEMENTATION
-namespace WebCore { class AccessibilityObject; }
 namespace WTF { template <typename T> class PassRefPtr; }
 #endif
 
+namespace WebCore { class AccessibilityObject; }
+
 namespace WebKit {
 
-class WebAccessibilityObjectPrivate;
 class WebNode;
 class WebDocument;
 class WebString;
@@ -55,8 +56,8 @@
 public:
     ~WebAccessibilityObject() { reset(); }
 
-    WebAccessibilityObject() : m_private(0) { }
-    WebAccessibilityObject(const WebAccessibilityObject& o) : m_private(0) { assign(o); }
+    WebAccessibilityObject() { }
+    WebAccessibilityObject(const WebAccessibilityObject& o) { assign(o); }
     WebAccessibilityObject& operator=(const WebAccessibilityObject& o)
     {
         assign(o);
@@ -67,7 +68,7 @@
     WEBKIT_API void assign(const WebAccessibilityObject&);
     WEBKIT_API bool equals(const WebAccessibilityObject&) const;
 
-    bool isNull() const { return !m_private; }
+    bool isNull() const { return m_private.isNull(); }
 
     WEBKIT_API WebString accessibilityDescription() const;
     WEBKIT_API WebString actionVerb() const;
@@ -124,6 +125,17 @@
     WEBKIT_API bool accessibilityIsIgnored() const;
     WEBKIT_API bool lineBreaks(WebVector<int>&) const;
 
+    // For a table
+    WEBKIT_API unsigned columnCount() const;
+    WEBKIT_API unsigned rowCount() const;
+    WEBKIT_API WebAccessibilityObject cellForColumnAndRow(unsigned column, unsigned row) const;
+
+    // For a table cell
+    WEBKIT_API unsigned cellColumnIndex() const;
+    WEBKIT_API unsigned cellColumnSpan() const;
+    WEBKIT_API unsigned cellRowIndex() const;
+    WEBKIT_API unsigned cellRowSpan() const;
+
 #if WEBKIT_IMPLEMENTATION
     WebAccessibilityObject(const WTF::PassRefPtr<WebCore::AccessibilityObject>&);
     WebAccessibilityObject& operator=(const WTF::PassRefPtr<WebCore::AccessibilityObject>&);
@@ -131,8 +143,7 @@
 #endif
 
 private:
-    void assign(WebAccessibilityObjectPrivate*);
-    WebAccessibilityObjectPrivate* m_private;
+    WebPrivatePtr<WebCore::AccessibilityObject> m_private;
 };
 
 } // namespace WebKit

Modified: trunk/Source/WebKit/chromium/src/WebAccessibilityObject.cpp (91296 => 91297)


--- trunk/Source/WebKit/chromium/src/WebAccessibilityObject.cpp	2011-07-19 20:40:51 UTC (rev 91296)
+++ trunk/Source/WebKit/chromium/src/WebAccessibilityObject.cpp	2011-07-19 20:47:54 UTC (rev 91297)
@@ -32,6 +32,8 @@
 #include "WebAccessibilityObject.h"
 
 #include "AccessibilityObject.h"
+#include "AccessibilityTable.h"
+#include "AccessibilityTableCell.h"
 #include "CSSPrimitiveValueMappings.h"
 #include "Document.h"
 #include "EventHandler.h"
@@ -51,30 +53,24 @@
 
 namespace WebKit {
 
-class WebAccessibilityObjectPrivate : public WebCore::AccessibilityObject {
-};
-
 void WebAccessibilityObject::reset()
 {
-    assign(0);
+    m_private.reset();
 }
 
 void WebAccessibilityObject::assign(const WebKit::WebAccessibilityObject& other)
 {
-    WebAccessibilityObjectPrivate* p = const_cast<WebAccessibilityObjectPrivate*>(other.m_private);
-    if (p)
-        p->ref();
-    assign(p);
+    m_private = other.m_private;
 }
 
 bool WebAccessibilityObject::equals(const WebAccessibilityObject& n) const
 {
-    return (m_private == n.m_private);
+    return (m_private.get() == n.m_private.get());
 }
 
 WebString WebAccessibilityObject::accessibilityDescription() const
 {
-    if (!m_private)
+    if (m_private.isNull())
         return WebString();
 
     m_private->updateBackingStore();
@@ -83,7 +79,7 @@
 
 WebString WebAccessibilityObject::actionVerb() const
 {
-    if (!m_private)
+    if (m_private.isNull())
         return WebString();
 
     m_private->updateBackingStore();
@@ -92,7 +88,7 @@
 
 bool WebAccessibilityObject::canSetFocusAttribute() const
 {
-    if (!m_private)
+    if (m_private.isNull())
         return false;
 
     m_private->updateBackingStore();
@@ -101,7 +97,7 @@
 
 bool WebAccessibilityObject::canSetValueAttribute() const
 {
-    if (!m_private)
+    if (m_private.isNull())
         return false;
 
     m_private->updateBackingStore();
@@ -110,7 +106,7 @@
 
 bool WebAccessibilityObject::isValid() const
 {
-    if (!m_private)
+    if (m_private.isNull())
         return false;
 
     m_private->updateBackingStore();
@@ -119,7 +115,7 @@
 
 unsigned WebAccessibilityObject::childCount() const
 {
-    if (!m_private)
+    if (m_private.isNull())
         return 0;
 
     m_private->updateBackingStore();
@@ -128,7 +124,7 @@
 
 WebAccessibilityObject WebAccessibilityObject::childAt(unsigned index) const
 {
-    if (!m_private)
+    if (m_private.isNull())
         return WebAccessibilityObject();
 
     m_private->updateBackingStore();
@@ -140,7 +136,7 @@
 
 WebAccessibilityObject WebAccessibilityObject::firstChild() const
 {
-    if (!m_private)
+    if (m_private.isNull())
         return WebAccessibilityObject();
 
     m_private->updateBackingStore();
@@ -149,12 +145,12 @@
 
 WebAccessibilityObject WebAccessibilityObject::focusedChild() const
 {
-    if (!m_private)
+    if (m_private.isNull())
         return WebAccessibilityObject();
 
     m_private->updateBackingStore();
     RefPtr<AccessibilityObject> focused = m_private->focusedUIElement();
-    if (m_private == focused.get() || focused->parentObject() == m_private)
+    if (m_private.get() == focused.get() || m_private.get() == focused->parentObject())
         return WebAccessibilityObject(focused);
 
     return WebAccessibilityObject();
@@ -162,7 +158,7 @@
 
 WebAccessibilityObject WebAccessibilityObject::lastChild() const
 {
-    if (!m_private)
+    if (m_private.isNull())
         return WebAccessibilityObject();
 
     m_private->updateBackingStore();
@@ -172,7 +168,7 @@
 
 WebAccessibilityObject WebAccessibilityObject::nextSibling() const
 {
-    if (!m_private)
+    if (m_private.isNull())
         return WebAccessibilityObject();
 
     m_private->updateBackingStore();
@@ -181,7 +177,7 @@
 
 WebAccessibilityObject WebAccessibilityObject::parentObject() const
 {
-    if (!m_private)
+    if (m_private.isNull())
         return WebAccessibilityObject();
 
     m_private->updateBackingStore();
@@ -191,7 +187,7 @@
 
 WebAccessibilityObject WebAccessibilityObject::previousSibling() const
 {
-    if (!m_private)
+    if (m_private.isNull())
         return WebAccessibilityObject();
 
     m_private->updateBackingStore();
@@ -200,7 +196,7 @@
 
 bool WebAccessibilityObject::canSetSelectedAttribute() const
 {
-    if (!m_private)
+    if (m_private.isNull())
         return 0;
 
     m_private->updateBackingStore();
@@ -209,7 +205,7 @@
 
 bool WebAccessibilityObject::isAnchor() const
 {
-    if (!m_private)
+    if (m_private.isNull())
         return 0;
 
     m_private->updateBackingStore();
@@ -218,7 +214,7 @@
 
 bool WebAccessibilityObject::isChecked() const
 {
-    if (!m_private)
+    if (m_private.isNull())
         return 0;
 
     m_private->updateBackingStore();
@@ -227,7 +223,7 @@
 
 bool WebAccessibilityObject::isCollapsed() const
 {
-    if (!m_private)
+    if (m_private.isNull())
         return 0;
 
     m_private->updateBackingStore();
@@ -237,7 +233,7 @@
 
 bool WebAccessibilityObject::isFocused() const
 {
-    if (!m_private)
+    if (m_private.isNull())
         return 0;
 
     m_private->updateBackingStore();
@@ -246,7 +242,7 @@
 
 bool WebAccessibilityObject::isEnabled() const
 {
-    if (!m_private)
+    if (m_private.isNull())
         return 0;
 
     m_private->updateBackingStore();
@@ -255,7 +251,7 @@
 
 bool WebAccessibilityObject::isHovered() const
 {
-    if (!m_private)
+    if (m_private.isNull())
         return 0;
 
     m_private->updateBackingStore();
@@ -264,7 +260,7 @@
 
 bool WebAccessibilityObject::isIndeterminate() const
 {
-    if (!m_private)
+    if (m_private.isNull())
         return 0;
 
     m_private->updateBackingStore();
@@ -273,7 +269,7 @@
 
 bool WebAccessibilityObject::isLinked() const
 {
-    if (!m_private)
+    if (m_private.isNull())
         return 0;
 
     m_private->updateBackingStore();
@@ -282,7 +278,7 @@
 
 bool WebAccessibilityObject::isMultiSelectable() const
 {
-    if (!m_private)
+    if (m_private.isNull())
         return 0;
 
     m_private->updateBackingStore();
@@ -291,7 +287,7 @@
 
 bool WebAccessibilityObject::isOffScreen() const
 {
-    if (!m_private)
+    if (m_private.isNull())
         return 0;
 
     m_private->updateBackingStore();
@@ -300,7 +296,7 @@
 
 bool WebAccessibilityObject::isPasswordField() const
 {
-    if (!m_private)
+    if (m_private.isNull())
         return 0;
 
     m_private->updateBackingStore();
@@ -309,7 +305,7 @@
 
 bool WebAccessibilityObject::isPressed() const
 {
-    if (!m_private)
+    if (m_private.isNull())
         return 0;
 
     m_private->updateBackingStore();
@@ -318,7 +314,7 @@
 
 bool WebAccessibilityObject::isReadOnly() const
 {
-    if (!m_private)
+    if (m_private.isNull())
         return 0;
 
     m_private->updateBackingStore();
@@ -327,7 +323,7 @@
 
 bool WebAccessibilityObject::isSelected() const
 {
-    if (!m_private)
+    if (m_private.isNull())
         return 0;
 
     m_private->updateBackingStore();
@@ -336,7 +332,7 @@
 
 bool WebAccessibilityObject::isVisible() const
 {
-    if (!m_private)
+    if (m_private.isNull())
         return 0;
 
     m_private->updateBackingStore();
@@ -345,7 +341,7 @@
 
 bool WebAccessibilityObject::isVisited() const
 {
-    if (!m_private)
+    if (m_private.isNull())
         return 0;
 
     m_private->updateBackingStore();
@@ -354,7 +350,7 @@
 
 WebRect WebAccessibilityObject::boundingBoxRect() const
 {
-    if (!m_private)
+    if (m_private.isNull())
         return WebRect();
 
     m_private->updateBackingStore();
@@ -363,7 +359,7 @@
 
 WebString WebAccessibilityObject::helpText() const
 {
-    if (!m_private)
+    if (m_private.isNull())
         return WebString();
 
     m_private->updateBackingStore();
@@ -372,7 +368,7 @@
 
 int WebAccessibilityObject::headingLevel() const
 {
-    if (!m_private)
+    if (m_private.isNull())
         return 0;
 
     m_private->updateBackingStore();
@@ -381,7 +377,7 @@
 
 WebAccessibilityObject WebAccessibilityObject::hitTest(const WebPoint& point) const
 {
-    if (!m_private)
+    if (m_private.isNull())
         return WebAccessibilityObject();
 
     m_private->updateBackingStore();
@@ -399,7 +395,7 @@
 
 WebString WebAccessibilityObject::keyboardShortcut() const
 {
-    if (!m_private)
+    if (m_private.isNull())
         return WebString();
 
     m_private->updateBackingStore();
@@ -428,7 +424,7 @@
 
 bool WebAccessibilityObject::performDefaultAction() const
 {
-    if (!m_private)
+    if (m_private.isNull())
         return false;
 
     UserGestureIndicator gestureIndicator(DefinitelyProcessingUserGesture);
@@ -439,7 +435,7 @@
 
 WebAccessibilityRole WebAccessibilityObject::roleValue() const
 {
-    if (!m_private)
+    if (m_private.isNull())
         return WebKit::WebAccessibilityRoleUnknown;
 
     m_private->updateBackingStore();
@@ -448,7 +444,7 @@
 
 unsigned WebAccessibilityObject::selectionEnd() const
 {
-    if (!m_private)
+    if (m_private.isNull())
         return 0;
 
     m_private->updateBackingStore();
@@ -457,7 +453,7 @@
 
 unsigned WebAccessibilityObject::selectionStart() const
 {
-    if (!m_private)
+    if (m_private.isNull())
         return 0;
 
     m_private->updateBackingStore();
@@ -466,13 +462,13 @@
 
 void WebAccessibilityObject::setFocused(bool on) const
 {
-    if (m_private)
+    if (!m_private.isNull())
         m_private->setFocused(on);
 }
 
 WebString WebAccessibilityObject::stringValue() const
 {
-    if (!m_private)
+    if (m_private.isNull())
         return WebString();
 
     m_private->updateBackingStore();
@@ -481,7 +477,7 @@
 
 WebString WebAccessibilityObject::title() const
 {
-    if (!m_private)
+    if (m_private.isNull())
         return WebString();
 
     m_private->updateBackingStore();
@@ -490,7 +486,7 @@
 
 WebURL WebAccessibilityObject::url() const
 {
-    if (!m_private)
+    if (m_private.isNull())
         return WebURL();
     
     m_private->updateBackingStore();
@@ -499,7 +495,7 @@
 
 WebNode WebAccessibilityObject::node() const
 {
-    if (!m_private)
+    if (m_private.isNull())
         return WebNode();
 
     m_private->updateBackingStore();
@@ -513,7 +509,7 @@
 
 WebDocument WebAccessibilityObject::document() const
 {
-    if (!m_private)
+    if (m_private.isNull())
         return WebDocument();
 
     m_private->updateBackingStore();
@@ -527,6 +523,9 @@
 
 bool WebAccessibilityObject::hasComputedStyle() const
 {
+    if (m_private.isNull())
+        return false;
+
     Document* document = m_private->document();
     if (document)
         document->updateStyleIfNeeded();
@@ -540,6 +539,9 @@
 
 WebString WebAccessibilityObject::computedStyleDisplay() const
 {
+    if (m_private.isNull())
+        return WebString();
+
     Document* document = m_private->document();
     if (document)
         document->updateStyleIfNeeded();
@@ -557,12 +559,18 @@
 
 bool WebAccessibilityObject::accessibilityIsIgnored() const
 {
+    if (m_private.isNull())
+        return false;
+
     m_private->updateBackingStore();
     return m_private->accessibilityIsIgnored();
 }
 
 bool WebAccessibilityObject::lineBreaks(WebVector<int>& result) const
 {
+    if (m_private.isNull())
+        return false;
+
     m_private->updateBackingStore();
     int textLength = m_private->textLength();
     if (!textLength)
@@ -582,28 +590,98 @@
     return true;
 }
 
+unsigned WebAccessibilityObject::columnCount() const
+{
+    if (m_private.isNull())
+        return false;
+
+    m_private->updateBackingStore();
+    if (!m_private->isAccessibilityTable())
+        return 0;
+
+    return static_cast<WebCore::AccessibilityTable*>(m_private.get())->columnCount();
+}
+
+unsigned WebAccessibilityObject::rowCount() const
+{
+    if (m_private.isNull())
+        return false;
+
+    m_private->updateBackingStore();
+    if (!m_private->isAccessibilityTable())
+        return 0;
+
+    return static_cast<WebCore::AccessibilityTable*>(m_private.get())->rowCount();
+}
+
+WebAccessibilityObject WebAccessibilityObject::cellForColumnAndRow(unsigned column, unsigned row) const
+{
+    m_private->updateBackingStore();
+    if (!m_private->isAccessibilityTable())
+        return WebAccessibilityObject();
+
+    WebCore::AccessibilityTableCell* cell = static_cast<WebCore::AccessibilityTable*>(m_private.get())->cellForColumnAndRow(column, row);
+    return WebAccessibilityObject(static_cast<WebCore::AccessibilityObject*>(cell));
+}
+
+unsigned WebAccessibilityObject::cellColumnIndex() const
+{
+    m_private->updateBackingStore();
+    if (!m_private->isTableCell())
+       return 0;
+
+    pair<int, int> columnRange;
+    static_cast<WebCore::AccessibilityTableCell*>(m_private.get())->columnIndexRange(columnRange);
+    return columnRange.first;
+}
+
+unsigned WebAccessibilityObject::cellColumnSpan() const
+{
+    m_private->updateBackingStore();
+    if (!m_private->isTableCell())
+       return 0;
+
+    pair<int, int> columnRange;
+    static_cast<WebCore::AccessibilityTableCell*>(m_private.get())->columnIndexRange(columnRange);
+    return columnRange.second;
+}
+
+unsigned WebAccessibilityObject::cellRowIndex() const
+{
+    m_private->updateBackingStore();
+    if (!m_private->isTableCell())
+       return 0;
+
+    pair<int, int> rowRange;
+    static_cast<WebCore::AccessibilityTableCell*>(m_private.get())->rowIndexRange(rowRange);
+    return rowRange.first;
+}
+
+unsigned WebAccessibilityObject::cellRowSpan() const
+{
+    m_private->updateBackingStore();
+    if (!m_private->isTableCell())
+       return 0;
+
+    pair<int, int> rowRange;
+    static_cast<WebCore::AccessibilityTableCell*>(m_private.get())->rowIndexRange(rowRange);
+    return rowRange.second;
+}
+
 WebAccessibilityObject::WebAccessibilityObject(const WTF::PassRefPtr<WebCore::AccessibilityObject>& object)
-    : m_private(static_cast<WebAccessibilityObjectPrivate*>(object.releaseRef()))
+    : m_private(object)
 {
 }
 
 WebAccessibilityObject& WebAccessibilityObject::operator=(const WTF::PassRefPtr<WebCore::AccessibilityObject>& object)
 {
-    assign(static_cast<WebAccessibilityObjectPrivate*>(object.releaseRef()));
+    m_private = object;
     return *this;
 }
 
 WebAccessibilityObject::operator WTF::PassRefPtr<WebCore::AccessibilityObject>() const
 {
-    return PassRefPtr<WebCore::AccessibilityObject>(const_cast<WebAccessibilityObjectPrivate*>(m_private));
+    return m_private.get();
 }
 
-void WebAccessibilityObject::assign(WebAccessibilityObjectPrivate* p)
-{
-    // p is already ref'd for us by the caller
-    if (m_private)
-        m_private->deref();
-    m_private = p;
-}
-
 } // namespace WebKit
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to