| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2005, 2006, 2008 Apple Inc. All rights reserved. | 2 * Copyright (C) 2005, 2006, 2008 Apple Inc. All rights reserved. |
| 3 * Copyright (C) 2009, 2010, 2011 Google Inc. All rights reserved. | 3 * Copyright (C) 2009, 2010, 2011 Google Inc. All rights reserved. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
| 7 * are met: | 7 * are met: |
| 8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
| (...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 332 { | 332 { |
| 333 if (m_firstNodeInserted == node) | 333 if (m_firstNodeInserted == node) |
| 334 m_firstNodeInserted = NodeTraversal::next(node); | 334 m_firstNodeInserted = NodeTraversal::next(node); |
| 335 if (m_lastNodeInserted == node) | 335 if (m_lastNodeInserted == node) |
| 336 m_lastNodeInserted = node.lastChild() ? node.lastChild() : NodeTraversal
::nextSkippingChildren(node); | 336 m_lastNodeInserted = node.lastChild() ? node.lastChild() : NodeTraversal
::nextSkippingChildren(node); |
| 337 } | 337 } |
| 338 | 338 |
| 339 inline void ReplaceSelectionCommand::InsertedNodes::willRemoveNode(Node& node) | 339 inline void ReplaceSelectionCommand::InsertedNodes::willRemoveNode(Node& node) |
| 340 { | 340 { |
| 341 if (m_firstNodeInserted == node && m_lastNodeInserted == node) { | 341 if (m_firstNodeInserted == node && m_lastNodeInserted == node) { |
| 342 m_firstNodeInserted = 0; | 342 m_firstNodeInserted = nullptr; |
| 343 m_lastNodeInserted = 0; | 343 m_lastNodeInserted = nullptr; |
| 344 } else if (m_firstNodeInserted == node) { | 344 } else if (m_firstNodeInserted == node) { |
| 345 m_firstNodeInserted = NodeTraversal::nextSkippingChildren(*m_firstNodeIn
serted); | 345 m_firstNodeInserted = NodeTraversal::nextSkippingChildren(*m_firstNodeIn
serted); |
| 346 } else if (m_lastNodeInserted == node) { | 346 } else if (m_lastNodeInserted == node) { |
| 347 m_lastNodeInserted = NodeTraversal::previousSkippingChildren(*m_lastNode
Inserted); | 347 m_lastNodeInserted = NodeTraversal::previousSkippingChildren(*m_lastNode
Inserted); |
| 348 } | 348 } |
| 349 } | 349 } |
| 350 | 350 |
| 351 inline void ReplaceSelectionCommand::InsertedNodes::didReplaceNode(Node& node, N
ode& newNode) | 351 inline void ReplaceSelectionCommand::InsertedNodes::didReplaceNode(Node& node, N
ode& newNode) |
| 352 { | 352 { |
| 353 if (m_firstNodeInserted == node) | 353 if (m_firstNodeInserted == node) |
| (...skipping 754 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1108 if (!handledStyleSpans) | 1108 if (!handledStyleSpans) |
| 1109 handleStyleSpans(insertedNodes); | 1109 handleStyleSpans(insertedNodes); |
| 1110 | 1110 |
| 1111 // Mutation events (bug 20161) may have already removed the inserted content | 1111 // Mutation events (bug 20161) may have already removed the inserted content |
| 1112 if (!insertedNodes.firstNodeInserted() || !insertedNodes.firstNodeInserted()
->inDocument()) | 1112 if (!insertedNodes.firstNodeInserted() || !insertedNodes.firstNodeInserted()
->inDocument()) |
| 1113 return; | 1113 return; |
| 1114 | 1114 |
| 1115 // Scripts specified in javascript protocol may remove |insertionBlock| | 1115 // Scripts specified in javascript protocol may remove |insertionBlock| |
| 1116 // during insertion, e.g. <iframe src="javascript:..."> | 1116 // during insertion, e.g. <iframe src="javascript:..."> |
| 1117 if (insertionBlock && !insertionBlock->inDocument()) | 1117 if (insertionBlock && !insertionBlock->inDocument()) |
| 1118 insertionBlock = 0; | 1118 insertionBlock = nullptr; |
| 1119 | 1119 |
| 1120 VisiblePosition startOfInsertedContent = firstPositionInOrBeforeNode(inserte
dNodes.firstNodeInserted()); | 1120 VisiblePosition startOfInsertedContent = firstPositionInOrBeforeNode(inserte
dNodes.firstNodeInserted()); |
| 1121 | 1121 |
| 1122 // We inserted before the insertionBlock to prevent nesting, and the content
before the insertionBlock wasn't in its own block and | 1122 // We inserted before the insertionBlock to prevent nesting, and the content
before the insertionBlock wasn't in its own block and |
| 1123 // didn't have a br after it, so the inserted content ended up in the same p
aragraph. | 1123 // didn't have a br after it, so the inserted content ended up in the same p
aragraph. |
| 1124 if (insertionBlock && insertionPos.deprecatedNode() == insertionBlock->paren
tNode() && (unsigned)insertionPos.deprecatedEditingOffset() < insertionBlock->no
deIndex() && !isStartOfParagraph(startOfInsertedContent)) | 1124 if (insertionBlock && insertionPos.deprecatedNode() == insertionBlock->paren
tNode() && (unsigned)insertionPos.deprecatedEditingOffset() < insertionBlock->no
deIndex() && !isStartOfParagraph(startOfInsertedContent)) |
| 1125 insertNodeAt(createBreakElement(document()).get(), startOfInsertedConten
t.deepEquivalent()); | 1125 insertNodeAt(createBreakElement(document()).get(), startOfInsertedConten
t.deepEquivalent()); |
| 1126 | 1126 |
| 1127 if (endBR && (plainTextFragment || (shouldRemoveEndBR(endBR, originalVisPosB
eforeEndBR) && !(fragment.hasInterchangeNewlineAtEnd() && selectionIsPlainText))
)) { | 1127 if (endBR && (plainTextFragment || (shouldRemoveEndBR(endBR, originalVisPosB
eforeEndBR) && !(fragment.hasInterchangeNewlineAtEnd() && selectionIsPlainText))
)) { |
| 1128 RefPtr<Node> parent = endBR->parentNode(); | 1128 RefPtr<Node> parent = endBR->parentNode(); |
| (...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1347 if (m_selectReplacement) | 1347 if (m_selectReplacement) |
| 1348 setEndingSelection(VisibleSelection(start, end, SEL_DEFAULT_AFFINITY, en
dingSelection().isDirectional())); | 1348 setEndingSelection(VisibleSelection(start, end, SEL_DEFAULT_AFFINITY, en
dingSelection().isDirectional())); |
| 1349 else | 1349 else |
| 1350 setEndingSelection(VisibleSelection(end, SEL_DEFAULT_AFFINITY, endingSel
ection().isDirectional())); | 1350 setEndingSelection(VisibleSelection(end, SEL_DEFAULT_AFFINITY, endingSel
ection().isDirectional())); |
| 1351 } | 1351 } |
| 1352 | 1352 |
| 1353 void ReplaceSelectionCommand::mergeTextNodesAroundPosition(Position& position, P
osition& positionOnlyToBeUpdated) | 1353 void ReplaceSelectionCommand::mergeTextNodesAroundPosition(Position& position, P
osition& positionOnlyToBeUpdated) |
| 1354 { | 1354 { |
| 1355 bool positionIsOffsetInAnchor = position.anchorType() == Position::PositionI
sOffsetInAnchor; | 1355 bool positionIsOffsetInAnchor = position.anchorType() == Position::PositionI
sOffsetInAnchor; |
| 1356 bool positionOnlyToBeUpdatedIsOffsetInAnchor = positionOnlyToBeUpdated.ancho
rType() == Position::PositionIsOffsetInAnchor; | 1356 bool positionOnlyToBeUpdatedIsOffsetInAnchor = positionOnlyToBeUpdated.ancho
rType() == Position::PositionIsOffsetInAnchor; |
| 1357 RefPtr<Text> text = 0; | 1357 RefPtr<Text> text = nullptr; |
| 1358 if (positionIsOffsetInAnchor && position.containerNode() && position.contain
erNode()->isTextNode()) | 1358 if (positionIsOffsetInAnchor && position.containerNode() && position.contain
erNode()->isTextNode()) |
| 1359 text = toText(position.containerNode()); | 1359 text = toText(position.containerNode()); |
| 1360 else { | 1360 else { |
| 1361 Node* before = position.computeNodeBeforePosition(); | 1361 Node* before = position.computeNodeBeforePosition(); |
| 1362 if (before && before->isTextNode()) | 1362 if (before && before->isTextNode()) |
| 1363 text = toText(before); | 1363 text = toText(before); |
| 1364 else { | 1364 else { |
| 1365 Node* after = position.computeNodeAfterPosition(); | 1365 Node* after = position.computeNodeAfterPosition(); |
| 1366 if (after && after->isTextNode()) | 1366 if (after && after->isTextNode()) |
| 1367 text = toText(after); | 1367 text = toText(after); |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1493 removeNodeAndPruneAncestors(nodeAfterInsertionPos.get()); | 1493 removeNodeAndPruneAncestors(nodeAfterInsertionPos.get()); |
| 1494 | 1494 |
| 1495 VisibleSelection selectionAfterReplace(m_selectReplacement ? start : end, en
d); | 1495 VisibleSelection selectionAfterReplace(m_selectReplacement ? start : end, en
d); |
| 1496 | 1496 |
| 1497 setEndingSelection(selectionAfterReplace); | 1497 setEndingSelection(selectionAfterReplace); |
| 1498 | 1498 |
| 1499 return true; | 1499 return true; |
| 1500 } | 1500 } |
| 1501 | 1501 |
| 1502 } // namespace WebCore | 1502 } // namespace WebCore |
| OLD | NEW |