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

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/timeline_model/TimelineModel.js

Issue 2434813003: DevTools: Support reading updated version of CPU profile. (Closed)
Patch Set: Created 4 years, 2 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 unified diff | Download patch
« no previous file with comments | « third_party/WebKit/LayoutTests/inspector/tracing/timeline-js/timeline-js-streamed-cpu-profile.html ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2012 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
154 LatencyInfoFlow: "LatencyInfo.Flow", 154 LatencyInfoFlow: "LatencyInfo.Flow",
155 InputLatencyMouseMove: "InputLatency::MouseMove", 155 InputLatencyMouseMove: "InputLatency::MouseMove",
156 InputLatencyMouseWheel: "InputLatency::MouseWheel", 156 InputLatencyMouseWheel: "InputLatency::MouseWheel",
157 ImplSideFling: "InputHandlerProxy::HandleGestureFling::started", 157 ImplSideFling: "InputHandlerProxy::HandleGestureFling::started",
158 GCIdleLazySweep: "ThreadState::performIdleLazySweep", 158 GCIdleLazySweep: "ThreadState::performIdleLazySweep",
159 GCCompleteSweep: "ThreadState::completeSweep", 159 GCCompleteSweep: "ThreadState::completeSweep",
160 GCCollectGarbage: "BlinkGCMarking", 160 GCCollectGarbage: "BlinkGCMarking",
161 161
162 // CpuProfile is a virtual event created on frontend to support 162 // CpuProfile is a virtual event created on frontend to support
163 // serialization of CPU Profiles within tracing timeline data. 163 // serialization of CPU Profiles within tracing timeline data.
164 CpuProfile: "CpuProfile" 164 CpuProfile: "CpuProfile",
165 Profile: "Profile"
165 } 166 }
166 167
167 WebInspector.TimelineModel.Category = { 168 WebInspector.TimelineModel.Category = {
168 Console: "blink.console", 169 Console: "blink.console",
169 UserTiming: "blink.user_timing", 170 UserTiming: "blink.user_timing",
170 LatencyInfo: "latencyInfo" 171 LatencyInfo: "latencyInfo"
171 }; 172 };
172 173
173 /** 174 /**
174 * @enum {string} 175 * @enum {string}
(...skipping 570 matching lines...) Expand 10 before | Expand all | Expand 10 after
745 var cpuProfile; 746 var cpuProfile;
746 747
747 // Check for legacy CpuProfile event format first. 748 // Check for legacy CpuProfile event format first.
748 var cpuProfileEvent = events.peekLast(); 749 var cpuProfileEvent = events.peekLast();
749 if (cpuProfileEvent && cpuProfileEvent.name === WebInspector.TimelineMod el.RecordType.CpuProfile) { 750 if (cpuProfileEvent && cpuProfileEvent.name === WebInspector.TimelineMod el.RecordType.CpuProfile) {
750 var eventData = cpuProfileEvent.args["data"]; 751 var eventData = cpuProfileEvent.args["data"];
751 cpuProfile = /** @type {?ProfilerAgent.Profile} */ (eventData && eve ntData["cpuProfile"]); 752 cpuProfile = /** @type {?ProfilerAgent.Profile} */ (eventData && eve ntData["cpuProfile"]);
752 } 753 }
753 754
754 if (!cpuProfile) { 755 if (!cpuProfile) {
755 cpuProfileEvent = events.find(e => e.name === WebInspector.TimelineM odel.RecordType.CpuProfile); 756 cpuProfileEvent = events.find(e => e.name === WebInspector.TimelineM odel.RecordType.Profile);
756 if (!cpuProfileEvent) 757 if (!cpuProfileEvent)
757 return null; 758 return null;
758 var profileGroup = tracingModel.profileGroup(cpuProfileEvent.id); 759 var profileGroup = tracingModel.profileGroup(cpuProfileEvent.id);
759 if (!profileGroup) { 760 if (!profileGroup) {
760 WebInspector.console.error("Invalid CPU profile format."); 761 WebInspector.console.error("Invalid CPU profile format.");
761 return null; 762 return null;
762 } 763 }
763 cpuProfile = /** @type {!ProfilerAgent.Profile} */ ({ 764 cpuProfile = /** @type {!ProfilerAgent.Profile} */ ({
764 startTime: cpuProfileEvent.args["data"]["startTime"], 765 startTime: cpuProfileEvent.args["data"]["startTime"],
765 endTime: 0, 766 endTime: 0,
766 nodes: [], 767 nodes: [],
767 samples: [], 768 samples: [],
768 timeDeltas: [] 769 timeDeltas: []
769 }); 770 });
770 for (var profileEvent of profileGroup.children) { 771 for (var profileEvent of profileGroup.children) {
771 var eventData = profileEvent.args["data"]; 772 var eventData = profileEvent.args["data"];
772 if ("startTime" in eventData) 773 if ("startTime" in eventData)
773 cpuProfile.startTime = eventData["startTime"]; 774 cpuProfile.startTime = eventData["startTime"];
774 if ("endTime" in eventData) 775 if ("endTime" in eventData)
775 cpuProfile.endTime = eventData["endTime"]; 776 cpuProfile.endTime = eventData["endTime"];
776 cpuProfile.nodes.pushAll(eventData["nodes"] || []); 777 var nodesAndSamples = eventData["cpuProfile"] || {};
777 cpuProfile.samples.pushAll(eventData["samples"] || []); 778 cpuProfile.nodes.pushAll(nodesAndSamples["nodes"] || []);
779 cpuProfile.samples.pushAll(nodesAndSamples["samples"] || []);
778 cpuProfile.timeDeltas.pushAll(eventData["timeDeltas"] || []); 780 cpuProfile.timeDeltas.pushAll(eventData["timeDeltas"] || []);
781 if (cpuProfile.samples.length !== cpuProfile.timeDeltas.length) {
782 WebInspector.console.error("Failed to parse CPU profile.");
783 return null;
784 }
779 } 785 }
780 if (!cpuProfile.endTime) 786 if (!cpuProfile.endTime)
781 cpuProfile.endTime = cpuProfile.timeDeltas.reduce((x, y) => x + y, cpuProfile.startTime); 787 cpuProfile.endTime = cpuProfile.timeDeltas.reduce((x, y) => x + y, cpuProfile.startTime);
782 } 788 }
783 789
784 try { 790 try {
785 var jsProfileModel = new WebInspector.CPUProfileDataModel(cpuProfile ); 791 var jsProfileModel = new WebInspector.CPUProfileDataModel(cpuProfile );
786 this._cpuProfiles.push(jsProfileModel); 792 this._cpuProfiles.push(jsProfileModel);
787 return jsProfileModel; 793 return jsProfileModel;
788 } catch (e) { 794 } catch (e) {
(...skipping 1058 matching lines...) Expand 10 before | Expand all | Expand 10 after
1847 if (!id) 1853 if (!id)
1848 return; 1854 return;
1849 /** @type {!Map<string, !WebInspector.TracingModel.Event>|undefined} */ 1855 /** @type {!Map<string, !WebInspector.TracingModel.Event>|undefined} */
1850 var initiatorMap = this._initiatorByType.get(initiatorType); 1856 var initiatorMap = this._initiatorByType.get(initiatorType);
1851 if (isInitiator) 1857 if (isInitiator)
1852 initiatorMap.set(id, event); 1858 initiatorMap.set(id, event);
1853 else 1859 else
1854 event.initiator = initiatorMap.get(id) || null; 1860 event.initiator = initiatorMap.get(id) || null;
1855 } 1861 }
1856 } 1862 }
OLDNEW
« no previous file with comments | « third_party/WebKit/LayoutTests/inspector/tracing/timeline-js/timeline-js-streamed-cpu-profile.html ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698