LayoutTests:
authorjusting <justing@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 16 Aug 2006 21:17:47 +0000 (21:17 +0000)
committerjusting <justing@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 16 Aug 2006 21:17:47 +0000 (21:17 +0000)
        Reviewed by thatcher

        Added:
        * editing/pasteboard/interchange-newline-4-expected.checksum: Added.
        * editing/pasteboard/interchange-newline-4-expected.png: Added.
        * editing/pasteboard/interchange-newline-4-expected.txt: Added.
        * editing/pasteboard/interchange-newline-4.html: Added.
        * editing/deleting/paragraph-in-preserveNewline-expected.checksum: Added.
        * editing/deleting/paragraph-in-preserveNewline-expected.png: Added.
        * editing/deleting/paragraph-in-preserveNewline-expected.txt: Added.
        * editing/deleting/paragraph-in-preserveNewline.html: Added.

        Equivalent render trees, fixes, or bugs exposed (10427, 10428):
        * editing/execCommand/insertHTML-expected.checksum:
        * editing/execCommand/insertHTML-expected.png:
        * editing/execCommand/insertHTML-expected.txt:
        * editing/execCommand/insertHTML.html:
        * editing/execCommand/insertHorizontalRule-expected.checksum:
        * editing/execCommand/insertHorizontalRule-expected.png:
        * editing/execCommand/insertHorizontalRule-expected.txt:
        * editing/inserting/insert-3786362-fix-expected.checksum:
        * editing/inserting/insert-3786362-fix-expected.png:
        * editing/inserting/insert-3786362-fix-expected.txt:
        * editing/inserting/insert-3786362-fix.html:
        * editing/inserting/insert-3907422-fix-expected.txt:
        * editing/pasteboard/3976872-expected.checksum:
        * editing/pasteboard/3976872-expected.png:
        * editing/pasteboard/3976872-expected.txt:
        * editing/pasteboard/4076267-3-expected.checksum:
        * editing/pasteboard/4076267-3-expected.png:
        * editing/pasteboard/4076267-3-expected.txt:
        * editing/pasteboard/4076267-3.html:
        * editing/pasteboard/4076267-expected.checksum:
        * editing/pasteboard/4076267-expected.png:
        * editing/pasteboard/4076267-expected.txt:
        * editing/pasteboard/4076267.html:
        * editing/pasteboard/4242293-1-expected.txt:
        * editing/pasteboard/4242293-expected.checksum:
        * editing/pasteboard/4242293-expected.png:
        * editing/pasteboard/4242293-expected.txt:
        * editing/pasteboard/4631972-expected.txt:
        * editing/pasteboard/8145-1-expected.txt:
        * editing/pasteboard/8145-3-expected.txt:
        * editing/pasteboard/block-wrappers-necessary-expected.txt:
        * editing/pasteboard/copy-paste-bidi-expected.txt:
        * editing/pasteboard/display-block-on-spans-expected.checksum:
        * editing/pasteboard/display-block-on-spans-expected.png:
        * editing/pasteboard/display-block-on-spans-expected.txt:
        * editing/pasteboard/interchange-newline-1-expected.txt:
        * editing/pasteboard/merge-end-1-expected.checksum:
        * editing/pasteboard/merge-end-1-expected.png:
        * editing/pasteboard/merge-end-1-expected.txt:
        * editing/pasteboard/merge-end-1.html:
        * editing/pasteboard/merge-end-2-expected.checksum:
        * editing/pasteboard/merge-end-2-expected.png:
        * editing/pasteboard/merge-end-2-expected.txt:
        * editing/pasteboard/merge-end-2.html:
        * editing/pasteboard/merge-end-4-expected.txt:
        * editing/pasteboard/merge-end-list-expected.txt:
        * editing/pasteboard/merge-end-table-expected.checksum:
        * editing/pasteboard/merge-end-table-expected.png:
        * editing/pasteboard/merge-end-table-expected.txt:
        * editing/pasteboard/nested-blocks-with-text-area-expected.txt:
        * editing/pasteboard/nested-blocks-with-text-field-expected.txt:
        * editing/pasteboard/paste-4039777-fix-expected.checksum:
        * editing/pasteboard/paste-4039777-fix-expected.png:
        * editing/pasteboard/paste-4039777-fix-expected.txt:
        * editing/pasteboard/paste-line-endings-002-expected.txt:
        * editing/pasteboard/paste-line-endings-004-expected.txt:
        * editing/pasteboard/paste-line-endings-007-expected.txt:
        * editing/pasteboard/paste-line-endings-008-expected.txt:
        * editing/pasteboard/paste-line-endings-009-expected.txt:
        * editing/pasteboard/paste-match-style-002-expected.txt:
        * editing/pasteboard/paste-pre-001-expected.txt:
        * editing/pasteboard/paste-pre-002-expected.txt:
        * editing/pasteboard/paste-table-001-expected.checksum:
        * editing/pasteboard/paste-table-001-expected.png:
        * editing/pasteboard/paste-table-001-expected.txt:
        * editing/pasteboard/paste-table-003-expected.txt:
        * editing/pasteboard/paste-text-001-expected.txt:
        * editing/pasteboard/paste-text-003-expected.txt:
        * editing/pasteboard/paste-text-007-expected.checksum:
        * editing/pasteboard/paste-text-007-expected.png:
        * editing/pasteboard/paste-text-007-expected.txt:
        * editing/pasteboard/paste-text-008-expected.txt:
        * editing/pasteboard/paste-text-009-expected.txt:
        * editing/pasteboard/paste-text-010-expected.txt:
        * editing/pasteboard/paste-text-011-expected.txt:
        * editing/pasteboard/paste-text-012-expected.checksum:
        * editing/pasteboard/paste-text-012-expected.png:
        * editing/pasteboard/paste-text-012-expected.txt:
        * editing/pasteboard/paste-text-012.html:
        * editing/pasteboard/paste-text-013-expected.checksum:
        * editing/pasteboard/paste-text-013-expected.png:
        * editing/pasteboard/paste-text-013-expected.txt:
        * editing/pasteboard/paste-text-015-expected.txt:
        * editing/pasteboard/paste-text-017-expected.txt:
        * editing/pasteboard/paste-text-019-expected.checksum:
        * editing/pasteboard/paste-text-019-expected.png:
        * editing/pasteboard/paste-text-019-expected.txt:
        * editing/pasteboard/paste-text-019.html:
        * editing/pasteboard/paste-text-at-tabspan-001-expected.txt:
        * editing/pasteboard/paste-text-at-tabspan-002-expected.txt:
        * editing/pasteboard/paste-text-at-tabspan-003-expected.txt:
        * editing/pasteboard/pasting-object-expected.txt:
        * editing/pasteboard/prevent-block-nesting-01-expected.txt:
        * editing/pasteboard/quirks-mode-br-1-expected.txt:
        * editing/pasteboard/smart-paste-001-expected.txt:
        * editing/pasteboard/smart-paste-002-expected.txt:
        * editing/pasteboard/smart-paste-003-expected.txt:
        * editing/pasteboard/smart-paste-004-expected.txt:
        * editing/pasteboard/smart-paste-005-expected.txt:
        * editing/pasteboard/smart-paste-006-expected.txt:
        * editing/pasteboard/smart-paste-007-expected.txt:
        * editing/pasteboard/smart-paste-008-expected.txt:
        * editing/pasteboard/undoable-fragment-removes-expected.checksum:
        * editing/pasteboard/undoable-fragment-removes-expected.png:
        * editing/pasteboard/undoable-fragment-removes-expected.txt:
        * editing/pasteboard/undoable-fragment-removes.html:
        * editing/style/smoosh-styles-001-expected.txt:
        * editing/style/smoosh-styles-002-expected.txt:

