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

Unified Diff: third_party/WebKit/LayoutTests/inspector-protocol/timeline/fetch-as-stream.js

Issue 2942573003: [DevTools] New harness for inspector-protocol layout tests (Closed)
Patch Set: Protocol -> dp 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/timeline/fetch-as-stream.js
diff --git a/third_party/WebKit/LayoutTests/inspector-protocol/timeline/fetch-as-stream.js b/third_party/WebKit/LayoutTests/inspector-protocol/timeline/fetch-as-stream.js
new file mode 100644
index 0000000000000000000000000000000000000000..adb92875cb4bc3aeeb4dd9097dd9ee187a1fef5c
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/inspector-protocol/timeline/fetch-as-stream.js
@@ -0,0 +1,96 @@
+(async function(testRunner) {
+ let {page, session, dp} = await testRunner.startHTML(`
+ <style>
+ div#test {
+ display: none;
+ background-color: blue;
+ width: 100px;
+ height: 100px;
+ }
+ </style>
+ <div id='test'>
+ </div>
+ `, '');
+
+ var tracingHelper = (await testRunner.loadScript('../resources/tracing-test.js'))(testRunner, session);
+ tracingHelper.startTracingAndSaveAsStream(onStart);
+
+ function onStart() {
+ session.evaluate(`
+ (function performActions()
+ {
+ var element = document.getElementById('test');
+ element.style.display = 'block';
+ var unused = element.clientWidth;
+ })();
+ `).then(evalDone);
+ }
+
+ function evalDone() {
+ tracingHelper.stopTracingAndReturnStream(onStop);
+ }
+
+ function onStop(streamHandle) {
+ var data1;
+ tracingHelper.retrieveStream(streamHandle, null, null, onGotStream1);
+
+ function onGotStream1(data) {
+ data1 = data;
+ tracingHelper.retrieveStream(streamHandle, 0, 1000, onGotStream2);
+ }
+
+ function onGotStream2(data) {
+ if (data1 !== data)
+ testRunner.log('FAIL: got different data for cunked vs. non-chunked reads');
+ dp.IO.close({ handle: streamHandle }).then(onCloseDone);
+ }
+
+ function onCloseDone(response) {
+ testRunner.log('Error after legit close: ' + JSON.stringify(response.error));
+ dp.IO.read({ handle: streamHandle }).then(onReadAfterClose);
+ }
+
+ function onReadAfterClose(response) {
+ testRunner.log('Error after illegal read: ' + JSON.stringify(response.error));
+ dp.IO.close({ handle: streamHandle }).then(onCloseAfterClose);
+ }
+
+ function onCloseAfterClose(response) {
+ testRunner.log('Error after illegal close: ' + JSON.stringify(response.error));
+ var trace = JSON.parse(data1);
+ performEventsSanityCheck(trace['traceEvents']);
+ testRunner.log('Metadata: ' + typeof trace['metadata'] + (trace['metadata'] ? ', not null' : ''));
+ testRunner.completeTest();
+ }
+ }
+
+ function assertGreaterOrEqual(a, b, message) {
+ if (a >= b)
+ return;
+ testRunner.log(message + ' (' + a + ' < ' + b + ')');
+ testRunner.completeTest();
+ }
+
+ function performEventsSanityCheck(events) {
+ var phaseComplete = 0;
+
+ var knownEvents = {
+ 'MessageLoop::PostTask': 0,
+ 'FunctionCall': 0,
+ 'UpdateLayoutTree': 0,
+ 'Layout': 0
+ };
+
+ for (var i = 0; i < events.length; ++i) {
+ var event = events[i];
+ if (event.phase === 'X')
+ ++phaseComplete;
+ if (event.name in knownEvents)
+ ++knownEvents[event.name];
+ }
+ assertGreaterOrEqual(events.length, 10, 'Too few trace events recorded');
+ assertGreaterOrEqual(knownEvents['UpdateLayoutTree'], 1, 'Too few UpdateLayoutTree events');
+ assertGreaterOrEqual(knownEvents['Layout'], 1, 'Too few Layout events');
+ testRunner.log('Event sanity test done');
+ }
+})

Powered by Google App Engine
This is Rietveld 408576698