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

Unified Diff: Source/core/editing/InsertListCommand.cpp

Issue 421793002: Use tighter typing in editing: IndentOutdentCommand / InsertListCommand (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rebase Created 6 years, 5 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
« no previous file with comments | « Source/core/editing/InsertListCommand.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/editing/InsertListCommand.cpp
diff --git a/Source/core/editing/InsertListCommand.cpp b/Source/core/editing/InsertListCommand.cpp
index 1b2b22dc16ec5fbab5e4fc0f933a573148c52534..bfb69f46413f0c44547a01bad241f8163c004bbe 100644
--- a/Source/core/editing/InsertListCommand.cpp
+++ b/Source/core/editing/InsertListCommand.cpp
@@ -51,7 +51,7 @@ static Node* enclosingListChild(Node* node, Node* listNode)
return listChild;
}
-HTMLElement* InsertListCommand::fixOrphanedListChild(Node* node)
+HTMLUListElement* InsertListCommand::fixOrphanedListChild(Node* node)
{
RefPtrWillBeRawPtr<HTMLUListElement> listElement = createUnorderedListElement(document());
insertNodeBefore(listElement, node);
@@ -92,8 +92,8 @@ bool InsertListCommand::selectionHasListOfType(const VisibleSelection& selection
VisiblePosition end = startOfParagraph(selection.visibleEnd());
while (start.isNotNull() && start != end) {
- Element* listNode = enclosingList(start.deepEquivalent().deprecatedNode());
- if (!listNode || !listNode->hasTagName(listTag))
+ HTMLElement* listElement = enclosingList(start.deepEquivalent().deprecatedNode());
+ if (!listElement || !listElement->hasTagName(listTag))
return false;
start = startOfNextParagraph(start);
}
@@ -210,12 +210,12 @@ void InsertListCommand::doApplyForSingleParagraph(bool forceCreateList, const HT
bool switchListType = false;
if (listChildNode) {
// Remove the list chlild.
- RefPtrWillBeRawPtr<HTMLElement> listNode = enclosingList(listChildNode);
- if (!listNode) {
- listNode = fixOrphanedListChild(listChildNode);
- listNode = mergeWithNeighboringLists(listNode);
+ RefPtrWillBeRawPtr<HTMLElement> listElement = enclosingList(listChildNode);
+ if (!listElement) {
+ listElement = fixOrphanedListChild(listChildNode);
+ listElement = mergeWithNeighboringLists(listElement);
}
- if (!listNode->hasTagName(listTag))
+ if (!listElement->hasTagName(listTag))
// listChildNode will be removed from the list and a list of type m_type will be created.
switchListType = true;
@@ -224,23 +224,23 @@ void InsertListCommand::doApplyForSingleParagraph(bool forceCreateList, const HT
return;
// If the entire list is selected, then convert the whole list.
- if (switchListType && isNodeVisiblyContainedWithin(*listNode, currentSelection)) {
- bool rangeStartIsInList = visiblePositionBeforeNode(*listNode) == VisiblePosition(currentSelection.startPosition());
- bool rangeEndIsInList = visiblePositionAfterNode(*listNode) == VisiblePosition(currentSelection.endPosition());
+ if (switchListType && isNodeVisiblyContainedWithin(*listElement, currentSelection)) {
+ bool rangeStartIsInList = visiblePositionBeforeNode(*listElement) == VisiblePosition(currentSelection.startPosition());
+ bool rangeEndIsInList = visiblePositionAfterNode(*listElement) == VisiblePosition(currentSelection.endPosition());
RefPtrWillBeRawPtr<HTMLElement> newList = createHTMLElement(document(), listTag);
- insertNodeBefore(newList, listNode);
+ insertNodeBefore(newList, listElement);
- Node* firstChildInList = enclosingListChild(VisiblePosition(firstPositionInNode(listNode.get())).deepEquivalent().deprecatedNode(), listNode.get());
- Node* outerBlock = firstChildInList && firstChildInList->isBlockFlowElement() ? firstChildInList : listNode.get();
+ Node* firstChildInList = enclosingListChild(VisiblePosition(firstPositionInNode(listElement.get())).deepEquivalent().deprecatedNode(), listElement.get());
+ Element* outerBlock = firstChildInList && firstChildInList->isBlockFlowElement() ? toElement(firstChildInList) : listElement.get();
- moveParagraphWithClones(VisiblePosition(firstPositionInNode(listNode.get())), VisiblePosition(lastPositionInNode(listNode.get())), newList.get(), outerBlock);
+ moveParagraphWithClones(VisiblePosition(firstPositionInNode(listElement.get())), VisiblePosition(lastPositionInNode(listElement.get())), newList.get(), outerBlock);
// Manually remove listNode because moveParagraphWithClones sometimes leaves it behind in the document.
// See the bug 33668 and editing/execCommand/insert-list-orphaned-item-with-nested-lists.html.
// FIXME: This might be a bug in moveParagraphWithClones or deleteSelection.
- if (listNode && listNode->inDocument())
- removeNode(listNode);
+ if (listElement && listElement->inDocument())
+ removeNode(listElement);
newList = mergeWithNeighboringLists(newList);
@@ -256,14 +256,14 @@ void InsertListCommand::doApplyForSingleParagraph(bool forceCreateList, const HT
return;
}
- unlistifyParagraph(endingSelection().visibleStart(), listNode.get(), listChildNode);
+ unlistifyParagraph(endingSelection().visibleStart(), listElement.get(), listChildNode);
}
if (!listChildNode || switchListType || forceCreateList)
m_listElement = listifyParagraph(endingSelection().visibleStart(), listTag);
}
-void InsertListCommand::unlistifyParagraph(const VisiblePosition& originalStart, HTMLElement* listNode, Node* listChildNode)
+void InsertListCommand::unlistifyParagraph(const VisiblePosition& originalStart, HTMLElement* listElement, Node* listChildNode)
{
Node* nextListChild;
Node* previousListChild;
@@ -279,9 +279,9 @@ void InsertListCommand::unlistifyParagraph(const VisiblePosition& originalStart,
// A paragraph is visually a list item minus a list marker. The paragraph will be moved.
start = startOfParagraph(originalStart, CanSkipOverEditingBoundary);
end = endOfParagraph(start, CanSkipOverEditingBoundary);
- nextListChild = enclosingListChild(end.next().deepEquivalent().deprecatedNode(), listNode);
+ nextListChild = enclosingListChild(end.next().deepEquivalent().deprecatedNode(), listElement);
ASSERT(nextListChild != listChildNode);
- previousListChild = enclosingListChild(start.previous().deepEquivalent().deprecatedNode(), listNode);
+ previousListChild = enclosingListChild(start.previous().deepEquivalent().deprecatedNode(), listElement);
ASSERT(previousListChild != listChildNode);
}
// When removing a list, we must always create a placeholder to act as a point of insertion
@@ -290,7 +290,7 @@ void InsertListCommand::unlistifyParagraph(const VisiblePosition& originalStart,
RefPtrWillBeRawPtr<HTMLElement> elementToInsert = placeholder;
// If the content of the list item will be moved into another list, put it in a list item
// so that we don't create an orphaned list child.
- if (enclosingList(listNode)) {
+ if (enclosingList(listElement)) {
elementToInsert = createListItemElement(document());
appendNode(placeholder, elementToInsert);
}
@@ -303,41 +303,41 @@ void InsertListCommand::unlistifyParagraph(const VisiblePosition& originalStart,
// FIXME: We appear to split at nextListChild as opposed to listChildNode so that when we remove
// listChildNode below in moveParagraphs, previousListChild will be removed along with it if it is
// unrendered. But we ought to remove nextListChild too, if it is unrendered.
- splitElement(listNode, splitTreeToNode(nextListChild, listNode));
- insertNodeBefore(elementToInsert, listNode);
- } else if (nextListChild || listChildNode->parentNode() != listNode) {
+ splitElement(listElement, splitTreeToNode(nextListChild, listElement));
+ insertNodeBefore(elementToInsert, listElement);
+ } else if (nextListChild || listChildNode->parentNode() != listElement) {
// Just because listChildNode has no previousListChild doesn't mean there isn't any content
// in listNode that comes before listChildNode, as listChildNode could have ancestors
// between it and listNode. So, we split up to listNode before inserting the placeholder
// where we're about to move listChildNode to.
- if (listChildNode->parentNode() != listNode)
- splitElement(listNode, splitTreeToNode(listChildNode, listNode).get());
- insertNodeBefore(elementToInsert, listNode);
+ if (listChildNode->parentNode() != listElement)
+ splitElement(listElement, splitTreeToNode(listChildNode, listElement).get());
+ insertNodeBefore(elementToInsert, listElement);
} else {
- insertNodeAfter(elementToInsert, listNode);
+ insertNodeAfter(elementToInsert, listElement);
}
VisiblePosition insertionPoint = VisiblePosition(positionBeforeNode(placeholder.get()));
moveParagraphs(start, end, insertionPoint, /* preserveSelection */ true, /* preserveStyle */ true, listChildNode);
}
-static Element* adjacentEnclosingList(const VisiblePosition& pos, const VisiblePosition& adjacentPos, const HTMLQualifiedName& listTag)
+static HTMLElement* adjacentEnclosingList(const VisiblePosition& pos, const VisiblePosition& adjacentPos, const HTMLQualifiedName& listTag)
{
- Element* listNode = outermostEnclosingList(adjacentPos.deepEquivalent().deprecatedNode());
+ HTMLElement* listElement = outermostEnclosingList(adjacentPos.deepEquivalent().deprecatedNode());
- if (!listNode)
+ if (!listElement)
return 0;
Element* previousCell = enclosingTableCell(pos.deepEquivalent());
Element* currentCell = enclosingTableCell(adjacentPos.deepEquivalent());
- if (!listNode->hasTagName(listTag)
- || listNode->contains(pos.deepEquivalent().deprecatedNode())
+ if (!listElement->hasTagName(listTag)
+ || listElement->contains(pos.deepEquivalent().deprecatedNode())
|| previousCell != currentCell
- || enclosingList(listNode) != enclosingList(pos.deepEquivalent().deprecatedNode()))
+ || enclosingList(listElement) != enclosingList(pos.deepEquivalent().deprecatedNode()))
return 0;
- return listNode;
+ return listElement;
}
PassRefPtrWillBeRawPtr<HTMLElement> InsertListCommand::listifyParagraph(const VisiblePosition& originalStart, const HTMLQualifiedName& listTag)
@@ -354,8 +354,8 @@ PassRefPtrWillBeRawPtr<HTMLElement> InsertListCommand::listifyParagraph(const Vi
appendNode(placeholder, listItemElement);
// Place list item into adjoining lists.
- Element* previousList = adjacentEnclosingList(start, start.previous(CannotCrossEditingBoundary), listTag);
- Element* nextList = adjacentEnclosingList(start, end.next(CannotCrossEditingBoundary), listTag);
+ HTMLElement* previousList = adjacentEnclosingList(start, start.previous(CannotCrossEditingBoundary), listTag);
+ HTMLElement* nextList = adjacentEnclosingList(start, end.next(CannotCrossEditingBoundary), listTag);
RefPtrWillBeRawPtr<HTMLElement> listElement = nullptr;
if (previousList)
appendNode(listItemElement, previousList);
« no previous file with comments | « Source/core/editing/InsertListCommand.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698