Index: Source/core/editing/DeleteSelectionCommand.cpp |
diff --git a/Source/core/editing/DeleteSelectionCommand.cpp b/Source/core/editing/DeleteSelectionCommand.cpp |
index f3549f7697071af8268e16a3664c3d29bf7e8fab..7b886c7b906e021ee6878f1542062a7f14ae1e41 100644 |
--- a/Source/core/editing/DeleteSelectionCommand.cpp |
+++ b/Source/core/editing/DeleteSelectionCommand.cpp |
@@ -327,7 +327,7 @@ static Position firstEditablePositionInNode(Node* node) |
return next ? firstPositionInOrBeforeNode(next) : Position(); |
} |
-void DeleteSelectionCommand::removeNode(PassRefPtr<Node> node, ShouldAssumeContentIsAlwaysEditable shouldAssumeContentIsAlwaysEditable) |
+void DeleteSelectionCommand::removeNode(PassRefPtrWillBeRawPtr<Node> node, ShouldAssumeContentIsAlwaysEditable shouldAssumeContentIsAlwaysEditable) |
{ |
if (!node) |
return; |
@@ -339,9 +339,9 @@ void DeleteSelectionCommand::removeNode(PassRefPtr<Node> node, ShouldAssumeConte |
if (!node->firstChild()) |
return; |
// Search this non-editable region for editable regions to empty. |
- RefPtr<Node> child = node->firstChild(); |
+ RefPtrWillBeRawPtr<Node> child = node->firstChild(); |
while (child) { |
- RefPtr<Node> nextChild = child->nextSibling(); |
+ RefPtrWillBeRawPtr<Node> nextChild = child->nextSibling(); |
removeNode(child.get(), shouldAssumeContentIsAlwaysEditable); |
// Bail if nextChild is no longer node's child. |
if (nextChild && nextChild->parentNode() != node) |
@@ -419,12 +419,12 @@ void DeleteSelectionCommand::deleteTextFromNode(PassRefPtrWillBeRawPtr<Text> nod |
void DeleteSelectionCommand::makeStylingElementsDirectChildrenOfEditableRootToPreventStyleLoss() |
{ |
RefPtrWillBeRawPtr<Range> range = m_selectionToDelete.toNormalizedRange(); |
- RefPtr<Node> node = range->firstNode(); |
+ RefPtrWillBeRawPtr<Node> node = range->firstNode(); |
while (node && node != range->pastLastNode()) { |
- RefPtr<Node> nextNode = NodeTraversal::next(*node); |
+ RefPtrWillBeRawPtr<Node> nextNode = NodeTraversal::next(*node); |
if ((isHTMLStyleElement(*node) && !(toElement(node)->hasAttribute(scopedAttr))) || isHTMLLinkElement(*node)) { |
nextNode = NodeTraversal::nextSkippingChildren(*node); |
- RefPtr<ContainerNode> rootEditableElement = node->rootEditableElement(); |
+ RefPtrWillBeRawPtr<ContainerNode> rootEditableElement = node->rootEditableElement(); |
if (rootEditableElement.get()) { |
removeNode(node); |
appendNode(node, rootEditableElement); |
@@ -487,7 +487,7 @@ void DeleteSelectionCommand::handleGeneralDelete() |
else { |
bool startNodeWasDescendantOfEndNode = m_upstreamStart.deprecatedNode()->isDescendantOf(m_downstreamEnd.deprecatedNode()); |
// The selection to delete spans more than one node. |
- RefPtr<Node> node(startNode); |
+ RefPtrWillBeRawPtr<Node> node(startNode); |
if (startOffset > 0) { |
if (startNode->isTextNode()) { |
@@ -509,7 +509,7 @@ void DeleteSelectionCommand::handleGeneralDelete() |
// NodeTraversal::nextSkippingChildren just blew past the end position, so stop deleting |
node = nullptr; |
} else if (!m_downstreamEnd.deprecatedNode()->isDescendantOf(node.get())) { |
- RefPtr<Node> nextNode = NodeTraversal::nextSkippingChildren(*node); |
+ RefPtrWillBeRawPtr<Node> nextNode = NodeTraversal::nextSkippingChildren(*node); |
// if we just removed a node from the end container, update end position so the |
// check above will work |
updatePositionForNodeRemoval(m_downstreamEnd, *node); |
@@ -675,7 +675,7 @@ void DeleteSelectionCommand::removePreviouslySelectedEmptyTableRows() |
if (m_endTableRow && m_endTableRow->inDocument() && m_endTableRow != m_startTableRow) { |
Node* row = m_endTableRow->previousSibling(); |
while (row && row != m_startTableRow) { |
- RefPtr<Node> previousRow = row->previousSibling(); |
+ RefPtrWillBeRawPtr<Node> previousRow = row->previousSibling(); |
if (isTableRowEmpty(row)) |
// Use a raw removeNode, instead of DeleteSelectionCommand's, because |
// that won't remove rows, it only empties them in preparation for this function. |
@@ -688,7 +688,7 @@ void DeleteSelectionCommand::removePreviouslySelectedEmptyTableRows() |
if (m_startTableRow && m_startTableRow->inDocument() && m_startTableRow != m_endTableRow) { |
Node* row = m_startTableRow->nextSibling(); |
while (row && row != m_endTableRow) { |
- RefPtr<Node> nextRow = row->nextSibling(); |
+ RefPtrWillBeRawPtr<Node> nextRow = row->nextSibling(); |
if (isTableRowEmpty(row)) |
CompositeEditCommand::removeNode(row); |
row = nextRow.get(); |
@@ -832,7 +832,7 @@ void DeleteSelectionCommand::doApply() |
m_needPlaceholder = hasPlaceholder && lineBreakBeforeStart && !lineBreakAtEndOfSelectionToDelete; |
} |
- RefPtr<Node> placeholder = m_needPlaceholder ? createBreakElement(document()).get() : 0; |
+ RefPtrWillBeRawPtr<Node> placeholder = m_needPlaceholder ? createBreakElement(document()) : nullptr; |
if (placeholder) { |
if (m_sanitizeMarkup) |
@@ -864,4 +864,26 @@ bool DeleteSelectionCommand::preservesTypingStyle() const |
return m_typingStyle; |
} |
+void DeleteSelectionCommand::trace(Visitor* visitor) |
+{ |
+ visitor->trace(m_selectionToDelete); |
+ visitor->trace(m_upstreamStart); |
+ visitor->trace(m_downstreamStart); |
+ visitor->trace(m_upstreamEnd); |
+ visitor->trace(m_downstreamEnd); |
+ visitor->trace(m_endingPosition); |
+ visitor->trace(m_leadingWhitespace); |
+ visitor->trace(m_trailingWhitespace); |
+ visitor->trace(m_startBlock); |
+ visitor->trace(m_endBlock); |
+ visitor->trace(m_typingStyle); |
+ visitor->trace(m_deleteIntoBlockquoteStyle); |
+ visitor->trace(m_startRoot); |
+ visitor->trace(m_endRoot); |
+ visitor->trace(m_startTableRow); |
+ visitor->trace(m_endTableRow); |
+ visitor->trace(m_temporaryPlaceholder); |
+ CompositeEditCommand::trace(visitor); |
+} |
+ |
} // namespace WebCore |