OLD | NEW |
(Empty) | |
| 1 (async function(testRunner) { |
| 2 let {page, session, dp} = await testRunner.startHTML(` |
| 3 <style> |
| 4 div#test { |
| 5 display: none; |
| 6 background-color: blue; |
| 7 width: 100px; |
| 8 height: 100px; |
| 9 } |
| 10 </style> |
| 11 <div id='test'> |
| 12 </div> |
| 13 `, ''); |
| 14 |
| 15 var tracingHelper = (await testRunner.loadScript('../resources/tracing-test.js
'))(testRunner, session); |
| 16 tracingHelper.startTracingAndSaveAsStream(onStart); |
| 17 |
| 18 function onStart() { |
| 19 session.evaluate(` |
| 20 (function performActions() |
| 21 { |
| 22 var element = document.getElementById('test'); |
| 23 element.style.display = 'block'; |
| 24 var unused = element.clientWidth; |
| 25 })(); |
| 26 `).then(evalDone); |
| 27 } |
| 28 |
| 29 function evalDone() { |
| 30 tracingHelper.stopTracingAndReturnStream(onStop); |
| 31 } |
| 32 |
| 33 function onStop(streamHandle) { |
| 34 var data1; |
| 35 tracingHelper.retrieveStream(streamHandle, null, null, onGotStream1); |
| 36 |
| 37 function onGotStream1(data) { |
| 38 data1 = data; |
| 39 tracingHelper.retrieveStream(streamHandle, 0, 1000, onGotStream2); |
| 40 } |
| 41 |
| 42 function onGotStream2(data) { |
| 43 if (data1 !== data) |
| 44 testRunner.log('FAIL: got different data for cunked vs. non-chunked read
s'); |
| 45 dp.IO.close({ handle: streamHandle }).then(onCloseDone); |
| 46 } |
| 47 |
| 48 function onCloseDone(response) { |
| 49 testRunner.log('Error after legit close: ' + JSON.stringify(response.error
)); |
| 50 dp.IO.read({ handle: streamHandle }).then(onReadAfterClose); |
| 51 } |
| 52 |
| 53 function onReadAfterClose(response) { |
| 54 testRunner.log('Error after illegal read: ' + JSON.stringify(response.erro
r)); |
| 55 dp.IO.close({ handle: streamHandle }).then(onCloseAfterClose); |
| 56 } |
| 57 |
| 58 function onCloseAfterClose(response) { |
| 59 testRunner.log('Error after illegal close: ' + JSON.stringify(response.err
or)); |
| 60 var trace = JSON.parse(data1); |
| 61 performEventsSanityCheck(trace['traceEvents']); |
| 62 testRunner.log('Metadata: ' + typeof trace['metadata'] + (trace['metadata'
] ? ', not null' : '')); |
| 63 testRunner.completeTest(); |
| 64 } |
| 65 } |
| 66 |
| 67 function assertGreaterOrEqual(a, b, message) { |
| 68 if (a >= b) |
| 69 return; |
| 70 testRunner.log(message + ' (' + a + ' < ' + b + ')'); |
| 71 testRunner.completeTest(); |
| 72 } |
| 73 |
| 74 function performEventsSanityCheck(events) { |
| 75 var phaseComplete = 0; |
| 76 |
| 77 var knownEvents = { |
| 78 'MessageLoop::PostTask': 0, |
| 79 'FunctionCall': 0, |
| 80 'UpdateLayoutTree': 0, |
| 81 'Layout': 0 |
| 82 }; |
| 83 |
| 84 for (var i = 0; i < events.length; ++i) { |
| 85 var event = events[i]; |
| 86 if (event.phase === 'X') |
| 87 ++phaseComplete; |
| 88 if (event.name in knownEvents) |
| 89 ++knownEvents[event.name]; |
| 90 } |
| 91 assertGreaterOrEqual(events.length, 10, 'Too few trace events recorded'); |
| 92 assertGreaterOrEqual(knownEvents['UpdateLayoutTree'], 1, 'Too few UpdateLayo
utTree events'); |
| 93 assertGreaterOrEqual(knownEvents['Layout'], 1, 'Too few Layout events'); |
| 94 testRunner.log('Event sanity test done'); |
| 95 } |
| 96 }) |
OLD | NEW |