| Index: third_party/WebKit/Source/core/editing/commands/ReplaceSelectionCommand.cpp
|
| diff --git a/third_party/WebKit/Source/core/editing/commands/ReplaceSelectionCommand.cpp b/third_party/WebKit/Source/core/editing/commands/ReplaceSelectionCommand.cpp
|
| index bdf2737a8348e3628da44c4347f7391aff8c0712..681db119f13adce68e400fef64d471f43736e557 100644
|
| --- a/third_party/WebKit/Source/core/editing/commands/ReplaceSelectionCommand.cpp
|
| +++ b/third_party/WebKit/Source/core/editing/commands/ReplaceSelectionCommand.cpp
|
| @@ -1843,12 +1843,13 @@ void ReplaceSelectionCommand::mergeTextNodesAroundPosition(
|
| previous->data().length() <= kMergeSizeLimit) {
|
| insertTextIntoNode(text, 0, previous->data());
|
|
|
| - if (positionIsOffsetInAnchor)
|
| + if (positionIsOffsetInAnchor) {
|
| position =
|
| Position(position.computeContainerNode(),
|
| previous->length() + position.offsetInContainerNode());
|
| - else
|
| - updatePositionForNodeRemoval(position, *previous);
|
| + } else {
|
| + position = computePositionForNodeRemoval(position, *previous);
|
| + }
|
|
|
| if (positionOnlyToBeUpdatedIsOffsetInAnchor) {
|
| if (positionOnlyToBeUpdated.computeContainerNode() == text)
|
| @@ -1859,7 +1860,8 @@ void ReplaceSelectionCommand::mergeTextNodesAroundPosition(
|
| positionOnlyToBeUpdated =
|
| Position(text, positionOnlyToBeUpdated.offsetInContainerNode());
|
| } else {
|
| - updatePositionForNodeRemoval(positionOnlyToBeUpdated, *previous);
|
| + positionOnlyToBeUpdated =
|
| + computePositionForNodeRemoval(positionOnlyToBeUpdated, *previous);
|
| }
|
|
|
| removeNode(previous, editingState);
|
| @@ -1875,15 +1877,17 @@ void ReplaceSelectionCommand::mergeTextNodesAroundPosition(
|
| insertTextIntoNode(text, originalLength, next->data());
|
|
|
| if (!positionIsOffsetInAnchor)
|
| - updatePositionForNodeRemoval(position, *next);
|
| + position = computePositionForNodeRemoval(position, *next);
|
|
|
| if (positionOnlyToBeUpdatedIsOffsetInAnchor &&
|
| - positionOnlyToBeUpdated.computeContainerNode() == next)
|
| + positionOnlyToBeUpdated.computeContainerNode() == next) {
|
| positionOnlyToBeUpdated =
|
| Position(text, originalLength +
|
| positionOnlyToBeUpdated.offsetInContainerNode());
|
| - else
|
| - updatePositionForNodeRemoval(positionOnlyToBeUpdated, *next);
|
| + } else {
|
| + positionOnlyToBeUpdated =
|
| + computePositionForNodeRemoval(positionOnlyToBeUpdated, *next);
|
| + }
|
|
|
| removeNode(next, editingState);
|
| if (editingState->isAborted())
|
|
|