| 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 7551fa9aca421a97db3626f5ab5ffe45be2a8c94..6c84cce709433b1d60cfd067351462a395797e76 100644
|
| --- a/third_party/WebKit/Source/core/editing/VisibleUnits.cpp
|
| +++ b/third_party/WebKit/Source/core/editing/VisibleUnits.cpp
|
| @@ -2559,15 +2559,31 @@ template <typename Strategy>
|
| LayoutRect localSelectionRectOfPositionTemplate(
|
| const PositionWithAffinityTemplate<Strategy>& position,
|
| LayoutObject*& layoutObject) {
|
| - LayoutRect rect = localCaretRectOfPositionTemplate(position, layoutObject);
|
| -
|
| - if (rect.isEmpty())
|
| - return rect;
|
| + if (position.isNull()) {
|
| + layoutObject = nullptr;
|
| + return LayoutRect();
|
| + }
|
| + Node* node = position.anchorNode();
|
| + layoutObject = node->layoutObject();
|
| + if (!layoutObject)
|
| + return LayoutRect();
|
|
|
| InlineBoxPosition boxPosition =
|
| computeInlineBoxPosition(position.position(), position.affinity());
|
|
|
| - InlineTextBox* box = toInlineTextBox(boxPosition.inlineBox);
|
| + if (!boxPosition.inlineBox)
|
| + return LayoutRect();
|
| +
|
| + layoutObject = LineLayoutAPIShim::layoutObjectFrom(
|
| + boxPosition.inlineBox->getLineLayoutItem());
|
| +
|
| + LayoutRect rect = layoutObject->localCaretRect(boxPosition.inlineBox,
|
| + boxPosition.offsetInBox);
|
| +
|
| + if (rect.isEmpty())
|
| + return rect;
|
| +
|
| + InlineBox* const box = boxPosition.inlineBox;
|
| if (layoutObject->style()->isHorizontalWritingMode()) {
|
| rect.setY(box->root().selectionTop());
|
| rect.setHeight(box->root().selectionHeight());
|
|
|