Unreviewed, rolling out r207578.
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 25 Oct 2016 19:22:12 +0000 (19:22 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 25 Oct 2016 19:22:12 +0000 (19:22 +0000)
https://bugs.webkit.org/show_bug.cgi?id=163962

Broke quip.com so that user can no longer type a space
(Requested by rniwa on #webkit).

Reverted changeset:

"Add a plain space instead of &nbsp; between text nodes"
https://bugs.webkit.org/show_bug.cgi?id=123163
http://trac.webkit.org/changeset/207578

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

19 files changed:
LayoutTests/ChangeLog
LayoutTests/accessibility/mac/find-and-replace-match-capitalization-expected.txt
LayoutTests/accessibility/mac/find-and-replace-match-capitalization.html
LayoutTests/accessibility/mac/select-text/select-text-135575-expected.txt
LayoutTests/accessibility/mac/select-text/select-text-7-expected.txt
LayoutTests/accessibility/mac/select-text/select-text-8-expected.txt
LayoutTests/accessibility/mac/select-text/select-text-9-expected.txt
LayoutTests/editing/mac/spelling/autocorrection-blockquote-crash-expected.txt
LayoutTests/editing/pasteboard/paste-text-003-expected.txt
LayoutTests/platform/gtk/editing/execCommand/paste-1-expected.txt
LayoutTests/platform/gtk/editing/pasteboard/paste-2-expected.txt
LayoutTests/platform/gtk/editing/pasteboard/unrendered-br-expected.txt
LayoutTests/platform/mac/editing/execCommand/paste-1-expected.txt
LayoutTests/platform/mac/editing/pasteboard/paste-2-expected.txt
LayoutTests/platform/mac/editing/pasteboard/unrendered-br-expected.txt
Source/WebCore/ChangeLog
Source/WebCore/editing/CompositeEditCommand.cpp
Source/WebCore/editing/htmlediting.cpp
Source/WebCore/editing/htmlediting.h

index e377d34..91e85be 100644 (file)
@@ -1,3 +1,17 @@
+2016-10-25  Commit Queue  <commit-queue@webkit.org>
+
+        Unreviewed, rolling out r207578.
+        https://bugs.webkit.org/show_bug.cgi?id=163962
+
+        Broke quip.com so that user can no longer type a space
+        (Requested by rniwa on #webkit).
+
+        Reverted changeset:
+
+        "Add a plain space instead of &nbsp; between text nodes"
+        https://bugs.webkit.org/show_bug.cgi?id=123163
+        http://trac.webkit.org/changeset/207578
+
 2016-10-25  Ryan Haddad  <ryanhaddad@apple.com>
 
         WebCryptoAPI test gardening after r207809.
index bd651d8..3fe6968 100644 (file)
@@ -1,13 +1,13 @@
-The Test test TEST.
+The Test test TEST.
 
 This tests that find and replace will match the capitalization of the replaced word.
 
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS document.getElementById('text').innerHTML is 'The Test&nbsp;jumped high.'
-PASS document.getElementById('text').innerHTML is 'The Test test&nbsp;high.'
-PASS document.getElementById('text').innerHTML is 'The Test test TEST.'
+PASS document.getElementById('text').innerHTML is 'The&nbsp;Test&nbsp;jumped high.'
+PASS document.getElementById('text').innerHTML is 'The&nbsp;Test&nbsp;test&nbsp;high.'
+PASS document.getElementById('text').innerHTML is 'The&nbsp;Test&nbsp;test&nbsp;TEST.'
 PASS successfullyParsed is true
 
 TEST COMPLETE
index 35fcfa8..a18a20b 100644 (file)
       
         // 'Man' is capitalized, so the replaced text should end up capitalized.
         var result = text.selectTextWithCriteria("AXSelectTextAmbiguityResolutionClosestToSelection", "man", "test");
-        shouldBe("document.getElementById('text').innerHTML", "'The Test&nbsp;jumped high.'");
+        shouldBe("document.getElementById('text').innerHTML", "'The&nbsp;Test&nbsp;jumped high.'");
 
         // 'jumped' is not capitalized so the text should not be capitalized.
         result = text.selectTextWithCriteria("AXSelectTextAmbiguityResolutionClosestToSelection", "jumped", "Test");
-        shouldBe("document.getElementById('text').innerHTML", "'The Test test&nbsp;high.'");
+        shouldBe("document.getElementById('text').innerHTML", "'The&nbsp;Test&nbsp;test&nbsp;high.'");
 
         // The replacement text was all caps, so don't change based on the existing text.
         result = text.selectTextWithCriteria("AXSelectTextAmbiguityResolutionClosestToSelection", "high", "TEST");
-        shouldBe("document.getElementById('text').innerHTML", "'The Test test TEST.'");
+        shouldBe("document.getElementById('text').innerHTML", "'The&nbsp;Test&nbsp;test&nbsp;TEST.'");
 
     }
 </script>
index 75560a2..ca8b355 100644 (file)
@@ -1,6 +1,6 @@
 The quick brown fox jumps over the lazy dog.
 
-TEXT2: THE quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
+TEXT2: THE quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
 
 This tests the ability to select and replace text with respect to selection.
 
index 2b13bc1..93acf2b 100644 (file)
@@ -1,4 +1,4 @@
-The slow brown fox jumps over the lazy dog.
+The slow brown fox jumps over the lazy dog.
 
 TEXT2: The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
 
index b0c427c..5db78f9 100644 (file)
@@ -1,4 +1,4 @@
-The quick brown cat jumps over the lazy dog.
+The quick brown cat jumps over the lazy dog.
 
 TEXT2: The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
 
index a197057..fe3ea0b 100644 (file)
@@ -1,4 +1,4 @@
-The quick Brown fox jumps over the lazy dog.
+The quick Brown fox jumps over the lazy dog.
 
 TEXT2: The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
 
index b7ca089..7edcf52 100644 (file)
@@ -106,12 +106,12 @@ EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotificatio
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 This test copies and pastes "is a tide in the affairs of men,\nWhich taken at the flood leads on to fortune.\nOmitted" twice.
 
-There is a tide in the affairs of men,
+There is a tide in the affairs of men,
 Which taken at the flood leads on to fortune.
 Omittedis a tide in the affairs of men,
 Which taken at the flood leads on to fortune.
 Omitted, all the voyage of their life,
 Is bound in shallows and in miseries.
 execCopyCommand: <div id="test" class="editing">There is a tide in the affairs of men, <div class="editing">Which taken at the flood leads on to fortune. <div class="editing">Omitted, all the voyage of their life, <div class="editing">Is bound in shallows and in miseries. </div> </div> </div> </div>
-execPasteCommand: <div id="test" class="editing">There is a tide in the affairs of men,<div class="editing">Which taken at the flood leads on to fortune.</div><div class="editing"><div class="editing">Omitted, all the voyage of their life, <div class="editing">Is bound in shallows and in miseries. </div> </div> </div> </div>
-execPasteCommand: <div id="test" class="editing">There is a tide in the affairs of men,<div class="editing">Which taken at the flood leads on to fortune.</div><div class="editing"><div class="editing">Omittedis a tide in the affairs of men,</div><div class="editing">Which taken at the flood leads on to fortune.</div><div class="editing">Omitted, all the voyage of their life, <div class="editing">Is bound in shallows and in miseries. </div> </div> </div> </div>
+execPasteCommand: <div id="test" class="editing">There&nbsp;is a tide in the affairs of men,<div class="editing">Which taken at the flood leads on to fortune.</div><div class="editing"><div class="editing">Omitted, all the voyage of their life, <div class="editing">Is bound in shallows and in miseries. </div> </div> </div> </div>
+execPasteCommand: <div id="test" class="editing">There&nbsp;is a tide in the affairs of men,<div class="editing">Which taken at the flood leads on to fortune.</div><div class="editing"><div class="editing">Omittedis a tide in the affairs of men,</div><div class="editing">Which taken at the flood leads on to fortune.</div><div class="editing">Omitted, all the voyage of their life, <div class="editing">Is bound in shallows and in miseries. </div> </div> </div> </div>
index d181156..ebd8007 100644 (file)
@@ -10,8 +10,7 @@ EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 7 of #text > BODY > HT
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 EDITING DELEGATE: shouldInsertNode:#document-fragment replacingDOMRange:range from 8 of #text > BODY > HTML > #document to 8 of #text > BODY > HTML > #document givenAction:WebViewInsertActionPasted
-EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 7 of #text > BODY > HTML > #document to 7 of #text > BODY > HTML > #document toDOMRange:range from 11 of #text > BODY > HTML > #document to 11 of #text > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 8 of #text > BODY > HTML > #document to 8 of #text > BODY > HTML > #document toDOMRange:range from 11 of #text > BODY > HTML > #document to 11 of #text > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 layer at (0,0) size 800x600
index 5c7226d..a328cfb 100644 (file)
@@ -10,8 +10,7 @@ EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 7 of #text > BODY > HT
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 EDITING DELEGATE: shouldInsertNode:#document-fragment replacingDOMRange:range from 8 of #text > BODY > HTML > #document to 8 of #text > BODY > HTML > #document givenAction:WebViewInsertActionPasted
-EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 7 of #text > BODY > HTML > #document to 7 of #text > BODY > HTML > #document toDOMRange:range from 11 of #text > BODY > HTML > #document to 11 of #text > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 8 of #text > BODY > HTML > #document to 8 of #text > BODY > HTML > #document toDOMRange:range from 11 of #text > BODY > HTML > #document to 11 of #text > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 layer at (0,0) size 800x600
index 0d67b2b..85ab3ff 100644 (file)
@@ -2,8 +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: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 5 of #text > DIV > BODY > HTML > #document to 5 of #text > DIV > BODY > HTML > #document toDOMRange:range from 17 of #text > DIV > DIV > BODY > HTML > #document to 17 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 6 of #text > DIV > BODY > HTML > #document to 6 of #text > DIV > BODY > HTML > #document toDOMRange:range from 17 of #text > DIV > DIV > BODY > HTML > #document to 17 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
index 699f018..e264dd7 100644 (file)
@@ -10,8 +10,7 @@ EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 7 of #text > BODY > HT
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 EDITING DELEGATE: shouldInsertNode:#document-fragment replacingDOMRange:range from 8 of #text > BODY > HTML > #document to 8 of #text > BODY > HTML > #document givenAction:WebViewInsertActionPasted
-EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 7 of #text > BODY > HTML > #document to 7 of #text > BODY > HTML > #document toDOMRange:range from 11 of #text > BODY > HTML > #document to 11 of #text > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 8 of #text > BODY > HTML > #document to 8 of #text > BODY > HTML > #document toDOMRange:range from 11 of #text > BODY > HTML > #document to 11 of #text > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 layer at (0,0) size 800x600
index 785a778..6fddca7 100644 (file)
@@ -10,8 +10,7 @@ EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 7 of #text > BODY > HT
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 EDITING DELEGATE: shouldInsertNode:#document-fragment replacingDOMRange:range from 8 of #text > BODY > HTML > #document to 8 of #text > BODY > HTML > #document givenAction:WebViewInsertActionPasted
-EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 7 of #text > BODY > HTML > #document to 7 of #text > BODY > HTML > #document toDOMRange:range from 11 of #text > BODY > HTML > #document to 11 of #text > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 8 of #text > BODY > HTML > #document to 8 of #text > BODY > HTML > #document toDOMRange:range from 11 of #text > BODY > HTML > #document to 11 of #text > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
 layer at (0,0) size 800x600
index 4a4b67f..2085e70 100644 (file)
@@ -2,8 +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: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 5 of #text > DIV > BODY > HTML > #document to 5 of #text > DIV > BODY > HTML > #document toDOMRange:range from 17 of #text > DIV > DIV > BODY > HTML > #document to 17 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 6 of #text > DIV > BODY > HTML > #document to 6 of #text > DIV > BODY > HTML > #document toDOMRange:range from 17 of #text > DIV > DIV > BODY > HTML > #document to 17 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
index 3e256f4..ba5b76e 100644 (file)
@@ -1,3 +1,17 @@
+2016-10-25  Commit Queue  <commit-queue@webkit.org>
+
+        Unreviewed, rolling out r207578.
+        https://bugs.webkit.org/show_bug.cgi?id=163962
+
+        Broke quip.com so that user can no longer type a space
+        (Requested by rniwa on #webkit).
+
+        Reverted changeset:
+
+        "Add a plain space instead of &nbsp; between text nodes"
+        https://bugs.webkit.org/show_bug.cgi?id=123163
+        http://trac.webkit.org/changeset/207578
+
 2016-10-25  Chris Dumez  <cdumez@apple.com>
 
         LOG_WITH_STREAM() macro should not have a semi colon at the end
index f8c428f..9c5079a 100644 (file)
@@ -918,15 +918,13 @@ void CompositeEditCommand::rebalanceWhitespaceOnTextSubstring(PassRefPtr<Text> p
 
     VisiblePosition visibleUpstreamPos(Position(textNode, upstream));
     VisiblePosition visibleDownstreamPos(Position(textNode, downstream));
-
-    Node* nextSibling = textNode->nextSibling();
+    
     String string = text.substring(upstream, length);
     String rebalancedString = stringWithRebalancedWhitespace(string,
     // FIXME: Because of the problem mentioned at the top of this function, we must also use nbsps at the start/end of the string because
     // this function doesn't get all surrounding whitespace, just the whitespace in the current text node.
-        isStartOfParagraph(visibleUpstreamPos) || !upstream,
-        (isEndOfParagraph(visibleDownstreamPos) || (unsigned)downstream == text.length())
-        && !(nextSibling && nextSibling->isTextNode() && downcast<Text>(nextSibling)->data().at(0) != ' '));
+                                                             isStartOfParagraph(visibleUpstreamPos) || upstream == 0, 
+                                                             isEndOfParagraph(visibleDownstreamPos) || (unsigned)downstream == text.length());
     
     if (string != rebalancedString)
         replaceTextInNodePreservingMarkers(WTFMove(textNode), upstream, length, rebalancedString);
index cfd60cd..2fbbc53 100644 (file)
@@ -397,7 +397,7 @@ bool isAmbiguousBoundaryCharacter(UChar character)
     return character == '\'' || character == '@' || character == rightSingleQuotationMark || character == hebrewPunctuationGershayim;
 }
 
-String stringWithRebalancedWhitespace(const String& string, bool startIsStartOfParagraph, bool shouldEmitNonBreakingSpaceBeforeEnd)
+String stringWithRebalancedWhitespace(const String& string, bool startIsStartOfParagraph, bool endIsEndOfParagraph)
 {
     StringBuilder rebalancedString;
 
@@ -410,8 +410,7 @@ String stringWithRebalancedWhitespace(const String& string, bool startIsStartOfP
             continue;
         }
         LChar selectedWhitespaceCharacter;
-        // We need to ensure there is no next sibling text node. See https://bugs.webkit.org/show_bug.cgi?id=123163
-        if (previousCharacterWasSpace || (!i && startIsStartOfParagraph) || (i == length - 1 && shouldEmitNonBreakingSpaceBeforeEnd)) {
+        if (previousCharacterWasSpace || (!i && startIsStartOfParagraph) || (i == length - 1 && endIsEndOfParagraph)) {
             selectedWhitespaceCharacter = noBreakSpace;
             previousCharacterWasSpace = false;
         } else {
index 33817cc..d8a23dd 100644 (file)
@@ -192,7 +192,7 @@ bool deprecatedIsCollapsibleWhitespace(UChar);
 
 bool isAmbiguousBoundaryCharacter(UChar);
 
-String stringWithRebalancedWhitespace(const String&, bool startIsStartOfParagraph, bool shouldEmitNonBreakingSpaceBeforeEnd);
+String stringWithRebalancedWhitespace(const String&, bool startIsStartOfParagraph, bool endIsEndOfParagraph);
 const String& nonBreakingSpaceString();
 
 // Miscellaneous functions for caret rendering.