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

Side by Side Diff: third_party/WebKit/LayoutTests/inspector-protocol/input/eventTimestamp.js

Issue 2961493002: [DevTools] Migrate inspector-protocol/{input,network} tests to new harness (Closed)
Patch Set: minor fixes Created 3 years, 5 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
(Empty)
1 (async function(testRunner) {
2 let {page, session, dp} = await testRunner.startBlank(``);
3
4 await session.evaluate(`
5 var logs = [];
6 function log(text) {
7 logs.push(text);
8 }
9
10 var expectedOffsets = [];
11 var receivedTimestamps = [];
12 var resolve;
13 var verifyTimestampsPromise = new Promise(f => resolve = f);
14
15 function logEvent(event) {
16 log('-----Event-----');
17 log('type: ' + event.type);
18 receivedTimestamps.push(event.timeStamp);
19 if (receivedTimestamps.length === expectedOffsets.length)
20 verifyTimestamps();
21 }
22
23 function verifyTimestamps() {
24 log('-----Verify-----');
25 log('Received ' + receivedTimestamps.length + ' timestamps');
26
27 // Event.timeStamp values are in milliseconds
28 var receivedOffsets = receivedTimestamps.map(t => t - receivedTimestamps[0 ]);
29 for (var i = 0; i < receivedOffsets.length; ++i) {
30 if (isNear(receivedOffsets[i], expectedOffsets[i]))
31 log('timeStamps offsets is as expected.');
32 else
33 log('timeStamp offset is expected ' + expectedOffsets[i] + ' but it is :' + receivedOffsets[i]);
34 }
35
36 function isNear(a, b) {
37 var epsilon = 0.5;
38 return Math.abs(b - a) < epsilon;
39 }
40
41 resolve(logs.join('\\n'));
42 }
43
44 window.addEventListener('keydown', logEvent);
45 window.addEventListener('mousedown', logEvent);
46 window.addEventListener('touchstart', logEvent);
47 `);
48
49 // We send epoch timestamp but expect to receive high-res timestamps
50 var baseEpochTimestamp = Date.now() / 1000; // in seconds
51 var offsets = [0, 5, 10, 15, 20, 25];
52 var sentTimestamps = offsets.map(offset => baseEpochTimestamp + offset);
53
54 var offsetsMs = offsets.map(offset => 1000 * offset);
55 await session.evaluate(`
56 expectedOffsets = [${offsetsMs.join(', ')}];
57 `);
58
59 function dumpError(message) {
60 if (message.error)
61 testRunner.log('Error: ' + message.error.message);
62 }
63
64 dumpError(await dp.Input.dispatchKeyEvent({
65 type: 'rawKeyDown',
66 timestamp: sentTimestamps[0]
67 }));
68 dumpError(await dp.Input.dispatchKeyEvent({
69 type: 'rawKeyDown',
70 timestamp: sentTimestamps[1]
71 }));
72 dumpError(await dp.Input.dispatchMouseEvent({
73 type: 'mousePressed',
74 timestamp: sentTimestamps[2],
75 button: 'left',
76 clickCount: 1,
77 x: 100,
78 y: 200
79 }));
80 dumpError(await dp.Input.dispatchMouseEvent({
81 type: 'mousePressed',
82 timestamp: sentTimestamps[3],
83 button: 'left',
84 clickCount: 1,
85 x: 100,
86 y: 200
87 }));
88 dumpError(await dp.Input.dispatchTouchEvent({
89 type: 'touchStart',
90 timestamp: sentTimestamps[4],
91 touchPoints: [{
92 state: 'touchPressed',
93 x: 100,
94 y: 200
95 }]
96 }));
97 dumpError(await dp.Input.dispatchTouchEvent({
98 type: 'touchStart',
99 timestamp: sentTimestamps[5],
100 touchPoints: [{
101 state: 'touchPressed',
102 x: 100,
103 y: 100
104 }]
105 }));
106
107 testRunner.log(await session.evaluateAsync('verifyTimestampsPromise'));
108 testRunner.completeTest();
109 })
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698