| OLD | NEW |
| 1 // This file contains the commonly used functions in pointerevent tests. | 1 // This file contains the commonly used functions in pointerevent tests. |
| 2 | 2 |
| 3 const scrollOffset = 30; | 3 const scrollOffset = 30; |
| 4 const boundaryOffset = 5; | 4 const boundaryOffset = 5; |
| 5 const touchSourceType = 1; | 5 const touchSourceType = 1; |
| 6 | 6 |
| 7 function delayPromise(delay) { | 7 function delayPromise(delay) { |
| 8 return new Promise(function(resolve, reject) { | 8 return new Promise(function(resolve, reject) { |
| 9 window.setTimeout(resolve, delay); | 9 window.setTimeout(resolve, delay); |
| 10 }); | 10 }); |
| 11 } | 11 } |
| 12 | 12 |
| 13 function scrollPageIfNeeded(targetSelector, targetDocument) { | 13 function scrollPageIfNeeded(targetSelector, targetDocument) { |
| 14 var target = targetDocument.querySelector(targetSelector); | 14 var target = targetDocument.querySelector(targetSelector); |
| 15 var targetRect = target.getBoundingClientRect(); | 15 var targetRect = target.getBoundingClientRect(); |
| 16 if (targetRect.top < 0 || targetRect.left < 0 || targetRect.bottom > window.in
nerHeight || targetRect.right > window.innerWidth) | 16 if (targetRect.top < 0 || targetRect.left < 0 || targetRect.bottom > window.in
nerHeight || targetRect.right > window.innerWidth) |
| 17 window.scrollTo(targetRect.left, targetRect.top); | 17 window.scrollTo(targetRect.left, targetRect.top); |
| 18 } | 18 } |
| 19 | 19 |
| 20 // Mouse inputs. | 20 // Mouse inputs. |
| 21 function mouseMoveToDocument() { | 21 function mouseMoveToDocument() { |
| 22 return new Promise(function(resolve, reject) { | 22 return new Promise(function(resolve, reject) { |
| 23 if (window.eventSender) { | 23 if (window.chrome && chrome.gpuBenchmarking) { |
| 24 eventSender.mouseMoveTo(0, 0); | 24 chrome.gpuBenchmarking.pointerActionSequence( |
| 25 resolve(); | 25 [{ |
| 26 'source': 'mouse', |
| 27 'actions': [{'name': 'pointerMove', 'x': 0, 'y': 0}] |
| 28 }], |
| 29 resolve); |
| 26 } else { | 30 } else { |
| 27 reject(); | 31 reject(); |
| 28 } | 32 } |
| 29 }); | 33 }); |
| 30 } | 34 } |
| 31 | 35 |
| 32 function mouseMoveIntoTarget(targetSelector, targetFrame) { | 36 function mouseMoveIntoTarget(targetSelector, targetFrame) { |
| 33 var targetDocument = document; | 37 var targetDocument = document; |
| 34 var frameLeft = 0; | 38 var frameLeft = 0; |
| 35 var frameTop = 0; | 39 var frameTop = 0; |
| 36 if (targetFrame !== undefined) { | 40 if (targetFrame !== undefined) { |
| 37 targetDocument = targetFrame.contentDocument; | 41 targetDocument = targetFrame.contentDocument; |
| 38 var frameRect = targetFrame.getBoundingClientRect(); | 42 var frameRect = targetFrame.getBoundingClientRect(); |
| 39 frameLeft = frameRect.left; | 43 frameLeft = frameRect.left; |
| 40 frameTop = frameRect.top; | 44 frameTop = frameRect.top; |
| 41 } | 45 } |
| 42 return new Promise(function(resolve, reject) { | 46 return new Promise(function(resolve, reject) { |
| 43 if (window.eventSender) { | 47 if (window.chrome && chrome.gpuBenchmarking) { |
| 44 scrollPageIfNeeded(targetSelector, targetDocument); | 48 scrollPageIfNeeded(targetSelector, targetDocument); |
| 45 var target = targetDocument.querySelector(targetSelector); | 49 var target = targetDocument.querySelector(targetSelector); |
| 46 var targetRect = target.getBoundingClientRect(); | 50 var targetRect = target.getBoundingClientRect(); |
| 47 eventSender.mouseMoveTo(frameLeft + targetRect.left + boundaryOffset, fram
eTop + targetRect.top + boundaryOffset); | 51 var xPosition = frameLeft + targetRect.left + boundaryOffset; |
| 48 resolve(); | 52 var yPosition = frameTop + targetRect.top + boundaryOffset; |
| 53 chrome.gpuBenchmarking.pointerActionSequence( |
| 54 [{ |
| 55 'source': 'mouse', |
| 56 'actions': |
| 57 [{'name': 'pointerMove', 'x': xPosition, 'y': yPosition}] |
| 58 }], |
| 59 resolve); |
| 49 } else { | 60 } else { |
| 50 reject(); | 61 reject(); |
| 51 } | 62 } |
| 52 }); | 63 }); |
| 53 } | 64 } |
| 54 | 65 |
| 55 function mouseButtonPress(button) { | 66 function mouseChordedButtonPress(targetSelector) { |
| 56 return new Promise(function(resolve, reject) { | 67 return new Promise(function(resolve, reject) { |
| 57 if (window.eventSender) { | 68 if (window.chrome && chrome.gpuBenchmarking) { |
| 58 eventSender.mouseDown(button); | 69 scrollPageIfNeeded(targetSelector, document); |
| 59 resolve(); | 70 var target = document.querySelector(targetSelector); |
| 60 } else { | 71 var targetRect = target.getBoundingClientRect(); |
| 61 reject(); | 72 var xPosition = targetRect.left + boundaryOffset; |
| 62 } | 73 var yPosition = targetRect.top + boundaryOffset; |
| 63 }); | 74 chrome.gpuBenchmarking.pointerActionSequence( |
| 64 } | 75 [{ |
| 65 | 76 'source': 'mouse', |
| 66 function mouseButtonRelease(button) { | 77 'actions': [ |
| 67 return new Promise(function(resolve, reject) { | 78 { |
| 68 if (window.eventSender) { | 79 'name': 'pointerDown', |
| 69 eventSender.mouseUp(button); | 80 'x': xPosition, |
| 70 resolve(); | 81 'y': yPosition, |
| 71 } else { | 82 'button': 'left' |
| 83 }, |
| 84 { |
| 85 'name': 'pointerDown', |
| 86 'x': xPosition, |
| 87 'y': yPosition, |
| 88 'button': 'middle' |
| 89 }, |
| 90 {'name': 'pointerUp', 'button': 'middle'}, |
| 91 {'name': 'pointerUp', 'button': 'left'} |
| 92 ] |
| 93 }], |
| 94 resolve); |
| 95 } else { |
| 72 reject(); | 96 reject(); |
| 73 } | 97 } |
| 74 }); | 98 }); |
| 75 } | 99 } |
| 76 | 100 |
| 77 function mouseClickInTarget(targetSelector, targetFrame) { | 101 function mouseClickInTarget(targetSelector, targetFrame) { |
| 78 return mouseMoveIntoTarget(targetSelector, targetFrame).then(function() { | 102 var targetDocument = document; |
| 79 return new Promise(function(resolve, reject) { | 103 var frameLeft = 0; |
| 80 if (window.eventSender) { | 104 var frameTop = 0; |
| 81 eventSender.mouseDown(0); | 105 if (targetFrame !== undefined) { |
| 82 eventSender.mouseUp(0); | 106 targetDocument = targetFrame.contentDocument; |
| 83 resolve(); | 107 var frameRect = targetFrame.getBoundingClientRect(); |
| 84 } else { | 108 frameLeft = frameRect.left; |
| 85 reject(); | 109 frameTop = frameRect.top; |
| 86 } | 110 } |
| 87 }); | 111 return new Promise(function(resolve, reject) { |
| 112 if (window.chrome && chrome.gpuBenchmarking) { |
| 113 scrollPageIfNeeded(targetSelector, targetDocument); |
| 114 var target = targetDocument.querySelector(targetSelector); |
| 115 var targetRect = target.getBoundingClientRect(); |
| 116 var xPosition = frameLeft + targetRect.left + boundaryOffset; |
| 117 var yPosition = frameTop + targetRect.top + boundaryOffset; |
| 118 chrome.gpuBenchmarking.pointerActionSequence( |
| 119 [{ |
| 120 'source': 'mouse', |
| 121 'actions': [ |
| 122 {'name': 'pointerMove', 'x': xPosition, 'y': yPosition}, |
| 123 {'name': 'pointerDown', 'x': xPosition, 'y': yPosition}, |
| 124 {'name': 'pointerUp'} |
| 125 ] |
| 126 }], |
| 127 resolve); |
| 128 } else { |
| 129 reject(); |
| 130 } |
| 88 }); | 131 }); |
| 89 } | 132 } |
| 90 | 133 |
| 91 function mouseDragInTargets(targetSelectorList) { | 134 function mouseDragInTargets(targetSelectorList) { |
| 92 return new Promise(function(resolve, reject) { | 135 return new Promise(function(resolve, reject) { |
| 93 if (window.eventSender) { | 136 if (window.chrome && chrome.gpuBenchmarking) { |
| 94 mouseMoveIntoTarget(targetSelectorList[0]).then(function() { | 137 scrollPageIfNeeded(targetSelectorList[0], document); |
| 95 eventSender.mouseDown(0); | 138 var target = document.querySelector(targetSelectorList[0]); |
| 96 for (var i=1; i<targetSelectorList.length; i++) | 139 var targetRect = target.getBoundingClientRect(); |
| 97 mouseMoveIntoTarget(targetSelectorList[i]); | 140 var xPosition = targetRect.left + boundaryOffset; |
| 98 eventSender.mouseUp(0); | 141 var yPosition = targetRect.top + boundaryOffset; |
| 99 resolve(); | 142 var pointerActions = [{'source': 'mouse'}]; |
| 100 }); | 143 var pointerAction = pointerActions[0]; |
| 144 pointerAction.actions = []; |
| 145 pointerAction.actions.push( |
| 146 {'name': 'pointerDown', 'x': xPosition, 'y': yPosition}); |
| 147 for (var i = 1; i < targetSelectorList.length; i++) { |
| 148 scrollPageIfNeeded(targetSelectorList[i], document); |
| 149 target = document.querySelector(targetSelectorList[i]); |
| 150 targetRect = target.getBoundingClientRect(); |
| 151 xPosition = targetRect.left + boundaryOffset; |
| 152 yPosition = targetRect.top + boundaryOffset; |
| 153 pointerAction.actions.push( |
| 154 {'name': 'pointerMove', 'x': xPosition, 'y': yPosition}); |
| 155 } |
| 156 pointerAction.actions.push({'name': 'pointerUp'}); |
| 157 chrome.gpuBenchmarking.pointerActionSequence(pointerActions, resolve); |
| 101 } else { | 158 } else { |
| 102 reject(); | 159 reject(); |
| 103 } | 160 } |
| 104 }); | 161 }); |
| 105 } | 162 } |
| 106 | 163 |
| 107 function mouseDragInTarget(targetSelector) { | 164 function mouseDragInTarget(targetSelector) { |
| 108 return mouseDragInTargets([targetSelector, targetSelector]); | 165 return mouseDragInTargets([targetSelector, targetSelector]); |
| 109 } | 166 } |
| 110 | 167 |
| 111 function mouseWheelScroll(direction) { | 168 function mouseWheelScroll(targetSelector, direction) { |
| 112 return new Promise(function(resolve, reject) { | 169 return new Promise(function(resolve, reject) { |
| 113 if (window.eventSender) { | 170 if (window.eventSender) { |
| 171 scrollPageIfNeeded(targetSelector, document); |
| 172 var target = document.querySelector(targetSelector); |
| 173 var targetRect = target.getBoundingClientRect(); |
| 174 eventSender.mouseMoveTo( |
| 175 targetRect.left + boundaryOffset, targetRect.top + boundaryOffset); |
| 176 eventSender.mouseDown(0); |
| 177 eventSender.mouseUp(0); |
| 114 if (direction == 'down') | 178 if (direction == 'down') |
| 115 eventSender.continuousMouseScrollBy(-scrollOffset, 0); | 179 eventSender.continuousMouseScrollBy(-scrollOffset, 0); |
| 116 else if (direction == 'right') | 180 else if (direction == 'right') |
| 117 eventSender.continuousMouseScrollBy(0, -scrollOffset); | 181 eventSender.continuousMouseScrollBy(0, -scrollOffset); |
| 118 else | 182 else |
| 119 reject(); | 183 reject(); |
| 120 resolve(); | 184 resolve(); |
| 121 } else { | 185 } else { |
| 122 reject(); | 186 reject(); |
| 123 } | 187 } |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 191 | 255 |
| 192 function pinchZoomInTarget(targetSelector, scale) { | 256 function pinchZoomInTarget(targetSelector, scale) { |
| 193 return new Promise(function(resolve, reject) { | 257 return new Promise(function(resolve, reject) { |
| 194 if (window.chrome && chrome.gpuBenchmarking) { | 258 if (window.chrome && chrome.gpuBenchmarking) { |
| 195 scrollPageIfNeeded(targetSelector, document); | 259 scrollPageIfNeeded(targetSelector, document); |
| 196 var target = document.querySelector(targetSelector); | 260 var target = document.querySelector(targetSelector); |
| 197 var targetRect = target.getBoundingClientRect(); | 261 var targetRect = target.getBoundingClientRect(); |
| 198 var xPosition = targetRect.left + (targetRect.width/2); | 262 var xPosition = targetRect.left + (targetRect.width/2); |
| 199 var yPosition1 = targetRect.top + (targetRect.height/2) - 10; | 263 var yPosition1 = targetRect.top + (targetRect.height/2) - 10; |
| 200 var yPosition2 = targetRect.top + (targetRect.height/2) + 10; | 264 var yPosition2 = targetRect.top + (targetRect.height/2) + 10; |
| 201 var text = '[{"source": "touch", "actions": [{ "name": "pointerDown", "x":
' + xPosition +', "y":' + yPosition1 +' },'; | 265 var pointerActions = [{'source': 'touch'}, {'source': 'touch'}]; |
| 202 for (var offset=10; offset<80; offset+=10) | 266 var pointerAction1 = pointerActions[0]; |
| 203 text += '{ "name": "pointerMove", "x":' + xPosition +', "y":' + (yPositi
on1 - offset) +' },'; | 267 var pointerAction2 = pointerActions[1]; |
| 204 text += '{ "name": "pointerUp" }]}, {"source": "touch", "actions": [{ "nam
e": "pointerDown", "x":' + xPosition +', "y":' + yPosition2 +' },'; | 268 pointerAction1.actions = []; |
| 205 for (var offset=10; offset<80; offset+=10) | 269 pointerAction2.actions = []; |
| 206 text += '{ "name": "pointerMove", "x":' + xPosition +', "y":' + (yPositi
on2 + offset) +' },'; | 270 pointerAction1.actions.push( |
| 207 text += '{ "name": "pointerUp" }]}]'; | 271 {'name': 'pointerDown', 'x': xPosition, 'y': yPosition1}); |
| 208 chrome.gpuBenchmarking.pointerActionSequence(JSON.parse(text), resolve); | 272 pointerAction2.actions.push( |
| 273 {'name': 'pointerDown', 'x': xPosition, 'y': yPosition2}); |
| 274 for (var offset = 10; offset < 80; offset += 10) { |
| 275 pointerAction1.actions.push({ |
| 276 'name': 'pointerMove', |
| 277 'x': xPosition, |
| 278 'y': (yPosition1 - offset) |
| 279 }); |
| 280 pointerAction2.actions.push({ |
| 281 'name': 'pointerMove', |
| 282 'x': xPosition, |
| 283 'y': (yPosition2 + offset) |
| 284 }); |
| 285 } |
| 286 pointerAction1.actions.push({'name': 'pointerUp'}); |
| 287 pointerAction2.actions.push({'name': 'pointerUp'}); |
| 288 chrome.gpuBenchmarking.pointerActionSequence(pointerActions, resolve); |
| 209 } else { | 289 } else { |
| 210 reject(); | 290 reject(); |
| 211 } | 291 } |
| 212 }); | 292 }); |
| 213 } | 293 } |
| 214 | 294 |
| 215 // Pen inputs. | 295 // Pen inputs. |
| 216 function penMoveToDocument() { | 296 function penMoveToDocument() { |
| 217 return new Promise(function(resolve, reject) { | 297 return new Promise(function(resolve, reject) { |
| 218 if (window.eventSender) { | 298 if (window.eventSender) { |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 278 } | 358 } |
| 279 | 359 |
| 280 { | 360 { |
| 281 var pointerevent_automation = async_test("PointerEvent Automation"); | 361 var pointerevent_automation = async_test("PointerEvent Automation"); |
| 282 // Defined in every test and should return a promise that gets resolved when i
nput is finished. | 362 // Defined in every test and should return a promise that gets resolved when i
nput is finished. |
| 283 inject_input().then(function() { | 363 inject_input().then(function() { |
| 284 pointerevent_automation.done(); | 364 pointerevent_automation.done(); |
| 285 }); | 365 }); |
| 286 } | 366 } |
| 287 | 367 |
| OLD | NEW |