<!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>[172027] 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/172027">172027</a></dd>
<dt>Author</dt> <dd>cfleizach@apple.com</dd>
<dt>Date</dt> <dd>2014-08-04 22:09:05 -0700 (Mon, 04 Aug 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>AX: Select activity behavior does not work when an existing range is already selected
https://bugs.webkit.org/show_bug.cgi?id=135579

Reviewed by Mario Sanchez Prada.

Source/WebCore:
If you have an existing range selected, and try to apply a select and replace operation, like capitalize,
searching for that range will fail because it skips the currently selected range.

For these cases, it seems the best way is to start the search from the start position, rather than relying on the
entire range.

Updated existing test: platform/mac/accessibility/select-text.html

* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::selectText):

LayoutTests:
* platform/mac/accessibility/select-text-expected.txt:
* platform/mac/accessibility/select-text.html:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsplatformmacaccessibilityselecttextexpectedtxt">trunk/LayoutTests/platform/mac/accessibility/select-text-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacaccessibilityselecttexthtml">trunk/LayoutTests/platform/mac/accessibility/select-text.html</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreaccessibilityAccessibilityObjectcpp">trunk/Source/WebCore/accessibility/AccessibilityObject.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (172026 => 172027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2014-08-05 03:58:28 UTC (rev 172026)
+++ trunk/LayoutTests/ChangeLog        2014-08-05 05:09:05 UTC (rev 172027)
</span><span class="lines">@@ -1,3 +1,13 @@
</span><ins>+2014-08-04  Chris Fleizach  &lt;cfleizach@apple.com&gt;
+
+        AX: Select activity behavior does not work when an existing range is already selected
+        https://bugs.webkit.org/show_bug.cgi?id=135579
+
+        Reviewed by Mario Sanchez Prada.
+
+        * platform/mac/accessibility/select-text-expected.txt:
+        * platform/mac/accessibility/select-text.html:
+
</ins><span class="cx"> 2014-08-04  Benjamin Poulain  &lt;benjamin@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Simplify the StyleInvalidation mode of rule collection
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacaccessibilityselecttextexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac/accessibility/select-text-expected.txt (172026 => 172027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/accessibility/select-text-expected.txt        2014-08-05 03:58:28 UTC (rev 172026)
+++ trunk/LayoutTests/platform/mac/accessibility/select-text-expected.txt        2014-08-05 05:09:05 UTC (rev 172027)
</span><span class="lines">@@ -1,6 +1,6 @@
</span><span class="cx"> The slow BROWN cat jumps over the lazy dog.
</span><span class="cx"> 
</span><del>-TEXT2: The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
</del><ins>+TEXT2: THE quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
</ins><span class="cx"> 
</span><span class="cx"> This tests the ability to select and replace text with respect to selection.
</span><span class="cx"> 
</span><span class="lines">@@ -35,6 +35,11 @@
</span><span class="cx"> PASS result is 'quick'
</span><span class="cx"> PASS windowSelection.getRangeAt(0).startOffset is 56
</span><span class="cx"> PASS windowSelection.getRangeAt(0).endOffset is 61
</span><ins>+PASS windowSelection.getRangeAt(0).toString() is 'The'
+PASS result is 'The'
+PASS windowSelection.getRangeAt(0).toString() is 'THE'
+PASS windowSelection.getRangeAt(0).startOffset is 7
+PASS windowSelection.getRangeAt(0).endOffset is 10
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacaccessibilityselecttexthtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac/accessibility/select-text.html (172026 => 172027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/accessibility/select-text.html        2014-08-05 03:58:28 UTC (rev 172026)
+++ trunk/LayoutTests/platform/mac/accessibility/select-text.html        2014-08-05 05:09:05 UTC (rev 172027)
</span><span class="lines">@@ -143,6 +143,23 @@
</span><span class="cx">         shouldBe(&quot;windowSelection.getRangeAt(0).startOffset&quot;, &quot;56&quot;);
</span><span class="cx">         shouldBe(&quot;windowSelection.getRangeAt(0).endOffset&quot;, &quot;61&quot;);
</span><span class="cx"> 
</span><ins>+        // [https://bugs.webkit.org/show_bug.cgi?id=135575]
+        // When an existing range is already selected, we should not ignore that when searching for future activities.
+        // First find the range before the current selection.
+        var range = document.createRange();
+        range.setStart(document.getElementById(&quot;text2&quot;).firstChild, 7);
+        range.setEnd(document.getElementById(&quot;text2&quot;).firstChild, 10);
+        windowSelection.removeAllRanges();
+        windowSelection.addRange(range);
+        shouldBe(&quot;windowSelection.getRangeAt(0).toString()&quot;, &quot;'The'&quot;);
+      
+        var text2 = accessibilityController.accessibleElementById(&quot;text2&quot;);
+        result = text2.selectTextWithCriteria(&quot;AXSelectTextAmbiguityResolutionClosestToSelection&quot;, &quot;the&quot;, null, &quot;AXSelectTextActivityFindAndUppercase&quot;);
+        shouldBe(&quot;result&quot;, &quot;'The'&quot;);
+        shouldBe(&quot;windowSelection.getRangeAt(0).toString()&quot;, &quot;'THE'&quot;);
+        shouldBe(&quot;windowSelection.getRangeAt(0).startOffset&quot;, &quot;7&quot;);
+        shouldBe(&quot;windowSelection.getRangeAt(0).endOffset&quot;, &quot;10&quot;);
+
</ins><span class="cx">     }
</span><span class="cx"> &lt;/script&gt;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (172026 => 172027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-08-05 03:58:28 UTC (rev 172026)
+++ trunk/Source/WebCore/ChangeLog        2014-08-05 05:09:05 UTC (rev 172027)
</span><span class="lines">@@ -1,3 +1,21 @@
</span><ins>+2014-08-04  Chris Fleizach  &lt;cfleizach@apple.com&gt;
+
+        AX: Select activity behavior does not work when an existing range is already selected
+        https://bugs.webkit.org/show_bug.cgi?id=135579
+
+        Reviewed by Mario Sanchez Prada.
+
+        If you have an existing range selected, and try to apply a select and replace operation, like capitalize,
+        searching for that range will fail because it skips the currently selected range.
+
+        For these cases, it seems the best way is to start the search from the start position, rather than relying on the
+        entire range.
+
+        Updated existing test: platform/mac/accessibility/select-text.html
+
+        * accessibility/AccessibilityObject.cpp:
+        (WebCore::AccessibilityObject::selectText):
+
</ins><span class="cx"> 2014-08-04  Jer Noble  &lt;jer.noble@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [MSE][Mac] Seeking past buffered range will not resume playback when seek completes.
</span></span></pre></div>
<a id="trunkSourceWebCoreaccessibilityAccessibilityObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/accessibility/AccessibilityObject.cpp (172026 => 172027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/accessibility/AccessibilityObject.cpp        2014-08-05 03:58:28 UTC (rev 172026)
+++ trunk/Source/WebCore/accessibility/AccessibilityObject.cpp        2014-08-05 05:09:05 UTC (rev 172027)
</span><span class="lines">@@ -626,6 +626,8 @@
</span><span class="cx">     Vector&lt;String&gt;&amp; searchStrings = criteria-&gt;searchStrings;
</span><span class="cx">     
</span><span class="cx">     RefPtr&lt;Range&gt; selectedStringRange = selectionRange();
</span><ins>+    // When starting our search again, make this a zero length range so that search forwards will find this selected range if its appropriate.
+    selectedStringRange-&gt;setEnd(selectedStringRange-&gt;startContainer(), selectedStringRange-&gt;startOffset());
</ins><span class="cx">     
</span><span class="cx">     RefPtr&lt;Range&gt; closestAfterStringRange = nullptr;
</span><span class="cx">     RefPtr&lt;Range&gt; closestBeforeStringRange = nullptr;
</span></span></pre>
</div>
</div>

</body>
</html>