3 <script src="../../http/tests/inspector/inspector-test.js"></script>
4 <script src="heap-snapshot-test.js"></script>
9 WebInspector.inspectorView.showPanel("profiles");
10 var source = InspectorTest.createHeapSnapshotMockRaw();
11 var sourceStringified = JSON.stringify(source);
12 var partSize = sourceStringified.length >> 3;
14 function injectMockProfile(callback) {
15 var dispatcher = InspectorBackend._connection._dispatchers["HeapProfiler"]._dispatcher;
16 var panel = WebInspector.panels.profiles;
19 var profileType = WebInspector.ProfileTypeRegistry.instance.heapSnapshotProfileType;
21 InspectorTest.override(HeapProfilerAgent, "takeHeapSnapshot", takeHeapSnapshotMock);
22 function takeHeapSnapshotMock(reportProgress, callback) {
24 profileType._reportHeapSnapshotProgress({data: {done: 50, total: 100, finished: false}});
25 profileType._reportHeapSnapshotProgress({data: {done: 100, total: 100, finished: true}});
27 for (var i = 0, l = sourceStringified.length; i < l; i += partSize)
28 dispatcher.addHeapSnapshotChunk(sourceStringified.slice(i, i + partSize));
29 setTimeout(callback, 0);
32 function tempFileReady()
36 InspectorTest.addSniffer(WebInspector.HeapProfileHeader.prototype, "_didWriteToTempFile", tempFileReady);
37 profileType._takeHeapSnapshot(function() {});
40 WebInspector.console.log = function(message) {
41 InspectorTest.addResult("WebInspector.consoleModel.log: " + message);
44 InspectorTest.runTestSuite([
45 function heapSnapshotSaveToFileTest(next)
47 function snapshotLoaded(profileHeader)
49 var savedSnapshotData;
50 function saveMock(url, data)
52 savedSnapshotData = data;
53 WebInspector.fileManager._savedURL({data: url});
55 InspectorTest.override(InspectorFrontendHost, "save", saveMock);
57 var oldAppend = InspectorFrontendHost.append;
58 InspectorFrontendHost.append = function appendMock(url, data)
60 savedSnapshotData += data;
61 WebInspector.fileManager._appendedToURL({data: url});
63 function closeMock(url)
65 InspectorTest.assertEquals(sourceStringified, savedSnapshotData, "Saved snapshot data");
66 InspectorFrontendHost.append = oldAppend;
69 InspectorTest.override(WebInspector.FileManager.prototype, "close", closeMock);
70 profileHeader.saveToFile();
73 injectMockProfile(snapshotLoaded);
76 function heapSnapshotLoadFromFileTest(next)
78 var panel = WebInspector.panels.profiles;
81 name: "mock.heapsnapshot",
82 size: sourceStringified.length
85 InspectorTest.override(WebInspector.HeapProfileHeader.prototype, '_createFileReader', function(fileMock, delegate) {
87 start: function(receiver) {
88 delegate.onTransferStarted(this);
89 receiver.write(sourceStringified);
90 delegate.onChunkTransferred(this);
92 delegate.onTransferFinished(this);
95 loadedSize: function()
102 return fileMock.size;
107 return fileMock.name;
111 InspectorTest.addSniffer(WebInspector.HeapProfileHeader.prototype, "_snapshotReceived", function() { next(); });
112 panel._loadFromFile(fileMock);
115 function heapSnapshotRejectToSaveToFileTest(next)
117 function snapshotLoaded(profileHeader)
119 if (profileHeader.canSaveToFile())
122 profileHeader.addEventListener(WebInspector.ProfileHeader.Events.ProfileReceived, onCanSaveProfile, this);
123 function onCanSaveProfile()
125 InspectorTest.assertTrue(profileHeader.canSaveToFile());
130 injectMockProfile(snapshotLoaded);
138 <body onload="runTest()">
140 This test checks HeapSnapshots loader.