3 <script src="../../http/tests/inspector/inspector-test.js"></script>
4 <script src="../../http/tests/inspector/timeline-test.js"></script>
5 <script src="../tracing-test.js"></script>
10 function runTestWithDataAndCheck(input, expectedOutput)
12 var model = InspectorTest.tracingTimelineModel();
14 function createFileReader(file, delegate)
16 return new InspectorTest.FakeFileReader(input, delegate, model.saveToFile.bind(model));
19 function createFileWriter()
21 return new InspectorTest.StringOutputStream(checkSaveData);
24 function checkSaveData(output)
26 var saveData = JSON.parse(output);
27 InspectorTest.assertEquals(JSON.stringify(expectedOutput), JSON.stringify(saveData), "saved data is not equal to restored");
30 InspectorTest.override(model, "_createFileReader", createFileReader);
31 InspectorTest.override(model, "_createFileWriter", createFileWriter);
33 model.loadFromFile({}, new WebInspector.Progress());
36 function runTestOnMalformedInput(input)
38 InspectorTest.tracingModel().reset();
39 var model = InspectorTest.tracingTimelineModel();
41 function createFileReader(file, delegate)
43 return new InspectorTest.FakeFileReader(input, delegate, checkLoadedData);
46 function checkLoadedData(data)
48 InspectorTest.assertTrue(model.isEmpty());
51 InspectorTest.override(model, "_createFileReader", createFileReader);
52 model.loadFromFile({}, new WebInspector.Progress());
55 InspectorTest.runTestSuite([
56 function testNormal(next)
58 var data = [{"args":{"number":32},"cat":"__metadata","name":"num_cpus","ph":"M","pid":32127,"tid":0,"ts":0},
59 {"args":{"sort_index":-5},"cat":"__metadata","name":"process_sort_index","ph":"M","pid":32127,"tid":12,"ts":0},
60 {"args":{"name":"Renderer"},"cat":"__metadata","name":"process_name","ph":"M","pid":32127,"tid":12,"ts":0},
61 {"args":{"sort_index":-1},"cat":"__metadata","name":"thread_sort_index","ph":"M","pid":32127,"tid":11,"ts":0},
62 {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"B","pid":32120,"tid":9,"ts":95904702436,"tts":1161841},
63 {"args":{"number":32},"cat":"__metadata","name":"num_cpus","ph":"M","pid":32120,"tid":0,"ts":0},
64 {"args":{"sort_index":-5},"cat":"__metadata","name":"process_sort_index","ph":"M","pid":32120,"tid":10,"ts":0},
65 {"args":{"name":"Renderer"},"cat":"__metadata","name":"process_name","ph":"M","pid":32120,"tid":10,"ts":0},
66 {"args":{"sort_index":-1},"cat":"__metadata","name":"thread_sort_index","ph":"M","pid":32120,"tid":9,"ts":0},
67 {"args":{"name":"CrRendererMain"},"cat":"__metadata","name":"thread_name","ph":"M","pid":32120,"tid":9,"ts":0},
68 {"args":{"data":{"frame":"0x1cfa1f6a4000","scriptId":"52","scriptLine":664,"scriptName":"http://example.com/foo.js"}},"cat":"disabled-by-default-devtools.timeline","dur":21,"name":"FunctionCall","ph":"X","pid":32169,"tdur":20,"tid":35,"ts":95904848776,"tts":2613659},
69 {"args":{"stack":[]},"cat":"disabled-by-default-devtools.timeline.stack","name":"CallStack","ph":"I","pid":32169,"s":"g","tid":35,"ts":95904848783,"tts":2613665},
70 {"args":{"data":{"frame":"0x1cfa1f6a4000","scriptId":"52","scriptLine":664,"scriptName":"http://example.com/foo.js"}},"cat":"disabled-by-default-devtools.timeline","dur":20,"name":"FunctionCall","ph":"X","pid":32169,"tdur":18,"tid":35,"ts":95904848821,"tts":2613704},
71 {"args":{"stack":[]},"cat":"disabled-by-default-devtools.timeline.stack","name":"CallStack","ph":"I","pid":32169,"s":"g","tid":35,"ts":95904848827,"tts":2613710},
72 {"args":{"data":{"frame":"0x1cfa1f6a4000","scriptId":"52","scriptLine":664,"scriptName":"http://example.com/foo.js"}},"cat":"disabled-by-default-devtools.timeline","dur":19,"name":"FunctionCall","ph":"X","pid":32169,"tdur":18,"tid":35,"ts":95904848866,"tts":2613749},
73 {"args":{"stack":[]},"cat":"disabled-by-default-devtools.timeline.stack","name":"CallStack","ph":"I","pid":32169,"s":"g","tid":35,"ts":95904848872,"tts":2613755},
74 {"args":{"data":{"frame":"0x1cfa1f6a4000","scriptId":"52","scriptLine":664,"scriptName":"http://example.com/foo.js"}},"cat":"disabled-by-default-devtools.timeline","dur":19,"name":"FunctionCall","ph":"X","pid":32169,"tdur":19,"tid":35,"ts":95904848909,"tts":2613791},
75 {"args":{"stack":[]},"cat":"disabled-by-default-devtools.timeline.stack","name":"CallStack","ph":"I","pid":32169,"s":"g","tid":35,"ts":95904848915,"tts":2613797},
76 {"args":{"data":{"frame":"0x1cfa1f6a4000","scriptId":"52","scriptLine":664,"scriptName":"http://example.com/foo.js"}},"cat":"disabled-by-default-devtools.timeline","dur":21,"name":"FunctionCall","ph":"X","pid":32169,"tdur":19,"tid":35,"ts":95904848954,"tts":2613837},
77 {"args":{"stack":[]},"cat":"disabled-by-default-devtools.timeline.stack","name":"CallStack","ph":"I","pid":32169,"s":"g","tid":35,"ts":95904848961,"tts":2613843},
78 {"args":{"sessionId":"26.5"},"cat":"disabled-by-default-devtools.timeline","name":"TracingStartedInPage","ph":"I","pid":32157,"s":"g","tid":26,"ts":95904694459,"tts":1432596},
79 {"args":{"layerTreeId":1,"sessionId":"26.5"},"cat":"disabled-by-default-devtools.timeline","name":"SetLayerTreeId","ph":"I","pid":32157,"s":"g","tid":26,"ts":95904694693,"tts":1432692},
80 {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"E","pid":32157,"tid":26,"ts":95904694731,"tts":1432729},
81 {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"B","pid":32157,"tid":26,"ts":95904694789,"tts":1432787},
82 {"args":{"data":{"type":"beforeunload"}},"cat":"disabled-by-default-devtools.timeline","dur":16,"name":"EventDispatch","ph":"X","pid":32157,"tdur":13,"tid":26,"ts":95904695027,"tts":1433025},
83 {"args":{"data":{"frame":"0x30acf4ca4000","requestId":"26.422","requestMethod":"GET","url":"http://localhost/bar.html?ws=E16865E8B9D1"}},"cat":"disabled-by-default-devtools.timeline","name":"ResourceSendRequest","ph":"I","pid":32157,"s":"g","tid":26,"ts":95904695434,"tts":1433433},
84 {"args":{"stack":null},"cat":"disabled-by-default-devtools.timeline.stack","name":"CallStack","ph":"I","pid":32157,"s":"g","tid":26,"ts":95904695455,"tts":1433453},
85 {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"E","pid":32157,"tid":26,"ts":95904695551,"tts":1433549},
86 {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"B","pid":32157,"tid":26,"ts":95904696695,"tts":1433692},
87 {"args":{},"cat":"disabled-by-default-devtools.timeline","name":"Program","ph":"E","pid":32157,"tid":26,"ts":95904696737,"tts":1433733},
88 {"args":{"data":{"frame":"0x30acf4ca4000","mimeType":"text/html","requestId":"26.422","statusCode":200}},"cat":"disabled-by-default-devtools.timeline","name":"ResourceReceiveResponse","ph":"I","pid":32157,"s":"g","tid":26,"ts":95904699823,"tts":1433961},
89 {"args":{"data":{"frame":"0x30acf4ca4000","identifier":406}},"cat":"disabled-by-default-devtools.timeline","name":"WebSocketDestroy","ph":"I","pid":32157,"s":"g","tid":26,"ts":95904701483,"tts":1435612},
90 {"args":{"stack":null},"cat":"disabled-by-default-devtools.timeline.stack","name":"CallStack","ph":"I","pid":32157,"s":"g","tid":26,"ts":95904701489,"tts":1435618},
91 {"args":{"number":32},"cat":"__metadata","name":"num_cpus","ph":"M","pid":32072,"tid":0,"ts":0},
92 {"args":{"sort_index":-6},"cat":"__metadata","name":"process_sort_index","ph":"M","pid":32072,"tid":32096,"ts":0},
93 {"args":{"name":"Browser"},"cat":"__metadata","name":"process_name","ph":"M","pid":32072,"tid":32096,"ts":0},
94 {"args":{"name":"CrBrowserMain"},"cat":"__metadata","name":"thread_name","ph":"M","pid":32072,"tid":32072,"ts":0}
96 var input = JSON.stringify(data);
97 runTestWithDataAndCheck(input, data);
101 function testBroken(next)
103 var data = [{"args":{"number":32},"cat":"__metadata","name":"num_cpus","ph":"M","pid":32127,"tid":0,"ts":0,"t\"y}p}e\\":"UnknownRecordType"}];
104 runTestOnMalformedInput(JSON.stringify(data));
108 function testMalformedJSON(next)
110 runTestOnMalformedInput("]");
119 <body onload="runTest()">
121 Tests tracing based Timeline save/load functionality.