LayoutTests:
authorjusting <justing@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 9 Mar 2007 02:37:26 +0000 (02:37 +0000)
committerjusting <justing@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 9 Mar 2007 02:37:26 +0000 (02:37 +0000)
        Reviewed by harrison

        <rdar://problem/4903193>
        On particular page, Copy is so slow it seems like a hang

        Less messy DOM trees:
        * editing/deleting/delete-3857753-fix-expected.txt:
        * editing/inserting/insert-3786362-fix-expected.txt:
        * editing/inserting/insert-3907422-fix-expected.txt:
        * editing/pasteboard/display-block-on-spans-expected.txt:
        * editing/pasteboard/paste-4035648-fix-expected.txt:
        * editing/pasteboard/paste-4039777-fix-expected.txt:
        * editing/pasteboard/paste-line-endings-001-expected.txt:
        * editing/pasteboard/paste-line-endings-006-expected.txt:
        * editing/pasteboard/paste-list-001-expected.txt:
        * editing/pasteboard/paste-pre-001-expected.txt:
        * editing/pasteboard/paste-pre-002-expected.txt:
        * editing/pasteboard/paste-table-001-expected.txt:
        * editing/pasteboard/paste-table-002-expected.txt:
        * editing/pasteboard/paste-text-003-expected.txt:
        * editing/pasteboard/paste-text-011-expected.txt:
        * editing/pasteboard/paste-text-015-expected.txt:
        * editing/pasteboard/paste-text-016-expected.txt:
        * editing/pasteboard/paste-text-017-expected.txt:
        * editing/pasteboard/styled-element-markup-expected.txt:
        * editing/pasteboard/testcase-9507-expected.txt:
        * editing/style/smoosh-styles-001-expected.txt:
        * editing/style/smoosh-styles-002-expected.txt:
        * fast/lists/drag-into-marker-expected.txt:
        Styles from style sheets are now inlined:
        * webarchive/test-duplicate-resources-expected.txt:
        * webarchive/test-frameset-expected.txt:
        * webarchive/test-link-href-expected.txt:\
        Two levels of nesting are removed, but text nodes are no
        longer coalesced when they should be, investigating:
        * editing/pasteboard/block-wrappers-necessary-expected.txt:

