| Index: third_party/WebKit/Source/core/editing/VisibleUnits.cpp
|
| diff --git a/third_party/WebKit/Source/core/editing/VisibleUnits.cpp b/third_party/WebKit/Source/core/editing/VisibleUnits.cpp
|
| index a234656ab5f420fdfc89510245cc750322b15ce5..01bbc7bce3b203a20be0edbfc68ef703c755ce39 100644
|
| --- a/third_party/WebKit/Source/core/editing/VisibleUnits.cpp
|
| +++ b/third_party/WebKit/Source/core/editing/VisibleUnits.cpp
|
| @@ -2143,6 +2143,33 @@ VisiblePosition NextParagraphPosition(const VisiblePosition& p, LayoutUnit x) {
|
| return pos;
|
| }
|
|
|
| +EphemeralRange ExpandToParagraphBoundary(const EphemeralRange& range) {
|
| + const VisiblePosition& start = CreateVisiblePosition(range.StartPosition());
|
| + DCHECK(start.IsNotNull()) << range.StartPosition();
|
| + const Position& paragraph_start = StartOfParagraph(start).DeepEquivalent();
|
| + DCHECK(paragraph_start.IsNotNull()) << range.StartPosition();
|
| +
|
| + const VisiblePosition& end = CreateVisiblePosition(range.EndPosition());
|
| + DCHECK(end.IsNotNull()) << range.EndPosition();
|
| + const Position& paragraph_end = EndOfParagraph(end).DeepEquivalent();
|
| + DCHECK(paragraph_end.IsNotNull()) << range.EndPosition();
|
| +
|
| + // TODO(xiaochengh): There are some cases (crbug.com/640112) where we get
|
| + // |paragraphStart > paragraphEnd|, which is the reason we cannot directly
|
| + // return |EphemeralRange(paragraphStart, paragraphEnd)|. This is not
|
| + // desired, though. We should do more investigation to ensure that why
|
| + // |paragraphStart <= paragraphEnd| is violated.
|
| + const Position& result_start =
|
| + paragraph_start.IsNotNull() && paragraph_start <= range.StartPosition()
|
| + ? paragraph_start
|
| + : range.StartPosition();
|
| + const Position& result_end =
|
| + paragraph_end.IsNotNull() && paragraph_end >= range.EndPosition()
|
| + ? paragraph_end
|
| + : range.EndPosition();
|
| + return EphemeralRange(result_start, result_end);
|
| +}
|
| +
|
| // ---------
|
|
|
| VisiblePosition StartOfBlock(const VisiblePosition& visible_position,
|
|
|