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

Side by Side Diff: Source/devtools/front_end/timeline/TimelineTracingView.js

Issue 328143003: Timeline: add preview of painted picture for Paint event (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright 2014 The Chromium Authors. All rights reserved. 2 * Copyright 2014 The Chromium Authors. All rights reserved.
3 * Use of this source code is governed by a BSD-style license that can be 3 * Use of this source code is governed by a BSD-style license that can be
4 * found in the LICENSE file. 4 * found in the LICENSE file.
5 */ 5 */
6 6
7 /** 7 /**
8 * @constructor 8 * @constructor
9 * @implements {WebInspector.TimelineModeView} 9 * @implements {WebInspector.TimelineModeView}
10 * @implements {WebInspector.FlameChartDelegate} 10 * @implements {WebInspector.FlameChartDelegate}
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 contentHelper.appendTextRow(WebInspector.UIString("Duration"), Number.mi llisToString(record.duration, true)); 117 contentHelper.appendTextRow(WebInspector.UIString("Duration"), Number.mi llisToString(record.duration, true));
118 if (!Object.isEmpty(record.args)) 118 if (!Object.isEmpty(record.args))
119 contentHelper.appendElementRow(WebInspector.UIString("Arguments"), t his._formatArguments(record.args)); 119 contentHelper.appendElementRow(WebInspector.UIString("Arguments"), t his._formatArguments(record.args));
120 /** 120 /**
121 * @this {WebInspector.TimelineTracingView} 121 * @this {WebInspector.TimelineTracingView}
122 */ 122 */
123 function reveal() 123 function reveal()
124 { 124 {
125 WebInspector.Revealer.reveal(new WebInspector.DeferredTracingLayerTr ee(this._tracingModel.target(), record.args["snapshot"]["active_tree"]["root_lay er"])); 125 WebInspector.Revealer.reveal(new WebInspector.DeferredTracingLayerTr ee(this._tracingModel.target(), record.args["snapshot"]["active_tree"]["root_lay er"]));
126 } 126 }
127 if (record.name === "cc::LayerTreeHostImpl") { 127 /**
128 * @param {!Node=} node
129 * @this {WebInspector.TimelineTracingView}
130 */
131 function appendPreviewAndshowDetails(node)
132 {
133 if (node)
134 contentHelper.appendElementRow("Preview", node);
135 this._delegate.showInDetails(WebInspector.UIString("Selected Event") , contentHelper.element);
136 }
137 var recordTypes = WebInspector.TracingTimelineModel.RecordType;
138 switch (record.name) {
139 case recordTypes.PictureSnapshot:
140 WebInspector.TracingTimelineUIUtils._buildPicturePreviewContent(reco rd.args["snapshot"]["skp64"], appendPreviewAndshowDetails.bind(this));
141 break;
142 case recordTypes.LayerTreeHostImplSnapshot:
128 var link = document.createElement("span"); 143 var link = document.createElement("span");
129 link.classList.add("revealable-link"); 144 link.classList.add("revealable-link");
130 link.textContent = "show"; 145 link.textContent = "show";
131 link.addEventListener("click", reveal.bind(this), false); 146 link.addEventListener("click", reveal.bind(this), false);
132 contentHelper.appendElementRow(WebInspector.UIString("Layer tree"), link); 147 contentHelper.appendElementRow(WebInspector.UIString("Layer tree"), link);
133 } else if (record.name === "cc::Picture") { 148 // Fall-through intended.
134 var div = document.createElement("div"); 149 default:
135 div.className = "image-preview-container"; 150 this._delegate.showInDetails(WebInspector.UIString("Selected Event") , contentHelper.element);
136 var img = div.createChild("img");
137 contentHelper.appendElementRow("Preview", div);
138 this._requestThumbnail(img, record.args["snapshot"]["skp64"]);
139 } 151 }
140 this._delegate.showInDetails(WebInspector.UIString("Selected Event"), co ntentHelper.element);
141 }, 152 },
142 153
143 /** 154 /**
144 * @param {!Object} args 155 * @param {!Object} args
145 * @return {!Element} 156 * @return {!Element}
146 */ 157 */
147 _formatArguments: function(args) 158 _formatArguments: function(args)
148 { 159 {
149 var table = document.createElement("table"); 160 var table = document.createElement("table");
150 for (var name in args) { 161 for (var name in args) {
151 var row = table.createChild("tr"); 162 var row = table.createChild("tr");
152 row.createChild("td", "timeline-details-row-title").textContent = na me + ":"; 163 row.createChild("td", "timeline-details-row-title").textContent = na me + ":";
153 var valueContainer = row.createChild("td", "timeline-details-row-dat a"); 164 var valueContainer = row.createChild("td", "timeline-details-row-dat a");
154 var value = args[name]; 165 var value = args[name];
155 if (typeof value === "object" && value) { 166 if (typeof value === "object" && value) {
156 var localObject = new WebInspector.LocalJSONObject(value); 167 var localObject = new WebInspector.LocalJSONObject(value);
157 var propertiesSection = new WebInspector.ObjectPropertiesSection (localObject, localObject.description); 168 var propertiesSection = new WebInspector.ObjectPropertiesSection (localObject, localObject.description);
158 valueContainer.appendChild(propertiesSection.element); 169 valueContainer.appendChild(propertiesSection.element);
159 } else { 170 } else {
160 valueContainer.textContent = String(value); 171 valueContainer.textContent = String(value);
161 } 172 }
162 } 173 }
163 return table; 174 return table;
164 }, 175 },
165 176
166 /**
167 * @param {!Element} img
168 * @param {string} encodedPicture
169 */
170 _requestThumbnail: function(img, encodedPicture)
171 {
172 var snapshotId;
173 LayerTreeAgent.loadSnapshot(encodedPicture, onSnapshotLoaded);
174 /**
175 * @param {string} error
176 * @param {string} id
177 */
178 function onSnapshotLoaded(error, id)
179 {
180 if (error) {
181 console.error("LayerTreeAgent.loadSnapshot(): " + error);
182 return;
183 }
184 snapshotId = id;
185 LayerTreeAgent.replaySnapshot(snapshotId, onSnapshotReplayed);
186 }
187
188 /**
189 * @param {string} error
190 * @param {string} encodedBitmap
191 */
192 function onSnapshotReplayed(error, encodedBitmap)
193 {
194 LayerTreeAgent.releaseSnapshot(snapshotId);
195 if (error) {
196 console.error("LayerTreeAgent.replaySnapshot(): " + error);
197 return;
198 }
199 img.src = encodedBitmap;
200 }
201 },
202
203 __proto__: WebInspector.VBox.prototype 177 __proto__: WebInspector.VBox.prototype
204 }; 178 };
205 179
206 /** 180 /**
207 * @constructor 181 * @constructor
208 * @implements {WebInspector.FlameChartDataProvider} 182 * @implements {WebInspector.FlameChartDataProvider}
209 * @param {!WebInspector.TracingModel} model 183 * @param {!WebInspector.TracingModel} model
210 * @param {!WebInspector.TimelineModel} timelineModelForMinimumBoundary 184 * @param {!WebInspector.TimelineModel} timelineModelForMinimumBoundary
211 */ 185 */
212 WebInspector.TraceViewFlameChartDataProvider = function(model, timelineModelForM inimumBoundary) 186 WebInspector.TraceViewFlameChartDataProvider = function(model, timelineModelForM inimumBoundary)
(...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after
573 /** 547 /**
574 * @param {string} string 548 * @param {string} string
575 * @return {string} 549 * @return {string}
576 */ 550 */
577 colorForString: function(string) 551 colorForString: function(string)
578 { 552 {
579 var hash = WebInspector.TraceViewPalette._stringHash(string); 553 var hash = WebInspector.TraceViewPalette._stringHash(string);
580 return this._palette[hash % this._palette.length]; 554 return this._palette[hash % this._palette.length];
581 } 555 }
582 }; 556 };
OLDNEW
« no previous file with comments | « Source/devtools/front_end/timeline/TimelinePanel.js ('k') | Source/devtools/front_end/timeline/TracingTimelineModel.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698