Changeset 220398 in webkit


Ignore:
Timestamp:
Aug 8, 2017 5:22:33 AM (7 years ago)
Author:
jfernandez@igalia.com
Message:

Not possible to remove the 'li' element inside the table cell
https://bugs.webkit.org/show_bug.cgi?id=173148

Reviewed by Ryosuke Niwa.

Source/WebCore:

We need to add a new case for breaking out empty list items when they are
at the start of an editable area. Since list items can be also inside
table cells, we need to consider this kind of elements as well.

Tests: editing/deleting/delete-list-items-in-table-cell-1.html

editing/deleting/delete-list-items-in-table-cell-2.html
editing/deleting/delete-list-items-in-table-cell-3.html
editing/deleting/delete-list-items-in-table-cell-4.html
editing/deleting/delete-list-items-in-table-cell-5.html
editing/deleting/delete-list-items-in-table-cell-6.html
editing/deleting/delete-list-items-in-table-cell-7.html
editing/deleting/delete-list-items-in-table-cell-8.html

  • editing/TypingCommand.cpp:

(WebCore::TypingCommand::deleteKeyPressed):

LayoutTests:

Regression tests for different scenarios of list items removal.

  • editing/deleting/delete-list-items-in-table-cell-1-expected.txt: Added.
  • editing/deleting/delete-list-items-in-table-cell-1.html: Added.
  • editing/deleting/delete-list-items-in-table-cell-2-expected.txt: Added.
  • editing/deleting/delete-list-items-in-table-cell-2.html: Added.
  • editing/deleting/delete-list-items-in-table-cell-3-expected.txt: Added.
  • editing/deleting/delete-list-items-in-table-cell-3.html: Added.
  • editing/deleting/delete-list-items-in-table-cell-4-expected.txt: Added.
  • editing/deleting/delete-list-items-in-table-cell-4.html: Added.
  • editing/deleting/delete-list-items-in-table-cell-5-expected.txt: Added.
  • editing/deleting/delete-list-items-in-table-cell-5.html: Added.
  • editing/deleting/delete-list-items-in-table-cell-6-expected.txt: Added.
  • editing/deleting/delete-list-items-in-table-cell-6.html: Added.
  • editing/deleting/delete-list-items-in-table-cell-7-expected.txt: Added.
  • editing/deleting/delete-list-items-in-table-cell-7.html: Added.
  • editing/deleting/delete-list-items-in-table-cell-8-expected.txt: Added.
  • editing/deleting/delete-list-items-in-table-cell-8.html: Added.
