Changeset 160978 in webkit


Ignore:
Timestamp:
Dec 22, 2013 10:03:03 AM (10 years ago)
Author:
mihnea@adobe.com
Message:

[CSSRegions] Clean-up selection tests a bit
https://bugs.webkit.org/show_bug.cgi?id=126135

Reviewed by Dirk Schulze.

Move function clearSelection in helper.js. Combine checkResult() from position-for-point* and position-for-point-1*
into a single function, checkSelectionResult() and move it into helper.js too.

  • fast/regions/resources/helper.js:
  • fast/regions/selection/position-for-point-1-vert-lr.html:
  • fast/regions/selection/position-for-point-1-vert-rl.html:
  • fast/regions/selection/position-for-point-1.html:
  • fast/regions/selection/position-for-point-vert-lr.html:
  • fast/regions/selection/position-for-point-vert-rl.html:
  • fast/regions/selection/position-for-point.html:
  • fast/regions/selection/selecting-text-through-different-region-flows.html:
Location:
trunk/LayoutTests
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r160945 r160978  
     12013-12-22  Mihnea Ovidenie  <mihnea@adobe.com>
     2
     3        [CSSRegions] Clean-up selection tests a bit
     4        https://bugs.webkit.org/show_bug.cgi?id=126135
     5
     6        Reviewed by Dirk Schulze.
     7
     8        Move function clearSelection in helper.js. Combine checkResult() from position-for-point* and position-for-point-1*
     9        into a single function, checkSelectionResult() and  move it into helper.js too.
     10
     11        * fast/regions/resources/helper.js:
     12        * fast/regions/selection/position-for-point-1-vert-lr.html:
     13        * fast/regions/selection/position-for-point-1-vert-rl.html:
     14        * fast/regions/selection/position-for-point-1.html:
     15        * fast/regions/selection/position-for-point-vert-lr.html:
     16        * fast/regions/selection/position-for-point-vert-rl.html:
     17        * fast/regions/selection/position-for-point.html:
     18        * fast/regions/selection/selecting-text-through-different-region-flows.html:
     19
    1202013-12-09  Myles C. Maxfield  <mmaxfield@apple.com>
    221
  • trunk/LayoutTests/fast/regions/resources/helper.js

    r159057 r160978  
    268268function onMouseUpLogSelectionAndFocus(contentId, nodeId, offsetId) {
    269269    document.onmouseup = function() {
    270         var selectedContent = document.getElementById(contentId);
    271         var focusNode = document.getElementById(nodeId);
    272         var focusOffset = document.getElementById(offsetId);
    273270        var sel = window.getSelection();
     271
    274272        var node = sel['focusNode'];
    275         var id = " (id: " + node.id + ")";
    276         if (node.nodeType == 3)
    277             id = " (parent id: " + node.parentNode.id + ")";
    278         focusNode.innerHTML = id + " " + sel['focusNode'] + " " + sel['focusNode'].nodeValue;
    279         focusOffset.innerHTML = sel['focusOffset'];
    280         selectedContent.innerHTML = sel.getRangeAt(0);
     273        // nodeType == 3 for textNode
     274        var id = (node.nodeType != 3) ? " (id: " + node.id + ")" : " (parent id: " + node.parentNode.id + ")";
     275
     276        document.getElementById(nodeId).innerHTML = id + " " + node + " " + node.nodeValue;
     277        document.getElementById(offsetId).innerHTML = sel['focusOffset'];
     278        document.getElementById(contentId).innerHTML = sel.getRangeAt(0);
    281279    }
    282280}
     
    288286    }
    289287}
     288
     289function clearSelection() {
     290    mouseClick(0, 0);
     291}
     292
     293function checkSelectionResult(id, expectedSelection, expectedFocusNodeId, expectedFocusOffset) {
     294    var sel = window.getSelection();
     295
     296    // Check actual and expected selection
     297    var actualSelectedContent = sel.getRangeAt(0).toString().replace(/(\r\n|\n|\r)/gm,"").replace(/\s+/gm, "");
     298    var expectedSelectedContent = expectedSelection.replace(/(\r\n|\n|\r)/gm,"").replace(/\s+/gm, "");
     299    var selectionComparison = (actualSelectedContent == expectedSelectedContent);
     300
     301    // Check actual and expected focus node
     302    var focusNodeComparison = true;
     303    var actualFocusNodeId;
     304    if (expectedFocusNodeId != undefined) {
     305        var node = sel['focusNode'];
     306        // nodeType == 3 for textNode
     307        actualFocusNodeId = (node.nodeType != 3) ? node.id : node.parentNode.id;
     308        focusNodeComparison = (actualFocusNodeId == expectedFocusNodeId);
     309    }
     310
     311    // Check actual and expected focus offset
     312    var focusOffsetComparison = true;
     313    var actualFocusOffset;
     314    if (expectedFocusOffset != undefined) {
     315        actualFocusOffset =  sel['focusOffset'];
     316        focusOffsetComparison = (actualFocusOffset == expectedFocusOffset);
     317    }
     318
     319    var result = selectionComparison && focusNodeComparison && focusOffsetComparison;
     320    document.getElementById(id).innerHTML = result ? "PASS" : "FAIL";
     321
     322    if (!result) {
     323        var errorMessage = "";
     324        if (!selectionComparison)
     325            errorMessage += "\nExpected selection: " + expectedSelection + "\nActual selection: " + sel.getRangeAt(0).toString();
     326        if (!focusNodeComparison)
     327            errorMessage += "\nExpected focus node: " + expectedFocusNodeId + "\nActual focus node: " + actualFocusNodeId;
     328        if (!focusOffsetComparison)
     329            errorMessage += "\nExpected focus offset: " + expectedFocusOffset + "\nActual focus offset: " + actualFocusOffset;
     330        console.log(errorMessage);
     331    }
     332}
  • trunk/LayoutTests/fast/regions/selection/position-for-point-1-vert-lr.html

    r159057 r160978  
    2929    </script>
    3030    <script>
    31         function clearSelection() {
    32            mouseClick(0, 0);
    33         }
    34 
    35         function checkResult(id, content) {
    36             var sel = window.getSelection();
    37             var node = sel['focusNode'];
    38             var focusId = node.id;
    39             var selected = sel.getRangeAt(0).toString().replace(/(\r\n|\n|\r)/gm,"").replace(/\s+/gm, "");
    40             var result = (selected == content);
    41             document.getElementById(id).innerHTML = result ? "PASS" : "FAIL";
    42             if (!result) {
    43               console.log("Selection: " + selected + "\n");
    44               console.log("Should be: " + content + "\n");
    45             }
    46         }
    47 
    4831        function selectText() {
    4932            if (window.testRunner) {
     
    6144                var region2Rect = region2.getBoundingClientRect();
    6245
    63                 var region1Data = region1.webkitGetRegionFlowRanges()[0].toString().replace(/(\r\n|\n|\r)/gm,"").replace(/\s+/gm, "");
    64                 var region2Data = region2.webkitGetRegionFlowRanges()[0].toString().replace(/(\r\n|\n|\r)/gm,"").replace(/\s+/gm, "");
     46                var region1Data = region1.webkitGetRegionFlowRanges()[0].toString();
     47                var region2Data = region2.webkitGetRegionFlowRanges()[0].toString();
    6548
    6649                clearSelection();
    6750
    6851                selectContentByRange(region1Rect.left, region1Rect.top, region1Rect.right - 10, region1Rect.bottom);
    69                 checkResult("result1", region1Data);
     52                checkSelectionResult("result1", region1Data);
    7053
    7154                clearSelection();
    7255
    7356                selectContentByRange(region1Rect.left, region1Rect.top, region1Rect.right - 2 , region1Rect.bottom);
    74                 checkResult("result2", region1Data);
     57                checkSelectionResult("result2", region1Data);
    7558
    7659                clearSelection();
    7760
    7861                selectContentByRange(region1Rect.left, region1Rect.top, region1Rect.right, region1Rect.bottom);
    79                 checkResult("result3", region1Data + region2Data);
     62                checkSelectionResult("result3", region1Data + region2Data);
    8063
    8164                clearSelection();
    8265
    8366                selectContentByRange(outsideRect.left, outsideRect.top, outsideRect.right + 20 , outsideRect.bottom);
    84                 checkResult("result4", region2Data);
     67                checkSelectionResult("result4", region2Data);
    8568
    8669                clearSelection();
    8770
    8871                selectContentByRange(region2Rect.left, region2Rect.top, region2Rect.right - 10, region2Rect.bottom);
    89                 checkResult("result5", region2Data);
     72                checkSelectionResult("result5", region2Data);
    9073            }
    9174        }
  • trunk/LayoutTests/fast/regions/selection/position-for-point-1-vert-rl.html

    r159057 r160978  
    2929    </script>
    3030    <script>
    31         function clearSelection() {
    32            mouseClick(0, 0);
    33         }
    34 
    35         function checkResult(id, content) {
    36             var sel = window.getSelection();
    37             var node = sel['focusNode'];
    38             var focusId = node.id;
    39             var selected = sel.getRangeAt(0).toString().replace(/(\r\n|\n|\r)/gm,"").replace(/\s+/gm, "");
    40             var result = (selected == content);
    41             document.getElementById(id).innerHTML = result ? "PASS" : "FAIL";
    42             if (!result) {
    43               console.log("Selection: " + selected + "\n");
    44               console.log("Should be: " + content + "\n");
    45             }
    46         }
    47 
    4831        function selectText() {
    4932            if (window.testRunner) {
     
    6144                var region2Rect = region2.getBoundingClientRect();
    6245
    63                 var region1Data = region1.webkitGetRegionFlowRanges()[0].toString().replace(/(\r\n|\n|\r)/gm,"").replace(/\s+/gm, "");
    64                 var region2Data = region2.webkitGetRegionFlowRanges()[0].toString().replace(/(\r\n|\n|\r)/gm,"").replace(/\s+/gm, "");
     46                var region1Data = region1.webkitGetRegionFlowRanges()[0].toString();
     47                var region2Data = region2.webkitGetRegionFlowRanges()[0].toString();
    6548
    6649                clearSelection();
    6750
    6851                selectContentByRange(region1Rect.right, region1Rect.top, region1Rect.left + 10, region1Rect.bottom);
    69                 checkResult("result1", region1Data);
     52                checkSelectionResult("result1", region1Data);
    7053
    7154                clearSelection();
    7255
    7356                selectContentByRange(region1Rect.right, region1Rect.top, region1Rect.left, region1Rect.bottom);
    74                 checkResult("result2", region1Data);
     57                checkSelectionResult("result2", region1Data);
    7558
    7659                clearSelection();
    7760
    7861                selectContentByRange(region1Rect.right, region1Rect.top, region1Rect.left - 1, region1Rect.bottom);
    79                 checkResult("result3", region1Data + region2Data);
     62                checkSelectionResult("result3", region1Data + region2Data);
    8063
    8164                clearSelection();
    8265
    8366                selectContentByRange(outsideRect.right, outsideRect.top, outsideRect.left - 20 , outsideRect.bottom);
    84                 checkResult("result4", region2Data);
     67                checkSelectionResult("result4", region2Data);
    8568
    8669                clearSelection();
    8770
    8871                selectContentByRange(region2Rect.right, region2Rect.top, region2Rect.left + 10, region2Rect.bottom);
    89                 checkResult("result5", region2Data);
     72                checkSelectionResult("result5", region2Data);
    9073            }
    9174        }
  • trunk/LayoutTests/fast/regions/selection/position-for-point-1.html

    r159057 r160978  
    2727    </script>
    2828    <script>
    29         function clearSelection() {
    30            mouseClick(0, 0);
    31         }
    32 
    33         function checkResult(id, content) {
    34             var sel = window.getSelection();
    35             var node = sel['focusNode'];
    36             var focusId = node.id;
    37             var selected = sel.getRangeAt(0).toString().replace(/(\r\n|\n|\r)/gm,"").replace(/\s+/gm, "");
    38             var result = (selected == content);
    39             document.getElementById(id).innerHTML = result ? "PASS" : "FAIL";
    40             if (!result) {
    41               console.log("Selection: " + selected + "\n");
    42               console.log("Should be: " + content + "\n");
    43             }
    44         }
    45 
    4629        function selectText() {
    4730            if (window.testRunner) {
     
    5942                var region2Rect = region2.getBoundingClientRect();
    6043
    61                 var region1Data = region1.webkitGetRegionFlowRanges()[0].toString().replace(/(\r\n|\n|\r)/gm,"").replace(/\s+/gm, "");
    62                 var region2Data = region2.webkitGetRegionFlowRanges()[0].toString().replace(/(\r\n|\n|\r)/gm,"").replace(/\s+/gm, "");
     44                var region1Data = region1.webkitGetRegionFlowRanges()[0].toString();
     45                var region2Data = region2.webkitGetRegionFlowRanges()[0].toString();
    6346
    6447                clearSelection();
    6548
    6649                selectContentByRange(region1Rect.left, region1Rect.top, region1Rect.right, region1Rect.bottom - 10);
    67                 checkResult("result1", region1Data);
     50                checkSelectionResult("result1", region1Data);
    6851
    6952                clearSelection();
    7053
    7154                selectContentByRange(region1Rect.left, region1Rect.top, region1Rect.right, region1Rect.bottom - 2);
    72                 checkResult("result2", region1Data);
     55                checkSelectionResult("result2", region1Data);
    7356
    7457                clearSelection();
    7558
    7659                selectContentByRange(region1Rect.left, region1Rect.top, region1Rect.right, region1Rect.bottom);
    77                 checkResult("result3", region1Data + region2Data);
     60                checkSelectionResult("result3", region1Data + region2Data);
    7861
    7962                clearSelection();
    8063
    8164                selectContentByRange(outsideRect.left, outsideRect.top, outsideRect.right , outsideRect.bottom + 20);
    82                 checkResult("result4", region2Data);
     65                checkSelectionResult("result4", region2Data);
    8366
    8467                clearSelection();
    8568
    8669                selectContentByRange(region2Rect.left, region2Rect.top, region2Rect.right, region2Rect.bottom - 10);
    87                 checkResult("result5", region2Data);
     70                checkSelectionResult("result5", region2Data);
    8871            }
    8972        }
  • trunk/LayoutTests/fast/regions/selection/position-for-point-vert-lr.html

    r159057 r160978  
    2626    </script>
    2727    <script>
    28         function clearSelection() {
    29            mouseClick(0, 0);
    30         }
    31 
    32         function checkResult(id, nodeId, offset, content) {
    33             var sel = window.getSelection();
    34             var node = sel['focusNode'];
    35             var focusId = node.id;
    36             var selected = sel.getRangeAt(0).toString().replace(/(\r\n|\n|\r)/gm,"").replace(/\s+/gm, " ");;
    37             if (node.nodeType == 3)
    38               focusId =  node.parentNode.id;
    39             var result = (focusId == nodeId) && (sel['focusOffset'] == offset) && (selected == content);
    40             document.getElementById(id).innerHTML = result ? "PASS" : "FAIL";
    41             if (!result)
    42                console.log("Focus: " + focusId + " offset: " + sel['focusOffset'] + " selected: " + selected);
    43         }
    44 
    4528        function selectText() {
    4629            if (window.testRunner) {
     
    6144
    6245                selectContentFromIdToPosVert("word1", region1Rect.right - 10 , region1Rect.bottom);
    63                 checkResult("result1", "word2", "5", "word1 inside region inside region inside region inside region word2");
     46                checkSelectionResult("result1", "word1 inside region inside region inside region inside region word2", "word2", "5");
    6447
    6548                clearSelection();
    6649
    6750                selectContentFromIdToPosVert("word1", region1Rect.right - 2, region1Rect.bottom);
    68                 checkResult("result2", "word2", "5", "word1 inside region inside region inside region inside region word2");
     51                checkSelectionResult("result2", "word1 inside region inside region inside region inside region word2", "word2", "5");
    6952
    7053                clearSelection();
    7154
    7255                selectContentFromIdToPosVert("word1", region1Rect.right, region1Rect.bottom);
    73                 checkResult("result3", "outside", "0", "word1 inside region inside region inside region inside region word2 word5 inside region inside region inside region inside region word6 ");
     56                checkSelectionResult("result3", "word1 inside region inside region inside region inside region word2 word5 inside region inside region inside region inside region word6 ", "outside", "0");
    7457
    7558                clearSelection();
    7659
    7760                selectContentFromIdToPosVert("word3", outsideRect.right + 20 , outsideRect.bottom);
    78                 checkResult("result4", "word5", "0", "word5 inside region inside region inside region inside region word6 ");
     61                checkSelectionResult("result4", "word5 inside region inside region inside region inside region word6 ", "word5", "0");
    7962
    8063                clearSelection();
    8164
    8265                selectContentFromIdToPosVert("word5", region2Rect.right - 10, region2Rect.bottom);
    83                 checkResult("result5", "word6", "5", "word5 inside region inside region inside region inside region word6");
     66                checkSelectionResult("result5", "word5 inside region inside region inside region inside region word6", "word6", "5");
    8467            }
    8568        }
  • trunk/LayoutTests/fast/regions/selection/position-for-point-vert-rl.html

    r159057 r160978  
    2626    </script>
    2727    <script>
    28         function clearSelection() {
    29            mouseClick(0, 0);
    30         }
    31 
    32         function checkResult(id, nodeId, offset, content) {
    33             var sel = window.getSelection();
    34             var node = sel['focusNode'];
    35             var focusId = node.id;
    36             var selected = sel.getRangeAt(0).toString().replace(/(\r\n|\n|\r)/gm,"").replace(/\s+/gm, " ");;
    37             if (node.nodeType == 3)
    38               focusId =  node.parentNode.id;
    39             var result = (focusId == nodeId) && (sel['focusOffset'] == offset) && (selected == content);
    40             document.getElementById(id).innerHTML = result ? "PASS" : "FAIL";
    41             if (!result)
    42                console.log("Focus: " + focusId + " offset: " + sel['focusOffset'] + " selected: " + selected);
    43         }
    44 
    4528        function selectText() {
    4629            if (window.testRunner) {
     
    6144
    6245                selectContentFromIdToPosVert("word1", region1Rect.left + 10, region1Rect.bottom);
    63                 checkResult("result1", "word2", "5", "word1 inside region inside region inside region inside region word2");
     46                checkSelectionResult("result1", "word1 inside region inside region inside region inside region word2", "word2", "5");
    6447
    6548                clearSelection();
    6649
    6750                selectContentFromIdToPosVert("word1", region1Rect.left, region1Rect.bottom);
    68                 checkResult("result2", "word2", "5", "word1 inside region inside region inside region inside region word2");
     51                checkSelectionResult("result2", "word1 inside region inside region inside region inside region word2", "word2", "5");
    6952
    7053                clearSelection();
    7154
    7255                selectContentFromIdToPosVert("word1", region1Rect.left - 1, region1Rect.bottom);
    73                 checkResult("result3", "outside", "0", "word1 inside region inside region inside region inside region word2 word5 inside region inside region inside region inside region word6 ");
     56                checkSelectionResult("result3", "word1 inside region inside region inside region inside region word2 word5 inside region inside region inside region inside region word6 ", "outside", "0");
    7457
    7558                clearSelection();
    7659
    7760                selectContentFromIdToPosVert("word3", outsideRect.left - 20, outsideRect.bottom);
    78                 checkResult("result4", "word5", "0", "word5 inside region inside region inside region inside region word6 ");
     61                checkSelectionResult("result4", "word5 inside region inside region inside region inside region word6 ", "word5", "0");
    7962
    8063                clearSelection();
    8164
    8265                selectContentFromIdToPosVert("word5", region2Rect.left, region2Rect.bottom);
    83                 checkResult("result5", "word6", "5", "word5 inside region inside region inside region inside region word6");
     66                checkSelectionResult("result5", "word5 inside region inside region inside region inside region word6", "word6", "5");
    8467            }
    8568        }
  • trunk/LayoutTests/fast/regions/selection/position-for-point.html

    r159057 r160978  
    2525    </script>
    2626    <script>
    27         function clearSelection() {
    28            mouseClick(0, 0);
    29         }
    30 
    31         function checkResult(id, nodeId, offset, content) {
    32             var sel = window.getSelection();
    33             var node = sel['focusNode'];
    34             var focusId = node.id;
    35             var selected = sel.getRangeAt(0).toString().replace(/(\r\n|\n|\r)/gm,"").replace(/\s+/gm, " ");;
    36             if (node.nodeType == 3)
    37               focusId =  node.parentNode.id;
    38             var result = (focusId == nodeId) && (sel['focusOffset'] == offset) && (selected == content);
    39             document.getElementById(id).innerHTML = result ? "PASS" : "FAIL";
    40             if (!result) {
    41                 console.log("Focus: " + focusId + " offset: " + sel['focusOffset'] + " selected: " + selected + "\n");
    42             }
    43         }
    44 
    4527        function selectText() {
    4628            if (window.testRunner) {
     
    6143
    6244                selectContentFromIdToPos("word1", region1Rect.right, region1Rect.bottom - 10);
    63                 checkResult("result1", "word2", "5", "word1 inside region inside region inside region inside region word2");
     45                checkSelectionResult("result1", "word1 inside region inside region inside region inside region word2", "word2", "5");
    6446
    6547                clearSelection();
    6648
    6749                selectContentFromIdToPos("word1", region1Rect.right, region1Rect.bottom - 2);
    68                 checkResult("result2", "word2", "5", "word1 inside region inside region inside region inside region word2");
     50                checkSelectionResult("result2", "word1 inside region inside region inside region inside region word2", "word2", "5");
    6951
    7052                clearSelection();
    7153
    7254                selectContentFromIdToPos("word1", region1Rect.right, region1Rect.bottom);
    73                 checkResult("result3", "outside", "0", "word1 inside region inside region inside region inside region word2 word5 inside region inside region inside region inside region word6 ");
     55                checkSelectionResult("result3", "word1 inside region inside region inside region inside region word2 word5 inside region inside region inside region inside region word6 ", "outside", "0");
    7456
    7557                clearSelection();
    7658
    7759                selectContentFromIdToPos("word3", outsideRect.right , outsideRect.bottom + 20);
    78                 checkResult("result4", "word5", "0", "word5 inside region inside region inside region inside region word6 ");
     60                checkSelectionResult("result4", "word5 inside region inside region inside region inside region word6 ", "word5", "0");
    7961
    8062                clearSelection();
    8163
    8264                selectContentFromIdToPos("word5", region2Rect.right, region2Rect.bottom - 10);
    83                 checkResult("result5", "word6", "5", "word5 inside region inside region inside region inside region word6");
     65                checkSelectionResult("result5", "word5 inside region inside region inside region inside region word6", "word6", "5");
    8466            }
    8567        }
  • trunk/LayoutTests/fast/regions/selection/selecting-text-through-different-region-flows.html

    r156807 r160978  
    4040    eventSender.mouseDown();
    4141
    42     // We are posotioning the mouse to the center of the footNote (what is a different region flow) and release the button
     42    // We are positioning the mouse to the center of the footNote (what is a different region flow) and release the button
    4343    var end = document.getElementById("footNoteRegion");
    4444    var xEndPosition = end.offsetLeft + end.offsetWidth / 2;
Note: See TracChangeset for help on using the changeset viewer.