| 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);
|
|
|