OLD | NEW |
(Empty) | |
| 1 <!DOCTYPE html> |
| 2 <html> |
| 3 <head> |
| 4 <script src="../../../../resources/js-test.js"></script> |
| 5 <style type="text/css"> |
| 6 #box { |
| 7 width: 300px; |
| 8 height: 50px; |
| 9 } |
| 10 |
| 11 #overflowBox { |
| 12 width: 300px; |
| 13 height: 600px; |
| 14 } |
| 15 |
| 16 #container { |
| 17 width: 300px; |
| 18 height: 50px; |
| 19 overflow-y: scroll; |
| 20 overflow-x: hidden; |
| 21 margin: 10px 0 10px 0; |
| 22 } |
| 23 |
| 24 .interactive { background-color: blue; } |
| 25 |
| 26 .interactive:hover { background-color: red; } |
| 27 |
| 28 .interactive:active { background-color: green; } |
| 29 |
| 30 .interactive:hover:active { background-color: yellow; } |
| 31 |
| 32 #scroller { |
| 33 display: none; |
| 34 width: 100px; |
| 35 height: 600px; |
| 36 } |
| 37 </style> |
| 38 </head> |
| 39 <body> |
| 40 <div id="box" class="interactive">Gestures go here</div> |
| 41 <div id="container"> |
| 42 <div id="overflowBox" class="interactive">Gestures go here</div> |
| 43 </div> |
| 44 |
| 45 <p id="description"></p> |
| 46 <p>See http://crbug.com/316974 for details</p> |
| 47 |
| 48 <div id="console"></div> |
| 49 |
| 50 <div id="scroller"></div> |
| 51 |
| 52 <script> |
| 53 if (window.internals) { |
| 54 internals.settings.setViewportEnabled(true); |
| 55 internals.settings.setViewportMetaEnabled(true); |
| 56 } |
| 57 |
| 58 var color; |
| 59 |
| 60 function isBoxOfColor(id, givenColor) |
| 61 { |
| 62 var b = document.getElementById(id); |
| 63 color = window.getComputedStyle(b).backgroundColor; |
| 64 if (color == givenColor) |
| 65 return true; |
| 66 |
| 67 testFailed('Box had backgroundColor: ' + color); |
| 68 return false; |
| 69 } |
| 70 |
| 71 function isBoxHoverActive(id) |
| 72 { |
| 73 return isBoxOfColor(id, "rgb(255, 255, 0)"); |
| 74 } |
| 75 |
| 76 function isBoxDefault(id) |
| 77 { |
| 78 return isBoxOfColor(id, "rgb(0, 0, 255)"); |
| 79 } |
| 80 |
| 81 description("Tests gesture tapdown behaviour on different scroll / pinch setting
s."); |
| 82 |
| 83 function runTests() |
| 84 { |
| 85 if (!window.eventSender) { |
| 86 debug('This test requires DRT.'); |
| 87 return; |
| 88 } |
| 89 |
| 90 if (!eventSender.gestureTapDown |
| 91 || !eventSender.gestureShowPress) { |
| 92 debug('Gesture events are not supported by this platform'); |
| 93 return; |
| 94 } |
| 95 |
| 96 // Insert meta tag after viewport has been enabled via internals |
| 97 var meta = document.createElement('meta'); |
| 98 meta.name = 'viewport'; |
| 99 meta.content = 'initial-scale=1, maximum-scale=2'; |
| 100 document.head.appendChild(meta); |
| 101 |
| 102 // Verify behaviour when page is pinchable |
| 103 debug("Verify hover, active aren't initially set (scroll disabled, pinch ena
bled)."); |
| 104 shouldBeTrue("isBoxDefault('box')"); |
| 105 |
| 106 debug("tapdown on element should not activate."); |
| 107 eventSender.gestureTapDown(50, 25); |
| 108 shouldBeTrue("isBoxDefault('box')"); |
| 109 |
| 110 debug("showpress on element should activate."); |
| 111 eventSender.gestureShowPress(50, 25); |
| 112 shouldBeTrue("isBoxHoverActive('box')"); |
| 113 eventSender.gestureTapCancel(50, 25); |
| 114 |
| 115 // Send a sequence to another element to clear current one without relying o
n tap |
| 116 eventSender.gestureTapDown(50, 80); |
| 117 eventSender.gestureShowPress(50, 80); |
| 118 eventSender.gestureTapCancel(50, 80); |
| 119 |
| 120 // Update viewport to make page non-pinchable |
| 121 meta.content = 'width=device-width, initial-scale=1, user-scalable=no'; |
| 122 |
| 123 // Verify behaviour when page isn't scrollable or pinchable |
| 124 debug("Verify hover, active aren't initially set (scroll disabled, pinch dis
abled)."); |
| 125 shouldBeTrue("isBoxDefault('box')"); |
| 126 |
| 127 debug("tapdown on element should activate."); |
| 128 eventSender.gestureTapDown(50, 25); |
| 129 shouldBeTrue("isBoxHoverActive('box')"); |
| 130 |
| 131 debug("showpress on element should keep hover and active."); |
| 132 eventSender.gestureShowPress(50, 25); |
| 133 shouldBeTrue("isBoxHoverActive('box')"); |
| 134 eventSender.gestureTapCancel(50, 25); |
| 135 |
| 136 // Verify behaviour when ancestor is scrollable |
| 137 debug("Verify hover, active aren't initially set (overflowBox with scrollabl
e ancestor)."); |
| 138 shouldBeTrue("isBoxDefault('overflowBox')"); |
| 139 |
| 140 debug("tapdown on element should not activate."); |
| 141 eventSender.gestureTapDown(50, 80); |
| 142 shouldBeTrue("isBoxDefault('overflowBox')"); |
| 143 |
| 144 debug("showpress on element should activate."); |
| 145 eventSender.gestureShowPress(50, 80); |
| 146 shouldBeTrue("isBoxHoverActive('overflowBox')"); |
| 147 eventSender.gestureTapCancel(50, 80); |
| 148 |
| 149 // Now check when page becomes scrollable |
| 150 document.getElementById('scroller').style.display = 'block'; |
| 151 debug("Verify hover, active aren't initially set (scroll enabled, pinch disa
bled)."); |
| 152 shouldBeTrue("isBoxDefault('box')"); |
| 153 |
| 154 debug("tapdown on element should not activate."); |
| 155 eventSender.gestureTapDown(50, 25); |
| 156 shouldBeTrue("isBoxDefault('box')"); |
| 157 |
| 158 debug("showpress on element should activate."); |
| 159 eventSender.gestureShowPress(50, 25); |
| 160 shouldBeTrue("isBoxHoverActive('box')"); |
| 161 eventSender.gestureTapCancel(50, 25); |
| 162 } |
| 163 |
| 164 runTests(); |
| 165 </script> |
| 166 </body> |
| 167 </html> |
| 168 |
OLD | NEW |