Diff
Modified: trunk/Source/WebCore/ChangeLog (175835 => 175836)
--- trunk/Source/WebCore/ChangeLog 2014-11-10 23:55:56 UTC (rev 175835)
+++ trunk/Source/WebCore/ChangeLog 2014-11-11 00:02:57 UTC (rev 175836)
@@ -1,3 +1,55 @@
+2014-11-10 Chris Dumez <cdu...@apple.com>
+
+ Remove unnecessary null check in FrameSelection::nodeWillBeRemoved()
+ https://bugs.webkit.org/show_bug.cgi?id=138578
+
+ Reviewed by Andreas Kling.
+
+ Remove unnecessary null check in FrameSelection::nodeWillBeRemoved()
+ and turn the argument into a reference to make it clear it cannot be
+ null.
+
+ No new tests, no behavior change.
+
+ * dom/ContainerNode.cpp:
+ (WebCore::ContainerNode::willRemoveChild):
+ * dom/Document.cpp:
+ (WebCore::Document::nodeChildrenWillBeRemoved):
+ (WebCore::Document::nodeWillBeRemoved):
+ * dom/Document.h:
+ * dom/NodeIterator.cpp:
+ (WebCore::NodeIterator::nodeWillBeRemoved):
+ (WebCore::NodeIterator::updateForNodeRemoval):
+ * dom/NodeIterator.h:
+ * dom/Range.cpp:
+ (WebCore::Range::insertNode):
+ (WebCore::boundaryNodeWillBeRemoved):
+ (WebCore::Range::nodeWillBeRemoved):
+ * dom/Range.h:
+ * dom/RangeBoundaryPoint.h:
+ (WebCore::RangeBoundaryPoint::setToBeforeChild):
+ * editing/CompositeEditCommand.cpp:
+ (WebCore::CompositeEditCommand::updatePositionForNodeRemovalPreservingChildren):
+ * editing/CompositeEditCommand.h:
+ * editing/DeleteSelectionCommand.cpp:
+ (WebCore::DeleteSelectionCommand::removeNode):
+ (WebCore::DeleteSelectionCommand::handleGeneralDelete):
+ (WebCore::DeleteSelectionCommand::removeRedundantBlocks):
+ * editing/FrameSelection.cpp:
+ (WebCore::removingNodeRemovesPosition):
+ (WebCore::DragCaretController::nodeWillBeRemoved):
+ (WebCore::FrameSelection::nodeWillBeRemoved):
+ (WebCore::FrameSelection::respondToNodeModification):
+ * editing/FrameSelection.h:
+ * editing/ReplaceSelectionCommand.cpp:
+ (WebCore::ReplaceSelectionCommand::mergeTextNodesAroundPosition):
+ * editing/htmlediting.cpp:
+ (WebCore::updatePositionForNodeRemoval):
+ * editing/htmlediting.h:
+ * page/EventHandler.cpp:
+ (WebCore::EventHandler::nodeWillBeRemoved):
+ * page/EventHandler.h:
+
2014-11-10 Benjamin Poulain <bpoul...@apple.com>
Fix the build when CSS Selectors Level 4 is disabled
Modified: trunk/Source/WebCore/dom/ContainerNode.cpp (175835 => 175836)
--- trunk/Source/WebCore/dom/ContainerNode.cpp 2014-11-10 23:55:56 UTC (rev 175835)
+++ trunk/Source/WebCore/dom/ContainerNode.cpp 2014-11-11 00:02:57 UTC (rev 175836)
@@ -476,7 +476,7 @@
if (child.parentNode() != this)
return;
- child.document().nodeWillBeRemoved(&child); // e.g. mutation event listener can create a new range.
+ child.document().nodeWillBeRemoved(child); // e.g. mutation event listener can create a new range.
if (is<ContainerNode>(child))
disconnectSubframesIfNeeded(downcast<ContainerNode>(child), RootAndDescendants);
}
Modified: trunk/Source/WebCore/dom/Document.cpp (175835 => 175836)
--- trunk/Source/WebCore/dom/Document.cpp 2014-11-10 23:55:56 UTC (rev 175835)
+++ trunk/Source/WebCore/dom/Document.cpp 2014-11-11 00:02:57 UTC (rev 175836)
@@ -3661,19 +3661,19 @@
for (auto it = m_nodeIterators.begin(), end = m_nodeIterators.end(); it != end; ++it) {
for (Node* n = container.firstChild(); n; n = n->nextSibling())
- (*it)->nodeWillBeRemoved(n);
+ (*it)->nodeWillBeRemoved(*n);
}
if (Frame* frame = this->frame()) {
for (Node* n = container.firstChild(); n; n = n->nextSibling()) {
- frame->eventHandler().nodeWillBeRemoved(n);
- frame->selection().nodeWillBeRemoved(n);
- frame->page()->dragCaretController().nodeWillBeRemoved(n);
+ frame->eventHandler().nodeWillBeRemoved(*n);
+ frame->selection().nodeWillBeRemoved(*n);
+ frame->page()->dragCaretController().nodeWillBeRemoved(*n);
}
}
}
-void Document::nodeWillBeRemoved(Node* n)
+void Document::nodeWillBeRemoved(Node& n)
{
HashSet<NodeIterator*>::const_iterator nodeIteratorsEnd = m_nodeIterators.end();
for (HashSet<NodeIterator*>::const_iterator it = m_nodeIterators.begin(); it != nodeIteratorsEnd; ++it)
Modified: trunk/Source/WebCore/dom/Document.h (175835 => 175836)
--- trunk/Source/WebCore/dom/Document.h 2014-11-10 23:55:56 UTC (rev 175835)
+++ trunk/Source/WebCore/dom/Document.h 2014-11-11 00:02:57 UTC (rev 175836)
@@ -796,7 +796,7 @@
// nodeChildrenWillBeRemoved is used when removing all node children at once.
void nodeChildrenWillBeRemoved(ContainerNode&);
// nodeWillBeRemoved is only safe when removing one node at a time.
- void nodeWillBeRemoved(Node*);
+ void nodeWillBeRemoved(Node&);
bool canReplaceChild(Node* newChild, Node* oldChild);
void textInserted(Node*, unsigned offset, unsigned length);
Modified: trunk/Source/WebCore/dom/NodeIterator.cpp (175835 => 175836)
--- trunk/Source/WebCore/dom/NodeIterator.cpp 2014-11-10 23:55:56 UTC (rev 175835)
+++ trunk/Source/WebCore/dom/NodeIterator.cpp 2014-11-11 00:02:57 UTC (rev 175836)
@@ -154,43 +154,42 @@
m_referenceNode.node.clear();
}
-void NodeIterator::nodeWillBeRemoved(Node* removedNode)
+void NodeIterator::nodeWillBeRemoved(Node& removedNode)
{
updateForNodeRemoval(removedNode, m_candidateNode);
updateForNodeRemoval(removedNode, m_referenceNode);
}
-void NodeIterator::updateForNodeRemoval(Node* removedNode, NodePointer& referenceNode) const
+void NodeIterator::updateForNodeRemoval(Node& removedNode, NodePointer& referenceNode) const
{
ASSERT(!m_detached);
- ASSERT(removedNode);
- ASSERT(&root()->document() == &removedNode->document());
+ ASSERT(&root()->document() == &removedNode.document());
// Iterator is not affected if the removed node is the reference node and is the root.
// or if removed node is not the reference node, or the ancestor of the reference node.
- if (!removedNode->isDescendantOf(root()))
+ if (!removedNode.isDescendantOf(root()))
return;
- bool willRemoveReferenceNode = removedNode == referenceNode.node;
- bool willRemoveReferenceNodeAncestor = referenceNode.node && referenceNode.node->isDescendantOf(removedNode);
+ bool willRemoveReferenceNode = &removedNode == referenceNode.node;
+ bool willRemoveReferenceNodeAncestor = referenceNode.node && referenceNode.node->isDescendantOf(&removedNode);
if (!willRemoveReferenceNode && !willRemoveReferenceNodeAncestor)
return;
if (referenceNode.isPointerBeforeNode) {
- Node* node = NodeTraversal::next(removedNode, root());
+ Node* node = NodeTraversal::next(&removedNode, root());
if (node) {
// Move out from under the node being removed if the new reference
// node is a descendant of the node being removed.
- while (node && node->isDescendantOf(removedNode))
+ while (node && node->isDescendantOf(&removedNode))
node = NodeTraversal::next(node, root());
if (node)
referenceNode.node = node;
} else {
- node = NodeTraversal::previous(removedNode);
+ node = NodeTraversal::previous(&removedNode);
if (node) {
// Move out from under the node being removed if the reference node is
// a descendant of the node being removed.
if (willRemoveReferenceNodeAncestor) {
- while (node && node->isDescendantOf(removedNode))
+ while (node && node->isDescendantOf(&removedNode))
node = NodeTraversal::previous(node);
}
if (node) {
@@ -203,23 +202,23 @@
}
}
} else {
- Node* node = NodeTraversal::previous(removedNode);
+ Node* node = NodeTraversal::previous(&removedNode);
if (node) {
// Move out from under the node being removed if the reference node is
// a descendant of the node being removed.
if (willRemoveReferenceNodeAncestor) {
- while (node && node->isDescendantOf(removedNode))
+ while (node && node->isDescendantOf(&removedNode))
node = NodeTraversal::previous(node);
}
if (node)
referenceNode.node = node;
} else {
// FIXME: This branch doesn't appear to have any LayoutTests.
- node = NodeTraversal::next(removedNode, root());
+ node = NodeTraversal::next(&removedNode, root());
// Move out from under the node being removed if the reference node is
// a descendant of the node being removed.
if (willRemoveReferenceNodeAncestor) {
- while (node && node->isDescendantOf(removedNode))
+ while (node && node->isDescendantOf(&removedNode))
node = NodeTraversal::previous(node);
}
if (node)
Modified: trunk/Source/WebCore/dom/NodeIterator.h (175835 => 175836)
--- trunk/Source/WebCore/dom/NodeIterator.h 2014-11-10 23:55:56 UTC (rev 175835)
+++ trunk/Source/WebCore/dom/NodeIterator.h 2014-11-11 00:02:57 UTC (rev 175836)
@@ -51,7 +51,7 @@
bool pointerBeforeReferenceNode() const { return m_referenceNode.isPointerBeforeNode; }
// This function is called before any node is removed from the document tree.
- void nodeWillBeRemoved(Node*);
+ void nodeWillBeRemoved(Node&);
// Do not call these functions. They are just scaffolding to support the Objective-C bindings.
// They operate in the main thread normal world, and they swallow JS exceptions.
@@ -71,7 +71,7 @@
bool moveToPrevious(Node* root);
};
- void updateForNodeRemoval(Node* nodeToBeRemoved, NodePointer&) const;
+ void updateForNodeRemoval(Node& nodeToBeRemoved, NodePointer&) const;
NodePointer m_referenceNode;
NodePointer m_candidateNode;
Modified: trunk/Source/WebCore/dom/Range.cpp (175835 => 175836)
--- trunk/Source/WebCore/dom/Range.cpp 2014-11-10 23:55:56 UTC (rev 175835)
+++ trunk/Source/WebCore/dom/Range.cpp 2014-11-11 00:02:57 UTC (rev 175836)
@@ -1050,7 +1050,7 @@
return;
if (collapsed && newText->parentNode() == container && &container->document() == &ownerDocument())
- m_end.setToBeforeChild(newText.get());
+ m_end.setToBeforeChild(*newText);
} else {
container = m_start.container();
RefPtr<Node> firstInsertedChild = newNodeType == Node::DOCUMENT_FRAGMENT_NODE ? newNode->firstChild() : newNode;
@@ -1062,7 +1062,7 @@
if (collapsed && numNewChildren && &container->document() == &ownerDocument()) {
if (firstInsertedChild->parentNode() == container)
- m_start.setToBeforeChild(firstInsertedChild.get());
+ m_start.setToBeforeChild(*firstInsertedChild);
if (lastInsertedChild->parentNode() == container)
m_end.set(container, lastInsertedChild->computeNodeIndex() + 1, lastInsertedChild.get());
}
@@ -2060,27 +2060,26 @@
boundaryNodeChildrenWillBeRemoved(m_end, container);
}
-static inline void boundaryNodeWillBeRemoved(RangeBoundaryPoint& boundary, Node* nodeToBeRemoved)
+static inline void boundaryNodeWillBeRemoved(RangeBoundaryPoint& boundary, Node& nodeToBeRemoved)
{
- if (boundary.childBefore() == nodeToBeRemoved) {
+ if (boundary.childBefore() == &nodeToBeRemoved) {
boundary.childBeforeWillBeRemoved();
return;
}
for (Node* n = boundary.container(); n; n = n->parentNode()) {
- if (n == nodeToBeRemoved) {
+ if (n == &nodeToBeRemoved) {
boundary.setToBeforeChild(nodeToBeRemoved);
return;
}
}
}
-void Range::nodeWillBeRemoved(Node* node)
+void Range::nodeWillBeRemoved(Node& node)
{
- ASSERT(node);
- ASSERT(&node->document() == &ownerDocument());
- ASSERT(node != &ownerDocument());
- ASSERT(node->parentNode());
+ ASSERT(&node.document() == &ownerDocument());
+ ASSERT(&node != &ownerDocument());
+ ASSERT(node.parentNode());
boundaryNodeWillBeRemoved(m_start, node);
boundaryNodeWillBeRemoved(m_end, node);
}
Modified: trunk/Source/WebCore/dom/Range.h (175835 => 175836)
--- trunk/Source/WebCore/dom/Range.h 2014-11-10 23:55:56 UTC (rev 175835)
+++ trunk/Source/WebCore/dom/Range.h 2014-11-11 00:02:57 UTC (rev 175836)
@@ -139,7 +139,7 @@
void nodeChildrenChanged(ContainerNode&);
void nodeChildrenWillBeRemoved(ContainerNode&);
- void nodeWillBeRemoved(Node*);
+ void nodeWillBeRemoved(Node&);
void textInserted(Node*, unsigned offset, unsigned length);
void textRemoved(Node*, unsigned offset, unsigned length);
Modified: trunk/Source/WebCore/dom/RangeBoundaryPoint.h (175835 => 175836)
--- trunk/Source/WebCore/dom/RangeBoundaryPoint.h 2014-11-10 23:55:56 UTC (rev 175835)
+++ trunk/Source/WebCore/dom/RangeBoundaryPoint.h 2014-11-11 00:02:57 UTC (rev 175836)
@@ -48,7 +48,7 @@
void set(PassRefPtr<Node> container, int offset, Node* childBefore);
void setOffset(int offset);
- void setToBeforeChild(Node*);
+ void setToBeforeChild(Node&);
void setToStartOfNode(PassRefPtr<Node>);
void setToEndOfNode(PassRefPtr<Node>);
@@ -136,12 +136,11 @@
m_offsetInContainer = offset;
}
-inline void RangeBoundaryPoint::setToBeforeChild(Node* child)
+inline void RangeBoundaryPoint::setToBeforeChild(Node& child)
{
- ASSERT(child);
- ASSERT(child->parentNode());
- m_childBeforeBoundary = child->previousSibling();
- m_containerNode = child->parentNode();
+ ASSERT(child.parentNode());
+ m_childBeforeBoundary = child.previousSibling();
+ m_containerNode = child.parentNode();
m_offsetInContainer = m_childBeforeBoundary ? invalidOffset : 0;
}
Modified: trunk/Source/WebCore/editing/CompositeEditCommand.cpp (175835 => 175836)
--- trunk/Source/WebCore/editing/CompositeEditCommand.cpp 2014-11-10 23:55:56 UTC (rev 175835)
+++ trunk/Source/WebCore/editing/CompositeEditCommand.cpp 2014-11-11 00:02:57 UTC (rev 175836)
@@ -423,7 +423,7 @@
}
}
-void CompositeEditCommand::updatePositionForNodeRemovalPreservingChildren(Position& position, Node* node)
+void CompositeEditCommand::updatePositionForNodeRemovalPreservingChildren(Position& position, Node& node)
{
int offset = (position.anchorType() == Position::PositionIsOffsetInAnchor) ? position.offsetInContainerNode() : 0;
updatePositionForNodeRemoval(position, node);
Modified: trunk/Source/WebCore/editing/CompositeEditCommand.h (175835 => 175836)
--- trunk/Source/WebCore/editing/CompositeEditCommand.h 2014-11-10 23:55:56 UTC (rev 175835)
+++ trunk/Source/WebCore/editing/CompositeEditCommand.h 2014-11-11 00:02:57 UTC (rev 175836)
@@ -128,7 +128,7 @@
void removeNodePreservingChildren(PassRefPtr<Node>, ShouldAssumeContentIsAlwaysEditable = DoNotAssumeContentIsAlwaysEditable);
void removeNodeAndPruneAncestors(PassRefPtr<Node>);
void moveRemainingSiblingsToNewParent(Node*, Node* pastLastNodeToMove, PassRefPtr<Element> prpNewParent);
- void updatePositionForNodeRemovalPreservingChildren(Position&, Node*);
+ void updatePositionForNodeRemovalPreservingChildren(Position&, Node&);
void prune(PassRefPtr<Node>);
void replaceTextInNode(PassRefPtr<Text>, unsigned offset, unsigned count, const String& replacementText);
Position replaceSelectedTextInNode(const String&);
Modified: trunk/Source/WebCore/editing/DeleteSelectionCommand.cpp (175835 => 175836)
--- trunk/Source/WebCore/editing/DeleteSelectionCommand.cpp 2014-11-10 23:55:56 UTC (rev 175835)
+++ trunk/Source/WebCore/editing/DeleteSelectionCommand.cpp 2014-11-11 00:02:57 UTC (rev 175836)
@@ -402,9 +402,9 @@
m_needPlaceholder = true;
// FIXME: Update the endpoints of the range being deleted.
- updatePositionForNodeRemoval(m_endingPosition, node.get());
- updatePositionForNodeRemoval(m_leadingWhitespace, node.get());
- updatePositionForNodeRemoval(m_trailingWhitespace, node.get());
+ updatePositionForNodeRemoval(m_endingPosition, *node);
+ updatePositionForNodeRemoval(m_leadingWhitespace, *node);
+ updatePositionForNodeRemoval(m_trailingWhitespace, *node);
CompositeEditCommand::removeNode(node, shouldAssumeContentIsAlwaysEditable);
}
@@ -526,7 +526,7 @@
RefPtr<Node> nextNode = NodeTraversal::nextSkippingChildren(node.get());
// if we just removed a node from the end container, update end position so the
// check above will work
- updatePositionForNodeRemoval(m_downstreamEnd, node.get());
+ updatePositionForNodeRemoval(m_downstreamEnd, *node);
removeNode(node.get());
node = nextNode.get();
} else {
@@ -784,7 +784,7 @@
while (node != rootNode) {
if (isRemovableBlock(node)) {
if (node == m_endingPosition.anchorNode())
- updatePositionForNodeRemovalPreservingChildren(m_endingPosition, node);
+ updatePositionForNodeRemovalPreservingChildren(m_endingPosition, *node);
CompositeEditCommand::removeNodePreservingChildren(node);
node = m_endingPosition.anchorNode();
Modified: trunk/Source/WebCore/editing/FrameSelection.cpp (175835 => 175836)
--- trunk/Source/WebCore/editing/FrameSelection.cpp 2014-11-10 23:55:56 UTC (rev 175835)
+++ trunk/Source/WebCore/editing/FrameSelection.cpp 2014-11-11 00:02:57 UTC (rev 175836)
@@ -390,19 +390,18 @@
#endif
}
-static bool removingNodeRemovesPosition(Node* node, const Position& position)
+static bool removingNodeRemovesPosition(Node& node, const Position& position)
{
if (!position.anchorNode())
return false;
- if (position.anchorNode() == node)
+ if (position.anchorNode() == &node)
return true;
- if (!is<Element>(*node))
+ if (!is<Element>(node))
return false;
- Element* element = downcast<Element>(node);
- return element->containsIncludingShadowDOM(position.anchorNode());
+ return downcast<Element>(node).containsIncludingShadowDOM(position.anchorNode());
}
static void clearRenderViewSelection(Node& node)
@@ -413,30 +412,30 @@
view->clearSelection();
}
-void DragCaretController::nodeWillBeRemoved(Node* node)
+void DragCaretController::nodeWillBeRemoved(Node& node)
{
- if (!hasCaret() || (node && !node->inDocument()))
+ if (!hasCaret() || !node.inDocument())
return;
if (!removingNodeRemovesPosition(node, m_position.deepEquivalent()))
return;
- clearRenderViewSelection(*node);
+ clearRenderViewSelection(node);
clear();
}
-void FrameSelection::nodeWillBeRemoved(Node* node)
+void FrameSelection::nodeWillBeRemoved(Node& node)
{
// There can't be a selection inside a fragment, so if a fragment's node is being removed,
// the selection in the document that created the fragment needs no adjustment.
- if (isNone() || (node && !node->inDocument()))
+ if (isNone() || !node.inDocument())
return;
respondToNodeModification(node, removingNodeRemovesPosition(node, m_selection.base()), removingNodeRemovesPosition(node, m_selection.extent()),
removingNodeRemovesPosition(node, m_selection.start()), removingNodeRemovesPosition(node, m_selection.end()));
}
-void FrameSelection::respondToNodeModification(Node* node, bool baseRemoved, bool extentRemoved, bool startRemoved, bool endRemoved)
+void FrameSelection::respondToNodeModification(Node& node, bool baseRemoved, bool extentRemoved, bool startRemoved, bool endRemoved)
{
bool clearRenderTreeSelection = false;
bool clearDOMTreeSelection = false;
@@ -469,7 +468,7 @@
m_selection.setWithoutValidation(m_selection.end(), m_selection.start());
} else if (RefPtr<Range> range = m_selection.firstRange()) {
ExceptionCode ec = 0;
- Range::CompareResults compareResult = range->compareNode(node, ec);
+ Range::CompareResults compareResult = range->compareNode(&node, ec);
if (!ec && (compareResult == Range::NODE_BEFORE_AND_AFTER || compareResult == Range::NODE_INSIDE)) {
// If we did nothing here, when this node's renderer was destroyed, the rect that it
// occupied would be invalidated, but, selection gaps that change as a result of
@@ -480,10 +479,10 @@
}
if (clearRenderTreeSelection) {
- clearRenderViewSelection(*node);
+ clearRenderViewSelection(node);
// Trigger a selection update so the selection will be set again.
- if (auto* renderView = node->document().renderView()) {
+ if (auto* renderView = node.document().renderView()) {
m_pendingSelectionUpdate = true;
renderView->setNeedsLayout();
}
Modified: trunk/Source/WebCore/editing/FrameSelection.h (175835 => 175836)
--- trunk/Source/WebCore/editing/FrameSelection.h 2014-11-10 23:55:56 UTC (rev 175835)
+++ trunk/Source/WebCore/editing/FrameSelection.h 2014-11-11 00:02:57 UTC (rev 175836)
@@ -103,7 +103,7 @@
void setCaretPosition(const VisiblePosition&);
WEBCORE_EXPORT void clear() { setCaretPosition(VisiblePosition()); }
- void nodeWillBeRemoved(Node*);
+ void nodeWillBeRemoved(Node&);
private:
VisiblePosition m_position;
@@ -187,7 +187,7 @@
void debugRenderer(RenderObject*, bool selected) const;
- void nodeWillBeRemoved(Node*);
+ void nodeWillBeRemoved(Node&);
void textWasReplaced(CharacterData*, unsigned offset, unsigned oldLength, unsigned newLength);
void setCaretVisible(bool caretIsVisible) { setCaretVisibility(caretIsVisible ? Visible : Hidden); }
@@ -276,7 +276,7 @@
bool setSelectionWithoutUpdatingAppearance(const VisibleSelection&, SetSelectionOptions, CursorAlignOnScroll, TextGranularity);
- void respondToNodeModification(Node*, bool baseRemoved, bool extentRemoved, bool startRemoved, bool endRemoved);
+ void respondToNodeModification(Node&, bool baseRemoved, bool extentRemoved, bool startRemoved, bool endRemoved);
TextDirection directionOfEnclosingBlock();
TextDirection directionOfSelection();
Modified: trunk/Source/WebCore/editing/ReplaceSelectionCommand.cpp (175835 => 175836)
--- trunk/Source/WebCore/editing/ReplaceSelectionCommand.cpp 2014-11-10 23:55:56 UTC (rev 175835)
+++ trunk/Source/WebCore/editing/ReplaceSelectionCommand.cpp 2014-11-11 00:02:57 UTC (rev 175836)
@@ -1391,7 +1391,7 @@
return;
if (is<Text>(text->previousSibling())) {
- RefPtr<Text> previous = downcast<Text>(text->previousSibling());
+ Ref<Text> previous(downcast<Text>(*text->previousSibling()));
insertTextIntoNode(text, 0, previous->data());
if (positionIsOffsetInAnchor)
@@ -1402,27 +1402,27 @@
if (positionOnlyToBeUpdatedIsOffsetInAnchor) {
if (positionOnlyToBeUpdated.containerNode() == text)
positionOnlyToBeUpdated.moveToOffset(previous->length() + positionOnlyToBeUpdated.offsetInContainerNode());
- else if (positionOnlyToBeUpdated.containerNode() == previous)
+ else if (positionOnlyToBeUpdated.containerNode() == previous.ptr())
positionOnlyToBeUpdated.moveToPosition(text, positionOnlyToBeUpdated.offsetInContainerNode());
} else
updatePositionForNodeRemoval(positionOnlyToBeUpdated, previous.get());
- removeNode(previous);
+ removeNode(previous.ptr());
}
if (is<Text>(text->nextSibling())) {
- RefPtr<Text> next = downcast<Text>(text->nextSibling());
+ Ref<Text> next(downcast<Text>(*text->nextSibling()));
unsigned originalLength = text->length();
insertTextIntoNode(text, originalLength, next->data());
if (!positionIsOffsetInAnchor)
updatePositionForNodeRemoval(position, next.get());
- if (positionOnlyToBeUpdatedIsOffsetInAnchor && positionOnlyToBeUpdated.containerNode() == next)
+ if (positionOnlyToBeUpdatedIsOffsetInAnchor && positionOnlyToBeUpdated.containerNode() == next.ptr())
positionOnlyToBeUpdated.moveToPosition(text, originalLength + positionOnlyToBeUpdated.offsetInContainerNode());
else
updatePositionForNodeRemoval(positionOnlyToBeUpdated, next.get());
- removeNode(next);
+ removeNode(next.ptr());
}
}
Modified: trunk/Source/WebCore/editing/htmlediting.cpp (175835 => 175836)
--- trunk/Source/WebCore/editing/htmlediting.cpp 2014-11-10 23:55:56 UTC (rev 175835)
+++ trunk/Source/WebCore/editing/htmlediting.cpp 2014-11-11 00:02:57 UTC (rev 175836)
@@ -984,32 +984,32 @@
return num;
}
-void updatePositionForNodeRemoval(Position& position, Node* node)
+void updatePositionForNodeRemoval(Position& position, Node& node)
{
if (position.isNull())
return;
switch (position.anchorType()) {
case Position::PositionIsBeforeChildren:
- if (node->containsIncludingShadowDOM(position.containerNode()))
- position = positionInParentBeforeNode(node);
+ if (node.containsIncludingShadowDOM(position.containerNode()))
+ position = positionInParentBeforeNode(&node);
break;
case Position::PositionIsAfterChildren:
- if (node->containsIncludingShadowDOM(position.containerNode()))
- position = positionInParentBeforeNode(node);
+ if (node.containsIncludingShadowDOM(position.containerNode()))
+ position = positionInParentBeforeNode(&node);
break;
case Position::PositionIsOffsetInAnchor:
- if (position.containerNode() == node->parentNode() && static_cast<unsigned>(position.offsetInContainerNode()) > node->computeNodeIndex())
+ if (position.containerNode() == node.parentNode() && static_cast<unsigned>(position.offsetInContainerNode()) > node.computeNodeIndex())
position.moveToOffset(position.offsetInContainerNode() - 1);
- else if (node->containsIncludingShadowDOM(position.containerNode()))
- position = positionInParentBeforeNode(node);
+ else if (node.containsIncludingShadowDOM(position.containerNode()))
+ position = positionInParentBeforeNode(&node);
break;
case Position::PositionIsAfterAnchor:
- if (node->containsIncludingShadowDOM(position.anchorNode()))
- position = positionInParentAfterNode(node);
+ if (node.containsIncludingShadowDOM(position.anchorNode()))
+ position = positionInParentAfterNode(&node);
break;
case Position::PositionIsBeforeAnchor:
- if (node->containsIncludingShadowDOM(position.anchorNode()))
- position = positionInParentBeforeNode(node);
+ if (node.containsIncludingShadowDOM(position.anchorNode()))
+ position = positionInParentBeforeNode(&node);
break;
}
}
Modified: trunk/Source/WebCore/editing/htmlediting.h (175835 => 175836)
--- trunk/Source/WebCore/editing/htmlediting.h 2014-11-10 23:55:56 UTC (rev 175835)
+++ trunk/Source/WebCore/editing/htmlediting.h 2014-11-11 00:02:57 UTC (rev 175836)
@@ -170,7 +170,7 @@
// miscellaneous functions on Position
unsigned numEnclosingMailBlockquotes(const Position&);
-void updatePositionForNodeRemoval(Position&, Node*);
+void updatePositionForNodeRemoval(Position&, Node&);
// -------------------------------------------------------------------------
// VisiblePosition
Modified: trunk/Source/WebCore/page/EventHandler.cpp (175835 => 175836)
--- trunk/Source/WebCore/page/EventHandler.cpp 2014-11-10 23:55:56 UTC (rev 175835)
+++ trunk/Source/WebCore/page/EventHandler.cpp 2014-11-11 00:02:57 UTC (rev 175836)
@@ -503,10 +503,10 @@
m_didLongPressInvokeContextMenu = false;
}
-void EventHandler::nodeWillBeRemoved(Node* nodeToBeRemoved)
+void EventHandler::nodeWillBeRemoved(Node& nodeToBeRemoved)
{
- if (nodeToBeRemoved->contains(m_clickNode.get()))
- m_clickNode = 0;
+ if (nodeToBeRemoved.contains(m_clickNode.get()))
+ m_clickNode = nullptr;
}
static void setSelectionIfNeeded(FrameSelection& selection, const VisibleSelection& newSelection)
Modified: trunk/Source/WebCore/page/EventHandler.h (175835 => 175836)
--- trunk/Source/WebCore/page/EventHandler.h 2014-11-10 23:55:56 UTC (rev 175835)
+++ trunk/Source/WebCore/page/EventHandler.h 2014-11-11 00:02:57 UTC (rev 175836)
@@ -125,7 +125,7 @@
~EventHandler();
void clear();
- void nodeWillBeRemoved(Node*);
+ void nodeWillBeRemoved(Node&);
#if ENABLE(DRAG_SUPPORT)
void updateSelectionForMouseDrag();