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

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

Issue 23822003: Have EditCommand classes deal with Document references, not pointers (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 3 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/ReplaceSelectionCommand.h ('k') | Source/core/editing/SetNodeAttributeCommand.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/editing/ReplaceSelectionCommand.cpp
diff --git a/Source/core/editing/ReplaceSelectionCommand.cpp b/Source/core/editing/ReplaceSelectionCommand.cpp
index d578d660dbea643cee00e010d4e1db27dbd92301..da4ecdd787cbc53a7084e924db55d460658ebd63 100644
--- a/Source/core/editing/ReplaceSelectionCommand.cpp
+++ b/Source/core/editing/ReplaceSelectionCommand.cpp
@@ -359,7 +359,7 @@ inline void ReplaceSelectionCommand::InsertedNodes::didReplaceNode(Node* node, N
m_lastNodeInserted = newNode;
}
-ReplaceSelectionCommand::ReplaceSelectionCommand(Document* document, PassRefPtr<DocumentFragment> fragment, CommandOptions options, EditAction editAction)
+ReplaceSelectionCommand::ReplaceSelectionCommand(Document& document, PassRefPtr<DocumentFragment> fragment, CommandOptions options, EditAction editAction)
: CompositeEditCommand(document)
, m_selectReplacement(options & SelectReplacement)
, m_smartReplace(options & SmartReplace)
@@ -502,7 +502,7 @@ void ReplaceSelectionCommand::removeRedundantStylesAndKeepStyleSpanInline(Insert
// styles from blockquoteNode are allowed to override those from the source document, see <rdar://problem/4930986> and <rdar://problem/5089327>.
Node* blockquoteNode = !context || isMailPasteAsQuotationNode(context) ? context : enclosingNodeOfType(firstPositionInNode(context), isMailBlockquote, CanCrossEditingBoundary);
if (blockquoteNode)
- newInlineStyle->removeStyleFromRulesAndContext(element, document()->documentElement());
+ newInlineStyle->removeStyleFromRulesAndContext(element, document().documentElement());
newInlineStyle->removeStyleFromRulesAndContext(element, context);
}
@@ -664,7 +664,7 @@ static inline bool nodeHasVisibleRenderText(Text* text)
void ReplaceSelectionCommand::removeUnrenderedTextNodesAtEnds(InsertedNodes& insertedNodes)
{
- document()->updateLayoutIgnorePendingStylesheets();
+ document().updateLayoutIgnorePendingStylesheets();
Node* lastLeafInserted = insertedNodes.lastLeafInserted();
if (lastLeafInserted && lastLeafInserted->isTextNode() && !nodeHasVisibleRenderText(toText(lastLeafInserted))
@@ -773,7 +773,7 @@ void ReplaceSelectionCommand::handleStyleSpans(InsertedNodes& insertedNodes)
// styles from blockquoteNode are allowed to override those from the source document, see <rdar://problem/4930986> and <rdar://problem/5089327>.
Node* blockquoteNode = isMailPasteAsQuotationNode(context) ? context : enclosingNodeOfType(firstPositionInNode(context), isMailBlockquote, CanCrossEditingBoundary);
if (blockquoteNode)
- context = document()->documentElement();
+ context = document().documentElement();
// This operation requires that only editing styles to be removed from sourceDocumentStyle.
style->prepareToApplyAt(firstPositionInNode(context));
@@ -818,7 +818,7 @@ void ReplaceSelectionCommand::mergeEndIfNeeded()
// Merging forward could result in deleting the destination anchor node.
// To avoid this, we add a placeholder node before the start of the paragraph.
if (endOfParagraph(startOfParagraphToMove) == destination) {
- RefPtr<Node> placeholder = createBreakElement(document());
+ RefPtr<Node> placeholder = createBreakElement(&document());
insertNodeBefore(placeholder, startOfParagraphToMove.deepEquivalent().deprecatedNode());
destination = VisiblePosition(positionBeforeNode(placeholder.get()));
}
@@ -889,7 +889,7 @@ void ReplaceSelectionCommand::doApply()
if (!selection.rootEditableElement())
return;
- ReplacementFragment fragment(document(), m_documentFragment.get(), selection);
+ ReplacementFragment fragment(&document(), m_documentFragment.get(), selection);
if (performTrivialReplace(fragment))
return;
@@ -900,7 +900,7 @@ void ReplaceSelectionCommand::doApply()
if (m_matchStyle) {
m_insertionStyle = EditingStyle::create(selection.start());
- m_insertionStyle->mergeTypingStyle(document());
+ m_insertionStyle->mergeTypingStyle(&document());
}
VisiblePosition visibleStart = selection.visibleStart();
@@ -1009,7 +1009,7 @@ void ReplaceSelectionCommand::doApply()
// FIXME: Can this wait until after the operation has been performed? There doesn't seem to be
// any work performed after this that queries or uses the typing style.
- if (Frame* frame = document()->frame())
+ if (Frame* frame = document().frame())
frame->selection()->clearTypingStyle();
removeHeadContents(fragment);
@@ -1115,7 +1115,7 @@ void ReplaceSelectionCommand::doApply()
// We inserted before the startBlock to prevent nesting, and the content before the startBlock wasn't in its own block and
// didn't have a br after it, so the inserted content ended up in the same paragraph.
if (startBlock && insertionPos.deprecatedNode() == startBlock->parentNode() && (unsigned)insertionPos.deprecatedEditingOffset() < startBlock->nodeIndex() && !isStartOfParagraph(startOfInsertedContent))
- insertNodeAt(createBreakElement(document()).get(), startOfInsertedContent.deepEquivalent());
+ insertNodeAt(createBreakElement(&document()).get(), startOfInsertedContent.deepEquivalent());
if (endBR && (plainTextFragment || shouldRemoveEndBR(endBR, originalVisPosBeforeEndBR))) {
RefPtr<Node> parent = endBR->parentNode();
@@ -1150,7 +1150,7 @@ void ReplaceSelectionCommand::doApply()
// We insert a placeholder before the newly inserted content to avoid being merged into the inline.
Node* destinationNode = destination.deepEquivalent().deprecatedNode();
if (m_shouldMergeEnd && destinationNode != enclosingInline(destinationNode) && enclosingInline(destinationNode)->nextSibling())
- insertNodeBefore(createBreakElement(document()), refNode.get());
+ insertNodeBefore(createBreakElement(&document()), refNode.get());
// Merging the the first paragraph of inserted content with the content that came
// before the selection that was pasted into would also move content after
@@ -1161,7 +1161,7 @@ void ReplaceSelectionCommand::doApply()
// comes after and prevent that from happening.
VisiblePosition endOfInsertedContent = positionAtEndOfInsertedContent();
if (startOfParagraph(endOfInsertedContent) == startOfParagraphToMove) {
- insertNodeAt(createBreakElement(document()).get(), endOfInsertedContent.deepEquivalent());
+ insertNodeAt(createBreakElement(&document()).get(), endOfInsertedContent.deepEquivalent());
// Mutation events (bug 22634) triggered by inserting the <br> might have removed the content we're about to move
if (!startOfParagraphToMove.deepEquivalent().anchorNode()->inDocument())
return;
@@ -1185,7 +1185,7 @@ void ReplaceSelectionCommand::doApply()
setEndingSelection(endOfInsertedContent);
Node* enclosingNode = enclosingBlock(endOfInsertedContent.deepEquivalent().deprecatedNode());
if (isListItem(enclosingNode)) {
- RefPtr<Node> newListItem = createListItemElement(document());
+ RefPtr<Node> newListItem = createListItemElement(&document());
insertNodeAfter(newListItem, enclosingNode);
setEndingSelection(VisiblePosition(firstPositionInNode(newListItem.get())));
} else {
@@ -1233,7 +1233,7 @@ bool ReplaceSelectionCommand::shouldRemoveEndBR(Node* endBR, const VisiblePositi
return false;
// Remove the br if it is collapsed away and so is unnecessary.
- if (!document()->inNoQuirksMode() && isEndOfBlock(visiblePos) && !isStartOfParagraph(visiblePos))
+ if (!document().inNoQuirksMode() && isEndOfBlock(visiblePos) && !isStartOfParagraph(visiblePos))
return true;
// A br that was originally holding a line open should be displaced by inserted content or turned into a line break.
@@ -1279,13 +1279,13 @@ void ReplaceSelectionCommand::addSpacesForSmartReplace()
if (m_endOfInsertedContent.containerNode() == endNode)
m_endOfInsertedContent.moveToOffset(m_endOfInsertedContent.offsetInContainerNode() + 1);
} else {
- RefPtr<Node> node = document()->createEditingTextNode(collapseWhiteSpace ? nonBreakingSpaceString() : " ");
+ RefPtr<Node> node = document().createEditingTextNode(collapseWhiteSpace ? nonBreakingSpaceString() : " ");
insertNodeAfter(node, endNode);
updateNodesInserted(node.get());
}
}
- document()->updateLayout();
+ document().updateLayout();
Position startDownstream = startOfInsertedContent.deepEquivalent().downstream();
Node* startNode = startDownstream.computeNodeAfterPosition();
@@ -1303,7 +1303,7 @@ void ReplaceSelectionCommand::addSpacesForSmartReplace()
if (m_endOfInsertedContent.containerNode() == startNode && m_endOfInsertedContent.offsetInContainerNode())
m_endOfInsertedContent.moveToOffset(m_endOfInsertedContent.offsetInContainerNode() + 1);
} else {
- RefPtr<Node> node = document()->createEditingTextNode(collapseWhiteSpace ? nonBreakingSpaceString() : " ");
+ RefPtr<Node> node = document().createEditingTextNode(collapseWhiteSpace ? nonBreakingSpaceString() : " ");
// Don't updateNodesInserted. Doing so would set m_endOfInsertedContent to be the node containing the leading space,
// but m_endOfInsertedContent is supposed to mark the end of pasted content.
insertNodeBefore(node, startNode);
« no previous file with comments | « Source/core/editing/ReplaceSelectionCommand.h ('k') | Source/core/editing/SetNodeAttributeCommand.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698