| <!DOCTYPE html> |
| |
| <html> |
| |
| <head> |
| <title>Cobalt scroll test</title> |
| <script src='black_box_js_test_utils.js'></script> |
| <script src='pointer_event_test_utils.js'></script> |
| <style> |
| .app { |
| position: absolute; |
| width: 80rem; |
| height: 45rem; |
| overflow: hidden; |
| padding: 20px; |
| z-index: 1; |
| } |
| |
| .row { |
| position: relative; |
| overflow: auto; |
| height: 20rem; |
| width: 80rem; |
| } |
| |
| .tile { |
| position: absolute; |
| height: 10rem; |
| width: 200rem; |
| background: linear-gradient(0.25turn, #f4aca9, #ebf8e1, #bce6f3); |
| } |
| </style> |
| </head> |
| |
| <body> |
| <div class="app" style="overflow:auto;"> |
| <div id="row" class="row" style="height: 20rem;"> |
| <div id="tile" class="tile">One</div> |
| </div> |
| </div> |
| </body> |
| <script> |
| const expected_events = [ |
| // actions.move_to_element(row).pause(_SLEEP_AFTER_MOVE_TIME) |
| { name: 'pointermove', id: 'tile', phase: Event.AT_TARGET }, |
| { name: 'pointermove', id: 'row', phase: Event.BUBBLING_PHASE }, |
| |
| // actions.click_and_hold(row).pause(_SLEEP_AFTER_MOVE_TIME) |
| { name: 'pointermove', id: 'tile', phase: Event.AT_TARGET }, |
| { name: 'pointermove', id: 'row', phase: Event.BUBBLING_PHASE }, |
| |
| // actions.move_by_offset(-500, 0).pause(_SLEEP_AFTER_MOVE_TIME) |
| { name: 'pointerdown', id: 'tile', phase: Event.AT_TARGET }, |
| { name: 'pointerdown', id: 'row', phase: Event.BUBBLING_PHASE }, |
| { name: 'pointercancel', id: 'tile', phase: Event.AT_TARGET }, |
| { name: 'pointercancel', id: 'row', phase: Event.BUBBLING_PHASE }, |
| { name: 'scroll', id: 'row', phase: Event.AT_TARGET }, |
| ] |
| |
| function checkEndState() { |
| const scroll_container = document.getElementById("row"); |
| assertTrue(scroll_container.scrollLeft > 0); |
| assertEqual(failure_count, 0); |
| onEndTest(); |
| } |
| |
| function setAllHandlers(prefix, selector, callback) { |
| setHandlers(prefix + 'down', selector, callback); |
| setHandlers(prefix + 'up', selector, callback); |
| setHandlers(prefix + 'move', selector, callback); |
| setHandlers(prefix + 'cancel', selector, callback); |
| } |
| |
| window.onload = () => { |
| setAllHandlers('pointer', '#row', logEvent); |
| setAllHandlers('pointer', '#tile', logEvent); |
| setHandlers('scroll', '#row', logEvent); |
| setHandlers('scroll', '#tile', logEvent); |
| setHandlers('scroll', '.app', logEvent); |
| setupFinished(); |
| } |
| |
| window.onkeydown = (event) => { |
| if (event.key == 0) { |
| checkEndState(); |
| } |
| } |
| </script> |
| |
| </html> |