<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[175068] trunk/Source/WebCore</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/175068">175068</a></dd>
<dt>Author</dt> <dd>cdumez@apple.com</dd>
<dt>Date</dt> <dd>2014-10-22 14:45:20 -0700 (Wed, 22 Oct 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>Avoid confusion between AccessibilityObject::isTable() / isAccessibilityTable()
https://bugs.webkit.org/show_bug.cgi?id=137899

Reviewed by Darin Adler.

Avoid confusion between AccessibilityObject::isTable() and
isAccessibilityTable(). isTable() is equivalent to
is&lt;AccessibilityTable&gt;(), while isAccessibilityTable() is an
AccessibilityTable that is exposed as an AccessibilityTable to the
platform.

This patch is renaming isAccessibilityTable() to
isExposableThroughAccessibility(), makes it non-virtual and defines it
on AccessibilityTable only, for clarity.

This patch also renames isTableExposableThroughAccessibility() to
computeIisTableExposableThroughAccessibility() as it is called only
once to initialize the m_isExposableThroughAccessibility data member.

No new tests, no behavior change.

* accessibility/AccessibilityARIAGrid.cpp:
(WebCore::AccessibilityARIAGrid::addChildren):
* accessibility/AccessibilityARIAGrid.h:
* accessibility/AccessibilityARIAGridCell.cpp:
(WebCore::AccessibilityARIAGridCell::parentTable):
(WebCore::AccessibilityARIAGridCell::rowIndexRange):
(WebCore::AccessibilityARIAGridCell::columnIndexRange):
* accessibility/AccessibilityARIAGridRow.cpp:
(WebCore::AccessibilityARIAGridRow::disclosedRows):
(WebCore::AccessibilityARIAGridRow::disclosedByRow):
(WebCore::AccessibilityARIAGridRow::parentTable):
* accessibility/AccessibilityNodeObject.cpp:
(WebCore::shouldUseAccessiblityObjectInnerText):
* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::isAccessibilityObjectSearchMatchAtIndex):
(WebCore::appendChildrenToArray):
* accessibility/AccessibilityObject.h:
(WebCore::AccessibilityObject::isAccessibilityTable): Deleted.
* accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::ariaSelectedRows):
* accessibility/AccessibilityTable.cpp:
(WebCore::AccessibilityTable::AccessibilityTable):
(WebCore::AccessibilityTable::init):
(WebCore::AccessibilityTable::isExposableThroughAccessibility):
(WebCore::AccessibilityTable::computeIsTableExposableThroughAccessibility):
(WebCore::AccessibilityTable::addChildren):
(WebCore::AccessibilityTable::tableLevel):
(WebCore::AccessibilityTable::roleValue):
(WebCore::AccessibilityTable::computeAccessibilityIsIgnored):
(WebCore::AccessibilityTable::title):
(WebCore::AccessibilityTable::isAccessibilityTable): Deleted.
(WebCore::AccessibilityTable::isTableExposableThroughAccessibility): Deleted.
* accessibility/AccessibilityTable.h:
* accessibility/AccessibilityTableCell.cpp:
(WebCore::AccessibilityTableCell::isTableCell):
* accessibility/AccessibilityTableColumn.cpp:
(WebCore::AccessibilityTableColumn::headerObject):
(WebCore::AccessibilityTableColumn::addChildren):
* accessibility/AccessibilityTableHeaderContainer.cpp:
(WebCore::AccessibilityTableHeaderContainer::addChildren):
* accessibility/AccessibilityTableRow.cpp:
(WebCore::AccessibilityTableRow::isTableRow):
(WebCore::AccessibilityTableRow::parentTable):
* accessibility/atk/WebKitAccessibleWrapperAtk.cpp:
(webkitAccessibleGetNChildren):
(webkitAccessibleRefChild):
(webkitAccessibleGetAttributes):
* accessibility/mac/AXObjectCacheMac.mm:
(WebCore::AXObjectCache::postPlatformNotification):
* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper additionalAccessibilityAttributeNames]):
(-[WebAccessibilityObjectWrapper accessibilityAttributeNames]):
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):
(-[WebAccessibilityObjectWrapper accessibilityParameterizedAttributeNames]):
(-[WebAccessibilityObjectWrapper accessibilitySetValue:forAttribute:]):
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:forParameter:]):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreaccessibilityAccessibilityARIAGridcpp">trunk/Source/WebCore/accessibility/AccessibilityARIAGrid.cpp</a></li>
<li><a href="#trunkSourceWebCoreaccessibilityAccessibilityARIAGridh">trunk/Source/WebCore/accessibility/AccessibilityARIAGrid.h</a></li>
<li><a href="#trunkSourceWebCoreaccessibilityAccessibilityARIAGridCellcpp">trunk/Source/WebCore/accessibility/AccessibilityARIAGridCell.cpp</a></li>
<li><a href="#trunkSourceWebCoreaccessibilityAccessibilityARIAGridRowcpp">trunk/Source/WebCore/accessibility/AccessibilityARIAGridRow.cpp</a></li>
<li><a href="#trunkSourceWebCoreaccessibilityAccessibilityNodeObjectcpp">trunk/Source/WebCore/accessibility/AccessibilityNodeObject.cpp</a></li>
<li><a href="#trunkSourceWebCoreaccessibilityAccessibilityObjectcpp">trunk/Source/WebCore/accessibility/AccessibilityObject.cpp</a></li>
<li><a href="#trunkSourceWebCoreaccessibilityAccessibilityObjecth">trunk/Source/WebCore/accessibility/AccessibilityObject.h</a></li>
<li><a href="#trunkSourceWebCoreaccessibilityAccessibilityRenderObjectcpp">trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp</a></li>
<li><a href="#trunkSourceWebCoreaccessibilityAccessibilityTablecpp">trunk/Source/WebCore/accessibility/AccessibilityTable.cpp</a></li>
<li><a href="#trunkSourceWebCoreaccessibilityAccessibilityTableh">trunk/Source/WebCore/accessibility/AccessibilityTable.h</a></li>
<li><a href="#trunkSourceWebCoreaccessibilityAccessibilityTableCellcpp">trunk/Source/WebCore/accessibility/AccessibilityTableCell.cpp</a></li>
<li><a href="#trunkSourceWebCoreaccessibilityAccessibilityTableColumncpp">trunk/Source/WebCore/accessibility/AccessibilityTableColumn.cpp</a></li>
<li><a href="#trunkSourceWebCoreaccessibilityAccessibilityTableHeaderContainercpp">trunk/Source/WebCore/accessibility/AccessibilityTableHeaderContainer.cpp</a></li>
<li><a href="#trunkSourceWebCoreaccessibilityAccessibilityTableRowcpp">trunk/Source/WebCore/accessibility/AccessibilityTableRow.cpp</a></li>
<li><a href="#trunkSourceWebCoreaccessibilityatkWebKitAccessibleWrapperAtkcpp">trunk/Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp</a></li>
<li><a href="#trunkSourceWebCoreaccessibilitymacAXObjectCacheMacmm">trunk/Source/WebCore/accessibility/mac/AXObjectCacheMac.mm</a></li>
<li><a href="#trunkSourceWebCoreaccessibilitymacWebAccessibilityObjectWrapperMacmm">trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (175067 => 175068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-10-22 21:16:48 UTC (rev 175067)
+++ trunk/Source/WebCore/ChangeLog        2014-10-22 21:45:20 UTC (rev 175068)
</span><span class="lines">@@ -1,5 +1,85 @@
</span><span class="cx"> 2014-10-22  Chris Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><ins>+        Avoid confusion between AccessibilityObject::isTable() / isAccessibilityTable()
+        https://bugs.webkit.org/show_bug.cgi?id=137899
+
+        Reviewed by Darin Adler.
+
+        Avoid confusion between AccessibilityObject::isTable() and
+        isAccessibilityTable(). isTable() is equivalent to
+        is&lt;AccessibilityTable&gt;(), while isAccessibilityTable() is an
+        AccessibilityTable that is exposed as an AccessibilityTable to the
+        platform.
+
+        This patch is renaming isAccessibilityTable() to
+        isExposableThroughAccessibility(), makes it non-virtual and defines it
+        on AccessibilityTable only, for clarity.
+
+        This patch also renames isTableExposableThroughAccessibility() to
+        computeIisTableExposableThroughAccessibility() as it is called only
+        once to initialize the m_isExposableThroughAccessibility data member.
+
+        No new tests, no behavior change.
+
+        * accessibility/AccessibilityARIAGrid.cpp:
+        (WebCore::AccessibilityARIAGrid::addChildren):
+        * accessibility/AccessibilityARIAGrid.h:
+        * accessibility/AccessibilityARIAGridCell.cpp:
+        (WebCore::AccessibilityARIAGridCell::parentTable):
+        (WebCore::AccessibilityARIAGridCell::rowIndexRange):
+        (WebCore::AccessibilityARIAGridCell::columnIndexRange):
+        * accessibility/AccessibilityARIAGridRow.cpp:
+        (WebCore::AccessibilityARIAGridRow::disclosedRows):
+        (WebCore::AccessibilityARIAGridRow::disclosedByRow):
+        (WebCore::AccessibilityARIAGridRow::parentTable):
+        * accessibility/AccessibilityNodeObject.cpp:
+        (WebCore::shouldUseAccessiblityObjectInnerText):
+        * accessibility/AccessibilityObject.cpp:
+        (WebCore::AccessibilityObject::isAccessibilityObjectSearchMatchAtIndex):
+        (WebCore::appendChildrenToArray):
+        * accessibility/AccessibilityObject.h:
+        (WebCore::AccessibilityObject::isAccessibilityTable): Deleted.
+        * accessibility/AccessibilityRenderObject.cpp:
+        (WebCore::AccessibilityRenderObject::ariaSelectedRows):
+        * accessibility/AccessibilityTable.cpp:
+        (WebCore::AccessibilityTable::AccessibilityTable):
+        (WebCore::AccessibilityTable::init):
+        (WebCore::AccessibilityTable::isExposableThroughAccessibility):
+        (WebCore::AccessibilityTable::computeIsTableExposableThroughAccessibility):
+        (WebCore::AccessibilityTable::addChildren):
+        (WebCore::AccessibilityTable::tableLevel):
+        (WebCore::AccessibilityTable::roleValue):
+        (WebCore::AccessibilityTable::computeAccessibilityIsIgnored):
+        (WebCore::AccessibilityTable::title):
+        (WebCore::AccessibilityTable::isAccessibilityTable): Deleted.
+        (WebCore::AccessibilityTable::isTableExposableThroughAccessibility): Deleted.
+        * accessibility/AccessibilityTable.h:
+        * accessibility/AccessibilityTableCell.cpp:
+        (WebCore::AccessibilityTableCell::isTableCell):
+        * accessibility/AccessibilityTableColumn.cpp:
+        (WebCore::AccessibilityTableColumn::headerObject):
+        (WebCore::AccessibilityTableColumn::addChildren):
+        * accessibility/AccessibilityTableHeaderContainer.cpp:
+        (WebCore::AccessibilityTableHeaderContainer::addChildren):
+        * accessibility/AccessibilityTableRow.cpp:
+        (WebCore::AccessibilityTableRow::isTableRow):
+        (WebCore::AccessibilityTableRow::parentTable):
+        * accessibility/atk/WebKitAccessibleWrapperAtk.cpp:
+        (webkitAccessibleGetNChildren):
+        (webkitAccessibleRefChild):
+        (webkitAccessibleGetAttributes):
+        * accessibility/mac/AXObjectCacheMac.mm:
+        (WebCore::AXObjectCache::postPlatformNotification):
+        * accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
+        (-[WebAccessibilityObjectWrapper additionalAccessibilityAttributeNames]):
+        (-[WebAccessibilityObjectWrapper accessibilityAttributeNames]):
+        (-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):
+        (-[WebAccessibilityObjectWrapper accessibilityParameterizedAttributeNames]):
+        (-[WebAccessibilityObjectWrapper accessibilitySetValue:forAttribute:]):
+        (-[WebAccessibilityObjectWrapper accessibilityAttributeValue:forParameter:]):
+
+2014-10-22  Chris Dumez  &lt;cdumez@apple.com&gt;
+
</ins><span class="cx">         Avoid repeated is&lt;MutableStyleProperties&gt;() checks in StyleProperties
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=137978
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreaccessibilityAccessibilityARIAGridcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/accessibility/AccessibilityARIAGrid.cpp (175067 => 175068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/accessibility/AccessibilityARIAGrid.cpp        2014-10-22 21:16:48 UTC (rev 175067)
+++ trunk/Source/WebCore/accessibility/AccessibilityARIAGrid.cpp        2014-10-22 21:45:20 UTC (rev 175068)
</span><span class="lines">@@ -100,7 +100,7 @@
</span><span class="cx"> {
</span><span class="cx">     ASSERT(!m_haveChildren); 
</span><span class="cx">     
</span><del>-    if (!isAccessibilityTable()) {
</del><ins>+    if (!isExposableThroughAccessibility()) {
</ins><span class="cx">         AccessibilityRenderObject::addChildren();
</span><span class="cx">         return;
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebCoreaccessibilityAccessibilityARIAGridh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/accessibility/AccessibilityARIAGrid.h (175067 => 175068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/accessibility/AccessibilityARIAGrid.h        2014-10-22 21:16:48 UTC (rev 175067)
+++ trunk/Source/WebCore/accessibility/AccessibilityARIAGrid.h        2014-10-22 21:45:20 UTC (rev 175068)
</span><span class="lines">@@ -53,7 +53,7 @@
</span><span class="cx">     // ARIA treegrids and grids support selected rows.
</span><span class="cx">     virtual bool supportsSelectedRows() override { return true; }
</span><span class="cx">     virtual bool isMultiSelectable() const override { return true; }
</span><del>-    virtual bool isTableExposableThroughAccessibility() const override { return true; }
</del><ins>+    virtual bool computeIsTableExposableThroughAccessibility() const override { return true; }
</ins><span class="cx">     
</span><span class="cx">     void addRowDescendant(AccessibilityObject*, HashSet&lt;AccessibilityObject*&gt;&amp; appendedRows, unsigned&amp; columnCount);
</span><span class="cx">     bool addTableCellChild(AccessibilityObject*, HashSet&lt;AccessibilityObject*&gt;&amp; appendedRows, unsigned&amp; columnCount);
</span></span></pre></div>
<a id="trunkSourceWebCoreaccessibilityAccessibilityARIAGridCellcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/accessibility/AccessibilityARIAGridCell.cpp (175067 => 175068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/accessibility/AccessibilityARIAGridCell.cpp        2014-10-22 21:16:48 UTC (rev 175067)
+++ trunk/Source/WebCore/accessibility/AccessibilityARIAGridCell.cpp        2014-10-22 21:45:20 UTC (rev 175068)
</span><span class="lines">@@ -55,14 +55,14 @@
</span><span class="cx">     if (!parent)
</span><span class="cx">         return nullptr;
</span><span class="cx">     
</span><del>-    if (parent-&gt;isAccessibilityTable())
</del><ins>+    if (is&lt;AccessibilityTable&gt;(*parent) &amp;&amp; downcast&lt;AccessibilityTable&gt;(*parent).isExposableThroughAccessibility())
</ins><span class="cx">         return downcast&lt;AccessibilityTable&gt;(parent);
</span><span class="cx"> 
</span><span class="cx">     // It could happen that we hadn't reached the parent table yet (in
</span><span class="cx">     // case objects for rows were not ignoring accessibility) so for
</span><span class="cx">     // that reason we need to run parentObjectUnignored once again.
</span><span class="cx">     parent = parent-&gt;parentObjectUnignored();
</span><del>-    if (!parent || !parent-&gt;isAccessibilityTable())
</del><ins>+    if (!(is&lt;AccessibilityTable&gt;(parent) &amp;&amp; downcast&lt;AccessibilityTable&gt;(*parent).isExposableThroughAccessibility()))
</ins><span class="cx">         return nullptr;
</span><span class="cx">     
</span><span class="cx">     return downcast&lt;AccessibilityTable&gt;(parent);
</span><span class="lines">@@ -77,7 +77,7 @@
</span><span class="cx">     if (is&lt;AccessibilityTableRow&gt;(*parent)) {
</span><span class="cx">         // We already got a table row, use its API.
</span><span class="cx">         rowRange.first = downcast&lt;AccessibilityTableRow&gt;(*parent).rowIndex();
</span><del>-    } else if (parent-&gt;isAccessibilityTable()) {
</del><ins>+    } else if (is&lt;AccessibilityTable&gt;(*parent) &amp;&amp; downcast&lt;AccessibilityTable&gt;(*parent).isExposableThroughAccessibility()) {
</ins><span class="cx">         // We reached the parent table, so we need to inspect its
</span><span class="cx">         // children to determine the row index for the cell in it.
</span><span class="cx">         unsigned columnCount = downcast&lt;AccessibilityTable&gt;(*parent).columnCount();
</span><span class="lines">@@ -104,7 +104,8 @@
</span><span class="cx">     if (!parent)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    if (!parent-&gt;isTableRow() &amp;&amp; !parent-&gt;isAccessibilityTable())
</del><ins>+    if (!is&lt;AccessibilityTableRow&gt;(*parent)
+        &amp;&amp; !(is&lt;AccessibilityTable&gt;(*parent) &amp;&amp; downcast&lt;AccessibilityTable&gt;(*parent).isExposableThroughAccessibility()))
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     const AccessibilityChildrenVector&amp; siblings = parent-&gt;children();
</span></span></pre></div>
<a id="trunkSourceWebCoreaccessibilityAccessibilityARIAGridRowcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/accessibility/AccessibilityARIAGridRow.cpp (175067 => 175068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/accessibility/AccessibilityARIAGridRow.cpp        2014-10-22 21:16:48 UTC (rev 175067)
+++ trunk/Source/WebCore/accessibility/AccessibilityARIAGridRow.cpp        2014-10-22 21:45:20 UTC (rev 175068)
</span><span class="lines">@@ -63,7 +63,7 @@
</span><span class="cx">     // The contiguous disclosed rows will be the rows in the table that 
</span><span class="cx">     // have an aria-level of plus 1 from this row.
</span><span class="cx">     AccessibilityObject* parent = parentObjectUnignored();
</span><del>-    if (!parent || !parent-&gt;isAccessibilityTable())
</del><ins>+    if (!is&lt;AccessibilityTable&gt;(*parent) || !downcast&lt;AccessibilityTable&gt;(*parent).isExposableThroughAccessibility())
</ins><span class="cx">         return;
</span><span class="cx">     
</span><span class="cx">     // Search for rows that match the correct level. 
</span><span class="lines">@@ -90,7 +90,7 @@
</span><span class="cx">     // The row that discloses this one is the row in the table
</span><span class="cx">     // that is aria-level subtract 1 from this row.
</span><span class="cx">     AccessibilityObject* parent = parentObjectUnignored();
</span><del>-    if (!parent || !parent-&gt;isAccessibilityTable())
</del><ins>+    if (!is&lt;AccessibilityTable&gt;(*parent) || !downcast&lt;AccessibilityTable&gt;(*parent).isExposableThroughAccessibility())
</ins><span class="cx">         return nullptr;
</span><span class="cx">     
</span><span class="cx">     // If the level is 1 or less, than nothing discloses this row.
</span><span class="lines">@@ -120,8 +120,11 @@
</span><span class="cx">     // only have &quot;row&quot; elements, but if not, we still should handle it gracefully by finding the right table.
</span><span class="cx">     for (AccessibilityObject* parent = parentObject(); parent; parent = parent-&gt;parentObject()) {
</span><span class="cx">         // The parent table for an ARIA grid row should be an ARIA table.
</span><del>-        if (parent-&gt;isAccessibilityTable() &amp;&amp; downcast&lt;AccessibilityTable&gt;(*parent).isAriaTable())
-            return downcast&lt;AccessibilityTable&gt;(parent);
</del><ins>+        if (is&lt;AccessibilityTable&gt;(*parent)) {
+            AccessibilityTable&amp; tableParent = downcast&lt;AccessibilityTable&gt;(*parent);
+            if (tableParent.isExposableThroughAccessibility() &amp;&amp; tableParent.isAriaTable())
+                return &amp;tableParent;
+        }
</ins><span class="cx">     }
</span><span class="cx">     
</span><span class="cx">     return nullptr;
</span></span></pre></div>
<a id="trunkSourceWebCoreaccessibilityAccessibilityNodeObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/accessibility/AccessibilityNodeObject.cpp (175067 => 175068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/accessibility/AccessibilityNodeObject.cpp        2014-10-22 21:16:48 UTC (rev 175067)
+++ trunk/Source/WebCore/accessibility/AccessibilityNodeObject.cpp        2014-10-22 21:45:20 UTC (rev 175068)
</span><span class="lines">@@ -31,6 +31,7 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;AXObjectCache.h&quot;
</span><span class="cx"> #include &quot;AccessibilityImageMapLink.h&quot;
</span><ins>+#include &quot;AccessibilityList.h&quot;
</ins><span class="cx"> #include &quot;AccessibilityListBox.h&quot;
</span><span class="cx"> #include &quot;AccessibilitySpinButton.h&quot;
</span><span class="cx"> #include &quot;AccessibilityTable.h&quot;
</span><span class="lines">@@ -1623,9 +1624,15 @@
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="cx">     // Skip big container elements like lists, tables, etc.
</span><del>-    if (obj-&gt;isList() || obj-&gt;isAccessibilityTable() || obj-&gt;isTree() || obj-&gt;isCanvas())
</del><ins>+    if (is&lt;AccessibilityList&gt;(*obj))
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><ins>+    if (is&lt;AccessibilityTable&gt;(*obj) &amp;&amp; downcast&lt;AccessibilityTable&gt;(*obj).isExposableThroughAccessibility())
+        return false;
+
+    if (obj-&gt;isTree() || obj-&gt;isCanvas())
+        return false;
+
</ins><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreaccessibilityAccessibilityObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/accessibility/AccessibilityObject.cpp (175067 => 175068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/accessibility/AccessibilityObject.cpp        2014-10-22 21:16:48 UTC (rev 175067)
+++ trunk/Source/WebCore/accessibility/AccessibilityObject.cpp        2014-10-22 21:45:20 UTC (rev 175068)
</span><span class="lines">@@ -231,11 +231,11 @@
</span><span class="cx">         
</span><span class="cx">     case TableSameLevelSearchKey:
</span><span class="cx">         return criteria-&gt;startObject
</span><del>-            &amp;&amp; axObject-&gt;isAccessibilityTable()
-            &amp;&amp; axObject-&gt;tableLevel() == criteria-&gt;startObject-&gt;tableLevel();
</del><ins>+            &amp;&amp; is&lt;AccessibilityTable&gt;(*axObject) &amp;&amp; downcast&lt;AccessibilityTable&gt;(*axObject).isExposableThroughAccessibility()
+            &amp;&amp; downcast&lt;AccessibilityTable&gt;(*axObject).tableLevel() == criteria-&gt;startObject-&gt;tableLevel();
</ins><span class="cx">         
</span><span class="cx">     case TableSearchKey:
</span><del>-        return axObject-&gt;isAccessibilityTable();
</del><ins>+        return is&lt;AccessibilityTable&gt;(*axObject) &amp;&amp; downcast&lt;AccessibilityTable&gt;(*axObject).isExposableThroughAccessibility();
</ins><span class="cx">         
</span><span class="cx">     case TextFieldSearchKey:
</span><span class="cx">         return axObject-&gt;isTextControl();
</span><span class="lines">@@ -502,7 +502,7 @@
</span><span class="cx"> {
</span><span class="cx">     // A table's children includes elements whose own children are also the table's children (due to the way the Mac exposes tables).
</span><span class="cx">     // The rows from the table should be queried, since those are direct descendants of the table, and they contain content.
</span><del>-    const auto&amp; searchChildren = object-&gt;isAccessibilityTable() ? downcast&lt;AccessibilityTable&gt;(*object).rows() : object-&gt;children();
</del><ins>+    const auto&amp; searchChildren = is&lt;AccessibilityTable&gt;(*object) &amp;&amp; downcast&lt;AccessibilityTable&gt;(*object).isExposableThroughAccessibility() ? downcast&lt;AccessibilityTable&gt;(*object).rows() : object-&gt;children();
</ins><span class="cx"> 
</span><span class="cx">     size_t childrenSize = searchChildren.size();
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreaccessibilityAccessibilityObjecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/accessibility/AccessibilityObject.h (175067 => 175068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/accessibility/AccessibilityObject.h        2014-10-22 21:16:48 UTC (rev 175067)
+++ trunk/Source/WebCore/accessibility/AccessibilityObject.h        2014-10-22 21:45:20 UTC (rev 175068)
</span><span class="lines">@@ -475,7 +475,6 @@
</span><span class="cx">     virtual bool isControl() const { return false; }
</span><span class="cx">     virtual bool isList() const { return false; }
</span><span class="cx">     virtual bool isTable() const { return false; }
</span><del>-    virtual bool isAccessibilityTable() const { return false; }
</del><span class="cx">     virtual bool isDataTable() const { return false; }
</span><span class="cx">     virtual bool isTableRow() const { return false; }
</span><span class="cx">     virtual bool isTableColumn() const { return false; }
</span></span></pre></div>
<a id="trunkSourceWebCoreaccessibilityAccessibilityRenderObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp (175067 => 175068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp        2014-10-22 21:16:48 UTC (rev 175067)
+++ trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp        2014-10-22 21:45:20 UTC (rev 175068)
</span><span class="lines">@@ -3144,8 +3144,11 @@
</span><span class="cx">         AccessibilityChildrenVector allRows;
</span><span class="cx">         ariaTreeRows(allRows);
</span><span class="cx">         rowsIteration(allRows);
</span><del>-    } else if (isAccessibilityTable() &amp;&amp; downcast&lt;AccessibilityTable&gt;(*this).supportsSelectedRows())
-        rowsIteration(downcast&lt;AccessibilityTable&gt;(*this).rows());
</del><ins>+    } else if (is&lt;AccessibilityTable&gt;(*this)) {
+        auto&amp; thisTable = downcast&lt;AccessibilityTable&gt;(*this);
+        if (thisTable.isExposableThroughAccessibility() &amp;&amp; thisTable.supportsSelectedRows())
+            rowsIteration(thisTable.rows());
+    }
</ins><span class="cx"> }
</span><span class="cx">     
</span><span class="cx"> void AccessibilityRenderObject::ariaListboxSelectedChildren(AccessibilityChildrenVector&amp; result)
</span></span></pre></div>
<a id="trunkSourceWebCoreaccessibilityAccessibilityTablecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/accessibility/AccessibilityTable.cpp (175067 => 175068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/accessibility/AccessibilityTable.cpp        2014-10-22 21:16:48 UTC (rev 175067)
+++ trunk/Source/WebCore/accessibility/AccessibilityTable.cpp        2014-10-22 21:45:20 UTC (rev 175068)
</span><span class="lines">@@ -51,7 +51,7 @@
</span><span class="cx"> AccessibilityTable::AccessibilityTable(RenderObject* renderer)
</span><span class="cx">     : AccessibilityRenderObject(renderer)
</span><span class="cx">     , m_headerContainer(nullptr)
</span><del>-    , m_isAccessibilityTable(true)
</del><ins>+    , m_isExposableThroughAccessibility(true)
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -62,7 +62,7 @@
</span><span class="cx"> void AccessibilityTable::init()
</span><span class="cx"> {
</span><span class="cx">     AccessibilityRenderObject::init();
</span><del>-    m_isAccessibilityTable = isTableExposableThroughAccessibility();
</del><ins>+    m_isExposableThroughAccessibility = computeIsTableExposableThroughAccessibility();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> PassRefPtr&lt;AccessibilityTable&gt; AccessibilityTable::create(RenderObject* renderer)
</span><span class="lines">@@ -82,12 +82,12 @@
</span><span class="cx">     return false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool AccessibilityTable::isAccessibilityTable() const
</del><ins>+bool AccessibilityTable::isExposableThroughAccessibility() const
</ins><span class="cx"> {
</span><span class="cx">     if (!m_renderer)
</span><span class="cx">         return false;
</span><span class="cx">     
</span><del>-    return m_isAccessibilityTable;
</del><ins>+    return m_isExposableThroughAccessibility;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> HTMLTableElement* AccessibilityTable::tableElement() const
</span><span class="lines">@@ -309,7 +309,7 @@
</span><span class="cx">     return false;
</span><span class="cx"> }
</span><span class="cx">     
</span><del>-bool AccessibilityTable::isTableExposableThroughAccessibility() const
</del><ins>+bool AccessibilityTable::computeIsTableExposableThroughAccessibility() const
</ins><span class="cx"> {
</span><span class="cx">     // The following is a heuristic used to determine if a
</span><span class="cx">     // &lt;table&gt; should be exposed as an AXTable. The goal
</span><span class="lines">@@ -347,7 +347,7 @@
</span><span class="cx"> 
</span><span class="cx"> void AccessibilityTable::addChildren()
</span><span class="cx"> {
</span><del>-    if (!isAccessibilityTable()) {
</del><ins>+    if (!isExposableThroughAccessibility()) {
</ins><span class="cx">         AccessibilityRenderObject::addChildren();
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="lines">@@ -525,7 +525,7 @@
</span><span class="cx"> {
</span><span class="cx">     int level = 0;
</span><span class="cx">     for (AccessibilityObject* obj = static_cast&lt;AccessibilityObject*&gt;(const_cast&lt;AccessibilityTable*&gt;(this)); obj; obj = obj-&gt;parentObject()) {
</span><del>-        if (obj-&gt;isAccessibilityTable())
</del><ins>+        if (is&lt;AccessibilityTable&gt;(*obj) &amp;&amp; downcast&lt;AccessibilityTable&gt;(*obj).isExposableThroughAccessibility())
</ins><span class="cx">             ++level;
</span><span class="cx">     }
</span><span class="cx">     
</span><span class="lines">@@ -568,7 +568,7 @@
</span><span class="cx"> 
</span><span class="cx"> AccessibilityRole AccessibilityTable::roleValue() const
</span><span class="cx"> {
</span><del>-    if (!isAccessibilityTable())
</del><ins>+    if (!isExposableThroughAccessibility())
</ins><span class="cx">         return AccessibilityRenderObject::roleValue();
</span><span class="cx"> 
</span><span class="cx">     return TableRole;
</span><span class="lines">@@ -582,7 +582,7 @@
</span><span class="cx">     if (decision == IgnoreObject)
</span><span class="cx">         return true;
</span><span class="cx">     
</span><del>-    if (!isAccessibilityTable())
</del><ins>+    if (!isExposableThroughAccessibility())
</ins><span class="cx">         return AccessibilityRenderObject::computeAccessibilityIsIgnored();
</span><span class="cx">         
</span><span class="cx">     return false;
</span><span class="lines">@@ -597,7 +597,7 @@
</span><span class="cx"> 
</span><span class="cx"> String AccessibilityTable::title() const
</span><span class="cx"> {
</span><del>-    if (!isAccessibilityTable())
</del><ins>+    if (!isExposableThroughAccessibility())
</ins><span class="cx">         return AccessibilityRenderObject::title();
</span><span class="cx">     
</span><span class="cx">     String title;
</span></span></pre></div>
<a id="trunkSourceWebCoreaccessibilityAccessibilityTableh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/accessibility/AccessibilityTable.h (175067 => 175068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/accessibility/AccessibilityTable.h        2014-10-22 21:16:48 UTC (rev 175067)
+++ trunk/Source/WebCore/accessibility/AccessibilityTable.h        2014-10-22 21:45:20 UTC (rev 175068)
</span><span class="lines">@@ -60,7 +60,7 @@
</span><span class="cx">     virtual bool supportsSelectedRows() { return false; }
</span><span class="cx">     unsigned columnCount();
</span><span class="cx">     unsigned rowCount();
</span><del>-    virtual int tableLevel() const override;
</del><ins>+    virtual int tableLevel() const override final;
</ins><span class="cx">     
</span><span class="cx">     virtual String title() const override;
</span><span class="cx">     
</span><span class="lines">@@ -75,15 +75,15 @@
</span><span class="cx">     // an object that contains, as children, all the objects that act as headers
</span><span class="cx">     AccessibilityObject* headerContainer();
</span><span class="cx"> 
</span><del>-    // isAccessibilityTable is whether it is exposed as an AccessibilityTable to the platform.
-    virtual bool isAccessibilityTable() const override final;
</del><ins>+    // isExposableThroughAccessibility() is whether it is exposed as an AccessibilityTable to the platform.
+    bool isExposableThroughAccessibility() const;
</ins><span class="cx"> 
</span><span class="cx"> protected:
</span><span class="cx">     AccessibilityChildrenVector m_rows;
</span><span class="cx">     AccessibilityChildrenVector m_columns;
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;AccessibilityObject&gt; m_headerContainer;
</span><del>-    bool m_isAccessibilityTable;
</del><ins>+    bool m_isExposableThroughAccessibility;
</ins><span class="cx"> 
</span><span class="cx">     bool hasARIARole() const;
</span><span class="cx"> 
</span><span class="lines">@@ -92,11 +92,10 @@
</span><span class="cx">     // isDataTable is whether it is exposed as an AccessibilityTable because the heuristic
</span><span class="cx">     // think this &quot;looks&quot; like a data-based table (instead of a table used for layout).
</span><span class="cx">     virtual bool isDataTable() const override;
</span><del>-
-    virtual bool isTableExposableThroughAccessibility() const;
</del><span class="cx">     virtual bool computeAccessibilityIsIgnored() const override;
</span><span class="cx"> 
</span><span class="cx"> private:
</span><ins>+    virtual bool computeIsTableExposableThroughAccessibility() const;
</ins><span class="cx">     virtual void titleElementText(Vector&lt;AccessibilityText&gt;&amp;) const override;
</span><span class="cx">     HTMLTableElement* tableElement() const;
</span><span class="cx">     void addChildrenFromSection(RenderTableSection*, unsigned&amp; maxColumnCount);
</span></span></pre></div>
<a id="trunkSourceWebCoreaccessibilityAccessibilityTableCellcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/accessibility/AccessibilityTableCell.cpp (175067 => 175068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/accessibility/AccessibilityTableCell.cpp        2014-10-22 21:16:48 UTC (rev 175067)
+++ trunk/Source/WebCore/accessibility/AccessibilityTableCell.cpp        2014-10-22 21:45:20 UTC (rev 175068)
</span><span class="lines">@@ -100,7 +100,7 @@
</span><span class="cx">     // This used to check if the unignoredParent was a row, but that exploded performance if
</span><span class="cx">     // this was in nested tables. This check should be just as good.
</span><span class="cx">     AccessibilityObject* parentTable = this-&gt;parentTable();
</span><del>-    return parentTable &amp;&amp; parentTable-&gt;isAccessibilityTable();
</del><ins>+    return is&lt;AccessibilityTable&gt;(parentTable) &amp;&amp; downcast&lt;AccessibilityTable&gt;(*parentTable).isExposableThroughAccessibility();
</ins><span class="cx"> }
</span><span class="cx">     
</span><span class="cx"> AccessibilityRole AccessibilityTableCell::determineAccessibilityRole()
</span></span></pre></div>
<a id="trunkSourceWebCoreaccessibilityAccessibilityTableColumncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/accessibility/AccessibilityTableColumn.cpp (175067 => 175068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/accessibility/AccessibilityTableColumn.cpp        2014-10-22 21:16:48 UTC (rev 175067)
+++ trunk/Source/WebCore/accessibility/AccessibilityTableColumn.cpp        2014-10-22 21:45:20 UTC (rev 175068)
</span><span class="lines">@@ -75,11 +75,13 @@
</span><span class="cx">     RenderObject* renderer = m_parent-&gt;renderer();
</span><span class="cx">     if (!renderer)
</span><span class="cx">         return nullptr;
</span><del>-    
-    if (!m_parent-&gt;isAccessibilityTable())
</del><ins>+    if (!is&lt;AccessibilityTable&gt;(*m_parent))
</ins><span class="cx">         return nullptr;
</span><ins>+
+    auto&amp; parentTable = downcast&lt;AccessibilityTable&gt;(*m_parent);
+    if (!parentTable.isExposableThroughAccessibility())
+        return nullptr;
</ins><span class="cx">     
</span><del>-    auto&amp; parentTable = downcast&lt;AccessibilityTable&gt;(*m_parent);
</del><span class="cx">     if (parentTable.isAriaTable()) {
</span><span class="cx">         for (const auto&amp; cell : children()) {
</span><span class="cx">             if (cell-&gt;ariaRoleAttribute() == ColumnHeaderRole)
</span><span class="lines">@@ -170,10 +172,13 @@
</span><span class="cx">     ASSERT(!m_haveChildren); 
</span><span class="cx">     
</span><span class="cx">     m_haveChildren = true;
</span><del>-    if (!m_parent || !m_parent-&gt;isAccessibilityTable())
</del><ins>+    if (!is&lt;AccessibilityTable&gt;(m_parent))
</ins><span class="cx">         return;
</span><ins>+
+    auto&amp; parentTable = downcast&lt;AccessibilityTable&gt;(*m_parent);
+    if (!parentTable.isExposableThroughAccessibility())
+        return;
</ins><span class="cx">     
</span><del>-    AccessibilityTable&amp; parentTable = downcast&lt;AccessibilityTable&gt;(*m_parent);
</del><span class="cx">     int numRows = parentTable.rowCount();
</span><span class="cx">     
</span><span class="cx">     for (int i = 0; i &lt; numRows; ++i) {
</span></span></pre></div>
<a id="trunkSourceWebCoreaccessibilityAccessibilityTableHeaderContainercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/accessibility/AccessibilityTableHeaderContainer.cpp (175067 => 175068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/accessibility/AccessibilityTableHeaderContainer.cpp        2014-10-22 21:16:48 UTC (rev 175067)
+++ trunk/Source/WebCore/accessibility/AccessibilityTableHeaderContainer.cpp        2014-10-22 21:45:20 UTC (rev 175068)
</span><span class="lines">@@ -70,10 +70,14 @@
</span><span class="cx">     ASSERT(!m_haveChildren); 
</span><span class="cx">     
</span><span class="cx">     m_haveChildren = true;
</span><del>-    if (!m_parent || !m_parent-&gt;isAccessibilityTable())
</del><ins>+    if (!is&lt;AccessibilityTable&gt;(m_parent))
</ins><span class="cx">         return;
</span><ins>+
+    auto&amp; parentTable = downcast&lt;AccessibilityTable&gt;(*m_parent);
+    if (!parentTable.isExposableThroughAccessibility())
+        return;
</ins><span class="cx">     
</span><del>-    downcast&lt;AccessibilityTable&gt;(*m_parent).columnHeaders(m_children);
</del><ins>+    parentTable.columnHeaders(m_children);
</ins><span class="cx">     
</span><span class="cx">     for (const auto&amp; child : m_children)
</span><span class="cx">         m_headerRect.unite(child-&gt;elementRect());
</span></span></pre></div>
<a id="trunkSourceWebCoreaccessibilityAccessibilityTableRowcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/accessibility/AccessibilityTableRow.cpp (175067 => 175068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/accessibility/AccessibilityTableRow.cpp        2014-10-22 21:16:48 UTC (rev 175067)
+++ trunk/Source/WebCore/accessibility/AccessibilityTableRow.cpp        2014-10-22 21:45:20 UTC (rev 175068)
</span><span class="lines">@@ -73,10 +73,7 @@
</span><span class="cx"> bool AccessibilityTableRow::isTableRow() const
</span><span class="cx"> {
</span><span class="cx">     AccessibilityObject* table = parentTable();
</span><del>-    if (!table || !table-&gt;isAccessibilityTable())
-        return false;
-    
-    return true;
</del><ins>+    return is&lt;AccessibilityTable&gt;(table)  &amp;&amp; downcast&lt;AccessibilityTable&gt;(*table).isExposableThroughAccessibility();
</ins><span class="cx"> }
</span><span class="cx">     
</span><span class="cx"> AccessibilityObject* AccessibilityTableRow::observableObject() const
</span><span class="lines">@@ -106,8 +103,12 @@
</span><span class="cx">     for (AccessibilityObject* parent = parentObject(); parent; parent = parent-&gt;parentObject()) {
</span><span class="cx">         // If this is a table object, but not an accessibility table, we should stop because we don't want to
</span><span class="cx">         // choose another ancestor table as this row's table.
</span><del>-        if (is&lt;AccessibilityTable&gt;(*parent))
-            return downcast&lt;AccessibilityTable&gt;(*parent).isAccessibilityTable() ? downcast&lt;AccessibilityTable&gt;(parent) : nullptr;
</del><ins>+        if (is&lt;AccessibilityTable&gt;(*parent)) {
+            auto&amp; parentTable = downcast&lt;AccessibilityTable&gt;(*parent);
+            if (parentTable.isExposableThroughAccessibility())
+                return &amp;parentTable;
+            break;
+        }
</ins><span class="cx">     }
</span><span class="cx">     
</span><span class="cx">     return nullptr;
</span></span></pre></div>
<a id="trunkSourceWebCoreaccessibilityatkWebKitAccessibleWrapperAtkcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp (175067 => 175068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp        2014-10-22 21:16:48 UTC (rev 175067)
+++ trunk/Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp        2014-10-22 21:45:20 UTC (rev 175068)
</span><span class="lines">@@ -37,6 +37,7 @@
</span><span class="cx"> #include &quot;AXObjectCache.h&quot;
</span><span class="cx"> #include &quot;AccessibilityList.h&quot;
</span><span class="cx"> #include &quot;AccessibilityListBoxOption.h&quot;
</span><ins>+#include &quot;AccessibilityTable.h&quot;
</ins><span class="cx"> #include &quot;Document.h&quot;
</span><span class="cx"> #include &quot;Frame.h&quot;
</span><span class="cx"> #include &quot;FrameView.h&quot;
</span><span class="lines">@@ -355,7 +356,7 @@
</span><span class="cx"> 
</span><span class="cx">     // Tables should be treated in a different way because rows should
</span><span class="cx">     // be bypassed when exposing the accessible hierarchy.
</span><del>-    if (coreObject-&gt;isAccessibilityTable())
</del><ins>+    if (is&lt;AccessibilityTable&gt;(*coreObject) &amp;&amp; downcast&lt;AccessibilityTable&gt;(*coreObject).isExposableThroughAccessibility())
</ins><span class="cx">         return getNChildrenForTable(coreObject);
</span><span class="cx"> 
</span><span class="cx">     return coreObject-&gt;children().size();
</span><span class="lines">@@ -398,7 +399,7 @@
</span><span class="cx"> 
</span><span class="cx">     // Tables are special cases because rows should be bypassed, but
</span><span class="cx">     // still taking their cells into account.
</span><del>-    if (coreObject-&gt;isAccessibilityTable())
</del><ins>+    if (is&lt;AccessibilityTable&gt;(*coreObject) &amp;&amp; downcast&lt;AccessibilityTable&gt;(*coreObject).isExposableThroughAccessibility())
</ins><span class="cx">         coreChild = getChildForTable(coreObject, index);
</span><span class="cx">     else {
</span><span class="cx">         const AccessibilityObject::AccessibilityChildrenVector&amp; children = coreObject-&gt;children();
</span><span class="lines">@@ -520,7 +521,7 @@
</span><span class="cx"> 
</span><span class="cx">     // Set the 'layout-guess' attribute to help Assistive
</span><span class="cx">     // Technologies know when an exposed table is not data table.
</span><del>-    if (coreObject-&gt;isAccessibilityTable() &amp;&amp; !coreObject-&gt;isDataTable())
</del><ins>+    if (is&lt;AccessibilityTable&gt;(*coreObject) &amp;&amp; downcast&lt;AccessibilityTable&gt;(*coreObject).isExposableThroughAccessibility() &amp;&amp; !coreObject-&gt;isDataTable())
</ins><span class="cx">         attributeSet = addToAtkAttributeSet(attributeSet, &quot;layout-guess&quot;, &quot;true&quot;);
</span><span class="cx"> 
</span><span class="cx">     String placeholder = coreObject-&gt;placeholderValue();
</span></span></pre></div>
<a id="trunkSourceWebCoreaccessibilitymacAXObjectCacheMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/accessibility/mac/AXObjectCacheMac.mm (175067 => 175068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/accessibility/mac/AXObjectCacheMac.mm        2014-10-22 21:16:48 UTC (rev 175067)
+++ trunk/Source/WebCore/accessibility/mac/AXObjectCacheMac.mm        2014-10-22 21:45:20 UTC (rev 175068)
</span><span class="lines">@@ -29,6 +29,7 @@
</span><span class="cx"> #if HAVE(ACCESSIBILITY)
</span><span class="cx"> 
</span><span class="cx"> #import &quot;AccessibilityObject.h&quot;
</span><ins>+#import &quot;AccessibilityTable.h&quot;
</ins><span class="cx"> #import &quot;RenderObject.h&quot;
</span><span class="cx"> #import &quot;WebAccessibilityObjectWrapperMac.h&quot;
</span><span class="cx"> #import &quot;WebCoreSystemInterface.h&quot;
</span><span class="lines">@@ -96,7 +97,7 @@
</span><span class="cx">             macNotification = @&quot;AXInvalidStatusChanged&quot;;
</span><span class="cx">             break;
</span><span class="cx">         case AXSelectedChildrenChanged:
</span><del>-            if (obj-&gt;isAccessibilityTable())
</del><ins>+            if (is&lt;AccessibilityTable&gt;(*obj) &amp;&amp; downcast&lt;AccessibilityTable&gt;(*obj).isExposableThroughAccessibility())
</ins><span class="cx">                 macNotification = NSAccessibilitySelectedRowsChangedNotification;
</span><span class="cx">             else
</span><span class="cx">                 macNotification = NSAccessibilitySelectedChildrenChangedNotification;
</span></span></pre></div>
<a id="trunkSourceWebCoreaccessibilitymacWebAccessibilityObjectWrapperMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm (175067 => 175068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm        2014-10-22 21:16:48 UTC (rev 175067)
+++ trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm        2014-10-22 21:45:20 UTC (rev 175068)
</span><span class="lines">@@ -1199,7 +1199,7 @@
</span><span class="cx">     if (m_object-&gt;supportsARIADropping())
</span><span class="cx">         [additional addObject:NSAccessibilityDropEffectsAttribute];
</span><span class="cx">     
</span><del>-    if (m_object-&gt;isAccessibilityTable() &amp;&amp; downcast&lt;AccessibilityTable&gt;(*m_object).supportsSelectedRows())
</del><ins>+    if (is&lt;AccessibilityTable&gt;(*m_object) &amp;&amp; downcast&lt;AccessibilityTable&gt;(*m_object).isExposableThroughAccessibility() &amp;&amp; downcast&lt;AccessibilityTable&gt;(*m_object).supportsSelectedRows())
</ins><span class="cx">         [additional addObject:NSAccessibilitySelectedRowsAttribute];
</span><span class="cx">     
</span><span class="cx">     if (m_object-&gt;supportsARIALiveRegion()) {
</span><span class="lines">@@ -1590,7 +1590,7 @@
</span><span class="cx">     else if (m_object-&gt;isAnchor() || m_object-&gt;isImage() || m_object-&gt;isLink())
</span><span class="cx">         objectAttributes = anchorAttrs;
</span><span class="cx">     
</span><del>-    else if (m_object-&gt;isAccessibilityTable())
</del><ins>+    else if (is&lt;AccessibilityTable&gt;(*m_object) &amp;&amp; downcast&lt;AccessibilityTable&gt;(*m_object).isExposableThroughAccessibility())
</ins><span class="cx">         objectAttributes = tableAttrs;
</span><span class="cx">     else if (m_object-&gt;isTableColumn())
</span><span class="cx">         objectAttributes = tableColAttrs;
</span><span class="lines">@@ -2554,7 +2554,7 @@
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx">     
</span><del>-    if (m_object-&gt;isAccessibilityTable()) {
</del><ins>+    if (is&lt;AccessibilityTable&gt;(*m_object) &amp;&amp; downcast&lt;AccessibilityTable&gt;(*m_object).isExposableThroughAccessibility()) {
</ins><span class="cx">         auto&amp; table = downcast&lt;AccessibilityTable&gt;(*m_object);
</span><span class="cx">         if ([attributeName isEqualToString:NSAccessibilityRowsAttribute])
</span><span class="cx">             return convertToNSArray(table.rows());
</span><span class="lines">@@ -3128,7 +3128,7 @@
</span><span class="cx">     if (m_object-&gt;isTextControl())
</span><span class="cx">         return textParamAttrs;
</span><span class="cx">     
</span><del>-    if (m_object-&gt;isAccessibilityTable())
</del><ins>+    if (is&lt;AccessibilityTable&gt;(*m_object) &amp;&amp; downcast&lt;AccessibilityTable&gt;(*m_object).isExposableThroughAccessibility())
</ins><span class="cx">         return tableParamAttrs;
</span><span class="cx">     
</span><span class="cx">     if (m_object-&gt;isMenuRelated())
</span><span class="lines">@@ -3314,7 +3314,7 @@
</span><span class="cx">     else if ([attributeName isEqualToString:NSAccessibilitySelectedRowsAttribute]) {
</span><span class="cx">         AccessibilityObject::AccessibilityChildrenVector selectedRows;
</span><span class="cx">         convertToVector(array, selectedRows);
</span><del>-        if (m_object-&gt;isTree() || m_object-&gt;isAccessibilityTable())
</del><ins>+        if (m_object-&gt;isTree() || (is&lt;AccessibilityTable&gt;(*m_object) &amp;&amp; downcast&lt;AccessibilityTable&gt;(*m_object).isExposableThroughAccessibility()))
</ins><span class="cx">             m_object-&gt;setSelectedRows(selectedRows);
</span><span class="cx">     } else if ([attributeName isEqualToString:NSAccessibilityGrabbedAttribute])
</span><span class="cx">         m_object-&gt;setARIAGrabbed([number boolValue]);
</span><span class="lines">@@ -3703,7 +3703,7 @@
</span><span class="cx">         return [self textMarkerForVisiblePosition:visiblePosRange.end];
</span><span class="cx">     }
</span><span class="cx">     
</span><del>-    if (m_object-&gt;isAccessibilityTable()) {
</del><ins>+    if (is&lt;AccessibilityTable&gt;(*m_object) &amp;&amp; downcast&lt;AccessibilityTable&gt;(*m_object).isExposableThroughAccessibility()) {
</ins><span class="cx">         if ([attribute isEqualToString:NSAccessibilityCellForColumnAndRowParameterizedAttribute]) {
</span><span class="cx">             if (array == nil || [array count] != 2)
</span><span class="cx">                 return nil;
</span></span></pre>
</div>
</div>

</body>
</html>