Changeset 75018 in webkit


Ignore:
Timestamp:
Jan 4, 2011 3:05:18 PM (13 years ago)
Author:
xji@chromium.org
Message:

2011-01-04 Xiaomei Ji <xji@chromium.org>

Reviewed by Dan Bernstein.

Implement sel.modify('move', 'left'/'right', 'lineBoundary').
https://bugs.webkit.org/show_bug.cgi?id=33435

  • editing/SelectionController.cpp: (WebCore::SelectionController::modifyMovingRight): (WebCore::SelectionController::modifyMovingLeft):
  • editing/visible_units.cpp: (WebCore::logicalStartOfLine): (WebCore::logicalEndOfLine): (WebCore::leftBoundaryOfLine): (WebCore::rightBoundaryOfLine):
  • editing/visible_units.h:

2011-01-04 Xiaomei Ji <xji@chromium.org>

Implement sel.modify('move', 'left'/'right', 'lineBoundary').
https://bugs.webkit.org/show_bug.cgi?id=33435

  • editing/selection/home-end-expected.txt:
  • editing/selection/home-end.html:
Location:
trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r75016 r75018  
     12011-01-04  Xiaomei Ji  <xji@chromium.org>
     2
     3        Implement sel.modify('move', 'left'/'right', 'lineBoundary').
     4        https://bugs.webkit.org/show_bug.cgi?id=33435
     5
     6        * editing/selection/home-end-expected.txt:
     7        * editing/selection/home-end.html:
     8
    192011-01-04  Martin Robinson  <mrobinson@igalia.com>
    210
  • trunk/LayoutTests/editing/selection/home-end-expected.txt

    r72861 r75018  
     1Test Moving forward/backward
    12Test 1, LTR:
    23  Moving forward: "\nabc ABC xyz DEF def\n"[1, 20]
     
    125126  Moving forward: "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[0, 8]
    126127  Moving backward:  "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[8, 0]
     128Test Moving right/left
     129Test 1, LTR:
     130  Moving right: "\nabc ABC xyz DEF def\n"[1, 20]
     131  Moving left:  "\nabc ABC xyz DEF def\n"[20, 1]
     132Test 1, RTL:
     133  Moving left: "\nabc ABC xyz DEF def\n"[1, 20]
     134  Moving right:  "\nabc ABC xyz DEF def\n"[20, 1]
     135Test 2, LTR:
     136  Moving right: "\nABC xyz DEF def GHI\n"[1, 20]
     137  Moving left:  "\nABC xyz DEF def GHI\n"[20, 1]
     138Test 2, RTL:
     139  Moving left: "\nABC xyz DEF def GHI\n"[1, 20]
     140  Moving right:  "\nABC xyz DEF def GHI\n"[20, 1]
     141Test 3, LTR:
     142  Moving right: "\nABC DEF ABC\n"[1, 12]
     143  Moving left:  "\nABC DEF ABC\n"[12, 1]
     144Test 3, RTL:
     145  Moving left: "\nABC DEF ABC\n"[1, 12]
     146  Moving right:  "\nABC DEF ABC\n"[12, 1]
     147Test 4, LTR:
     148  Moving right: "\nabc efd dabeb\n"[1, 14]
     149  Moving left:  "\nabc efd dabeb\n"[14, 1]
     150Test 4, RTL:
     151  Moving left: "\nabc efd dabeb\n"[1, 14]
     152  Moving right:  "\nabc efd dabeb\n"[14, 1]
     153Test 5, LTR:
     154  Moving right: "Lorem "[0], " amet"[5]
     155  Moving left:  " amet"[5], "Lorem "[0]
     156Test 5, RTL:
     157  Moving left: "Lorem "[0], " amet"[5]
     158  Moving right:  " amet"[5], "Lorem "[0]
     159Test 6, LTR:
     160  Moving right: "Lorem "[0], "ipsum dolor"[11]
     161  Moving left:  "ipsum dolor"[11], "Lorem "[0]
     162Test 6, RTL:
     163  Moving left: "Lorem "[0], "ipsum dolor"[11]
     164  Moving right:  "ipsum dolor"[11], "Lorem "[0]
     165Test 7, LTR:
     166  Moving right: "Lorem "[0], " amet"[5]
     167  Moving left:  " amet"[5], "Lorem "[0]
     168Test 7, RTL:
     169  Moving left: "Lorem "[0], " amet"[5]
     170  Moving right:  " amet"[5], "Lorem "[0]
     171Test 8, LTR:
     172  Moving right: "Lorem "[0, 5]
     173  Moving left:  "Lorem "[5, 0]
     174Test 8, RTL:
     175  Moving left: "Lorem "[0, 5]
     176  Moving right:  "Lorem "[5, 0]
     177Test 9, LTR:
     178  Moving right: "Lorem "[0], " amet"[5]
     179  Moving left:  " amet"[5], "Lorem "[0]
     180Test 9, RTL:
     181  Moving left: "Lorem "[0], " amet"[5]
     182  Moving right:  " amet"[5], "Lorem "[0]
     183Test 10, LTR:
     184  Moving right: "Lorem "[0], "ipsum dolor"[11]
     185  Moving left:  "ipsum dolor"[11], "Lorem "[0]
     186Test 10, RTL:
     187  Moving left: "Lorem "[0], "ipsum dolor"[11]
     188  Moving right:  "ipsum dolor"[11], "Lorem "[0]
     189Test 11, LTR:
     190  Moving right: "Lorem "[0], " amet"[5]
     191  Moving left:  " amet"[5], "Lorem "[0]
     192Test 11, RTL:
     193  Moving left: "Lorem "[0], " amet"[5]
     194  Moving right:  " amet"[5], "Lorem "[0]
     195Test 12, LTR:
     196  Moving right: "Lorem "[0, 5]
     197  Moving left:  "Lorem "[5, 0]
     198Test 12, RTL:
     199  Moving left: "Lorem "[0, 5]
     200  Moving right:  "Lorem "[5, 0]
     201Test 13, LTR:
     202  Moving right: "\n Just\n "[2], "\n BFDX\n"[6]
     203  Moving left:  "\n BFDX\n"[6], "\n Just\n "[2]
     204Test 13, RTL:
     205  Moving left: "\n Just\n "[2], "\n BFDX\n"[6]
     206  Moving right:  "\n BFDX\n"[6], "\n Just\n "[2]
     207Test 14, LTR:
     208  Moving right: "\n Just\n "[2], "\n ever\n"[6]
     209  Moving left:  "\n ever\n"[6], "\n Just\n "[2]
     210Test 14, RTL:
     211  Moving left: "\n Just\n "[2], "\n ever\n"[6]
     212  Moving right:  "\n ever\n"[6], "\n Just\n "[2]
     213Test 15, LTR:
     214  Moving right: "car means ABC."[0, 14]
     215  Moving left:  "car means ABC."[14, 0]
     216Test 15, RTL:
     217  Moving left: "car means ABC."[0, 14]
     218  Moving right:  "car means ABC."[14, 0]
     219Test 16, LTR:
     220  Moving right: "᪜car DEF ABC.᪝"[0, 14]
     221  Moving left:  "᪜car DEF ABC.᪝"[14, 0]
     222Test 16, RTL:
     223  Moving left: "᪜car DEF ABC.᪝"[0, 14]
     224  Moving right:  "᪜car DEF ABC.᪝"[14, 0]
     225Test 17, LTR:
     226  Moving right: "he said "᪜car DEF ABC᪝.""[0, 24]
     227  Moving left:  "he said "᪜car DEF ABC᪝.""[24, 0]
     228Test 17, RTL:
     229  Moving left: "he said "᪜car DEF ABC᪝.""[0, 24]
     230  Moving right:  "he said "᪜car DEF ABC᪝.""[24, 0]
     231Test 18, LTR:
     232  Moving right: "GHI JKL MNO '᪛he said "᪜car DEF ABC᪝"᪝'?"[0, 40]
     233  Moving left:  "GHI JKL MNO '᪛he said "᪜car DEF ABC᪝"᪝'?"[40, 0]
     234Test 18, RTL:
     235  Moving left: "GHI JKL MNO '᪛he said "᪜car DEF ABC᪝"᪝'?"[0, 40]
     236  Moving right:  "GHI JKL MNO '᪛he said "᪜car DEF ABC᪝"᪝'?"[40, 0]
     237Test 19, LTR:
     238  Moving right: "ABC abc DEF"[0, 11]
     239  Moving left:  "ABC abc DEF"[11, 0]
     240Test 19, RTL:
     241  Moving left: "ABC abc DEF"[0, 11]
     242  Moving right:  "ABC abc DEF"[11, 0]
     243Test 20, LTR:
     244  Moving right: "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[0, 8]
     245  Moving left:  "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[8, 0]
     246Test 20, RTL:
     247  Moving left: "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[0, 8]
     248  Moving right:  "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[8, 0]
     249Test 21, LTR:
     250  Moving right: "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[0, 8]
     251  Moving left:  "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[8, 0]
     252Test 21, RTL:
     253  Moving left: "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[0, 8]
     254  Moving right:  "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[8, 0]
    127255
  • trunk/LayoutTests/editing/selection/home-end.html

    r43032 r75018  
    7272            var tests = document.getElementsByClassName("test");
    7373            var sel = getSelection();
     74            log("Test Moving forward/backward\n");
    7475            for (var i = 0; i < tests.length; ++i) {
    75                 var positionsMovingRight;
    76                 var positionsMovingLeft;
     76                var positionsMovingForward;
     77                var positionsMovingBackward;
    7778   
    7879                log("Test " + (i + 1) + ", LTR:\n  Moving forward: ");
    7980                sel.setPosition(tests[i], 0);
    80                 positionsMovingRight = positionsMovingInDirection(sel, "forward");
    81                 logPositions(positionsMovingRight);
     81                positionsMovingForward = positionsMovingInDirection(sel, "forward");
     82                logPositions(positionsMovingForward);
    8283                log("\n");
    8384
    8485                log("  Moving backward:  ");
    85                 positionsMovingLeft = positionsMovingInDirection(sel, "backward");
    86                 logPositions(positionsMovingLeft);
     86                positionsMovingBackward = positionsMovingInDirection(sel, "backward");
     87                logPositions(positionsMovingBackward);
    8788                log("\n");
    8889
     
    9192                log("Test " + (i + 1) + ", RTL:\n  Moving forward: ");
    9293                sel.setPosition(tests[i], 0);
    93                 positionsMovingLeft = positionsMovingInDirection(sel, "forward");
     94                positionsMovingForward = positionsMovingInDirection(sel, "forward");
     95                logPositions(positionsMovingForward);
     96                log("\n");
     97
     98                log("  Moving backward:  ");
     99                positionsMovingBackward = positionsMovingInDirection(sel, "backward");
     100                logPositions(positionsMovingBackward);
     101                log("\n");
     102
     103            }
     104            log("Test Moving right/left\n");
     105            for (var i = 0; i < tests.length; ++i) {
     106                var positionsMovingRight;
     107                var positionsMovingLeft;
     108
     109                tests[i].style.direction = "ltr";
     110   
     111                log("Test " + (i + 1) + ", LTR:\n  Moving right: ");
     112                sel.setPosition(tests[i], 0);
     113                positionsMovingRight = positionsMovingInDirection(sel, "right");
     114                logPositions(positionsMovingRight);
     115                log("\n");
     116
     117                log("  Moving left:  ");
     118                positionsMovingLeft = positionsMovingInDirection(sel, "left");
    94119                logPositions(positionsMovingLeft);
    95120                log("\n");
    96121
    97                 log("  Moving backward:  ");
    98                 positionsMovingRight = positionsMovingInDirection(sel, "backward");
     122                tests[i].style.direction = "rtl";
     123
     124                log("Test " + (i + 1) + ", RTL:\n  Moving left: ");
     125                sel.setPosition(tests[i], 0);
     126                positionsMovingLeft = positionsMovingInDirection(sel, "left");
     127                logPositions(positionsMovingLeft);
     128                log("\n");
     129
     130                log("  Moving right:  ");
     131                positionsMovingRight = positionsMovingInDirection(sel, "right");
    99132                logPositions(positionsMovingRight);
    100133                log("\n");
  • trunk/WebCore/ChangeLog

    r75016 r75018  
     12011-01-04  Xiaomei Ji  <xji@chromium.org>
     2
     3        Reviewed by Dan Bernstein.
     4
     5        Implement sel.modify('move', 'left'/'right', 'lineBoundary').
     6        https://bugs.webkit.org/show_bug.cgi?id=33435
     7
     8        * editing/SelectionController.cpp:
     9        (WebCore::SelectionController::modifyMovingRight):
     10        (WebCore::SelectionController::modifyMovingLeft):
     11        * editing/visible_units.cpp:
     12        (WebCore::logicalStartOfLine):
     13        (WebCore::logicalEndOfLine):
     14        (WebCore::leftBoundaryOfLine):
     15        (WebCore::rightBoundaryOfLine):
     16        * editing/visible_units.h:
     17
    1182011-01-04  Martin Robinson  <mrobinson@igalia.com>
    219
  • trunk/WebCore/editing/SelectionController.cpp

    r74593 r75018  
    466466    case ParagraphGranularity:
    467467    case SentenceBoundary:
    468     case LineBoundary:
    469468    case ParagraphBoundary:
    470469    case DocumentBoundary:
    471470        // FIXME: Implement all of the above.
    472471        pos = modifyMovingForward(granularity);
     472        break;
     473    case LineBoundary:
     474        pos = rightBoundaryOfLine(startForPlatform(), directionOfEnclosingBlock());
    473475        break;
    474476    }
     
    617619    case ParagraphGranularity:
    618620    case SentenceBoundary:
    619     case LineBoundary:
    620621    case ParagraphBoundary:
    621622    case DocumentBoundary:
    622623        // FIXME: Implement all of the above.
    623624        pos = modifyMovingBackward(granularity);
     625        break;
     626    case LineBoundary:
     627        pos = leftBoundaryOfLine(startForPlatform(), directionOfEnclosingBlock());
    624628        break;
    625629    }
  • trunk/WebCore/editing/visible_units.cpp

    r72887 r75018  
    11341134VisiblePosition logicalStartOfLine(const VisiblePosition& c)
    11351135{
     1136    // TODO: this is the current behavior that might need to be fixed.
     1137    // Please refer to https://bugs.webkit.org/show_bug.cgi?id=49107 for detail.
    11361138    VisiblePosition visPos = logicalStartPositionForLine(c);
    11371139   
     
    11801182VisiblePosition logicalEndOfLine(const VisiblePosition& c)
    11811183{
     1184    // TODO: this is the current behavior that might need to be fixed.
     1185    // Please refer to https://bugs.webkit.org/show_bug.cgi?id=49107 for detail.
     1186
    11821187    VisiblePosition visPos = logicalEndPositionForLine(c);
    11831188   
     
    11931198}
    11941199
    1195 }
     1200VisiblePosition leftBoundaryOfLine(const VisiblePosition& c, TextDirection direction)
     1201{
     1202    return direction == LTR ? logicalStartOfLine(c) : logicalEndOfLine(c);
     1203}
     1204
     1205VisiblePosition rightBoundaryOfLine(const VisiblePosition& c, TextDirection direction)
     1206{
     1207    return direction == LTR ? logicalEndOfLine(c) : logicalStartOfLine(c);
     1208}
     1209
     1210}
  • trunk/WebCore/editing/visible_units.h

    r74812 r75018  
    6060VisiblePosition logicalStartOfLine(const VisiblePosition &);
    6161VisiblePosition logicalEndOfLine(const VisiblePosition &);
     62VisiblePosition leftBoundaryOfLine(const VisiblePosition&, TextDirection);
     63VisiblePosition rightBoundaryOfLine(const VisiblePosition&, TextDirection);
    6264
    6365// paragraphs (perhaps a misnomer, can be divided by line break elements)
Note: See TracChangeset for help on using the changeset viewer.