| Index: third_party/WebKit/Source/core/editing/SelectionModifier.cpp
|
| diff --git a/third_party/WebKit/Source/core/editing/SelectionModifier.cpp b/third_party/WebKit/Source/core/editing/SelectionModifier.cpp
|
| index 1f08e087577967e71f721b36225c456c5e7b9ddc..8ff2d8b617e632e997f665bf74400699e6ceeec2 100644
|
| --- a/third_party/WebKit/Source/core/editing/SelectionModifier.cpp
|
| +++ b/third_party/WebKit/Source/core/editing/SelectionModifier.cpp
|
| @@ -802,26 +802,24 @@ static LayoutUnit LineDirectionPointForBlockDirectionNavigationOf(
|
| if (visible_position.IsNull())
|
| return LayoutUnit();
|
|
|
| - LayoutObject* layout_object;
|
| - LayoutRect local_rect = LocalCaretRectOfPosition(
|
| - visible_position.ToPositionWithAffinity(), layout_object);
|
| - if (local_rect.IsEmpty() || !layout_object)
|
| + const LocalCaretRect& caret_rect =
|
| + LocalCaretRectOfPosition(visible_position.ToPositionWithAffinity());
|
| + if (caret_rect.IsEmpty())
|
| return LayoutUnit();
|
|
|
| // This ignores transforms on purpose, for now. Vertical navigation is done
|
| // without consulting transforms, so that 'up' in transformed text is 'up'
|
| // relative to the text, not absolute 'up'.
|
| - FloatPoint caret_point =
|
| - layout_object->LocalToAbsolute(FloatPoint(local_rect.Location()));
|
| - LayoutObject* containing_block = layout_object->ContainingBlock();
|
| - if (!containing_block) {
|
| - // Just use ourselves to determine the writing mode if we have no containing
|
| - // block.
|
| - containing_block = layout_object;
|
| - }
|
| - return LayoutUnit(containing_block->IsHorizontalWritingMode()
|
| - ? caret_point.X()
|
| - : caret_point.Y());
|
| + const FloatPoint& caret_point = caret_rect.layout_object->LocalToAbsolute(
|
| + FloatPoint(caret_rect.rect.Location()));
|
| + LayoutObject* const containing_block =
|
| + caret_rect.layout_object->ContainingBlock();
|
| + // Just use ourselves to determine the writing mode if we have no containing
|
| + // block.
|
| + LayoutObject* const layout_object =
|
| + containing_block ? containing_block : caret_rect.layout_object;
|
| + return LayoutUnit(layout_object->IsHorizontalWritingMode() ? caret_point.X()
|
| + : caret_point.Y());
|
| }
|
|
|
| LayoutUnit SelectionModifier::LineDirectionPointForBlockDirectionNavigation(
|
|
|