Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(12)

Side by Side Diff: third_party/WebKit/LayoutTests/external/wpt_automation/pointerevents/pointerevent_common_input.js

Issue 2621353003: Replace mouse actions in pointer event tests with pointerActionSequence (Closed)
Patch Set: pointer mouse tests Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698