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

Unified 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, 6 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/LayoutTests/inspector-protocol/input/eventTimestamp.js
diff --git a/third_party/WebKit/LayoutTests/inspector-protocol/input/eventTimestamp.js b/third_party/WebKit/LayoutTests/inspector-protocol/input/eventTimestamp.js
new file mode 100644
index 0000000000000000000000000000000000000000..ab819f4b47c764775a26ebc6e0e0b6ca97e72e20
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/inspector-protocol/input/eventTimestamp.js
@@ -0,0 +1,109 @@
+(async function(testRunner) {
+ let {page, session, dp} = await testRunner.startBlank(``);
+
+ await session.evaluate(`
+ var logs = [];
+ function log(text) {
+ logs.push(text);
+ }
+
+ var expectedOffsets = [];
+ var receivedTimestamps = [];
+ var resolve;
+ var verifyTimestampsPromise = new Promise(f => resolve = f);
+
+ function logEvent(event) {
+ log('-----Event-----');
+ log('type: ' + event.type);
+ receivedTimestamps.push(event.timeStamp);
+ if (receivedTimestamps.length === expectedOffsets.length)
+ verifyTimestamps();
+ }
+
+ function verifyTimestamps() {
+ log('-----Verify-----');
+ log('Received ' + receivedTimestamps.length + ' timestamps');
+
+ // Event.timeStamp values are in milliseconds
+ var receivedOffsets = receivedTimestamps.map(t => t - receivedTimestamps[0]);
+ for (var i = 0; i < receivedOffsets.length; ++i) {
+ if (isNear(receivedOffsets[i], expectedOffsets[i]))
+ log('timeStamps offsets is as expected.');
+ else
+ log('timeStamp offset is expected ' + expectedOffsets[i] + ' but it is:' + receivedOffsets[i]);
+ }
+
+ function isNear(a, b) {
+ var epsilon = 0.5;
+ return Math.abs(b - a) < epsilon;
+ }
+
+ resolve(logs.join('\\n'));
+ }
+
+ window.addEventListener('keydown', logEvent);
+ window.addEventListener('mousedown', logEvent);
+ window.addEventListener('touchstart', logEvent);
+ `);
+
+ // We send epoch timestamp but expect to receive high-res timestamps
+ var baseEpochTimestamp = Date.now() / 1000; // in seconds
+ var offsets = [0, 5, 10, 15, 20, 25];
+ var sentTimestamps = offsets.map(offset => baseEpochTimestamp + offset);
+
+ var offsetsMs = offsets.map(offset => 1000 * offset);
+ await session.evaluate(`
+ expectedOffsets = [${offsetsMs.join(', ')}];
+ `);
+
+ function dumpError(message) {
+ if (message.error)
+ testRunner.log('Error: ' + message.error.message);
+ }
+
+ dumpError(await dp.Input.dispatchKeyEvent({
+ type: 'rawKeyDown',
+ timestamp: sentTimestamps[0]
+ }));
+ dumpError(await dp.Input.dispatchKeyEvent({
+ type: 'rawKeyDown',
+ timestamp: sentTimestamps[1]
+ }));
+ dumpError(await dp.Input.dispatchMouseEvent({
+ type: 'mousePressed',
+ timestamp: sentTimestamps[2],
+ button: 'left',
+ clickCount: 1,
+ x: 100,
+ y: 200
+ }));
+ dumpError(await dp.Input.dispatchMouseEvent({
+ type: 'mousePressed',
+ timestamp: sentTimestamps[3],
+ button: 'left',
+ clickCount: 1,
+ x: 100,
+ y: 200
+ }));
+ dumpError(await dp.Input.dispatchTouchEvent({
+ type: 'touchStart',
+ timestamp: sentTimestamps[4],
+ touchPoints: [{
+ state: 'touchPressed',
+ x: 100,
+ y: 200
+ }]
+ }));
+ dumpError(await dp.Input.dispatchTouchEvent({
+ type: 'touchStart',
+ timestamp: sentTimestamps[5],
+ touchPoints: [{
+ state: 'touchPressed',
+ x: 100,
+ y: 100
+ }]
+ }));
+
+ testRunner.log(await session.evaluateAsync('verifyTimestampsPromise'));
+ testRunner.completeTest();
+})

Powered by Google App Engine
This is Rietveld 408576698