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 d2ce7c8641782239be999c0f6a9948a147072dbf..3b7126d0f4d460d35c4dc197adb759a0e2199359 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 0886ab049f6e6a583dc22be4adfbc459d34a4848..b17f383fe9f9e4bd3c38ba6b97cc3d2ae17a9420 100644 (file)
@@ -1 +1 @@
-301d0c168dc36b1050cc875ba9c2a6ba
\ No newline at end of file
+b2863aa2921e4a94798516c0dbb926a4
\ No newline at end of file
index 31342631b7a7d4ce51a26dd5671f811648e9eff9..590b4cba3ed472aeafe4150554b634accdb0aeac 100644 (file)
Binary files a/LayoutTests/editing/execCommand/insertHTML-expected.png and b/LayoutTests/editing/execCommand/insertHTML-expected.png differ
index 64aebd2d922498c98d56dffbce39aa238fcc2df8..fe348d798265f7436db79ae55c8a92c94f66c01c 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 275586a4d92f7bff8c245eae97ed43ae101e486e..40c02fa41a89ba26088f4b977df1ab0a725f5ca3 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 5138712c1d41acf9b97b322f6f3afe3767b7656e..1c684e0d6c00a2c1391307eeca3599b0eed6afc5 100644 (file)
@@ -1 +1 @@
-e4b39ce4c1f9e167ad07bea9030bfd35
\ No newline at end of file
+0c7aaef8160eb487b795d8f25cad0c1b
\ No newline at end of file
index 33e4c139fd431d4c5efc760356ac1311e0429266..c6ffc50d4a318024b8bd43baccc7139c482e5b77 100644 (file)
Binary files a/LayoutTests/editing/execCommand/insertHorizontalRule-expected.png and b/LayoutTests/editing/execCommand/insertHorizontalRule-expected.png differ
index 08c6a66bfa8483c7e7f2933e9e7dade332c7b443..725a7e184089d822b12f8b4c5d46ac3ef5808ad7 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 52275ff7e75d5936c25e4207ba91fda12158f70b..985ba5b989009dceab5f45c24eef3f60e746156e 100644 (file)
@@ -1 +1 @@
-0075484d17da3479486d3c3578f4841c
\ No newline at end of file
+3a6e3e72156d320d9828d34dcf8dd86b
\ No newline at end of file
index 36c3044c8de063a0785605f1475fb341889e0e01..94cad330278c7430bdec421f9e0ba326dd3585e0 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 2f12dd04bdb0452d5b683ef15e7330e1ebf86d4c..df2df35e6ec2a82d0a3bbc0a732dba844cc9df3b 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 3629965aa008714a9f21c2a604eef1cdb036f2bb..34a638c1603381cee03e4265ab4ed2b83ea5fee7 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 e1ee820a49fb7764cbf613c81a6353251b0e21b5..4ef42b81b89526922f52859075d309c377e6a896 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 ac24ff7d0678244f77693fbbf984c3ff14fa02b2..94268f2e647b4ed4329123cdf57f1a2f818f6656 100644 (file)
@@ -1 +1 @@
-a5b89f020b9439f20184cf7385b6bfbc
\ No newline at end of file
+0cc0b7c6144c25f3a904853e9c1097a0
\ No newline at end of file
index 7363902354bf3497413fd8c456b6c466cbddc9fa..7b0448ff3f6aaa537ccf97d0a5811ca72ecb8a4f 100644 (file)
Binary files a/LayoutTests/editing/pasteboard/3976872-expected.png and b/LayoutTests/editing/pasteboard/3976872-expected.png differ
index 88a4f02ee1409806cff15291d19207181e1060d2..b25afa0048ae3f7da451328073e771c5d5f52d6f 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 f72bc32deef3fa1205f0c7ea99ed86dc07a1c81d..0f546738f61547b21a0474b4e8190592bfafb105 100644 (file)
@@ -1 +1 @@
-9e19e3ceffd065cf7a3805ba60947440
\ No newline at end of file
+10e9e1168c6fff3178565034d7b28581
\ No newline at end of file
index 492001ea7e8fd67482718ee4fa0825eab3d24359..9c62a4e4eb8a268a734cb7caeeb049df7a2a6918 100644 (file)
Binary files a/LayoutTests/editing/pasteboard/4076267-3-expected.png and b/LayoutTests/editing/pasteboard/4076267-3-expected.png differ
index 4764f52a5a51de875f4ba48cc9cc9147e38e6764..18e4c0c465622cfe683b311cf081e6d9ff3416cf 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 8907a08fc2e001b3e8fdaf22d656c6e738fb6418..5d6811ce199e69d16a3382a14897109dcb411400 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 fe489b79bbef6eb94bb15ed9bf8e777a4509ce6c..c062aad95330090b027907c841ed20437b064c71 100644 (file)
@@ -1 +1 @@
-a0d5b7eba415a1d4eb5f3335d492b3f8
\ No newline at end of file
+836361ca3a318f03b4e43b70c3e960db
\ No newline at end of file
index 289c0956aa71af3b34a3429ce54942940a230d0f..d49775def1a637ad75af19d9b8d80ef706155630 100644 (file)
Binary files a/LayoutTests/editing/pasteboard/4076267-expected.png and b/LayoutTests/editing/pasteboard/4076267-expected.png differ
index 561e58b18cb906ac8ca3669998398e8761a3a09c..bdb21fbb5a9b26fff475ac93f18055b7de8b2626 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 7548ec81c675f8ae8a788f2ccc3a027aefa02e9b..6fa1585db2b4d9431d8e77c15d616b748a27d2c4 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 c425eff7bb3697ff13f7ccdeaae030898d3d45b6..c195d973cdc001207c3b02de51d9c1de0c90f53c 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 6cba87d535d845f4246a16218ae8b2c5fa23cfa2..d3fb0622a2c652a9b7e4b54ed70e71a7f12d18e3 100644 (file)
@@ -1 +1 @@
-2d5de629ab57d3f03bd0bc02a0dee5bb
\ No newline at end of file
+5082d3f5717104d84b87f0426a43a4bd
\ No newline at end of file
index 621d0cd3748e93b8136fc6373c34de8900298a00..e750a81e53cdd31dd430037bb4b1ac3243b2a34b 100644 (file)
Binary files a/LayoutTests/editing/pasteboard/4242293-expected.png and b/LayoutTests/editing/pasteboard/4242293-expected.png differ
index f550a71f35666d0d2f897353657ddfae95c239ec..fc1e8832249ea855a6d5723a8be652456161242e 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 1ed5f3cff279ee95ef8dbff65c64fc0841235619..c33208e2b5ac132f5238bf03f95282ea155ada52 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 bb75a055e31405a45fa617c0b6d4859dbaa0dce7..9134ccc86ea28c3b80a06a15622aa534e7d7699e 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 c7b5b8a1e45b19ee83681e36cf2e03133a7f6a4b..69ffe752f99a81e59c7f8c6989ae63f2096f105a 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 2f6e812cb4d331d68e9c7e9711b2585c05770593..e069b546915edc92a8779bb87ebdc32ff0ecc221 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 d5bb3cba46af939594cbfd9b73c197c3a0a5362b..f647527882ac5b3e5e3073fb688636cd1a79da99 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 d3e3ac449e515d7ed6cabafe3066ddfe6dd6c8d5..62b6be1fd0a763aa27a8eb992f1825bfc0e5f819 100644 (file)
@@ -1 +1 @@
-252fda8de32734575f0be3641b4dda9a
\ No newline at end of file
+5e7dca71e9734b274e3b13d0e2a08ac7
\ No newline at end of file
index 1bfef7ddc3d378d7c9798be09d4ddffd71003e40..b9e8d0c98de88e97798d6888ac2112a9988468ad 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 5c888aea6d721b781fca5b29126d8895adfa57da..f9b5cc31f7d6e3d5b6329e12a0a098efc9eb6048 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 cf23dfa72f0b4653db8bf2311a6b87ee33df1b17..d21e2e38196840a9fb7e0e864e4fec03fda33713 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 ff502e884f6a29077dbc090448442f69500fe687..a9b33400ca09ebe071e5fa1e2e48e700e6fe1433 100644 (file)
@@ -1 +1 @@
-e45accfe2f4a6c9c48faac6a0e2e3fd3
\ No newline at end of file
+272a84e68766b4ff028d8306a7ba5ff8
\ No newline at end of file
index 3c479987512f2e29821fd8faf67f41fed6b9e8fc..ef3a5e1f896c95b004c45f2d230c69f5d4fb848d 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 9eaad3b300825917e10c8c025587da3260949033..64b4494fdee04ba8f31e3f0ab46a24d64f59c563 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 3041fdcad996355866351b9f4fb21cc58046b427..07a6e23af5d55fa7aff021f5866216daf68f052a 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 c94eb499b6c20e415649eead33c14783f2be9eb3..89e149fbb3a795807042be44adb92dcae39d1e7f 100644 (file)
@@ -1 +1 @@
-6cac15233d2aa377bc36e3133e4cbf61
\ No newline at end of file
+e15f24545c9e781baf0ef872baf790b8
\ No newline at end of file
index 390e57b97cac9d603d5989c9c04db164b9ec5d05..2a85f7ff0cca4fbfd41b341a62500c7b005b2a51 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 d7d222444267ee1d7994bdda9606b81c5d1ff200..0bbc01a8176fe8097ee80163020b282b0e3d08ce 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 25252e28376a08eee9202a785c4fe9485a563918..07ade9dc7bd0e7d42dcc7af9c5ec22353b3bb193 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 4a16fd0a5d27104e6516127557752cd89c0add01..7fa287e10adb2ebad15202d11bd9778e332a3fa1 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 9ad862e92b4d028be9493fe74b474076b28ce3ca..8bef7532b08dc28a9710f4f0129cc16ed420d0ae 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 0e15427b151559ac8d2bfb5daf37d37634560bfc..735920e2a48ab50ccebeeef15a62c2dfe9eee838 100644 (file)
@@ -1 +1 @@
-a9f14eec350ebbcc4797229a8e922aa7
\ No newline at end of file
+fb7ad51f22def32ffdd2cba32c48038a
\ No newline at end of file
index 6c9ce4b085b47bb0ec80d84440fe3a406bd9485e..316a882a78845edf8006504b128f348363296188 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 0406781c41f74b9c60096b40ae5e3e0787d56b7a..18ba6bd8af40f4a737f509827a714c87d2badc5c 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 b29a338f4ae30c7e064a41e96c1ce88b8f771e4d..f84c95cd73b0fe16b25c6209d66f6f106e115036 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 8658de4e5882855645ca437dda5549005bdff699..998cac4c8c39455de6b0454be879180d617c11c5 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 2debd6ba1f40cdf9ca0a5f9fd9cc72e8ab1da75f..76c6233fb45129bf3f50e70fa0d6af8ee8cea31d 100644 (file)
@@ -1 +1 @@
-a736b9c13c7b16504ed0aee65e245f92
\ No newline at end of file
+2c39d2c3c57c1a86cb18421b87f0ac2b
\ No newline at end of file
index 0fb19668ad51b335b3d515c528797381619ff2b4..a9e499269d25d1bd81ad51304dd73a52ac9ff495 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 764bf07f7b2f0334d9a87d011bbb1b52bb55a0b3..d65a37d72b1f8fe62709a4b450255cb4d2c663b8 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 74e8c39e0959b2fdcc2db2da75a2d3000bedcb6f..029f8814bd4dd7c6f5ea600cd872b14a5063ef88 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 53ccd1518d332860b8c5117e6f71f1b650588a43..f2cc074ab75aadeb92f8036c1c9c2ad3f329d0ab 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 41ff846d028a8422a2bc713dbacd2a10c3822100..45671470d2c3b15aa7f9afd3bc8bd19b248de59a 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 66e97a27aa68f8e5b0b04d46b3c7a290d0610724..d7a1e2241c9fb3aa19f543880616ebbacb28381c 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 33a132216ef50e94424c0fce3ca73d2309fcdccc..36f699a99ace1471c2052b1805ca35cea3c084a4 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 bb8ebf67a3255c61f805934a66a33ab0ccf016c4..a6a65493bae5801e2d90fb8c3a8c9397123a6549 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 ef7389b7439f08fdfbc15098dc87113029dc014f..e8c686ebdd39a709b7e74e18f70c4d8713d287d8 100644 (file)
@@ -1 +1 @@
-ce343032b993d8881ce02fe72de0c59f
\ No newline at end of file
+2f9ab2df8060fb2532be8c53c18cb029
\ No newline at end of file
index d131304d69cb0d8500e966a3833b36071c513720..7bbb0c34a49cccf5350024ec2ffed8985eead8ae 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 7b4ecd6c59dccc77c3bbd3da6e78729779cb1ab9..1d52449f3621682f062026a84c37b36df29bab34 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 ccc3eeed4356ef15872893e9fe92eab596e362b0..e08bed86ceec7b7b58ceabb4fb89d3529cd045af 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 7360ba51b05bb1c8c6c88516cd4f3bc77be0263b..23b4c509f5106f78ce7ec624207340bb2a2c6076 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 ee6cb87c0d78e4ecbf8e00ee0eff33ac34a56bb4..40b921c7c7b262d8d44f825df20d4c02380e7943 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 7b7fa72796b083a28ced8c462c73de6f0d102f3f..189e6088540850cec657664587c4a8b9a7b30c36 100644 (file)
@@ -1 +1 @@
-724e1c91f5a277a7584c134c8fdafafa
\ No newline at end of file
+5903eafb96288829b98fc3e96cc0bb7d
\ No newline at end of file
index d315118f662ee5db5d67efc8e7a4947c3c738df3..06bfdcae7873ce483fc15aaffaf1d691996e35cd 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 32948a31699c60f1d42b3ecd40a7cf079288cc93..4e58b657aadc7ad211c88e62b771e3cd72574a1d 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 531a094cac5237fdc0f1cd2bbd008117cb13d01b..ebca07b95ae71c748bbf983330f9f1707a00ec6a 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 6e257883895b3f7efc786aef5a0b236eee260235..264b7f5ba448f1535c8782d4bcf4e99e3e5475f0 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 153b5d2ea6208daf8d7a9c90a7c8f1a12323ecf3..899b26eec8ac1e2cfbadea1c869ccb8c4aeb7b20 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 811b8e3d101e2ff736e246ff4c37fe39a551d349..10964c834f794f451ad0c6fdc537caef18a25390 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 69c238778ef9274e5a7dd026768fe0bf2499541d..3c854262683cfea5943d83f900db3604ae2112d5 100644 (file)
@@ -1 +1 @@
-dcf4b064c0e03e43588e9638c3a557b0
\ No newline at end of file
+75a2782e88e3dbf61affd4d71453ae6a
\ No newline at end of file
index c49151a9c57b4b3e994bb4230978e49f451a8111..e93919a43c416ec82e6003d52dc2fc1c57fa94df 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 71637ceaf63406068415e5c52a972ceb1564fefc..af93c3ebba54e559bd94489539875d4482a2d285 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 d78abfbd70a91ef4f0dc5eafa48997aced1900bd..42fb3b0ca6f2f24c843fe61a9cb157d45054f0df 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 27570198672d66fc7fd09c3ef6d5989808289816..9426148e7167dff288c2468cbbdbe3abf5ef3581 100644 (file)
@@ -1 +1 @@
-4e5ac7980d5e6c1378183b6fad6d7b74
\ No newline at end of file
+20c3f15a73f638d39647191d2583848e
\ No newline at end of file
index b525bdea01a1720b9986c186a3d939e88a6b9457..eddb3b02aaab9924ba80b15aa80b03d1d28b2815 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 df0a64cf34a622b070cdc7e53624afe7b8769a7a..10161c4a9091bb547e9f4ca620a2b6a003b087d5 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 0eef21e31470d7962bb51c78d60e5711c372bf92..134b9c4111f80f1eefd702ce35d04bfc7dff4549 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 135ba4cc3a257dff37fb489857281e1ab4c1cdd2..236dd50fcb99d02ce6dc502a985744af18194026 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 372103491b067876ad0499a7092d32256b93f553..c06614d0f287e19b80d6a51bc171461c5373294d 100644 (file)
@@ -1 +1 @@
-a3445382dec1905883993f121d2c4882
\ No newline at end of file
+60a3a69108263e9487ae750e514fbcc3
\ No newline at end of file
index ab6a304e893b129dc18737458779af28cd20f36b..aa00f533dfd79612aa3e2ac491eccbbfa7c76ec9 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 87a0ffe2574cc6e10cc7b5d19830875ea96ff91a..62bb1af9dfe8c05e7e4f5916dcb4f5d20663d60c 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 28ec1b57cd8d70b054549720a2fac0dfaed1cba3..c4c912d08805ff9c3aef957ec035b6c7ca50bf75 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 ecf1f2fc00c97e758dcc5e6578e4e139bfd19750..611d436f79b14b6decdb4daa1ff73bdd554fc666 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 fc755e27c24ec9c837df51053d209787893dfde9..dc054a0da499485f1481c337ac78665a3f4ccd67 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 7f5eaddc5080e5b82cb4661a56bfc3ce772b2fac..59f60f30a55da8a325e0f34267f6bc5e404841e2 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 4d2724a30f140fa3e7c4e88bad3879fd0dedf4ba..9a1863752870ce136b65ccc5a31c16f34289f337 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 8d0d7f3d5e6e09302f44e2e8638c381ab78aec3f..e9d6cd127a9e41bb5f28e919cc9a061922154f75 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 5770781f2354ad00dbb26736549ccb1915de92e8..904169409bf5e4346c417cbd7e2fe36e9d35158d 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 c8fef68eb621cd30d87c0d33d29d8658433534c7..e282073503e53924d45143c191a987ddd5cdc6fe 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 0af7296aabf76572bee98c9c317c41adc80a4de4..47e57ad141fbda385b05e4efffd4b5fa25b34104 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 12b0fc052417d2a820dcac621fb6776e1aaec6a2..b24047101f926bfa86e1777472536e2b9e7c9510 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 067e9c2898cfea5a5e5ec370be0d52ce4351165f..92f194b13ec49428b79d6b746326f0701a8a1e3d 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 a9b86b6c4133f832425b4dec3004111bf0175ac4..67bec4cc291bbf6454e756f4ae94470a88522d47 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 af39d71b66afa16a772d5e8ad26aac467ae55d74..c766171bec6db68e5920e195025a64fd3bccb6be 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 3852b90b8ad74e9a806dbe65c9727c49317c8ba7..c92921f47ca6de4435ab4b578c1dffc0f799a71f 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 295501950ba7d790b85adc3c2755f02991257a18..045e1d8a2cf96d1e5b413713deff4619052df4a8 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 eae78a819e6cc95dc596cb7960bea4687bd5a0f8..c4e9c8f2dfbffdf9a5492f47e59593f35d1d560a 100644 (file)
@@ -1 +1 @@
-0d91c7ae7bce22e508b9352cd734458f
\ No newline at end of file
+a1b83c92af5a2c9dd2ac73da7505f7ad
\ No newline at end of file
index 216578a2cd63fcfa9106220e77f0fd15011fd6c4..af138ad0d540165b1beea77173a75a57709d8d34 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 6cdc6eb36908d195190f9b31c1a0b93b18b37762..9e00a4d77ea3fdb958d71c092d3767347605b457 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 a8f0d12d7c057d65bf690cfe1bfaffc88750af0e..d68b15f2cf6efea86c9b9bfc48561b7dd8406ec0 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 c7d55dba495f3bcecee9a49d0111b0904cc79816..7c5e0c668a7c3849633fbd3d7933d32d4b77ec82 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 04aaf33c33d81ce5b2eb360510edf746c64ad0e3..d13167784f07e716eb9ff3f200b8a2e9ce32ab56 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 363721eafa516e40cf16d58985e439fb4ea089e7..cfa73f9ba22c08148aac25476f1319828b6ac9b3 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 55d44630dfb398b354f284b07f01048607c28a56..1fd985acafd764402650b61eba82f44fb9fe3570 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 6eec0a6be9431b4aaba12502b98ad63c3d1a41f8..64bc0cb3ef00474b8679b7ac7cc40df406315b30 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 6453f1a5c93325fa9078c84fb474a8fac42184e6..e8d82e2ae2e2faab27f93ec5c489bcdc3add343b 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 8ed7534d74b41909bb3afa5a1d2114ef09b53268..ce67708675d9865fc9e93acf92decb0f284335af 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);
+        m_firstNodeInserted = endingSelection().visibleStart().deepEquivalent().downstream().node();
+        if (!m_lastNodeInserted->inDocument())
+            m_lastNodeInserted = endingSelection().visibleEnd().deepEquivalent().downstream().node();
+    
+    }
+            
+    endOfInsertedContent = VisiblePosition(Position(m_lastNodeInserted.get(), maxDeepOffset(m_lastNodeInserted.get())));
+    startOfInsertedContent = VisiblePosition(Position(m_firstNodeInserted.get(), 0));
     
     if (interchangeNewlineAtEnd) {
-        VisiblePosition pos(insertionPos);
-        VisiblePosition next = pos.next();
+        VisiblePosition next = endOfInsertedContent.next(true);
 
-        if (endWasEndOfParagraph || !isEndOfParagraph(pos) || next.rootEditableElement() != currentRoot) {
-            if (!isStartOfParagraph(pos)) {
-                setEndingSelection(pos.deepEquivalent().downstream(), DOWNSTREAM);
+        if (selectionEndWasEndOfParagraph || !isEndOfParagraph(endOfInsertedContent) || next.isNull()) {
+            if (!isStartOfParagraph(endOfInsertedContent)) {
+                setEndingSelection(endOfInsertedContent);
                 insertParagraphSeparator();
 
                 // Select up to the paragraph separator that was added.
@@ -747,44 +645,32 @@ void ReplaceSelectionCommand::doApply()
             lastPositionToSelect = next.deepEquivalent().downstream();
         }
 
-    } else if (lastNodeInsertedWasBR) {
+    } else if (m_lastNodeInserted->hasTagName(brTag)) {
         // We want to honor the last incoming line break, so, if it will collapse away because of quirks mode, 
         // add an extra one.
         // FIXME: This will expand a br inside a block: <div><br></div>
         // FIXME: Should we expand all incoming brs that collapse because of quirks mode?
-        if (!document()->inStrictMode() && isEndOfBlock(VisiblePosition(Position(m_lastNodeInserted.get(), 0))))
+        if (!document()->inStrictMode() && isEndOfBlock(endOfInsertedContent) && !isStartOfParagraph(endOfInsertedContent))
             insertNodeBeforeAndUpdateNodesInserted(createBreakElement(document()).get(), m_lastNodeInserted.get());
             
-    } else if (shouldMergeEnd(endOfInsertedContent, endWasEndOfParagraph)) {
-        // Make sure that content after the end of the selection being pasted into is in the same paragraph as the 
-        // last bit of content that was inserted.
+    } else if (shouldMergeEnd(selectionEndWasEndOfParagraph)) {
+    
+        // Merging two paragraphs will destroy the moved one's block styles.  Always move forward to preserve
+        // the block style of the paragraph already in the document, unless the paragraph to move would include the
+        // what was the start of the selection that was pasted into.
+        bool mergeForward = !inSameParagraph(startOfInsertedContent, endOfInsertedContent) || isStartOfParagraph(startOfInsertedContent);
         
-        Position downstreamEnd = endOfInsertedContent.deepEquivalent().downstream();
-        Position upstreamOnePastEnd = endOfInsertedContent.next().deepEquivalent().upstream();
-        Node* node = downstreamEnd.node();
-        int offset = downstreamEnd.offset();
-        if (node && node == upstreamOnePastEnd.node() && offset + 1 == upstreamOnePastEnd.offset() && node->isTextNode()) {
-            // Special case for removing a newline character.
-            Text* textNode = static_cast<Text*>(node);
-            if (textNode->length() == 1)
-                removeNodeAndPruneAncestors(textNode);
-            else
-                deleteTextFromNode(textNode, offset, 1);
-        } else {
-            // Merging two paragraphs will destroy the moved one's block styles.  Always move forward to preserve
-            // the block style of the paragraph already in the document, unless the paragraph to move would include the
-            // what was the start of the selection that was pasted into.
-            bool mergeForward = !inSameParagraph(startOfInsertedContent, endOfInsertedContent);
-            
-            VisiblePosition destination = mergeForward ? endOfInsertedContent.next() : endOfInsertedContent;
-            VisiblePosition startOfParagraphToMove = mergeForward ? startOfParagraph(endOfInsertedContent) : endOfInsertedContent.next();
-
-            moveParagraph(startOfParagraphToMove, endOfParagraph(startOfParagraphToMove), destination);
-            // Merging forward will remove m_lastNodeInserted from the document.
-            // FIXME: Maintain positions for the start and end of inserted content instead of keeping nodes.  The nodes are
-            // only ever used to create positions where inserted content starts/ends.
-            if (mergeForward)
-                m_lastNodeInserted = destination.previous().deepEquivalent().node();
+        VisiblePosition destination = mergeForward ? endOfInsertedContent.next() : endOfInsertedContent;
+        VisiblePosition startOfParagraphToMove = mergeForward ? startOfParagraph(endOfInsertedContent) : endOfInsertedContent.next();
+
+        moveParagraph(startOfParagraphToMove, endOfParagraph(startOfParagraphToMove), destination);
+        // Merging forward will remove m_lastNodeInserted from the document.
+        // FIXME: Maintain positions for the start and end of inserted content instead of keeping nodes.  The nodes are
+        // only ever used to create positions where inserted content starts/ends.
+        if (mergeForward) {
+            m_lastNodeInserted = destination.previous().deepEquivalent().node();
+            if (!m_firstNodeInserted->inDocument())
+                m_firstNodeInserted = endingSelection().visibleStart().deepEquivalent().node();
         }
     }
     
@@ -839,9 +725,9 @@ bool ReplaceSelectionCommand::shouldRemoveEndBR(Node* endBR)
     return
         // The br is collapsed away and so is unnecessary.
         !document()->inStrictMode() && isEndOfBlock(visiblePos) && !isStartOfParagraph(visiblePos) ||
-        // A br that was originally holding a line open should be displaced by inserted content.
+        // A br that was originally holding a line open should be displaced by inserted content or turned into a line break.
         // A br that was originally acting as a line break should still be acting as a line break, not as a placeholder.
-        isStartOfParagraph(visiblePos) && isEndOfParagraph(visiblePos);
+        isStartOfParagraph(visiblePos) && isEndOfParagraph(visiblePos) && !m_lastNodeInserted->hasTagName(brTag);
 }
 
 void ReplaceSelectionCommand::completeHTMLReplacement(const Position &lastPositionToSelect)
@@ -907,7 +793,6 @@ void ReplaceSelectionCommand::updateNodesInserted(Node *node)
     if (!node)
         return;
 
-    m_lastTopNodeInserted = node;
     if (!m_firstNodeInserted)
         m_firstNodeInserted = node;
     
index 6292e9741900d12e1adf4f0aa2d209967f227eaa..54d8049f3a31f2df04f207e734fc2182a42fc40f 100644 (file)
@@ -38,13 +38,11 @@ enum EFragmentType { EmptyFragment, SingleTextNodeFragment, TreeFragment };
 
 class RenderingInfo : public Shared<RenderingInfo> {
 public:
-    RenderingInfo(PassRefPtr<CSSMutableStyleDeclaration>, bool);
+    RenderingInfo(PassRefPtr<CSSMutableStyleDeclaration>);
     
     CSSMutableStyleDeclaration* style() const { return m_style.get(); }
-    bool wasBlock() const { return m_wasBlock; }
 private:
     RefPtr<CSSMutableStyleDeclaration> m_style;
-    bool m_wasBlock;
 };
 
 typedef Vector<RefPtr<Node> > NodeVector;
@@ -66,13 +64,10 @@ public:
     const NodeVector& nodes() const { return m_nodes; }
 
     bool isEmpty() const;
-
-    bool hasMoreThanOneBlock() const { return m_hasMoreThanOneBlock; }
+    
     bool hasInterchangeNewlineAtStart() const { return m_hasInterchangeNewlineAtStart; }
     bool hasInterchangeNewlineAtEnd() const { return m_hasInterchangeNewlineAtEnd; }
     
-    bool wasBlock(Node*) const;
-    
     void removeNode(PassRefPtr<Node>);
 
 private:    
@@ -84,7 +79,6 @@ private:
     void computeStylesUsingTestRendering(Node*);
     void removeUnrenderedNodes(Node*);
     void restoreTestRenderingNodesToFragment(Node*);
-    int renderedBlocks(Node*);
     void removeStyleNodes();
     
     void removeNodePreservingChildren(Node*);
@@ -97,14 +91,12 @@ private:
     bool m_matchStyle;
     bool m_hasInterchangeNewlineAtStart;
     bool m_hasInterchangeNewlineAtEnd;
-    bool m_hasMoreThanOneBlock;
 };
 
 class ReplaceSelectionCommand : public CompositeEditCommand
 {
 public:
-    ReplaceSelectionCommand(Document *document, DocumentFragment *fragment, bool selectReplacement=true, bool smartReplace=false, bool matchStyle=false, bool forceMergeStart=false, EditAction action=EditActionPaste);
-    virtual ~ReplaceSelectionCommand();
+    ReplaceSelectionCommand(Document*, DocumentFragment*, bool selectReplacement=true, bool smartReplace=false, bool matchStyle=false, bool preventNesting=true, EditAction action=EditActionPaste);
     
     virtual void doApply();
     virtual EditAction editingAction() const;
@@ -116,22 +108,22 @@ private:
     void insertNodeAtAndUpdateNodesInserted(Node *insertChild, Node *refChild, int offset);
     void insertNodeBeforeAndUpdateNodesInserted(Node *insertChild, Node *refChild);
 
-    void updateNodesInserted(Node *);
+    void updateNodesInserted(Node*);
     void fixupNodeStyles(const NodeVector&, const RenderingInfoMap&);
     bool shouldRemoveEndBR(Node*);
     
-    bool shouldMergeStart(const ReplacementFragment&, const Selection&);
-    bool shouldMergeEnd(const VisiblePosition&, bool selectionEndWasEndOfParagraph);
+    bool shouldMergeStart(bool, bool);
+    bool shouldMergeEnd(bool);
+    bool shouldMerge(const VisiblePosition&, const VisiblePosition&);
 
     RefPtr<Node> m_firstNodeInserted;
     RefPtr<Node> m_lastNodeInserted;
-    RefPtr<Node> m_lastTopNodeInserted;
     RefPtr<CSSMutableStyleDeclaration> m_insertionStyle;
     bool m_selectReplacement;
     bool m_smartReplace;
     bool m_matchStyle;
     RefPtr<DocumentFragment> m_documentFragment;
-    bool m_forceMergeStart;
+    bool m_preventNesting;
     EditAction m_editAction;
 };
 
index a6a96725cc8a657c32c27495f4f459cf59195710..b35d86904d0801b986eddf3db876e80a352bb697 100644 (file)
@@ -423,12 +423,13 @@ DeprecatedString createMarkup(const Range *range, Vector<Node*>* nodes, EAnnotat