TextIteratorEmitsCharactersBetweenAllVisiblePositions was added to preserve selections during editing operations, so it needs to hit every VisiblePositions exactly once. See the expected results for: editing/execCommand/indent-pre-list.html editing/execCommand/crash-indenting-list-item.html for examples of where this fails.