Commit 251167c9 authored by dmazzoni's avatar dmazzoni Committed by Commit bot

Avoid endless loop when computing line boundaries in contentEditable.

BUG=535323,572777

Review URL: https://codereview.chromium.org/1548403002

Cr-Commit-Position: refs/heads/master@{#367213}
parent 4477e4b7
<!DOCTYPE HTML>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<style>
.hideAllContainers .container {
display: none;
}
</style>
<div class="container" id="contentEditable" contentEditable>
<span style="display: inline-block;">
<span style="position: absolute;">
<span>x</span>
</span>
<span>2</span>
<span style="display: inline-block;"></span>
</span>
<span>+</span>
</div>
<script>
test(function(t) {
var axContentEditable = accessibilityController.accessibleElementById("contentEditable");
assert_equals(axContentEditable.lineForIndex(0), 0);
}, "No endless loop when getting line for index in contentEditable");
</script>
<script>
if (window.testRunner)
document.body.className = "hideAllContainers";
</script>
...@@ -2165,6 +2165,10 @@ void AXLayoutObject::lineBreaks(Vector<int>& lineBreaks) const ...@@ -2165,6 +2165,10 @@ void AXLayoutObject::lineBreaks(Vector<int>& lineBreaks) const
lineBreaks.append(indexForVisiblePosition(visiblePos)); lineBreaks.append(indexForVisiblePosition(visiblePos));
prevVisiblePos = visiblePos; prevVisiblePos = visiblePos;
visiblePos = nextLinePosition(visiblePos, 0, HasEditableAXRole); visiblePos = nextLinePosition(visiblePos, 0, HasEditableAXRole);
// Make sure we always make forward progress.
if (visiblePos.deepEquivalent().compareTo(prevVisiblePos.deepEquivalent()) < 0)
break;
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment