Chromium Code Reviews| Index: third_party/WebKit/Source/core/editing/commands/CompositeEditCommand.cpp | 
| diff --git a/third_party/WebKit/Source/core/editing/commands/CompositeEditCommand.cpp b/third_party/WebKit/Source/core/editing/commands/CompositeEditCommand.cpp | 
| index c9d245114588a09065e5d4913f9fb2fff3045f9a..35c1d0f53f53a914372cf3707b353a7981dfe981 100644 | 
| --- a/third_party/WebKit/Source/core/editing/commands/CompositeEditCommand.cpp | 
| +++ b/third_party/WebKit/Source/core/editing/commands/CompositeEditCommand.cpp | 
| @@ -530,6 +530,11 @@ void CompositeEditCommand::replaceTextInNode(Text* node, | 
| unsigned offset, | 
| unsigned count, | 
| const String& replacementText) { | 
| + // Notify listeners that a replacement has occurred rather than two separate | 
| + // insert + delete operations | 
| + SynchronousMutationNotifier::ScopedNotificationSuppressor suppressor( | 
| + &document()); | 
| + | 
| // DeleteFromTextNodeCommand and InsertIntoTextNodeCommand are never | 
| // aborted. | 
| applyCommandToComposite( | 
| @@ -557,50 +562,6 @@ Position CompositeEditCommand::replaceSelectedTextInNode(const String& text) { | 
| return Position(textNode, start.offsetInContainerNode() + text.length()); | 
| } | 
| -static void copyMarkerTypesAndDescriptions( | 
| - const DocumentMarkerVector& markerPointers, | 
| - Vector<DocumentMarker::MarkerType>& types, | 
| - Vector<String>& descriptions) { | 
| - size_t arraySize = markerPointers.size(); | 
| - types.reserveCapacity(arraySize); | 
| - descriptions.reserveCapacity(arraySize); | 
| - for (const auto& markerPointer : markerPointers) { | 
| - types.push_back(markerPointer->type()); | 
| - descriptions.push_back(markerPointer->description()); | 
| - } | 
| -} | 
| - | 
| -void CompositeEditCommand::replaceTextInNodePreservingMarkers( | 
| - Text* node, | 
| - unsigned offset, | 
| - unsigned count, | 
| - const String& replacementText) { | 
| - DocumentMarkerController& markerController = document().markers(); | 
| - Vector<DocumentMarker::MarkerType> types; | 
| - Vector<String> descriptions; | 
| - copyMarkerTypesAndDescriptions( | 
| - markerController.markersInRange( | 
| - EphemeralRange(Position(node, offset), | 
| - Position(node, offset + count)), | 
| - DocumentMarker::AllMarkers()), | 
| - types, descriptions); | 
| - | 
| - replaceTextInNode(node, offset, count, replacementText); | 
| - | 
| - // Re-adding markers requires a clean tree. | 
| - document().updateStyleAndLayout(); | 
| - | 
| - DocumentLifecycle::DisallowTransitionScope disallowTransition( | 
| - document().lifecycle()); | 
| - Position startPosition(node, offset); | 
| - Position endPosition(node, offset + replacementText.length()); | 
| - DCHECK_EQ(types.size(), descriptions.size()); | 
| - | 
| - for (size_t i = 0; i < types.size(); ++i) | 
| - markerController.addMarker(startPosition, endPosition, types[i], | 
| - descriptions[i]); | 
| -} | 
| - | 
| Position CompositeEditCommand::positionOutsideTabSpan(const Position& pos) { | 
| if (!isTabHTMLSpanElementTextNode(pos.anchorNode())) | 
| return pos; | 
| @@ -773,8 +734,7 @@ void CompositeEditCommand::rebalanceWhitespaceOnTextSubstring(Text* textNode, | 
| shouldEmitNBSPbeforeEnd); | 
| if (string != rebalancedString) | 
| - replaceTextInNodePreservingMarkers(textNode, upstream, length, | 
| - rebalancedString); | 
| + replaceTextInNode(textNode, upstream, length, rebalancedString); | 
| 
 
yosin_UTC9
2017/02/15 02:23:25
Let's make |replaceTextInNode()| to use |Character
 
 | 
| } | 
| void CompositeEditCommand::prepareWhitespaceAtPositionForSplit( | 
| @@ -815,9 +775,8 @@ void CompositeEditCommand:: | 
| Position pos = mostForwardCaretPosition(visiblePosition.deepEquivalent()); | 
| if (!pos.computeContainerNode() || !pos.computeContainerNode()->isTextNode()) | 
| return; | 
| - replaceTextInNodePreservingMarkers(toText(pos.computeContainerNode()), | 
| - pos.offsetInContainerNode(), 1, | 
| - nonBreakingSpaceString()); | 
| + replaceTextInNode(toText(pos.computeContainerNode()), | 
| + pos.offsetInContainerNode(), 1, nonBreakingSpaceString()); | 
| } | 
| void CompositeEditCommand::rebalanceWhitespace() { |