Changeset 108668 in webkit


Ignore:
Timestamp:
Feb 23, 2012 1:17:27 PM (12 years ago)
Author:
rniwa@webkit.org
Message:

REGRESSION(r99076): WebKit pastes the trailing newline into a single-line text field
https://bugs.webkit.org/show_bug.cgi?id=79305

Reviewed by Tony Chang.

Source/WebCore:

The bug was caused by ReplacementFragment::m_hasInterchangeNewlineAtEnd not reset even when
text field's beforeTextInserted event handler removed interchange new lines at the end.
Because the event handler is responsible for trimming new lines, we need to recompute the values
for m_hasInterchangeNewlineAt* after the event dispatch.

Test: editing/input/paste-text-ending-with-interchange-newline.html

  • editing/ReplaceSelectionCommand.cpp:

(WebCore::ReplacementFragment::ReplacementFragment):

LayoutTests:

Add a regression test. Also make Markup.dump() dump the shadow DOM of the specififed node.

  • editing/input/paste-text-ending-with-interchange-newline-expected.txt: Added.
  • editing/input/paste-text-ending-with-interchange-newline.html: Added.
  • resources/dump-as-markup.js:

(Markup._get):
(Markup._getShadowHostIfPossible):

Location:
trunk
Files:
2 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r108655 r108668  
     12012-02-22  Ryosuke Niwa  <rniwa@webkit.org>
     2
     3        REGRESSION(r99076): WebKit pastes the trailing newline into a single-line text field
     4        https://bugs.webkit.org/show_bug.cgi?id=79305
     5
     6        Reviewed by Tony Chang.
     7
     8        Add a regression test. Also make Markup.dump() dump the shadow DOM of the specififed node.
     9
     10        * editing/input/paste-text-ending-with-interchange-newline-expected.txt: Added.
     11        * editing/input/paste-text-ending-with-interchange-newline.html: Added.
     12        * resources/dump-as-markup.js:
     13        (Markup._get):
     14        (Markup._getShadowHostIfPossible):
     15
    1162012-02-23  Csaba Osztrogonác  <ossy@webkit.org>
    217
  • trunk/LayoutTests/resources/dump-as-markup.js

    r107700 r108668  
    127127Markup.get = function(node)
    128128{
     129    var markup = Markup._getShadowHostIfPossible(node, 0);
     130    if (markup)
     131        return markup.substring(1);
     132
    129133    if (!node.firstChild)
    130134        return '| ';
    131135
    132136    // Don't print any markup for the root node.
    133     var markup = '';
    134     for (var i = 0, len = node.childNodes.length; i < len; i++) {
     137    for (var i = 0, len = node.childNodes.length; i < len; i++)
    135138        markup += Markup._get(node.childNodes[i], 0);
    136     }
    137139    return markup.substring(1);
    138140}
     
    229231    }
    230232
    231     if (!Markup._useHTML5libOutputFormat && node.nodeType == Node.ELEMENT_NODE && window.internals) {
    232         var root = window.internals.shadowRoot(node);
    233         if (root)
    234             str += Markup._get(root, depth + 1);
    235     }
     233    str += Markup._getShadowHostIfPossible(node, depth);
    236234   
    237235    var selection = Markup._getSelectionMarker(node, i);
     
    240238
    241239    return str;
     240}
     241
     242Markup._getShadowHostIfPossible = function (node, depth)
     243{
     244    if (!Markup._useHTML5libOutputFormat && node.nodeType == Node.ELEMENT_NODE && window.internals) {
     245        var root = window.internals.shadowRoot(node);
     246        if (root)
     247            return Markup._get(root, depth + 1);
     248    }
     249    return '';
    242250}
    243251
  • trunk/Source/WebCore/ChangeLog

    r108667 r108668  
     12012-02-22  Ryosuke Niwa  <rniwa@webkit.org>
     2
     3        REGRESSION(r99076): WebKit pastes the trailing newline into a single-line text field
     4        https://bugs.webkit.org/show_bug.cgi?id=79305
     5
     6        Reviewed by Tony Chang.
     7
     8        The bug was caused by ReplacementFragment::m_hasInterchangeNewlineAtEnd not reset even when
     9        text field's beforeTextInserted event handler removed interchange new lines at the end.
     10        Because the event handler is responsible for trimming new lines, we need to recompute the values
     11        for m_hasInterchangeNewlineAt* after the event dispatch.
     12
     13        Test: editing/input/paste-text-ending-with-interchange-newline.html
     14
     15        * editing/ReplaceSelectionCommand.cpp:
     16        (WebCore::ReplacementFragment::ReplacementFragment):
     17
    1182012-02-23  Andreas Kling  <awesomekling@apple.com>
    219
  • trunk/Source/WebCore/editing/ReplaceSelectionCommand.cpp

    r108391 r108668  
    294294void ReplacementFragment::removeInterchangeNodes(Node* container)
    295295{
     296    m_hasInterchangeNewlineAtStart = false;
     297    m_hasInterchangeNewlineAtEnd = false;
     298
    296299    // Interchange newlines at the "start" of the incoming fragment must be
    297300    // either the first node in the fragment or the first leaf in the fragment.
Note: See TracChangeset for help on using the changeset viewer.