Chromium Code Reviews| 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 {"source": "mouse", |
| 26 "actions": [ | |
| 27 { "name": "pointerMove", "x": 0, "y": 0 } | |
| 28 ]}], resolve); | |
| 26 } else { | 29 } else { |
| 27 reject(); | 30 reject(); |
| 28 } | 31 } |
| 29 }); | 32 }); |
| 30 } | 33 } |
| 31 | 34 |
| 32 function mouseMoveIntoTarget(targetSelector, targetFrame) { | 35 function mouseMoveIntoTarget(targetSelector, targetFrame) { |
| 33 var targetDocument = document; | 36 var targetDocument = document; |
| 34 var frameLeft = 0; | 37 var frameLeft = 0; |
| 35 var frameTop = 0; | 38 var frameTop = 0; |
| 36 if (targetFrame !== undefined) { | 39 if (targetFrame !== undefined) { |
| 37 targetDocument = targetFrame.contentDocument; | 40 targetDocument = targetFrame.contentDocument; |
| 38 var frameRect = targetFrame.getBoundingClientRect(); | 41 var frameRect = targetFrame.getBoundingClientRect(); |
| 39 frameLeft = frameRect.left; | 42 frameLeft = frameRect.left; |
| 40 frameTop = frameRect.top; | 43 frameTop = frameRect.top; |
| 41 } | 44 } |
| 42 return new Promise(function(resolve, reject) { | 45 return new Promise(function(resolve, reject) { |
| 43 if (window.eventSender) { | 46 if (window.chrome && chrome.gpuBenchmarking) { |
| 44 scrollPageIfNeeded(targetSelector, targetDocument); | 47 scrollPageIfNeeded(targetSelector, targetDocument); |
| 45 var target = targetDocument.querySelector(targetSelector); | 48 var target = targetDocument.querySelector(targetSelector); |
| 46 var targetRect = target.getBoundingClientRect(); | 49 var targetRect = target.getBoundingClientRect(); |
| 47 eventSender.mouseMoveTo(frameLeft + targetRect.left + boundaryOffset, fram eTop + targetRect.top + boundaryOffset); | 50 var xPosition = frameLeft + targetRect.left + boundaryOffset; |
| 48 resolve(); | 51 var yPosition = frameTop + targetRect.top + boundaryOffset; |
| 52 chrome.gpuBenchmarking.pointerActionSequence( [ | |
| 53 {"source": "mouse", | |
| 54 "actions": [ | |
| 55 { "name": "pointerMove", "x": xPosition, "y": yPosition } | |
| 56 ]}], resolve); | |
| 49 } else { | 57 } else { |
| 50 reject(); | 58 reject(); |
| 51 } | 59 } |
| 52 }); | 60 }); |
| 53 } | 61 } |
| 54 | 62 |
| 55 function mouseButtonPress(button) { | 63 function mouseChordedButtonPress(targetSelector) { |
| 56 return new Promise(function(resolve, reject) { | 64 return new Promise(function(resolve, reject) { |
| 57 if (window.eventSender) { | 65 if (window.chrome && chrome.gpuBenchmarking) { |
| 58 eventSender.mouseDown(button); | 66 scrollPageIfNeeded(targetSelector, document); |
| 59 resolve(); | 67 var target = document.querySelector(targetSelector); |
| 60 } else { | 68 var targetRect = target.getBoundingClientRect(); |
| 61 reject(); | 69 var xPosition = targetRect.left + boundaryOffset; |
| 62 } | 70 var yPosition = targetRect.top + boundaryOffset; |
| 63 }); | 71 chrome.gpuBenchmarking.pointerActionSequence( [ |
| 64 } | 72 {"source": "mouse", |
| 65 | 73 "actions": [ |
| 66 function mouseButtonRelease(button) { | 74 { "name": "pointerDown", "x": xPosition, "y": yPosition, "button": " left"}, |
| 67 return new Promise(function(resolve, reject) { | 75 { "name": "pointerDown", "x": xPosition, "y": yPosition, "button": " middle"}, |
| 68 if (window.eventSender) { | 76 { "name": "pointerUp", "button": "middle"}, |
| 69 eventSender.mouseUp(button); | 77 { "name": "pointerUp", "button": "left"} |
| 70 resolve(); | 78 ]}], resolve); |
| 71 } else { | 79 } else { |
| 72 reject(); | 80 reject(); |
| 73 } | 81 } |
| 74 }); | 82 }); |
| 75 } | 83 } |
| 76 | 84 |
| 77 function mouseClickInTarget(targetSelector, targetFrame) { | 85 function mouseClickInTarget(targetSelector, targetFrame) { |
| 78 return mouseMoveIntoTarget(targetSelector, targetFrame).then(function() { | 86 var targetDocument = document; |
| 79 return new Promise(function(resolve, reject) { | 87 var frameLeft = 0; |
| 80 if (window.eventSender) { | 88 var frameTop = 0; |
| 81 eventSender.mouseDown(0); | 89 if (targetFrame !== undefined) { |
| 82 eventSender.mouseUp(0); | 90 targetDocument = targetFrame.contentDocument; |
| 83 resolve(); | 91 var frameRect = targetFrame.getBoundingClientRect(); |
| 84 } else { | 92 frameLeft = frameRect.left; |
| 85 reject(); | 93 frameTop = frameRect.top; |
| 86 } | 94 } |
| 87 }); | 95 return new Promise(function(resolve, reject) { |
| 96 if (window.chrome && chrome.gpuBenchmarking) { | |
| 97 scrollPageIfNeeded(targetSelector, targetDocument); | |
|
tdresser
2017/01/19 14:41:57
Interesting - so we need to scroll pages to click
lanwei
2017/01/19 19:32:53
We always use this function to make sure we can cl
| |
| 98 var target = targetDocument.querySelector(targetSelector); | |
| 99 var targetRect = target.getBoundingClientRect(); | |
| 100 var xPosition = frameLeft + targetRect.left + boundaryOffset; | |
| 101 var yPosition = frameTop + targetRect.top + boundaryOffset; | |
| 102 chrome.gpuBenchmarking.pointerActionSequence( [ | |
| 103 {"source": "mouse", | |
| 104 "actions": [ | |
| 105 { "name": "pointerMove", "x": xPosition, "y": yPosition }, | |
| 106 { "name": "pointerDown", "x": xPosition, "y": yPosition }, | |
| 107 { "name": "pointerUp" } | |
| 108 ]}], resolve); | |
| 109 } else { | |
| 110 reject(); | |
| 111 } | |
| 88 }); | 112 }); |
| 89 } | 113 } |
| 90 | 114 |
| 91 function mouseDragInTargets(targetSelectorList) { | 115 function mouseDragInTargets(targetSelectorList) { |
| 92 return new Promise(function(resolve, reject) { | 116 return new Promise(function(resolve, reject) { |
| 93 if (window.eventSender) { | 117 if (window.chrome && chrome.gpuBenchmarking) { |
| 94 mouseMoveIntoTarget(targetSelectorList[0]).then(function() { | 118 scrollPageIfNeeded(targetSelectorList[0], document); |
| 95 eventSender.mouseDown(0); | 119 var target = document.querySelector(targetSelectorList[0]); |
| 96 for (var i=1; i<targetSelectorList.length; i++) | 120 var targetRect = target.getBoundingClientRect(); |
| 97 mouseMoveIntoTarget(targetSelectorList[i]); | 121 var xPosition = targetRect.left + boundaryOffset; |
| 98 eventSender.mouseUp(0); | 122 var yPosition = targetRect.top + boundaryOffset; |
| 99 resolve(); | 123 var text = '[{"source": "mouse", "actions": [{ "name": "pointerDown", "x": '+ |
| 100 }); | 124 xPosition +', "y":'+yPosition+' },'; |
| 125 for (var i=1; i<targetSelectorList.length; i++) { | |
| 126 scrollPageIfNeeded(targetSelectorList[i], document); | |
| 127 target = document.querySelector(targetSelectorList[i]); | |
| 128 targetRect = target.getBoundingClientRect(); | |
| 129 xPosition = targetRect.left + boundaryOffset; | |
| 130 yPosition = targetRect.top + boundaryOffset; | |
| 131 text += '{ "name": "pointerMove", "x":'+ | |
| 132 xPosition +', "y":'+yPosition+' },'; | |
| 133 } | |
| 134 text += '{ "name": "pointerUp" }]}]'; | |
| 135 console.log(text); | |
| 136 chrome.gpuBenchmarking.pointerActionSequence(JSON.parse(text), resolve); | |
|
tdresser
2017/01/19 14:41:57
Can't we build up the json as a JS object, not a s
lanwei
2017/01/19 19:32:53
Done.
| |
| 101 } else { | 137 } else { |
| 102 reject(); | 138 reject(); |
| 103 } | 139 } |
| 104 }); | 140 }); |
| 105 } | 141 } |
| 106 | 142 |
| 107 function mouseDragInTarget(targetSelector) { | 143 function mouseDragInTarget(targetSelector) { |
| 108 return mouseDragInTargets([targetSelector, targetSelector]); | 144 return mouseDragInTargets([targetSelector, targetSelector]); |
| 109 } | 145 } |
| 110 | 146 |
| 111 function mouseWheelScroll(direction) { | 147 function mouseWheelScroll(targetSelector, direction) { |
| 112 return new Promise(function(resolve, reject) { | 148 return new Promise(function(resolve, reject) { |
| 113 if (window.eventSender) { | 149 if (window.eventSender) { |
| 150 scrollPageIfNeeded(targetSelector, document); | |
| 151 var target = document.querySelector(targetSelector); | |
| 152 var targetRect = target.getBoundingClientRect(); | |
| 153 eventSender.mouseMoveTo(targetRect.left + boundaryOffset, targetRect.top + boundaryOffset); | |
| 154 eventSender.mouseDown(0); | |
| 155 eventSender.mouseUp(0); | |
| 114 if (direction == 'down') | 156 if (direction == 'down') |
| 115 eventSender.continuousMouseScrollBy(-scrollOffset, 0); | 157 eventSender.continuousMouseScrollBy(-scrollOffset, 0); |
| 116 else if (direction == 'right') | 158 else if (direction == 'right') |
| 117 eventSender.continuousMouseScrollBy(0, -scrollOffset); | 159 eventSender.continuousMouseScrollBy(0, -scrollOffset); |
| 118 else | 160 else |
| 119 reject(); | 161 reject(); |
| 120 resolve(); | 162 resolve(); |
| 121 } else { | 163 } else { |
| 122 reject(); | 164 reject(); |
| 123 } | 165 } |
| (...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 278 } | 320 } |
| 279 | 321 |
| 280 { | 322 { |
| 281 var pointerevent_automation = async_test("PointerEvent Automation"); | 323 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. | 324 // Defined in every test and should return a promise that gets resolved when i nput is finished. |
| 283 inject_input().then(function() { | 325 inject_input().then(function() { |
| 284 pointerevent_automation.done(); | 326 pointerevent_automation.done(); |
| 285 }); | 327 }); |
| 286 } | 328 } |
| 287 | 329 |
| OLD | NEW |