Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1313)

Unified Diff: third_party/WebKit/Source/core/editing/commands/IndentOutdentCommand.cpp

Issue 1695153002: Editing: Make the |EditingState*| argument of CompositeEditCommand::removeNode mandatory. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: ; Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);

Powered by Google App Engine
This is Rietveld 408576698