| Index: third_party/WebKit/Source/core/editing/EditingUtilities.cpp
|
| diff --git a/third_party/WebKit/Source/core/editing/EditingUtilities.cpp b/third_party/WebKit/Source/core/editing/EditingUtilities.cpp
|
| index 0b872ea695c070058c0f0ec7f83d36fc39d4159a..e6ae084a701f5fe8e2bf77af8ecd364357fc0b4b 100644
|
| --- a/third_party/WebKit/Source/core/editing/EditingUtilities.cpp
|
| +++ b/third_party/WebKit/Source/core/editing/EditingUtilities.cpp
|
| @@ -559,12 +559,20 @@ PositionTemplate<Strategy> firstEditablePositionAfterPositionInRootAlgorithm(con
|
| editablePosition = PositionTemplate<Strategy>::afterNode(shadowAncestor);
|
| }
|
|
|
| - while (editablePosition.anchorNode() && !isEditablePosition(editablePosition) && editablePosition.anchorNode()->isDescendantOf(&highestRoot))
|
| + Node* nonEditableNode = nullptr;
|
| + while (editablePosition.anchorNode() && !isEditablePosition(editablePosition) && editablePosition.anchorNode()->isDescendantOf(&highestRoot)) {
|
| + nonEditableNode = editablePosition.anchorNode();
|
| editablePosition = isAtomicNode(editablePosition.anchorNode()) ? PositionTemplate<Strategy>::inParentAfterNode(*editablePosition.anchorNode()) : nextVisuallyDistinctCandidate(editablePosition);
|
| + }
|
|
|
| if (editablePosition.anchorNode() && editablePosition.anchorNode() != &highestRoot && !editablePosition.anchorNode()->isDescendantOf(&highestRoot))
|
| return PositionTemplate<Strategy>();
|
|
|
| + // If |editablePosition| has the non-editable child skipped, get the next sibling position.
|
| + // If not, we can't get the next paragraph in InsertListCommand::doApply's while loop.
|
| + // See http://crbug.com/571420
|
| + if (nonEditableNode && nonEditableNode->isDescendantOf(editablePosition.anchorNode()))
|
| + editablePosition = nextVisuallyDistinctCandidate(editablePosition);
|
| return editablePosition;
|
| }
|
|
|
|
|