Title: [187068] branches/safari-601.1-branch

Diff

Modified: branches/safari-601.1-branch/LayoutTests/ChangeLog (187067 => 187068)


--- branches/safari-601.1-branch/LayoutTests/ChangeLog	2015-07-21 04:37:17 UTC (rev 187067)
+++ branches/safari-601.1-branch/LayoutTests/ChangeLog	2015-07-21 04:37:20 UTC (rev 187068)
@@ -1,5 +1,20 @@
 2015-07-20  Matthew Hanson  <matthew_han...@apple.com>
 
+        Merge r186974. rdar://problem/21106945
+
+    2015-07-17  Nan Wang  <n_w...@apple.com>
+
+            AX: iframe within table cell is inaccessible to VoiceOver
+            https://bugs.webkit.org/show_bug.cgi?id=147001
+            <rdar://problem/21106945>
+
+            Reviewed by Chris Fleizach.
+
+            * accessibility/iframe-within-cell-expected.txt: Added.
+            * accessibility/iframe-within-cell.html: Added.
+
+2015-07-20  Matthew Hanson  <matthew_han...@apple.com>
+
         Merge r186968. rdar://problem/21359811
 
     2015-07-17  Myles C. Maxfield  <mmaxfi...@apple.com>

Added: branches/safari-601.1-branch/LayoutTests/accessibility/iframe-within-cell-expected.txt (0 => 187068)


--- branches/safari-601.1-branch/LayoutTests/accessibility/iframe-within-cell-expected.txt	                        (rev 0)
+++ branches/safari-601.1-branch/LayoutTests/accessibility/iframe-within-cell-expected.txt	2015-07-21 04:37:20 UTC (rev 187068)
@@ -0,0 +1,11 @@
+This tests iframe within a cell is accessible.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS successfullyParsed is true
+
+TEST COMPLETE
+Role for iframe cell is:  AXRole: AXCell .
+
+Cell A		Cell C

Added: branches/safari-601.1-branch/LayoutTests/accessibility/iframe-within-cell.html (0 => 187068)


--- branches/safari-601.1-branch/LayoutTests/accessibility/iframe-within-cell.html	                        (rev 0)
+++ branches/safari-601.1-branch/LayoutTests/accessibility/iframe-within-cell.html	2015-07-21 04:37:20 UTC (rev 187068)
@@ -0,0 +1,37 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src=""
+<script>
+
+if (window.testRunner)
+    testRunner.dumpAsText();
+
+function runTest()
+{
+    document.getElementById("frame_cell").focus()
+    if (window.accessibilityController) {
+        document.body.focus();
+        var frameElement = accessibilityController.accessibleElementById("frame_cell");
+        debug("Role for iframe cell is:  " + frameElement.role + " .\n");
+    }
+}
+            
+</script>
+</head>
+    
+<body _onload_="runTest()">
+<table cellpadding=0 cellspacing=0 border=2>
+<tr>
+<td> Cell A </td>
+<td id="frame_cell" description="Cell B"><iframe src="" width="100%"></iframe></td>
+<td> Cell C </td>
+</tr>
+</table>
+
+<script>
+description("This tests iframe within a cell is accessible.");
+</script>
+<script src=""
+</body>
+</html>

Modified: branches/safari-601.1-branch/Source/WebCore/ChangeLog (187067 => 187068)


--- branches/safari-601.1-branch/Source/WebCore/ChangeLog	2015-07-21 04:37:17 UTC (rev 187067)
+++ branches/safari-601.1-branch/Source/WebCore/ChangeLog	2015-07-21 04:37:20 UTC (rev 187068)
@@ -1,5 +1,27 @@
 2015-07-20  Matthew Hanson  <matthew_han...@apple.com>
 
+        Merge r186974. rdar://problem/21106945
+
+    2015-07-17  Nan Wang  <n_w...@apple.com>
+
+            AX: iframe within table cell is inaccessible to VoiceOver
+            https://bugs.webkit.org/show_bug.cgi?id=147001
+            <rdar://problem/21106945>
+
+            Reviewed by Chris Fleizach.
+
+            When a table cell is created before its parent table determines if it should be ignored or not,
+            the table cell may cache the wrong role. Fix that by allowing each table cell to update its role
+            after the table makes this determination.
+
+            Test: accessibility/iframe-within-cell.html
+
+            * accessibility/AccessibilityTable.cpp:
+            (WebCore::AccessibilityTable::addChildren):
+            (WebCore::AccessibilityTable::addChildrenFromSection):
+
+2015-07-20  Matthew Hanson  <matthew_han...@apple.com>
+
         Merge r186968. rdar://problem/21359811
 
     2015-07-17  Myles C. Maxfield  <mmaxfi...@apple.com>

Modified: branches/safari-601.1-branch/Source/WebCore/accessibility/AccessibilityTable.cpp (187067 => 187068)


--- branches/safari-601.1-branch/Source/WebCore/accessibility/AccessibilityTable.cpp	2015-07-21 04:37:17 UTC (rev 187067)
+++ branches/safari-601.1-branch/Source/WebCore/accessibility/AccessibilityTable.cpp	2015-07-21 04:37:20 UTC (rev 187068)
@@ -409,6 +409,16 @@
     AccessibilityObject* headerContainerObject = headerContainer();
     if (headerContainerObject && !headerContainerObject->accessibilityIsIgnored())
         m_children.append(headerContainerObject);
+
+    // Sometimes the cell gets the wrong role initially because it is created before the parent
+    // determines whether it is an accessibility table. Iterate all the cells and allow them to
+    // update their roles now that the table knows its status.
+    // see bug: https://bugs.webkit.org/show_bug.cgi?id=147001
+    for (const auto& row : m_rows) {
+        for (const auto& cell : row->children())
+            cell->updateAccessibilityRole();
+    }
+
 }
 
 void AccessibilityTable::addChildrenFromSection(RenderTableSection* tableSection, unsigned& maxColumnCount)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to