WebCore:

        Reviewed by harrison

        <rdar://problem/4903193>
        On particular page, Copy is so slow it seems like a hang

        ~2x speedup copying:
        http://shakespeare.mit.edu/henryviii/full.html
        Also produces less bloated markup.

        * editing/markup.cpp:
        (WebCore::startMarkup): Don't wrap text nodes in style spans.
        For Elements, don't inline styles inherited from ancestors.
        (WebCore::createMarkup): No longer necessary to find
        the root's default style and pass it to startMarkup.
        Add a wrapper span around the markup with the styles
        that all nodes in the markup inherit (the inheritable
        styles from the common ancestor container's computed style).
        Added a FIXME about unecessary markup for inline ancestors
        up to the commonAncestorBlock.

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

31 files changed:
LayoutTests/ChangeLog
LayoutTests/editing/deleting/delete-3857753-fix-expected.txt
LayoutTests/editing/inserting/insert-3786362-fix-expected.txt
LayoutTests/editing/inserting/insert-3907422-fix-expected.txt
LayoutTests/editing/pasteboard/block-wrappers-necessary-expected.txt
LayoutTests/editing/pasteboard/display-block-on-spans-expected.txt
LayoutTests/editing/pasteboard/paste-4035648-fix-expected.txt
LayoutTests/editing/pasteboard/paste-4039777-fix-expected.txt
LayoutTests/editing/pasteboard/paste-line-endings-001-expected.txt
LayoutTests/editing/pasteboard/paste-line-endings-006-expected.txt
LayoutTests/editing/pasteboard/paste-list-001-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.txt
LayoutTests/editing/pasteboard/paste-table-002-expected.txt
LayoutTests/editing/pasteboard/paste-text-003-expected.txt
LayoutTests/editing/pasteboard/paste-text-011-expected.txt
LayoutTests/editing/pasteboard/paste-text-015-expected.txt
LayoutTests/editing/pasteboard/paste-text-016-expected.txt
LayoutTests/editing/pasteboard/paste-text-017-expected.txt
LayoutTests/editing/pasteboard/styled-element-markup-expected.txt
LayoutTests/editing/pasteboard/testcase-9507-expected.txt
LayoutTests/editing/style/smoosh-styles-001-expected.txt
LayoutTests/editing/style/smoosh-styles-002-expected.txt
LayoutTests/fast/lists/drag-into-marker-expected.txt
LayoutTests/webarchive/test-duplicate-resources-expected.txt
LayoutTests/webarchive/test-frameset-expected.txt
LayoutTests/webarchive/test-link-href-expected.txt
WebCore/ChangeLog
WebCore/WebCore.xcodeproj/project.pbxproj
WebCore/editing/markup.cpp

index fcd5bba..9fefedf 100644 (file)
@@ -1,3 +1,42 @@
+2007-03-08  Justin Garcia  <justin.garcia@apple.com>
+
+        Reviewed by harrison
+        
+        <rdar://problem/4903193> 
+        On particular page, Copy is so slow it seems like a hang
+
+        Less messy DOM trees:
+        * editing/deleting/delete-3857753-fix-expected.txt:
+        * editing/inserting/insert-3786362-fix-expected.txt:
+        * editing/inserting/insert-3907422-fix-expected.txt:
+        * editing/pasteboard/display-block-on-spans-expected.txt:
+        * editing/pasteboard/paste-4035648-fix-expected.txt:
+        * editing/pasteboard/paste-4039777-fix-expected.txt:
+        * editing/pasteboard/paste-line-endings-001-expected.txt:
+        * editing/pasteboard/paste-line-endings-006-expected.txt:
+        * editing/pasteboard/paste-list-001-expected.txt:
+        * editing/pasteboard/paste-pre-001-expected.txt:
+        * editing/pasteboard/paste-pre-002-expected.txt:
+        * editing/pasteboard/paste-table-001-expected.txt:
+        * editing/pasteboard/paste-table-002-expected.txt:
+        * editing/pasteboard/paste-text-003-expected.txt:
+        * editing/pasteboard/paste-text-011-expected.txt:
+        * editing/pasteboard/paste-text-015-expected.txt:
+        * editing/pasteboard/paste-text-016-expected.txt:
+        * editing/pasteboard/paste-text-017-expected.txt:
+        * editing/pasteboard/styled-element-markup-expected.txt:
+        * editing/pasteboard/testcase-9507-expected.txt:
+        * editing/style/smoosh-styles-001-expected.txt:
+        * editing/style/smoosh-styles-002-expected.txt:
+        * fast/lists/drag-into-marker-expected.txt:
+        Styles from style sheets are now inlined:
+        * webarchive/test-duplicate-resources-expected.txt:
+        * webarchive/test-frameset-expected.txt:
+        * webarchive/test-link-href-expected.txt:\
+        Two levels of nesting are removed, but text nodes are no
+        longer coalesced when they should be, investigating:
+        * editing/pasteboard/block-wrappers-necessary-expected.txt:
+
 2007-03-08  Maciej Stachowiak  <mjs@apple.com>
 
         Reviewed by Adele.
index f0faa36..a329172 100644 (file)
@@ -20,8 +20,8 @@ layer at (0,0) size 800x600
         RenderInline {B} at (0,0) size 37x28
           RenderText {#text} at (0,0) size 25x28
             text run at (0,0) width 25: "on"
-          RenderInline {SPAN} at (0,0) size 12x28
-            RenderInline {I} at (0,0) size 12x28
+          RenderInline {I} at (0,0) size 12x28
+            RenderInline {SPAN} at (0,0) size 12x28
               RenderText {#text} at (25,0) size 12x28
                 text run at (25,0) width 12: "o"
       RenderBlock {DIV} at (14,42) size 756x28
index 7f09cfb..5fb08f6 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 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 1 of SPAN > DIV > DIV > BODY > HTML > #document to 1 of SPAN > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+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
@@ -32,8 +32,6 @@ layer at (0,0) size 800x600
         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"
-          RenderInline {SPAN} at (0,0) size 0x18
-            RenderBR {BR} at (13,24) size 0x0
-          RenderInline {SPAN} at (0,0) size 0x18
-            RenderBR {BR} at (2,30) size 0x28
-caret: position 0 of child 0 {BR} of child 2 {SPAN} of child 3 {DIV} of child 3 {DIV} of child 1 {BODY} of child 0 {HTML} of document
+          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 5cb9e27..6a0d127 100644 (file)
@@ -34,6 +34,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 {DIV} at (0,102) size 784x52
           RenderBlock (anonymous) at (0,0) size 784x0
           RenderBlock {BLOCKQUOTE} at (40,0) size 704x18
@@ -42,5 +43,4 @@ layer at (0,0) size 800x600
           RenderBlock (anonymous) at (0,34) size 784x18
             RenderText {#text} at (0,0) size 22x18
               text run at (0,0) width 22: "baz"
-        RenderBlock (anonymous) at (0,154) size 784x0
 caret: position 3 of child 1 {#text} of child 1 {DIV} of child 1 {DIV} of child 1 {BODY} of child 0 {HTML} of document
index 54c3b58..3ff2415 100644 (file)
@@ -13,7 +13,7 @@ EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotificatio
 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: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 85 of #text > P > SPAN > P > CENTER > DIV > DIV > BODY > HTML > #document to 85 of #text > P > SPAN > 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
@@ -42,52 +42,58 @@ layer at (0,0) size 800x600
         RenderBlock {DIV} at (0,0) size 784x190 [border: (2px solid #FF0000)]
           RenderBlock {CENTER} at (2,20) size 780x150
             RenderBlock {P} at (0,0) size 780x150
-              RenderBlock (anonymous) at (0,0) size 780x0
-                RenderInline {SPAN} at (0,0) size 0x0
-              RenderBlock (anonymous) at (0,0) size 780x110
-                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 (anonymous) at (0,128) size 780x0
-                RenderInline {SPAN} at (0,0) size 0x0
-                RenderInline {SPAN} at (0,0) size 0x0
-              RenderBlock (anonymous) at (0,128) size 780x22
-                RenderBlock {P} at (0,0) 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 {P} at (0,0) size 780x110
+                RenderText {#text} at (0,0) size 71x22
+                  text run at (0,0) width 71: "This is an"
+                RenderText {#text} at (71,0) size 5x22
+                  text run at (71,0) width 5: " "
+                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 5x22
+                  text run at (158,0) width 5: " "
+                RenderText {#text} at (163,0) size 617x44
+                  text run at (163,0) width 617: "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 110x22
+                  text run at (20,44) width 110: "(Adding to this"
+                RenderText {#text} at (130,44) size 5x22
+                  text run at (130,44) width 5: " "
+                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 202x22
+                  text run at (242,44) width 202: ", you can't screw it up). See"
+                RenderText {#text} at (444,44) size 5x22
+                  text run at (444,44) width 5: " "
+                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 5x22
+                  text run at (563,44) width 5: " "
+                RenderText {#text} at (568,44) size 191x22
+                  text run at (568,44) width 191: "for text formatting syntax."
+                RenderBR {BR} at (759,61) size 0x0
+                RenderText {#text} at (161,66) size 278x22
+                  text run at (161,66) width 278: "Info for setting up your own wiki is at"
+                RenderText {#text} at (439,66) size 5x22
+                  text run at (439,66) width 5: " "
+                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 509x22
+                  text run at (96,88) width 509: "Check out a cool wiki editor application that helps in wiki generation:"
+                RenderText {#text} at (605,88) size 5x22
+                  text run at (605,88) width 5: " "
+                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
-                RenderInline {SPAN} at (0,0) size 0x0
-caret: position 85 of child 0 {#text} of child 0 {P} of child 1 {SPAN} 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
+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 362400f..d66873e 100644 (file)
@@ -4,7 +4,7 @@ EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotificatio
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: shouldInsertNode:#document-fragment replacingDOMRange:range from 0 of #text > B > SPAN > DIV > BODY > HTML > #document to 4 of #text > B > SPAN > DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 4 of #text > B > SPAN > B > SPAN > DIV > BODY > HTML > #document to 4 of #text > B > SPAN > B > SPAN > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 4 of #text > B > SPAN > DIV > BODY > HTML > #document to 4 of #text > B > SPAN > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 layer at (0,0) size 800x600
@@ -34,10 +34,8 @@ layer at (0,0) size 800x600
         RenderBlock (anonymous) at (0,18) size 784x0
         RenderBlock {SPAN} at (0,18) size 784x18
           RenderInline {B} at (0,0) size 182x18
-            RenderInline {SPAN} at (0,0) size 30x18
-              RenderInline {B} at (0,0) size 30x18
-                RenderText {#text} at (0,0) size 30x18
-                  text run at (0,0) width 30: "This"
+            RenderText {#text} at (0,0) size 30x18
+              text run at (0,0) width 30: "This"
             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 0 {SPAN} of child 0 {B} of child 2 {SPAN} of child 5 {DIV} of child 1 {BODY} of child 0 {HTML} of document
+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 22687ad..d12ff41 100644 (file)
@@ -46,13 +46,11 @@ layer at (0,0) size 800x600
             text run at (0,84) width 49: "plain"
       RenderBlock {DIV} at (0,264) size 784x88
         RenderBlock {DIV} at (0,0) size 784x88 [border: (2px solid #FF0000)]
-          RenderInline {SPAN} at (0,0) size 0x18
-            RenderBR {BR} at (2,2) size 0x28
-          RenderInline {SPAN} at (0,0) size 45x18
-            RenderInline {B} at (0,0) size 45x28
-              RenderText {#text} at (2,30) size 45x28
-                text run at (2,30) width 45: "bold"
-              RenderBR {BR} at (47,52) size 0x0
+          RenderBR {BR} at (2,2) size 0x28
+          RenderInline {B} at (0,0) size 45x28
+            RenderText {#text} at (2,30) size 45x28
+              text run at (2,30) width 45: "bold"
+            RenderBR {BR} at (47,52) size 0x0
           RenderText {#text} at (2,58) size 49x28
             text run at (2,58) width 49: "plain"
 caret: position 5 of child 2 {#text} of child 1 {DIV} of child 3 {DIV} of child 1 {BODY} of child 0 {HTML} of document
index cb78118..669b3a2 100644 (file)
@@ -4,7 +4,7 @@ EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotificatio
 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: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 1 of #text > LI > UL > DIV > SPAN > DIV > DIV > BODY > HTML > #document to 1 of #text > LI > UL > DIV > SPAN > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 1 of #text > LI > UL > DIV > DIV > DIV > BODY > HTML > #document to 1 of #text > 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
@@ -52,32 +52,24 @@ layer at (0,0) size 800x600
                   text run at (0,28) width 16: "C"
       RenderBlock {DIV} at (0,364) size 784x188
         RenderBlock {DIV} at (0,0) size 784x188 [border: (2px solid #FF0000)]
-          RenderBlock (anonymous) at (2,2) size 780x0
-            RenderInline {SPAN} at (0,0) size 0x0
-          RenderBlock (anonymous) at (2,26) size 780x28
-            RenderBlock {UL} at (0,0) size 780x28
-              RenderListItem {LI} at (40,0) size 740x28
+          RenderBlock {UL} at (2,26) size 780x28
+            RenderListItem {LI} at (40,0) size 740x28
+              RenderListMarker at (-22,0) size 9x28: bullet
+              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
                 RenderListMarker at (-22,0) size 9x28: bullet
-                RenderText {#text} at (723,0) size 17x28
-                  text run at (723,0) width 17: "A"
-          RenderBlock (anonymous) at (2,78) size 780x0
-            RenderInline {SPAN} at (0,0) size 0x0
-            RenderInline {SPAN} at (0,0) size 0x0
-          RenderBlock (anonymous) at (2,78) size 780x56
-            RenderBlock {DIV} at (0,0) size 780x56
-              RenderBlock {UL} at (0,0) size 780x56
-                RenderListItem {LI} at (40,0) size 740x56
-                  RenderListMarker at (-22,0) size 9x28: bullet
-                  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
-                  RenderText {#text} at (724,28) size 16x28
-                    text run at (724,28) width 16: "C"
+                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
+                RenderText {#text} at (724,28) size 16x28
+                  text run at (724,28) width 16: "C"
           RenderBlock (anonymous) at (2,158) size 780x28
-            RenderInline {SPAN} at (0,0) size 0x0
             RenderBR {BR} at (780,0) size 0x28
           RenderBlock {DIV} at (2,186) size 780x0
-caret: position 1 of child 3 {#text} of child 0 {LI} of child 0 {UL} of child 0 {DIV} of child 1 {SPAN} of child 1 {DIV} of child 3 {DIV} of child 1 {BODY} of child 0 {HTML} of document
+caret: position 1 of child 3 {#text} 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 054a9e8..986f8f0 100644 (file)
@@ -11,7 +11,7 @@ EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotificatio
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: shouldInsertNode:#document-fragment replacingDOMRange:range from 1 of DIV > DIV > BODY > HTML > #document to 2 of DIV > DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 1 of SPAN > DIV > DIV > BODY > HTML > #document to 1 of SPAN > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) 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
@@ -43,8 +43,7 @@ layer at (0,0) size 800x600
         RenderBlock {DIV} at (0,0) size 784x60 [border: (2px solid #FF0000)]
           RenderText {#text} at (2,2) size 78x28
             text run at (2,2) width 78: "line one"
-          RenderInline {SPAN} at (0,0) size 0x18
-            RenderBR {BR} at (80,24) size 0x0
+          RenderBR {BR} at (80,24) size 0x0
           RenderText {#text} at (2,30) size 79x28
             text run at (2,30) width 79: "line two"
 caret: position 0 of child 2 {#text} of child 1 {DIV} of child 3 {DIV} of child 1 {BODY} of child 0 {HTML} of document
index 17acc80..7691de8 100644 (file)
@@ -45,8 +45,7 @@ layer at (0,0) size 800x600
         RenderBlock {DIV} at (0,0) size 784x60 [border: (2px solid #FF0000)]
           RenderText {#text} at (2,2) size 78x28
             text run at (2,2) width 78: "line one"
-          RenderInline {SPAN} at (0,0) size 0x18
-            RenderBR {BR} at (80,24) size 0x0
+          RenderBR {BR} at (80,24) size 0x0
           RenderText {#text} at (2,30) size 7x28
             text run at (2,30) width 7: "l"
           RenderText {#text} at (9,30) size 72x28
index 1519e64..8a215e0 100644 (file)
@@ -44,5 +44,5 @@ layer at (0,0) size 800x600
                 RenderListMarker at (-31,0) size 24x28: "3"
                 RenderText {#text} at (0,0) size 211x28
                   text run at (0,0) width 211: "I should be number 3."
-            RenderBlock (anonymous) at (0,112) size 716x0
+              RenderBlock (anonymous) at (40,84) size 676x0
 caret: position 21 of child 0 {#text} of child 2 {LI} of child 1 {OL} of child 5 {LI} of child 4 {OL} of child 1 {DIV} of child 1 {BODY} of child 0 {HTML} of document
index c193668..2fa7e4a 100644 (file)
@@ -9,7 +9,7 @@ EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotificatio
 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: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 7 of #text > PRE > SPAN > PRE > DIV > DIV > BODY > HTML > #document to 7 of #text > PRE > SPAN > 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
@@ -46,14 +46,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
-            RenderBlock (anonymous) at (0,0) size 780x0
-              RenderInline {SPAN} at (0,0) size 0x0
-            RenderBlock (anonymous) at (0,0) size 780x56
-              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 {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
-              RenderInline {SPAN} at (0,0) size 0x0
-caret: position 7 of child 0 {#text} of child 0 {PRE} of child 0 {SPAN} of child 1 {PRE} of child 1 {DIV} of child 3 {DIV} of child 1 {BODY} of child 0 {HTML} of document
+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 76290e9..271b6fb 100644 (file)
@@ -4,7 +4,7 @@ EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of PRE > DIV > DIV >
 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: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 7 of #text > PRE > SPAN > PRE > DIV > DIV > BODY > HTML > #document to 7 of #text > PRE > SPAN > 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,14 +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
-            RenderBlock (anonymous) at (0,0) size 784x0
-              RenderInline {SPAN} at (0,0) size 0x0
-            RenderBlock (anonymous) 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"
+            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
-              RenderInline {SPAN} at (0,0) size 0x0
-caret: position 7 of child 0 {#text} of child 0 {PRE} of child 0 {SPAN} of child 1 {PRE} of child 1 {DIV} of child 3 {DIV} of child 1 {BODY} of child 0 {HTML} of document
+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 3138810..d5c2ae3 100644 (file)
@@ -67,6 +67,7 @@ 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."
+          RenderBlock (anonymous) at (0,54) size 756x0
           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
@@ -81,5 +82,4 @@ 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."
-          RenderBlock (anonymous) at (0,108) size 756x0
 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 bf90a0e..49af935 100644 (file)
@@ -9,12 +9,12 @@ EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotificatio
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 EDITING DELEGATE: shouldInsertNode:#document-fragment replacingDOMRange:range from 0 of DIV > DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 5 of #text > DIV > SPAN > DIV > DIV > DIV > BODY > HTML > #document to 5 of #text > DIV > SPAN > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+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
 Problem: copy/pasting some HTML including tables can give rise to a <div> element as the first child of the table element. This is invalid.
 abcdef
 foo    bar
 ghijk
-<div id="test" class="editing"> <div>abcdef<span class="Apple-style-span" style="font-size: 16px; "><div style="font-size: 24px; text-align: center; "><table style="font-size: 16px; text-align: auto; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "><tbody style=""><tr style=""><td style="">foo</td><td style="">bar</td></tr></tbody></table>ghijk</div></span> </div> </div>
+<div id="test" class="editing" style="border-top-width: 2px; border-right-width: 2px; border-bottom-width: 2px; border-left-width: 2px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: red; border-right-color: red; border-bottom-color: red; border-left-color: red; font-size: 24px; "> <div>abcdef<div style="text-align: center; "><table><tbody><tr><td>foo</td><td>bar</td></tr></tbody></table>ghijk</div> </div> </div>
 
index e6bde78..78acd9b 100644 (file)
@@ -111,13 +111,10 @@ layer at (0,0) size 800x600
             text run at (0,0) width 63: "There "
           RenderText {#text} at (63,0) size 285x28
             text run at (63,0) width 285: "is a tide in the affairs of men,"
-          RenderInline {SPAN} at (0,0) size 0x18
-        RenderBlock (anonymous) at (14,42) size 756x56
-          RenderBlock {DIV} at (0,0) size 756x56 [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."
+        RenderBlock {DIV} at (14,42) size 756x56 [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."
         RenderBlock (anonymous) at (14,98) size 756x0
-          RenderInline {SPAN} at (0,0) size 0x0
         RenderBlock {DIV} at (14,98) size 756x252 [border: (2px solid #FF0000)]
           RenderBlock (anonymous) at (14,14) size 728x0
           RenderBlock {DIV} at (14,14) size 728x56 [border: (2px solid #FF0000)]
@@ -126,13 +123,10 @@ layer at (0,0) size 800x600
             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
-            RenderInline {SPAN} at (0,0) size 0x0
-          RenderBlock (anonymous) at (14,70) size 728x56
-            RenderBlock {DIV} at (0,0) 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."
+          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."
           RenderBlock (anonymous) at (14,126) size 728x0
-            RenderInline {SPAN} at (0,0) size 0x0
           RenderBlock {DIV} at (14,126) size 728x112 [border: (2px solid #FF0000)]
             RenderBlock (anonymous) at (14,14) size 700x28
               RenderText {#text} at (0,0) size 80x28
index d89aabe..a716c02 100644 (file)
@@ -8,7 +8,7 @@ EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotificatio
 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: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 5 of #text > B > FONT > P > DIV > SPAN > B > FONT > P > BODY > HTML > #document to 5 of #text > B > FONT > P > DIV > SPAN > B > FONT > P > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 5 of #text > B > FONT > P > DIV > B > FONT > P > BODY > HTML > #document to 5 of #text > B > FONT > P > DIV > B > FONT > P > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 layer at (0,0) size 800x600
@@ -30,7 +30,6 @@ layer at (0,0) size 800x600
         RenderBlock (anonymous) at (0,0) size 784x0
           RenderInline {FONT} at (0,0) size 0x0
             RenderInline {B} at (0,0) size 0x0
-              RenderInline {SPAN} at (0,0) size 0x0
         RenderBlock (anonymous) at (0,0) size 784x58
           RenderBlock {DIV} at (0,0) size 784x58
             RenderBlock {P} at (0,0) size 784x21
@@ -43,12 +42,8 @@ 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 (anonymous) at (0,74) size 784x0
         RenderBlock (anonymous) at (0,74) size 784x0
           RenderInline {FONT} at (0,0) size 0x0
             RenderInline {B} at (0,0) size 0x0
-              RenderInline {SPAN} at (0,0) size 0x0
-          RenderInline {FONT} at (0,0) size 0x0
-            RenderInline {B} at (0,0) size 0x0
-          RenderInline {FONT} at (0,0) size 0x0
-            RenderInline {B} at (0,0) size 0x0
-caret: position 5 of child 0 {#text} of child 0 {B} of child 0 {FONT} of child 1 {P} of child 0 {DIV} of child 0 {SPAN} of child 0 {B} of child 0 {FONT} of child 4 {P} of child 1 {BODY} of child 0 {HTML} of document
+caret: position 5 of child 0 {#text} of child 0 {B} of child 0 {FONT} of child 1 {P} of child 0 {DIV} of child 0 {B} of child 0 {FONT} of child 4 {P} of child 1 {BODY} of child 0 {HTML} of document
index 9108cd0..c04c942 100644 (file)
@@ -15,15 +15,15 @@ EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotificatio
 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: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 3 of #text > P > DIV > SPAN > P > DIV > DIV > BODY > HTML > #document to 3 of #text > P > DIV > SPAN > P > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 3 of #text > P > SPAN > DIV > P > DIV > DIV > BODY > HTML > #document to 3 of #text > P > SPAN > DIV > 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 > SPAN > P > DIV > DIV > BODY > HTML > #document to 3 of #text > P > DIV > SPAN > P > DIV > DIV > BODY > HTML > #document toDOMRange:range from 0 of P > DIV > SPAN > P > DIV > DIV > BODY > HTML > #document to 0 of P > DIV > SPAN > P > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 3 of #text > P > SPAN > DIV > P > DIV > DIV > BODY > HTML > #document to 3 of #text > P > SPAN > DIV > P > DIV > DIV > BODY > HTML > #document toDOMRange:range from 0 of P > SPAN > DIV > P > DIV > DIV > BODY > HTML > #document to 0 of P > SPAN > DIV > 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 > SPAN > P > DIV > DIV > BODY > HTML > #document to 0 of P > DIV > SPAN > P > DIV > DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
+EDITING DELEGATE: shouldInsertNode:#document-fragment replacingDOMRange:range from 0 of P > SPAN > DIV > P > DIV > DIV > BODY > HTML > #document to 0 of P > SPAN > DIV > P > DIV > DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 3 of #text > P > DIV > SPAN > P > DIV > SPAN > P > DIV > DIV > BODY > HTML > #document to 3 of #text > P > DIV > SPAN > P > DIV > SPAN > P > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 3 of #text > P > SPAN > DIV > P > SPAN > DIV > P > DIV > DIV > BODY > HTML > #document to 3 of #text > P > SPAN > DIV > P > SPAN > DIV > P > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 layer at (0,0) size 800x600
@@ -34,10 +34,10 @@ layer at (0,0) size 800x600
       RenderBlock {DIV} at (0,0) size 784x140
         RenderBlock {DIV} at (0,0) size 784x140 [border: (2px solid #FF0000)]
           RenderBlock {P} at (14,14) size 756x112
-            RenderBlock (anonymous) at (0,0) size 756x0
-              RenderInline {SPAN} at (0,0) size 0x0
-            RenderBlock (anonymous) at (0,0) size 756x112
-              RenderBlock {DIV} at (0,0) size 756x112
+            RenderBlock {DIV} at (0,0) size 756x112
+              RenderBlock (anonymous) at (0,0) size 756x0
+                RenderInline {SPAN} at (0,0) size 0x0
+              RenderBlock (anonymous) at (0,0) size 756x112
                 RenderBlock {P} at (0,0) size 756x28
                   RenderText {#text} at (0,0) size 32x28
                     text run at (0,0) width 32: "foo"
@@ -45,18 +45,20 @@ layer at (0,0) size 800x600
                   RenderText {#text} at (0,0) size 31x28
                     text run at (0,0) width 31: "bar"
                 RenderBlock {P} at (0,56) size 756x56
-                  RenderBlock (anonymous) at (0,0) size 756x0
-                    RenderInline {SPAN} at (0,0) size 0x0
-                  RenderBlock (anonymous) at (0,0) size 756x56
-                    RenderBlock {DIV} at (0,0) size 756x56
+                  RenderBlock {DIV} at (0,0) size 756x56
+                    RenderBlock (anonymous) at (0,0) size 756x0
+                      RenderInline {SPAN} at (0,0) size 0x0
+                    RenderBlock (anonymous) at (0,0) 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
+                      RenderInline {SPAN} at (0,0) size 0x0
                   RenderBlock (anonymous) at (0,56) size 756x0
-                    RenderInline {SPAN} at (0,0) size 0x0
+              RenderBlock (anonymous) at (0,112) size 756x0
+                RenderInline {SPAN} at (0,0) size 0x0
             RenderBlock (anonymous) at (0,112) size 756x0
-              RenderInline {SPAN} at (0,0) size 0x0
-caret: position 3 of child 0 {#text} of child 1 {P} of child 0 {DIV} of child 0 {SPAN} of child 2 {P} of child 0 {DIV} of child 0 {SPAN} of child 0 {P} of child 1 {DIV} of child 1 {DIV} of child 1 {BODY} of child 0 {HTML} of document
+caret: position 3 of child 0 {#text} of child 1 {P} of child 0 {SPAN} of child 0 {DIV} of child 2 {P} of child 0 {SPAN} of child 0 {DIV} of child 0 {P} of child 1 {DIV} of child 1 {DIV} of child 1 {BODY} of child 0 {HTML} of document
index f86398a..c249bda 100644 (file)
@@ -43,13 +43,10 @@ layer at (0,0) size 800x600
               RenderText {#text} at (0,0) size 319x28
                 text run at (0,0) width 319: "Should be first line of document."
               RenderBR {BR} at (319,22) size 0x0
-              RenderInline {SPAN} at (0,0) size 0x0
-            RenderBlock (anonymous) at (0,28) size 756x28
-              RenderBlock {P} at (0,0) size 756x28
-                RenderText {#text} at (0,0) size 130x28
-                  text run at (0,0) width 130: "***TEST***"
+            RenderBlock {P} at (0,28) size 756x28
+              RenderText {#text} at (0,0) size 130x28
+                text run at (0,0) width 130: "***TEST***"
             RenderBlock (anonymous) at (0,56) size 756x56
-              RenderInline {SPAN} at (0,0) size 0x0
               RenderBR {BR} at (0,0) size 0x28
               RenderText {#text} at (0,28) size 128x28
                 text run at (0,28) width 128: "Another line."
index 7d78e07..09aea7b 100644 (file)
@@ -40,14 +40,10 @@ layer at (0,0) size 800x600
           RenderBlock {DIV} at (2,30) size 780x28
             RenderBR {BR} at (0,0) size 0x28
           RenderBlock {DIV} at (2,58) size 780x56
-            RenderBlock (anonymous) at (0,0) size 780x0
-              RenderInline {SPAN} at (0,0) size 0x0
-            RenderBlock (anonymous) at (0,0) size 780x28
-              RenderBlock {DIV} at (0,0) size 780x28
-                RenderText {#text} at (0,0) size 36x28
-                  text run at (0,0) width 36: "two"
+            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
-              RenderInline {SPAN} at (0,0) size 0x0
               RenderBR {BR} at (0,0) size 0x28
           RenderBlock {DIV} at (2,114) size 780x28
             RenderText {#text} at (0,0) size 49x28
index 48a4111..64d4229 100644 (file)
@@ -7,7 +7,7 @@ EDITING DELEGATE: webViewDidEndEditing:WebViewDidEndEditingNotification
 EDITING DELEGATE: shouldBeginEditingInDOMRange:range from 0 of DIV > BODY > HTML > #document to 0 of DIV > BODY > HTML > #document
 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 1 of DIV > BODY > HTML > #document to 1 of 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 1 of SPAN > DIV > BODY > HTML > #document to 1 of SPAN > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 layer at (0,0) size 800x600
@@ -29,5 +29,6 @@ layer at (0,0) size 800x600
         RenderBlock {CENTER} at (0,0) size 784x103
           RenderImage {IMG} at (354,0) size 76x103
       RenderBlock {DIV} at (0,207) size 784x103
-        RenderImage {IMG} at (0,0) size 76x103
-caret: position 1 of child 0 {IMG} of child 6 {DIV} of child 1 {BODY} of child 0 {HTML} of document
+        RenderInline {SPAN} at (0,0) size 76x14
+          RenderImage {IMG} at (0,0) size 76x103
+caret: position 1 of child 0 {IMG} of child 0 {SPAN} of child 6 {DIV} of child 1 {BODY} of child 0 {HTML} of document
index 236c677..dc5f2d1 100644 (file)
@@ -2,7 +2,7 @@ EDITING DELEGATE: shouldBeginEditingInDOMRange:range from 0 of DIV > BODY > HTML
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: shouldInsertNode:#document-fragment replacingDOMRange:range from 1 of #text > DIV > DIV > BODY > HTML > #document to 3 of #text > DIV > DIV > DIV > DIV > BODY > HTML > #document givenAction:WebViewInsertActionPasted
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 3 of #text > DIV > DIV > SPAN > DIV > DIV > BODY > HTML > #document to 3 of #text > DIV > DIV > SPAN > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) 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
 layer at (0,0) size 800x600
@@ -19,13 +19,10 @@ layer at (0,0) size 800x600
           RenderBlock (anonymous) at (2,2) size 780x28
             RenderText {#text} at (0,0) size 32x28
               text run at (0,0) width 32: "foo"
-            RenderInline {SPAN} at (0,0) size 0x18
-          RenderBlock (anonymous) at (2,30) size 780x28
-            RenderBlock {DIV} at (0,0) size 780x28 [color=#FF0000]
-              RenderBlock {DIV} at (0,0) size 780x28
-                RenderText {#text} at (0,0) size 31x28
-                  text run at (0,0) width 31: "bar"
+          RenderBlock {DIV} at (2,30) size 780x28 [color=#FF0000]
+            RenderBlock {DIV} at (0,0) size 780x28
+              RenderText {#text} at (0,0) size 31x28
+                text run at (0,0) width 31: "bar"
           RenderBlock (anonymous) at (2,58) size 780x0
-            RenderInline {SPAN} at (0,0) size 0x0
           RenderBlock {DIV} at (2,58) size 780x0 [color=#FF0000]
-caret: position 3 of child 0 {#text} of child 0 {DIV} of child 0 {DIV} of child 1 {SPAN} of child 1 {DIV} of child 1 {DIV} of child 1 {BODY} of child 0 {HTML} of document
+caret: position 3 of child 0 {#text} of child 0 {DIV} of child 1 {DIV} of child 1 {DIV} of child 1 {DIV} of child 1 {BODY} of child 0 {HTML} of document
index 5071bc8..60e6b35 100644 (file)
@@ -56,8 +56,8 @@ layer at (0,0) size 800x600
             RenderInline {SPAN} at (0,0) size 54x28 [color=#000000]
               RenderText {#text} at (25,2) size 34x28
                 text run at (25,2) width 34: "cde"
-              RenderInline {SPAN} at (0,0) size 20x18
-                RenderInline {SPAN} at (0,0) size 20x28 [color=#FF0000]
+              RenderInline {SPAN} at (0,0) size 20x28 [color=#FF0000]
+                RenderInline {SPAN} at (0,0) size 20x28
                   RenderText {#text} at (59,2) size 20x28
                     text run at (59,2) width 20: "fg"
         RenderBlock (anonymous) at (0,32) size 784x0
index c4e8280..5f09a53 100644 (file)
@@ -55,8 +55,8 @@ layer at (0,0) size 800x600
             RenderInline {SPAN} at (0,0) size 70x37 [color=#000000]
               RenderText {#text} at (31,2) size 46x37
                 text run at (31,2) width 46: "cde"
-              RenderInline {SPAN} at (0,0) size 24x18
-                RenderInline {SPAN} at (0,0) size 24x28 [color=#FF0000]
+              RenderInline {SPAN} at (0,0) size 24x37 [color=#FF0000]
+                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
index f59797d..b3b600a 100644 (file)
@@ -6,10 +6,9 @@ layer at (0,0) size 800x600
       RenderBlock {UL} at (16,0) size 752x57 [border: (1px solid #000000)]
         RenderListItem {LI} at (41,1) size 710x55
           RenderListMarker at (-36,0) size 16x55: black square
-          RenderInline {SPAN} at (0,0) size 124x18
-            RenderInline {SPAN} at (0,0) size 124x55
-              RenderText {#text} at (0,0) size 124x55
-                text run at (0,0) width 124: "world "
+          RenderInline {SPAN} at (0,0) size 124x55
+            RenderText {#text} at (0,0) size 124x55
+              text run at (0,0) width 124: "world "
           RenderText {#text} at (124,0) size 95x55
             text run at (124,0) width 95: "hello"
       RenderBlock {P} at (0,73) size 784x72
@@ -21,5 +20,5 @@ layer at (0,0) size 800x600
           text run at (743,36) width 25: "So, "
           text run at (0,54) width 371: "this test drags a bit of text over the list marker and drops it. "
           text run at (371,54) width 386: "It should be pasted into the list item, which is contenteditable."
-selection start: position 0 of child 0 {#text} of child 0 {SPAN} of child 0 {SPAN} of child 0 {LI} of child 1 {UL} of child 0 {BODY} of child 0 {HTML} of document
-selection end:   position 6 of child 0 {#text} of child 0 {SPAN} of child 0 {SPAN} of child 0 {LI} of child 1 {UL} of child 0 {BODY} of child 0 {HTML} of document
+selection start: position 0 of child 0 {#text} of child 0 {SPAN} of child 0 {LI} of child 1 {UL} of child 0 {BODY} of child 0 {HTML} of document
+selection end:   position 6 of child 0 {#text} of child 0 {SPAN} of child 0 {LI} of child 1 {UL} of child 0 {BODY} of child 0 {HTML} of document
index 8def5ff..2780e9e 100644 (file)
 &lt;script src="resources/dump-webarchive.js" language="javascript" type="text/javascript"&gt;&lt;/script&gt;
 &lt;link rel="stylesheet" href="resources/test-style.css" type="text/css"&gt;
 &lt;/head&gt;&lt;body&gt;
-&lt;div&gt;
+&lt;div style="font-family: Arial, Helvetica, sans-serif; color: red; "&gt;
   &lt;img src="resources/apple.gif"&gt;
 &lt;/div&gt;
-&lt;div&gt;
+&lt;div style="font-family: Arial, Helvetica, sans-serif; color: red; "&gt;
   This is not a frameset.  This text should be red sans-serif.
 &lt;/div&gt;
-&lt;div&gt;
+&lt;div style="font-family: Arial, Helvetica, sans-serif; color: red; "&gt;
   &lt;img src="resources/apple.gif"&gt;
 &lt;/div&gt;
 &lt;iframe src="resources/test-frame.html"&gt;&lt;/iframe&gt;
                                <string>&lt;html&gt;&lt;head&gt;
 &lt;link rel="stylesheet" href="test-style.css" type="text/css"&gt;
 &lt;/head&gt;&lt;body&gt;
-&lt;div&gt;
+&lt;div style="font-family: Arial, Helvetica, sans-serif; color: red; "&gt;
   &lt;img src="apple.gif"&gt;
 &lt;/div&gt;
-&lt;div&gt;
+&lt;div style="font-family: Arial, Helvetica, sans-serif; color: red; "&gt;
   This is a subframe.  This text should be red sans-serif.
 &lt;/div&gt;
-&lt;div&gt;
+&lt;div style="font-family: Arial, Helvetica, sans-serif; color: red; "&gt;
   &lt;img src="apple.gif"&gt;
 &lt;/div&gt;
 
index f886ea7..937b24f 100644 (file)
                                <string>&lt;html&gt;&lt;head&gt;
 &lt;link rel="stylesheet" href="test-style.css" type="text/css"&gt;
 &lt;/head&gt;&lt;body&gt;
-&lt;div&gt;
+&lt;div style="font-family: Arial, Helvetica, sans-serif; color: red; "&gt;
   &lt;img src="apple.gif"&gt;
 &lt;/div&gt;
-&lt;div&gt;
+&lt;div style="font-family: Arial, Helvetica, sans-serif; color: red; "&gt;
   This is a subframe.  This text should be red sans-serif.
 &lt;/div&gt;
-&lt;div&gt;
+&lt;div style="font-family: Arial, Helvetica, sans-serif; color: red; "&gt;
   &lt;img src="apple.gif"&gt;
 &lt;/div&gt;
 
index ee1b3de..ee51bd0 100644 (file)
@@ -12,7 +12,7 @@
 &lt;/script&gt;
 &lt;link rel="stylesheet" href="resources/test-style.css" type="text/css"&gt;
 &lt;/head&gt;&lt;body&gt;
-&lt;div&gt;
+&lt;div style="font-family: Arial, Helvetica, sans-serif; color: red; "&gt;
 This text should be red sans-serif.
 &lt;/div&gt;
 
index b727ec8..177114e 100644 (file)
@@ -1,3 +1,25 @@
+2007-03-08  Justin Garcia  <justin.garcia@apple.com>
+
+        Reviewed by harrison
+        
+        <rdar://problem/4903193> 
+        On particular page, Copy is so slow it seems like a hang
+        
+        ~2x speedup copying:
+        http://shakespeare.mit.edu/henryviii/full.html 
+        Also produces less bloated markup.
+
+        * editing/markup.cpp:
+        (WebCore::startMarkup): Don't wrap text nodes in style spans.
+        For Elements, don't inline styles inherited from ancestors.
+        (WebCore::createMarkup): No longer necessary to find 
+        the root's default style and pass it to startMarkup.
+        Add a wrapper span around the markup with the styles
+        that all nodes in the markup inherit (the inheritable 
+        styles from the common ancestor container's computed style).
+        Added a FIXME about unecessary markup for inline ancestors 
+        up to the commonAncestorBlock.
+
 2007-03-08  Darin Adler  <darin@apple.com>
 
         Reviewed by Adele.
index 4c43e61..f01be69 100644 (file)
                0867D690FE84028FC02AAC07 /* Project object */ = {
                        isa = PBXProject;
                        buildConfigurationList = 149C284308902B11008A9EFC /* Build configuration list for PBXProject "WebCore" */;
-                       compatibilityVersion = "Xcode 2.4";
                        hasScannedForEncodings = 1;
                        knownRegions = (
                                English,
                        productRefGroup = 034768DFFF38A50411DB9C8B /* Products */;
                        projectDirPath = "";
                        projectRoot = "";
-                       shouldCheckCompatibility = 1;
                        targets = (
                                93F198A508245E59001E9ABC /* WebCore */,
                                DD041FBE09D9DDBE0010AF2A /* Derived Sources */,
index adaae27..5ac94f5 100644 (file)
@@ -153,7 +153,7 @@ static void removeEnclosingMailBlockquoteStyle(CSSMutableStyleDeclaration* style
     blockquoteStyle->diff(style);
 }
 
-static DeprecatedString startMarkup(const Node *node, const Range *range, EAnnotateForInterchange annotate, CSSMutableStyleDeclaration *defaultStyle)
+static DeprecatedString startMarkup(const Node *node, const Range *range, EAnnotateForInterchange annotate)
 {
     bool documentIsHTML = node->document()->isHTMLDocument();
     switch (node->nodeType()) {
@@ -168,24 +168,6 @@ static DeprecatedString startMarkup(const Node *node, const Range *range, EAnnot
             }
             bool useRenderedText = annotate && !enclosingNodeWithTag(const_cast<Node*>(node), selectTag);
             DeprecatedString markup = useRenderedText ? escapeTextForMarkup(renderedText(node, range), false) : escapeTextForMarkup(stringValueForRange(node, range).deprecatedString(), false);
-            if (defaultStyle) {
-                Node *element = node->parentNode();
-                if (element) {
-                    RefPtr<CSSComputedStyleDeclaration> computedStyle = Position(element, 0).computedStyle();
-                    RefPtr<CSSMutableStyleDeclaration> style = computedStyle->copyInheritableProperties();
-                    // Styles that Mail blockquotes contribute should only be placed on the Mail blockquote, to help
-                    // us differentiate those styles from ones that the user has applied.  This helps us
-                    // get the color of content pasted into blockquotes right.
-                    removeEnclosingMailBlockquoteStyle(style.get(), const_cast<Node*>(node));
-                    
-                    defaultStyle->diff(style.get());
-                    if (style->length() > 0) {
-                        // FIXME: Handle case where style->cssText() has illegal characters in it, like "
-                        DeprecatedString openTag = DeprecatedString("<span class=\"") + AppleStyleSpanClass + "\" style=\"" + style->cssText().deprecatedString() + "\">";
-                        markup = openTag + markup + "</span>";
-                    }
-                }            
-            }
             return annotate ? convertHTMLTextToInterchangeFormat(markup, static_cast<const Text*>(node)) : markup;
         }
         case Node::COMMENT_NODE:
@@ -208,23 +190,10 @@ static DeprecatedString startMarkup(const Node *node, const Range *range, EAnnot
             const Element* el = static_cast<const Element*>(node);
             markup += el->nodeNamePreservingCase().deprecatedString();
             String additionalStyle;
-            if (defaultStyle && el->isHTMLElement() && !isMailBlockquote(node)) {
-                RefPtr<CSSComputedStyleDeclaration> computedStyle = Position(const_cast<Element*>(el), 0).computedStyle();
-                RefPtr<CSSMutableStyleDeclaration> style = computedStyle->copyInheritableProperties();
-                style->merge(styleFromMatchedRulesForElement(const_cast<Element*>(el)).get());
-                
-                // Styles that Mail blockquotes contribute should only be placed on the Mail blockquote, to help
-                // us differentiate those styles from ones that the user has applied.  This helps us
-                // get the color of content pasted into blockquotes right.
-                removeEnclosingMailBlockquoteStyle(style.get(), const_cast<Node*>(node));
-                
-                defaultStyle->diff(style.get());
-                if (style->length() > 0) {
-                    CSSMutableStyleDeclaration *inlineStyleDecl = static_cast<const HTMLElement*>(el)->inlineStyleDecl();
-                    if (inlineStyleDecl)
-                        inlineStyleDecl->diff(style.get());
+            if (el->isHTMLElement()) {
+                RefPtr<CSSMutableStyleDeclaration> style = styleFromMatchedRulesForElement(const_cast<Element*>(el));
+                if (style->length() > 0)
                     additionalStyle = style->cssText();
-                }
             }
             NamedAttrMap *attrs = el->attributes();
             unsigned length = attrs->length();
@@ -310,7 +279,7 @@ static DeprecatedString markup(Node* startNode, bool onlyIncludeChildren, bool i
         if (!onlyIncludeChildren) {
             if (nodes)
                 nodes->append(current);
-            me += startMarkup(current, 0, DoNotAnnotateForInterchange, 0);
+            me += startMarkup(current, 0, DoNotAnnotateForInterchange);
         }
         // print children
         if (Node *n = current->firstChild())
@@ -384,20 +353,6 @@ DeprecatedString createMarkup(const Range *range, Vector<Node*>* nodes, EAnnotat
     Node *pastEnd = range->pastEndNode();
     Node *lastClosed = 0;
     Vector<Node*> ancestorsToClose;
-
-    // Calculate the "default style" for this markup and put those styles
-    // in a top level span instead of inlining them.
-    Node* root = highestEditableRoot(range->startPosition());
-    if (!root) {
-        root = range->startPosition().node();
-        while (root && !root->hasTagName(bodyTag))
-            root = root->parentNode();
-        if (!root)
-            root = doc->documentElement();
-    }
-    Position pos(root, 0);
-    RefPtr<CSSComputedStyleDeclaration> computedStyle = pos.computedStyle();
-    RefPtr<CSSMutableStyleDeclaration> defaultStyle = computedStyle->copyInheritableProperties();
     
     Node* startNode = range->startNode();
     VisiblePosition visibleStart(range->startPosition(), VP_DEFAULT_AFFINITY);
@@ -433,7 +388,7 @@ DeprecatedString createMarkup(const Range *range, Vector<Node*>* nodes, EAnnotat
         
         // Add the node to the markup.
         if (addMarkupForNode) {
-            markups.append(startMarkup(n, range, annotate, defaultStyle.get()));
+            markups.append(startMarkup(n, range, annotate));
             if (nodes)
                 nodes->append(n);
         }
@@ -470,7 +425,7 @@ DeprecatedString createMarkup(const Range *range, Vector<Node*>* nodes, EAnnotat
                             continue;
                         // or b) ancestors that we never encountered during a pre-order traversal starting at startNode:
                         ASSERT(startNode->isDescendantOf(parent));
-                        markups.prepend(startMarkup(parent, range, annotate, defaultStyle.get()));
+                        markups.prepend(startMarkup(parent, range, annotate));
                         markups.append(endMarkup(parent));
                         if (nodes)
                             nodes->append(parent);
@@ -487,7 +442,28 @@ DeprecatedString createMarkup(const Range *range, Vector<Node*>* nodes, EAnnotat
     int rangeStartOffset = range->startOffset(ec);
     ASSERT(ec == 0);
     
+    // Add a wrapper span with the styles that all of the nodes in the markup inherit.
+    if (!commonAncestor->isElementNode())
+        commonAncestor = commonAncestor->parentNode();
+    
+    if (commonAncestor) {
+        RefPtr<CSSComputedStyleDeclaration> computedStyle = new CSSComputedStyleDeclaration(commonAncestor);
+        RefPtr<CSSMutableStyleDeclaration> style = computedStyle->copyInheritableProperties();
+        // Styles that Mail blockquotes contribute should only be placed on the Mail blockquote, to help
+        // us differentiate those styles from ones that the user has applied.  This helps us
+        // get the color of content pasted into blockquotes right.
+        removeEnclosingMailBlockquoteStyle(style.get(), commonAncestor);
+        
+        if (style->length() > 0) {
+            // FIXME: Handle case where style->cssText() has illegal characters in it, like "
+            DeprecatedString openTag = DeprecatedString("<span class=\"") + AppleStyleSpanClass + "\" style=\"" + style->cssText().deprecatedString() + "\">";
+            markups.prepend(openTag);
+            markups.append("</span>");
+        }
+    }
+    
     // Add ancestors up to the common ancestor block so inline ancestors such as FONT and B are part of the markup.
+    // FIXME: This seems unecessary.
     if (lastClosed) {
         for (Node *ancestor = lastClosed->parentNode(); ancestor; ancestor = ancestor->parentNode()) {
             if (Range::compareBoundaryPoints(ancestor, 0, rangeStartNode, rangeStartOffset) >= 0) {
@@ -508,7 +484,7 @@ DeprecatedString createMarkup(const Range *range, Vector<Node*>* nodes, EAnnotat
                 } else
                     break;
             }
-            markups.prepend(startMarkup(ancestor, range, annotate, defaultStyle.get()));
+            markups.prepend(startMarkup(ancestor, range, annotate));
             markups.append(endMarkup(ancestor));
             if (nodes) {
                 nodes->append(ancestor);
@@ -528,13 +504,13 @@ DeprecatedString createMarkup(const Range *range, Vector<Node*>* nodes, EAnnotat
     if (annotate && selectedOneOrMoreParagraphs) {
         for (Node *ancestor = commonAncestorBlock; ancestor; ancestor = ancestor->parentNode()) {
             if (isMailBlockquote(ancestor)) {
-                markups.prepend(startMarkup(ancestor, range, annotate, defaultStyle.get()));
+                markups.prepend(startMarkup(ancestor, range, annotate));
                 markups.append(endMarkup(ancestor));
             }
         }
     }
     
-    root = range->startPosition().node();
+    Node* root = range->startPosition().node();
     while (root && !root->hasTagName(bodyTag))
         root = root->parentNode();
     // Include markup for fully selected blocks (turn the body into a div so that we
@@ -554,9 +530,6 @@ DeprecatedString createMarkup(const Range *range, Vector<Node*>* nodes, EAnnotat
         RefPtr<CSSMutableStyleDeclaration> inheritedComputedProperties = computedStyle->copyInheritableProperties();
         style->merge(inheritedComputedProperties.get());
         
-        // Pull off default styles because those will be added via the top level style span.
-        defaultStyle->diff(style.get());
-        
         // Bring the background attribute over, but not as an attribute because a background attribute on a div
         // appears to have no effect.
         if (!style->getPropertyCSSValue(CSS_PROP_BACKGROUND_IMAGE) && static_cast<Element*>(root)->hasAttribute(backgroundAttr))
@@ -565,12 +538,6 @@ DeprecatedString createMarkup(const Range *range, Vector<Node*>* nodes, EAnnotat
         markups.prepend("<div style='" + style->cssText().deprecatedString() + "'>");
         markups.append("</div>");
     }
-    
-    // add in the "default style" for this markup
-    // FIXME: Handle case where value has illegal characters in it, like "
-    DeprecatedString openTag = DeprecatedString("<span class=\"") + AppleStyleSpanClass + "\" style=\"" + defaultStyle->cssText().deprecatedString() + "\">";
-    markups.prepend(openTag);
-    markups.append("</span>");
 
     doc->frame()->editor()->deleteButtonController()->enable();
     return markups.join("");