Changeset 259121 in webkit


Ignore:
Timestamp:
Mar 27, 2020 9:45:46 AM (4 years ago)
Author:
Simon Fraser
Message:

Clean up fast/scrolling/latching tests
https://bugs.webkit.org/show_bug.cgi?id=209629

Reviewed by Zalan Bujtas.

These tests had a bunch of issues:

  • mixture of waitUntilDone/jsTestIsAsync
  • not all used eventSender.monitorWheelEvents
  • script in the body for no reason
  • commented out code, unused variables
  • confusing comments
  • contradictory test content
  • fast/scrolling/latching/iframe_in_iframe-expected.txt:
  • fast/scrolling/latching/iframe_in_iframe.html:
  • fast/scrolling/latching/resources/inner_content.html:
  • fast/scrolling/latching/resources/scroll_nested_iframe_test_inner.html:
  • fast/scrolling/latching/scroll-div-latched-div-expected.txt:
  • fast/scrolling/latching/scroll-div-latched-div.html:
  • fast/scrolling/latching/scroll-div-latched-mainframe-expected.txt:
  • fast/scrolling/latching/scroll-div-latched-mainframe.html:
  • fast/scrolling/latching/scroll-div-no-latching-expected.txt:
  • fast/scrolling/latching/scroll-div-no-latching.html:
  • fast/scrolling/latching/scroll-div-with-nested-nonscrollable-iframe-expected.txt:
  • fast/scrolling/latching/scroll-div-with-nested-nonscrollable-iframe.html:
  • fast/scrolling/latching/scroll-iframe-fragment-expected.txt:
  • fast/scrolling/latching/scroll-iframe-fragment.html:
  • fast/scrolling/latching/scroll-iframe-in-overflow-expected.txt:
  • fast/scrolling/latching/scroll-iframe-in-overflow.html:
  • fast/scrolling/latching/scroll-iframe-latched-iframe-expected.txt:
  • fast/scrolling/latching/scroll-iframe-latched-iframe.html:
  • fast/scrolling/latching/scroll-iframe-latched-mainframe-expected.txt:
  • fast/scrolling/latching/scroll-iframe-latched-mainframe.html:
  • fast/scrolling/latching/scroll-iframe-webkit1-latching-bug-expected.txt:
  • fast/scrolling/latching/scroll-iframe-webkit1-latching-bug.html:
  • fast/scrolling/latching/scroll-latched-nested-div-expected.txt:
  • fast/scrolling/latching/scroll-latched-nested-div.html:
  • fast/scrolling/latching/scroll-nested-iframe-expected.txt:
  • fast/scrolling/latching/scroll-nested-iframe.html:
  • fast/scrolling/latching/scroll-select-bottom-test-expected.txt:
  • fast/scrolling/latching/scroll-select-bottom-test.html:
  • fast/scrolling/latching/scroll-select-latched-mainframe-expected.txt:
  • fast/scrolling/latching/scroll-select-latched-mainframe.html:
  • fast/scrolling/latching/scroll-select-latched-select-expected.txt:
  • fast/scrolling/latching/scroll-select-latched-select.html:
  • platform/mac-wk2/TestExpectations:
