New issue
Advanced search Search tips

Issue 856477 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner: ----
Closed: Oct 26
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Task



Sign in to add a comment

[LayoutNG] ::first-letter with text-transform make LayoutTextFragment::PositionForCaretOffset() crash

Project Member Reported by yosin@chromium.org, Jun 26 2018

Issue description

Following HTML hits DCHECK() in LayoutTextFragment::PositionForCaretOffset()
DCHECK_LE(offset, FragmentLength()); 2 vs. 1

https://jsfiddle.net/21o7e94z/

<style>
#sample::first-letter {
  text-transform: uppercase;
}
</style>
<p id=sample>ßbcdefghijkl</p>
<!--
<div id="sample" style="width: 10em; white-space: pre"><b> foo </b>  abc	 def  ghi   <br><a href="http://foo/">AVeryLongWordThatWillWrap</a></div><div contenteditable id="editor"></div>
-->
<script>
const selection = window.getSelection();
const sample = document.getElementById('sample');
selection.selectAllChildren(sample);
</script>


LayoutTextFragment::PositionForCaretOffset(unsigned int offset) Line 192
LayoutText::ResolvedTextLength() Line 2043
LayoutText::HasNonCollapsedText() Line 2068
MostForwardCaretPosition<blink::EditingAlgorithm<blink::NodeTraversal> >(const blink::PositionTemplate<blink::EditingAlgorithm<blink::NodeTraversal> > & position, blink::EditingBoundaryCrossingRule rule) Line 901
MostForwardCaretPosition(const blink::PositionTemplate<blink::EditingAlgorithm<blink::NodeTraversal> > & position, blink::EditingBoundaryCrossingRule rule) Line 922
CanonicalPosition<blink::PositionTemplate<blink::EditingStrategy> >(const blink::PositionTemplate<blink::EditingAlgorithm<blink::NodeTraversal> > & position) Line 103
CanonicalPositionOf(const blink::PositionTemplate<blink::EditingAlgorithm<blink::NodeTraversal> > & position) Line 160
VisiblePositionTemplate<blink::EditingAlgorithm<blink::NodeTraversal> >::Create(const blink::PositionWithAffinityTemplate<blink::EditingAlgorithm<blink::NodeTraversal> > & position_with_affinity) Line 86
CreateVisiblePosition(const blink::PositionTemplate<blink::EditingAlgorithm<blink::NodeTraversal> > & position, blink::TextAffinity affinity) Line 146
CanonicalizeSelection<blink::EditingAlgorithm<blink::NodeTraversal> >(const blink::SelectionTemplate<blink::EditingAlgorithm<blink::NodeTraversal> > & selection) Line 206
ComputeVisibleSelection<blink::EditingAlgorithm<blink::NodeTraversal> >(const blink::SelectionTemplate<blink::EditingAlgorithm<blink::NodeTraversal> > & passed_selection, blink::TextGranularity granularity) Line 242
VisibleSelectionTemplate<blink::EditingAlgorithm<blink::NodeTraversal> >::CreateWithGranularity(const blink::SelectionTemplate<blink::EditingAlgorithm<blink::NodeTraversal> > & selection, blink::TextGranularity granularity) Line 85
VisibleSelectionTemplate<blink::EditingAlgorithm<blink::NodeTraversal> >::Create(const blink::SelectionTemplate<blink::EditingAlgorithm<blink::NodeTraversal> > & selection) Line 61
CreateVisibleSelection(const blink::SelectionTemplate<blink::EditingAlgorithm<blink::NodeTraversal> > & selection) Line 65
SelectionEditor::UpdateCachedVisibleSelectionIfNeeded() Line 368
SelectionEditor::ComputeVisibleSelectionInDOMTree() Line 75
FrameSelection::ComputeVisibleSelectionInDOMTree() Line 122
FrameSelection::ComputeVisibleSelectionInDOMTreeDeprecated() Line 154
FrameSelection::SetFocusedNodeIfNeeded() Line 894
FrameSelection::DidSetSelectionDeprecated(const blink::SetSelectionOptions & options) Line 245
DOMSelection::UpdateFrameSelection(const blink::SelectionTemplate<blink::EditingAlgorithm<blink::NodeTraversal> > & selection, blink::Range * new_cached_range, const blink::SetSelectionOptions & passed_options) Line 99
DOMSelection::setBaseAndExtent(blink::Node * base_node, unsigned int base_offset, blink::Node * extent_node, unsigned int extent_offset, blink::ExceptionState & exception_state) Line 400
DOMSelection::selectAllChildren(blink::Node * n, blink::ExceptionState & exception_state) Line 771

 
Components: Blink>Layout
Labels: -Type-Bug Type-Task
Summary: [LayoutNG] ::first-letter with text-transform make LayoutTextFragment::PositionForCaretOffset() crash (was: [LayoutNG] ::first-letter makes LayoutTextFragment::PositionForCaretOffset() to crash)
Status: Fixed (was: Available)

Sign in to add a comment