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