| Index: third_party/WebKit/Source/core/editing/commands/IndentOutdentCommand.cpp
 | 
| diff --git a/third_party/WebKit/Source/core/editing/commands/IndentOutdentCommand.cpp b/third_party/WebKit/Source/core/editing/commands/IndentOutdentCommand.cpp
 | 
| index 61019083e1717643eaed43f973dc7bcff6fcbc35..b1145dfa7ce8e14f9810e8bdcf7c0529a755646c 100644
 | 
| --- a/third_party/WebKit/Source/core/editing/commands/IndentOutdentCommand.cpp
 | 
| +++ b/third_party/WebKit/Source/core/editing/commands/IndentOutdentCommand.cpp
 | 
| @@ -66,7 +66,7 @@ IndentOutdentCommand::IndentOutdentCommand(Document& document, EIndentType typeO
 | 
|  {
 | 
|  }
 | 
|  
 | 
| -bool IndentOutdentCommand::tryIndentingAsListItem(const Position& start, const Position& end)
 | 
| +bool IndentOutdentCommand::tryIndentingAsListItem(const Position& start, const Position& end, EditingState* editingState)
 | 
|  {
 | 
|      // If our selection is not inside a list, bail out.
 | 
|      RefPtrWillBeRawPtr<Node> lastNodeInSelectedParagraph = start.anchorNode();
 | 
| @@ -89,22 +89,34 @@ bool IndentOutdentCommand::tryIndentingAsListItem(const Position& start, const P
 | 
|      // list element will change visibility of list item, e.g. :first-child
 | 
|      // CSS selector.
 | 
|      RefPtrWillBeRawPtr<HTMLElement> newList = toHTMLElement(document().createElement(listElement->tagQName(), false).get());
 | 
| -    insertNodeBefore(newList, selectedListItem.get());
 | 
| +    insertNodeBefore(newList, selectedListItem.get(), editingState);
 | 
| +    if (editingState->isAborted())
 | 
| +        return false;
 | 
|  
 | 
|      // We should clone all the children of the list item for indenting purposes. However, in case the current
 | 
|      // selection does not encompass all its children, we need to explicitally handle the same. The original
 | 
|      // list item too would require proper deletion in that case.
 | 
|      if (end.anchorNode() == selectedListItem.get() || end.anchorNode()->isDescendantOf(selectedListItem->lastChild())) {
 | 
| -        moveParagraphWithClones(createVisiblePosition(start), createVisiblePosition(end), newList.get(), selectedListItem.get());
 | 
| +        moveParagraphWithClones(createVisiblePosition(start), createVisiblePosition(end), newList.get(), selectedListItem.get(), editingState);
 | 
|      } else {
 | 
| -        moveParagraphWithClones(createVisiblePosition(start), createVisiblePosition(positionAfterNode(selectedListItem->lastChild())), newList.get(), selectedListItem.get());
 | 
| -        removeNode(selectedListItem.get());
 | 
| +        moveParagraphWithClones(createVisiblePosition(start), createVisiblePosition(positionAfterNode(selectedListItem->lastChild())), newList.get(), selectedListItem.get(), editingState);
 | 
| +        if (editingState->isAborted())
 | 
| +            return false;
 | 
| +        removeNode(selectedListItem.get(), editingState);
 | 
|      }
 | 
| +    if (editingState->isAborted())
 | 
| +        return false;
 | 
|  
 | 
| -    if (canMergeLists(previousList.get(), newList.get()))
 | 
| -        mergeIdenticalElements(previousList.get(), newList.get());
 | 
| -    if (canMergeLists(newList.get(), nextList.get()))
 | 
| -        mergeIdenticalElements(newList.get(), nextList.get());
 | 
| +    if (canMergeLists(previousList.get(), newList.get())) {
 | 
| +        mergeIdenticalElements(previousList.get(), newList.get(), editingState);
 | 
| +        if (editingState->isAborted())
 | 
| +            return false;
 | 
| +    }
 | 
| +    if (canMergeLists(newList.get(), nextList.get())) {
 | 
| +        mergeIdenticalElements(newList.get(), nextList.get(), editingState);
 | 
| +        if (editingState->isAborted())
 | 
| +            return false;
 | 
| +    }
 | 
|  
 | 
|      return true;
 | 
|  }
 | 
| @@ -261,7 +273,10 @@ void IndentOutdentCommand::formatSelection(const VisiblePosition& startOfSelecti
 | 
|  
 | 
|  void IndentOutdentCommand::formatRange(const Position& start, const Position& end, const Position&, RefPtrWillBeRawPtr<HTMLElement>& blockquoteForNextIndent, EditingState* editingState)
 | 
|  {
 | 
| -    if (tryIndentingAsListItem(start, end))
 | 
| +    bool indentingAsListItemResult = tryIndentingAsListItem(start, end, editingState);
 | 
| +    if (editingState->isAborted())
 | 
| +        return;
 | 
| +    if (indentingAsListItemResult)
 | 
|          blockquoteForNextIndent = nullptr;
 | 
|      else
 | 
|          indentIntoBlockquote(start, end, blockquoteForNextIndent, editingState);
 | 
| 
 |