<!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>[201067] trunk</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/201067">201067</a></dd>
<dt>Author</dt> <dd>n_wang@apple.com</dd>
<dt>Date</dt> <dd>2016-05-17 19:14:48 -0700 (Tue, 17 May 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>AX: Adding children incorrectly when there are nested inline continuations
https://bugs.webkit.org/show_bug.cgi?id=157818

Reviewed by Chris Fleizach.

Source/WebCore:

When getting the inline element continuation's next sibling, if we fall back on to the parent
case, we might end up adding the same node repeatedly. Fixed it by skipping this case.

Test: accessibility/mac/nested-inline-elements-children.html

* accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::nextSibling):

LayoutTests:

* accessibility/mac/nested-inline-elements-children-expected.txt: Added.
* accessibility/mac/nested-inline-elements-children.html: Added.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreaccessibilityAccessibilityRenderObjectcpp">trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsaccessibilitymacnestedinlineelementschildrenexpectedtxt">trunk/LayoutTests/accessibility/mac/nested-inline-elements-children-expected.txt</a></li>
<li><a href="#trunkLayoutTestsaccessibilitymacnestedinlineelementschildrenhtml">trunk/LayoutTests/accessibility/mac/nested-inline-elements-children.html</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (201066 => 201067)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2016-05-18 02:11:19 UTC (rev 201066)
+++ trunk/LayoutTests/ChangeLog        2016-05-18 02:14:48 UTC (rev 201067)
</span><span class="lines">@@ -1,3 +1,13 @@
</span><ins>+2016-05-17  Nan Wang  &lt;n_wang@apple.com&gt;
+
+        AX: Adding children incorrectly when there are nested inline continuations
+        https://bugs.webkit.org/show_bug.cgi?id=157818
+
+        Reviewed by Chris Fleizach.
+
+        * accessibility/mac/nested-inline-elements-children-expected.txt: Added.
+        * accessibility/mac/nested-inline-elements-children.html: Added.
+
</ins><span class="cx"> 2016-05-17  Dean Jackson  &lt;dino@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Add media query support for wide gamut displays on Mac
</span></span></pre></div>
<a id="trunkLayoutTestsaccessibilitymacnestedinlineelementschildrenexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/accessibility/mac/nested-inline-elements-children-expected.txt (0 => 201067)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/accessibility/mac/nested-inline-elements-children-expected.txt                                (rev 0)
+++ trunk/LayoutTests/accessibility/mac/nested-inline-elements-children-expected.txt        2016-05-18 02:14:48 UTC (rev 201067)
</span><span class="lines">@@ -0,0 +1,18 @@
</span><ins>+test1
+test2
+test3
+This tests that when you have nested inline continuations, we add the children correctly.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+AXRole: AXGroup AXValue: 
+  AXRole: AXStaticText AXValue: test1
+  AXRole: AXStaticText AXValue: test2
+  AXRole: AXGroup AXValue: 
+    AXRole: AXStaticText AXValue: test3
+PASS content.childrenCount is 3
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsaccessibilitymacnestedinlineelementschildrenhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/accessibility/mac/nested-inline-elements-children.html (0 => 201067)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/accessibility/mac/nested-inline-elements-children.html                                (rev 0)
+++ trunk/LayoutTests/accessibility/mac/nested-inline-elements-children.html        2016-05-18 02:14:48 UTC (rev 201067)
</span><span class="lines">@@ -0,0 +1,53 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+    function dumpAccessibilityChildren(element, level) {
+        if (element.stringValue.indexOf('End of test') &gt;= 0)
+            return false;
+
+        var indent = &quot;&quot;;
+        for (var k = 0; k &lt; level; k++) { indent += &quot;  &quot;; }
+        debug(indent + element.role + &quot; &quot; + element.stringValue);
+        var childrenCount = element.childrenCount;
+        for (var k = 0; k &lt; childrenCount; k++) {
+            if (!dumpAccessibilityChildren(element.childAtIndex(k), level+1))
+                return false;
+        }
+        return true;
+    }
+&lt;/script&gt;
+&lt;/head&gt;
+
+&lt;body id=&quot;body&quot;&gt;
+
+&lt;div&gt;
+&lt;span&gt;
+    &lt;span&gt;
+        test1
+        &lt;div&gt;&lt;/div&gt;
+        &lt;span&gt; test2&lt;/span&gt;
+    &lt;/span&gt;&lt;div&gt;
+    test3
+    &lt;/div&gt;
+&lt;/span&gt;
+&lt;/div&gt;
+
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    if (window.accessibilityController) {
+        description(&quot;This tests that when you have nested inline continuations, we add the children correctly.&quot;);
+
+        var content = accessibilityController.rootElement.childAtIndex(0).childAtIndex(0);
+        dumpAccessibilityChildren(content, 0);
+        
+        shouldBe(&quot;content.childrenCount&quot;, &quot;3&quot;);
+    }
+    successfullyParsed = true;
+&lt;/script&gt;
+
+&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (201066 => 201067)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-05-18 02:11:19 UTC (rev 201066)
+++ trunk/Source/WebCore/ChangeLog        2016-05-18 02:14:48 UTC (rev 201067)
</span><span class="lines">@@ -1,3 +1,18 @@
</span><ins>+2016-05-17  Nan Wang  &lt;n_wang@apple.com&gt;
+
+        AX: Adding children incorrectly when there are nested inline continuations
+        https://bugs.webkit.org/show_bug.cgi?id=157818
+
+        Reviewed by Chris Fleizach.
+
+        When getting the inline element continuation's next sibling, if we fall back on to the parent
+        case, we might end up adding the same node repeatedly. Fixed it by skipping this case.
+
+        Test: accessibility/mac/nested-inline-elements-children.html
+
+        * accessibility/AccessibilityRenderObject.cpp:
+        (WebCore::AccessibilityRenderObject::nextSibling):
+
</ins><span class="cx"> 2016-05-17  Dean Jackson  &lt;dino@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Add media query support for wide gamut displays on Mac
</span></span></pre></div>
<a id="trunkSourceWebCoreaccessibilityAccessibilityRenderObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp (201066 => 201067)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp        2016-05-18 02:11:19 UTC (rev 201066)
+++ trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp        2016-05-18 02:14:48 UTC (rev 201067)
</span><span class="lines">@@ -399,6 +399,13 @@
</span><span class="cx">         // Case 5b: continuation is an inline - in this case the inline's first child is the next sibling
</span><span class="cx">         else
</span><span class="cx">             nextSibling = firstChildConsideringContinuation(continuation);
</span><ins>+        
+        // After case 4, there are chances that nextSibling has the same node as the current renderer,
+        // which might lead to adding the same child repeatedly.
+        if (nextSibling &amp;&amp; nextSibling-&gt;node() == m_renderer-&gt;node()) {
+            if (AccessibilityObject* nextObj = axObjectCache()-&gt;getOrCreate(nextSibling))
+                return nextObj-&gt;nextSibling();
+        }
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (!nextSibling)
</span></span></pre>
</div>
</div>

</body>
</html>