Location:
trunk
Files:
16 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r220393 r220398  
     12017-08-08  Javier Fernandez  <jfernandez@igalia.com>
     2
     3        Not possible to remove the 'li' element inside the table cell
     4        https://bugs.webkit.org/show_bug.cgi?id=173148
     5
     6        Reviewed by Ryosuke Niwa.
     7
     8        Regression tests for different scenarios of list items removal.
     9
     10        * editing/deleting/delete-list-items-in-table-cell-1-expected.txt: Added.
     11        * editing/deleting/delete-list-items-in-table-cell-1.html: Added.
     12        * editing/deleting/delete-list-items-in-table-cell-2-expected.txt: Added.
     13        * editing/deleting/delete-list-items-in-table-cell-2.html: Added.
     14        * editing/deleting/delete-list-items-in-table-cell-3-expected.txt: Added.
     15        * editing/deleting/delete-list-items-in-table-cell-3.html: Added.
     16        * editing/deleting/delete-list-items-in-table-cell-4-expected.txt: Added.
     17        * editing/deleting/delete-list-items-in-table-cell-4.html: Added.
     18        * editing/deleting/delete-list-items-in-table-cell-5-expected.txt: Added.
     19        * editing/deleting/delete-list-items-in-table-cell-5.html: Added.
     20        * editing/deleting/delete-list-items-in-table-cell-6-expected.txt: Added.
     21        * editing/deleting/delete-list-items-in-table-cell-6.html: Added.
     22        * editing/deleting/delete-list-items-in-table-cell-7-expected.txt: Added.
     23        * editing/deleting/delete-list-items-in-table-cell-7.html: Added.
     24        * editing/deleting/delete-list-items-in-table-cell-8-expected.txt: Added.
     25        * editing/deleting/delete-list-items-in-table-cell-8.html: Added.
     26
    1272017-08-08  Wenson Hsieh  <wenson_hsieh@apple.com>
    228
  • trunk/Source/WebCore/ChangeLog

    r220397 r220398  
     12017-08-08  Javier Fernandez  <jfernandez@igalia.com>
     2
     3        Not possible to remove the 'li' element inside the table cell
     4        https://bugs.webkit.org/show_bug.cgi?id=173148
     5
     6        Reviewed by Ryosuke Niwa.
     7
     8        We need to add a new case for breaking out empty list items when they are
     9        at the start of an editable area. Since list items can be also inside
     10        table cells, we need to consider this kind of elements as well.
     11
     12        Tests: editing/deleting/delete-list-items-in-table-cell-1.html
     13               editing/deleting/delete-list-items-in-table-cell-2.html
     14               editing/deleting/delete-list-items-in-table-cell-3.html
     15               editing/deleting/delete-list-items-in-table-cell-4.html
     16               editing/deleting/delete-list-items-in-table-cell-5.html
     17               editing/deleting/delete-list-items-in-table-cell-6.html
     18               editing/deleting/delete-list-items-in-table-cell-7.html
     19               editing/deleting/delete-list-items-in-table-cell-8.html
     20
     21        * editing/TypingCommand.cpp:
     22        (WebCore::TypingCommand::deleteKeyPressed):
     23
    1242017-08-08  Zan Dobersek  <zdobersek@igalia.com>
    225
  • trunk/Source/WebCore/editing/TypingCommand.cpp

    r216351 r220398  
    670670            selection.modify(FrameSelection::AlterationExtend, DirectionBackward, CharacterGranularity);
    671671
    672         if (endingSelection().visibleStart().previous(CannotCrossEditingBoundary).isNull()) {
     672        const VisiblePosition& visibleStart = endingSelection().visibleStart();
     673        const VisiblePosition& previousPosition = visibleStart.previous(CannotCrossEditingBoundary);
     674        Node* enclosingTableCell = enclosingNodeOfType(visibleStart.deepEquivalent(), &isTableCell);
     675        const Node* enclosingTableCellForPreviousPosition = enclosingNodeOfType(previousPosition.deepEquivalent(), &isTableCell);
     676        if (previousPosition.isNull() || enclosingTableCell != enclosingTableCellForPreviousPosition) {
    673677            // When the caret is at the start of the editable area in an empty list item, break out of the list item.
    674678            if (auto deleteListSelection = shouldBreakOutOfEmptyListItem()) {
     
    679683                return;
    680684            }
     685        }
     686        if (previousPosition.isNull()) {
    681687            // When there are no visible positions in the editing root, delete its entire contents.
    682688            // FIXME: Dispatch a `beforeinput` event here and bail if preventDefault() was invoked.
    683             if (endingSelection().visibleStart().next(CannotCrossEditingBoundary).isNull() && makeEditableRootEmpty()) {
     689            if (visibleStart.next(CannotCrossEditingBoundary).isNull() && makeEditableRootEmpty()) {
    684690                typingAddedToOpenCommand(DeleteKey);
    685691                return;
     
    687693        }
    688694
    689         VisiblePosition visibleStart(endingSelection().visibleStart());
    690695        // If we have a caret selection at the beginning of a cell, we have nothing to do.
    691         Node* enclosingTableCell = enclosingNodeOfType(visibleStart.deepEquivalent(), &isTableCell);
    692696        if (enclosingTableCell && visibleStart == firstPositionInNode(enclosingTableCell))
    693697            return;
Note: See TracChangeset for help on using the changeset viewer.