Location:
trunk/LayoutTests
Files:
34 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r259120 r259121  
     12020-03-26  Simon Fraser  <simon.fraser@apple.com>
     2
     3        Clean up fast/scrolling/latching tests
     4        https://bugs.webkit.org/show_bug.cgi?id=209629
     5
     6        Reviewed by Zalan Bujtas.
     7       
     8        These tests had a bunch of issues:
     9            - mixture of waitUntilDone/jsTestIsAsync
     10            - not all used eventSender.monitorWheelEvents
     11            - script in the body for no reason
     12            - commented out code, unused variables
     13            - confusing comments
     14            - contradictory test content
     15
     16        * fast/scrolling/latching/iframe_in_iframe-expected.txt:
     17        * fast/scrolling/latching/iframe_in_iframe.html:
     18        * fast/scrolling/latching/resources/inner_content.html:
     19        * fast/scrolling/latching/resources/scroll_nested_iframe_test_inner.html:
     20        * fast/scrolling/latching/scroll-div-latched-div-expected.txt:
     21        * fast/scrolling/latching/scroll-div-latched-div.html:
     22        * fast/scrolling/latching/scroll-div-latched-mainframe-expected.txt:
     23        * fast/scrolling/latching/scroll-div-latched-mainframe.html:
     24        * fast/scrolling/latching/scroll-div-no-latching-expected.txt:
     25        * fast/scrolling/latching/scroll-div-no-latching.html:
     26        * fast/scrolling/latching/scroll-div-with-nested-nonscrollable-iframe-expected.txt:
     27        * fast/scrolling/latching/scroll-div-with-nested-nonscrollable-iframe.html:
     28        * fast/scrolling/latching/scroll-iframe-fragment-expected.txt:
     29        * fast/scrolling/latching/scroll-iframe-fragment.html:
     30        * fast/scrolling/latching/scroll-iframe-in-overflow-expected.txt:
     31        * fast/scrolling/latching/scroll-iframe-in-overflow.html:
     32        * fast/scrolling/latching/scroll-iframe-latched-iframe-expected.txt:
     33        * fast/scrolling/latching/scroll-iframe-latched-iframe.html:
     34        * fast/scrolling/latching/scroll-iframe-latched-mainframe-expected.txt:
     35        * fast/scrolling/latching/scroll-iframe-latched-mainframe.html:
     36        * fast/scrolling/latching/scroll-iframe-webkit1-latching-bug-expected.txt:
     37        * fast/scrolling/latching/scroll-iframe-webkit1-latching-bug.html:
     38        * fast/scrolling/latching/scroll-latched-nested-div-expected.txt:
     39        * fast/scrolling/latching/scroll-latched-nested-div.html:
     40        * fast/scrolling/latching/scroll-nested-iframe-expected.txt:
     41        * fast/scrolling/latching/scroll-nested-iframe.html:
     42        * fast/scrolling/latching/scroll-select-bottom-test-expected.txt:
     43        * fast/scrolling/latching/scroll-select-bottom-test.html:
     44        * fast/scrolling/latching/scroll-select-latched-mainframe-expected.txt:
     45        * fast/scrolling/latching/scroll-select-latched-mainframe.html:
     46        * fast/scrolling/latching/scroll-select-latched-select-expected.txt:
     47        * fast/scrolling/latching/scroll-select-latched-select.html:
     48        * platform/mac-wk2/TestExpectations:
     49
    1502020-03-27  Kate Cheney  <katherine_cheney@apple.com>
    251
  • trunk/LayoutTests/fast/scrolling/latching/iframe_in_iframe-expected.txt

    r188160 r259121  
    66
    77
    8 PASS successfullyParsed is true
    9 
    10 TEST COMPLETE
    118PASS Page did not receive wheel events.
    129PASS iframe did not receive wheel events.
  • trunk/LayoutTests/fast/scrolling/latching/iframe_in_iframe.html

    r227781 r259121  
    11<!DOCTYPE html>
    22<html>
    3     <head>
    4         <title>iFrame in iFrame Test</title>
    5         <style>
    6         * {
    7             box-sizing: border-box;
     3<head>
     4    <style>
     5    * {
     6        box-sizing: border-box;
     7    }
     8
     9    .container {
     10        width:100%;
     11        overflow:auto;
     12        height:auto;
     13    }
     14
     15    .innercontainer {
     16        height:100%;
     17        width:50%;
     18    }
     19    </style>
     20    <script src="../../../resources/js-test-pre.js"></script>
     21    <script>
     22        jsTestIsAsync = true;
     23
     24        var iframeTarget;
     25        var innerIFrameTarget;
     26        var pageScrollPositionBefore;
     27        var iframeScrollPositionBefore;
     28
     29        function checkForScroll()
     30        {
     31            // The iframe should not have scrolled at all.
     32            var pageScrollPositionAfter = document.scrollingElement.scrollTop;
     33            var iframeScrollPositionAfter = window.frames['target'].document.scrollingElement.scrollTop;
     34            var innerIFrameScrollPositionAfter = iframeTarget.contentWindow.frames['target'].document.scrollingElement.scrollTop;
     35
     36            if (pageScrollPositionBefore != pageScrollPositionAfter)
     37                testFailed("Page received wheel events.");
     38            else
     39                testPassed("Page did not receive wheel events.");
     40
     41            if (iframeScrollPositionBefore != iframeScrollPositionAfter)
     42                testFailed("iframe received wheel events.");
     43            else
     44                testPassed("iframe did not receive wheel events.");
     45
     46            if (innerIFrameScrollPositionBefore != innerIFrameScrollPositionAfter)
     47                testPassed("iframe received wheel events.");
     48            else
     49                testFailed("iframe did not receive wheel events.");
     50
     51            finishJSTest();
    852        }
    953
    10         .container {
    11             width:100%;
    12             overflow:auto;
    13             height:auto;
     54        function scrollTest()
     55        {
     56            pageScrollPositionBefore = document.scrollingElement.scrollTop;
     57
     58            iframeTarget = document.getElementById('target');
     59
     60            var iframeScrollingElement = window.frames['target'].document.scrollingElement;
     61            iframeScrollPositionBefore = iframeScrollingElement.scrollTop;
     62
     63            innerIFrameTarget = iframeTarget.contentWindow.frames['target'].document.scrollingElement;
     64            innerIFrameScrollPositionBefore = innerIFrameTarget.scrollTop;
     65
     66            // Scroll the #source until we reach the #target.
     67            var startPosX = Math.round(iframeTarget.offsetLeft) + 20;
     68            var startPosY = Math.round(iframeTarget.offsetTop) + 80;
     69
     70            eventSender.monitorWheelEvents();
     71            eventSender.mouseMoveTo(startPosX, startPosY);
     72            eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none');
     73            eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none');
     74            eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none');
     75            eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none');
     76            eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin');
     77            eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue');
     78            eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end');
     79            eventSender.callAfterScrollingCompletes(checkForScroll);
    1480        }
    1581
    16         .innercontainer {
    17             height:100%;
    18             width:50%;
     82        function setupTopLevel()
     83        {
     84            if (!window.eventSender) {
     85                debug('This test requires eventSender');
     86                finishJSTest();
     87                return;
     88            }
     89
     90            setTimeout(scrollTest, 0);
    1991        }
    20         </style>
    21         <script src="../../../resources/js-test-pre.js"></script>
    22     </head>
    23     <body>
    24 <script>
    25 
    26 var iframeTarget;
    27 var innerIFrameTarget;
    28 var pageScrollPositionBefore;
    29 var iFrameScrollPositionBefore;
    30 var continueCount = 5;
    31 
    32 function checkForScroll()
    33 {
    34     // The IFrame should not have scrolled at all.
    35     var pageScrollPositionAfter = document.scrollingElement.scrollTop;
    36     var iFrameScrollPositionAfter = window.frames['target'].document.scrollingElement.scrollTop;
    37     var innerIFrameScrollPositionAfter = iframeTarget.contentWindow.frames['target'].document.scrollingElement.scrollTop;
    38 
    39     if (pageScrollPositionBefore != pageScrollPositionAfter)
    40         testFailed("Page received wheel events.");
    41     else
    42         testPassed("Page did not receive wheel events.");
    43 
    44     if (iFrameScrollPositionBefore != iFrameScrollPositionAfter)
    45         testFailed("iframe received wheel events.");
    46     else
    47         testPassed("iframe did not receive wheel events.");
    48 
    49     if (innerIFrameScrollPositionBefore != innerIFrameScrollPositionAfter)
    50         testPassed("iframe received wheel events.");
    51     else
    52         testFailed("iframe did not receive wheel events.");
    53 
    54     finishJSTest();
    55     testRunner.notifyDone();
    56 }
    57 
    58 function scrollTest()
    59 {
    60     pageScrollPositionBefore = document.scrollingElement.scrollTop;
    61 
    62     iframeTarget = document.getElementById('target');
    63 
    64     var iFrameScrollingElement = window.frames['target'].document.scrollingElement;
    65     iFrameScrollPositionBefore = iFrameScrollingElement.scrollTop;
    66 
    67     innerIFrameTarget = iframeTarget.contentWindow.frames['target'].document.scrollingElement;
    68     innerIFrameScrollPositionBefore = innerIFrameTarget.scrollTop;
    69 
    70     // Scroll the #source until we reach the #target.
    71     var startPosX = Math.round(iframeTarget.offsetLeft) + 20;
    72     var startPosY = Math.round(iframeTarget.offsetTop) + 80;
    73     eventSender.mouseMoveTo(startPosX, startPosY);
    74     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none');
    75     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none');
    76     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none');
    77     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none');
    78     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin');
    79     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue');
    80     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end');
    81     eventSender.callAfterScrollingCompletes(checkForScroll);
    82 }
    83 
    84 function setupTopLevel()
    85 {
    86     if (window.eventSender) {
    87         testRunner.dumpAsText();
    88         testRunner.waitUntilDone();
    89 
    90         eventSender.monitorWheelEvents();
    91         setTimeout(scrollTest, 0);
    92     }
    93 }
    94 </script>
    95         <div class="container">
    96             <div class="innercontainer">
    97                 <div style="width:100%;">
    98                     <div>Inner Frame:</div>
    99                     <div style="height:92%;">
    100                         <iframe id="target" name="target" src="resources/testContent.html" onload="setupTopLevel();"></iframe>
    101                     </div>
     92    </script>
     93</head>
     94<body>
     95    <div class="container">
     96        <div class="innercontainer">
     97            <div style="width:100%;">
     98                <div>Inner Frame:</div>
     99                <div style="height:92%;">
     100                    <iframe id="target" name="target" src="resources/testContent.html" onload="setupTopLevel();"></iframe>
    102101                </div>
    103102            </div>
    104103        </div>
    105         <div id="console"></div>
    106         <script>
    107         description("Tests that iframe doesn't pass wheel events to main frame when scrolling inside iframe");
    108         </script>
    109         <script src="../../../resources/js-test-post.js"></script>
    110     </body>
     104    </div>
     105    <div id="console"></div>
     106    <script>
     107    description("Tests that iframe doesn't pass wheel events to main frame when scrolling inside iframe");
     108    </script>
     109    <script src="../../../resources/js-test-post.js"></script>
     110</body>
    111111</html>
  • trunk/LayoutTests/fast/scrolling/latching/resources/inner_content.html

    r188160 r259121  
    22<html lang="en-US">
    33    <head>
    4         <title>Inner iFrame Example</title>
     4        <title>Inner iframe Example</title>
    55        <meta charset="utf-8">
    66    </head>
  • trunk/LayoutTests/fast/scrolling/latching/resources/scroll_nested_iframe_test_inner.html

    r188160 r259121  
    11<!DOCTYPE html>
    2 
    32<html>
    43<head>
    54    <style>
    6        
    75        body {
    86            height: 2000px;
  • trunk/LayoutTests/fast/scrolling/latching/scroll-div-latched-div-expected.txt

    r188160 r259121  
    1 Put mouse here and flick downwards
    2 Scrollable Region
    3 
    4 Count   DATA    Rev Count
    5 TOP TOP TOP TOP TOP     TOP TOP TOP TOP TOP     TOP TOP TOP TOP TOP
    6 1       0.1100  40
    7 2       0.1155  39
    8 3       0.2200  38
    9 4       0.2255  37
    10 5       0.3300  36
    11 6       0.3355  35
    12 7       0.4400  34
    13 8       0.4455  33
    14 9       0.5500  32
    15 10      0.5555  31
    16 11      0.6600  30
    17 12      0.6655  29
    18 13      0.7700  28
    19 14      0.7755  27
    20 15      0.8800  26
    21 16      0.8855  25
    22 17      0.9900  24
    23 18      0.9955  23
    24 19      0.9999  22
    25 20      1.0000  21
    26 21      1.0000  20
    27 22      0.9999  19
    28 23      0.9955  18
    29 24      0.9900  17
    30 25      0.8855  16
    31 26      0.8800  15
    32 27      0.7755  14
    33 28      0.7700  13
    34 29      0.6655  12
    35 30      0.6600  11
    36 31      0.5555  10
    37 32      0.5500  9
    38 33      0.4455  8
    39 34      0.4400  7
    40 35      0.3355  6
    41 36      0.3300  5
    42 37      0.2255  4
    43 38      0.2200  3
    44 39      0.1155  2
    45 40      0.1100  1
    46 END END END END END     END END END END END     END END END END END
    471Tests that a scrollable div doesn't pass wheel events to main frame when scrolling at bottom
    482
     
    504
    515
     6PASS Page did not receive wheel events.
    527PASS successfullyParsed is true
    538
    549TEST COMPLETE
    55 PASS Page did not receive wheel events.
     10Put mouse here and flick downwards
     11Scrollable Region
    5612
     13Scrolled contents
  • trunk/LayoutTests/fast/scrolling/latching/scroll-div-latched-div.html

    r235893 r259121  
    77}
    88
    9 .table td, .table th {
    10     padding: 2px;
     9.contents {
     10    height: 1036px;
     11    width: 100%;
     12    background-image: repeating-linear-gradient(silver, white 200px);
    1113}
    12 
    13 .table th {
    14     height: 20px;
    15     text-align: left;
    16     font-weight: strong;
    17 }
    18 
    19 .table tr:nth-child(odd) {
    20     background: #f3f3f3;
    21 }
    22 
    23 .scrollable_select option:nth-child(odd) {
    24     background: #f3f3f3;
    25 }
    26 
    2714</style>
    2815<script src="../../../resources/js-test-pre.js"></script>
    2916<script>
    30 function onLoad() {
    31     setupTopLevel();
    32 }
     17    jsTestIsAsync = true;
     18
     19    var divTarget;
     20    var pageScrollPositionBefore;
     21    var divScrollPositionBefore;
     22
     23    function checkForScroll()
     24    {
     25        // The div should not have scrolled at all.
     26        var pageScrollPositionAfter = document.scrollingElement.scrollTop;
     27        var divScrollPositionAfter = divTarget.scrollTop;
     28
     29        if (pageScrollPositionBefore != pageScrollPositionAfter)
     30            testFailed("Page received wheel events.");
     31        else
     32            testPassed("Page did not receive wheel events.");
     33
     34        finishJSTest();
     35    }
     36
     37    function scrollTest()
     38    {
     39        pageScrollPositionBefore = document.scrollingElement.scrollTop;
     40
     41        divTarget = document.getElementById('target');
     42        divTarget.scrollTop = divTarget.scrollHeight - divTarget.clientHeight - 100;
     43
     44        divScrollPositionBefore = divTarget.scrollTop;
     45
     46        // Scroll the #source until we reach the #target.
     47        var startPosX = Math.round(divTarget.offsetLeft) + 20;
     48        var startPosY = Math.round(divTarget.offsetTop) + 100; // One wheel turn before end.
     49
     50        eventSender.monitorWheelEvents();
     51        eventSender.mouseMoveTo(startPosX, startPosY);
     52        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none');
     53        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none');
     54        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none');
     55        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none');
     56        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin');
     57        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue');
     58        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end');
     59        eventSender.callAfterScrollingCompletes(checkForScroll);
     60    }
     61
     62    function setupTopLevel()
     63    {
     64        description("Tests that a scrollable div doesn't pass wheel events to main frame when scrolling at bottom");
     65        if (window.eventSender) {
     66            setTimeout(scrollTest, 0);
     67            return;
     68        }
     69
     70        var messageLocation = document.getElementById('parent');
     71        var message = document.createElement('div');
     72        message.innerHTML = "<p>To manually run this test, place the mouse pointer "
     73            + "at the top of the page, and then use the mouse wheel or a two-finger swipe to scroll the "
     74            + "down past the div.<p>"
     75            + "<p>You should not see the row of END labels if this test is successful.</p>";
     76        messageLocation.appendChild(message);
     77        finishJSTest();
     78    }
     79
     80    window.addEventListener('load', () => {
     81        setupTopLevel();
     82    }, false);
    3383</script>
    3484</head>
    35 <body onload="onLoad();">
    36 <script>
    37 
    38 var divTarget;
    39 var pageScrollPositionBefore;
    40 var divScrollPositionBefore;
    41 var continueCount = 5;
    42 
    43 function checkForScroll()
    44 {
    45     // The div should not have scrolled at all.
    46     var pageScrollPositionAfter = document.scrollingElement.scrollTop;
    47     var divScrollPositionAfter = divTarget.scrollTop;
    48 
    49     if (pageScrollPositionBefore != pageScrollPositionAfter)
    50         testFailed("Page received wheel events.");
    51     else
    52         testPassed("Page did not receive wheel events.");
    53 
    54     testRunner.notifyDone();
    55 }
    56 
    57 function scrollTest()
    58 {
    59     pageScrollPositionBefore = document.scrollingElement.scrollTop;
    60 
    61     divTarget = document.getElementById('target');
    62     divTarget.scrollTop = divTarget.scrollHeight - divTarget.clientHeight - 100;
    63 
    64     divScrollPositionBefore = divTarget.scrollTop;
    65 
    66     // Scroll the #source until we reach the #target.
    67     var startPosX = Math.round(divTarget.offsetLeft) + 20;
    68     var startPosY = Math.round(divTarget.offsetTop) + 100; // One wheel turn before end.
    69     eventSender.mouseMoveTo(startPosX, startPosY);
    70     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none');
    71     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none');
    72     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none');
    73     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none');
    74     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin');
    75     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue');
    76     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end');
    77     setTimeout(checkForScroll, 100);
    78 }
    79 
    80 function setupTopLevel()
    81 {
    82     if (window.eventSender) {
    83         testRunner.dumpAsText();
    84         testRunner.waitUntilDone();
    85 
    86         setTimeout(scrollTest, 1000);
    87     } else {
    88         var messageLocation = document.getElementById('parent');
    89         var message = document.createElement('div');
    90         message.innerHTML = "<p>This test is better run under DumpRenderTree. To manually test it, place the mouse pointer<br/>"
    91             + "at the top of the page, and then use the mouse wheel or a two-finger swipe to scroll the<br/>"
    92             + "down past the div.<br/><br/>"
    93             + "You should not see the row of END labels if this test is successful.</p>";
    94         messageLocation.appendChild(message);
    95     }
    96 }
    97 
    98 </script>
     85<body>
    9986<div id="parent" style="height: 2000px; width: 2000px;">
    10087    <div id="source" style="height: 100px; width: 500px;">
     
    10390    <div class="scrollable_region">
    10491        <h3>Scrollable Region</h3>
    105         <div id="target" style='overflow-y: auto; overflow-x: hidden; max-height: 350px;'>
    106             <table class="table" style='width: 99%'>
    107                 <tr><th>Count</th><th>DATA</th><th>Rev Count</th></tr>
    108                 <tr><td>TOP TOP TOP TOP TOP</td><td>TOP TOP TOP TOP TOP</td><td>TOP TOP TOP TOP TOP</td></tr>
    109                 <tr><td>1</td><td>0.1100</td><td>40</td></tr>
    110                 <tr><td>2</td><td>0.1155</td><td>39</td></tr>
    111                 <tr><td>3</td><td>0.2200</td><td>38</td></tr>
    112                 <tr><td>4</td><td>0.2255</td><td>37</td></tr>
    113                 <tr><td>5</td><td>0.3300</td><td>36</td></tr>
    114                 <tr><td>6</td><td>0.3355</td><td>35</td></tr>
    115                 <tr><td>7</td><td>0.4400</td><td>34</td></tr>
    116                 <tr><td>8</td><td>0.4455</td><td>33</td></tr>
    117                 <tr><td>9</td><td>0.5500</td><td>32</td></tr>
    118                 <tr><td>10</td><td>0.5555</td><td>31</td></tr>
    119                 <tr><td>11</td><td>0.6600</td><td>30</td></tr>
    120                 <tr><td>12</td><td>0.6655</td><td>29</td></tr>
    121                 <tr><td>13</td><td>0.7700</td><td>28</td></tr>
    122                 <tr><td>14</td><td>0.7755</td><td>27</td></tr>
    123                 <tr><td>15</td><td>0.8800</td><td>26</td></tr>
    124                 <tr><td>16</td><td>0.8855</td><td>25</td></tr>
    125                 <tr><td>17</td><td>0.9900</td><td>24</td></tr>
    126                 <tr><td>18</td><td>0.9955</td><td>23</td></tr>
    127                 <tr><td>19</td><td>0.9999</td><td>22</td></tr>
    128                 <tr><td>20</td><td>1.0000</td><td>21</td></tr>
    129                 <tr><td>21</td><td>1.0000</td><td>20</td></tr>
    130                 <tr><td>22</td><td>0.9999</td><td>19</td></tr>
    131                 <tr><td>23</td><td>0.9955</td><td>18</td></tr>
    132                 <tr><td>24</td><td>0.9900</td><td>17</td></tr>
    133                 <tr><td>25</td><td>0.8855</td><td>16</td></tr>
    134                 <tr><td>26</td><td>0.8800</td><td>15</td></tr>
    135                 <tr><td>27</td><td>0.7755</td><td>14</td></tr>
    136                 <tr><td>28</td><td>0.7700</td><td>13</td></tr>
    137                 <tr><td>29</td><td>0.6655</td><td>12</td></tr>
    138                 <tr><td>30</td><td>0.6600</td><td>11</td></tr>
    139                 <tr><td>31</td><td>0.5555</td><td>10</td></tr>
    140                 <tr><td>32</td><td>0.5500</td><td>9</td></tr>
    141                 <tr><td>33</td><td>0.4455</td><td>8</td></tr>
    142                 <tr><td>34</td><td>0.4400</td><td>7</td></tr>
    143                 <tr><td>35</td><td>0.3355</td><td>6</td></tr>
    144                 <tr><td>36</td><td>0.3300</td><td>5</td></tr>
    145                 <tr><td>37</td><td>0.2255</td><td>4</td></tr>
    146                 <tr><td>38</td><td>0.2200</td><td>3</td></tr>
    147                 <tr><td>39</td><td>0.1155</td><td>2</td></tr>
    148                 <tr><td>40</td><td>0.1100</td><td>1</td></tr>
    149                 <tr><td>END END END END END</td><td>END END END END END</td><td>END END END END END</td></tr>
    150             </table>
     92        <div id="target" style="overflow-y: auto; overflow-x: hidden; max-height: 350px;">
     93            <div class="contents">
     94                Scrolled contents
     95            </div>
    15196        </div>
    15297    </div>
    15398</div>
    154 <div id="console"></div>
    155 <script>
    156 description("Tests that a scrollable div doesn't pass wheel events to main frame when scrolling at bottom");
    157 </script>
    15899<script src="../../../resources/js-test-post.js"></script>
    159100</body>
  • trunk/LayoutTests/fast/scrolling/latching/scroll-div-latched-mainframe-expected.txt

    r188160 r259121  
    22Scrollable Region
    33
    4 Count   DATA    Rev Count
    5 TOP TOP TOP TOP TOP     TOP TOP TOP TOP TOP     TOP TOP TOP TOP TOP
    6 1       0.1100  40
    7 2       0.1155  39
    8 3       0.2200  38
    9 4       0.2255  37
    10 5       0.3300  36
    11 6       0.3355  35
    12 7       0.4400  34
    13 8       0.4455  33
    14 9       0.5500  32
    15 10      0.5555  31
    16 11      0.6600  30
    17 12      0.6655  29
    18 13      0.7700  28
    19 14      0.7755  27
    20 15      0.8800  26
    21 16      0.8855  25
    22 17      0.9900  24
    23 18      0.9955  23
    24 19      0.9999  22
    25 20      1.0000  21
    26 21      1.0000  20
    27 22      0.9999  19
    28 23      0.9955  18
    29 24      0.9900  17
    30 25      0.8855  16
    31 26      0.8800  15
    32 27      0.7755  14
    33 28      0.7700  13
    34 29      0.6655  12
    35 30      0.6600  11
    36 31      0.5555  10
    37 32      0.5500  9
    38 33      0.4455  8
    39 34      0.4400  7
    40 35      0.3355  6
    41 36      0.3300  5
    42 37      0.2255  4
    43 38      0.2200  3
    44 39      0.1155  2
    45 40      0.1100  1
    46 END END END END END     END END END END END     END END END END END
     4Scrolled contents
    475Tests that a scrollable div doesn't consume wheel events when scroll is latched to main frame.
    486
     
    508
    519
     10Mouse moved to (28, 125)
     11PASS Scrollable div did not receive wheel events.
    5212PASS successfullyParsed is true
    5313
    5414TEST COMPLETE
    55 Mouse moved to (28, 125)
    56 PASS Scrollable div did not receive wheel events.
    5715
  • trunk/LayoutTests/fast/scrolling/latching/scroll-div-latched-mainframe.html

    r235893 r259121  
    77}
    88
    9 .table td, .table th {
    10     padding: 2px;
     9.contents {
     10    height: 1036px;
     11    width: 100%;
     12    background-image: repeating-linear-gradient(silver, white 200px);
    1113}
    12 
    13 .table th {
    14     height: 20px;
    15     text-align: left;
    16     font-weight: strong;
    17 }
    18 
    19 .table tr:nth-child(odd) {
    20     background: #f3f3f3;
    21 }
    22 
    23 .scrollable_select option:nth-child(odd) {
    24     background: #f3f3f3;
    25 }
    26 
    2714</style>
    2815<script src="../../../resources/js-test-pre.js"></script>
    2916<script>
    30 function onLoad() {
    31     setupTopLevel();
    32 }
     17    jsTestIsAsync = true;
     18
     19    var divTarget;
     20    var pageScrollPositionBefore;
     21    var divScrollPositionBefore;
     22
     23    function checkForScroll()
     24    {
     25        // The div should not have scrolled at all.
     26        var pageScrollPositionAfter = document.scrollingElement.scrollTop;
     27        var divScrollPositionAfter = divTarget.scrollTop;
     28
     29        if (divScrollPositionBefore != divScrollPositionAfter)
     30            testFailed("Scrollable div consumed wheel events.");
     31        else
     32            testPassed("Scrollable div did not receive wheel events.");
     33
     34        finishJSTest();
     35    }
     36
     37    function scrollTest()
     38    {
     39        pageScrollPositionBefore = document.scrollingElement.scrollTop;
     40
     41        divTarget = document.getElementById('target');
     42
     43        divScrollPositionBefore = divTarget.scrollTop;
     44
     45        // Scroll the #source until we reach the #target.
     46        var startPosX = Math.round(divTarget.offsetLeft) + 20;
     47        var startPosY = Math.round(divTarget.offsetTop) - 42; // Slightly more than one wheel scroll away from the iframe
     48
     49        eventSender.monitorWheelEvents();
     50        eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iframe
     51        debug("Mouse moved to (" + startPosX + ", " + startPosY + ")");
     52        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none');
     53        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none');
     54        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none');
     55        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none');
     56        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin');
     57        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue');
     58        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end');
     59        eventSender.callAfterScrollingCompletes(checkForScroll);
     60    }
     61
     62    function setupTopLevel()
     63    {
     64        description("Tests that a scrollable div doesn't consume wheel events when scroll is latched to main frame.");
     65        if (window.eventSender) {
     66            setTimeout(scrollTest, 0);
     67            return;
     68        }
     69
     70        var messageLocation = document.getElementById('parent');
     71        var message = document.createElement('div');
     72        message.innerHTML = "<p>To manually run this test, place the mouse pointer "
     73            + "at the top of the page, and then use the mouse wheel or a two-finger swipe to scroll the "
     74            + "down past the div.<p>"
     75            + "<p>The scrollable div should not scroll.</p>";
     76        messageLocation.appendChild(message);
     77        finishJSTest();
     78    }
     79
     80    window.addEventListener('load', () => {
     81        setupTopLevel();
     82    }, false);
    3383</script>
    3484</head>
    35 <body onload="onLoad();">
    36 <script>
    37 
    38 var divTarget;
    39 var pageScrollPositionBefore;
    40 var divScrollPositionBefore;
    41 var continueCount = 5;
    42 
    43 function checkForScroll() {
    44 
    45     // The div should not have scrolled at all.
    46     var pageScrollPositionAfter = document.scrollingElement.scrollTop;
    47     var divScrollPositionAfter = divTarget.scrollTop;
    48 
    49     //debug("Page before: " + pageScrollPositionBefore + ", div before: " + divScrollPositionBefore);
    50     //debug("Page after:  " + pageScrollPositionAfter + ", div after: " + divScrollPositionAfter);
    51 
    52     if (divScrollPositionBefore != divScrollPositionAfter)
    53         testFailed("Scrollable div consumed wheel events.");
    54     else
    55         testPassed("Scrollable div did not receive wheel events.");
    56 
    57     testRunner.notifyDone();
    58 }
    59 
    60 function scrollTest() {
    61     // See where our IFrame lives:
    62     pageScrollPositionBefore = document.scrollingElement.scrollTop;
    63 
    64     divTarget = document.getElementById('target');
    65 
    66     divScrollPositionBefore = divTarget.scrollTop;
    67 
    68     // Scroll the #source until we reach the #target.
    69     var startPosX = Math.round(divTarget.offsetLeft) + 20;
    70     var startPosY = Math.round(divTarget.offsetTop) - 42; // Slightly more than one wheel scroll away from the IFrame
    71     eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame
    72     debug("Mouse moved to (" + startPosX + ", " + startPosY + ")");
    73     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none');
    74     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none');
    75     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none');
    76     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none');
    77     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin');
    78     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue');
    79     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end');
    80     setTimeout(checkForScroll, 100);
    81 }
    82 
    83 function setupTopLevel() {
    84 
    85     if (window.eventSender) {
    86         testRunner.waitUntilDone();
    87 
    88         setTimeout(scrollTest, 1000);
    89     } else {
    90         var messageLocation = document.getElementById('parent');
    91         var message = document.createElement('div');
    92         message.innerHTML = "<p>This test is better run under DumpRenderTree. To manually test it, place the mouse pointer<br/>"
    93             + "at the top of the page, and then use the mouse wheel or a two-finger swipe to scroll the<br/>"
    94             + "down past the div.<br/><br/>"
    95             + "You should not see the row of END labels if this test is successful.</p>";
    96         messageLocation.appendChild(message);
    97     }
    98 }
    99 
    100 </script>
     85<body>
    10186<div id="parent" style="height: 2000px; width: 2000px;">
    10287    <div id="source" style="height: 100px; width: 500px;">
     
    10691        <h3>Scrollable Region</h3>
    10792        <div id="target" style='overflow-y: auto; overflow-x: hidden; max-height: 485px;'>
    108             <table class="table" style='width: 99%'>
    109                 <tr><th>Count</th><th>DATA</th><th>Rev Count</th></tr>
    110                 <tr><td>TOP TOP TOP TOP TOP</td><td>TOP TOP TOP TOP TOP</td><td>TOP TOP TOP TOP TOP</td></tr>
    111                 <tr><td>1</td><td>0.1100</td><td>40</td></tr>
    112                 <tr><td>2</td><td>0.1155</td><td>39</td></tr>
    113                 <tr><td>3</td><td>0.2200</td><td>38</td></tr>
    114                 <tr><td>4</td><td>0.2255</td><td>37</td></tr>
    115                 <tr><td>5</td><td>0.3300</td><td>36</td></tr>
    116                 <tr><td>6</td><td>0.3355</td><td>35</td></tr>
    117                 <tr><td>7</td><td>0.4400</td><td>34</td></tr>
    118                 <tr><td>8</td><td>0.4455</td><td>33</td></tr>
    119                 <tr><td>9</td><td>0.5500</td><td>32</td></tr>
    120                 <tr><td>10</td><td>0.5555</td><td>31</td></tr>
    121                 <tr><td>11</td><td>0.6600</td><td>30</td></tr>
    122                 <tr><td>12</td><td>0.6655</td><td>29</td></tr>
    123                 <tr><td>13</td><td>0.7700</td><td>28</td></tr>
    124                 <tr><td>14</td><td>0.7755</td><td>27</td></tr>
    125                 <tr><td>15</td><td>0.8800</td><td>26</td></tr>
    126                 <tr><td>16</td><td>0.8855</td><td>25</td></tr>
    127                 <tr><td>17</td><td>0.9900</td><td>24</td></tr>
    128                 <tr><td>18</td><td>0.9955</td><td>23</td></tr>
    129                 <tr><td>19</td><td>0.9999</td><td>22</td></tr>
    130                 <tr><td>20</td><td>1.0000</td><td>21</td></tr>
    131                 <tr><td>21</td><td>1.0000</td><td>20</td></tr>
    132                 <tr><td>22</td><td>0.9999</td><td>19</td></tr>
    133                 <tr><td>23</td><td>0.9955</td><td>18</td></tr>
    134                 <tr><td>24</td><td>0.9900</td><td>17</td></tr>
    135                 <tr><td>25</td><td>0.8855</td><td>16</td></tr>
    136                 <tr><td>26</td><td>0.8800</td><td>15</td></tr>
    137                 <tr><td>27</td><td>0.7755</td><td>14</td></tr>
    138                 <tr><td>28</td><td>0.7700</td><td>13</td></tr>
    139                 <tr><td>29</td><td>0.6655</td><td>12</td></tr>
    140                 <tr><td>30</td><td>0.6600</td><td>11</td></tr>
    141                 <tr><td>31</td><td>0.5555</td><td>10</td></tr>
    142                 <tr><td>32</td><td>0.5500</td><td>9</td></tr>
    143                 <tr><td>33</td><td>0.4455</td><td>8</td></tr>
    144                 <tr><td>34</td><td>0.4400</td><td>7</td></tr>
    145                 <tr><td>35</td><td>0.3355</td><td>6</td></tr>
    146                 <tr><td>36</td><td>0.3300</td><td>5</td></tr>
    147                 <tr><td>37</td><td>0.2255</td><td>4</td></tr>
    148                 <tr><td>38</td><td>0.2200</td><td>3</td></tr>
    149                 <tr><td>39</td><td>0.1155</td><td>2</td></tr>
    150                 <tr><td>40</td><td>0.1100</td><td>1</td></tr>
    151                 <tr><td>END END END END END</td><td>END END END END END</td><td>END END END END END</td></tr>
    152             </table>
     93            <div class="contents">
     94                Scrolled contents
     95            </div>
    15396        </div>
    15497    </div>
    15598</div>
    15699<div id="console"></div>
    157 <script>
    158 description("Tests that a scrollable div doesn't consume wheel events when scroll is latched to main frame.");
    159 </script>
    160100<script src="../../../resources/js-test-post.js"></script>
    161101</body>
  • trunk/LayoutTests/fast/scrolling/latching/scroll-div-no-latching-expected.txt

    r188160 r259121  
    55
    66
     7PASS Page received wheel events.
    78PASS successfullyParsed is true
    89
    910TEST COMPLETE
    10 PASS Page received wheel events.
    1111
  • trunk/LayoutTests/fast/scrolling/latching/scroll-div-no-latching.html

    r227781 r259121  
    2323<script src="../../../resources/js-test-pre.js"></script>
    2424<script>
    25 function onLoad() {
    26     setupTopLevel();
    27 }
    28 </script>
    29 </head>
    30 <body onload="onLoad();">
    31 <script>
     25    jsTestIsAsync = true;
    3226
    33 var divTarget;
    34 var pageScrollPositionBefore;
    35 var divScrollPositionBefore;
    36 var continueCount = 5;
     27    var divTarget;
     28    var pageScrollPositionBefore;
     29    var divScrollPositionBefore;
    3730
    38 function checkForScroll() {
    39     var pageScrollPositionAfter = document.scrollingElement.scrollTop;
    40     var divScrollPositionAfter = divTarget.scrollLeft;
     31    function checkForScroll()
     32    {
     33        var pageScrollPositionAfter = document.scrollingElement.scrollTop;
     34        var divScrollPositionAfter = divTarget.scrollLeft;
    4135
    42     //debug("Page before: " + pageScrollPositionBefore + ", div before: " + divScrollPositionBefore);
    43     //debug("Page after:  " + pageScrollPositionAfter + ", div after: " + divScrollPositionAfter);
     36        if (pageScrollPositionBefore != pageScrollPositionAfter)
     37            testPassed("Page received wheel events.");
     38        else
     39            testFailed("Page did not receive wheel events.");
    4440
    45     if (pageScrollPositionBefore != pageScrollPositionAfter)
    46         testPassed("Page received wheel events.");
    47     else
    48         testFailed("Page did not receive wheel events.");
     41        finishJSTest();
     42    }
    4943
    50     testRunner.notifyDone();
    51 }
     44    function scrollTest()
     45    {
     46        pageScrollPositionBefore = document.scrollingElement.scrollTop;
    5247
    53 function scrollTest() {
    54     // See where our IFrame lives:
    55     pageScrollPositionBefore = document.scrollingElement.scrollTop;
     48        divTarget = document.getElementById('parent');
    5649
    57     divTarget = document.getElementById('parent');
     50        divScrollPositionBefore = divTarget.scrollLeft;
    5851
    59     divScrollPositionBefore = divTarget.scrollLeft;
     52        var startPosX = divTarget.offsetLeft + 20;
     53        var startPosY = divTarget.offsetTop + (divTarget.clientHeight / 2); // One wheel turn before end.
     54        eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame
    6055
    61     var startPosX = divTarget.offsetLeft + 20;
    62     //debug("div display height = " + divTarget.clientHeight);
    63     var startPosY = divTarget.offsetTop + (divTarget.clientHeight / 2); // One wheel turn before end.
    64     eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame
    65     //debug("Mouse moved to (" + startPosX + ", " + startPosY + ")");
     56        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'none');
     57        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 1, 'none', 'none');
     58        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'none');
     59        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 1, 'none', 'none');
    6660
    67     //debug("Page before: " + pageScrollPositionBefore + ", div before: " + divScrollPositionBefore);
    68     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'none');
    69     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 1, 'none', 'none');
    70     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'none');
    71     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 1, 'none', 'none');
     61        eventSender.mouseScrollByWithWheelAndMomentumPhases(-1, 0, 'none', 'none');
     62        eventSender.mouseScrollByWithWheelAndMomentumPhases(-1, 0, 'none', 'none');
     63        eventSender.mouseScrollByWithWheelAndMomentumPhases(-1, 0, 'none', 'none');
     64        eventSender.mouseScrollByWithWheelAndMomentumPhases(-1, 0, 'none', 'none');
    7265
    73     eventSender.mouseScrollByWithWheelAndMomentumPhases(-1, 0, 'none', 'none');
    74     eventSender.mouseScrollByWithWheelAndMomentumPhases(-1, 0, 'none', 'none');
    75     eventSender.mouseScrollByWithWheelAndMomentumPhases(-1, 0, 'none', 'none');
    76     eventSender.mouseScrollByWithWheelAndMomentumPhases(-1, 0, 'none', 'none');
     66        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'none');
     67        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'none');
     68        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'none');
    7769
    78     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'none');
    79     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'none');
    80     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'none');
     70        setTimeout(checkForScroll, 100);
     71    }
    8172
    82     setTimeout(checkForScroll, 100);
    83 }
     73    function setupTopLevel()
     74    {
     75        description("Tests that scroll events of type 'none' work properly.");
     76        if (window.eventSender) {
     77            setTimeout(scrollTest, 0);
     78            return;
     79        }
    8480
    85 function setupTopLevel() {
    86 
    87     if (window.eventSender) {
    88         testRunner.waitUntilDone();
    89 
    90         setTimeout(scrollTest, 1000);
    91     } else {
    9281        var messageLocation = document.getElementById('parent');
    9382        var message = document.createElement('div');
     
    9786            + "The final set of vertical moves should modify the parent page scroll position.</p>";
    9887        messageLocation.appendChild(message);
     88        finishJSTest();
    9989    }
    100 }
    10190
     91    window.addEventListener('load', () => {
     92        setupTopLevel();
     93    }, false);
    10294</script>
     95</head>
     96<body>
    10397    <div id="parent" class="post">
    10498        <div id="target" class="content">
     
    108102</div>
    109103<div id="console"></div>
    110 <script>
    111 description("Tests that scroll events of type 'none' work properly.");
    112 </script>
    113104<script src="../../../resources/js-test-post.js"></script>
    114105</body>
  • trunk/LayoutTests/fast/scrolling/latching/scroll-div-with-nested-nonscrollable-iframe-expected.txt

    r188160 r259121  
    66
    77
    8 PASS successfullyParsed is true
    9 
    10 TEST COMPLETE
    118PASS div did scroll.
    129PASS Page did NOT scroll.
  • trunk/LayoutTests/fast/scrolling/latching/scroll-div-with-nested-nonscrollable-iframe.html

    r235893 r259121  
    22<html>
    33<head>
    4 <link rel="help" href="http://www.w3.org/TR/DOM-Level-3-Events/#events-WheelEvent">
    54<script src="../../../resources/js-test-pre.js"></script>
     5<script>
     6    jsTestIsAsync = true;
     7
     8    var divTarget;
     9    var pageScrollPositionBefore;
     10    var divScrollPositionBefore;
     11
     12    function locationInWindowCoordinates(element)
     13    {
     14        var position = {};
     15        position.x = element.offsetLeft;
     16        position.y = element.offsetTop;
     17
     18        while (element.offsetParent) {
     19            position.x = position.x + element.offsetParent.offsetLeft;
     20            position.y = position.y + element.offsetParent.offsetTop;
     21            if (element == document.getElementsByTagName("body")[0])
     22                break;
     23
     24            element = element.offsetParent;
     25        }
     26
     27        return position;
     28    }
     29
     30    function checkForScroll()
     31    {
     32        var pageScrollPositionAfter = document.scrollingElement.scrollTop;
     33        var divScrollPositionAfter = divTarget.scrollTop;
     34
     35        if (divScrollPositionBefore != divScrollPositionAfter)
     36            testPassed("div did scroll.");
     37        else
     38            testFailed("div did NOT scroll.");
     39
     40        if (pageScrollPositionBefore == pageScrollPositionAfter)
     41            testPassed("Page did NOT scroll.");
     42        else
     43            testFailed("Page DID scroll.");
     44
     45        finishJSTest();
     46    }
     47
     48    function scrollTest()
     49    {
     50        pageScrollPositionBefore = document.scrollingElement.scrollTop;
     51
     52        divTarget = document.getElementById('scrollable_div');
     53
     54        var windowPosition = locationInWindowCoordinates(divTarget);
     55
     56        var startPosX = windowPosition.x + 0.5 * divTarget.clientWidth;
     57        var startPosY = windowPosition.y + 0.5 * divTarget.clientHeight;
     58
     59        divScrollPositionBefore = divTarget.scrollTop;
     60
     61        eventSender.monitorWheelEvents();
     62        eventSender.mouseMoveTo(startPosX, startPosY);
     63        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none');
     64        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none');
     65        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none');
     66        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none');
     67        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin');
     68        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue');
     69        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end');
     70        eventSender.callAfterScrollingCompletes(checkForScroll);
     71    }
     72
     73    function setupTopLevel()
     74    {
     75        description("Tests that iframe does scroll when inner iframe is NOT scrollable.");
     76        if (window.eventSender) {
     77            setTimeout(scrollTest, 0);
     78            return;
     79        }
     80       
     81        var messageLocation = document.getElementById('parent');
     82        var message = document.createElement('div');
     83        message.innerHTML = "<p>To manually run this test, place the mouse pointer "
     84            + "inside the iframe, then use the mouse wheel or a two-finger swipe to scroll the iframe to the bottom (and beyond).</p>"
     85            + "<p>The test passes if you scroll to the bottom of the iframe but the main page does not scroll.</p>";
     86        messageLocation.appendChild(message);
     87        finishJSTest();
     88    }
     89</script>
    690</head>
    791<body>
    8 <script>
    9 
    10 var divTarget;
    11 var pageScrollPositionBefore;
    12 var divScrollPositionBefore;
    13 
    14 function locationInWindowCoordinates(element)
    15 {
    16     var position = {};
    17     position.x = element.offsetLeft;
    18     position.y = element.offsetTop;
    19 
    20     while (element.offsetParent) {
    21         position.x = position.x + element.offsetParent.offsetLeft;
    22         position.y = position.y + element.offsetParent.offsetTop;
    23         if (element == document.getElementsByTagName("body")[0])
    24             break;
    25 
    26         element = element.offsetParent;
    27     }
    28 
    29     return position;
    30 }
    31 
    32 function finishTest()
    33 {
    34     finishJSTest();
    35     testRunner.notifyDone();           
    36 }
    37 
    38 function checkForScroll()
    39 {
    40     var pageScrollPositionAfter = document.scrollingElement.scrollTop;
    41     var divScrollPositionAfter = divTarget.scrollTop;
    42 
    43     if (divScrollPositionBefore != divScrollPositionAfter)
    44         testPassed("div did scroll.");
    45     else
    46         testFailed("div did NOT scroll.");
    47 
    48     if (pageScrollPositionBefore == pageScrollPositionAfter)
    49         testPassed("Page did NOT scroll.");
    50     else
    51         testFailed("Page DID scroll.");
    52 
    53     finishTest();
    54 }
    55 
    56 function scrollTest()
    57 {
    58     pageScrollPositionBefore = document.scrollingElement.scrollTop;
    59 
    60     divTarget = document.getElementById('scrollable_div');
    61 
    62     var windowPosition = locationInWindowCoordinates(divTarget);
    63 
    64     var startPosX = windowPosition.x + 0.5 * divTarget.clientWidth;
    65     var startPosY = windowPosition.y + 0.5 * divTarget.clientHeight;
    66 
    67     divScrollPositionBefore = divTarget.scrollTop;
    68 
    69     eventSender.mouseMoveTo(startPosX, startPosY);
    70     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none');
    71     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none');
    72     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none');
    73     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none');
    74     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin');
    75     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue');
    76     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end');
    77     eventSender.callAfterScrollingCompletes(checkForScroll);
    78 }
    79 
    80 function setupTopLevel()
    81 {
    82     if (window.eventSender) {
    83         jsTestIsAsync = true;
    84         testRunner.waitUntilDone();
    85 
    86         eventSender.monitorWheelEvents();
    87         setTimeout(scrollTest, 0);
    88     } else {
    89         var messageLocation = document.getElementById('parent');
    90         var message = document.createElement('div');
    91         message.innerHTML = "<p>This test is better run under DumpRenderTree. To manually test it, place the mouse pointer<br/>"
    92             + "inside the IFrame, then use the mouse wheel or a two-finger swipe to scroll the IFrame to the bottom (and beyond).<br/>"
    93             + "<br/><br/>"
    94             + "The test passes if you scroll far enough to see the row of END labels but the main page does not scroll.</p>";
    95         messageLocation.appendChild(message);
    96     }
    97 }
    98 
    99 </script>
    10092<div id="parent" style="height: 2000px">
    10193    <div id="source" style="height: 20px">
     
    10395    </div>
    10496    <div id="scrollable_div" style="height: 400px; width: 430px; overflow-y:auto; padding: 0;">
    105         <iframe id="non_scrollable_iframe" src="resources/background.html" style="height: 2100px; width:410px; overflow:hidden; scrolling: no" onload="setupTopLevel();">
     97        <iframe id="non_scrollable_iframe" src="resources/background.html" scrolling="no" style="height: 2100px; width:410px;" onload="setupTopLevel();">
    10698        </iframe>
    10799    </div>
    108100</div>
    109101<div id="console"></div>
    110 <script>
    111 description("Tests that iframe does scroll when inner iframe is NOT scrollable.");
    112 </script>
    113102<script src="../../../resources/js-test-post.js"></script>
    114103</body>
  • trunk/LayoutTests/fast/scrolling/latching/scroll-iframe-fragment-expected.txt

    r188160 r259121  
    55
    66
     7IFrame display height = 500
     8Mouse moved to (28, 466)
     9PASS IFrame received wheel events.
    710PASS successfullyParsed is true
    811
    912TEST COMPLETE
    10 IFrame display height = 500
    11 Mouse moved to (28, 466)
    12 PASS IFrame received wheel events.
    1313
  • trunk/LayoutTests/fast/scrolling/latching/scroll-iframe-fragment.html

    r235893 r259121  
    11<!DOCTYPE html>
    22<html>
    3     <head>
    4         <link rel="help" href="http://www.w3.org/TR/DOM-Level-3-Events/#events-WheelEvent">
    5         <script src="../../../resources/js-test-pre.js"></script>
    6     </head>
    7     <body>
    8         <script>
     3<head>
     4    <script src="../../../resources/js-test-pre.js"></script>
     5    <script>
     6        jsTestIsAsync = true;
     7
    98        var iframeTarget;
    109        var pageScrollPositionBefore;
    11         var iFrameScrollPositionBefore;
    12         var continueCount = 5;
     10        var iframeScrollPositionBefore;
    1311
    14         function checkForScroll() {
     12        function checkForScroll()
     13        {
     14            // The iframe should have scrolled, but not the main page.
     15            var pageScrollPositionAfter = document.scrollingElement.scrollTop;
     16            var iframeScrollPositionAfter = window.frames['target'].document.scrollingElement.scrollTop;
    1517
    16             // The IFrame should have scrolled, but not the main page.
    17             var pageScrollPositionAfter = document.scrollingElement.scrollTop;
    18             var iFrameScrollPositionAfter = window.frames['target'].document.scrollingElement.scrollTop;
    19 
    20             if (iFrameScrollPositionBefore != iFrameScrollPositionAfter)
     18            if (iframeScrollPositionBefore != iframeScrollPositionAfter)
    2119                testPassed("IFrame received wheel events.");
    2220            else
    2321                testFailed("IFrame did not receive wheel events.");
    2422
    25             testRunner.notifyDone();
     23            finishJSTest();
    2624        }
    2725
    28         function scrollTest() {
    29             // See where our IFrame lives:
     26        function scrollTest()
     27        {
    3028            pageScrollPositionBefore = document.scrollingElement.scrollTop;
    3129
    3230            iframeTarget = document.getElementById('target');
    3331
    34             var iFrameBody = window.frames['target'].document.body;
    35             iFrameBody.scrollTop = iFrameBody.scrollHeight - iframeTarget.clientHeight - 100;
     32            var iframeScrollingElement = window.frames['target'].document.scrollingElement;
     33            iframeScrollingElement.scrollTop = iframeScrollingElement.scrollHeight - iframeTarget.clientHeight - 100;
    3634
    37             iFrameScrollPositionBefore = iFrameBody.scrollTop;
     35            iframeScrollPositionBefore = iframeScrollingElement.scrollTop;
    3836
    3937            // Scroll the #source until we reach the #target.
     
    4139            debug("IFrame display height = " + iframeTarget.clientHeight);
    4240            var startPosY = iframeTarget.offsetTop + iframeTarget.clientHeight - 42; // One wheel turn before end.
     41
     42            eventSender.monitorWheelEvents();
    4343            eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame
    4444            debug("Mouse moved to (" + startPosX + ", " + startPosY + ")");
     45
    4546            eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none');
    4647            eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none');
     
    5051            eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue');
    5152            eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end');
    52             setTimeout(checkForScroll, 100);
     53            eventSender.callAfterScrollingCompletes(checkForScroll);
    5354        }
    5455
    55         function setupTopLevel() {
     56        function setupTopLevel()
     57        {
     58            // FIXME: This seems like a basic iframe latching test, but that contradicts with the test name
     59            // and the iframe contents.
     60            description("Tests that iframe doesn't pass wheel events to main frame when scrolling at bottom");
    5661            if (window.eventSender) {
    57                 testRunner.waitUntilDone();
    58 
    59                 setTimeout(scrollTest, 1000);
    60             } else {
    61                 var messageLocation = document.getElementById('parent');
    62                 var message = document.createElement('div');
    63                 message.innerHTML = "<p>This test is better run under DumpRenderTree. To manually test it, place the mouse pointer<br/>"
    64                     + "inside the IFrame, then use the mouse wheel or a two-finger swipe to scroll the IFrame to the bottom (and beyond).<br/>"
    65                     + "<br/><br/>"
    66                     + "The test passes if you scroll far enough to see the row of END labels but the main page does not scroll.</p>";
    67                 messageLocation.appendChild(message);
     62                setTimeout(scrollTest, 0);
     63                return;
    6864            }
     65       
     66            var message = document.createElement('div');
     67            message.innerHTML = "<p>To manually run this test, place the mouse pointer "
     68                + "inside the iframe, then use the mouse wheel or a two-finger swipe to scroll the iframe to the bottom (and beyond).</p>"
     69                + "<p>The test passes if you scroll far enough to see the row of END labels but the main page does not scroll.</p>";
     70            document.body.appendChild(message);
     71            finishJSTest();
    6972        }
    70         </script>
    71         <iframe id="target" name="target" style="border:solid 1px green; height: 500px; width: 500px;"
    72             src= "data:text/html,
    73                 <html>
    74                     <head>
    75                         <style>div { width: 400px; height: 200px; } </style>
    76                     </head>
    77                     <body>
    78                         <div id='notToBeScrolled' style='height: 1000px; width: 1000px;'>
    79                             TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP<br/><br/>
    80                             This should still be visible inside the frame after you scroll down
    81                             <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
    82                             <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
    83                             <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
    84                             This should NOT be visible inside the frame after you scroll down<br/>
    85                             <br/>
    86                             END END END END END END END END END END END END END
    87                         </div>
    88                     </body>
    89                 </html>"
    90             onload="setupTopLevel();">
    91         </iframe>
    92         <div id="console"></div>
    93         <script>
    94         description("Tests that iframe doesn't pass wheel events to main frame when scrolling at bottom");
    95         </script>
    96         <script src="../../../resources/js-test-post.js"></script>
    97     </body>
     73   
     74    </script>
     75</head>
     76<body>
     77    <iframe id="target" name="target" style="border:solid 1px green; height: 500px; width: 500px;"
     78        src= "data:text/html,
     79            <html>
     80                <head>
     81                    <style>div { width: 400px; height: 200px; } </style>
     82                </head>
     83                <body>
     84                    <div style='height: 1000px; width: 1000px;'>
     85                        TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP<br/><br/>
     86                        This should still be visible inside the frame after you scroll down
     87                        <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
     88                        <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
     89                        <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
     90                        This should NOT be visible inside the frame after you scroll down<br/>
     91                        <br/>
     92                        END END END END END END END END END END END END END
     93                    </div>
     94                </body>
     95            </html>"
     96        onload="setupTopLevel();">
     97    </iframe>
     98    <div id="console"></div>
     99    <script src="../../../resources/js-test-post.js"></script>
     100</body>
    98101</html>
  • trunk/LayoutTests/fast/scrolling/latching/scroll-iframe-in-overflow-expected.txt

    r192124 r259121  
    11PASS The iframe scrolled but the wrapper did not.
     2PASS successfullyParsed is true
    23
     4TEST COMPLETE
     5
  • trunk/LayoutTests/fast/scrolling/latching/scroll-iframe-in-overflow.html

    r192124 r259121  
    2222    </style>
    2323    <script>
    24     window.jsTestIsAsync = true;
     24    jsTestIsAsync = true;
    2525
    2626    function checkForScroll() {
     
    3232            testFailed("The iframe's scroll position is: " + iframe.contentWindow.scrollY + ", and the wrapper's scroll position is: " + wrapper.scrollTop);
    3333
    34         testRunner.notifyDone();
     34        finishJSTest();
    3535    }
    3636
    37     function scrollTest() {
     37    function scrollTest()
     38    {
     39        eventSender.monitorWheelEvents();
    3840        eventSender.mouseMoveTo(200, 50);
    3941        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, "began", "none");
     
    5658    function setup() {
    5759        if (window.eventSender) {
    58             eventSender.monitorWheelEvents();
    5960            setTimeout(scrollTest, 0);
    60         } else {
    61             var message = document.createElement("div");
    62             message.innerHTML = "<p>This test is better run under DumpRenderTree. To manually test it, place the mouse pointer<br/>"
    63                 + "inside the IFrame, then use a two-finger swipe to scroll the iframe to the bottom (and beyond).<br/>"
    64                 + "<br/><br/>"
    65                 + "The test passes if the overflow container does not scroll but the iframe scrolls to the bottom.</p>";
    66             document.body.appendChild(message);
     61            return;
    6762        }
     63       
     64        var message = document.createElement("div");
     65        message.innerHTML = "<p>To run this test manually, place the mouse pointer "
     66            + "inside the iframe, then use a two-finger swipe to scroll the iframe to the bottom (and beyond).</p>"
     67            + "<p>The test passes if the overflow container does not scroll but the iframe scrolls to the bottom.</p>";
     68        document.body.appendChild(message);
     69        finishJSTest();
    6870    }
    6971
  • trunk/LayoutTests/fast/scrolling/latching/scroll-iframe-latched-iframe-expected.txt

    r188160 r259121  
    66
    77
     8IFrame display height = 500
     9Mouse moved to (28, 566)
     10PASS Page did not receive wheel events.
    811PASS successfullyParsed is true
    912
    1013TEST COMPLETE
    11 IFrame display height = 500
    12 Mouse moved to (28, 566)
    13 PASS Page did not receive wheel events.
    1414
  • trunk/LayoutTests/fast/scrolling/latching/scroll-iframe-latched-iframe.html

    r235893 r259121  
    22<html>
    33<head>
    4 <link rel="help" href="http://www.w3.org/TR/DOM-Level-3-Events/#events-WheelEvent">
    5 <script src="../../../resources/js-test-pre.js"></script>
     4    <script src="../../../resources/js-test-pre.js"></script>
     5    <script>
     6        jsTestIsAsync = true;
     7
     8        var iframeTarget;
     9        var pageScrollPositionBefore;
     10        var iframeScrollPositionBefore;
     11
     12        function checkForScroll()
     13        {
     14            // The iframe should not have scrolled at all.
     15            var pageScrollPositionAfter = document.scrollingElement.scrollTop;
     16            var iframeScrollPositionAfter = window.frames['target'].document.scrollingElement.scrollTop;
     17
     18            if (pageScrollPositionBefore != pageScrollPositionAfter)
     19                testFailed("Page received wheel events.");
     20            else
     21                testPassed("Page did not receive wheel events.");
     22
     23            finishJSTest();
     24        }
     25
     26        function scrollTest()
     27        {
     28            pageScrollPositionBefore = document.scrollingElement.scrollTop;
     29
     30            iframeTarget = document.getElementById('target');
     31
     32            var iframeScrollingElement = window.frames['target'].document.scrollingElement;
     33            iframeScrollingElement.scrollTop = iframeScrollingElement.scrollHeight - iframeTarget.clientHeight - 100;
     34
     35            iframeScrollPositionBefore = iframeScrollingElement.scrollTop;
     36
     37            // Scroll the #source until we reach the #target.
     38            var startPosX = iframeTarget.offsetLeft + 20;
     39            debug("IFrame display height = " + iframeTarget.clientHeight);
     40            var startPosY = iframeTarget.offsetTop + iframeTarget.clientHeight - 42; // One wheel turn before end.
     41
     42            eventSender.monitorWheelEvents();
     43            eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame
     44
     45            debug("Mouse moved to (" + startPosX + ", " + startPosY + ")");
     46            eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none');
     47            eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none');
     48            eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none');
     49            eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none');
     50            eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin');
     51            eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue');
     52            eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end');
     53            eventSender.callAfterScrollingCompletes(checkForScroll);
     54        }
     55
     56        function setupTopLevel()
     57        {
     58            description("Tests that iframe doesn't pass wheel events to main frame when scrolling at bottom");
     59            if (window.eventSender) {
     60                setTimeout(scrollTest, 0);
     61                return;
     62            }
     63           
     64            var messageLocation = document.getElementById('parent');
     65            var message = document.createElement('div');
     66            message.innerHTML = "<p>This test is better run under DumpRenderTree. To manually test it, place the mouse pointer<br/>"
     67                + "inside the iframe, then use the mouse wheel or a two-finger swipe to scroll the iframe to the bottom (and beyond).<br/>"
     68                + "<br/><br/>"
     69                + "The test passes if you scroll far enough to see the row of END labels but the main page does not scroll.</p>";
     70            messageLocation.appendChild(message);
     71            finishJSTest();
     72        }
     73       
     74    </script>
     75
    676</head>
    777<body>
    8 <script>
    9 
    10 var iframeTarget;
    11 var pageScrollPositionBefore;
    12 var iFrameScrollPositionBefore;
    13 var continueCount = 5;
    14 
    15 function checkForScroll() {
    16 
    17     // The IFrame should not have scrolled at all.
    18     var pageScrollPositionAfter = document.scrollingElement.scrollTop;
    19     var iFrameScrollPositionAfter = window.frames['target'].document.scrollingElement.scrollTop;
    20 
    21     //debug("Page before: " + pageScrollPositionBefore + ", IFrame before: " + iFrameScrollPositionBefore);
    22     //debug("Page after:  " + pageScrollPositionAfter + ", IFrame after: " + iFrameScrollPositionAfter);
    23 
    24     if (pageScrollPositionBefore != pageScrollPositionAfter)
    25         testFailed("Page received wheel events.");
    26     else
    27         testPassed("Page did not receive wheel events.");
    28 
    29     testRunner.notifyDone();
    30 }
    31 
    32 function scrollTest() {
    33     // See where our IFrame lives:
    34     pageScrollPositionBefore = document.scrollingElement.scrollTop;
    35 
    36     iframeTarget = document.getElementById('target');
    37 
    38     var iFrameBody = window.frames['target'].document.body;
    39     iFrameBody.scrollTop = iFrameBody.scrollHeight - iframeTarget.clientHeight - 100;
    40 
    41     iFrameScrollPositionBefore = iFrameBody.scrollTop;
    42 
    43     // Scroll the #source until we reach the #target.
    44     var startPosX = iframeTarget.offsetLeft + 20;
    45     debug("IFrame display height = " + iframeTarget.clientHeight);
    46     var startPosY = iframeTarget.offsetTop + iframeTarget.clientHeight - 42; // One wheel turn before end.
    47     eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame
    48     debug("Mouse moved to (" + startPosX + ", " + startPosY + ")");
    49     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none');
    50     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none');
    51     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none');
    52     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none');
    53     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin');
    54     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue');
    55     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end');
    56     setTimeout(checkForScroll, 100);
    57 }
    58 
    59 function setupTopLevel() {
    60 
    61     if (window.eventSender) {
    62         testRunner.waitUntilDone();
    63 
    64         setTimeout(scrollTest, 1000);
    65     } else {
    66         var messageLocation = document.getElementById('parent');
    67         var message = document.createElement('div');
    68         message.innerHTML = "<p>This test is better run under DumpRenderTree. To manually test it, place the mouse pointer<br/>"
    69             + "inside the IFrame, then use the mouse wheel or a two-finger swipe to scroll the IFrame to the bottom (and beyond).<br/>"
    70             + "<br/><br/>"
    71             + "The test passes if you scroll far enough to see the row of END labels but the main page does not scroll.</p>";
    72         messageLocation.appendChild(message);
    73     }
    74 }
    75 
    76 </script>
    7778<div id="parent" style="height: 2000px">
    7879    <div id="source" style="height: 100px">
     
    8182    <iframe id="target" name="target" style="border:solid 1px green; height: 500px; width: 500px;"
    8283     src= "data:text/html,
    83      <div id='notToBeScrolled' style='height: 1000px; width: 1000px;'>
     84     <div style='height: 1000px; width: 1000px;'>
    8485     TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP<br/><br/>
    8586     This should still be visible inside the frame after you scroll down
     
    9798</div>
    9899<div id="console"></div>
    99 <script>
    100 description("Tests that iframe doesn't pass wheel events to main frame when scrolling at bottom");
    101 </script>
    102100<script src="../../../resources/js-test-post.js"></script>
    103101</body>
  • trunk/LayoutTests/fast/scrolling/latching/scroll-iframe-latched-mainframe-expected.txt

    r188160 r259121  
    66
    77
     8Mouse moved to (28, 66)
     9PASS IFrame did not receive wheel events.
    810PASS successfullyParsed is true
    911
    1012TEST COMPLETE
    11 Mouse moved to (28, 66)
    12 PASS IFrame did not receive wheel events.
    1313
  • trunk/LayoutTests/fast/scrolling/latching/scroll-iframe-latched-mainframe.html

    r235893 r259121  
    22<html>
    33<head>
    4 <link rel="help" href="http://www.w3.org/TR/DOM-Level-3-Events/#events-WheelEvent">
    5 <script src="../../../resources/js-test-pre.js"></script>
     4    <script src="../../../resources/js-test-pre.js"></script>
     5    <script>
     6        jsTestIsAsync = true;
     7
     8        var iframeTarget;
     9        var pageScrollPositionBefore;
     10        var iframeScrollPositionBefore;
     11
     12        function checkForScroll()
     13        {
     14            // The iframe should not have scrolled at all.
     15            var pageScrollPositionAfter = document.scrollingElement.scrollTop;
     16            var iframeScrollPositionAfter = window.frames['target'].document.scrollingElement.scrollTop;
     17
     18            if (iframeScrollPositionBefore != iframeScrollPositionAfter)
     19                testFailed("IFrame consumed wheel events.");
     20            else
     21                testPassed("IFrame did not receive wheel events.");
     22
     23            finishJSTest();
     24        }
     25
     26        function scrollTest()
     27        {
     28            pageScrollPositionBefore = document.scrollingElement.scrollTop;
     29            iframeScrollPositionBefore = window.frames['target'].document.scrollingElement.scrollTop;
     30
     31            iframeTarget = document.getElementById('target');
     32
     33            // Scroll the #source until we reach the #target.
     34            var startPosX = iframeTarget.offsetLeft + 20;
     35            var startPosY = iframeTarget.offsetTop - 42; // Slightly more than one wheel scroll away from the iframe
     36
     37            eventSender.monitorWheelEvents();
     38            eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame
     39            debug("Mouse moved to (" + startPosX + ", " + startPosY + ")");
     40
     41            eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none');
     42            eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none');
     43            eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none');
     44            eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none');
     45            eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin');
     46            eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue');
     47            eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end');
     48            eventSender.callAfterScrollingCompletes(checkForScroll);
     49        }
     50
     51        function setupTopLevel()
     52        {
     53            description("Tests that iframe doesn't consume wheel events when scroll ");
     54            if (window.eventSender) {
     55                setTimeout(scrollTest, 0);
     56                return;
     57            }
     58           
     59            var messageLocation = document.getElementById('parent');
     60            var message = document.createElement('div');
     61            message.innerHTML = "<p>To manually run this test, place the mouse pointer "
     62                + "at the top of the page, and then use the mouse wheel or a two-finger swipe to scroll the "
     63                + "down past the iframe.</p>"
     64                + "<p>You should not see the row of END labels if this test is successful.</p>";
     65            messageLocation.appendChild(message);
     66            finishJSTest();
     67        }
     68       
     69    </script>
    670</head>
    771<body>
    8 <script>
    9 
    10 var iframeTarget;
    11 var pageScrollPositionBefore;
    12 var iFrameScrollPositionBefore;
    13 var continueCount = 5;
    14 
    15 function checkForScroll() {
    16 
    17     // The IFrame should not have scrolled at all.
    18     var pageScrollPositionAfter = document.scrollingElement.scrollTop;
    19     var iFrameScrollPositionAfter = window.frames['target'].document.scrollingElement.scrollTop;
    20 
    21     //debug("Page before: " + pageScrollPositionBefore + ", IFrame before: " + iFrameScrollPositionBefore);
    22     //debug("Page after:  " + pageScrollPositionAfter + ", IFrame after: " + iFrameScrollPositionAfter);
    23 
    24     if (iFrameScrollPositionBefore != iFrameScrollPositionAfter)
    25         testFailed("IFrame consumed wheel events.");
    26     else
    27         testPassed("IFrame did not receive wheel events.");
    28 
    29     testRunner.notifyDone();
    30 }
    31 
    32 function scrollTest() {
    33     // See where our IFrame lives:
    34     pageScrollPositionBefore = document.scrollingElement.scrollTop;
    35     iFrameScrollPositionBefore = window.frames['target'].document.scrollingElement.scrollTop;
    36 
    37     iframeTarget = document.getElementById('target');
    38 
    39     // Scroll the #source until we reach the #target.
    40     var startPosX = iframeTarget.offsetLeft + 20;
    41     var startPosY = iframeTarget.offsetTop - 42; // Slightly more than one wheel scroll away from the IFrame
    42     eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame
    43     debug("Mouse moved to (" + startPosX + ", " + startPosY + ")");
    44     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none');
    45     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none');
    46     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none');
    47     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none');
    48     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin');
    49     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue');
    50     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end');
    51     setTimeout(checkForScroll, 100);
    52 }
    53 
    54 function setupTopLevel() {
    55 
    56     if (window.eventSender) {
    57         testRunner.waitUntilDone();
    58 
    59         setTimeout(scrollTest, 1000);
    60     } else {
    61         var messageLocation = document.getElementById('parent');
    62         var message = document.createElement('div');
    63         message.innerHTML = "<p>This test is better run under DumpRenderTree. To manually test it, place the mouse pointer<br/>"
    64             + "at the top of the page, and then use the mouse wheel or a two-finger swipe to scroll the<br/>"
    65             + "down past the IFrame.<br/><br/>"
    66             + "You should not see the row of END labels if this test is successful.</p>";
    67         messageLocation.appendChild(message);
    68     }
    69 }
    70 
    71 </script>
    7272<div id="parent" style="height: 2000px">
    7373    <div id="source" style="height: 100px">
     
    7676    <iframe id="target" name="target" style="border:solid 1px green; height: 500px; width: 500px;"
    7777     src= "data:text/html,
    78      <div id='notToBeScrolled' style='height: 1000px; width: 1000px;'>
     78     <div style='height: 1000px; width: 1000px;'>
    7979     TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP<br/><br/>
    8080     This should still be visible inside the frame after you scroll down
     
    9292</div>
    9393<div id="console"></div>
    94 <script>
    95 description("Tests that iframe doesn't consume wheel events when scroll ");
    96 </script>
    9794<script src="../../../resources/js-test-post.js"></script>
    9895</body>
  • trunk/LayoutTests/fast/scrolling/latching/scroll-iframe-webkit1-latching-bug-expected.txt

    r188160 r259121  
    55
    66
     7iframe display height = 150
     8Mouse moved to (28, 116)
     9PASS iframe received wheel events.
    710PASS successfullyParsed is true
    811
    912TEST COMPLETE
    10 iframe display height = 150
    11 Mouse moved to (28, 116)
    12 PASS iframe received wheel events.
    1313
  • trunk/LayoutTests/fast/scrolling/latching/scroll-iframe-webkit1-latching-bug.html

    r235893 r259121  
    11<!DOCTYPE html>
    22<html>
    3     <head>
    4         <link rel="help" href="http://www.w3.org/TR/DOM-Level-3-Events/#events-WheelEvent">
    5         <script src="../../../resources/js-test-pre.js"></script>
    6     </head>
    7     <body id="parent" style="height: 2000px">
    8         <script>
     3<head>
     4    <link rel="help" href="http://www.w3.org/TR/DOM-Level-3-Events/#events-WheelEvent">
     5    <script src="../../../resources/js-test-pre.js"></script>
     6    <script>
     7        jsTestIsAsync = true;
    98        var iframeTarget;
    109        var pageScrollPositionBefore;
    1110        var iframeScrollPositionBefore;
    12         var continueCount = 5;
    1311
    14         function checkForScroll() {
    15 
     12        function checkForScroll()
     13        {
    1614            // The iframe should have scrolled, but not the main page.
    1715            var pageScrollPositionAfter = document.scrollingElement.scrollTop;
     
    2321                testFailed("iframe did not receive wheel events.");
    2422
    25             testRunner.notifyDone();
     23            finishJSTest();
    2624        }
    2725
    28         function scrollTest() {
    29             // See where our iframe lives:
     26        function scrollTest()
     27        {
    3028            pageScrollPositionBefore = document.scrollingElement.scrollTop;
    3129
    3230            iframeTarget = document.getElementById('target');
    3331
    34             var iframeBody = window.frames['target'].document.body;
    35             iframeBody.scrollTop = iframeBody.scrollHeight - iframeTarget.clientHeight - 100;
     32            var iframeScrollingElement = window.frames['target'].document.scrollingElement;
     33            iframeScrollingElement.scrollTop = iframeScrollingElement.scrollHeight - iframeTarget.clientHeight - 100;
    3634
    37             iframeScrollPositionBefore = iframeBody.scrollTop;
     35            iframeScrollPositionBefore = iframeScrollingElement.scrollTop;
    3836
    3937            // Scroll the #source until we reach the #target.
     
    4139            debug("iframe display height = " + iframeTarget.clientHeight);
    4240            var startPosY = iframeTarget.offsetTop + iframeTarget.clientHeight - 42; // One wheel turn before end.
     41
     42            eventSender.monitorWheelEvents();
    4343            eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iframe
    4444            debug("Mouse moved to (" + startPosX + ", " + startPosY + ")");
     
    5050            eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue');
    5151            eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end');
    52             setTimeout(checkForScroll, 100);
     52            eventSender.callAfterScrollingCompletes(checkForScroll);
    5353        }
    5454
    55         function setupTopLevel() {
     55        function setupTopLevel()
     56        {
     57            description("Tests that iframe doesn't pass wheel events to main frame when scrolling at bottom");
    5658            if (window.eventSender) {
    57                 testRunner.waitUntilDone();
     59                setTimeout(scrollTest, 0);
     60                return;
     61            }
     62            var messageLocation = document.getElementById('parent');
     63            var message = document.createElement('div');
     64            message.innerHTML = "<p>This test is better run under DumpRenderTree. To manually test it, place the mouse pointer "
     65                + "inside the iframe, then use the mouse wheel or a two-finger swipe to scroll the iframe to the bottom (and beyond).</p>"
     66                + "<p>The test passes if you scroll far enough to see the row of END labels but the main page does not scroll.</p>";
     67            messageLocation.appendChild(message);
     68            finishJSTest();
     69        }
     70    </script>
     71</head>
     72<body id="parent" style="height: 2000px">
    5873
    59                 setTimeout(scrollTest, 1000);
    60             } else {
    61                 var messageLocation = document.getElementById('parent');
    62                 var message = document.createElement('div');
    63                 message.innerHTML = "<p>This test is better run under DumpRenderTree. To manually test it, place the mouse pointer<br/>"
    64                     + "inside the iframe, then use the mouse wheel or a two-finger swipe to scroll the iframe to the bottom (and beyond).<br/>"
    65                     + "<br/><br/>"
    66                     + "The test passes if you scroll far enough to see the row of END labels but the main page does not scroll.</p>";
    67                 messageLocation.appendChild(message);
    68             }
    69         }
    70         </script>
    71         <iframe id="target" name="target" style="border:solid 1px green; height: 150px; width: 300px;"
    72             src= "data:text/html,
    73                 <html style='height: 100%'>
    74                     <body style='height: 100%'>
    75                         <div style='height: 100px; width: 200px'>
    76                             <div style='overflow-y: auto; overflow-x: hidden;'>
    77                             TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP<br/><br/>
    78                             This should still be visible inside the frame after you scroll down
    79                             <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
    80                             <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
    81                             <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
    82                             This should NOT be visible inside the frame after you scroll down<br/>
    83                             <br/>
    84                             END END END END END END END END END END END END END
    85                             </div>
     74    <iframe id="target" name="target" style="border:solid 1px green; height: 150px; width: 300px;"
     75        src= "data:text/html,
     76            <html style='height: 100%'>
     77                <body style='height: 100%'>
     78                    <div style='height: 100px; width: 200px'>
     79                        <div style='overflow-y: auto; overflow-x: hidden;'>
     80                        TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP<br/><br/>
     81                        This should still be visible inside the frame after you scroll down
     82                        <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
     83                        <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
     84                        <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
     85                        This should NOT be visible inside the frame after you scroll down<br/>
     86                        <br/>
     87                        END END END END END END END END END END END END END
    8688                        </div>
    87                     </body>
    88                 </html>"
    89             onload="setupTopLevel();">
    90         </iframe>
    91         <div id="console"></div>
    92         <script>
    93         description("Tests that iframe doesn't pass wheel events to main frame when scrolling at bottom");
    94         </script>
    95         <script src="../../../resources/js-test-post.js"></script>
    96     </body>
     89                    </div>
     90                </body>
     91            </html>"
     92        onload="setupTopLevel();">
     93    </iframe>
     94    <div id="console"></div>
     95    <script src="../../../resources/js-test-post.js"></script>
     96</body>
    9797</html>
  • trunk/LayoutTests/fast/scrolling/latching/scroll-latched-nested-div-expected.txt

    r188160 r259121  
    22Scrollable Region
    33
    4 Count   DATA    Rev Count
    5 TOP TOP TOP TOP TOP     TOP TOP TOP TOP TOP     TOP TOP TOP TOP TOP
    6 1       0.1100  40
    7 2       0.1155  39
    8 3       0.2200  38
    9 4       0.2255  37
    10 5       0.3300  36
    11 6       0.3355  35
    12 7       0.4400  34
    13 8       0.4455  33
    14 9       0.5500  32
    15 10      0.5555  31
    16 11      0.6600  30
    17 12      0.6655  29
    18 13      0.7700  28
    19 14      0.7755  27
    20 15      0.8800  26
    21 16      0.8855  25
    22 17      0.9900  24
    23 18      0.9955  23
    24 19      0.9999  22
    25 20      1.0000  21
    26 21      1.0000  20
    27 22      0.9999  19
    28 23      0.9955  18
    29 24      0.9900  17
    30 25      0.8855  16
    31 26      0.8800  15
    32 27      0.7755  14
    33 28      0.7700  13
    34 29      0.6655  12
    35 30      0.6600  11
    36 31      0.5555  10
    37 32      0.5500  9
    38 33      0.4455  8
    39 34      0.4400  7
    40 35      0.3355  6
    41 36      0.3300  5
    42 37      0.2255  4
    43 38      0.2200  3
    44 39      0.1155  2
    45 40      0.1100  1
    46 END END END END END     END END END END END     END END END END END
    474A set of information at the bottom of the table.
    485
     
    529
    5310
    54 PASS successfullyParsed is true
    55 
    56 TEST COMPLETE
    5711wrapperTarget = [object HTMLDivElement]
    5812First scroll event:
     
    6418PASS Wrapper did not receive wheel events during the second gesture.
    6519PASS div did not receive wheel events during the second gesture.
     20PASS successfullyParsed is true
    6621
     22TEST COMPLETE
     23
  • trunk/LayoutTests/fast/scrolling/latching/scroll-latched-nested-div.html

    r227781 r259121  
    66    width: 680px;
    77}
    8 
    9 .table td, .table th {
    10     padding: 2px;
     8.contents {
     9    height: 1024px;
     10    background-image: repeating-linear-gradient(silver, white 200px);
    1111}
    12 
    13 .table th {
    14     height: 20px;
    15     text-align: left;
    16     font-weight: strong;
    17 }
    18 
    19 .table tr:nth-child(odd) {
    20     background: #f3f3f3;
    21 }
    22 
    23 .scrollable_select option:nth-child(odd) {
    24     background: #f3f3f3;
    25 }
    26 
    2712</style>
    2813<script src="../../../resources/js-test-pre.js"></script>
    2914<script>
    30 function onLoad() {
    31     setupTopLevel();
    32 }
     15    jsTestIsAsync = true;
     16
     17    var wrapperTarget;
     18    var divTarget;
     19    var pageScrollPositionBefore;
     20    var wrapperScrollPositionBefore;
     21    var divScrollPositionBefore;
     22
     23    function checkForSecondScroll()
     24    {
     25        // 'parent' should have scrolled, the content of 'target' should
     26        // not have scrolled, and 'wrapper' should not have scrolled.
     27        var pageScrollPositionAfter = document.scrollingElement.scrollTop;
     28        var wrapperScrollPositionAfter = wrapperTarget.scrollTop;
     29        var divScrollPositionAfter = divTarget.scrollTop;
     30
     31        debug("Second scroll event:");
     32        if (pageScrollPositionBefore != pageScrollPositionAfter)
     33            testPassed("Page received wheel events during the second gesture.");
     34        else
     35            testFailed("Page did not receive wheel events during the second gesture.");
     36
     37        if (wrapperScrollPositionBefore != wrapperScrollPositionAfter)
     38            testFailed("Wrapper received wheel events during the second gesture.");
     39        else
     40            testPassed("Wrapper did not receive wheel events during the second gesture.");
     41
     42        if (divScrollPositionBefore != divScrollPositionAfter)
     43            testFailed("div received wheel events during the second gesture.");
     44        else
     45            testPassed("div did not receive wheel events during the second gesture.");
     46
     47        finishJSTest();
     48    }
     49
     50    function checkForFirstScroll()
     51    {
     52        // 'parent' should not have scrolled, and the content of 'target' should
     53        // not have moved. However, 'wrapper' should have moved.
     54        var pageScrollPositionAfter = document.scrollingElement.scrollTop;
     55        var wrapperScrollPositionAfter = wrapperTarget.scrollTop;
     56        var divScrollPositionAfter = divTarget.scrollTop;
     57
     58        debug("First scroll event:");
     59        if (pageScrollPositionBefore != pageScrollPositionAfter)
     60            testFailed("Page received wheel events during the first gesture.");
     61        else
     62            testPassed("Page did not receive wheel events during the first gesture.");
     63
     64        if (wrapperScrollPositionBefore != wrapperScrollPositionAfter)
     65            testPassed("Wrapper received wheel events during the first gesture.");
     66        else
     67            testFailed("Wrapper did not receive wheel events during the first gesture.");
     68
     69        if (divScrollPositionBefore != divScrollPositionAfter)
     70            testFailed("div received wheel events during the first gesture.");
     71        else
     72            testPassed("div did not receive wheel events during the first gesture.");
     73
     74        wrapperScrollPositionBefore = wrapperTarget.scrollTop;
     75
     76        eventSender.monitorWheelEvents();
     77        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none');
     78        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none');
     79        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none');
     80        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none');
     81        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin');
     82        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue');
     83        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end');
     84        eventSender.callAfterScrollingCompletes(checkForSecondScroll);
     85    }
     86
     87    function scrollTest()
     88    {
     89        pageScrollPositionBefore = document.scrollingElement.scrollTop;
     90
     91        divTarget = document.getElementById('target');
     92        divTarget.scrollTop = divTarget.scrollHeight - divTarget.clientHeight - 100;
     93
     94        divScrollPositionBefore = divTarget.scrollTop;
     95
     96        wrapperTarget = document.getElementById('wrapper');
     97        wrapperScrollPositionBefore = wrapperTarget.scrollTop;
     98        debug("wrapperTarget = " + wrapperTarget);
     99
     100        // Move mouse to a position to the right side of the table, and near the bottom.
     101        var startPosX = divTarget.offsetLeft + divTarget.clientWidth + 50;
     102        var startPosY = Math.round(divTarget.offsetTop) - 42; // One wheel turn before end.
     103
     104        eventSender.monitorWheelEvents();
     105        eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame
     106        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none');
     107        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none');
     108        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none');
     109        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none');
     110        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -5, 'none', 'begin');
     111        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -10, 'none', 'continue');
     112        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end');
     113        eventSender.callAfterScrollingCompletes(checkForFirstScroll);
     114    }
     115
     116    function setupTopLevel()
     117    {
     118        description("Tests that a scrollable div nested inside another scrollable div properly handles wheel events under sub-pixel conditions.");
     119        if (window.eventSender) {
     120            setTimeout(scrollTest, 0);
     121            return;
     122        }
     123       
     124        finishJSTest();
     125    }
     126
     127    window.addEventListener('load', () => {
     128        setupTopLevel();
     129    }, false);
    33130</script>
    34131</head>
    35 <body onload="onLoad();">
    36 <script>
    37 
    38 var wrapperTarget;
    39 var divTarget;
    40 var pageScrollPositionBefore;
    41 var wrapperScrollPositionBefore;
    42 var divScrollPositionBefore;
    43 var continueCount = 5;
    44 
    45 function checkForSecondScroll() {
    46     // 'parent' should have scrolled, the content of 'target' should
    47     // not have scrolled, and 'wrapper' should not have scrolled.
    48     var pageScrollPositionAfter = document.scrollingElement.scrollTop;
    49     var wrapperScrollPositionAfter = wrapperTarget.scrollTop;
    50     var divScrollPositionAfter = divTarget.scrollTop;
    51 
    52     debug("Second scroll event:");
    53     if (pageScrollPositionBefore != pageScrollPositionAfter)
    54         testPassed("Page received wheel events during the second gesture.");
    55     else
    56         testFailed("Page did not receive wheel events during the second gesture.");
    57 
    58     if (wrapperScrollPositionBefore != wrapperScrollPositionAfter)
    59         testFailed("Wrapper received wheel events during the second gesture.");
    60     else
    61         testPassed("Wrapper did not receive wheel events during the second gesture.");
    62 
    63     if (divScrollPositionBefore != divScrollPositionAfter)
    64         testFailed("div received wheel events during the second gesture.");
    65     else
    66         testPassed("div did not receive wheel events during the second gesture.");
    67 
    68     testRunner.notifyDone();
    69 }
    70 
    71 function checkForFirstScroll() {
    72     // 'parent' should not have scrolled, and the content of 'target' should
    73     // not have moved. However, 'wrapper' should have moved.
    74     var pageScrollPositionAfter = document.scrollingElement.scrollTop;
    75     var wrapperScrollPositionAfter = wrapperTarget.scrollTop;
    76     var divScrollPositionAfter = divTarget.scrollTop;
    77 
    78     debug("First scroll event:");
    79     if (pageScrollPositionBefore != pageScrollPositionAfter)
    80         testFailed("Page received wheel events during the first gesture.");
    81     else
    82         testPassed("Page did not receive wheel events during the first gesture.");
    83 
    84     if (wrapperScrollPositionBefore != wrapperScrollPositionAfter)
    85         testPassed("Wrapper received wheel events during the first gesture.");
    86     else
    87         testFailed("Wrapper did not receive wheel events during the first gesture.");
    88 
    89     if (divScrollPositionBefore != divScrollPositionAfter)
    90         testFailed("div received wheel events during the first gesture.");
    91     else
    92         testPassed("div did not receive wheel events during the first gesture.");
    93 
    94     wrapperScrollPositionBefore = wrapperTarget.scrollTop;
    95 
    96     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none');
    97     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none');
    98     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none');
    99     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none');
    100     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin');
    101     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue');
    102     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end');
    103     // The timeout used to be only 100, but when we added support for rubber-banding in overflow
    104     // areas, we found we had to increase the timeout to allow the rubber-band to finish.
    105     setTimeout(checkForSecondScroll, 1000);
    106 }
    107 
    108 function scrollTest() {
    109     // See where our IFrame lives:
    110     pageScrollPositionBefore = document.scrollingElement.scrollTop;
    111 
    112     divTarget = document.getElementById('target');
    113     divTarget.scrollTop = divTarget.scrollHeight - divTarget.clientHeight - 100;
    114 
    115     divScrollPositionBefore = divTarget.scrollTop;
    116 
    117     wrapperTarget = document.getElementById('wrapper');
    118     wrapperScrollPositionBefore = wrapperTarget.scrollTop;
    119     debug("wrapperTarget = " + wrapperTarget);
    120 
    121     // Move mouse to a position to the right side of the table, and near the bottom.
    122     var startPosX = divTarget.offsetLeft + divTarget.clientWidth + 50;
    123     var startPosY = Math.round(divTarget.offsetTop) - 42; // One wheel turn before end.
    124     eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame
    125     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none');
    126     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none');
    127     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none');
    128     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none');
    129     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -5, 'none', 'begin');
    130     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -10, 'none', 'continue');
    131     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end');
    132     // The timeout used to be only 100, but when we added support for rubber-banding in overflow
    133     // areas, we found we had to increase the timeout to allow the rubber-band to finish.
    134     setTimeout(checkForFirstScroll, 1000);
    135 }
    136 
    137 function setupTopLevel() {
    138 
    139     if (window.eventSender) {
    140         testRunner.waitUntilDone();
    141 
    142         setTimeout(scrollTest, 1000);
    143     } else {
    144         var messageLocation = document.getElementById('parent');
    145         var message = document.createElement('div');
    146         message.innerHTML = "<p>This test is better run under DumpRenderTree. To manually test it, place the mouse pointer<br/>"
    147             + "at the top of the page, and then use the mouse wheel or a two-finger swipe to scroll the<br/>"
    148             + "down past the div.<br/><br/>"
    149             + "You should not see the row of END labels if this test is successful.</p>";
    150         messageLocation.appendChild(message);
    151     }
    152 }
    153 
    154 </script>
     132<body>
    155133<div id="parent" style="height: 2000px; width: 800px;">
    156134    <div id="wrapper" style='overflow-y: auto; overflow-x: hidden; max-height: 600px;'>
     
    162140            <h3>Scrollable Region</h3>
    163141            <div id="target" style='overflow-y: auto; overflow-x: hidden; max-height: 485.55px;'>
    164                 <table class="table" style='width: 99%'>
    165                     <tr><th>Count</th><th>DATA</th><th>Rev Count</th></tr>
    166                     <tr><td>TOP TOP TOP TOP TOP</td><td>TOP TOP TOP TOP TOP</td><td>TOP TOP TOP TOP TOP</td></tr>
    167                     <tr><td>1</td><td>0.1100</td><td>40</td></tr>
    168                     <tr><td>2</td><td>0.1155</td><td>39</td></tr>
    169                     <tr><td>3</td><td>0.2200</td><td>38</td></tr>
    170                     <tr><td>4</td><td>0.2255</td><td>37</td></tr>
    171                     <tr><td>5</td><td>0.3300</td><td>36</td></tr>
    172                     <tr><td>6</td><td>0.3355</td><td>35</td></tr>
    173                     <tr><td>7</td><td>0.4400</td><td>34</td></tr>
    174                     <tr><td>8</td><td>0.4455</td><td>33</td></tr>
    175                     <tr><td>9</td><td>0.5500</td><td>32</td></tr>
    176                     <tr><td>10</td><td>0.5555</td><td>31</td></tr>
    177                     <tr><td>11</td><td>0.6600</td><td>30</td></tr>
    178                     <tr><td>12</td><td>0.6655</td><td>29</td></tr>
    179                     <tr><td>13</td><td>0.7700</td><td>28</td></tr>
    180                     <tr><td>14</td><td>0.7755</td><td>27</td></tr>
    181                     <tr><td>15</td><td>0.8800</td><td>26</td></tr>
    182                     <tr><td>16</td><td>0.8855</td><td>25</td></tr>
    183                     <tr><td>17</td><td>0.9900</td><td>24</td></tr>
    184                     <tr><td>18</td><td>0.9955</td><td>23</td></tr>
    185                     <tr><td>19</td><td>0.9999</td><td>22</td></tr>
    186                     <tr><td>20</td><td>1.0000</td><td>21</td></tr>
    187                     <tr><td>21</td><td>1.0000</td><td>20</td></tr>
    188                     <tr><td>22</td><td>0.9999</td><td>19</td></tr>
    189                     <tr><td>23</td><td>0.9955</td><td>18</td></tr>
    190                     <tr><td>24</td><td>0.9900</td><td>17</td></tr>
    191                     <tr><td>25</td><td>0.8855</td><td>16</td></tr>
    192                     <tr><td>26</td><td>0.8800</td><td>15</td></tr>
    193                     <tr><td>27</td><td>0.7755</td><td>14</td></tr>
    194                     <tr><td>28</td><td>0.7700</td><td>13</td></tr>
    195                     <tr><td>29</td><td>0.6655</td><td>12</td></tr>
    196                     <tr><td>30</td><td>0.6600</td><td>11</td></tr>
    197                     <tr><td>31</td><td>0.5555</td><td>10</td></tr>
    198                     <tr><td>32</td><td>0.5500</td><td>9</td></tr>
    199                     <tr><td>33</td><td>0.4455</td><td>8</td></tr>
    200                     <tr><td>34</td><td>0.4400</td><td>7</td></tr>
    201                     <tr><td>35</td><td>0.3355</td><td>6</td></tr>
    202                     <tr><td>36</td><td>0.3300</td><td>5</td></tr>
    203                     <tr><td>37</td><td>0.2255</td><td>4</td></tr>
    204                     <tr><td>38</td><td>0.2200</td><td>3</td></tr>
    205                     <tr><td>39</td><td>0.1155</td><td>2</td></tr>
    206                     <tr><td>40</td><td>0.1100</td><td>1</td></tr>
    207                     <tr><td>END END END END END</td><td>END END END END END</td><td>END END END END END</td></tr>
    208                 </table>
     142                <div class="contents">
     143                </div>
    209144            </div>
    210145            <div id="bottom" style="height: 100px; width: 600px;">
     
    215150</div>
    216151<div id="console"></div>
    217 <script>
    218 description("Tests that a scrollable div nested inside another scrollable div properly handles wheel events under sub-pixel conditions.");
    219 </script>
    220152<script src="../../../resources/js-test-post.js"></script>
    221153</body>
  • trunk/LayoutTests/fast/scrolling/latching/scroll-nested-iframe-expected.txt

    r188160 r259121  
    66
    77
     8IFrame display height = 1000
     9Mouse moved to (28, 88)
     10PASS iframe did scroll.
    811PASS successfullyParsed is true
    912
    1013TEST COMPLETE
    11 IFrame display height = 1000
    12 Mouse moved to (28, 88)
    13 PASS iframe did scroll.
    1414
  • trunk/LayoutTests/fast/scrolling/latching/scroll-nested-iframe.html

    r227781 r259121  
    22<html>
    33<head>
    4 <link rel="help" href="http://www.w3.org/TR/DOM-Level-3-Events/#events-WheelEvent">
    5 <script src="../../../resources/js-test-pre.js"></script>
    64    <style>
    75    iframe {
     
    108    }
    119    </style>
     10    <script src="../../../resources/js-test-pre.js"></script>
     11    <script>
     12        jsTestIsAsync = true;
     13
     14        var iframeTarget;
     15        var pageScrollPositionBefore;
     16        var iframeScrollPositionBefore;
     17
     18        function checkForScroll()
     19        {
     20            // The iframe should not have scrolled at all.
     21            var pageScrollPositionAfter = document.scrollingElement.scrollTop;
     22            var iframeScrollPositionAfter = window.frames['scrollable_iframe'].document.scrollingElement.scrollTop;
     23
     24            if (iframeScrollPositionBefore != iframeScrollPositionAfter)
     25                testPassed("iframe did scroll.");
     26            else
     27                testFailed("iframe did NOT scroll.");
     28
     29            finishJSTest();
     30        }
     31
     32        function scrollTest()
     33        {
     34            pageScrollPositionBefore = document.scrollingElement.scrollTop;
     35
     36            iframeTarget = document.getElementById('scrollable_iframe');
     37
     38            var iframeScrollingElement = window.frames['scrollable_iframe'].document.scrollingElement;
     39            iframeScrollingElement.scrollTop = iframeScrollingElement.scrollHeight - iframeTarget.clientHeight - 100;
     40
     41            iframeScrollPositionBefore = iframeScrollingElement.scrollTop;
     42
     43            // Scroll the #source until we reach the #target.
     44            var startPosX = iframeTarget.offsetLeft + 20;
     45            debug("IFrame display height = " + iframeTarget.clientHeight);
     46            var startPosY = iframeTarget.offsetTop + 60; // One wheel turn before end.
     47            eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame
     48            debug("Mouse moved to (" + startPosX + ", " + startPosY + ")");
     49
     50            eventSender.monitorWheelEvents();
     51            eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none', true);
     52            eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
     53            eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
     54            eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none', true);
     55            eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin', true);
     56            eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
     57            eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end', true);
     58            eventSender.callAfterScrollingCompletes(checkForScroll);
     59        }
     60
     61        function setupTopLevel()
     62        {
     63            description("Tests that iframe does scroll when inner iframe is NOT scrollable.");
     64            if (window.eventSender) {
     65                setTimeout(scrollTest, 1000);
     66                return;
     67            }
     68            var messageLocation = document.getElementById('parent');
     69            var message = document.createElement('div');
     70            message.innerHTML = "<p>To manually run this test, place the mouse pointer "
     71                + "inside the iframe, then use the mouse wheel or a two-finger swipe to scroll the iframe to the bottom (and beyond).</p>"
     72                + "<p>The test passes if you scroll far enough to see the row of END labels but the main page does not scroll.</p>";
     73            messageLocation.appendChild(message);
     74            finishJSTest();
     75        }       
     76    </script>
    1277</head>
    1378<body>
    14 <script>
    15 
    16 var iframeTarget;
    17 var pageScrollPositionBefore;
    18 var iFrameScrollPositionBefore;
    19 var continueCount = 5;
    20 
    21 function checkForScroll() {
    22 
    23     // The IFrame should not have scrolled at all.
    24     var pageScrollPositionAfter = document.scrollingElement.scrollTop;
    25     var iFrameScrollPositionAfter = window.frames['scrollable_iframe'].document.scrollingElement.scrollTop;
    26 
    27     if (iFrameScrollPositionBefore != iFrameScrollPositionAfter)
    28         testPassed("iframe did scroll.");
    29     else
    30         testFailed("iframe did NOT scroll.");
    31 
    32     testRunner.notifyDone();
    33 }
    34 
    35 function scrollTest() {
    36     // See where our IFrame lives:
    37     pageScrollPositionBefore = document.scrollingElement.scrollTop;
    38 
    39     iframeTarget = document.getElementById('scrollable_iframe');
    40 
    41     var iFrameScrollingElement = window.frames['scrollable_iframe'].document.scrollingElement;
    42     iFrameScrollingElement.scrollTop = iFrameScrollingElement.scrollHeight - iframeTarget.clientHeight - 100;
    43 
    44     iFrameScrollPositionBefore = iFrameScrollingElement.scrollTop;
    45 
    46     // Scroll the #source until we reach the #target.
    47     var startPosX = iframeTarget.offsetLeft + 20;
    48     debug("IFrame display height = " + iframeTarget.clientHeight);
    49     var startPosY = iframeTarget.offsetTop + 60; // One wheel turn before end.
    50     eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame
    51     debug("Mouse moved to (" + startPosX + ", " + startPosY + ")");
    52     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none', true);
    53     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
    54     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
    55     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none', true);
    56     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin', true);
    57     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
    58     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end', true);
    59     setTimeout(checkForScroll, 100);
    60 }
    61 
    62 function setupTopLevel() {
    63 
    64     if (window.eventSender) {
    65         testRunner.waitUntilDone();
    66 
    67         setTimeout(scrollTest, 1000);
    68     } else {
    69         var messageLocation = document.getElementById('parent');
    70         var message = document.createElement('div');
    71         message.innerHTML = "<p>This test is better run under DumpRenderTree. To manually test it, place the mouse pointer<br/>"
    72             + "inside the IFrame, then use the mouse wheel or a two-finger swipe to scroll the IFrame to the bottom (and beyond).<br/>"
    73             + "<br/><br/>"
    74             + "The test passes if you scroll far enough to see the row of END labels but the main page does not scroll.</p>";
    75         messageLocation.appendChild(message);
    76     }
    77 }
    78 
    79 </script>
    8079<div id="parent" style="height: 2000px">
    8180    <div id="source" style="height: 20px">
     
    8685</div>
    8786<div id="console"></div>
    88 <script>
    89 description("Tests that iframe does scroll when inner iframe is NOT scrollable.");
    90 </script>
    9187<script src="../../../resources/js-test-post.js"></script>
    9288</body>
  • trunk/LayoutTests/fast/scrolling/latching/scroll-select-bottom-test-expected.txt

    r188160 r259121  
    88
    99
     10div display height = 111
     11Mouse moved to (30, 378)
     12PASS Page did not receive wheel events.
    1013PASS successfullyParsed is true
    1114
    1215TEST COMPLETE
    13 div display height = 111
    14 Mouse moved to (30, 378)
    15 PASS Page did not receive wheel events.
    1616
  • trunk/LayoutTests/fast/scrolling/latching/scroll-select-bottom-test.html

    r235893 r259121  
    66    width: 680px;
    77}
    8 
    9 .table td, .table th {
    10     padding: 2px;
    11 }
    12 
    13 .table th {
    14     height: 20px;
    15     text-align: left;
    16     font-weight: strong;
    17 }
    18 
    19 .table tr:nth-child(odd) {
    20     background: #f3f3f3;
    21 }
    22 
    238.scrollable_select option:nth-child(odd) {
    249    background: #f3f3f3;
    2510}
    26 
    2711</style>
    2812<script src="../../../resources/js-test-pre.js"></script>
    2913<script>
    30 function onLoad() {
    31     setupTopLevel();
    32 }
     14    jsTestIsAsync = true;
     15    var clientInset = 100;
     16
     17    var selectTarget;
     18    var pageScrollPositionBefore;
     19    var selectScrollPositionBefore;
     20
     21    function checkForScroll()
     22    {
     23        // The page should not have scrolled at all.
     24        var pageScrollPositionAfter = document.scrollingElement.scrollTop;
     25        var selectScrollPositionAfter = selectTarget.scrollTop;
     26
     27        if (pageScrollPositionBefore != pageScrollPositionAfter)
     28            testFailed("Page received wheel events.");
     29        else
     30            testPassed("Page did not receive wheel events.");
     31
     32        finishJSTest();
     33    }
     34
     35    function scrollTest()
     36    {
     37        pageScrollPositionBefore = document.scrollingElement.scrollTop;
     38
     39        selectTarget = document.getElementById('target');
     40        selectTarget.scrollTop = selectTarget.scrollHeight - selectTarget.clientHeight - 100;
     41
     42        selectScrollPositionBefore = selectTarget.scrollTop;
     43 
     44        // Scroll the #source until we reach the #target.
     45        var startPosX = selectTarget.offsetLeft + 20;
     46        debug("div display height = " + selectTarget.clientHeight);
     47        var startPosY = Math.round(selectTarget.offsetTop) + Math.round(selectTarget.clientHeight) + clientInset - 2; // Very near top (accounting for top content inset).
     48        eventSender.mouseMoveTo(startPosX, startPosY);
     49        debug("Mouse moved to (" + startPosX + ", " + startPosY + ")");
     50
     51        eventSender.monitorWheelEvents();
     52        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none', true);
     53        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
     54        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
     55        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none', true);
     56        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin', true);
     57        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
     58        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end', true);
     59        eventSender.callAfterScrollingCompletes(checkForScroll);
     60    }
     61
     62    function setupTopLevel()
     63    {
     64        description("Tests that a select doesn't pass wheel events to main frame when scrolling at bottom");
     65
     66        if (window.internals)
     67            window.internals.setTopContentInset(clientInset);
     68
     69        if (window.eventSender) {
     70            setTimeout(scrollTest, 0);
     71            return;
     72        }
     73       
     74        var messageLocation = document.getElementById('parent');
     75        var message = document.createElement('div');
     76        message.innerHTML = "<p>To manually run this test, place the mouse pointer "
     77            + "inside the select box, and scroll near (but not AT) the bottom of the range. Use the mouse wheel or a two-finger "
     78            + "swipe to scroll through the rest of the select options.</p>"
     79            + "<p>You should not see the page position change if this test is successful.</p>";
     80        messageLocation.appendChild(message);
     81        finishJSTest();
     82    }
     83
     84    window.addEventListener('load', () => {
     85        setupTopLevel();
     86    }, false);
    3387</script>
    3488</head>
    35 <body onload="onLoad();">
    36 <script>
    37 
    38 var clientInset = 100;
    39 
    40 var selectTarget;
    41 var pageScrollPositionBefore;
    42 var selectScrollPositionBefore;
    43 var continueCount = 5;
    44 
    45 function checkForScroll() {
    46 
    47     // The page should not have scrolled at all.
    48     var pageScrollPositionAfter = document.scrollingElement.scrollTop;
    49     var selectScrollPositionAfter = selectTarget.scrollTop;
    50 
    51     //debug("Page before: " + pageScrollPositionBefore + ", select before: " + selectScrollPositionBefore);
    52     //debug("Page after:  " + pageScrollPositionAfter + ", select after: " + selectScrollPositionAfter);
    53 
    54     if (pageScrollPositionBefore != pageScrollPositionAfter)
    55         testFailed("Page received wheel events.");
    56     else
    57         testPassed("Page did not receive wheel events.");
    58 
    59     testRunner.notifyDone();
    60 }
    61 
    62 function scrollTest() {
    63     // See where our IFrame lives:
    64     pageScrollPositionBefore = document.scrollingElement.scrollTop;
    65 
    66     selectTarget = document.getElementById('target');
    67     selectTarget.scrollTop = selectTarget.scrollHeight - selectTarget.clientHeight - 100;
    68 
    69     selectScrollPositionBefore = selectTarget.scrollTop;
    70  
    71     // Scroll the #source until we reach the #target.
    72     var startPosX = selectTarget.offsetLeft + 20;
    73     debug("div display height = " + selectTarget.clientHeight);
    74     var startPosY = Math.round(selectTarget.offsetTop) + Math.round(selectTarget.clientHeight) + clientInset - 2; // Very near top (accounting for top content inset).
    75     eventSender.mouseMoveTo(startPosX, startPosY);
    76     debug("Mouse moved to (" + startPosX + ", " + startPosY + ")");
    77     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none', true);
    78     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
    79     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
    80     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none', true);
    81     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin', true);
    82     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
    83     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end', true);
    84     setTimeout(checkForScroll, 100);
    85 }
    86 
    87 function setupTopLevel() {
    88 
    89     if (window.eventSender) {
    90         testRunner.dumpAsText(true);
    91         testRunner.waitUntilDone();
    92 
    93         setTimeout(scrollTest, 1000);
    94     } else {
    95         var messageLocation = document.getElementById('parent');
    96         var message = document.createElement('div');
    97         message.innerHTML = "<p>This test is better run under DumpRenderTree. To manually test it, place the mouse pointer<br/>"
    98             + "inside the select box, and scroll near (but not AT) the bottom of the range. Use the mouse wheel or a two-finger<br/>"
    99             + "swipe to scroll through the rest of the select options.<br/><br/>"
    100             + "You should not see the page position change if this test is successful.</p>";
    101         messageLocation.appendChild(message);
    102     }
    103 
    104     if (window.internals)
    105         window.internals.setTopContentInset(clientInset);
    106 }
    107 
    108 </script>
     89<body>
    10990<div id="parent" style="height: 2000px; width: 2000px;">
    11091    <div id="source" style="height: 100px; width: 500px;">
     
    140121</div>
    141122<div id="console"></div>
    142 <script>
    143 description("Tests that a select doesn't pass wheel events to main frame when scrolling at bottom");
    144 </script>
    145123<script src="../../../resources/js-test-post.js"></script>
    146124</body>
  • trunk/LayoutTests/fast/scrolling/latching/scroll-select-latched-mainframe-expected.txt

    r188160 r259121  
    88
    99
     10Mouse moved to (30, 127)
     11PASS Select did not receive wheel events.
    1012PASS successfullyParsed is true
    1113
    1214TEST COMPLETE
    13 Mouse moved to (30, 127)
    14 PASS Select did not receive wheel events.
    1515
  • trunk/LayoutTests/fast/scrolling/latching/scroll-select-latched-mainframe.html

    r235893 r259121  
    55.scrollable_region {
    66    width: 680px;
    7 }
    8 
    9 .table td, .table th {
    10     padding: 2px;
    11 }
    12 
    13 .table th {
    14     height: 20px;
    15     text-align: left;
    16     font-weight: strong;
    17 }
    18 
    19 .table tr:nth-child(odd) {
    20     background: #f3f3f3;
    217}
    228
     
    2814<script src="../../../resources/js-test-pre.js"></script>
    2915<script>
    30 function onLoad() {
    31     setupTopLevel();
    32 }
    33 </script>
    34 </head>
    35 <body onload="onLoad();">
    36 <script>
     16    jsTestIsAsync = true;
    3717
    38 var selectTarget;
    39 var pageScrollPositionBefore;
    40 var selectScrollPositionBefore;
    41 var continueCount = 5;
     18    var selectTarget;
     19    var pageScrollPositionBefore;
     20    var selectScrollPositionBefore;
    4221
    43 function checkForScroll() {
     22    function checkForScroll()
     23    {
     24        // The select should not have scrolled at all.
     25        var pageScrollPositionAfter = document.scrollingElement.scrollTop;
     26        var selectScrollPositionAfter = selectTarget.scrollTop;
    4427
    45     // The select should not have scrolled at all.
    46     var pageScrollPositionAfter = document.scrollingElement.scrollTop;
    47     var selectScrollPositionAfter = selectTarget.scrollTop;
     28        if (selectScrollPositionBefore != selectScrollPositionAfter)
     29            testFailed("Select consumed wheel events.");
     30        else
     31            testPassed("Select did not receive wheel events.");
    4832
    49     //debug("Page before: " + pageScrollPositionBefore + ", select before: " + selectScrollPositionBefore);
    50     //debug("Page after:  " + pageScrollPositionAfter + ", select after: " + selectScrollPositionAfter);
     33        finishJSTest();
     34    }
    5135
    52     if (selectScrollPositionBefore != selectScrollPositionAfter)
    53         testFailed("Select consumed wheel events.");
    54     else
    55         testPassed("Select did not receive wheel events.");
     36    function scrollTest()
     37    {
     38        pageScrollPositionBefore = document.scrollingElement.scrollTop;
    5639
    57     testRunner.notifyDone();
    58 }
     40        selectTarget = document.getElementById('target');
    5941
    60 function scrollTest() {
    61     // See where our IFrame lives:
    62     pageScrollPositionBefore = document.scrollingElement.scrollTop;
     42        selectScrollPositionBefore = selectTarget.scrollTop;
    6343
    64     selectTarget = document.getElementById('target');
     44        // Scroll the #source until we reach the #target.
     45        var startPosX = Math.round(selectTarget.offsetLeft) + 20;
     46        var startPosY = Math.round(selectTarget.offsetTop) - 42; // Slightly more than one wheel scroll away from the iframe
     47        eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame
     48        debug("Mouse moved to (" + startPosX + ", " + startPosY + ")");
    6549
    66     selectScrollPositionBefore = selectTarget.scrollTop;
     50        eventSender.monitorWheelEvents();
     51        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none', true);
     52        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
     53        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
     54        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none', true);
     55        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin', true);
     56        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
     57        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end', true);
     58        eventSender.callAfterScrollingCompletes(checkForScroll);
     59    }
    6760
    68     // Scroll the #source until we reach the #target.
    69     var startPosX = Math.round(selectTarget.offsetLeft) + 20;
    70     var startPosY = Math.round(selectTarget.offsetTop) - 42; // Slightly more than one wheel scroll away from the IFrame
    71     eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame
    72     debug("Mouse moved to (" + startPosX + ", " + startPosY + ")");
    73     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none', true);
    74     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
    75     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
    76     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none', true);
    77     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin', true);
    78     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
    79     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end', true);
    80     setTimeout(checkForScroll, 100);
    81 }
     61    function setupTopLevel()
     62    {
     63        description("Tests that a select doesn't consume wheel events when scroll is latched to main frame.");
    8264
    83 function setupTopLevel() {
    84 
    85     if (window.eventSender) {
    86         testRunner.waitUntilDone();
    87 
    88         setTimeout(scrollTest, 1000);
    89     } else {
     65        if (window.eventSender) {
     66            setTimeout(scrollTest, 0);
     67            return;
     68        }
     69       
    9070        var messageLocation = document.getElementById('parent');
    9171        var message = document.createElement('div');
    92         message.innerHTML = "<p>This test is better run under DumpRenderTree. To manually test it, place the mouse pointer<br/>"
    93             + "at the top of the page, and then use the mouse wheel or a two-finger swipe to scroll down<br/>"
    94             + "past the selectTarget.<br/><br/>"
    95             + "You should not see the 'content21' label if this test is successful.</p>";
     72        message.innerHTML = "<p>To manually run this test, place the mouse pointer "
     73            + "at the top of the page, and then use the mouse wheel or a two-finger swipe to scroll down "
     74            + "past the selectTarget.</p>"
     75            + "<p>You should not see the 'content21' label if this test is successful.</p>";
    9676        messageLocation.appendChild(message);
     77        finishJSTest();
    9778    }
    98 }
    9979
    100 </script>
     80    window.addEventListener('load', () => {
     81        setupTopLevel();
     82    }, false);
     83    </script>
     84</head>
     85<body>
    10186<div id="parent" style="height: 2000px; width: 2000px;">
    10287    <div id="source" style="height: 100px; width: 500px;">
     
    132117</div>
    133118<div id="console"></div>
    134 <script>
    135 description("Tests that a select doesn't consume wheel events when scroll is latched to main frame.");
    136 </script>
    137119<script src="../../../resources/js-test-post.js"></script>
    138120</body>
  • trunk/LayoutTests/fast/scrolling/latching/scroll-select-latched-select-expected.txt

    r188160 r259121  
    88
    99
     10div display height = 111
     11Mouse moved to (30, 238)
     12PASS Page did not receive wheel events.
    1013PASS successfullyParsed is true
    1114
    1215TEST COMPLETE
    13 div display height = 111
    14 Mouse moved to (30, 238)
    15 PASS Page did not receive wheel events.
    1616
  • trunk/LayoutTests/fast/scrolling/latching/scroll-select-latched-select.html

    r235893 r259121  
    2424    background: #f3f3f3;
    2525}
    26 
    2726</style>
    2827<script src="../../../resources/js-test-pre.js"></script>
    2928<script>
    30 function onLoad() {
    31     setupTopLevel();
    32 }
     29    jsTestIsAsync = true;
     30
     31    var selectTarget;
     32    var pageScrollPositionBefore;
     33    var selectScrollPositionBefore;
     34
     35    function checkForScroll()
     36    {
     37        // The page should not have scrolled at all.
     38        var pageScrollPositionAfter = document.scrollingElement.scrollTop;
     39        var selectScrollPositionAfter = selectTarget.scrollTop;
     40
     41        if (pageScrollPositionBefore != pageScrollPositionAfter)
     42            testFailed("Page received wheel events.");
     43        else
     44            testPassed("Page did not receive wheel events.");
     45
     46        finishJSTest();
     47    }
     48
     49    function scrollTest()
     50    {
     51        pageScrollPositionBefore = document.scrollingElement.scrollTop;
     52
     53        selectTarget = document.getElementById('target');
     54        selectTarget.scrollTop = selectTarget.scrollHeight - selectTarget.clientHeight - 100;
     55
     56        selectScrollPositionBefore = selectTarget.scrollTop;
     57
     58        // Scroll the #source until we reach the #target.
     59        var startPosX = Math.round(selectTarget.offsetLeft) + 20;
     60        debug("div display height = " + selectTarget.clientHeight);
     61        var startPosY = Math.round(selectTarget.offsetTop) + Math.round(selectTarget.clientHeight) - 42; // One wheel turn before end.
     62        eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame
     63        debug("Mouse moved to (" + startPosX + ", " + startPosY + ")");
     64
     65        eventSender.monitorWheelEvents();
     66        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none', true);
     67        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
     68        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
     69        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none', true);
     70        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin', true);
     71        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
     72        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end', true);
     73        eventSender.callAfterScrollingCompletes(checkForScroll);
     74    }
     75
     76    function setupTopLevel() {
     77
     78        if (window.eventSender) {
     79            setTimeout(scrollTest, 0);
     80            return;
     81        }
     82       
     83        var messageLocation = document.getElementById('parent');
     84        var message = document.createElement('div');
     85        message.innerHTML = "<p>To manually test it, place the mouse pointer "
     86            + "inside the select box, and scroll near (but not AT) the bottom of the range. Use the mouse wheel or a two-finger "
     87            + "swipe to scroll through the rest of the select options.</p>"
     88            + "<p>You should not see the page position change if this test is successful.</p>";
     89        messageLocation.appendChild(message);
     90        finishJSTest();
     91    }
     92
     93    window.addEventListener('load', () => {
     94        setupTopLevel();
     95    }, false);
    3396</script>
    3497</head>
    35 <body onload="onLoad();">
    36 <script>
    37 
    38 var selectTarget;
    39 var pageScrollPositionBefore;
    40 var selectScrollPositionBefore;
    41 var continueCount = 5;
    42 
    43 function checkForScroll() {
    44 
    45     // The page should not have scrolled at all.
    46     var pageScrollPositionAfter = document.scrollingElement.scrollTop;
    47     var selectScrollPositionAfter = selectTarget.scrollTop;
    48 
    49     //debug("Page before: " + pageScrollPositionBefore + ", select before: " + selectScrollPositionBefore);
    50     //debug("Page after:  " + pageScrollPositionAfter + ", select after: " + selectScrollPositionAfter);
    51 
    52     if (pageScrollPositionBefore != pageScrollPositionAfter)
    53         testFailed("Page received wheel events.");
    54     else
    55         testPassed("Page did not receive wheel events.");
    56 
    57     testRunner.notifyDone();
    58 }
    59 
    60 function scrollTest() {
    61     // See where our IFrame lives:
    62     pageScrollPositionBefore = document.scrollingElement.scrollTop;
    63 
    64     selectTarget = document.getElementById('target');
    65     selectTarget.scrollTop = selectTarget.scrollHeight - selectTarget.clientHeight - 100;
    66 
    67     selectScrollPositionBefore = selectTarget.scrollTop;
    68 
    69     // Scroll the #source until we reach the #target.
    70     var startPosX = Math.round(selectTarget.offsetLeft) + 20;
    71     debug("div display height = " + selectTarget.clientHeight);
    72     var startPosY = Math.round(selectTarget.offsetTop) + Math.round(selectTarget.clientHeight) - 42; // One wheel turn before end.
    73     eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame
    74     debug("Mouse moved to (" + startPosX + ", " + startPosY + ")");
    75     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none', true);
    76     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
    77     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
    78     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none', true);
    79     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin', true);
    80     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
    81     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end', true);
    82     setTimeout(checkForScroll, 100);
    83 }
    84 
    85 function setupTopLevel() {
    86 
    87     if (window.eventSender) {
    88         testRunner.dumpAsText(true);
    89         testRunner.waitUntilDone();
    90 
    91         setTimeout(scrollTest, 1000);
    92     } else {
    93         var messageLocation = document.getElementById('parent');
    94         var message = document.createElement('div');
    95         message.innerHTML = "<p>This test is better run under DumpRenderTree. To manually test it, place the mouse pointer<br/>"
    96             + "inside the select box, and scroll near (but not AT) the bottom of the range. Use the mouse wheel or a two-finger<br/>"
    97             + "swipe to scroll through the rest of the select options.<br/><br/>"
    98             + "You should not see the page position change if this test is successful.</p>";
    99         messageLocation.appendChild(message);
    100     }
    101 }
    102 
    103 </script>
     98<body>
    10499<div id="parent" style="height: 2000px; width: 2000px;">
    105100    <div id="source" style="height: 100px; width: 500px;">
  • trunk/LayoutTests/platform/mac-wk2/TestExpectations

    r259120 r259121  
    795795webkit.org/b/183869 [ HighSierra+ ] media/modern-media-controls/seek-backward-support/seek-backward-support.html [ Pass Failure ]
    796796
    797 webkit.org/b/183879 [ Debug ] fast/scrolling/latching/scroll-div-no-latching.html [ Pass Failure ]
    798 
    799797webkit.org/b/183860 [ Sierra Release ] http/wpt/service-workers/third-party-registration.html [ Pass Failure ]
    800798
     
    920918webkit.org/b/207060 imported/w3c/web-platform-tests/html/webappapis/timers/type-long-setinterval.html [ Pass Failure ]
    921919
    922 webkit.org/b/207063 fast/scrolling/latching/scroll-div-with-nested-nonscrollable-iframe.html [ Pass Failure ]
    923 
    924920webkit.org/b/207078 webgpu/whlsl/textures-sample-level.html [ Pass ImageOnlyFailure Crash ]
    925921
     
    948944webkit.org/b/206718 inspector/canvas/shaderProgram-add-remove-webgl2.html [ Pass Crash ]
    949945
    950 webkit.org/b/207209  inspector/heap/getPreview.html [ Pass Failure Timeout ]
     946webkit.org/b/207209 inspector/heap/getPreview.html [ Pass Failure Timeout ]
    951947
    952948webkit.org/b/207222 webgpu/whlsl/zero-initialize-values-2.html [ Pass ImageOnlyFailure ]
     
    995991
    996992webkit.org/b/207728 [ Release ] accessibility/press-targets-center-point.html [ Pass Failure ]
    997 
    998 webkit.org/b/207732 fast/scrolling/latching/iframe_in_iframe.html [ Pass Failure ]
    999993
    1000994webkit.org/b/206699 http/tests/media/now-playing-info.html [ Pass Failure ]
Note: See TracChangeset for help on using the changeset viewer.