Changeset 60936 in webkit


Ignore:
Timestamp:
Jun 9, 2010 10:22:41 PM (14 years ago)
Author:
rolandsteiner@chromium.org
Message:

Bug 35632 - htmlediting.cpp : isEmptyTableCell() is incomplete
https://bugs.webkit.org/show_bug.cgi?id=35632

Reviewed by Ojan Vafai.

WebCore:

Correct isEmptyTableCell to check for the presence of other renderer
children.

Test: editing/deleting/delete-br-in-last-table-cell.html

  • editing/htmlediting.cpp:

(WebCore::isEmptyTableCell):

LayoutTests:

Correct isEmptyTableCell to check for the presence of other renderer
children.

Layout test checks that deleting a <br> within the last table cell works.

  • editing/deleting/delete-br-in-last-table-cell-expected.txt: Added.
  • editing/deleting/delete-br-in-last-table-cell.html: Added.
  • platform/gtk/Skipped:
  • platform/qt/Skipped:
Location:
trunk
Files:
2 added
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r60933 r60936  
     12010-06-09  Roland Steiner  <rolandsteiner@chromium.org>
     2
     3        Reviewed by Ojan Vafai.
     4
     5        Bug 35632 -  htmlediting.cpp : isEmptyTableCell() is incomplete
     6        https://bugs.webkit.org/show_bug.cgi?id=35632
     7
     8        Correct isEmptyTableCell to check for the presence of other renderer
     9        children.
     10       
     11        Layout test checks that deleting a <br> within the last table cell works.
     12
     13        * editing/deleting/delete-br-in-last-table-cell-expected.txt: Added.
     14        * editing/deleting/delete-br-in-last-table-cell.html: Added.
     15        * platform/gtk/Skipped:
     16        * platform/qt/Skipped:
     17
    1182010-06-09  Qi Zhang  <qi.2.zhang@nokia.com>
    219
  • trunk/LayoutTests/platform/gtk/Skipped

    r60840 r60936  
    745745editing/deleting/delete-br-011.html
    746746editing/deleting/delete-br-012.html
     747editing/deleting/delete-br-in-last-table-cell.html
    747748editing/deleting/delete-by-word-002.html
    748749editing/deleting/delete-character-001.html
  • trunk/LayoutTests/platform/qt/Skipped

    r60933 r60936  
    20802080editing/deleting/delete-br-012.html
    20812081editing/deleting/delete-br-013.html
     2082editing/deleting/delete-br-in-last-table-cell.html
    20822083editing/deleting/delete-character-001.html
    20832084editing/deleting/delete-first-list-item.html
  • trunk/WebCore/ChangeLog

    r60933 r60936  
     12010-06-09  Roland Steiner  <rolandsteiner@chromium.org>
     2
     3        Reviewed by Ojan Vafai.
     4
     5        Bug 35632 -  htmlediting.cpp : isEmptyTableCell() is incomplete
     6        https://bugs.webkit.org/show_bug.cgi?id=35632
     7
     8        Correct isEmptyTableCell to check for the presence of other renderer
     9        children.
     10
     11        Test: editing/deleting/delete-br-in-last-table-cell.html
     12
     13        * editing/htmlediting.cpp:
     14        (WebCore::isEmptyTableCell):
     15
    1162010-06-09  Qi Zhang  <qi.2.zhang@nokia.com>
    217
  • trunk/WebCore/editing/htmlediting.cpp

    r60418 r60936  
    870870bool isEmptyTableCell(const Node* node)
    871871{
    872     return node && node->renderer() && (node->renderer()->isTableCell() || (node->renderer()->isBR() && node->parentNode()->renderer() && node->parentNode()->renderer()->isTableCell()));     
     872    // Returns true IFF the passed in node is one of:
     873    //   .) a table cell with no children,
     874    //   .) a table cell with a single BR child, and which has no other child renderers, including :before and :after renderers
     875    //   .) the BR child of such a table cell
     876
     877    // Find rendered node
     878    while (node && !node->renderer())
     879        node = node->parent();
     880    if (!node)
     881        return false;
     882
     883    // Make sure the rendered node is a table cell or <br>.
     884    // If it's a <br>, then the parent node has to be a table cell.
     885    RenderObject* renderer = node->renderer();
     886    if (renderer->isBR()) {
     887        renderer = renderer->parent();
     888        if (!renderer)
     889            return false;
     890    }
     891    if (!renderer->isTableCell())
     892        return false;
     893
     894    // Check that the table cell contains no child renderers except for perhaps a single <br>.
     895    RenderObject* childRenderer = renderer->firstChild();
     896    if (!childRenderer)
     897        return true;
     898    if (!childRenderer->isBR())
     899        return false;
     900    return !childRenderer->nextSibling();
    873901}
    874902
Note: See TracChangeset for help on using the changeset viewer.