WebCore:

        Reviewed by thatcher

        First part of fix for:
        <rdar://problem/4384589>
        Mail hung on paste text

        Fixes:
        <http://bugzilla.opendarwin.org/show_bug.cgi?id=8592>
        Extra line left after deleting whitespace:pre text
        <rdar://problem/4128080> Paste as HTML does not yield equivalent style
        <rdar://problem/4046469> Box styles on first element aren't copied/pasted
        Copy/paste of arstechnica.com

        Here's how we avoid adding redundant style information on paste: insert
        the fragment and do a test rendering, save away style information for
        every node in the fragment, remove all style information from the fragment,
        remove the fragment, insert it into the appropriate place in the document,
        then restore only those styles gathered during the test insertion that aren't
        redundant.  Restoring the styles in this way results in an ApplyStyleCommand
        and a layout for nearly every inserted node.
        Instead we want to insert the fragment into the document without removing the
        style information, then mark style nodes and inline style declarations for
        removal if they are redundant, and sweep to remove them.  This means that we
        can't rely on ReplacementFragment::wasBlock anymore, because blocks will now
        have style spans around them.  This patch removes the use of wasBlock in
        ReplaceSelectionCommand.

        * editing/CompositeEditCommand.cpp:
        (WebCore::CompositeEditCommand::moveParagraphs): Added code
        to remove the line placeholder left after a move from preserveNewline text.
        * editing/DeleteSelectionCommand.cpp:
        (WebCore::DeleteSelectionCommand::doApply): Don't add a placeholder if
        we're deleting a paragraph in preserveNewline text.
        * editing/JSEditor.cpp: Pass true to prevent nesting.
        * editing/ReplaceSelectionCommand.cpp: Removed wasBlock and friends.
        (WebCore::ReplacementFragment::ReplacementFragment): Ditto.
        (WebCore::ReplacementFragment::saveRenderingInfo): Ditto.
        (WebCore::RenderingInfo::RenderingInfo): Ditto.
        (WebCore::ReplaceSelectionCommand::ReplaceSelectionCommand):
        (WebCore::ReplaceSelectionCommand::shouldMergeStart): Combined the to/from
        merging rules into one method.
        (WebCore::ReplaceSelectionCommand::shouldMergeEnd):
        (WebCore::ReplaceSelectionCommand::shouldMerge):
        (WebCore::ReplaceSelectionCommand::doApply):
        Don't do nesting prevention when pasting into an empty paragraph, this
        fixes 4046469, the common cause of paste fidelity bugs, but needs
        to be tweaked a little because this can lead to margin/border build-up
        on repeated copy/pastes.
        Don't track startPos in addition to insertionPos.  It was never used.
        Fixed a bug where a fragment starting with an interchange newline would
        cause content to be put outside of an editable region when pasting at the
        very end of it.
        Adjust insertionPos before insertion (not during) and do not consult wasBlock
        to decide whether or not to do so.
        Changed the way we do the start merge: insert the fragment, then stich
        paragraphs together, in the same way that we do the end merge.  This
        doesn't require wasBlock and fixes bugs.
        Replaced some uses of insertionPos with endOfInsertedContent.
        Fixed a bug in the expansion of the last incoming br (a "collapsed" br
        is one where !isStartOfParagraph([br,0])).
        Removed the special case code that did the end merge for the preserveNewline
        case, since this patch fixes the moveParagraph bug in the preserveNewline case.
        Removed some unused variables.
        (WebCore::ReplaceSelectionCommand::shouldRemoveEndBR): An endBR that was
        holding a line open should always be displaced by inserted content, unless
        the inserted content ends with a br.
        (WebCore::ReplaceSelectionCommand::updateNodesInserted):
        * editing/ReplaceSelectionCommand.h:
        (WebCore::RenderingInfo::style):
        * editing/markup.cpp:
        (WebCore::createMarkup): Only add mail blockquotes and list/table/pre when
        annotate is true (when we're creating markup for the pasteboard).

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@15918 268f45cc-cd09-0410-ab3c-d52691b4dbfc

122 files changed:
LayoutTests/ChangeLog
LayoutTests/editing/deleting/paragraph-in-preserveNewline-expected.checksum [new file with mode: 0644]
LayoutTests/editing/deleting/paragraph-in-preserveNewline-expected.png [new file with mode: 0644]
LayoutTests/editing/deleting/paragraph-in-preserveNewline-expected.txt [new file with mode: 0644]
LayoutTests/editing/deleting/paragraph-in-preserveNewline.html [new file with mode: 0644]
LayoutTests/editing/execCommand/insertHTML-expected.checksum
LayoutTests/editing/execCommand/insertHTML-expected.png
LayoutTests/editing/execCommand/insertHTML-expected.txt
LayoutTests/editing/execCommand/insertHTML.html
LayoutTests/editing/execCommand/insertHorizontalRule-expected.checksum
LayoutTests/editing/execCommand/insertHorizontalRule-expected.png
LayoutTests/editing/execCommand/insertHorizontalRule-expected.txt
LayoutTests/editing/inserting/insert-3786362-fix-expected.checksum
LayoutTests/editing/inserting/insert-3786362-fix-expected.png
LayoutTests/editing/inserting/insert-3786362-fix-expected.txt
LayoutTests/editing/inserting/insert-3786362-fix.html
LayoutTests/editing/inserting/insert-3907422-fix-expected.txt
LayoutTests/editing/pasteboard/3976872-expected.checksum
LayoutTests/editing/pasteboard/3976872-expected.png
LayoutTests/editing/pasteboard/3976872-expected.txt
LayoutTests/editing/pasteboard/4076267-3-expected.checksum
LayoutTests/editing/pasteboard/4076267-3-expected.png
LayoutTests/editing/pasteboard/4076267-3-expected.txt
LayoutTests/editing/pasteboard/4076267-3.html
LayoutTests/editing/pasteboard/4076267-expected.checksum
LayoutTests/editing/pasteboard/4076267-expected.png
LayoutTests/editing/pasteboard/4076267-expected.txt
LayoutTests/editing/pasteboard/4076267.html
LayoutTests/editing/pasteboard/4242293-1-expected.txt
LayoutTests/editing/pasteboard/4242293-expected.checksum
LayoutTests/editing/pasteboard/4242293-expected.png
LayoutTests/editing/pasteboard/4242293-expected.txt
LayoutTests/editing/pasteboard/4631972-expected.txt
LayoutTests/editing/pasteboard/8145-1-expected.txt
LayoutTests/editing/pasteboard/8145-3-expected.txt
LayoutTests/editing/pasteboard/block-wrappers-necessary-expected.txt
LayoutTests/editing/pasteboard/copy-paste-bidi-expected.txt
LayoutTests/editing/pasteboard/display-block-on-spans-expected.checksum
LayoutTests/editing/pasteboard/display-block-on-spans-expected.png
LayoutTests/editing/pasteboard/display-block-on-spans-expected.txt
LayoutTests/editing/pasteboard/interchange-newline-1-expected.txt
LayoutTests/editing/pasteboard/interchange-newline-4-expected.checksum [new file with mode: 0644]
LayoutTests/editing/pasteboard/interchange-newline-4-expected.png [new file with mode: 0644]
LayoutTests/editing/pasteboard/interchange-newline-4-expected.txt [new file with mode: 0644]
LayoutTests/editing/pasteboard/interchange-newline-4.html [new file with mode: 0644]
LayoutTests/editing/pasteboard/merge-end-1-expected.checksum
LayoutTests/editing/pasteboard/merge-end-1-expected.png
LayoutTests/editing/pasteboard/merge-end-1-expected.txt
LayoutTests/editing/pasteboard/merge-end-1.html
LayoutTests/editing/pasteboard/merge-end-2-expected.checksum
LayoutTests/editing/pasteboard/merge-end-2-expected.png
LayoutTests/editing/pasteboard/merge-end-2-expected.txt
LayoutTests/editing/pasteboard/merge-end-2.html
LayoutTests/editing/pasteboard/merge-end-4-expected.txt
LayoutTests/editing/pasteboard/merge-end-list-expected.txt
LayoutTests/editing/pasteboard/merge-end-table-expected.checksum
LayoutTests/editing/pasteboard/merge-end-table-expected.png
LayoutTests/editing/pasteboard/merge-end-table-expected.txt
LayoutTests/editing/pasteboard/nested-blocks-with-text-area-expected.txt
LayoutTests/editing/pasteboard/nested-blocks-with-text-field-expected.txt
LayoutTests/editing/pasteboard/paste-4039777-fix-expected.checksum
LayoutTests/editing/pasteboard/paste-4039777-fix-expected.png
LayoutTests/editing/pasteboard/paste-4039777-fix-expected.txt
LayoutTests/editing/pasteboard/paste-line-endings-007-expected.txt
LayoutTests/editing/pasteboard/paste-line-endings-008-expected.txt
LayoutTests/editing/pasteboard/paste-line-endings-009-expected.txt
LayoutTests/editing/pasteboard/paste-match-style-002-expected.txt
LayoutTests/editing/pasteboard/paste-pre-001-expected.txt
LayoutTests/editing/pasteboard/paste-pre-002-expected.txt
LayoutTests/editing/pasteboard/paste-table-001-expected.checksum
LayoutTests/editing/pasteboard/paste-table-001-expected.png
LayoutTests/editing/pasteboard/paste-table-001-expected.txt
LayoutTests/editing/pasteboard/paste-table-003-expected.txt
LayoutTests/editing/pasteboard/paste-text-001-expected.txt
LayoutTests/editing/pasteboard/paste-text-003-expected.txt
LayoutTests/editing/pasteboard/paste-text-007-expected.checksum
LayoutTests/editing/pasteboard/paste-text-007-expected.png
LayoutTests/editing/pasteboard/paste-text-007-expected.txt
LayoutTests/editing/pasteboard/paste-text-008-expected.txt
LayoutTests/editing/pasteboard/paste-text-009-expected.txt
LayoutTests/editing/pasteboard/paste-text-010-expected.txt
LayoutTests/editing/pasteboard/paste-text-011-expected.txt
LayoutTests/editing/pasteboard/paste-text-012-expected.checksum
LayoutTests/editing/pasteboard/paste-text-012-expected.png
LayoutTests/editing/pasteboard/paste-text-012-expected.txt
LayoutTests/editing/pasteboard/paste-text-012.html
LayoutTests/editing/pasteboard/paste-text-013-expected.checksum
LayoutTests/editing/pasteboard/paste-text-013-expected.png
LayoutTests/editing/pasteboard/paste-text-013-expected.txt
LayoutTests/editing/pasteboard/paste-text-015-expected.txt
LayoutTests/editing/pasteboard/paste-text-017-expected.txt
LayoutTests/editing/pasteboard/paste-text-019-expected.checksum
LayoutTests/editing/pasteboard/paste-text-019-expected.png
LayoutTests/editing/pasteboard/paste-text-019-expected.txt
LayoutTests/editing/pasteboard/paste-text-019.html
LayoutTests/editing/pasteboard/paste-text-at-tabspan-001-expected.txt
LayoutTests/editing/pasteboard/paste-text-at-tabspan-002-expected.txt
LayoutTests/editing/pasteboard/paste-text-at-tabspan-003-expected.txt
LayoutTests/editing/pasteboard/pasting-object-expected.txt
LayoutTests/editing/pasteboard/prevent-block-nesting-01-expected.txt
LayoutTests/editing/pasteboard/quirks-mode-br-1-expected.txt
LayoutTests/editing/pasteboard/smart-paste-001-expected.txt
LayoutTests/editing/pasteboard/smart-paste-002-expected.txt
LayoutTests/editing/pasteboard/smart-paste-003-expected.txt
LayoutTests/editing/pasteboard/smart-paste-004-expected.txt
LayoutTests/editing/pasteboard/smart-paste-005-expected.txt
LayoutTests/editing/pasteboard/smart-paste-006-expected.txt
LayoutTests/editing/pasteboard/smart-paste-007-expected.txt
LayoutTests/editing/pasteboard/smart-paste-008-expected.txt
LayoutTests/editing/pasteboard/undoable-fragment-removes-expected.checksum
LayoutTests/editing/pasteboard/undoable-fragment-removes-expected.png
LayoutTests/editing/pasteboard/undoable-fragment-removes-expected.txt
LayoutTests/editing/pasteboard/undoable-fragment-removes.html
LayoutTests/editing/style/smoosh-styles-001-expected.txt
LayoutTests/editing/style/smoosh-styles-002-expected.txt
WebCore/ChangeLog
WebCore/editing/CompositeEditCommand.cpp
WebCore/editing/DeleteSelectionCommand.cpp
WebCore/editing/JSEditor.cpp
WebCore/editing/ReplaceSelectionCommand.cpp
WebCore/editing/ReplaceSelectionCommand.h
WebCore/editing/markup.cpp

index d2ce7c8..3b7126d 100644 (file)
@@ -1,3 +1,127 @@
+2006-08-15  Justin Garcia  <justin.garcia@apple.com>
+
+        Reviewed by thatcher
+        
+        Added:
+        * editing/pasteboard/interchange-newline-4-expected.checksum: Added.
+        * editing/pasteboard/interchange-newline-4-expected.png: Added.
+        * editing/pasteboard/interchange-newline-4-expected.txt: Added.
+        * editing/pasteboard/interchange-newline-4.html: Added.
+        * editing/deleting/paragraph-in-preserveNewline-expected.checksum: Added.
+        * editing/deleting/paragraph-in-preserveNewline-expected.png: Added.
+        * editing/deleting/paragraph-in-preserveNewline-expected.txt: Added.
+        * editing/deleting/paragraph-in-preserveNewline.html: Added.
+        
+        Equivalent render trees, fixes, or bugs exposed (10427, 10428):
+        * editing/execCommand/insertHTML-expected.checksum:
+        * editing/execCommand/insertHTML-expected.png:
+        * editing/execCommand/insertHTML-expected.txt:
+        * editing/execCommand/insertHTML.html:
+        * editing/execCommand/insertHorizontalRule-expected.checksum:
+        * editing/execCommand/insertHorizontalRule-expected.png:
+        * editing/execCommand/insertHorizontalRule-expected.txt:
+        * editing/inserting/insert-3786362-fix-expected.checksum:
+        * editing/inserting/insert-3786362-fix-expected.png:
+        * editing/inserting/insert-3786362-fix-expected.txt:
+        * editing/inserting/insert-3786362-fix.html:
+        * editing/inserting/insert-3907422-fix-expected.txt:
+        * editing/pasteboard/3976872-expected.checksum:
+        * editing/pasteboard/3976872-expected.png:
+        * editing/pasteboard/3976872-expected.txt:
+        * editing/pasteboard/4076267-3-expected.checksum:
+        * editing/pasteboard/4076267-3-expected.png:
+        * editing/pasteboard/4076267-3-expected.txt:
+        * editing/pasteboard/4076267-3.html:
+        * editing/pasteboard/4076267-expected.checksum:
+        * editing/pasteboard/4076267-expected.png:
+        * editing/pasteboard/4076267-expected.txt:
+        * editing/pasteboard/4076267.html:
+        * editing/pasteboard/4242293-1-expected.txt:
+        * editing/pasteboard/4242293-expected.checksum:
+        * editing/pasteboard/4242293-expected.png:
+        * editing/pasteboard/4242293-expected.txt:
+        * editing/pasteboard/4631972-expected.txt:
+        * editing/pasteboard/8145-1-expected.txt:
+        * editing/pasteboard/8145-3-expected.txt:
+        * editing/pasteboard/block-wrappers-necessary-expected.txt:
+        * editing/pasteboard/copy-paste-bidi-expected.txt:
+        * editing/pasteboard/display-block-on-spans-expected.checksum:
+        * editing/pasteboard/display-block-on-spans-expected.png:
+        * editing/pasteboard/display-block-on-spans-expected.txt:
+        * editing/pasteboard/interchange-newline-1-expected.txt:
+        * editing/pasteboard/merge-end-1-expected.checksum:
+        * editing/pasteboard/merge-end-1-expected.png:
+        * editing/pasteboard/merge-end-1-expected.txt:
+        * editing/pasteboard/merge-end-1.html:
+        * editing/pasteboard/merge-end-2-expected.checksum:
+        * editing/pasteboard/merge-end-2-expected.png:
+        * editing/pasteboard/merge-end-2-expected.txt:
+        * editing/pasteboard/merge-end-2.html:
+        * editing/pasteboard/merge-end-4-expected.txt:
+        * editing/pasteboard/merge-end-list-expected.txt:
+        * editing/pasteboard/merge-end-table-expected.checksum:
+        * editing/pasteboard/merge-end-table-expected.png:
+        * editing/pasteboard/merge-end-table-expected.txt:
+        * editing/pasteboard/nested-blocks-with-text-area-expected.txt:
+        * editing/pasteboard/nested-blocks-with-text-field-expected.txt:
+        * editing/pasteboard/paste-4039777-fix-expected.checksum:
+        * editing/pasteboard/paste-4039777-fix-expected.png:
+        * editing/pasteboard/paste-4039777-fix-expected.txt:
+        * editing/pasteboard/paste-line-endings-002-expected.txt:
+        * editing/pasteboard/paste-line-endings-004-expected.txt:
+        * editing/pasteboard/paste-line-endings-007-expected.txt:
+        * editing/pasteboard/paste-line-endings-008-expected.txt:
+        * editing/pasteboard/paste-line-endings-009-expected.txt:
+        * editing/pasteboard/paste-match-style-002-expected.txt:
+        * editing/pasteboard/paste-pre-001-expected.txt:
+        * editing/pasteboard/paste-pre-002-expected.txt:
+        * editing/pasteboard/paste-table-001-expected.checksum:
+        * editing/pasteboard/paste-table-001-expected.png:
+        * editing/pasteboard/paste-table-001-expected.txt:
+        * editing/pasteboard/paste-table-003-expected.txt:
+        * editing/pasteboard/paste-text-001-expected.txt:
+        * editing/pasteboard/paste-text-003-expected.txt:
+        * editing/pasteboard/paste-text-007-expected.checksum:
+        * editing/pasteboard/paste-text-007-expected.png:
+        * editing/pasteboard/paste-text-007-expected.txt:
+        * editing/pasteboard/paste-text-008-expected.txt:
+        * editing/pasteboard/paste-text-009-expected.txt:
+        * editing/pasteboard/paste-text-010-expected.txt:
+        * editing/pasteboard/paste-text-011-expected.txt:
+        * editing/pasteboard/paste-text-012-expected.checksum:
+        * editing/pasteboard/paste-text-012-expected.png:
+        * editing/pasteboard/paste-text-012-expected.txt:
+        * editing/pasteboard/paste-text-012.html:
+        * editing/pasteboard/paste-text-013-expected.checksum:
+        * editing/pasteboard/paste-text-013-expected.png:
+        * editing/pasteboard/paste-text-013-expected.txt:
+        * editing/pasteboard/paste-text-015-expected.txt:
+        * editing/pasteboard/paste-text-017-expected.txt:
+        * editing/pasteboard/paste-text-019-expected.checksum:
+        * editing/pasteboard/paste-text-019-expected.png:
+        * editing/pasteboard/paste-text-019-expected.txt:
+        * editing/pasteboard/paste-text-019.html:
+        * editing/pasteboard/paste-text-at-tabspan-001-expected.txt:
+        * editing/pasteboard/paste-text-at-tabspan-002-expected.txt:
+        * editing/pasteboard/paste-text-at-tabspan-003-expected.txt:
+        * editing/pasteboard/pasting-object-expected.txt:
+        * editing/pasteboard/prevent-block-nesting-01-expected.txt:
+        * editing/pasteboard/quirks-mode-br-1-expected.txt:
+        * editing/pasteboard/smart-paste-001-expected.txt:
+        * editing/pasteboard/smart-paste-002-expected.txt:
+        * editing/pasteboard/smart-paste-003-expected.txt:
+        * editing/pasteboard/smart-paste-004-expected.txt:
+        * editing/pasteboard/smart-paste-005-expected.txt:
+        * editing/pasteboard/smart-paste-006-expected.txt:
+        * editing/pasteboard/smart-paste-007-expected.txt:
+        * editing/pasteboard/smart-paste-008-expected.txt:
+        * editing/pasteboard/undoable-fragment-removes-expected.checksum:
+        * editing/pasteboard/undoable-fragment-removes-expected.png:
+        * editing/pasteboard/undoable-fragment-removes-expected.txt:
+        * editing/pasteboard/undoable-fragment-removes.html:
+        * editing/style/smoosh-styles-001-expected.txt:
+        * editing/style/smoosh-styles-002-expected.txt:
+
 2006-08-15  Jonas Witt <jonas.witt@gmail.com>
 
         Reviewed by Darin.
diff --git a/LayoutTests/editing/deleting/paragraph-in-preserveNewline-expected.checksum b/LayoutTests/editing/deleting/paragraph-in-preserveNewline-expected.checksum
new file mode 100644 (file)
index 0000000..b4a02d3
--- /dev/null
@@ -0,0 +1 @@
+a9e250fb78827a800e4495510f819717
\ No newline at end of file
diff --git a/LayoutTests/editing/deleting/paragraph-in-preserveNewline-expected.png b/LayoutTests/editing/deleting/paragraph-in-preserveNewline-expected.png
new file mode 100644 (file)
index 0000000..e8d2e03
Binary files /dev/null and b/LayoutTests/editing/deleting/paragraph-in-preserveNewline-expected.png differ
diff --git a/LayoutTests/editing/deleting/paragraph-in-preserveNewline-expected.txt b/LayoutTests/editing/deleting/paragraph-in-preserveNewline-expected.txt
new file mode 100644 (file)
index 0000000..82d403f
--- /dev/null
@@ -0,0 +1,26 @@
+EDITING DELEGATE: shouldBeginEditingInDOMRange:range from 0 of DIV > BODY > HTML > #document to 1 of DIV > BODY > HTML > #document
+EDITING DELEGATE: webViewDidBeginEditing:WebViewDidBeginEditingNotification
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldDeleteDOMRange:range from 0 of #text > PRE > DIV > BODY > HTML > #document to 3 of #text > PRE > DIV > BODY > HTML > #document
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > PRE > DIV > BODY > HTML > #document to 3 of #text > PRE > DIV > BODY > HTML > #document toDOMRange:range from 0 of PRE > DIV > BODY > HTML > #document to 0 of PRE > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderBlock {HTML} at (0,0) size 800x600
+    RenderBody {BODY} at (8,8) size 784x579
+      RenderBlock {P} at (0,0) size 784x36
+        RenderText {#text} at (0,0) size 743x36
+          text run at (0,0) width 645: "This tests for a bug where deleting a paragraph in preserveNewline text would introduce an extra line. "
+          text run at (645,0) width 98: "You should see"
+          text run at (0,18) width 85: "'\\nbar' below."
+      RenderBlock {DIV} at (0,52) size 784x30
+        RenderBlock {PRE} at (0,0) size 784x30
+          RenderText {#text} at (0,0) size 24x30
+            text run at (0,0) width 0: " "
+            text run at (0,15) width 24: "bar"
+caret: position 0 of child 0 {#text} of child 0 {PRE} of child 2 {DIV} of child 0 {BODY} of child 0 {HTML} of document
diff --git a/LayoutTests/editing/deleting/paragraph-in-preserveNewline.html b/LayoutTests/editing/deleting/paragraph-in-preserveNewline.html
new file mode 100644 (file)
index 0000000..051b874
--- /dev/null
@@ -0,0 +1,14 @@
+<p>This tests for a bug where deleting a paragraph in preserveNewline text would introduce an extra line.  You should see '\nbar' below.</p>
+<div id="test" contenteditable="true"><pre>foo
+bar</pre></div>
+
+<script>
+var sel = window.getSelection();
+var e = document.getElementById("test");
+
+sel.setPosition(e, 0);
+sel.modify("extend", "forward", "character");
+sel.modify("extend", "forward", "character");
+sel.modify("extend", "forward", "character");
+document.execCommand("Delete");
+</script>
\ No newline at end of file
index 0886ab0..b17f383 100644 (file)
@@ -1 +1 @@
-301d0c168dc36b1050cc875ba9c2a6ba
\ No newline at end of file
+b2863aa2921e4a94798516c0dbb926a4
\ No newline at end of file
index 3134263..590b4cb 100644 (file)
Binary files a/LayoutTests/editing/execCommand/insertHTML-expected.png and b/LayoutTests/editing/execCommand/insertHTML-expected.png differ
index 64aebd2..fe348d7 100644 (file)
@@ -1,13 +1,13 @@
-EDITING DELEGATE: shouldBeginEditingInDOMRange:range from 0 of DIV > BODY > HTML > #document to 1 of DIV > BODY > HTML > #document
+EDITING DELEGATE: shouldBeginEditingInDOMRange:range from 0 of DIV > BODY > HTML > #document to 4 of DIV > BODY > HTML > #document
 EDITING DELEGATE: webViewDidBeginEditing:WebViewDidBeginEditingNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of P > DIV > BODY > HTML > #document to 0 of P > DIV > BODY > HTML > #document toDOMRange:range from 0 of #text > P > DIV > BODY > HTML > #document to 1 of #text > P > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of DIV > BODY > HTML > #document to 0 of DIV > BODY > HTML > #document toDOMRange:range from 0 of #text > DIV > BODY > HTML > #document to 1 of #text > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
-EDITING DELEGATE: shouldDeleteDOMRange:range from 0 of #text > P > DIV > BODY > HTML > #document to 1 of #text > P > DIV > BODY > HTML > #document
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of P > DIV > BODY > HTML > #document to 0 of P > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldDeleteDOMRange:range from 0 of #text > DIV > BODY > HTML > #document to 1 of #text > DIV > BODY > HTML > #document
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of DIV > BODY > HTML > #document to 0 of DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 1 of #text > P > DIV > BODY > HTML > #document to 1 of #text > P > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 1 of #text > DIV > BODY > HTML > #document to 1 of #text > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 layer at (0,0) size 800x600
@@ -22,26 +22,25 @@ layer at (0,0) size 800x600
           text run at (0,18) width 291: "execCommand(insertHTML, d.innerHTML). "
           text run at (291,18) width 364: "d.innerHTML should be what it was when the test began."
       RenderBlock {DIV} at (0,52) size 784x32
-        RenderBlock {P} at (0,0) size 784x32
-          RenderText {#text} at (0,14) size 31x18
-            text run at (0,14) width 31: "hello"
-          RenderTable {TABLE} at (31,0) size 32x28 [border: (1px outset #808080)]
-            RenderTableSection {TBODY} at (1,1) size 30x26
-              RenderTableRow {TR} at (0,2) size 30x22
-                RenderTableCell {TD} at (2,2) size 12x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
-                  RenderText {#text} at (2,2) size 8x18
-                    text run at (2,2) width 8: "1"
-                RenderTableCell {TD} at (16,2) size 12x22 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
-                  RenderText {#text} at (2,2) size 8x18
-                    text run at (2,2) width 8: "2"
-          RenderInline {B} at (0,0) size 40x18
-            RenderText {#text} at (63,14) size 40x18
-              text run at (63,14) width 40: "world"
-          RenderText {#text} at (103,14) size 5x18
-            text run at (103,14) width 5: "!"
+        RenderText {#text} at (0,14) size 31x18
+          text run at (0,14) width 31: "hello"
+        RenderTable {TABLE} at (31,0) size 32x28 [border: (1px outset #808080)]
+          RenderTableSection {TBODY} at (1,1) size 30x26
+            RenderTableRow {TR} at (0,2) size 30x22
+              RenderTableCell {TD} at (2,2) size 12x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+                RenderText {#text} at (2,2) size 8x18
+                  text run at (2,2) width 8: "1"
+              RenderTableCell {TD} at (16,2) size 12x22 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+                RenderText {#text} at (2,2) size 8x18
+                  text run at (2,2) width 8: "2"
+        RenderInline {B} at (0,0) size 40x18
+          RenderText {#text} at (63,14) size 40x18
+            text run at (63,14) width 40: "world"
+        RenderText {#text} at (103,14) size 5x18
+          text run at (103,14) width 5: "!"
       RenderBlock {UL} at (0,100) size 784x18
         RenderListItem {LI} at (40,0) size 744x18
           RenderListMarker at (-17,0) size 7x18
           RenderText {#text} at (0,0) size 50x18
             text run at (0,0) width 50: "Success"
-caret: position 1 of child 3 {#text} of child 0 {P} of child 3 {DIV} of child 1 {BODY} of child 0 {HTML} of document
+caret: position 1 of child 3 {#text} of child 3 {DIV} of child 1 {BODY} of child 0 {HTML} of document
index 275586a..40c02fa 100644 (file)
@@ -30,7 +30,7 @@ function editingTest() {
 
 <body>
 <p>This is a test of execCommand(insertHTML, ...).  It selects the contents of an editable div, d, deletes it, then calls execCommand(insertHTML, d.innerHTML).  d.innerHTML should be what it was when the test began.</p>
-<div id="test" contenteditable="true"><p>hello<table style="display:inline" border=1><tr><td>1</td><td>2</td></tr></table><b>world</b>!</p></div>
+<div id="test" contenteditable="true">hello<table style="display:inline" border=1><tr><td>1</td><td>2</td></tr></table><b>world</b>!</div>
 <ul id="console"></ul>
 <script>
 runEditingTest();
index 33e4c13..c6ffc50 100644 (file)
Binary files a/LayoutTests/editing/execCommand/insertHorizontalRule-expected.png and b/LayoutTests/editing/execCommand/insertHorizontalRule-expected.png differ
index 08c6a66..725a7e1 100644 (file)
@@ -4,7 +4,7 @@ EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotificatio
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 2 of DIV > BODY > HTML > #document to 2 of DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 3 of #text > DIV > BODY > HTML > #document to 3 of #text > DIV > BODY > HTML > #document toDOMRange:range from 2 of DIV > BODY > HTML > #document to 2 of DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 EDITING DELEGATE: shouldEndEditingInDOMRange:range from 0 of DIV > BODY > HTML > #document to 3 of DIV > BODY > HTML > #document
@@ -15,7 +15,7 @@ EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotificatio
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 2 of DIV > BODY > HTML > #document to 2 of DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 3 of #text > DIV > BODY > HTML > #document to 3 of #text > DIV > BODY > HTML > #document toDOMRange:range from 2 of DIV > BODY > HTML > #document to 2 of DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 layer at (0,0) size 800x600
@@ -34,16 +34,14 @@ layer at (0,0) size 800x600
           RenderText {#text} at (0,0) size 21x18
             text run at (0,0) width 21: "foo"
         RenderBlock {HR} at (0,26) size 784x2 [border: (1px inset #000000)]
-        RenderBlock {DIV} at (0,36) size 784x18
+        RenderBlock (anonymous) at (0,36) size 784x18
           RenderText {#text} at (0,0) size 20x18
             text run at (0,0) width 20: "bar"
       RenderBlock {P} at (0,138) size 784x18
         RenderText {#text} at (0,0) size 634x18
           text run at (0,0) width 634: "This test inserts an hr with id=\"hr\" between 'foo' and 'bar', fetches the hr using its id, then removes it."
-      RenderBlock {DIV} at (0,172) size 784x36
-        RenderBlock (anonymous) at (0,0) size 784x18
-          RenderText {#text} at (0,0) size 21x18
-            text run at (0,0) width 21: "foo"
-        RenderBlock {DIV} at (0,18) size 784x18
-          RenderText {#text} at (0,0) size 20x18
-            text run at (0,0) width 20: "bar"
+      RenderBlock {DIV} at (0,172) size 784x18
+        RenderText {#text} at (0,0) size 21x18
+          text run at (0,0) width 21: "foo"
+        RenderText {#text} at (21,0) size 20x18
+          text run at (21,0) width 20: "bar"
index 52275ff..985ba5b 100644 (file)
@@ -1 +1 @@
-0075484d17da3479486d3c3578f4841c
\ No newline at end of file
+3a6e3e72156d320d9828d34dcf8dd86b
\ No newline at end of file
index 36c3044..94cad33 100644 (file)
Binary files a/LayoutTests/editing/inserting/insert-3786362-fix-expected.png and b/LayoutTests/editing/inserting/insert-3786362-fix-expected.png differ
index 2f12dd0..df2df35 100644 (file)
@@ -1,12 +1,12 @@
-EDITING DELEGATE: shouldBeginEditingInDOMRange:range from 0 of BODY > HTML > #document to 6 of BODY > HTML > #document
+EDITING DELEGATE: shouldBeginEditingInDOMRange:range from 0 of DIV > BODY > HTML > #document to 5 of DIV > BODY > HTML > #document
 EDITING DELEGATE: webViewDidBeginEditing:WebViewDidBeginEditingNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
-EDITING DELEGATE: shouldInsertNode:#document-fragment replacingDOMRange:range from 0 of DIV > BODY > HTML > #document to 0 of DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of DIV > BODY > HTML > #document to 0 of DIV > BODY > HTML > #document toDOMRange:range from 3 of DIV > BODY > HTML > #document to 3 of DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldInsertNode:#document-fragment replacingDOMRange:range from 0 of DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > BODY > HTML > #document toDOMRange:range from 2 of DIV > DIV > BODY > HTML > #document to 2 of DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 layer at (0,0) size 800x600
@@ -14,17 +14,25 @@ layer at (0,0) size 800x600
 layer at (0,0) size 800x600
   RenderBlock {HTML} at (0,0) size 800x600
     RenderBody {BODY} at (8,8) size 784x584
-      RenderBlock {DIV} at (0,0) size 784x88 [border: (2px solid #FF0000)]
-        RenderText {#text} at (2,2) size 11x28
-          text run at (2,2) width 11: "a"
-        RenderBR {BR} at (13,24) size 0x0
-        RenderBR {BR} at (2,30) size 0x28
-        RenderText {#text} at (2,58) size 12x28
-          text run at (2,58) width 12: "b"
-      RenderBlock {DIV} at (0,88) size 784x88 [border: (2px solid #FF0000)]
-        RenderText {#text} at (2,2) size 11x28
-          text run at (2,2) width 11: "a"
-        RenderBR {BR} at (13,24) size 0x0
-        RenderBR {BR} at (2,30) size 0x28
-        RenderBR {BR} at (2,58) size 0x28
-caret: position 0 of child 3 {BR} of child 3 {DIV} of child 1 {BODY} of child 0 {HTML} of document
+      RenderBlock {P} at (0,0) size 784x36
+        RenderInline {B} at (0,0) size 171x18
+          RenderText {#text} at (0,0) size 171x18
+            text run at (0,0) width 171: "This demonstrates a bug:"
+        RenderText {#text} at (171,0) size 761x36
+          text run at (171,0) width 590: " copying an empty line that's implemented with a br doesn't put an interchange newline on the"
+          text run at (0,18) width 76: "pasteboard. "
+          text run at (76,18) width 278: "There should be two blank lines after the 'a'."
+      RenderBlock {DIV} at (0,52) size 784x148
+        RenderBlock {DIV} at (0,0) size 784x88 [border: (2px solid #FF0000)]
+          RenderText {#text} at (2,2) size 11x28
+            text run at (2,2) width 11: "a"
+          RenderBR {BR} at (13,24) size 0x0
+          RenderBR {BR} at (2,30) size 0x28
+          RenderText {#text} at (2,58) size 12x28
+            text run at (2,58) width 12: "b"
+        RenderBlock {DIV} at (0,88) size 784x60 [border: (2px solid #FF0000)]
+          RenderText {#text} at (2,2) size 11x28
+            text run at (2,2) width 11: "a"
+          RenderBR {BR} at (13,24) size 0x0
+          RenderBR {BR} at (2,30) size 0x28
+caret: position 0 of child 2 {BR} of child 3 {DIV} of child 3 {DIV} of child 1 {BODY} of child 0 {HTML} of document
index 3629965..34a638c 100644 (file)
@@ -27,9 +27,12 @@ function editingTest() {
 
 <title>Editing Test</title> 
 </head> 
-<body contenteditable id="root">
-<div class="editing" id="test">a<br><br>b</div>
+<body>
+<p><b>This demonstrates a bug:</b> copying an empty line that's implemented with a br doesn't put an interchange newline on the pasteboard.  There should be two blank lines after the 'a'.</p>
+<div contenteditable="true" id="test">
+<div class="editing">a<br><br>b</div>
 <div class="editing"></div>
+</div>
 
 <script>
 runEditingTest();
index e1ee820..4ef42b8 100644 (file)
@@ -32,6 +32,7 @@ layer at (0,0) size 800x600
             text run at (0,0) width 22: "baz"
           RenderText {#text} at (22,0) size 21x18
             text run at (22,0) width 21: "foo"
+      RenderBlock (anonymous) at (0,86) size 784x0
       RenderBlock {BLOCKQUOTE} at (40,102) size 704x18
         RenderText {#text} at (0,0) size 20x18
           text run at (0,0) width 20: "bar"
index ac24ff7..94268f2 100644 (file)
@@ -1 +1 @@
-a5b89f020b9439f20184cf7385b6bfbc
\ No newline at end of file
+0cc0b7c6144c25f3a904853e9c1097a0
\ No newline at end of file
index 7363902..7b0448f 100644 (file)
Binary files a/LayoutTests/editing/pasteboard/3976872-expected.png and b/LayoutTests/editing/pasteboard/3976872-expected.png differ
index 88a4f02..b25afa0 100644 (file)
@@ -10,7 +10,7 @@ EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of DIV > DIV > BODY
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: shouldInsertText:this text should end up bold replacingDOMRange:range from 0 of DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 28 of #text > B > DIV > DIV > BODY > HTML > #document to 28 of #text > B > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 28 of #text > DIV > B > DIV > DIV > BODY > HTML > #document to 28 of #text > DIV > B > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 layer at (0,0) size 800x600
@@ -28,11 +28,16 @@ layer at (0,0) size 800x600
       RenderBlock {HR} at (0,86) size 784x2 [border: (1px inset #000000)]
       RenderBlock {DIV} at (0,96) size 784x40
         RenderBlock {DIV} at (0,0) size 784x20 [border: (1px solid #FF0000)]
-          RenderInline {B} at (0,0) size 187x18
-            RenderText {#text} at (1,1) size 187x18
-              text run at (1,1) width 187: "this text should end up bold"
+          RenderBlock (anonymous) at (1,1) size 782x0
+            RenderInline {B} at (0,0) size 0x0
+          RenderBlock (anonymous) at (1,1) size 782x18
+            RenderBlock {DIV} at (0,0) size 782x18
+              RenderText {#text} at (0,0) size 187x18
+                text run at (0,0) width 187: "this text should end up bold"
+          RenderBlock (anonymous) at (1,19) size 782x0
+            RenderInline {B} at (0,0) size 0x0
         RenderBlock {DIV} at (0,20) size 784x20 [border: (1px solid #FF0000)]
           RenderInline {B} at (0,0) size 187x18
             RenderText {#text} at (1,1) size 187x18
               text run at (1,1) width 187: "this text should end up bold"
-caret: position 28 of child 0 {#text} of child 0 {B} of child 1 {DIV} of child 7 {DIV} of child 1 {BODY} of child 0 {HTML} of document
+caret: position 28 of child 0 {#text} of child 0 {DIV} of child 0 {B} of child 1 {DIV} of child 7 {DIV} of child 1 {BODY} of child 0 {HTML} of document
index f72bc32..0f54673 100644 (file)
@@ -1 +1 @@
-9e19e3ceffd065cf7a3805ba60947440
\ No newline at end of file
+10e9e1168c6fff3178565034d7b28581
\ No newline at end of file
index 492001e..9c62a4e 100644 (file)
Binary files a/LayoutTests/editing/pasteboard/4076267-3-expected.png and b/LayoutTests/editing/pasteboard/4076267-3-expected.png differ
index 4764f52..18e4c0c 100644 (file)
@@ -1,23 +1,23 @@
-EDITING DELEGATE: shouldBeginEditingInDOMRange:range from 0 of DIV > BODY > HTML > #document to 3 of DIV > BODY > HTML > #document
+EDITING DELEGATE: shouldBeginEditingInDOMRange:range from 0 of DIV > BODY > HTML > #document to 1 of DIV > BODY > HTML > #document
 EDITING DELEGATE: webViewDidBeginEditing:WebViewDidBeginEditingNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > BODY > HTML > #document toDOMRange:range from 1 of #text > DIV > DIV > BODY > HTML > #document to 1 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 1 of #text > DIV > BODY > HTML > #document to 1 of #text > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 1 of #text > DIV > DIV > BODY > HTML > #document to 1 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 2 of #text > DIV > DIV > BODY > HTML > #document to 2 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 1 of #text > DIV > BODY > HTML > #document to 1 of #text > DIV > BODY > HTML > #document toDOMRange:range from 2 of #text > DIV > BODY > HTML > #document to 2 of #text > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 2 of #text > DIV > DIV > BODY > HTML > #document to 2 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 3 of #text > DIV > DIV > BODY > HTML > #document to 3 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 2 of #text > DIV > BODY > HTML > #document to 2 of #text > DIV > BODY > HTML > #document toDOMRange:range from 3 of #text > DIV > BODY > HTML > #document to 3 of #text > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
-EDITING DELEGATE: shouldDeleteDOMRange:range from 0 of #text > DIV > DIV > BODY > HTML > #document to 3 of #text > DIV > DIV > BODY > HTML > #document
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldDeleteDOMRange:range from 0 of #text > DIV > BODY > HTML > #document to 3 of #text > DIV > BODY > HTML > #document
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of DIV > BODY > HTML > #document to 0 of DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldInsertText:x x replacingDOMRange:range from 0 of DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
+EDITING DELEGATE: shouldInsertText:x x replacingDOMRange:range from 0 of DIV > BODY > HTML > #document to 0 of DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
 EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 3 of #text > DIV > DIV > BODY > HTML > #document to 3 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
@@ -45,25 +45,25 @@ EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 EDITING DELEGATE: shouldInsertText:x  x replacingDOMRange:range from 0 of DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 4 of #text > DIV > DIV > BODY > HTML > #document to 4 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 4 of #text > DIV > DIV > DIV > BODY > HTML > #document to 4 of #text > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 4 of #text > DIV > DIV > BODY > HTML > #document to 4 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 0 of DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 4 of #text > DIV > DIV > DIV > BODY > HTML > #document to 4 of #text > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 0 of DIV > DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 1 of #text > DIV > DIV > BODY > HTML > #document to 1 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 1 of #text > DIV > DIV > DIV > BODY > HTML > #document to 1 of #text > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 1 of #text > DIV > DIV > BODY > HTML > #document to 1 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 2 of #text > DIV > DIV > BODY > HTML > #document to 2 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 1 of #text > DIV > DIV > DIV > BODY > HTML > #document to 1 of #text > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 2 of #text > DIV > DIV > DIV > BODY > HTML > #document to 2 of #text > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 2 of #text > DIV > DIV > BODY > HTML > #document to 2 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 3 of #text > DIV > DIV > BODY > HTML > #document to 3 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 2 of #text > DIV > DIV > DIV > BODY > HTML > #document to 2 of #text > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 3 of #text > DIV > DIV > DIV > BODY > HTML > #document to 3 of #text > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 3 of #text > DIV > DIV > BODY > HTML > #document to 3 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 4 of #text > DIV > DIV > BODY > HTML > #document to 4 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 3 of #text > DIV > DIV > DIV > BODY > HTML > #document to 3 of #text > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 4 of #text > DIV > DIV > DIV > BODY > HTML > #document to 4 of #text > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 4 of #text > DIV > DIV > BODY > HTML > #document to 4 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 5 of #text > DIV > DIV > BODY > HTML > #document to 5 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 4 of #text > DIV > DIV > DIV > BODY > HTML > #document to 4 of #text > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 5 of #text > DIV > DIV > DIV > BODY > HTML > #document to 5 of #text > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
@@ -71,33 +71,33 @@ EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotificatio
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
-EDITING DELEGATE: shouldDeleteDOMRange:range from 0 of #text > DIV > DIV > BODY > HTML > #document to 5 of #text > DIV > DIV > BODY > HTML > #document
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldDeleteDOMRange:range from 0 of #text > DIV > DIV > DIV > BODY > HTML > #document to 5 of #text > DIV > DIV > DIV > BODY > HTML > #document
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of DIV > DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldInsertText:x   x replacingDOMRange:range from 0 of DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 5 of #text > DIV > DIV > BODY > HTML > #document to 5 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldInsertText:x   x replacingDOMRange:range from 0 of DIV > DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 5 of #text > DIV > DIV > DIV > DIV > BODY > HTML > #document to 5 of #text > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 5 of #text > DIV > DIV > BODY > HTML > #document to 5 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 0 of DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 5 of #text > DIV > DIV > DIV > DIV > BODY > HTML > #document to 5 of #text > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 0 of DIV > DIV > DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 1 of #text > DIV > DIV > BODY > HTML > #document to 1 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 1 of #text > DIV > DIV > DIV > DIV > BODY > HTML > #document to 1 of #text > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 1 of #text > DIV > DIV > BODY > HTML > #document to 1 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 2 of #text > DIV > DIV > BODY > HTML > #document to 2 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 1 of #text > DIV > DIV > DIV > DIV > BODY > HTML > #document to 1 of #text > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 2 of #text > DIV > DIV > DIV > DIV > BODY > HTML > #document to 2 of #text > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 2 of #text > DIV > DIV > BODY > HTML > #document to 2 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 3 of #text > DIV > DIV > BODY > HTML > #document to 3 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 2 of #text > DIV > DIV > DIV > DIV > BODY > HTML > #document to 2 of #text > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 3 of #text > DIV > DIV > DIV > DIV > BODY > HTML > #document to 3 of #text > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 3 of #text > DIV > DIV > BODY > HTML > #document to 3 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 4 of #text > DIV > DIV > BODY > HTML > #document to 4 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 3 of #text > DIV > DIV > DIV > DIV > BODY > HTML > #document to 3 of #text > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 4 of #text > DIV > DIV > DIV > DIV > BODY > HTML > #document to 4 of #text > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 4 of #text > DIV > DIV > BODY > HTML > #document to 4 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 5 of #text > DIV > DIV > BODY > HTML > #document to 5 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 4 of #text > DIV > DIV > DIV > DIV > BODY > HTML > #document to 4 of #text > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 5 of #text > DIV > DIV > DIV > DIV > BODY > HTML > #document to 5 of #text > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 5 of #text > DIV > DIV > BODY > HTML > #document to 5 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 6 of #text > DIV > DIV > BODY > HTML > #document to 6 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 5 of #text > DIV > DIV > DIV > DIV > BODY > HTML > #document to 5 of #text > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 6 of #text > DIV > DIV > DIV > DIV > BODY > HTML > #document to 6 of #text > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
@@ -106,36 +106,36 @@ EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotificatio
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
-EDITING DELEGATE: shouldDeleteDOMRange:range from 0 of #text > DIV > DIV > BODY > HTML > #document to 6 of #text > DIV > DIV > BODY > HTML > #document
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldDeleteDOMRange:range from 0 of #text > DIV > DIV > DIV > DIV > BODY > HTML > #document to 6 of #text > DIV > DIV > DIV > DIV > BODY > HTML > #document
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of DIV > DIV > DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldInsertText:x    x replacingDOMRange:range from 0 of DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 6 of #text > DIV > DIV > BODY > HTML > #document to 6 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldInsertText:x    x replacingDOMRange:range from 0 of DIV > DIV > DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > DIV > DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 6 of #text > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 6 of #text > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 6 of #text > DIV > DIV > BODY > HTML > #document to 6 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 0 of DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 6 of #text > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 6 of #text > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 0 of DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 1 of #text > DIV > DIV > BODY > HTML > #document to 1 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 1 of #text > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 1 of #text > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 1 of #text > DIV > DIV > BODY > HTML > #document to 1 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 2 of #text > DIV > DIV > BODY > HTML > #document to 2 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 1 of #text > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 1 of #text > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 2 of #text > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 2 of #text > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 2 of #text > DIV > DIV > BODY > HTML > #document to 2 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 3 of #text > DIV > DIV > BODY > HTML > #document to 3 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 2 of #text > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 2 of #text > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 3 of #text > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 3 of #text > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 3 of #text > DIV > DIV > BODY > HTML > #document to 3 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 4 of #text > DIV > DIV > BODY > HTML > #document to 4 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 3 of #text > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 3 of #text > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 4 of #text > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 4 of #text > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 4 of #text > DIV > DIV > BODY > HTML > #document to 4 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 5 of #text > DIV > DIV > BODY > HTML > #document to 5 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 4 of #text > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 4 of #text > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 5 of #text > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 5 of #text > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 5 of #text > DIV > DIV > BODY > HTML > #document to 5 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 6 of #text > DIV > DIV > BODY > HTML > #document to 6 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 5 of #text > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 5 of #text > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 6 of #text > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 6 of #text > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 6 of #text > DIV > DIV > BODY > HTML > #document to 6 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 7 of #text > DIV > DIV > BODY > HTML > #document to 7 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 6 of #text > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 6 of #text > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 7 of #text > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 7 of #text > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
@@ -145,39 +145,39 @@ EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotificatio
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
-EDITING DELEGATE: shouldDeleteDOMRange:range from 0 of #text > DIV > DIV > BODY > HTML > #document to 7 of #text > DIV > DIV > BODY > HTML > #document
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldDeleteDOMRange:range from 0 of #text > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 7 of #text > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldInsertText:x     x replacingDOMRange:range from 0 of DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 7 of #text > DIV > DIV > BODY > HTML > #document to 7 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldInsertText:x     x replacingDOMRange:range from 0 of DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 7 of #text > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 7 of #text > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 7 of #text > DIV > DIV > BODY > HTML > #document to 7 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 0 of DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 7 of #text > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 7 of #text > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 0 of DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 1 of #text > DIV > DIV > BODY > HTML > #document to 1 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 1 of #text > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 1 of #text > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 1 of #text > DIV > DIV > BODY > HTML > #document to 1 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 2 of #text > DIV > DIV > BODY > HTML > #document to 2 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 1 of #text > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 1 of #text > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 2 of #text > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 2 of #text > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 2 of #text > DIV > DIV > BODY > HTML > #document to 2 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 3 of #text > DIV > DIV > BODY > HTML > #document to 3 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 2 of #text > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 2 of #text > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 3 of #text > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 3 of #text > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 3 of #text > DIV > DIV > BODY > HTML > #document to 3 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 4 of #text > DIV > DIV > BODY > HTML > #document to 4 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 3 of #text > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 3 of #text > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 4 of #text > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 4 of #text > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 4 of #text > DIV > DIV > BODY > HTML > #document to 4 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 5 of #text > DIV > DIV > BODY > HTML > #document to 5 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 4 of #text > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 4 of #text > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 5 of #text > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 5 of #text > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 5 of #text > DIV > DIV > BODY > HTML > #document to 5 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 6 of #text > DIV > DIV > BODY > HTML > #document to 6 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 5 of #text > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 5 of #text > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 6 of #text > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 6 of #text > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 6 of #text > DIV > DIV > BODY > HTML > #document to 6 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 7 of #text > DIV > DIV > BODY > HTML > #document to 7 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 6 of #text > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 6 of #text > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 7 of #text > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 7 of #text > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 7 of #text > DIV > DIV > BODY > HTML > #document to 7 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 8 of #text > DIV > DIV > BODY > HTML > #document to 8 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 7 of #text > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 7 of #text > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 8 of #text > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 8 of #text > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
@@ -188,42 +188,42 @@ EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotificatio
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
-EDITING DELEGATE: shouldDeleteDOMRange:range from 0 of #text > DIV > DIV > BODY > HTML > #document to 8 of #text > DIV > DIV > BODY > HTML > #document
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldDeleteDOMRange:range from 0 of #text > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 8 of #text > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldInsertText:x      x replacingDOMRange:range from 0 of DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 8 of #text > DIV > DIV > BODY > HTML > #document to 8 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldInsertText:x      x replacingDOMRange:range from 0 of DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 8 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 8 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 8 of #text > DIV > DIV > BODY > HTML > #document to 8 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 0 of DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 8 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 8 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 0 of DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 1 of #text > DIV > DIV > BODY > HTML > #document to 1 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 1 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 1 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 1 of #text > DIV > DIV > BODY > HTML > #document to 1 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 2 of #text > DIV > DIV > BODY > HTML > #document to 2 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 1 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 1 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 2 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 2 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 2 of #text > DIV > DIV > BODY > HTML > #document to 2 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 3 of #text > DIV > DIV > BODY > HTML > #document to 3 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 2 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 2 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 3 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 3 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 3 of #text > DIV > DIV > BODY > HTML > #document to 3 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 4 of #text > DIV > DIV > BODY > HTML > #document to 4 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 3 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 3 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 4 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 4 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 4 of #text > DIV > DIV > BODY > HTML > #document to 4 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 5 of #text > DIV > DIV > BODY > HTML > #document to 5 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 4 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 4 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 5 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 5 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 5 of #text > DIV > DIV > BODY > HTML > #document to 5 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 6 of #text > DIV > DIV > BODY > HTML > #document to 6 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 5 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 5 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 6 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 6 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 6 of #text > DIV > DIV > BODY > HTML > #document to 6 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 7 of #text > DIV > DIV > BODY > HTML > #document to 7 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 6 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 6 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 7 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 7 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 7 of #text > DIV > DIV > BODY > HTML > #document to 7 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 8 of #text > DIV > DIV > BODY > HTML > #document to 8 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 7 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 7 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 8 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 8 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 8 of #text > DIV > DIV > BODY > HTML > #document to 8 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 9 of #text > DIV > DIV > BODY > HTML > #document to 9 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 8 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 8 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 9 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 9 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
@@ -235,45 +235,45 @@ EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotificatio
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
-EDITING DELEGATE: shouldDeleteDOMRange:range from 0 of #text > DIV > DIV > BODY > HTML > #document to 9 of #text > DIV > DIV > BODY > HTML > #document
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldDeleteDOMRange:range from 0 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 9 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldInsertText:x       x replacingDOMRange:range from 0 of DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 9 of #text > DIV > DIV > BODY > HTML > #document to 9 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldInsertText:x       x replacingDOMRange:range from 0 of DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 9 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 9 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 9 of #text > DIV > DIV > BODY > HTML > #document to 9 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 0 of DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 9 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 9 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 0 of DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 1 of #text > DIV > DIV > BODY > HTML > #document to 1 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 1 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 1 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 1 of #text > DIV > DIV > BODY > HTML > #document to 1 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 2 of #text > DIV > DIV > BODY > HTML > #document to 2 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 1 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 1 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 2 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 2 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 2 of #text > DIV > DIV > BODY > HTML > #document to 2 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 3 of #text > DIV > DIV > BODY > HTML > #document to 3 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 2 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 2 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 3 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 3 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 3 of #text > DIV > DIV > BODY > HTML > #document to 3 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 4 of #text > DIV > DIV > BODY > HTML > #document to 4 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 3 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 3 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 4 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 4 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 4 of #text > DIV > DIV > BODY > HTML > #document to 4 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 5 of #text > DIV > DIV > BODY > HTML > #document to 5 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 4 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 4 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 5 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 5 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 5 of #text > DIV > DIV > BODY > HTML > #document to 5 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 6 of #text > DIV > DIV > BODY > HTML > #document to 6 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 5 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 5 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 6 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 6 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 6 of #text > DIV > DIV > BODY > HTML > #document to 6 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 7 of #text > DIV > DIV > BODY > HTML > #document to 7 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 6 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 6 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 7 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 7 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 7 of #text > DIV > DIV > BODY > HTML > #document to 7 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 8 of #text > DIV > DIV > BODY > HTML > #document to 8 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 7 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 7 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 8 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 8 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 8 of #text > DIV > DIV > BODY > HTML > #document to 8 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 9 of #text > DIV > DIV > BODY > HTML > #document to 9 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 8 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 8 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 9 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 9 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 9 of #text > DIV > DIV > BODY > HTML > #document to 9 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 10 of #text > DIV > DIV > BODY > HTML > #document to 10 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 9 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 9 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 10 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 10 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
@@ -286,48 +286,48 @@ EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotificatio
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
-EDITING DELEGATE: shouldDeleteDOMRange:range from 0 of #text > DIV > DIV > BODY > HTML > #document to 10 of #text > DIV > DIV > BODY > HTML > #document
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldDeleteDOMRange:range from 0 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 10 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldInsertText:x        x replacingDOMRange:range from 0 of DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 10 of #text > DIV > DIV > BODY > HTML > #document to 10 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldInsertText:x        x replacingDOMRange:range from 0 of DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 10 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 10 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 10 of #text > DIV > DIV > BODY > HTML > #document to 10 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 0 of DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 10 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 10 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 0 of DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 1 of #text > DIV > DIV > BODY > HTML > #document to 1 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 1 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 1 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 1 of #text > DIV > DIV > BODY > HTML > #document to 1 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 2 of #text > DIV > DIV > BODY > HTML > #document to 2 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 1 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 1 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 2 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 2 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 2 of #text > DIV > DIV > BODY > HTML > #document to 2 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 3 of #text > DIV > DIV > BODY > HTML > #document to 3 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 2 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 2 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 3 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 3 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 3 of #text > DIV > DIV > BODY > HTML > #document to 3 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 4 of #text > DIV > DIV > BODY > HTML > #document to 4 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 3 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 3 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 4 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 4 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 4 of #text > DIV > DIV > BODY > HTML > #document to 4 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 5 of #text > DIV > DIV > BODY > HTML > #document to 5 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 4 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 4 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 5 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 5 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 5 of #text > DIV > DIV > BODY > HTML > #document to 5 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 6 of #text > DIV > DIV > BODY > HTML > #document to 6 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 5 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 5 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 6 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 6 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 6 of #text > DIV > DIV > BODY > HTML > #document to 6 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 7 of #text > DIV > DIV > BODY > HTML > #document to 7 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 6 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 6 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 7 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 7 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 7 of #text > DIV > DIV > BODY > HTML > #document to 7 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 8 of #text > DIV > DIV > BODY > HTML > #document to 8 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 7 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 7 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 8 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 8 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 8 of #text > DIV > DIV > BODY > HTML > #document to 8 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 9 of #text > DIV > DIV > BODY > HTML > #document to 9 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 8 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 8 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 9 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 9 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 9 of #text > DIV > DIV > BODY > HTML > #document to 9 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 10 of #text > DIV > DIV > BODY > HTML > #document to 10 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 9 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 9 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 10 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 10 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 10 of #text > DIV > DIV > BODY > HTML > #document to 10 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 11 of #text > DIV > DIV > BODY > HTML > #document to 11 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 10 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 10 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 11 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 11 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
@@ -341,51 +341,51 @@ EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotificatio
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
-EDITING DELEGATE: shouldDeleteDOMRange:range from 0 of #text > DIV > DIV > BODY > HTML > #document to 11 of #text > DIV > DIV > BODY > HTML > #document
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldDeleteDOMRange:range from 0 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 11 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldInsertText:x         x replacingDOMRange:range from 0 of DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 11 of #text > DIV > DIV > BODY > HTML > #document to 11 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldInsertText:x         x replacingDOMRange:range from 0 of DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 11 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 11 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 11 of #text > DIV > DIV > BODY > HTML > #document to 11 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 0 of DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 11 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 11 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 0 of DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 1 of #text > DIV > DIV > BODY > HTML > #document to 1 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 1 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 1 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 1 of #text > DIV > DIV > BODY > HTML > #document to 1 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 2 of #text > DIV > DIV > BODY > HTML > #document to 2 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 1 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 1 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 2 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 2 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 2 of #text > DIV > DIV > BODY > HTML > #document to 2 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 3 of #text > DIV > DIV > BODY > HTML > #document to 3 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 2 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 2 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 3 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 3 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 3 of #text > DIV > DIV > BODY > HTML > #document to 3 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 4 of #text > DIV > DIV > BODY > HTML > #document to 4 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 3 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 3 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 4 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 4 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 4 of #text > DIV > DIV > BODY > HTML > #document to 4 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 5 of #text > DIV > DIV > BODY > HTML > #document to 5 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 4 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 4 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 5 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 5 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 5 of #text > DIV > DIV > BODY > HTML > #document to 5 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 6 of #text > DIV > DIV > BODY > HTML > #document to 6 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 5 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 5 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 6 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 6 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 6 of #text > DIV > DIV > BODY > HTML > #document to 6 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 7 of #text > DIV > DIV > BODY > HTML > #document to 7 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 6 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 6 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 7 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 7 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 7 of #text > DIV > DIV > BODY > HTML > #document to 7 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 8 of #text > DIV > DIV > BODY > HTML > #document to 8 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 7 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 7 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 8 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 8 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 8 of #text > DIV > DIV > BODY > HTML > #document to 8 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 9 of #text > DIV > DIV > BODY > HTML > #document to 9 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 8 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 8 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 9 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 9 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 9 of #text > DIV > DIV > BODY > HTML > #document to 9 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 10 of #text > DIV > DIV > BODY > HTML > #document to 10 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 9 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 9 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 10 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 10 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 10 of #text > DIV > DIV > BODY > HTML > #document to 10 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 11 of #text > DIV > DIV > BODY > HTML > #document to 11 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 10 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 10 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 11 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 11 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 11 of #text > DIV > DIV > BODY > HTML > #document to 11 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 12 of #text > DIV > DIV > BODY > HTML > #document to 12 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 11 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 11 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 12 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 12 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
@@ -400,15 +400,15 @@ EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotificatio
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
-EDITING DELEGATE: shouldDeleteDOMRange:range from 0 of #text > DIV > DIV > BODY > HTML > #document to 12 of #text > DIV > DIV > BODY > HTML > #document
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldDeleteDOMRange:range from 0 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 12 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldInsertText:x          x replacingDOMRange:range from 0 of DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 12 of #text > DIV > DIV > BODY > HTML > #document to 12 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldInsertText:x          x replacingDOMRange:range from 0 of DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 12 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 12 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 12 of #text > DIV > DIV > BODY > HTML > #document to 12 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 0 of DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 12 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 12 of #text > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 0 of DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 layer at (0,0) size 800x600
@@ -420,37 +420,56 @@ layer at (0,0) size 800x600
         RenderText {#text} at (0,0) size 333x18
           text run at (0,0) width 333: "This tests to see if spaces are lost during a copy/paste"
       RenderBlock {HR} at (0,34) size 784x2 [border: (1px inset #000000)]
-      RenderBlock {DIV} at (0,44) size 784x246 [border: (2px solid #FFAAAA)]
-        RenderBlock {DIV} at (2,2) size 780x22 [border: (2px solid #AAAAFF)]
-          RenderText {#text} at (2,2) size 20x18
-            text run at (2,2) width 20: "x x"
-        RenderBlock {DIV} at (2,24) size 780x22 [border: (2px solid #AAAAFF)]
-          RenderText {#text} at (2,2) size 24x18
-            text run at (2,2) width 24: "x  x"
-        RenderBlock {DIV} at (2,46) size 780x22 [border: (2px solid #AAAAFF)]
-          RenderText {#text} at (2,2) size 28x18
-            text run at (2,2) width 28: "x   x"
-        RenderBlock {DIV} at (2,68) size 780x22 [border: (2px solid #AAAAFF)]
-          RenderText {#text} at (2,2) size 32x18
-            text run at (2,2) width 32: "x    x"
-        RenderBlock {DIV} at (2,90) size 780x22 [border: (2px solid #AAAAFF)]
-          RenderText {#text} at (2,2) size 36x18
-            text run at (2,2) width 36: "x     x"
-        RenderBlock {DIV} at (2,112) size 780x22 [border: (2px solid #AAAAFF)]
-          RenderText {#text} at (2,2) size 40x18
-            text run at (2,2) width 40: "x      x"
-        RenderBlock {DIV} at (2,134) size 780x22 [border: (2px solid #AAAAFF)]
-          RenderText {#text} at (2,2) size 44x18
-            text run at (2,2) width 44: "x       x"
-        RenderBlock {DIV} at (2,156) size 780x22 [border: (2px solid #AAAAFF)]
-          RenderText {#text} at (2,2) size 48x18
-            text run at (2,2) width 48: "x        x"
-        RenderBlock {DIV} at (2,178) size 780x22 [border: (2px solid #AAAAFF)]
-          RenderText {#text} at (2,2) size 52x18
-            text run at (2,2) width 52: "x         x"
-        RenderBlock {DIV} at (2,200) size 780x22 [border: (2px solid #AAAAFF)]
-          RenderText {#text} at (2,2) size 56x18
-            text run at (2,2) width 56: "x          x"
-        RenderBlock {DIV} at (2,222) size 780x22 [border: (2px solid #AAAAFF)]
-          RenderBR {BR} at (2,2) size 0x18
-caret: position 0 of child 0 {BR} of child 11 {DIV} of child 5 {DIV} of child 1 {BODY} of child 0 {HTML} of document
+      RenderBlock {DIV} at (0,44) size 784x198
+        RenderBlock {DIV} at (0,0) size 784x18
+          RenderText {#text} at (0,0) size 20x18
+            text run at (0,0) width 20: "x x"
+        RenderBlock (anonymous) at (0,18) size 784x0
+        RenderBlock {DIV} at (0,18) size 784x180
+          RenderBlock {DIV} at (0,0) size 784x18
+            RenderText {#text} at (0,0) size 24x18
+              text run at (0,0) width 24: "x  x"
+          RenderBlock (anonymous) at (0,18) size 784x0
+          RenderBlock {DIV} at (0,18) size 784x162
+            RenderBlock {DIV} at (0,0) size 784x18
+              RenderText {#text} at (0,0) size 28x18
+                text run at (0,0) width 28: "x   x"
+            RenderBlock (anonymous) at (0,18) size 784x0
+            RenderBlock {DIV} at (0,18) size 784x144
+              RenderBlock {DIV} at (0,0) size 784x18
+                RenderText {#text} at (0,0) size 32x18
+                  text run at (0,0) width 32: "x    x"
+              RenderBlock (anonymous) at (0,18) size 784x0
+              RenderBlock {DIV} at (0,18) size 784x126
+                RenderBlock {DIV} at (0,0) size 784x18
+                  RenderText {#text} at (0,0) size 36x18
+                    text run at (0,0) width 36: "x     x"
+                RenderBlock (anonymous) at (0,18) size 784x0
+                RenderBlock {DIV} at (0,18) size 784x108
+                  RenderBlock {DIV} at (0,0) size 784x18
+                    RenderText {#text} at (0,0) size 40x18
+                      text run at (0,0) width 40: "x      x"
+                  RenderBlock (anonymous) at (0,18) size 784x0
+                  RenderBlock {DIV} at (0,18) size 784x90
+                    RenderBlock {DIV} at (0,0) size 784x18
+                      RenderText {#text} at (0,0) size 44x18
+                        text run at (0,0) width 44: "x       x"
+                    RenderBlock (anonymous) at (0,18) size 784x0
+                    RenderBlock {DIV} at (0,18) size 784x72
+                      RenderBlock {DIV} at (0,0) size 784x18
+                        RenderText {#text} at (0,0) size 48x18
+                          text run at (0,0) width 48: "x        x"
+                      RenderBlock (anonymous) at (0,18) size 784x0
+                      RenderBlock {DIV} at (0,18) size 784x54
+                        RenderBlock {DIV} at (0,0) size 784x18
+                          RenderText {#text} at (0,0) size 52x18
+                            text run at (0,0) width 52: "x         x"
+                        RenderBlock (anonymous) at (0,18) size 784x0
+                        RenderBlock {DIV} at (0,18) size 784x36
+                          RenderBlock {DIV} at (0,0) size 784x18
+                            RenderText {#text} at (0,0) size 56x18
+                              text run at (0,0) width 56: "x          x"
+                          RenderBlock (anonymous) at (0,18) size 784x0
+                          RenderBlock {DIV} at (0,18) size 784x18
+                            RenderBR {BR} at (0,0) size 0x18
+caret: position 0 of child 0 {BR} of child 1 {DIV} of child 1 {DIV} of child 1 {DIV} of child 1 {DIV} of child 1 {DIV} of child 1 {DIV} of child 1 {DIV} of child 1 {DIV} of child 1 {DIV} of child 1 {DIV} of child 5 {DIV} of child 1 {BODY} of child 0 {HTML} of document
index 8907a08..5d6811c 100644 (file)
@@ -1,7 +1,6 @@
 <html> 
 <head>
 
-<link rel=stylesheet href="../editingStyle.css" type="text/css">
 <script src=../editing.js language="JavaScript" type="text/JavaScript" ></script>
 
 <script>
@@ -33,9 +32,7 @@ function editingTest() {
 
 <hr>
 
-<div contenteditable id="root" style="word-wrap: break-word; -khtml-nbsp-mode: space; -khtml-line-break: after-white-space;">
-<div id="test" class="editing"></div>
-</div>
+<div id="test" contenteditable="true"><br></div>
 
 <script>
 runEditingTest();
index fe489b7..c062aad 100644 (file)
@@ -1 +1 @@
-a0d5b7eba415a1d4eb5f3335d492b3f8
\ No newline at end of file
+836361ca3a318f03b4e43b70c3e960db
\ No newline at end of file
index 289c095..d49775d 100644 (file)
Binary files a/LayoutTests/editing/pasteboard/4076267-expected.png and b/LayoutTests/editing/pasteboard/4076267-expected.png differ
index 561e58b..bdb21fb 100644 (file)
@@ -12,7 +12,7 @@ EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 EDITING DELEGATE: shouldInsertText: this text should have a single leading space before it replacingDOMRange:range from 0 of DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 55 of #text > DIV > DIV > BODY > HTML > #document to 55 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 55 of #text > DIV > DIV > DIV > BODY > HTML > #document to 55 of #text > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 layer at (0,0) size 800x600
@@ -24,8 +24,10 @@ layer at (0,0) size 800x600
         RenderText {#text} at (0,0) size 383x18
           text run at (0,0) width 383: "This tests to see if leading spaces are lost during a copy/paste"
       RenderBlock {HR} at (0,34) size 784x2 [border: (1px inset #000000)]
-      RenderBlock {DIV} at (0,44) size 784x26 [border: (2px solid #FFAAAA)]
-        RenderBlock {DIV} at (2,2) size 780x22 [border: (2px solid #AAAAFF)]
-          RenderText {#text} at (2,2) size 330x18
-            text run at (2,2) width 330: " this text should have a single leading space before it"
-caret: position 55 of child 0 {#text} of child 1 {DIV} of child 5 {DIV} of child 1 {BODY} of child 0 {HTML} of document
+      RenderBlock {DIV} at (0,44) size 784x18
+        RenderBlock {DIV} at (0,0) size 784x18
+          RenderBlock {DIV} at (0,0) size 784x18
+            RenderText {#text} at (0,0) size 330x18
+              text run at (0,0) width 330: " this text should have a single leading space before it"
+          RenderBlock (anonymous) at (0,18) size 784x0
+caret: position 55 of child 0 {#text} of child 0 {DIV} of child 1 {DIV} of child 5 {DIV} of child 1 {BODY} of child 0 {HTML} of document
index 7548ec8..6fa1585 100644 (file)
@@ -1,8 +1,7 @@
 <html> 
 <head>
 
-<link rel=stylesheet href="../editingStyle.css" type="text/css">
-<script src=../editing.js language="JavaScript" type="text/JavaScript" ></script>
+<script src=../editing.js language="JavaScript" type="text/JavaScript"></script>
 
 <script>
 
index c425eff..c195d97 100644 (file)
@@ -11,7 +11,7 @@ EDITING DELEGATE: webViewDidBeginEditing:WebViewDidBeginEditingNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: shouldInsertNode:#document-fragment replacingDOMRange:range from 3 of #text > DIV > BODY > HTML > #document to 3 of #text > DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 3 of #text > DIV > BODY > HTML > #document to 3 of #text > DIV > BODY > HTML > #document toDOMRange:range from 3 of #text > DIV > BODY > HTML > #document to 3 of #text > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 3 of #text > DIV > BODY > HTML > #document to 3 of #text > DIV > BODY > HTML > #document toDOMRange:range from 3 of #text > DIV > DIV > BODY > HTML > #document to 3 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 layer at (0,0) size 800x600
@@ -39,10 +39,11 @@ layer at (0,0) size 800x600
         RenderBlock (anonymous) at (0,0) size 784x18
           RenderText {#text} at (0,0) size 21x18
             text run at (0,0) width 21: "foo"
-        RenderBlock {DIV} at (0,18) size 784x18
-          RenderText {#text} at (0,0) size 20x18
-            text run at (0,0) width 20: "bar"
-        RenderBlock (anonymous) at (0,36) size 784x18
-          RenderText {#text} at (0,0) size 22x18
-            text run at (0,0) width 22: "baz"
-caret: position 3 of child 2 {#text} of child 4 {DIV} of child 0 {BODY} of child 0 {HTML} of document
+        RenderBlock {DIV} at (0,18) size 784x36
+          RenderBlock {DIV} at (0,0) size 784x18
+            RenderText {#text} at (0,0) size 20x18
+              text run at (0,0) width 20: "bar"
+          RenderBlock (anonymous) at (0,18) size 784x18
+            RenderText {#text} at (0,0) size 22x18
+              text run at (0,0) width 22: "baz"
+caret: position 3 of child 1 {#text} of child 1 {DIV} of child 4 {DIV} of child 0 {BODY} of child 0 {HTML} of document
index 6cba87d..d3fb062 100644 (file)
@@ -1 +1 @@
-2d5de629ab57d3f03bd0bc02a0dee5bb
\ No newline at end of file
+5082d3f5717104d84b87f0426a43a4bd
\ No newline at end of file
index 621d0cd..e750a81 100644 (file)
Binary files a/LayoutTests/editing/pasteboard/4242293-expected.png and b/LayoutTests/editing/pasteboard/4242293-expected.png differ
index f550a71..fc1e883 100644 (file)
@@ -36,15 +36,15 @@ layer at (0,0) size 800x600
         RenderBlock (anonymous) at (0,55) size 784x18
           RenderText {#text} at (0,0) size 22x18
             text run at (0,0) width 22: "baz"
-      RenderBlock {DIV} at (0,159) size 784x78
-        RenderBlock (anonymous) at (0,0) size 784x18
-          RenderText {#text} at (0,0) size 21x18
-            text run at (0,0) width 21: "foo"
-        RenderBlock {DIV} at (5,23) size 774x32 [border: (1px solid #FF0000)]
-          RenderBlock {DIV} at (6,6) size 762x20 [border: (1px solid #0000FF)]
+      RenderBlock {DIV} at (0,164) size 784x73
+        RenderBlock {DIV} at (5,0) size 774x50 [border: (1px solid #FF0000)]
+          RenderBlock (anonymous) at (1,1) size 772x18
+            RenderText {#text} at (0,0) size 21x18
+              text run at (0,0) width 21: "foo"
+          RenderBlock {DIV} at (6,24) size 762x20 [border: (1px solid #0000FF)]
             RenderText {#text} at (1,1) size 20x18
               text run at (1,1) width 20: "bar"
-        RenderBlock (anonymous) at (0,60) size 784x18
+        RenderBlock (anonymous) at (0,55) size 784x18
           RenderText {#text} at (0,0) size 22x18
             text run at (0,0) width 22: "baz"
-caret: position 3 of child 2 {#text} of child 6 {DIV} of child 0 {BODY} of child 0 {HTML} of document
+caret: position 3 of child 1 {#text} of child 6 {DIV} of child 0 {BODY} of child 0 {HTML} of document
index 1ed5f3c..c33208e 100644 (file)
@@ -1,7 +1,7 @@
 EDITING DELEGATE: shouldBeginEditingInDOMRange:range from 0 of DIV > BODY > HTML > #document to 0 of DIV > BODY > HTML > #document
 EDITING DELEGATE: webViewDidBeginEditing:WebViewDidBeginEditingNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of DIV > BODY > HTML > #document to 0 of DIV > BODY > HTML > #document toDOMRange:range from 1 of DIV > DIV > BODY > HTML > #document to 1 of DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of DIV > BODY > HTML > #document to 0 of DIV > BODY > HTML > #document toDOMRange:range from 2 of DIV > BODY > HTML > #document to 2 of DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 layer at (0,0) size 800x600
@@ -16,15 +16,14 @@ layer at (0,0) size 800x600
           text run at (0,18) width 325: "moveParagraphContentsToNewBlockIfNecessary. "
           text run at (325,18) width 315: "You should see 'foo' and then an <iframe> below."
       RenderBlock {DIV} at (0,52) size 784x70
-        RenderBlock (anonymous) at (0,0) size 784x18
+        RenderBlock {DIV} at (0,0) size 784x18
           RenderText {#text} at (0,0) size 21x18
             text run at (0,0) width 21: "foo"
-        RenderBlock {DIV} at (0,18) size 784x52
+        RenderBlock (anonymous) at (0,18) size 784x52
           RenderPartObject {IFRAME} at (0,0) size 102x52 [border: (1px solid #000000)]
             layer at (0,0) size 100x50
               RenderView at (0,0) size 100x50
             layer at (0,0) size 100x8
               RenderBlock {HTML} at (0,0) size 100x8
                 RenderBody {BODY} at (8,8) size 84x0
-          RenderBR {BR} at (102,52) size 0x0
-caret: position 1 of child 0 {IFRAME} of child 1 {DIV} of child 2 {DIV} of child 0 {BODY} of child 0 {HTML} of document
+caret: position 1 of child 1 {IFRAME} of child 2 {DIV} of child 0 {BODY} of child 0 {HTML} of document
index bb75a05..9134ccc 100644 (file)
@@ -1,7 +1,7 @@
 EDITING DELEGATE: shouldBeginEditingInDOMRange:range from 0 of DIV > BODY > HTML > #document to 0 of DIV > BODY > HTML > #document
 EDITING DELEGATE: webViewDidBeginEditing:WebViewDidBeginEditingNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of DIV > BODY > HTML > #document to 0 of DIV > BODY > HTML > #document toDOMRange:range from 11 of #text > DIV > BODY > HTML > #document to 11 of #text > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of DIV > BODY > HTML > #document to 0 of DIV > BODY > HTML > #document toDOMRange:range from 11 of #text > DIV > DIV > BODY > HTML > #document to 11 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 layer at (0,0) size 800x600
@@ -13,6 +13,7 @@ layer at (0,0) size 800x600
         RenderText {#text} at (0,0) size 423x18
           text run at (0,0) width 423: "This is a replica of the paste that caused the crash covered by 8145."
       RenderBlock {DIV} at (0,34) size 784x20 [border: (1px solid #000000)]
-        RenderText {#text} at (1,1) size 71x18
-          text run at (1,1) width 71: "foo bar baz"
-caret: position 11 of child 0 {#text} of child 2 {DIV} of child 0 {BODY} of child 0 {HTML} of document
+        RenderBlock {DIV} at (1,1) size 782x18
+          RenderText {#text} at (0,0) size 71x18
+            text run at (0,0) width 71: "foo bar baz"
+caret: position 11 of child 0 {#text} of child 0 {DIV} of child 2 {DIV} of child 0 {BODY} of child 0 {HTML} of document
index c7b5b8a..69ffe75 100644 (file)
@@ -22,7 +22,7 @@ layer at (0,0) size 800x600
             text run at (0,0) width 5: "f"
           RenderText {#text} at (5,0) size 20x18
             text run at (5,0) width 20: "bar"
-        RenderBlock {DIV} at (1,19) size 782x18
+        RenderBlock (anonymous) at (1,19) size 782x18
           RenderText {#text} at (0,0) size 22x18
             text run at (0,0) width 22: "baz"
         RenderBlock {DIV} at (1,37) size 782x18
index 2f6e812..e069b54 100644 (file)
@@ -12,7 +12,7 @@ EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 EDITING DELEGATE: shouldInsertNode:#document-fragment replacingDOMRange:range from 0 of P > CENTER > DIV > DIV > BODY > HTML > #document to 0 of P > CENTER > DIV > DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 85 of #text > P > CENTER > DIV > DIV > BODY > HTML > #document to 85 of #text > P > CENTER > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 85 of #text > P > P > CENTER > DIV > DIV > BODY > HTML > #document to 85 of #text > P > P > CENTER > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 layer at (0,0) size 800x600
@@ -40,43 +40,45 @@ layer at (0,0) size 800x600
       RenderBlock {DIV} at (0,156) size 784x190
         RenderBlock {DIV} at (0,0) size 784x190 [border: (2px solid #FF0000)]
           RenderBlock {CENTER} at (2,20) size 780x150
-            RenderBlock {P} at (0,0) size 780x110
-              RenderText {#text} at (0,0) size 76x22
-                text run at (0,0) width 76: "This is an "
-              RenderInline {B} at (0,0) size 82x22
-                RenderText {#text} at (76,0) size 82x22
-                  text run at (76,0) width 82: "interactive"
-              RenderText {#text} at (158,0) size 622x44
-                text run at (158,0) width 622: " documentation site, so please help out by posting any useful information that you've "
-                text run at (325,22) width 129: "had to search out."
-              RenderBR {BR} at (454,39) size 0x0
-              RenderText {#text} at (20,44) size 115x22
-                text run at (20,44) width 115: "(Adding to this "
-              RenderInline {A} at (0,0) size 107x22 [color=#0000EE]
-                RenderText {#text} at (135,44) size 107x22
-                  text run at (135,44) width 107: "wiki is so easy"
-              RenderText {#text} at (242,44) size 207x22
-                text run at (242,44) width 207: ", you can't screw it up). See "
-              RenderInline {A} at (0,0) size 114x22 [color=#0000EE]
-                RenderText {#text} at (449,44) size 114x22
-                  text run at (449,44) width 114: "Wiki Reference"
-              RenderText {#text} at (563,44) size 196x22
-                text run at (563,44) width 196: " for text formatting syntax."
-              RenderBR {BR} at (759,61) size 0x0
-              RenderText {#text} at (161,66) size 283x22
-                text run at (161,66) width 283: "Info for setting up your own wiki is at "
-              RenderInline {A} at (0,0) size 170x22 [color=#0000EE]
-                RenderText {#text} at (444,66) size 170x22
-                  text run at (444,66) width 170: "about howto.apple.com"
-              RenderText {#text} at (614,66) size 5x22
-                text run at (614,66) width 5: "."
-              RenderBR {BR} at (619,83) size 0x0
-              RenderText {#text} at (96,88) size 514x22
-                text run at (96,88) width 514: "Check out a cool wiki editor application that helps in wiki generation: "
-              RenderInline {A} at (0,0) size 73x22 [color=#0000EE]
-                RenderText {#text} at (610,88) size 73x22
-                  text run at (610,88) width 73: "Wikinator"
-            RenderBlock {P} at (0,128) size 780x22
-              RenderText {#text} at (85,0) size 610x22
-                text run at (85,0) width 610: "Start browsing the topics below, or use the search field at the bottom of every page."
-caret: position 85 of child 0 {#text} of child 2 {P} of child 1 {CENTER} of child 1 {DIV} of child 3 {DIV} of child 1 {BODY} of child 0 {HTML} of document
+            RenderBlock {P} at (0,0) size 780x150
+              RenderBlock {P} at (0,0) size 780x110
+                RenderText {#text} at (0,0) size 76x22
+                  text run at (0,0) width 76: "This is an "
+                RenderInline {B} at (0,0) size 82x22
+                  RenderText {#text} at (76,0) size 82x22
+                    text run at (76,0) width 82: "interactive"
+                RenderText {#text} at (158,0) size 622x44
+                  text run at (158,0) width 622: " documentation site, so please help out by posting any useful information that you've "
+                  text run at (325,22) width 129: "had to search out."
+                RenderBR {BR} at (454,39) size 0x0
+                RenderText {#text} at (20,44) size 115x22
+                  text run at (20,44) width 115: "(Adding to this "
+                RenderInline {A} at (0,0) size 107x22 [color=#0000EE]
+                  RenderText {#text} at (135,44) size 107x22
+                    text run at (135,44) width 107: "wiki is so easy"
+                RenderText {#text} at (242,44) size 207x22
+                  text run at (242,44) width 207: ", you can't screw it up). See "
+                RenderInline {A} at (0,0) size 114x22 [color=#0000EE]
+                  RenderText {#text} at (449,44) size 114x22
+                    text run at (449,44) width 114: "Wiki Reference"
+                RenderText {#text} at (563,44) size 196x22
+                  text run at (563,44) width 196: " for text formatting syntax."
+                RenderBR {BR} at (759,61) size 0x0
+                RenderText {#text} at (161,66) size 283x22
+                  text run at (161,66) width 283: "Info for setting up your own wiki is at "
+                RenderInline {A} at (0,0) size 170x22 [color=#0000EE]
+                  RenderText {#text} at (444,66) size 170x22
+                    text run at (444,66) width 170: "about howto.apple.com"
+                RenderText {#text} at (614,66) size 5x22
+                  text run at (614,66) width 5: "."
+                RenderBR {BR} at (619,83) size 0x0
+                RenderText {#text} at (96,88) size 514x22
+                  text run at (96,88) width 514: "Check out a cool wiki editor application that helps in wiki generation: "
+                RenderInline {A} at (0,0) size 73x22 [color=#0000EE]
+                  RenderText {#text} at (610,88) size 73x22
+                    text run at (610,88) width 73: "Wikinator"
+              RenderBlock {P} at (0,128) size 780x22
+                RenderText {#text} at (85,0) size 610x22
+                  text run at (85,0) width 610: "Start browsing the topics below, or use the search field at the bottom of every page."
+              RenderBlock (anonymous) at (0,168) size 780x0
+caret: position 85 of child 0 {#text} of child 1 {P} of child 1 {P} of child 1 {CENTER} of child 1 {DIV} of child 3 {DIV} of child 1 {BODY} of child 0 {HTML} of document
index d5bb3cb..f647527 100644 (file)
@@ -23,7 +23,7 @@ EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 EDITING DELEGATE: shouldInsertNode:#document-fragment replacingDOMRange:range from 0 of DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 9 of #text > DIV > DIV > BODY > HTML > #document to 9 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 9 of #text > DIV > DIV > DIV > BODY > HTML > #document to 9 of #text > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 layer at (0,0) size 800x600
@@ -39,13 +39,15 @@ layer at (0,0) size 800x600
           text run at (712,0) width 40 RTL: "\x{5E9}\x{5D3}\x{5D2}\x{5DB}:"
           text run at (752,0) width 32: "1234"
       RenderBlock {DIV} at (0,52) size 784x36
-        RenderBlock {DIV} at (0,0) size 784x18
-          RenderText {#text} at (0,0) size 72x18
-            text run at (0,0) width 32: "1234"
-            text run at (32,0) width 36 RTL: "\x{5E9}\x{5D3}\x{5D2}\x{5DB}"
-            text run at (68,0) width 4: ":"
-        RenderBlock {DIV} at (0,18) size 784x18
-          RenderText {#text} at (712,0) size 72x18
-            text run at (712,0) width 40 RTL: "\x{5E9}\x{5D3}\x{5D2}\x{5DB}:"
-            text run at (752,0) width 32: "1234"
-caret: position 9 of child 0 {#text} of child 2 {DIV} of child 4 {DIV} of child 0 {BODY} of child 0 {HTML} of document
+        RenderBlock {DIV} at (0,0) size 784x36
+          RenderBlock {DIV} at (0,0) size 784x18
+            RenderText {#text} at (0,0) size 72x18
+              text run at (0,0) width 32: "1234"
+              text run at (32,0) width 36 RTL: "\x{5E9}\x{5D3}\x{5D2}\x{5DB}"
+              text run at (68,0) width 4: ":"
+          RenderBlock {DIV} at (0,18) size 784x18
+            RenderText {#text} at (712,0) size 72x18
+              text run at (712,0) width 40 RTL: "\x{5E9}\x{5D3}\x{5D2}\x{5DB}:"
+              text run at (752,0) width 32: "1234"
+          RenderBlock (anonymous) at (0,36) size 784x0
+caret: position 9 of child 0 {#text} of child 1 {DIV} of child 1 {DIV} of child 4 {DIV} of child 0 {BODY} of child 0 {HTML} of document
index 1bfef7d..b9e8d0c 100644 (file)
Binary files a/LayoutTests/editing/pasteboard/display-block-on-spans-expected.png and b/LayoutTests/editing/pasteboard/display-block-on-spans-expected.png differ
index 5c888ae..f9b5cc3 100644 (file)
@@ -32,10 +32,9 @@ layer at (0,0) size 800x600
             RenderText {#text} at (0,0) size 137x18
               text run at (0,0) width 137: "This is a paragraph."
         RenderBlock {SPAN} at (0,18) size 784x18
-          RenderInline {B} at (0,0) size 30x18
+          RenderInline {B} at (0,0) size 182x18
             RenderText {#text} at (0,0) size 30x18
               text run at (0,0) width 30: "This"
-          RenderInline {B} at (0,0) size 152x18
             RenderText {#text} at (30,0) size 152x18
               text run at (30,0) width 152: " is another paragraph."
 caret: position 4 of child 0 {#text} of child 0 {B} of child 2 {SPAN} of child 5 {DIV} of child 1 {BODY} of child 0 {HTML} of document
index cf23dfa..d21e2e3 100644 (file)
@@ -2,7 +2,7 @@ EDITING DELEGATE: shouldBeginEditingInDOMRange:range from 0 of DIV > BODY > HTML
 EDITING DELEGATE: webViewDidBeginEditing:WebViewDidBeginEditingNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of #text > DIV > DIV > BODY > HTML > #document to 0 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 1 of #text > DIV > BODY > HTML > #document to 1 of #text > DIV > BODY > HTML > #document toDOMRange:range from 0 of #text > DIV > BODY > HTML > #document to 0 of #text > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 layer at (0,0) size 800x600
@@ -22,15 +22,13 @@ layer at (0,0) size 800x600
             text run at (0,0) width 8: "x"
           RenderText {#text} at (8,0) size 21x18
             text run at (8,0) width 21: "foo"
-        RenderBlock {DIV} at (0,18) size 784x36
-          RenderBlock (anonymous) at (0,0) size 784x0
-            RenderInline {SPAN} at (0,0) size 0x0
-          RenderBlock (anonymous) at (0,0) size 784x18
-            RenderBlock {DIV} at (0,0) size 784x18
-              RenderText {#text} at (0,0) size 20x18
-                text run at (0,0) width 20: "bar"
-          RenderBlock (anonymous) at (0,18) size 784x18
-            RenderInline {SPAN} at (0,0) size 0x0
-            RenderText {#text} at (0,0) size 8x18
-              text run at (0,0) width 8: "x"
-caret: position 0 of child 1 {#text} of child 2 {DIV} of child 2 {DIV} of child 0 {BODY} of child 0 {HTML} of document
+          RenderInline {SPAN} at (0,0) size 0x18
+        RenderBlock (anonymous) at (0,18) size 784x18
+          RenderBlock {DIV} at (0,0) size 784x18
+            RenderText {#text} at (0,0) size 20x18
+              text run at (0,0) width 20: "bar"
+        RenderBlock (anonymous) at (0,36) size 784x18
+          RenderInline {SPAN} at (0,0) size 0x0
+          RenderText {#text} at (0,0) size 8x18
+            text run at (0,0) width 8: "x"
+caret: position 0 of child 3 {#text} of child 2 {DIV} of child 0 {BODY} of child 0 {HTML} of document
diff --git a/LayoutTests/editing/pasteboard/interchange-newline-4-expected.checksum b/LayoutTests/editing/pasteboard/interchange-newline-4-expected.checksum
new file mode 100644 (file)
index 0000000..4a08dfb
--- /dev/null
@@ -0,0 +1 @@
+880b549ed4988319c9b31517a6a5f891
\ No newline at end of file
diff --git a/LayoutTests/editing/pasteboard/interchange-newline-4-expected.png b/LayoutTests/editing/pasteboard/interchange-newline-4-expected.png
new file mode 100644 (file)
index 0000000..b7eb8c6
Binary files /dev/null and b/LayoutTests/editing/pasteboard/interchange-newline-4-expected.png differ
diff --git a/LayoutTests/editing/pasteboard/interchange-newline-4-expected.txt b/LayoutTests/editing/pasteboard/interchange-newline-4-expected.txt
new file mode 100644 (file)
index 0000000..6913737
--- /dev/null
@@ -0,0 +1,28 @@
+EDITING DELEGATE: shouldBeginEditingInDOMRange:range from 0 of DIV > BODY > HTML > #document to 1 of DIV > BODY > HTML > #document
+EDITING DELEGATE: webViewDidBeginEditing:WebViewDidBeginEditingNotification
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 3 of #text > DIV > BODY > HTML > #document to 3 of #text > DIV > BODY > HTML > #document toDOMRange:range from 3 of #text > DIV > DIV > BODY > HTML > #document to 3 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderBlock {HTML} at (0,0) size 800x600
+    RenderBody {BODY} at (8,8) size 784x584
+      RenderBlock {P} at (0,0) size 784x36
+        RenderText {#text} at (0,0) size 766x36
+          text run at (0,0) width 766: "This tests for a bug where pasted content starting with an interchange newline would end up outside of the editable region"
+          text run at (0,18) width 132: "where it was pasted. "
+          text run at (132,18) width 208: "You should see 'foo\\nbar' below."
+      RenderBlock {DIV} at (0,52) size 784x36
+        RenderBlock (anonymous) at (0,0) size 784x18
+          RenderText {#text} at (0,0) size 21x18
+            text run at (0,0) width 21: "foo"
+        RenderBlock {DIV} at (0,18) size 784x18
+          RenderText {#text} at (0,0) size 20x18
+            text run at (0,0) width 20: "bar"
+      RenderBlock (anonymous) at (0,88) size 784x18
+        RenderText {#text} at (0,0) size 78x18
+          text run at (0,0) width 78: "non-editable"
+caret: position 3 of child 0 {#text} of child 1 {DIV} of child 2 {DIV} of child 0 {BODY} of child 0 {HTML} of document
diff --git a/LayoutTests/editing/pasteboard/interchange-newline-4.html b/LayoutTests/editing/pasteboard/interchange-newline-4.html
new file mode 100644 (file)
index 0000000..bd0273a
--- /dev/null
@@ -0,0 +1,11 @@
+<p>This tests for a bug where pasted content starting with an interchange newline would end up outside of the editable region where it was pasted.  You should see 'foo\nbar' below.</p>
+<div id="test" contenteditable="true">foo</div>
+non-editable
+<script>
+var sel = window.getSelection();
+var e = document.getElementById("test");
+
+sel.setPosition(e, 0);
+sel.modify("move", "forward", "word");
+document.execCommand("InsertHTML", false, "<br class='Apple-interchange-newline'>bar");
+</script>
\ No newline at end of file
index ff502e8..a9b3340 100644 (file)
@@ -1 +1 @@
-e45accfe2f4a6c9c48faac6a0e2e3fd3
\ No newline at end of file
+272a84e68766b4ff028d8306a7ba5ff8
\ No newline at end of file
index 3c47998..ef3a5e1 100644 (file)
Binary files a/LayoutTests/editing/pasteboard/merge-end-1-expected.png and b/LayoutTests/editing/pasteboard/merge-end-1-expected.png differ
index 9eaad3b..64b4494 100644 (file)
@@ -4,7 +4,7 @@ EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 3 of #text > SPAN > DIV > DIV > BODY > HTML > #document to 3 of #text > SPAN > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 1 of #text > SPAN > DIV > BODY > HTML > #document to 1 of #text > SPAN > DIV > BODY > HTML > #document toDOMRange:range from 3 of #text > SPAN > DIV > BODY > HTML > #document to 3 of #text > SPAN > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 layer at (0,0) size 800x600
@@ -16,17 +16,26 @@ layer at (0,0) size 800x600
         RenderText {#text} at (0,0) size 766x36
           text run at (0,0) width 766: "This tests one of the cases where it is necessary for paste to merge the last paragraph in the fragment being pasted with the"
           text run at (0,18) width 328: "content after the position where the paste will occur."
-      RenderBlock {DIV} at (0,52) size 784x36
+      RenderBlock {P} at (0,52) size 784x36
+        RenderInline {B} at (0,0) size 171x18
+          RenderText {#text} at (0,0) size 171x18
+            text run at (0,0) width 171: "This demonstrates a bug:"
+        RenderText {#text} at (171,0) size 757x36
+          text run at (171,0) width 586: " two adjacent text nodes render with a line break between them and cause focus ring drawing"
+          text run at (0,18) width 116: "problems (10428)."
+      RenderBlock {DIV} at (0,104) size 784x54
         RenderBlock (anonymous) at (0,0) size 784x18
-          RenderInline {SPAN} at (0,0) size 25x18
+          RenderInline {SPAN} at (0,0) size 5x18
             RenderText {#text} at (0,0) size 5x18
               text run at (0,0) width 5: "f"
-            RenderText {#text} at (5,0) size 20x18
-              text run at (5,0) width 20: "bar"
-        RenderBlock {DIV} at (0,18) size 784x18
-          RenderInline {SPAN} at (0,0) size 38x18
-            RenderText {#text} at (0,0) size 22x18
-              text run at (0,0) width 22: "baz"
-            RenderText {#text} at (22,0) size 16x18
-              text run at (22,0) width 16: "oo"
-caret: position 3 of child 0 {#text} of child 0 {SPAN} of child 1 {DIV} of child 2 {DIV} of child 0 {BODY} of child 0 {HTML} of document
+        RenderBlock (anonymous) at (0,18) size 784x0
+        RenderBlock (anonymous) at (0,18) size 784x36
+          RenderInline {SPAN} at (0,0) size 38x36
+            RenderText {#text} at (0,0) size 20x18
+              text run at (0,0) width 20: "bar"
+            RenderBR {BR} at (20,14) size 0x0
+            RenderText {#text} at (0,18) size 22x18
+              text run at (0,18) width 22: "baz"
+            RenderText {#text} at (22,18) size 16x18
+              text run at (22,18) width 16: "oo"
+caret: position 3 of child 3 {#text} of child 0 {SPAN} of child 4 {DIV} of child 0 {BODY} of child 0 {HTML} of document
index 3041fdc..07a6e23 100644 (file)
@@ -1,4 +1,5 @@
 <p>This tests one of the cases where it is necessary for paste to merge the last paragraph in the fragment being pasted with the content after the position where the paste will occur.</p>
+<p><b>This demonstrates a bug:</b> two adjacent text nodes render with a line break between them and cause focus ring drawing problems (10428).</p>
 <div id="test" contenteditable="true"><span>foo</span></div>
 
 <script type="text/javascript" src="../editing.js"></script>
index c94eb49..89e149f 100644 (file)
@@ -1 +1 @@
-6cac15233d2aa377bc36e3133e4cbf61
\ No newline at end of file
+e15f24545c9e781baf0ef872baf790b8
\ No newline at end of file
index 390e57b..2a85f7f 100644 (file)
Binary files a/LayoutTests/editing/pasteboard/merge-end-2-expected.png and b/LayoutTests/editing/pasteboard/merge-end-2-expected.png differ
index d7d2224..0bbc01a 100644 (file)
@@ -4,7 +4,7 @@ EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 3 of #text > SPAN > DIV > DIV > BODY > HTML > #document to 3 of #text > SPAN > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 1 of #text > SPAN > DIV > BODY > HTML > #document to 1 of #text > SPAN > DIV > BODY > HTML > #document toDOMRange:range from 3 of #text > SPAN > DIV > BODY > HTML > #document to 3 of #text > SPAN > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 layer at (0,0) size 800x600
@@ -16,19 +16,28 @@ layer at (0,0) size 800x600
         RenderText {#text} at (0,0) size 766x36
           text run at (0,0) width 766: "This tests one of the cases where it is necessary for paste to merge the last paragraph in the fragment being pasted with the"
           text run at (0,18) width 328: "content after the position where the paste will occur."
-      RenderBlock {DIV} at (0,52) size 784x36
+      RenderBlock {P} at (0,52) size 784x36
+        RenderInline {B} at (0,0) size 171x18
+          RenderText {#text} at (0,0) size 171x18
+            text run at (0,0) width 171: "This demonstrates a bug:"
+        RenderText {#text} at (171,0) size 757x36
+          text run at (171,0) width 586: " two adjacent text nodes render with a line break between them and cause focus ring drawing"
+          text run at (0,18) width 116: "problems (10428)."
+      RenderBlock {DIV} at (0,104) size 784x54
         RenderBlock (anonymous) at (0,0) size 784x18
-          RenderInline {SPAN} at (0,0) size 25x18
+          RenderInline {SPAN} at (0,0) size 5x18
             RenderText {#text} at (0,0) size 5x18
               text run at (0,0) width 5: "f"
-            RenderText {#text} at (5,0) size 20x18
-              text run at (5,0) width 20: "bar"
-        RenderBlock {DIV} at (0,18) size 784x18
-          RenderInline {SPAN} at (0,0) size 38x18
-            RenderText {#text} at (0,0) size 22x18
-              text run at (0,0) width 22: "baz"
-            RenderText {#text} at (22,0) size 16x18
-              text run at (22,0) width 16: "oo"
-          RenderText {#text} at (38,0) size 20x18
-            text run at (38,0) width 20: "bar"
-caret: position 3 of child 0 {#text} of child 0 {SPAN} of child 1 {DIV} of child 2 {DIV} of child 0 {BODY} of child 0 {HTML} of document
+        RenderBlock (anonymous) at (0,18) size 784x0
+        RenderBlock (anonymous) at (0,18) size 784x36
+          RenderInline {SPAN} at (0,0) size 38x36
+            RenderText {#text} at (0,0) size 20x18
+              text run at (0,0) width 20: "bar"
+            RenderBR {BR} at (20,14) size 0x0
+            RenderText {#text} at (0,18) size 22x18
+              text run at (0,18) width 22: "baz"
+            RenderText {#text} at (22,18) size 16x18
+              text run at (22,18) width 16: "oo"
+          RenderText {#text} at (38,18) size 20x18
+            text run at (38,18) width 20: "bar"
+caret: position 3 of child 3 {#text} of child 0 {SPAN} of child 4 {DIV} of child 0 {BODY} of child 0 {HTML} of document
index 25252e2..07ade9d 100644 (file)
@@ -1,4 +1,5 @@
 <p>This tests one of the cases where it is necessary for paste to merge the last paragraph in the fragment being pasted with the content after the position where the paste will occur.</p>
+<p><b>This demonstrates a bug:</b> two adjacent text nodes render with a line break between them and cause focus ring drawing problems (10428).</p>
 <div id="test" contenteditable="true"><span>foo</span>bar</div>
 
 <script type="text/javascript" src="../editing.js"></script>
index 4a16fd0..7fa287e 100644 (file)
@@ -2,7 +2,7 @@ EDITING DELEGATE: shouldBeginEditingInDOMRange:range from 0 of DIV > BODY > HTML
 EDITING DELEGATE: webViewDidBeginEditing:WebViewDidBeginEditingNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 3 of #text > DIV > DIV > BODY > HTML > #document to 3 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 1 of #text > DIV > BODY > HTML > #document to 1 of #text > DIV > BODY > HTML > #document toDOMRange:range from 3 of #text > DIV > BODY > HTML > #document to 3 of #text > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 layer at (0,0) size 800x600
@@ -23,10 +23,9 @@ layer at (0,0) size 800x600
         RenderBlock {DIV} at (0,18) size 784x18
           RenderText {#text} at (0,0) size 20x18
             text run at (0,0) width 20: "bar"
-        RenderBlock (anonymous) at (0,36) size 784x0
-        RenderBlock {DIV} at (0,36) size 784x18
+        RenderBlock (anonymous) at (0,36) size 784x18
           RenderText {#text} at (0,0) size 22x18
             text run at (0,0) width 22: "baz"
           RenderText {#text} at (22,0) size 8x18
             text run at (22,0) width 8: "x"
-caret: position 3 of child 0 {#text} of child 3 {DIV} of child 2 {DIV} of child 0 {BODY} of child 0 {HTML} of document
+caret: position 3 of child 3 {#text} of child 2 {DIV} of child 0 {BODY} of child 0 {HTML} of document
index 9ad862e..8bef753 100644 (file)
@@ -2,7 +2,7 @@ EDITING DELEGATE: shouldBeginEditingInDOMRange:range from 0 of DIV > BODY > HTML
 EDITING DELEGATE: webViewDidBeginEditing:WebViewDidBeginEditingNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 6 of #text > DIV > LI > UL > DIV > BODY > HTML > #document to 6 of #text > DIV > LI > UL > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 1 of #text > DIV > BODY > HTML > #document to 1 of #text > DIV > BODY > HTML > #document toDOMRange:range from 6 of #text > DIV > LI > UL > DIV > BODY > HTML > #document to 6 of #text > DIV > LI > UL > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 EDITING DELEGATE: shouldEndEditingInDOMRange:range from 0 of DIV > BODY > HTML > #document to 3 of DIV > BODY > HTML > #document
@@ -32,7 +32,7 @@ layer at (0,0) size 800x600
               RenderListMarker at (-17,0) size 7x18
               RenderText {#text} at (0,0) size 40x18
                 text run at (0,0) width 40: "Item 1"
-        RenderBlock {DIV} at (0,68) size 784x18
+        RenderBlock (anonymous) at (0,68) size 784x18
           RenderText {#text} at (0,0) size 8x18
             text run at (0,0) width 8: "x"
       RenderBlock {P} at (0,136) size 784x36
index 0e15427..735920e 100644 (file)
@@ -1 +1 @@
-a9f14eec350ebbcc4797229a8e922aa7
\ No newline at end of file
+fb7ad51f22def32ffdd2cba32c48038a
\ No newline at end of file
index 6c9ce4b..316a882 100644 (file)
Binary files a/LayoutTests/editing/pasteboard/merge-end-table-expected.png and b/LayoutTests/editing/pasteboard/merge-end-table-expected.png differ
index 0406781..18ba6bd 100644 (file)
@@ -2,7 +2,7 @@ EDITING DELEGATE: shouldBeginEditingInDOMRange:range from 0 of DIV > BODY > HTML
 EDITING DELEGATE: webViewDidBeginEditing:WebViewDidBeginEditingNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 1 of #text > TD > TR > TBODY > TABLE > DIV > BODY > HTML > #document to 1 of #text > TD > TR > TBODY > TABLE > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 1 of #text > DIV > BODY > HTML > #document to 1 of #text > DIV > BODY > HTML > #document toDOMRange:range from 1 of #text > TD > TR > TBODY > TABLE > DIV > BODY > HTML > #document to 1 of #text > TD > TR > TBODY > TABLE > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 EDITING DELEGATE: shouldEndEditingInDOMRange:range from 0 of DIV > BODY > HTML > #document to 3 of DIV > BODY > HTML > #document
@@ -35,7 +35,7 @@ layer at (0,0) size 800x600
               RenderTableCell {TD} at (16,2) size 12x22 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
                 RenderText {#text} at (2,2) size 8x18
                   text run at (2,2) width 8: "2"
-        RenderBlock {DIV} at (0,46) size 784x18
+        RenderBlock (anonymous) at (0,46) size 784x18
           RenderText {#text} at (0,0) size 8x18
             text run at (0,0) width 8: "x"
       RenderBlock {P} at (0,114) size 784x36
index b29a338..f84c95c 100644 (file)
@@ -13,7 +13,6 @@ layer at (0,0) size 800x600
         RenderText {#text} at (29,0) size 725x36
           text run at (29,0) width 725: "This test checks that pasing in a combination of nested blocks where one starts with a text field doesn't crash or fail "
           text run at (359,18) width 65: "assertions."
-      RenderBlock (anonymous) at (0,36) size 784x0
       RenderBlock {DIV} at (0,36) size 784x36
         RenderBlock {DIV} at (0,0) size 784x36
           RenderTextField {TEXTAREA} at (302,2) size 163x28 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
index 8658de4..998cac4 100644 (file)
@@ -13,7 +13,6 @@ layer at (0,0) size 800x600
         RenderText {#text} at (29,0) size 725x36
           text run at (29,0) width 725: "This test checks that pasing in a combination of nested blocks where one starts with a text field doesn't crash or fail "
           text run at (359,18) width 65: "assertions."
-      RenderBlock (anonymous) at (0,36) size 784x0
       RenderBlock {DIV} at (0,36) size 784x23
         RenderBlock {DIV} at (0,0) size 784x23
           RenderTextField {INPUT} at (310,2) size 148x19 [bgcolor=#FFFFFF] [border: (2px inset #000000)]
index 2debd6b..76c6233 100644 (file)
@@ -1 +1 @@
-a736b9c13c7b16504ed0aee65e245f92
\ No newline at end of file
+2c39d2c3c57c1a86cb18421b87f0ac2b
\ No newline at end of file
index 0fb1966..a9e4992 100644 (file)
Binary files a/LayoutTests/editing/pasteboard/paste-4039777-fix-expected.png and b/LayoutTests/editing/pasteboard/paste-4039777-fix-expected.png differ
index 764bf07..d65a37d 100644 (file)
@@ -4,7 +4,7 @@ EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotificatio
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: shouldInsertNode:#document-fragment replacingDOMRange:range from 0 of #text > LI > UL > DIV > DIV > BODY > HTML > #document to 5 of #text > LI > UL > DIV > DIV > DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 1 of #text > SPAN > FONT > LI > UL > DIV > DIV > BODY > HTML > #document to 1 of #text > SPAN > FONT > LI > UL > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 1 of #text > DIV > LI > UL > DIV > DIV > DIV > BODY > HTML > #document to 1 of #text > DIV > LI > UL > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 layer at (0,0) size 800x600
@@ -50,32 +50,30 @@ layer at (0,0) size 800x600
                 RenderBR {BR} at (0,0) size 0x0
                 RenderText {#text} at (0,28) size 16x28
                   text run at (0,28) width 16: "C"
-      RenderBlock {DIV} at (0,364) size 784x148
-        RenderBlock {UL} at (0,0) size 784x28
-          RenderListItem {LI} at (40,0) size 744x28
-            RenderListMarker at (-17,8) size 7x18
-            RenderInline {FONT} at (0,0) size 17x28
-              RenderInline {SPAN} at (0,0) size 17x28
-                RenderText {#text} at (727,0) size 17x28
-                  text run at (727,0) width 17: "A"
-        RenderBlock {DIV} at (0,44) size 784x56
-          RenderBlock {UL} at (0,0) size 784x56
-            RenderListItem {LI} at (40,0) size 744x56
-              RenderListMarker at (-17,8) size 7x18
-              RenderInline {A} at (0,0) size 16x18 [color=#0000EE]
-                RenderInline {FONT} at (0,0) size 16x28
-                  RenderInline {SPAN} at (0,0) size 16x28
-                    RenderText {#text} at (0,0) size 16x28
-                      text run at (0,0) width 16: "B"
-              RenderInline {FONT} at (0,0) size 22x56
-                RenderInline {SPAN} at (0,0) size 22x56
-                  RenderText {#text} at (16,0) size 6x28
-                    text run at (16,0) width 6: " "
-                  RenderBR {BR} at (22,22) size 0x0
-                  RenderText {#text} at (0,28) size 16x28
-                    text run at (0,28) width 16: "C"
-        RenderBlock {DIV} at (0,116) size 784x32 [border: (2px solid #FF0000)]
-          RenderBlock (anonymous) at (2,2) size 780x28
-            RenderBR {BR} at (780,0) size 0x28
-          RenderBlock {DIV} at (2,30) size 780x0
-caret: position 1 of child 2 {#text} of child 0 {SPAN} of child 1 {FONT} of child 0 {LI} of child 0 {UL} of child 2 {DIV} of child 3 {DIV} of child 1 {BODY} of child 0 {HTML} of document
+      RenderBlock {DIV} at (0,364) size 784x160
+        RenderBlock {DIV} at (0,0) size 784x160 [border: (2px solid #FF0000)]
+          RenderBlock {UL} at (2,26) size 780x28
+            RenderListItem {LI} at (40,0) size 740x28
+              RenderListMarker at (-22,0) size 9x28
+              RenderText {#text} at (723,0) size 17x28
+                text run at (723,0) width 17: "A"
+          RenderBlock {DIV} at (2,78) size 780x56
+            RenderBlock {UL} at (0,0) size 780x56
+              RenderListItem {LI} at (40,0) size 740x56
+                RenderBlock (anonymous) at (0,0) size 740x0
+                RenderBlock {DIV} at (0,0) size 740x28
+                  RenderListMarker at (-22,0) size 9x28
+                  RenderInline {A} at (0,0) size 16x28 [color=#0000EE]
+                    RenderText {#text} at (718,0) size 16x28
+                      text run at (718,0) width 16: "B"
+                  RenderText {#text} at (734,0) size 6x28
+                    text run at (734,0) width 6: " "
+                  RenderBR {BR} at (740,22) size 0x0
+                RenderBlock {DIV} at (0,28) size 740x28
+                  RenderText {#text} at (724,0) size 16x28
+                    text run at (724,0) width 16: "C"
+                  RenderBR {BR} at (740,22) size 0x0
+                RenderBlock (anonymous) at (0,56) size 740x0
+          RenderBlock (anonymous) at (2,158) size 780x0
+          RenderBlock {DIV} at (2,158) size 780x0
+caret: position 1 of child 0 {#text} of child 1 {DIV} of child 0 {LI} of child 0 {UL} of child 1 {DIV} of child 1 {DIV} of child 3 {DIV} of child 1 {BODY} of child 0 {HTML} of document
index 74e8c39..029f881 100644 (file)
@@ -12,7 +12,7 @@ EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotificatio
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: shouldInsertNode:#document-fragment replacingDOMRange:range from 9 of #text > DIV > DIV > BODY > HTML > #document to 1 of #text > DIV > DIV > DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 9 of #text > DIV > DIV > BODY > HTML > #document to 1 of #text > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 1 of #text > DIV > DIV > DIV > BODY > HTML > #document to 1 of #text > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 1 of DIV > DIV > BODY > HTML > #document to 1 of #text > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 1 of #text > DIV > DIV > DIV > BODY > HTML > #document to 1 of #text > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 layer at (0,0) size 800x600
@@ -46,9 +46,10 @@ layer at (0,0) size 800x600
           RenderBlock (anonymous) at (2,2) size 780x28
             RenderText {#text} at (0,0) size 78x28
               text run at (0,0) width 78: "line one"
+            RenderBR {BR} at (78,22) size 0x0
           RenderBlock {DIV} at (2,30) size 780x28
             RenderText {#text} at (0,0) size 7x28
               text run at (0,0) width 7: "l"
             RenderText {#text} at (7,0) size 72x28
               text run at (7,0) width 72: "ine two"
-caret: position 1 of child 0 {#text} of child 1 {DIV} of child 1 {DIV} of child 3 {DIV} of child 1 {BODY} of child 0 {HTML} of document
+caret: position 1 of child 0 {#text} of child 2 {DIV} of child 1 {DIV} of child 3 {DIV} of child 1 {BODY} of child 0 {HTML} of document
index 53ccd15..f2cc074 100644 (file)
@@ -46,6 +46,7 @@ layer at (0,0) size 800x600
           RenderBlock {DIV} at (2,2) size 780x28
             RenderText {#text} at (0,0) size 78x28
               text run at (0,0) width 78: "line one"
+          RenderBlock (anonymous) at (2,30) size 780x0
           RenderBlock {DIV} at (2,30) size 780x28
             RenderText {#text} at (0,0) size 7x28
               text run at (0,0) width 7: "l"
index 41ff846..4567147 100644 (file)
@@ -12,7 +12,7 @@ EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotificatio
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: shouldInsertNode:#document-fragment replacingDOMRange:range from 8 of #text > DIV > DIV > DIV > BODY > HTML > #document to 1 of #text > DIV > DIV > DIV > DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 8 of #text > DIV > DIV > DIV > BODY > HTML > #document to 1 of #text > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 1 of #text > DIV > DIV > DIV > DIV > BODY > HTML > #document to 1 of #text > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 1 of DIV > DIV > DIV > BODY > HTML > #document to 1 of #text > DIV > DIV > DIV > DIV > BODY > HTML > #document toDOMRange:range from 1 of #text > DIV > DIV > DIV > DIV > BODY > HTML > #document to 1 of #text > DIV > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 layer at (0,0) size 800x600
@@ -47,9 +47,10 @@ layer at (0,0) size 800x600
             RenderBlock (anonymous) at (0,0) size 780x28
               RenderText {#text} at (0,0) size 78x28
                 text run at (0,0) width 78: "line one"
+              RenderBR {BR} at (78,22) size 0x0
             RenderBlock {DIV} at (0,28) size 780x28
               RenderText {#text} at (0,0) size 7x28
                 text run at (0,0) width 7: "l"
               RenderText {#text} at (7,0) size 72x28
                 text run at (7,0) width 72: "ine two"
-caret: position 1 of child 0 {#text} of child 1 {DIV} of child 1 {DIV} of child 1 {DIV} of child 3 {DIV} of child 1 {BODY} of child 0 {HTML} of document
+caret: position 1 of child 0 {#text} of child 2 {DIV} of child 1 {DIV} of child 1 {DIV} of child 3 {DIV} of child 1 {BODY} of child 0 {HTML} of document
index 66e97a2..d7a1e22 100644 (file)
@@ -7,7 +7,7 @@ EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 EDITING DELEGATE: shouldInsertText:hello replacingDOMRange:range from 0 of DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 5 of #text > B > DIV > DIV > BODY > HTML > #document to 5 of #text > B > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 5 of #text > B > DIV > DIV > DIV > BODY > HTML > #document to 5 of #text > B > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 layer at (0,0) size 800x600
@@ -42,7 +42,9 @@ layer at (0,0) size 800x600
           RenderText {#text} at (0,0) size 0x0
       RenderBlock {DIV} at (0,264) size 784x32
         RenderBlock {DIV} at (0,0) size 784x32 [border: (2px solid #FF0000)]
-          RenderInline {B} at (0,0) size 50x28
-            RenderText {#text} at (2,2) size 50x28
-              text run at (2,2) width 50: "hello"
-caret: position 5 of child 0 {#text} of child 0 {B} of child 1 {DIV} of child 3 {DIV} of child 1 {BODY} of child 0 {HTML} of document
+          RenderBlock {DIV} at (2,2) size 780x28
+            RenderInline {B} at (0,0) size 50x28
+              RenderText {#text} at (0,0) size 50x28
+                text run at (0,0) width 50: "hello"
+          RenderBlock (anonymous) at (2,30) size 780x0
+caret: position 5 of child 0 {#text} of child 0 {B} of child 0 {DIV} of child 1 {DIV} of child 3 {DIV} of child 1 {BODY} of child 0 {HTML} of document
index 33a1322..36f699a 100644 (file)
@@ -8,7 +8,7 @@ EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 EDITING DELEGATE: shouldInsertNode:#document-fragment replacingDOMRange:range from 0 of PRE > DIV > DIV > BODY > HTML > #document to 0 of PRE > DIV > DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 7 of #text > PRE > DIV > DIV > BODY > HTML > #document to 7 of #text > PRE > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 7 of #text > PRE > PRE > DIV > DIV > BODY > HTML > #document to 7 of #text > PRE > PRE > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 layer at (0,0) size 800x600
@@ -45,8 +45,10 @@ layer at (0,0) size 800x600
       RenderBlock {DIV} at (0,340) size 784x108
         RenderBlock {DIV} at (0,0) size 784x108 [border: (2px solid #FF0000)]
           RenderBlock {PRE} at (2,26) size 780x56
-            RenderText {#text} at (0,0) size 42x56
-              text run at (0,0) width 42: "foo"
-              text run at (42,0) width 0: " "
-              text run at (0,28) width 42: "bar"
-caret: position 7 of child 0 {#text} of child 1 {PRE} of child 1 {DIV} of child 3 {DIV} of child 1 {BODY} of child 0 {HTML} of document
+            RenderBlock {PRE} at (0,0) size 780x56
+              RenderText {#text} at (0,0) size 42x56
+                text run at (0,0) width 42: "foo"
+                text run at (42,0) width 0: " "
+                text run at (0,28) width 42: "bar"
+            RenderBlock (anonymous) at (0,80) size 780x0
+caret: position 7 of child 0 {#text} of child 0 {PRE} of child 1 {PRE} of child 1 {DIV} of child 3 {DIV} of child 1 {BODY} of child 0 {HTML} of document
index bb8ebf6..a6a6549 100644 (file)
@@ -4,7 +4,7 @@ EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotificatio
 EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of PRE > DIV > DIV > BODY > HTML > #document to 0 of PRE > DIV > DIV > BODY > HTML > #document toDOMRange:range from 0 of #text > PRE > DIV > DIV > BODY > HTML > #document to 7 of #text > PRE > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: shouldInsertNode:#document-fragment replacingDOMRange:range from 0 of #text > PRE > DIV > DIV > BODY > HTML > #document to 7 of #text > PRE > DIV > DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 7 of #text > PRE > DIV > DIV > BODY > HTML > #document to 7 of #text > PRE > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 7 of #text > PRE > PRE > DIV > DIV > BODY > HTML > #document to 7 of #text > PRE > PRE > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 layer at (0,0) size 800x600
@@ -26,8 +26,10 @@ layer at (0,0) size 800x600
       RenderBlock {DIV} at (0,49) size 784x30
         RenderBlock {DIV} at (0,0) size 784x30
           RenderBlock {PRE} at (0,0) size 784x30
-            RenderText {#text} at (0,0) size 24x30
-              text run at (0,0) width 24: "foo"
-              text run at (24,0) width 0: " "
-              text run at (0,15) width 24: "bar"
-caret: position 7 of child 0 {#text} of child 1 {PRE} of child 1 {DIV} of child 3 {DIV} of child 1 {BODY} of child 0 {HTML} of document
+            RenderBlock {PRE} at (0,0) size 784x30
+              RenderText {#text} at (0,0) size 24x30
+                text run at (0,0) width 24: "foo"
+                text run at (24,0) width 0: " "
+                text run at (0,15) width 24: "bar"
+            RenderBlock (anonymous) at (0,43) size 784x0
+caret: position 7 of child 0 {#text} of child 0 {PRE} of child 1 {PRE} of child 1 {DIV} of child 3 {DIV} of child 1 {BODY} of child 0 {HTML} of document
index ef7389b..e8c686e 100644 (file)
@@ -1 +1 @@
-ce343032b993d8881ce02fe72de0c59f
\ No newline at end of file
+2f9ab2df8060fb2532be8c53c18cb029
\ No newline at end of file
index d131304..7bbb0c3 100644 (file)
Binary files a/LayoutTests/editing/pasteboard/paste-table-001-expected.png and b/LayoutTests/editing/pasteboard/paste-table-001-expected.png differ
index 7b4ecd6..1d52449 100644 (file)
@@ -39,7 +39,7 @@ EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotificatio
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: shouldInsertNode:#document-fragment replacingDOMRange:range from 2 of TABLE > P > DIV > BODY > HTML > #document to 2 of TABLE > P > DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 2 of TABLE > P > DIV > BODY > HTML > #document to 2 of TABLE > P > DIV > BODY > HTML > #document toDOMRange:range from 32 of #text > TD > TR > TBODY > TABLE > DIV > BODY > HTML > #document to 32 of #text > TD > TR > TBODY > TABLE > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 2 of TABLE > P > DIV > BODY > HTML > #document to 2 of TABLE > P > DIV > BODY > HTML > #document toDOMRange:range from 32 of #text > TD > TR > TBODY > TABLE > P > DIV > BODY > HTML > #document to 32 of #text > TD > TR > TBODY > TABLE > P > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 layer at (0,0) size 800x600
@@ -53,7 +53,7 @@ layer at (0,0) size 800x600
             RenderText {#text} at (0,0) size 161x28
               text run at (0,0) width 161: "Empty table cell"
           RenderText {#text} at (0,0) size 0x0
-        RenderBlock {P} at (14,66) size 756x54
+        RenderBlock {P} at (14,66) size 756x108
           RenderTable {TABLE} at (0,0) size 292x54 [border: (2px outset #808080)]
             RenderTableSection {TBODY} at (2,2) size 288x50
               RenderTableRow {TR} at (0,2) size 288x22
@@ -68,18 +68,18 @@ layer at (0,0) size 800x600
                 RenderTableCell {TD} at (85,26) size 201x22 [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
                   RenderText {#text} at (2,2) size 197x18
                     text run at (2,2) width 197: "I should be in the right column."
-        RenderTable {TABLE} at (14,144) size 292x54 [border: (2px outset #808080)]
-          RenderTableSection {TBODY} at (2,2) size 288x50
-            RenderTableRow {TR} at (0,2) size 288x22
-              RenderTableCell {TD} at (2,2) size 81x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
-                RenderText {#text} at (2,2) size 77x18
-                  text run at (2,2) width 77: "Left column"
-              RenderTableCell {TD} at (85,2) size 201x22 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
-                RenderText {#text} at (2,2) size 86x18
-                  text run at (2,2) width 86: "Right column"
-            RenderTableRow {TR} at (0,26) size 288x22
-              RenderTableCell {TD} at (2,35) size 81x4 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
-              RenderTableCell {TD} at (85,26) size 201x22 [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
-                RenderText {#text} at (2,2) size 197x18
-                  text run at (2,2) width 197: "I should be in the right column."
-caret: position 32 of child 0 {#text} of child 1 {TD} of child 1 {TR} of child 0 {TBODY} of child 4 {TABLE} of child 1 {DIV} of child 1 {BODY} of child 0 {HTML} of document
+          RenderTable {TABLE} at (0,54) size 292x54 [border: (2px outset #808080)]
+            RenderTableSection {TBODY} at (2,2) size 288x50
+              RenderTableRow {TR} at (0,2) size 288x22
+                RenderTableCell {TD} at (2,2) size 81x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+                  RenderText {#text} at (2,2) size 77x18
+                    text run at (2,2) width 77: "Left column"
+                RenderTableCell {TD} at (85,2) size 201x22 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+                  RenderText {#text} at (2,2) size 86x18
+                    text run at (2,2) width 86: "Right column"
+              RenderTableRow {TR} at (0,26) size 288x22
+                RenderTableCell {TD} at (2,35) size 81x4 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
+                RenderTableCell {TD} at (85,26) size 201x22 [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
+                  RenderText {#text} at (2,2) size 197x18
+                    text run at (2,2) width 197: "I should be in the right column."
+caret: position 32 of child 0 {#text} of child 1 {TD} of child 1 {TR} of child 0 {TBODY} of child 2 {TABLE} of child 3 {P} of child 1 {DIV} of child 1 {BODY} of child 0 {HTML} of document
index ccc3eee..e08bed8 100644 (file)
@@ -4,7 +4,7 @@ EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotificatio
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: shouldInsertNode:#document-fragment replacingDOMRange:range from 0 of #text > DIV > BODY > HTML > #document to 9 of #text > DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of DIV > BODY > HTML > #document to 0 of DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 1 of DIV > BODY > HTML > #document to 1 of DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 layer at (0,0) size 800x600
@@ -21,15 +21,16 @@ layer at (0,0) size 800x600
             RenderTableCell {TD} at (29,2) size 26x20 [r=0 c=1 rs=1 cs=1]
               RenderText {#text} at (1,1) size 24x18
                 text run at (1,1) width 24: "two"
-      RenderTable {TABLE} at (0,24) size 57x24
-        RenderTableSection {TBODY} at (0,0) size 57x24
-          RenderTableRow {TR} at (0,2) size 57x20
-            RenderTableCell {TD} at (2,2) size 25x20 [r=0 c=0 rs=1 cs=1]
-              RenderText {#text} at (1,1) size 23x18
-                text run at (1,1) width 23: "one"
-            RenderTableCell {TD} at (29,2) size 26x20 [r=0 c=1 rs=1 cs=1]
-              RenderText {#text} at (1,1) size 24x18
-                text run at (1,1) width 24: "two"
-      RenderBlock {DIV} at (0,48) size 784x18
-        RenderBR {BR} at (0,0) size 0x18
-caret: position 0 of child 0 {BR} of child 3 {DIV} of child 1 {BODY} of child 0 {HTML} of document
+      RenderBlock {DIV} at (0,24) size 784x42
+        RenderTable {TABLE} at (0,0) size 57x24
+          RenderTableSection {TBODY} at (0,0) size 57x24
+            RenderTableRow {TR} at (0,2) size 57x20
+              RenderTableCell {TD} at (2,2) size 25x20 [r=0 c=0 rs=1 cs=1]
+                RenderText {#text} at (1,1) size 23x18
+                  text run at (1,1) width 23: "one"
+              RenderTableCell {TD} at (29,2) size 26x20 [r=0 c=1 rs=1 cs=1]
+                RenderText {#text} at (1,1) size 24x18
+                  text run at (1,1) width 24: "two"
+        RenderBlock (anonymous) at (0,24) size 784x18
+          RenderBR {BR} at (0,0) size 0x18
+caret: position 0 of child 1 {BR} of child 2 {DIV} of child 1 {BODY} of child 0 {HTML} of document
index 7360ba5..23b4c50 100644 (file)
@@ -10,7 +10,7 @@ EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotificatio
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: shouldInsertNode:#document-fragment replacingDOMRange:range from 7 of #text > SPAN > DIV > BODY > HTML > #document to 7 of #text > SPAN > DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 3 of #text > SPAN > SPAN > DIV > BODY > HTML > #document to 3 of #text > SPAN > SPAN > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 4 of #text > SPAN > DIV > BODY > HTML > #document to 4 of #text > SPAN > DIV > BODY > HTML > #document toDOMRange:range from 3 of #text > SPAN > SPAN > DIV > BODY > HTML > #document to 3 of #text > SPAN > SPAN > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 layer at (0,0) size 800x600
@@ -22,10 +22,10 @@ layer at (0,0) size 800x600
         RenderInline {SPAN} at (0,0) size 140x28
           RenderText {#text} at (14,14) size 69x28
             text run at (14,14) width 69: "foo bar"
-          RenderInline {SPAN} at (0,0) size 71x28
+          RenderInline {SPAN} at (0,0) size 31x28
             RenderText {#text} at (83,14) size 31x28
               text run at (83,14) width 31: "bar"
-            RenderInline {SPAN} at (0,0) size 40x28
-              RenderText {#text} at (114,14) size 40x28
-                text run at (114,14) width 40: " baz"
+          RenderText {#text} at (114,14) size 40x28
+            text run at (114,14) width 40: " baz"
+        RenderText {#text} at (0,0) size 0x0
 caret: position 3 of child 0 {#text} of child 1 {SPAN} of child 1 {SPAN} of child 1 {DIV} of child 1 {BODY} of child 0 {HTML} of document
index ee6cb87..40b921c 100644 (file)
@@ -122,6 +122,7 @@ layer at (0,0) size 800x600
               text run at (14,14) width 80: "Omitted"
             RenderText {#text} at (94,14) size 285x28
               text run at (94,14) width 285: "is a tide in the affairs of men,"
+          RenderBlock (anonymous) at (14,70) size 728x0
           RenderBlock {DIV} at (14,70) size 728x56 [border: (2px solid #FF0000)]
             RenderText {#text} at (14,14) size 434x28
               text run at (14,14) width 434: "Which taken at the flood leads on to fortune."
index 7b7fa72..189e608 100644 (file)
@@ -1 +1 @@
-724e1c91f5a277a7584c134c8fdafafa
\ No newline at end of file
+5903eafb96288829b98fc3e96cc0bb7d
\ No newline at end of file
index d315118..06bfdca 100644 (file)
Binary files a/LayoutTests/editing/pasteboard/paste-text-007-expected.png and b/LayoutTests/editing/pasteboard/paste-text-007-expected.png differ
index 32948a3..4e58b65 100644 (file)
@@ -45,22 +45,21 @@ EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 EDITING DELEGATE: shouldInsertNode:#document-fragment replacingDOMRange:range from 0 of DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
-EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > BODY > HTML > #document toDOMRange:range from 0 of DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
 layer at (0,0) size 800x600
   RenderBlock {HTML} at (0,0) size 800x600
     RenderBody {BODY} at (8,8) size 784x584
-      RenderBlock {DIV} at (0,0) size 784x280 [border: (2px solid #FF0000)]
-        RenderBlock (anonymous) at (14,14) size 756x28
+      RenderBlock {DIV} at (0,0) size 784x252 [border: (2px solid #FF0000)]
+        RenderBlock (anonymous) at (14,14) size 756x56
           RenderText {#text} at (0,0) size 348x28
             text run at (0,0) width 348: "There is a tide in the affairs of men,"
-        RenderBlock {DIV} at (14,42) size 756x56 [border: (2px solid #FF0000)]
-          RenderText {#text} at (14,14) size 348x28
-            text run at (14,14) width 348: "There is a tide in the affairs of men,"
-        RenderBlock {DIV} at (14,98) size 756x168 [border: (2px solid #FF0000)]
+          RenderBR {BR} at (348,22) size 0x0
+          RenderText {#text} at (0,28) size 348x28
+            text run at (0,28) width 348: "There is a tide in the affairs of men,"
+        RenderBlock {DIV} at (14,70) size 756x168 [border: (2px solid #FF0000)]
           RenderBlock (anonymous) at (14,14) size 728x28
             RenderText {#text} at (0,0) size 434x28
               text run at (0,0) width 434: "Which taken at the flood leads on to fortune."
@@ -71,4 +70,4 @@ layer at (0,0) size 800x600
             RenderBlock {DIV} at (14,42) size 700x56 [border: (2px solid #FF0000)]
               RenderText {#text} at (14,14) size 357x28
                 text run at (14,14) width 357: "Is bound in shallows and in miseries."
-caret: position 0 of child 0 {#text} of child 2 {DIV} of child 1 {DIV} of child 1 {BODY} of child 0 {HTML} of document
+caret: position 0 of child 0 {#text} of child 3 {DIV} of child 1 {DIV} of child 1 {BODY} of child 0 {HTML} of document
index 531a094..ebca07b 100644 (file)
@@ -125,6 +125,7 @@ layer at (0,0) size 800x600
             text run at (0,0) width 197: "Upon such a full sea"
           RenderText {#text} at (197,0) size 243x28
             text run at (197,0) width 243: "shallows and in miseries."
+      RenderBlock (anonymous) at (0,140) size 784x0
       RenderBlock {DIV} at (0,140) size 784x56 [border: (2px solid #FF0000)]
         RenderText {#text} at (14,14) size 197x28
           text run at (14,14) width 197: "Upon such a full sea"
index 6e25788..264b7f5 100644 (file)
@@ -102,6 +102,7 @@ layer at (0,0) size 800x600
         RenderBlock (anonymous) at (14,98) size 756x28
           RenderText {#text} at (0,0) size 17x28
             text run at (0,0) width 17: "U"
+      RenderBlock (anonymous) at (0,140) size 784x0
       RenderBlock {DIV} at (0,140) size 784x56 [border: (2px solid #FF0000)]
         RenderText {#text} at (14,14) size 17x28
           text run at (14,14) width 17: "U"
index 153b5d2..899b26e 100644 (file)
@@ -67,4 +67,5 @@ layer at (0,0) size 800x600
           text run at (14,70) width 74: "of men."
         RenderText {#text} at (88,70) size 74x28
           text run at (88,70) width 74: "of men."
+      RenderBlock (anonymous) at (0,112) size 784x0
 caret: position 7 of child 4 {#text} of child 1 {DIV} of child 1 {BODY} of child 0 {HTML} of document
index 811b8e3..10964c8 100644 (file)
@@ -8,7 +8,7 @@ EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 5 of #text > B > FONT
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 EDITING DELEGATE: shouldInsertNode:#document-fragment replacingDOMRange:range from 0 of P > BODY > HTML > #document to 0 of P > BODY > HTML > #document givenAction:WebViewInsertActionPasted
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 5 of #text > B > FONT > P > BODY > HTML > #document to 5 of #text > B > FONT > P > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 5 of #text > P > B > FONT > P > BODY > HTML > #document to 5 of #text > P > B > FONT > P > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 layer at (0,0) size 800x600
@@ -26,14 +26,18 @@ layer at (0,0) size 800x600
           RenderInline {B} at (0,0) size 55x20
             RenderText {#text} at (0,0) size 55x20
               text run at (0,0) width 55: "there"
-      RenderBlock {P} at (0,74) size 784x21
-        RenderInline {FONT} at (0,0) size 55x20
-          RenderInline {B} at (0,0) size 55x20
+      RenderBlock {P} at (0,74) size 784x58
+        RenderBlock (anonymous) at (0,0) size 784x0
+          RenderInline {FONT} at (0,0) size 0x0
+            RenderInline {B} at (0,0) size 0x0
+        RenderBlock (anonymous) at (0,0) size 784x58
+          RenderBlock {P} at (0,0) size 784x21
             RenderText {#text} at (0,0) size 55x20
               text run at (0,0) width 55: "hello"
-      RenderBlock {P} at (0,111) size 784x21
-        RenderInline {FONT} at (0,0) size 55x20
-          RenderInline {B} at (0,0) size 55x20
+          RenderBlock {P} at (0,37) size 784x21
             RenderText {#text} at (0,0) size 55x20
               text run at (0,0) width 55: "there"
-caret: position 5 of child 0 {#text} of child 0 {B} of child 0 {FONT} of child 5 {P} of child 1 {BODY} of child 0 {HTML} of document
+        RenderBlock (anonymous) at (0,74) size 784x0
+          RenderInline {FONT} at (0,0) size 0x0
+            RenderInline {B} at (0,0) size 0x0
+caret: position 5 of child 0 {#text} of child 1 {P} of child 0 {B} of child 0 {FONT} of child 4 {P} of child 1 {BODY} of child 0 {HTML} of document
index 69c2387..3c85426 100644 (file)
@@ -1 +1 @@
-dcf4b064c0e03e43588e9638c3a557b0
\ No newline at end of file
+75a2782e88e3dbf61affd4d71453ae6a
\ No newline at end of file
index c49151a..e93919a 100644 (file)
Binary files a/LayoutTests/editing/pasteboard/paste-text-012-expected.png and b/LayoutTests/editing/pasteboard/paste-text-012-expected.png differ
index 71637ce..af93c3e 100644 (file)
@@ -1,4 +1,4 @@
-EDITING DELEGATE: shouldBeginEditingInDOMRange:range from 0 of BODY > HTML > #document to 12 of BODY > HTML > #document
+EDITING DELEGATE: shouldBeginEditingInDOMRange:range from 0 of BODY > HTML > #document to 10 of BODY > HTML > #document
 EDITING DELEGATE: webViewDidBeginEditing:WebViewDidBeginEditingNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
@@ -7,7 +7,7 @@ EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotificatio
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: shouldInsertNode:#document-fragment replacingDOMRange:range from 0 of DIV > BODY > HTML > #document to 0 of DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of DIV > BODY > HTML > #document to 0 of DIV > BODY > HTML > #document toDOMRange:range from 0 of BLOCKQUOTE > DIV > DIV > BODY > HTML > #document to 0 of BLOCKQUOTE > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of DIV > BODY > HTML > #document to 0 of DIV > BODY > HTML > #document toDOMRange:range from 0 of BLOCKQUOTE > DIV > DIV > DIV > BODY > HTML > #document to 0 of BLOCKQUOTE > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 layer at (0,0) size 800x600
@@ -25,27 +25,17 @@ layer at (0,0) size 800x600
           text run at (252,0) width 488: " \"Paste as Quotation\" in Mail just pastes (<blockquote> tag seems to be lost). "
           text run at (0,18) width 496: "Should see two boxes with blockquoted \"foo\" text, followed by an empty box."
         RenderBR {BR} at (496,32) size 0x0
-      RenderBlock {P} at (0,52) size 784x54
-        RenderInline {B} at (0,0) size 749x36
-          RenderText {#text} at (0,0) size 749x36
-            text run at (0,0) width 416: "This demonstrates a bug: an extra line is added during paste. "
-            text run at (416,0) width 333: "Pasting a line of text plus an interchange newline "
-            text run at (0,18) width 210: "should result in one empty line."
-        RenderText {#text} at (210,18) size 779x36
-          text run at (210,18) width 4: " "
-          text run at (214,18) width 565: "We need to prune the empty end div in the same way that we would prune it if it had a br "
-          text run at (0,36) width 108: "propping it open."
-      RenderBlock {DIV} at (0,122) size 784x104 [border: (2px solid #FF0000)]
+      RenderBlock {DIV} at (0,36) size 784x104 [border: (2px solid #FF0000)]
         RenderBlock {DIV} at (14,38) size 756x28
           RenderBlock {BLOCKQUOTE} at (40,0) size 676x28
             RenderText {#text} at (0,0) size 32x28
               text run at (0,0) width 32: "foo"
-      RenderBlock {DIV} at (0,226) size 784x156 [border: (2px solid #FF0000)]
-        RenderBlock {DIV} at (14,38) size 756x80
-          RenderBlock {BLOCKQUOTE} at (40,0) size 676x28
-            RenderText {#text} at (0,0) size 32x28
-              text run at (0,0) width 32: "foo"
-          RenderBlock {BLOCKQUOTE} at (40,52) size 676x28
-            RenderBR {BR} at (0,0) size 0x28
-      RenderBlock {DIV} at (0,382) size 784x28 [border: (2px solid #FF0000)]
-caret: position 0 of child 0 {BR} of child 1 {BLOCKQUOTE} of child 0 {DIV} of child 9 {DIV} of child 1 {BODY} of child 0 {HTML} of document
+      RenderBlock {DIV} at (0,140) size 784x184 [border: (2px solid #FF0000)]
+        RenderBlock {DIV} at (14,14) size 756x156 [border: (2px solid #FF0000)]
+          RenderBlock {DIV} at (14,38) size 728x80
+            RenderBlock {BLOCKQUOTE} at (40,0) size 648x28
+              RenderText {#text} at (0,0) size 32x28
+                text run at (0,0) width 32: "foo"
+            RenderBlock {BLOCKQUOTE} at (40,52) size 648x28
+              RenderBR {BR} at (0,0) size 0x28
+caret: position 0 of child 0 {BR} of child 1 {BLOCKQUOTE} of child 0 {DIV} of child 0 {DIV} of child 7 {DIV} of child 1 {BODY} of child 0 {HTML} of document
index d78abfb..42fb3b0 100644 (file)
@@ -29,7 +29,6 @@ function editingTest() {
 
 See this bug: <a href="rdar://problem/3918712">&lt;rdar://problem/3918712&gt;</a> "Paste as Quotation" in Mail just pastes (&lt;blockquote&gt; tag seems to be lost).
 Should see two boxes with blockquoted "foo" text, followed by an empty box.<br>
-<p><b>This demonstrates a bug: an extra line is added during paste.  Pasting a line of text plus an interchange newline should result in one empty line.</b>  We need to prune the empty end div in the same way that we would prune it if it had a br propping it open.</p>
 
 <div id="test" class="editing"><div><blockquote>foo</blockquote></div></div>
 <div class="editing"></div>
index 2757019..9426148 100644 (file)
@@ -1 +1 @@
-4e5ac7980d5e6c1378183b6fad6d7b74
\ No newline at end of file
+20c3f15a73f638d39647191d2583848e
\ No newline at end of file
index b525bde..eddb3b0 100644 (file)
Binary files a/LayoutTests/editing/pasteboard/paste-text-013-expected.png and b/LayoutTests/editing/pasteboard/paste-text-013-expected.png differ
index df0a64c..10161c4 100644 (file)
@@ -10,7 +10,7 @@ EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of DIV > BODY > HTML
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 EDITING DELEGATE: shouldInsertNode:#document-fragment replacingDOMRange:range from 1 of #text > DIV > BODY > HTML > #document to 1 of #text > DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 1 of #text > DIV > BODY > HTML > #document to 1 of #text > DIV > BODY > HTML > #document toDOMRange:range from 0 of BLOCKQUOTE > DIV > BODY > HTML > #document to 0 of BLOCKQUOTE > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 1 of #text > DIV > BODY > HTML > #document to 1 of #text > DIV > BODY > HTML > #document toDOMRange:range from 0 of BLOCKQUOTE > DIV > DIV > BODY > HTML > #document to 0 of BLOCKQUOTE > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 layer at (0,0) size 800x600
@@ -34,13 +34,14 @@ layer at (0,0) size 800x600
           RenderBlock {BLOCKQUOTE} at (40,0) size 676x28
             RenderText {#text} at (0,0) size 32x28
               text run at (0,0) width 32: "foo"
-      RenderBlock {DIV} at (0,182) size 784x184 [border: (2px solid #FF0000)]
-        RenderBlock (anonymous) at (14,14) size 756x28
-          RenderText {#text} at (0,0) size 12x28
-            text run at (0,0) width 12: "x"
-        RenderBlock {BLOCKQUOTE} at (54,66) size 676x28
-          RenderText {#text} at (0,0) size 32x28
-            text run at (0,0) width 32: "foo"
-        RenderBlock {BLOCKQUOTE} at (54,118) size 676x28
-          RenderBR {BR} at (0,0) size 0x28
-caret: position 0 of child 0 {BR} of child 2 {BLOCKQUOTE} of child 7 {DIV} of child 1 {BODY} of child 0 {HTML} of document
+      RenderBlock {DIV} at (0,182) size 784x56 [border: (2px solid #FF0000)]
+        RenderText {#text} at (14,14) size 12x28
+          text run at (14,14) width 12: "x"
+      RenderBlock {DIV} at (0,238) size 784x156 [border: (2px solid #FF0000)]
+        RenderBlock {DIV} at (14,38) size 756x80
+          RenderBlock {BLOCKQUOTE} at (40,0) size 676x28
+            RenderText {#text} at (0,0) size 32x28
+              text run at (0,0) width 32: "foo"
+          RenderBlock {BLOCKQUOTE} at (40,52) size 676x28
+            RenderBR {BR} at (0,0) size 0x28
+caret: position 0 of child 0 {BR} of child 1 {BLOCKQUOTE} of child 0 {DIV} of child 8 {DIV} of child 1 {BODY} of child 0 {HTML} of document
index 0eef21e..134b9c4 100644 (file)
@@ -14,14 +14,14 @@ EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 EDITING DELEGATE: shouldInsertNode:#document-fragment replacingDOMRange:range from 0 of P > DIV > DIV > BODY > HTML > #document to 0 of P > DIV > DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 3 of #text > P > DIV > DIV > BODY > HTML > #document to 3 of #text > P > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 3 of #text > P > P > DIV > DIV > BODY > HTML > #document to 3 of #text > P > P > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 3 of #text > P > DIV > DIV > BODY > HTML > #document to 3 of #text > P > DIV > DIV > BODY > HTML > #document toDOMRange:range from 0 of P > DIV > DIV > BODY > HTML > #document to 0 of P > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 3 of #text > P > P > DIV > DIV > BODY > HTML > #document to 3 of #text > P > P > DIV > DIV > BODY > HTML > #document toDOMRange:range from 0 of P > P > DIV > DIV > BODY > HTML > #document to 0 of P > P > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
-EDITING DELEGATE: shouldInsertNode:#document-fragment replacingDOMRange:range from 0 of P > DIV > DIV > BODY > HTML > #document to 0 of P > DIV > DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 3 of #text > P > DIV > DIV > BODY > HTML > #document to 3 of #text > P > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldInsertNode:#document-fragment replacingDOMRange:range from 0 of P > P > DIV > DIV > BODY > HTML > #document to 0 of P > P > DIV > DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 3 of #text > P > P > P > DIV > DIV > BODY > HTML > #document to 3 of #text > P > P > P > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 layer at (0,0) size 800x600
@@ -31,16 +31,20 @@ layer at (0,0) size 800x600
     RenderBody {BODY} at (8,8) size 784x584
       RenderBlock {DIV} at (0,0) size 784x140
         RenderBlock {DIV} at (0,0) size 784x140 [border: (2px solid #FF0000)]
-          RenderBlock {P} at (14,14) size 756x28
-            RenderText {#text} at (0,0) size 32x28
-              text run at (0,0) width 32: "foo"
-          RenderBlock {P} at (14,42) size 756x28
-            RenderText {#text} at (0,0) size 31x28
-              text run at (0,0) width 31: "bar"
-          RenderBlock {P} at (14,70) size 756x28
-            RenderText {#text} at (0,0) size 32x28
-              text run at (0,0) width 32: "foo"
-          RenderBlock {P} at (14,98) size 756x28
-            RenderText {#text} at (0,0) size 31x28
-              text run at (0,0) width 31: "bar"
-caret: position 3 of child 0 {#text} of child 3 {P} of child 1 {DIV} of child 1 {DIV} of child 1 {BODY} of child 0 {HTML} of document
+          RenderBlock {P} at (14,14) size 756x112
+            RenderBlock {P} at (0,0) size 756x28
+              RenderText {#text} at (0,0) size 32x28
+                text run at (0,0) width 32: "foo"
+            RenderBlock {P} at (0,28) size 756x28
+              RenderText {#text} at (0,0) size 31x28
+                text run at (0,0) width 31: "bar"
+            RenderBlock (anonymous) at (0,56) size 756x0
+            RenderBlock {P} at (0,56) size 756x56
+              RenderBlock {P} at (0,0) size 756x28
+                RenderText {#text} at (0,0) size 32x28
+                  text run at (0,0) width 32: "foo"
+              RenderBlock {P} at (0,28) size 756x28
+                RenderText {#text} at (0,0) size 31x28
+                  text run at (0,0) width 31: "bar"
+              RenderBlock (anonymous) at (0,56) size 756x0
+caret: position 3 of child 0 {#text} of child 1 {P} of child 2 {P} of child 0 {P} of child 1 {DIV} of child 1 {DIV} of child 1 {BODY} of child 0 {HTML} of document
index 135ba4c..236dd50 100644 (file)
@@ -5,7 +5,7 @@ EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotificatio
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: shouldInsertNode:#document-fragment replacingDOMRange:range from 5 of #text > DIV > DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of DIV > DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 1 of DIV > DIV > DIV > BODY > HTML > #document to 1 of DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 layer at (0,0) size 800x600
@@ -39,12 +39,13 @@ layer at (0,0) size 800x600
               text run at (0,0) width 35: "one"
           RenderBlock {DIV} at (2,30) size 780x28
             RenderBR {BR} at (0,0) size 0x28
-          RenderBlock {DIV} at (2,58) size 780x28
-            RenderText {#text} at (0,0) size 36x28
-              text run at (0,0) width 36: "two"
-          RenderBlock {DIV} at (2,86) size 780x28
-            RenderBR {BR} at (0,0) size 0x28
+          RenderBlock {DIV} at (2,58) size 780x56
+            RenderBlock {DIV} at (0,0) size 780x28
+              RenderText {#text} at (0,0) size 36x28
+                text run at (0,0) width 36: "two"
+            RenderBlock (anonymous) at (0,28) size 780x28
+              RenderBR {BR} at (0,0) size 0x28
           RenderBlock {DIV} at (2,114) size 780x28
             RenderText {#text} at (0,0) size 49x28
               text run at (0,0) width 49: "three"
-caret: position 0 of child 0 {BR} of child 6 {DIV} of child 1 {DIV} of child 3 {DIV} of child 1 {BODY} of child 0 {HTML} of document
+caret: position 0 of child 1 {BR} of child 5 {DIV} of child 1 {DIV} of child 3 {DIV} of child 1 {BODY} of child 0 {HTML} of document
index 3721034..c06614d 100644 (file)
@@ -1 +1 @@
-a3445382dec1905883993f121d2c4882
\ No newline at end of file
+60a3a69108263e9487ae750e514fbcc3
\ No newline at end of file
index ab6a304..aa00f53 100644 (file)
Binary files a/LayoutTests/editing/pasteboard/paste-text-019-expected.png and b/LayoutTests/editing/pasteboard/paste-text-019-expected.png differ
index 87a0ffe..62bb1af 100644 (file)
@@ -14,7 +14,7 @@ EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotificatio
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: shouldInsertText:Bar replacingDOMRange:range from 4 of #text > SPAN > DIV > BODY > HTML > #document to 4 of #text > SPAN > DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 4 of #text > SPAN > DIV > BODY > HTML > #document to 4 of #text > SPAN > DIV > BODY > HTML > #document toDOMRange:range from 3 of #text > SPAN > DIV > BODY > HTML > #document to 3 of #text > SPAN > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 4 of #text > SPAN > DIV > BODY > HTML > #document to 4 of #text > SPAN > DIV > BODY > HTML > #document toDOMRange:range from 1 of #text > DIV > BODY > HTML > #document to 1 of #text > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 layer at (0,0) size 800x600
@@ -22,7 +22,14 @@ layer at (0,0) size 800x600
 layer at (0,0) size 800x600
   RenderBlock {HTML} at (0,0) size 800x600
     RenderBody {BODY} at (8,8) size 784x584
-      RenderBlock {DIV} at (0,0) size 784x288 [border: (2px solid #0000FF)]
+      RenderBlock {P} at (0,0) size 784x36
+        RenderInline {B} at (0,0) size 171x18
+          RenderText {#text} at (0,0) size 171x18
+            text run at (0,0) width 171: "This demonstrates a bug:"
+        RenderText {#text} at (171,0) size 757x36
+          text run at (171,0) width 586: " two adjacent text nodes render with a line break between them and cause focus ring drawing"
+          text run at (0,18) width 116: "problems (10428)."
+      RenderBlock {DIV} at (0,52) size 784x288 [border: (2px solid #0000FF)]
         RenderBlock {DIV} at (14,14) size 756x84
           RenderText {#text} at (0,0) size 67x28
             text run at (0,0) width 67: "Tests: "
@@ -47,14 +54,19 @@ layer at (0,0) size 800x600
           RenderBlock (anonymous) at (0,132) size 756x28
             RenderText {#text} at (0,0) size 155x28
               text run at (0,0) width 155: "(case sensitive)."
-      RenderBlock {DIV} at (0,312) size 784x32 [border: (2px solid #FF0000)]
-        RenderInline {SPAN} at (0,0) size 153x28
-          RenderInline {SPAN} at (0,0) size 78x28
-            RenderText {#text} at (2,2) size 78x28
-              text run at (2,2) width 78: "Foo Bar"
-          RenderText {#text} at (80,2) size 40x28
-            text run at (80,2) width 40: " baz"
-          RenderText {#text} at (120,2) size 35x28
-            text run at (120,2) width 35: "Bar"
-        RenderText {#text} at (0,0) size 0x0
-caret: position 3 of child 2 {#text} of child 1 {SPAN} of child 3 {DIV} of child 1 {BODY} of child 0 {HTML} of document
+      RenderBlock {DIV} at (0,364) size 784x60 [border: (2px solid #FF0000)]
+        RenderBlock (anonymous) at (2,2) size 780x28
+          RenderInline {SPAN} at (0,0) size 118x28
+            RenderInline {SPAN} at (0,0) size 78x28
+              RenderText {#text} at (0,0) size 78x28
+                text run at (0,0) width 78: "Foo Bar"
+            RenderText {#text} at (78,0) size 40x28
+              text run at (78,0) width 40: " baz"
+        RenderBlock (anonymous) at (2,30) size 780x0
+        RenderBlock (anonymous) at (2,30) size 780x28
+          RenderInline {SPAN} at (0,0) size 35x28
+            RenderText {#text} at (0,0) size 35x28
+              text run at (0,0) width 35: "Bar"
+          RenderText {#text} at (35,0) size 6x28
+            text run at (35,0) width 6: " "
+caret: position 1 of child 2 {#text} of child 5 {DIV} of child 1 {BODY} of child 0 {HTML} of document
index 28ec1b5..c4c912d 100644 (file)
@@ -37,6 +37,7 @@ function editingTest() {
 <title>Editing Test</title> 
 </head> 
 <body>
+<p><b>This demonstrates a bug:</b> two adjacent text nodes render with a line break between them and cause focus ring drawing problems (10428).</p>
 <div class="explanation">
 <div class="scenario">
 Tests: 
index ecf1f2f..611d436 100644 (file)
@@ -19,14 +19,13 @@ layer at (0,0) size 800x600
         RenderInline {SPAN} at (0,0) size 155x28
           RenderText {#text} at (14,14) size 11x28
             text run at (14,14) width 11: "a"
-          RenderInline {SPAN} at (0,0) size 144x28
+          RenderInline {SPAN} at (0,0) size 23x28
             RenderText {#text} at (25,14) size 23x28
               text run at (25,14) width 23: "ax"
-            RenderInline {SPAN} at (0,0) size 121x28
-              RenderInline {SPAN} at (0,0) size 110x28
-                RenderText {#text} at (48,14) size 110x28
-                  text run at (48,14) width 110: "\x{9}\x{9}\x{9}"
-              RenderText {#text} at (158,14) size 11x28
-                text run at (158,14) width 11: "z"
-          RenderInline {SPAN} at (0,0) size 0x28
+          RenderInline {SPAN} at (0,0) size 110x28
+            RenderText {#text} at (48,14) size 110x28
+              text run at (48,14) width 110: "\x{9}\x{9}\x{9}"
+          RenderText {#text} at (158,14) size 11x28
+            text run at (158,14) width 11: "z"
+        RenderText {#text} at (0,0) size 0x0
 caret: position 2 of child 0 {#text} of child 1 {SPAN} of child 1 {SPAN} of child 1 {DIV} of child 1 {BODY} of child 0 {HTML} of document
index fc755e2..dc054a0 100644 (file)
@@ -5,7 +5,7 @@ EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotificatio
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: shouldInsertNode:#document-fragment replacingDOMRange:range from 1 of #text > SPAN > SPAN > DIV > BODY > HTML > #document to 1 of #text > SPAN > SPAN > DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 1 of #text > SPAN > SPAN > DIV > BODY > HTML > #document to 1 of #text > SPAN > SPAN > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 1 of #text > SPAN > SPAN > DIV > BODY > HTML > #document to 1 of #text > SPAN > SPAN > DIV > BODY > HTML > #document toDOMRange:range from 1 of #text > SPAN > SPAN > DIV > BODY > HTML > #document to 1 of #text > SPAN > SPAN > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 1 of #text > SPAN > SPAN > DIV > BODY > HTML > #document to 1 of #text > SPAN > SPAN > DIV > BODY > HTML > #document toDOMRange:range from 2 of #text > SPAN > SPAN > DIV > BODY > HTML > #document to 2 of #text > SPAN > SPAN > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
@@ -23,13 +23,13 @@ layer at (0,0) size 800x600
           RenderInline {SPAN} at (0,0) size 37x28
             RenderText {#text} at (25,14) size 37x28
               text run at (25,14) width 37: "\x{9}"
-          RenderInline {SPAN} at (0,0) size 107x28
+          RenderInline {SPAN} at (0,0) size 23x28
             RenderText {#text} at (62,14) size 23x28
               text run at (62,14) width 23: "ax"
-            RenderInline {SPAN} at (0,0) size 84x28
-              RenderInline {SPAN} at (0,0) size 73x28
-                RenderText {#text} at (85,14) size 73x28
-                  text run at (85,14) width 73: "\x{9}\x{9}"
-              RenderText {#text} at (158,14) size 11x28
-                text run at (158,14) width 11: "z"
+          RenderInline {SPAN} at (0,0) size 73x28
+            RenderText {#text} at (85,14) size 73x28
+              text run at (85,14) width 73: "\x{9}\x{9}"
+          RenderText {#text} at (158,14) size 11x28
+            text run at (158,14) width 11: "z"
+        RenderText {#text} at (0,0) size 0x0
 caret: position 2 of child 0 {#text} of child 2 {SPAN} of child 1 {SPAN} of child 1 {DIV} of child 1 {BODY} of child 0 {HTML} of document
index 7f5eadd..59f60f3 100644 (file)
@@ -25,10 +25,10 @@ layer at (0,0) size 800x600
           RenderInline {SPAN} at (0,0) size 133x28
             RenderText {#text} at (25,14) size 133x28
               text run at (25,14) width 133: "\x{9}\x{9}\x{9}"
-          RenderInline {SPAN} at (0,0) size 34x28
+          RenderInline {SPAN} at (0,0) size 23x28
             RenderText {#text} at (158,14) size 23x28
               text run at (158,14) width 23: "ax"
-            RenderInline {SPAN} at (0,0) size 11x28
-              RenderText {#text} at (181,14) size 11x28
-                text run at (181,14) width 11: "z"
+          RenderText {#text} at (181,14) size 11x28
+            text run at (181,14) width 11: "z"
+        RenderText {#text} at (0,0) size 0x0
 caret: position 2 of child 0 {#text} of child 2 {SPAN} of child 1 {SPAN} of child 1 {DIV} of child 1 {BODY} of child 0 {HTML} of document
index 4d2724a..9a18637 100644 (file)
@@ -2,7 +2,7 @@ EDITING DELEGATE: shouldBeginEditingInDOMRange:range from 0 of DIV > BODY > HTML
 EDITING DELEGATE: webViewDidBeginEditing:WebViewDidBeginEditingNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 2 of DIV > BODY > HTML > #document to 2 of DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 5 of #text > DIV > BODY > HTML > #document to 5 of #text > DIV > BODY > HTML > #document toDOMRange:range from 2 of DIV > BODY > HTML > #document to 2 of DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 layer at (0,0) size 800x600
index 8d0d7f3..e9d6cd1 100644 (file)
@@ -1,7 +1,7 @@
 EDITING DELEGATE: shouldBeginEditingInDOMRange:range from 0 of DIV > BODY > HTML > #document to 1 of DIV > BODY > HTML > #document
 EDITING DELEGATE: webViewDidBeginEditing:WebViewDidBeginEditingNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 85 of #text > DIV > SPAN > DIV > BODY > HTML > #document to 85 of #text > DIV > SPAN > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 85 of #text > DIV > DIV > BODY > HTML > #document to 85 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 layer at (0,0) size 800x600
@@ -17,12 +17,13 @@ layer at (0,0) size 800x600
           RenderText {#text} at (0,0) size 389x18
             text run at (0,0) width 389: "There should be an empty line between these two paragraphs."
           RenderInline {SPAN} at (0,0) size 0x18
-        RenderBlock (anonymous) at (1,21) size 778x42
+        RenderBlock (anonymous) at (1,21) size 778x20
           RenderBlock {DIV} at (2,0) size 774x20 [border: (1px solid #FF0000)]
             RenderBR {BR} at (1,1) size 0x18
-          RenderBlock {DIV} at (2,22) size 774x20 [border: (1px solid #FF0000)]
-            RenderText {#text} at (1,1) size 540x18
-              text run at (1,1) width 540: "This paragraph and the empty line should have be in their own divs with a red border."
-        RenderBlock (anonymous) at (1,65) size 778x0
+        RenderBlock (anonymous) at (1,43) size 778x0
           RenderInline {SPAN} at (0,0) size 0x0
-caret: position 85 of child 0 {#text} of child 1 {DIV} of child 1 {SPAN} of child 2 {DIV} of child 1 {BODY} of child 0 {HTML} of document
+        RenderBlock {DIV} at (3,43) size 774x20 [border: (1px solid #FF0000)]
+          RenderText {#text} at (1,1) size 540x18
+            text run at (1,1) width 540: "This paragraph and the empty line should have be in their own divs with a red border."
+        RenderBlock (anonymous) at (1,65) size 778x0
+caret: position 85 of child 0 {#text} of child 2 {DIV} of child 2 {DIV} of child 1 {BODY} of child 0 {HTML} of document
index 5770781..9041694 100644 (file)
@@ -2,7 +2,7 @@ EDITING DELEGATE: shouldBeginEditingInDOMRange:range from 0 of DIV > BODY > HTML
 EDITING DELEGATE: webViewDidBeginEditing:WebViewDidBeginEditingNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 61 of #text > DIV > DIV > BODY > HTML > #document to 61 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 2 of DIV > DIV > BODY > HTML > #document to 2 of DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 61 of #text > DIV > DIV > BODY > HTML > #document to 61 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 1 of DIV > BODY > HTML > #document to 1 of DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 layer at (0,0) size 800x600
@@ -16,10 +16,10 @@ layer at (0,0) size 800x600
           text run at (0,18) width 184: "end of blocks are collapsed). "
           text run at (184,18) width 509: "This test used to fail because of unrendered content to the left of the collapsed br."
       RenderBlock {DIV} at (0,52) size 784x36
-        RenderBlock {DIV} at (0,0) size 784x36
+        RenderBlock {DIV} at (0,0) size 784x18
           RenderText {#text} at (0,0) size 370x18
             text run at (0,0) width 370: "The test should add a single blank line after this paragraph."
-          RenderBR {BR} at (370,14) size 0x0
-          RenderInline {SPAN} at (0,0) size 0x0
-          RenderBR {BR} at (0,18) size 0x18
-caret: position 0 of child 3 {BR} of child 0 {DIV} of child 2 {DIV} of child 0 {BODY} of child 0 {HTML} of document
+          RenderInline {SPAN} at (0,0) size 0x18
+        RenderBlock (anonymous) at (0,18) size 784x18
+          RenderBR {BR} at (0,0) size 0x18
+caret: position 0 of child 1 {BR} of child 2 {DIV} of child 0 {BODY} of child 0 {HTML} of document
index c8fef68..e282073 100644 (file)
@@ -35,4 +35,5 @@ layer at (0,0) size 800x600
             text run at (2,2) width 40: "test "
           RenderText {#text} at (42,2) size 34x28
             text run at (42,2) width 34: "test"
+        RenderBlock (anonymous) at (0,32) size 784x0
 caret: position 4 of child 1 {#text} of child 1 {DIV} of child 3 {DIV} of child 1 {BODY} of child 0 {HTML} of document
index 0af7296..47e57ad 100644 (file)
@@ -30,9 +30,10 @@ layer at (0,0) size 800x600
           RenderText {#text} at (0,84) size 74x28
             text run at (0,84) width 74: "test test"
       RenderBlock {DIV} at (0,236) size 784x32
+        RenderBlock (anonymous) at (0,0) size 784x0
         RenderBlock {DIV} at (0,0) size 784x32 [border: (2px solid #FF0000)]
           RenderText {#text} at (2,2) size 34x28
             text run at (2,2) width 34: "test"
           RenderText {#text} at (36,2) size 40x28
             text run at (36,2) width 40: " test"
-caret: position 4 of child 0 {#text} of child 1 {DIV} of child 3 {DIV} of child 1 {BODY} of child 0 {HTML} of document
+caret: position 4 of child 0 {#text} of child 0 {DIV} of child 3 {DIV} of child 1 {BODY} of child 0 {HTML} of document
index 12b0fc0..b240471 100644 (file)
@@ -38,4 +38,5 @@ layer at (0,0) size 800x600
             text run at (36,2) width 40: " test"
           RenderText {#text} at (76,2) size 40x28
             text run at (76,2) width 40: " test"
+        RenderBlock (anonymous) at (0,32) size 784x0
 caret: position 5 of child 1 {#text} of child 1 {DIV} of child 3 {DIV} of child 1 {BODY} of child 0 {HTML} of document
index 067e9c2..92f194b 100644 (file)
@@ -39,4 +39,5 @@ layer at (0,0) size 800x600
             text run at (42,2) width 40: "test "
           RenderText {#text} at (82,2) size 34x28
             text run at (82,2) width 34: "test"
+        RenderBlock (anonymous) at (0,32) size 784x0
 caret: position 5 of child 1 {#text} of child 1 {DIV} of child 3 {DIV} of child 1 {BODY} of child 0 {HTML} of document
index a9b86b6..67bec4c 100644 (file)
@@ -39,4 +39,5 @@ layer at (0,0) size 800x600
             text run at (20,2) width 46: " test "
           RenderText {#text} at (66,2) size 16x28
             text run at (66,2) width 16: "st"
+        RenderBlock (anonymous) at (0,32) size 784x0
 caret: position 6 of child 1 {#text} of child 1 {DIV} of child 3 {DIV} of child 1 {BODY} of child 0 {HTML} of document
index af39d71..c766171 100644 (file)
@@ -47,4 +47,5 @@ layer at (0,0) size 800x600
             text run at (10,2) width 34: "test"
           RenderText {#text} at (44,2) size 8x28
             text run at (44,2) width 8: "-"
+        RenderBlock (anonymous) at (0,32) size 784x0
 caret: position 4 of child 1 {#text} of child 1 {DIV} of child 3 {DIV} of child 1 {BODY} of child 0 {HTML} of document
index 3852b90..c92921f 100644 (file)
@@ -47,4 +47,5 @@ layer at (0,0) size 800x600
             text run at (8,2) width 40: " test"
           RenderText {#text} at (48,2) size 6x28
             text run at (48,2) width 6: "."
+        RenderBlock (anonymous) at (0,32) size 784x0
 caret: position 5 of child 1 {#text} of child 1 {DIV} of child 3 {DIV} of child 1 {BODY} of child 0 {HTML} of document
index 2955019..045e1d8 100644 (file)
@@ -32,4 +32,5 @@ layer at (0,0) size 800x600
             text run at (5,0) width 25: " foo"
           RenderText {#text} at (30,0) size 24x18
             text run at (30,0) width 24: " bar"
+        RenderBlock (anonymous) at (0,18) size 784x0
 caret: position 4 of child 1 {#text} of child 0 {DIV} of child 4 {DIV} of child 0 {BODY} of child 0 {HTML} of document
index 216578a..af138ad 100644 (file)
Binary files a/LayoutTests/editing/pasteboard/undoable-fragment-removes-expected.png and b/LayoutTests/editing/pasteboard/undoable-fragment-removes-expected.png differ
index 6cdc6eb..9e00a4d 100644 (file)
@@ -5,11 +5,11 @@ EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of DIV > DIV > BODY
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: shouldEndEditingInDOMRange:range from 0 of DIV > BODY > HTML > #document to 3 of DIV > BODY > HTML > #document
 EDITING DELEGATE: webViewDidEndEditing:WebViewDidEndEditingNotification
-EDITING DELEGATE: shouldBeginEditingInDOMRange:range from 0 of DIV > BODY > HTML > #document to 0 of DIV > BODY > HTML > #document
+EDITING DELEGATE: shouldBeginEditingInDOMRange:range from 0 of DIV > BODY > HTML > #document to 1 of DIV > BODY > HTML > #document
 EDITING DELEGATE: webViewDidBeginEditing:WebViewDidBeginEditingNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: shouldInsertNode:#document-fragment replacingDOMRange:range from 0 of DIV > BODY > HTML > #document to 0 of DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of DIV > BODY > HTML > #document to 0 of DIV > BODY > HTML > #document toDOMRange:range from 3 of #text > DIV > DIV > BODY > HTML > #document to 3 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 3 of #text > DIV > DIV > BODY > HTML > #document to 3 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of DIV > BODY > HTML > #document to 0 of DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
@@ -34,4 +34,5 @@ layer at (0,0) size 800x600
           RenderText {#text} at (0,0) size 20x18
             text run at (0,0) width 20: "bar"
       RenderBlock {DIV} at (0,100) size 784x20 [border: (1px solid #000000)]
-caret: position 0 of child 6 {DIV} of child 0 {BODY} of child 0 {HTML} of document
+        RenderBR {BR} at (1,1) size 0x18
+caret: position 0 of child 0 {BR} of child 6 {DIV} of child 0 {BODY} of child 0 {HTML} of document
index a8f0d12..d68b15f 100644 (file)
@@ -2,7 +2,7 @@
 <hr>
 <div style="border: 1px solid black;" id="copy" contenteditable="true">
 <div>foo</div><div>bar</div></div>
-<div style="border: 1px solid black;" id="paste" contenteditable="true"></div>
+<div style="border: 1px solid black;" id="paste" contenteditable="true"><br></div>
 
 <script>
 var c = document.getElementById("copy");
index c7d55db..7c5e0c6 100644 (file)
@@ -58,4 +58,5 @@ layer at (0,0) size 800x600
                 RenderInline {FONT} at (0,0) size 20x28 [color=#FF0000]
                   RenderText {#text} at (59,2) size 20x28
                     text run at (59,2) width 20: "fg"
+        RenderBlock (anonymous) at (0,32) size 784x0
 caret: position 3 of child 0 {#text} of child 1 {FONT} of child 1 {SPAN} of child 1 {DIV} of child 3 {DIV} of child 1 {BODY} of child 0 {HTML} of document
index 04aaf33..d131677 100644 (file)
@@ -60,4 +60,5 @@ layer at (0,0) size 800x600
                       RenderInline {SPAN} at (0,0) size 24x28
                         RenderText {#text} at (77,8) size 24x28
                           text run at (77,8) width 24: "fg"
+        RenderBlock (anonymous) at (0,41) size 784x0
 caret: position 3 of child 0 {#text} of child 0 {B} of child 0 {SPAN} of child 1 {FONT} of child 1 {SPAN} of child 1 {DIV} of child 3 {DIV} of child 1 {BODY} of child 0 {HTML} of document
index 363721e..cfa73f9 100644 (file)
@@ -1,3 +1,78 @@
+2006-08-15  Justin Garcia  <justin.garcia@apple.com>
+
+        Reviewed by thatcher
+        
+        First part of fix for:
+        <rdar://problem/4384589>
+        Mail hung on paste text
+        
+        Fixes:
+        <http://bugzilla.opendarwin.org/show_bug.cgi?id=8592>
+        Extra line left after deleting whitespace:pre text
+        <rdar://problem/4128080> Paste as HTML does not yield equivalent style
+        <rdar://problem/4046469> Box styles on first element aren't copied/pasted
+        Copy/paste of arstechnica.com
+        
+        Here's how we avoid adding redundant style information on paste: insert 
+        the fragment and do a test rendering, save away style information for 
+        every node in the fragment, remove all style information from the fragment, 
+        remove the fragment, insert it into the appropriate place in the document, 
+        then restore only those styles gathered during the test insertion that aren't
+        redundant.  Restoring the styles in this way results in an ApplyStyleCommand 
+        and a layout for nearly every inserted node.  
+        Instead we want to insert the fragment into the document without removing the 
+        style information, then mark style nodes and inline style declarations for 
+        removal if they are redundant, and sweep to remove them.  This means that we 
+        can't rely on ReplacementFragment::wasBlock anymore, because blocks will now 
+        have style spans around them.  This patch removes the use of wasBlock in 
+        ReplaceSelectionCommand.
+        
+        * editing/CompositeEditCommand.cpp:
+        (WebCore::CompositeEditCommand::moveParagraphs): Added code
+        to remove the line placeholder left after a move from preserveNewline text.
+        * editing/DeleteSelectionCommand.cpp:
+        (WebCore::DeleteSelectionCommand::doApply): Don't add a placeholder if 
+        we're deleting a paragraph in preserveNewline text.
+        * editing/JSEditor.cpp: Pass true to prevent nesting.
+        * editing/ReplaceSelectionCommand.cpp: Removed wasBlock and friends.
+        (WebCore::ReplacementFragment::ReplacementFragment): Ditto.
+        (WebCore::ReplacementFragment::saveRenderingInfo): Ditto.
+        (WebCore::RenderingInfo::RenderingInfo): Ditto.
+        (WebCore::ReplaceSelectionCommand::ReplaceSelectionCommand):
+        (WebCore::ReplaceSelectionCommand::shouldMergeStart): Combined the to/from
+        merging rules into one method.
+        (WebCore::ReplaceSelectionCommand::shouldMergeEnd):
+        (WebCore::ReplaceSelectionCommand::shouldMerge):
+        (WebCore::ReplaceSelectionCommand::doApply): 
+        Don't do nesting prevention when pasting into an empty paragraph, this
+        fixes 4046469, the common cause of paste fidelity bugs, but needs
+        to be tweaked a little because this can lead to margin/border build-up
+        on repeated copy/pastes.
+        Don't track startPos in addition to insertionPos.  It was never used.
+        Fixed a bug where a fragment starting with an interchange newline would
+        cause content to be put outside of an editable region when pasting at the 
+        very end of it.
+        Adjust insertionPos before insertion (not during) and do not consult wasBlock
+        to decide whether or not to do so.
+        Changed the way we do the start merge: insert the fragment, then stich 
+        paragraphs together, in the same way that we do the end merge.  This 
+        doesn't require wasBlock and fixes bugs.
+        Replaced some uses of insertionPos with endOfInsertedContent.
+        Fixed a bug in the expansion of the last incoming br (a "collapsed" br
+        is one where !isStartOfParagraph([br,0])).
+        Removed the special case code that did the end merge for the preserveNewline 
+        case, since this patch fixes the moveParagraph bug in the preserveNewline case.
+        Removed some unused variables.
+        (WebCore::ReplaceSelectionCommand::shouldRemoveEndBR): An endBR that was 
+        holding a line open should always be displaced by inserted content, unless 
+        the inserted content ends with a br.
+        (WebCore::ReplaceSelectionCommand::updateNodesInserted):
+        * editing/ReplaceSelectionCommand.h:
+        (WebCore::RenderingInfo::style):
+        * editing/markup.cpp:
+        (WebCore::createMarkup): Only add mail blockquotes and list/table/pre when
+        annotate is true (when we're creating markup for the pasteboard).
+
 2006-08-16  John Sullivan  <sullivan@apple.com>
 
         Reviewed by Brady Eidson
index 55d4463..1fd985a 100644 (file)
@@ -715,14 +715,18 @@ void CompositeEditCommand::moveParagraphs(const VisiblePosition& startOfParagrap
 
     ASSERT(destination.deepEquivalent().node()->inDocument());
     
-    // Deleting a paragraph leaves a placeholder (it always does when a whole paragraph is deleted).
-    // We remove it and prune its parents since we want to remove all traces of the paragraph we're moving.
-    Node* placeholder = endingSelection().end().downstream().node();
-    ASSERT(placeholder->hasTagName(brTag));
     // There are bugs in deletion when it removes a fully selected table/list.  It expands and removes the entire table/list, but will let content
     // before and after the table/list collapse onto one line.
-    if (placeholder->hasTagName(brTag) && isStartOfParagraph(endingSelection().visibleStart()) && isEndOfParagraph(endingSelection().visibleStart()))
-        removeNodeAndPruneAncestors(placeholder);
+    VisiblePosition caretAfterDelete = endingSelection().visibleStart();
+    if (isStartOfParagraph(caretAfterDelete) && isEndOfParagraph(caretAfterDelete)) {
+        // Note: We want the rightmost candidate.
+        Position position = caretAfterDelete.deepEquivalent().downstream();
+        Node* node = position.node();
+        if (node->hasTagName(brTag))
+            removeNodeAndPruneAncestors(node);
+        else if (node->renderer() && node->renderer()->style()->preserveNewline() && caretAfterDelete.characterAfter() == '\n')
+            deleteTextFromNode(static_cast<Text*>(node), position.offset(), 1);
+    }
 
     // Add a br if pruning an empty block level element caused a collapse.  For example:
     // foo^
@@ -737,7 +741,7 @@ void CompositeEditCommand::moveParagraphs(const VisiblePosition& startOfParagrap
     destinationIndex = TextIterator::rangeLength(startToDestinationRange.get());
     
     setEndingSelection(destination);
-    EditCommandPtr cmd(new ReplaceSelectionCommand(document(), fragment.get(), true, false, !preserveStyle, true));
+    EditCommandPtr cmd(new ReplaceSelectionCommand(document(), fragment.get(), true, false, !preserveStyle, false));
     applyCommandToComposite(cmd);
     
     if (preserveSelection && startIndex != -1) {
index 6eec0a6..64bc0cb 100644 (file)
@@ -532,7 +532,8 @@ void DeleteSelectionCommand::doApply()
     Position downstreamEnd = m_selectionToDelete.end().downstream();
     m_needPlaceholder = isStartOfParagraph(m_selectionToDelete.visibleStart()) &&
                         isEndOfParagraph(m_selectionToDelete.visibleEnd()) &&
-                        !(downstreamEnd.node()->hasTagName(brTag) && downstreamEnd.offset() == 0);
+                        !(downstreamEnd.node()->hasTagName(brTag) && downstreamEnd.offset() == 0) &&
+                        !(downstreamEnd.node()->renderer() && downstreamEnd.node()->renderer()->style()->preserveNewline() && m_selectionToDelete.visibleEnd().characterAfter() == '\n');
     
     // set up our state
     initializePositionData();
index 6453f1a..e8d82e2 100644 (file)
@@ -283,7 +283,7 @@ bool execInsertHorizontalRule(Frame* frame, bool userInterface, const String& va
     if (ec)
         return false;
     
-    EditCommandPtr(new ReplaceSelectionCommand(frame->document(), fragment.get(), false, false, false, false, EditActionUnspecified)).apply();
+    EditCommandPtr(new ReplaceSelectionCommand(frame->document(), fragment.get(), false, false, false, true, EditActionUnspecified)).apply();
     return true;
 }
 
@@ -416,7 +416,7 @@ bool execRedo(Frame *frame, bool userInterface, const String &value)
 bool execRemoveFormat(Frame* frame, bool userInterface, const String& value)
 {
     RefPtr<DocumentFragment> fragment = createFragmentFromText(frame->selection().toRange().get(), frame->selection().toString());
-    EditCommandPtr(new ReplaceSelectionCommand(frame->document(), fragment.get(), false, false, false, false, EditActionUnspecified)).apply();
+    EditCommandPtr(new ReplaceSelectionCommand(frame->document(), fragment.get(), false, false, false, true, EditActionUnspecified)).apply();
     return true;
 }
 
index 8ed7534..ce67708 100644 (file)
@@ -53,8 +53,7 @@ ReplacementFragment::ReplacementFragment(Document* document, DocumentFragment* f
       m_fragment(fragment),
       m_matchStyle(matchStyle), 
       m_hasInterchangeNewlineAtStart(false), 
-      m_hasInterchangeNewlineAtEnd(false), 
-      m_hasMoreThanOneBlock(false)
+      m_hasInterchangeNewlineAtEnd(false)
 {
     if (!m_document)
         return;
@@ -125,7 +124,6 @@ ReplacementFragment::ReplacementFragment(Document* document, DocumentFragment* f
     
     saveRenderingInfo(holder.get());
     removeUnrenderedNodes(holder.get());
-    m_hasMoreThanOneBlock = renderedBlocks(holder.get()) > 1;
     restoreTestRenderingNodesToFragment(holder.get());
     removeNode(holder);
     removeStyleNodes();
@@ -146,19 +144,6 @@ Node *ReplacementFragment::lastChild() const
     return m_fragment->lastChild(); 
 }
 
-static bool isMailPasteAsQuotationNode(const Node *node)
-{
-    return node && static_cast<const Element *>(node)->getAttribute("class") == ApplePasteAsQuotation;
-}
-
-Node *ReplacementFragment::mergeStartNode() const
-{
-    Node *node = m_fragment->firstChild();
-    while (node && wasBlock(node) && !isMailPasteAsQuotationNode(node))
-        node = node->traverseNextNode();
-    return node;
-}
-
 bool ReplacementFragment::isInterchangeNewlineNode(const Node *node)
 {
     static String interchangeNewlineClassString(AppleInterchangeNewline);
@@ -259,16 +244,6 @@ void ReplacementFragment::restoreTestRenderingNodesToFragment(Node *holder)
     }
 }
 
-bool ReplacementFragment::wasBlock(Node* node) const
-{
-    RefPtr<RenderingInfo> info = m_renderingInfo.get(node);
-    ASSERT(info);
-    if (!info)
-        return false;
-    
-    return info->wasBlock();
-}
-
 static String &matchNearestBlockquoteColorString()
 {
     static String matchNearestBlockquoteColorString = "match";
@@ -363,10 +338,10 @@ void ReplacementFragment::saveRenderingInfo(Node *holder)
     if (m_matchStyle) {
         // No style restoration will be done, so we don't need to save styles or keep a node vector.
         for (Node *node = holder->firstChild(); node; node = node->traverseNextNode(holder))
-            m_renderingInfo.add(node, new RenderingInfo(0, isBlock(node)));
+            m_renderingInfo.add(node, new RenderingInfo(0));
     } else {
         for (Node *node = holder->firstChild(); node; node = node->traverseNextNode(holder)) {
-            m_renderingInfo.add(node, new RenderingInfo(styleForNode(node), isBlock(node)));
+            m_renderingInfo.add(node, new RenderingInfo(styleForNode(node)));
             m_nodes.append(node);
         }
     }
@@ -385,29 +360,6 @@ void ReplacementFragment::removeUnrenderedNodes(Node *holder)
         removeNode(it.current());
 }
 
-// FIXME: This counts two blocks for <span><div>foo</div></span>.  Get rid of uses of hasMoreThanOneBlock so that we can get rid of this function.
-int ReplacementFragment::renderedBlocks(Node *holder)
-{
-    int count = 0;
-    Node *prev = 0;
-    for (Node *node = holder->firstChild(); node; node = node->traverseNextNode(holder)) {
-        if (isBlock(node)) {
-            if (!prev) {
-                count++;
-                prev = node;
-            }
-        } else {
-            Node *block = enclosingBlock(node);
-            if (block != prev) {
-                count++;
-                prev = block;
-            }
-        }
-    }
-    
-    return count;
-}
-
 void ReplacementFragment::removeStyleNodes()
 {
     // Since style information has been computed and cached away in
@@ -448,72 +400,68 @@ void ReplacementFragment::removeStyleNodes()
     }
 }
 
-RenderingInfo::RenderingInfo(PassRefPtr<CSSMutableStyleDeclaration> style, bool wasBlock = false)
-    : m_style(style), m_wasBlock(wasBlock)
+RenderingInfo::RenderingInfo(PassRefPtr<CSSMutableStyleDeclaration> style)
+    : m_style(style)
 {
 }
 
-ReplaceSelectionCommand::ReplaceSelectionCommand(Document *document, DocumentFragment *fragment, bool selectReplacement, bool smartReplace, bool matchStyle, bool forceMergeStart, EditAction editAction) 
+ReplaceSelectionCommand::ReplaceSelectionCommand(Document* document, DocumentFragment* fragment, bool selectReplacement, bool smartReplace, bool matchStyle, bool preventNesting, EditAction editAction) 
     : CompositeEditCommand(document),
       m_selectReplacement(selectReplacement), 
       m_smartReplace(smartReplace),
       m_matchStyle(matchStyle),
       m_documentFragment(fragment),
-      m_forceMergeStart(forceMergeStart),
+      m_preventNesting(preventNesting),
       m_editAction(editAction)
 {
 }
 
-ReplaceSelectionCommand::~ReplaceSelectionCommand()
+bool ReplaceSelectionCommand::shouldMergeStart(bool selectionStartWasStartOfParagraph, bool fragmentHasInterchangeNewlineAtStart)
 {
+    VisiblePosition startOfInsertedContent(Position(m_firstNodeInserted.get(), 0));
+    VisiblePosition prev = startOfInsertedContent.previous(true);
+    if (prev.isNull())
+        return false;
+        
+    return !selectionStartWasStartOfParagraph && 
+           !fragmentHasInterchangeNewlineAtStart &&
+           isStartOfParagraph(startOfInsertedContent) && 
+           !startOfInsertedContent.deepEquivalent().node()->hasTagName(brTag) &&
+           shouldMerge(startOfInsertedContent, prev);
 }
 
-// FIXME: This will soon operate on the fragment after it's been inserted so that it can check renderers and create visible positions.
-bool ReplaceSelectionCommand::shouldMergeStart(const ReplacementFragment& incomingFragment, const Selection& destinationSelection)
+bool ReplaceSelectionCommand::shouldMergeEnd(bool selectionEndWasEndOfParagraph)
 {
-    if (m_forceMergeStart)
-        return true;
-        
-    VisiblePosition visibleStart = destinationSelection.visibleStart();
-    Node* startBlock = enclosingBlock(destinationSelection.start().node());
-
-    // <rdar://problem/4013642> Copied quoted word does not paste as a quote if pasted at the start of a line    
-    if (isStartOfParagraph(visibleStart) && isMailBlockquote(incomingFragment.firstChild()))
-        return false;
-    
-    // Don't pull content out of a list item.
-    // FIXMEs: Use an enclosing element getter that uses the render tree once this function is called after the fragment
-    // that's been placed into the document.
-    if (enclosingList(incomingFragment.mergeStartNode()) || enclosingNodeWithTag(incomingFragment.mergeStartNode(), tdTag))
+    VisiblePosition endOfInsertedContent(Position(m_lastNodeInserted.get(), maxDeepOffset(m_lastNodeInserted.get())));
+    VisiblePosition next = endOfInsertedContent.next(true);
+    if (next.isNull())
         return false;
-    
-    // Merge if this is an empty editable subtree, to prevent an extra level of block nesting.
-    if (startBlock == startBlock->rootEditableElement() && isStartOfBlock(visibleStart) && isEndOfBlock(visibleStart))
-        return true;
-    
-    if (!incomingFragment.hasInterchangeNewlineAtStart() && 
-        (!isStartOfParagraph(visibleStart) || !incomingFragment.hasInterchangeNewlineAtEnd() && !incomingFragment.hasMoreThanOneBlock()))
-       return true;
-    
-    return false;
-}
 
-bool ReplaceSelectionCommand::shouldMergeEnd(const VisiblePosition& endOfInsertedContent, bool selectionEndWasEndOfParagraph)
-{
-    Node* endNode = endOfInsertedContent.deepEquivalent().node();
-    Node* nextNode = endOfInsertedContent.next().deepEquivalent().node();
-    // FIXME: Unify the naming scheme for these enclosing element getters.
     return !selectionEndWasEndOfParagraph &&
            isEndOfParagraph(endOfInsertedContent) && 
-           nearestMailBlockquote(endNode) == nearestMailBlockquote(nextNode) &&
-           enclosingListChild(endNode) == enclosingListChild(nextNode) &&
-           enclosingTableCell(endNode) == enclosingTableCell(nextNode) &&
-           !endNode->hasTagName(hrTag);
+           !endOfInsertedContent.deepEquivalent().node()->hasTagName(brTag) &&
+           shouldMerge(endOfInsertedContent, next);
+}
+
+bool ReplaceSelectionCommand::shouldMerge(const VisiblePosition& from, const VisiblePosition& to)
+{
+    if (from.isNull() || to.isNull())
+        return false;
+        
+    Node* fromNode = from.deepEquivalent().node();
+    Node* toNode = to.deepEquivalent().node();
+    
+    return nearestMailBlockquote(fromNode) == nearestMailBlockquote(toNode) &&
+           !enclosingBlock(fromNode)->hasTagName(blockquoteTag) &&
+           enclosingListChild(fromNode) == enclosingListChild(toNode) &&
+           enclosingTableCell(fromNode) == enclosingTableCell(toNode) &&
+           !(fromNode->renderer() && fromNode->renderer()->isTable()) &&
+           !(toNode->renderer() && toNode->renderer()->isTable()) && 
+           !fromNode->hasTagName(hrTag) && !toNode->hasTagName(hrTag);
 }
 
 void ReplaceSelectionCommand::doApply()
 {
-    // collect information about the current selection, prior to deleting the selection
     Selection selection = endingSelection();
     ASSERT(selection.isCaretOrRange());
     ASSERT(selection.start().node());
@@ -532,19 +480,18 @@ void ReplaceSelectionCommand::doApply()
     if (m_matchStyle)
         m_insertionStyle = styleAtPosition(selection.start());
     
-    VisiblePosition visibleStart(selection.start(), selection.affinity());
-    VisiblePosition visibleEnd(selection.end(), selection.affinity());
-    bool startAtStartOfBlock = isStartOfBlock(visibleStart);
-    Node* startBlock = enclosingBlock(selection.start().node());
-
-    // Whether the first paragraph of the incoming fragment should be merged with content from visibleStart to startOfParagraph(visibleStart).
-    bool mergeStart = shouldMergeStart(fragment, selection);
+    VisiblePosition visibleStart = selection.visibleStart();
+    VisiblePosition visibleEnd = selection.visibleEnd();
     
-    bool endWasEndOfParagraph = isEndOfParagraph(visibleEnd);
-
-    Position startPos = selection.start();
+    bool selectionEndWasEndOfParagraph = isEndOfParagraph(visibleEnd);
+    bool selectionStartWasStartOfParagraph = isStartOfParagraph(visibleStart);
+    
+    if (selectionStartWasStartOfParagraph && selectionEndWasEndOfParagraph ||
+        enclosingBlock(visibleStart.deepEquivalent().node()) == currentRoot)
+        m_preventNesting = false;
+    
+    Position insertionPos = selection.start();
     
-    // delete the current range selection, or insert paragraph for caret selection, as needed
     if (selection.isRange()) {
         // When the end of the selection being pasted into is at the end of a paragraph, and that selection
         // spans multiple blocks, not merging may leave an empty line.
@@ -552,7 +499,6 @@ void ReplaceSelectionCommand::doApply()
         // will leave hanging block(s).
         bool mergeBlocksAfterDelete = isEndOfParagraph(visibleEnd) || isStartOfBlock(visibleStart);
         deleteSelection(false, mergeBlocksAfterDelete, true);
-        updateLayout();
         visibleStart = endingSelection().visibleStart();
         if (fragment.hasInterchangeNewlineAtStart()) {
             if (isEndOfParagraph(visibleStart) && !isStartOfParagraph(visibleStart)) {
@@ -561,44 +507,50 @@ void ReplaceSelectionCommand::doApply()
             } else
                 insertParagraphSeparator();
         }
-        startPos = endingSelection().start();
+        insertionPos = endingSelection().start();
     } 
     else {
         ASSERT(selection.isCaret());
         if (fragment.hasInterchangeNewlineAtStart()) {
-            if (isEndOfParagraph(visibleStart) && !isStartOfParagraph(visibleStart)) {
-                if (!isEndOfDocument(visibleStart))
-                    setEndingSelection(visibleStart.next());
-            else 
+            VisiblePosition next = visibleStart.next(true);
+            if (isEndOfParagraph(visibleStart) && !isStartOfParagraph(visibleStart) && next.isNotNull())
+                setEndingSelection(next);
+            else 
                 insertParagraphSeparator();
         }
         // We split the current paragraph in two to avoid nesting the blocks from the fragment inside the current block.
         // For example paste <div>foo</div><div>bar</div><div>baz</div> into <div>x^x</div>, where ^ is the caret.  
         // As long as the  div styles are the same, visually you'd expect: <div>xbar</div><div>bar</div><div>bazx</div>, 
         // not <div>xbar<div>bar</div><div>bazx</div></div>
-        // FIXME: If this code is really about preventing block nesting, then the check should be !isEndOfBlock(visibleStart) and we 
-        // should split the block in two, instead of inserting a paragraph separator. In the meantime, it appears that code below 
-        // depends on this split happening when the paste position is not the start or end of a paragraph.
-        if (!isEndOfParagraph(visibleStart) && !isStartOfParagraph(visibleStart)) {
+        if (m_preventNesting && !isEndOfParagraph(visibleStart) && !isStartOfParagraph(visibleStart)) {
             insertParagraphSeparator();
-            setEndingSelection(VisiblePosition(endingSelection().start(), VP_DEFAULT_AFFINITY).previous());
+            setEndingSelection(endingSelection().visibleStart().previous());
         }
-        startPos = endingSelection().start();
+        insertionPos = endingSelection().start();
     }
     
     // NOTE: This would be an incorrect usage of downstream() if downstream() were changed to mean the last position after 
     // p that maps to the same visible position as p (since in the case where a br is at the end of a block and collapsed 
     // away, there are positions after the br which map to the same visible position as [br, 0]).  
-    Node* endBR = startPos.downstream().node()->hasTagName(brTag) ? startPos.downstream().node() : 0;
+    Node* endBR = insertionPos.downstream().node()->hasTagName(brTag) ? insertionPos.downstream().node() : 0;
+    
+    Node* startBlock = enclosingBlock(insertionPos.node());
     
-    if (startAtStartOfBlock && startBlock->inDocument())
-        startPos = Position(startBlock, 0);
+    // Adjust insertionPos to prevent nesting.
+    if (m_preventNesting) {
+        ASSERT(startBlock != currentRoot);
+        VisiblePosition visibleInsertionPos(insertionPos);
+        if (isEndOfBlock(visibleInsertionPos) && !(isStartOfBlock(visibleInsertionPos) && fragment.hasInterchangeNewlineAtEnd()))
+            insertionPos = positionAfterNode(startBlock);
+        else if (isStartOfBlock(visibleInsertionPos))
+            insertionPos = positionBeforeNode(startBlock);
+    }
 
-    // paste into run of tabs splits the tab span
-    startPos = positionOutsideTabSpan(startPos);
+    // Paste into run of tabs splits the tab span.
+    insertionPos = positionOutsideTabSpan(insertionPos);
     
-    // paste at start or end of link goes outside of link
-    startPos = positionAvoidingSpecialElementBoundary(startPos);
+    // Paste at start or end of link goes outside of link.
+    insertionPos = positionAvoidingSpecialElementBoundary(insertionPos);
 
     Frame *frame = document()->frame();
     
@@ -607,115 +559,51 @@ void ReplaceSelectionCommand::doApply()
     frame->clearTypingStyle();
     setTypingStyle(0);    
     
-    // done if there is nothing to add
+    // We're finished if there is nothing to add.
     if (!fragment.firstChild())
         return;
     
-    // 1) Add the first paragraph of the incoming fragment, merging it with the paragraph that contained the 
-    // start of the selection that was pasted into.
-    // 2) Add everything else.
-    // 3) Restore the styles of inserted nodes (since styles were removed during the test insertion).
-    // 4) Do one of the following: a) if there was a br at the end of the fragment, expand it if it collapsed 
-    // because of quirks mode, b) merge the last paragraph of the incoming fragment with the paragraph that contained the 
+    // 1) Insert the content.
+    // 2) Restore the styles of inserted nodes (since styles were removed during the test insertion).
+    // 3) Merge the start of the added content with the content before the position being pasted into.
+    // 4) Do one of the following: a) expand the last br if the fragment ends with one and it collapsed,
+    // b) merge the last paragraph of the incoming fragment with the paragraph that contained the 
     // end of the selection that was pasted into, or c) handle an interchange newline at the end of the 
     // incoming fragment.
     // 5) Add spaces for smart replace.
     // 6) Select the replacement if requested, and match style if requested.
-        
-    // initially, we say the insertion point is the start of selection
-    updateLayout();
-    Position insertionPos = startPos;
-
-    // Add the first paragraph.
-    if (mergeStart) {
-        RefPtr<Node> refNode = fragment.mergeStartNode();
-        if (refNode) {
-            Node *parent = refNode->parentNode();
-            RefPtr<Node> node = refNode->nextSibling();
-            fragment.removeNode(refNode);
-            insertNodeAtAndUpdateNodesInserted(refNode.get(), startPos.node(), startPos.offset());
-            while (node && !fragment.wasBlock(node.get())) {
-                Node *next = node->nextSibling();
-                fragment.removeNode(node);
-                insertNodeAfterAndUpdateNodesInserted(node.get(), refNode.get());
-                refNode = node;
-                node = next;
-            }
-
-            // remove any ancestors we emptied, except the root itself which cannot be removed
-            while (parent && parent->parentNode() && parent->childNodeCount() == 0) {
-                Node *nextParent = parent->parentNode();
-                fragment.removeNode(parent);
-                parent = nextParent;
-            }
-        }
-        
-        // update insertion point to be at the end of the last block inserted
-        if (m_lastNodeInserted) {
-            updateLayout();
-            insertionPos = Position(m_lastNodeInserted.get(), m_lastNodeInserted->caretMaxOffset());
-        }
-    }
     
-    // Add everything else.
-    if (fragment.firstChild()) {
-        RefPtr<Node> refNode = fragment.firstChild();
-        RefPtr<Node> node = refNode ? refNode->nextSibling() : 0;
-        Node* insertionBlock = enclosingBlock(insertionPos.node());
-        Node* insertionRoot = insertionPos.node()->rootEditableElement();
-        bool insertionBlockIsRoot = insertionBlock == insertionRoot;
-        VisiblePosition visibleInsertionPos(insertionPos);
-        fragment.removeNode(refNode);
-        // FIXME: The first two cases need to be rethought.  They're about preventing the nesting of 
-        // incoming blocks in the block where the paste is being performed.  But, avoiding nesting doesn't 
-        // always produce the desired visual result, and the decisions are based on wasBlock, which 
-        // we're getting rid of.
-        if (!insertionBlockIsRoot && fragment.wasBlock(refNode.get()) && isStartOfBlock(visibleInsertionPos) && !m_lastNodeInserted)
-            insertNodeBeforeAndUpdateNodesInserted(refNode.get(), insertionBlock);
-        else if (!insertionBlockIsRoot && fragment.wasBlock(refNode.get()) && isEndOfBlock(visibleInsertionPos))
-            insertNodeAfterAndUpdateNodesInserted(refNode.get(), insertionBlock);
-        else if (m_lastNodeInserted && !fragment.wasBlock(refNode.get())) {
-            // A non-null m_lastNodeInserted means we've done merging above.  That means everything in the first paragraph 
-            // of the fragment has been merged with everything up to the start of the paragraph where the paste was performed.  
-            // refNode is the first node in the second paragraph of the fragment to paste.  Since it's inline, we can't 
-            // insert it at insertionPos, because it wouldn't end up in its own paragraph.
-
-            // FIXME: Code above does paragraph splitting and so we are assured that visibleInsertionPos is the end of
-            // a paragraph, but the above splitting should eventually be only about preventing nesting.
-            ASSERT(isEndOfParagraph(visibleInsertionPos));
-            VisiblePosition next = visibleInsertionPos.next();
-            if (next.isNull() || next.rootEditableElement() != insertionRoot) {
-                setEndingSelection(visibleInsertionPos);
-                insertParagraphSeparator();
-                next = visibleInsertionPos.next();
-            }
-            
-            Position pos = next.deepEquivalent().downstream();
-            insertNodeAtAndUpdateNodesInserted(refNode.get(), pos.node(), pos.offset());
-        } else {
-            insertNodeAtAndUpdateNodesInserted(refNode.get(), insertionPos.node(), insertionPos.offset());
-        }
-        
-        while (node) {
-            Node* next = node->nextSibling();
-            fragment.removeNode(node);
-            insertNodeAfterAndUpdateNodesInserted(node.get(), refNode.get());
-            refNode = node;
-            node = next;
-        }
-        updateLayout();
-        insertionPos = Position(m_lastNodeInserted.get(), m_lastNodeInserted->caretMaxOffset());
+    VisiblePosition startOfInsertedContent, endOfInsertedContent;
+    
+    RefPtr<Node> refNode = fragment.firstChild();
+    RefPtr<Node> node = refNode->nextSibling();
+    
+    fragment.removeNode(refNode);
+    insertNodeAtAndUpdateNodesInserted(refNode.get(), insertionPos.node(), insertionPos.offset());
+    
+    while (node) {
+        Node* next = node->nextSibling();
+        fragment.removeNode(node);
+        insertNodeAfterAndUpdateNodesInserted(node.get(), refNode.get());
+        refNode = node;
+        node = next;
     }
-
+    
+    endOfInsertedContent = VisiblePosition(Position(m_lastNodeInserted.get(), maxDeepOffset(m_lastNodeInserted.get())));
+    startOfInsertedContent = VisiblePosition(Position(m_firstNodeInserted.get(), 0));
+    
+    // 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 (insertionPos.node() == startBlock->parentNode() && (unsigned)insertionPos.offset() < startBlock->nodeIndex() && !isStartOfParagraph(startOfInsertedContent))
+        insertNodeAt(createBreakElement(document()).get(), startOfInsertedContent.deepEquivalent().node(), startOfInsertedContent.deepEquivalent().offset());
+    
     Position lastPositionToSelect;
     
     bool interchangeNewlineAtEnd = fragment.hasInterchangeNewlineAtEnd();
-    bool lastNodeInsertedWasBR = m_lastNodeInserted->hasTagName(brTag);
 
     if (shouldRemoveEndBR(endBR)) {
-        if (interchangeNewlineAtEnd || lastNodeInsertedWasBR) {
+        if (interchangeNewlineAtEnd) {
             interchangeNewlineAtEnd = false;
-            lastNodeInsertedWasBR = false;
             m_lastNodeInserted = endBR;
             lastPositionToSelect = VisiblePosition(Position(m_lastNodeInserted.get(), 0)).deepEquivalent();
         } else
@@ -726,16 +614,26 @@ void ReplaceSelectionCommand::doApply()
     if (!m_matchStyle)
         fixupNodeStyles(fragment.nodes(), fragment.renderingInfo());
         
-    VisiblePosition endOfInsertedContent(Position(m_lastNodeInserted.get(), maxDeepOffset(m_lastNodeInserted.get())));
-    VisiblePosition startOfInsertedContent(Position(m_firstNodeInserted.get(), 0));    
+    if (shouldMergeStart(selectionStartWasStartOfParagraph, fragment.hasInterchangeNewlineAtStart())) {
+        VisiblePosition destination = startOfInsertedContent.previous();
+        VisiblePosition startOfParagraphToMove = startOfInsertedContent;
+
+        moveParagraph(startOfParagraphToMove, endOfParagraph(startOfParagraphToMove), destination);
+