Reviewed by anders
authorjusting <justing@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 21 Sep 2006 21:42:58 +0000 (21:42 +0000)
committerjusting <justing@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 21 Sep 2006 21:42:58 +0000 (21:42 +0000)
        <rdar://problem/4426622>
        Plain text paste slow.  Time spent mostly in WebCore::rebalanceWhitespaceInTextNode(...)

        * editing/htmlediting.cpp:
        (WebCore::rebalanceWhitespaceInTextNode): We no longer need to use a RegExp replace because we
        aren't producing complicated sequences here.  Use multiple UChar -> UChar replaces instead for speed.
        Got rid of uses of DepricatedString.

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

WebCore/ChangeLog
WebCore/editing/htmlediting.cpp

index 055dc1c61ce3c4aa4788f8294aafb362eb703c1f..198f85a8bfcc90dd10bedb998ab39baead8dc484 100644 (file)
@@ -1,3 +1,15 @@
+2006-09-21  Justin Garcia  <justin.garcia@apple.com>
+
+        Reviewed by anders
+        
+        <rdar://problem/4426622>
+        Plain text paste slow.  Time spent mostly in WebCore::rebalanceWhitespaceInTextNode(...)
+
+        * editing/htmlediting.cpp:
+        (WebCore::rebalanceWhitespaceInTextNode): We no longer need to use a RegExp replace because we
+        aren't producing complicated sequences here.  Use multiple UChar -> UChar replaces instead for speed.
+        Got rid of uses of DepricatedString.
+
 2006-09-21  Nikolas Zimmermann  <zimmermann@kde.org>
 
         Reviewed by eseidel.
index 67a083953162f313ad6249e029ed84295606f7fa..dd74731b2d4c9592107bc32301c0e70bf0d310d9 100644 (file)
@@ -347,20 +347,19 @@ int maxDeepOffset(const Node *node)
 
 void rebalanceWhitespaceInTextNode(Node *node, unsigned int start, unsigned int length)
 {
-    static RegularExpression whitespace("[ \t\n]");
-    static DeprecatedString nbsp("\xa0");
-     
     ASSERT(node->isTextNode());
     Text *textNode = static_cast<Text *>(node);
     String text = textNode->data();
     ASSERT(length <= text.length() && start + length <= text.length());
     
-    DeprecatedString substring = text.substring(start, length).deprecatedString();
+    String substring = text.substring(start, length);
 
     // FIXME: We rebalance with all nbsps, for simplicity (we don't need crazy sequences while editing
     // because all editable regions will have -webkit-nbsp-mode: space.  We should produce sequences of 
     // regular spaces and nbsps that are better for interchange when we serialize (10636).
-    substring.replace(whitespace, nbsp);
+    substring.replace(' ', NON_BREAKING_SPACE);
+    substring.replace('\t', NON_BREAKING_SPACE);
+    substring.replace('\n', NON_BREAKING_SPACE);
     
     ExceptionCode ec = 0;
     textNode->deleteData(start, length, ec);