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

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

Issue 2845813003: [DevTools] Host paint profiles in PaintProfilerModel (Closed)
Patch Set: addressed comments Created 3 years, 7 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/Source/devtools/front_end/timeline_model/TimelineFrameModel.js ('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 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 /** @typedef {!{ 4 /** @typedef {!{
5 bounds: {height: number, width: number}, 5 bounds: {height: number, width: number},
6 children: Array.<!TimelineModel.TracingLayerPayload>, 6 children: Array.<!TimelineModel.TracingLayerPayload>,
7 layer_id: number, 7 layer_id: number,
8 position: Array.<number>, 8 position: Array.<number>,
9 scroll_offset: Array.<number>, 9 scroll_offset: Array.<number>,
10 layer_quad: Array.<number>, 10 layer_quad: Array.<number>,
(...skipping 19 matching lines...) Expand all
30 * @unrestricted 30 * @unrestricted
31 */ 31 */
32 TimelineModel.TracingLayerTree = class extends SDK.LayerTreeBase { 32 TimelineModel.TracingLayerTree = class extends SDK.LayerTreeBase {
33 /** 33 /**
34 * @param {?SDK.Target} target 34 * @param {?SDK.Target} target
35 */ 35 */
36 constructor(target) { 36 constructor(target) {
37 super(target); 37 super(target);
38 /** @type {!Map.<string, !TimelineModel.TracingLayerTile>} */ 38 /** @type {!Map.<string, !TimelineModel.TracingLayerTile>} */
39 this._tileById = new Map(); 39 this._tileById = new Map();
40 this._paintProfilerModel = target && target.model(SDK.PaintProfilerModel);
40 } 41 }
41 42
42 /** 43 /**
43 * @param {?TimelineModel.TracingLayerPayload} root 44 * @param {?TimelineModel.TracingLayerPayload} root
44 * @param {?Array<!TimelineModel.TracingLayerPayload>} layers 45 * @param {?Array<!TimelineModel.TracingLayerPayload>} layers
45 * @param {!Array<!TimelineModel.LayerPaintEvent>} paints 46 * @param {!Array<!TimelineModel.LayerPaintEvent>} paints
46 * @param {function()} callback 47 * @param {function()} callback
47 */ 48 */
48 setLayers(root, layers, paints, callback) { 49 setLayers(root, layers, paints, callback) {
49 var idsToResolve = new Set(); 50 var idsToResolve = new Set();
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
122 /** 123 /**
123 * @param {!Object<(string|number), !SDK.Layer>} oldLayersById 124 * @param {!Object<(string|number), !SDK.Layer>} oldLayersById
124 * @param {!TimelineModel.TracingLayerPayload} payload 125 * @param {!TimelineModel.TracingLayerPayload} payload
125 * @return {!TimelineModel.TracingLayer} 126 * @return {!TimelineModel.TracingLayer}
126 */ 127 */
127 _innerSetLayers(oldLayersById, payload) { 128 _innerSetLayers(oldLayersById, payload) {
128 var layer = /** @type {?TimelineModel.TracingLayer} */ (oldLayersById[payloa d.layer_id]); 129 var layer = /** @type {?TimelineModel.TracingLayer} */ (oldLayersById[payloa d.layer_id]);
129 if (layer) 130 if (layer)
130 layer._reset(payload); 131 layer._reset(payload);
131 else 132 else
132 layer = new TimelineModel.TracingLayer(this.target(), payload); 133 layer = new TimelineModel.TracingLayer(this._paintProfilerModel, payload);
133 this._layersById[payload.layer_id] = layer; 134 this._layersById[payload.layer_id] = layer;
134 if (payload.owner_node) 135 if (payload.owner_node)
135 layer._setNode(this.backendNodeIdToNode().get(payload.owner_node) || null) ; 136 layer._setNode(this.backendNodeIdToNode().get(payload.owner_node) || null) ;
136 if (!this.contentRoot() && layer.drawsContent()) 137 if (!this.contentRoot() && layer.drawsContent())
137 this.setContentRoot(layer); 138 this.setContentRoot(layer);
138 for (var i = 0; payload.children && i < payload.children.length; ++i) 139 for (var i = 0; payload.children && i < payload.children.length; ++i)
139 layer.addChild(this._innerSetLayers(oldLayersById, payload.children[i])); 140 layer.addChild(this._innerSetLayers(oldLayersById, payload.children[i]));
140 return layer; 141 return layer;
141 } 142 }
142 143
(...skipping 10 matching lines...) Expand all
153 this._extractNodeIdsToResolve(nodeIdsToResolve, seenNodeIds, payload.child ren[i]); 154 this._extractNodeIdsToResolve(nodeIdsToResolve, seenNodeIds, payload.child ren[i]);
154 } 155 }
155 }; 156 };
156 157
157 /** 158 /**
158 * @implements {SDK.Layer} 159 * @implements {SDK.Layer}
159 * @unrestricted 160 * @unrestricted
160 */ 161 */
161 TimelineModel.TracingLayer = class { 162 TimelineModel.TracingLayer = class {
162 /** 163 /**
164 * @param {?SDK.PaintProfilerModel} paintProfilerModel
163 * @param {!TimelineModel.TracingLayerPayload} payload 165 * @param {!TimelineModel.TracingLayerPayload} payload
164 * @param {?SDK.Target} target
165 */ 166 */
166 constructor(target, payload) { 167 constructor(paintProfilerModel, payload) {
167 this._target = target; 168 this._paintProfilerModel = paintProfilerModel;
168 this._reset(payload); 169 this._reset(payload);
169 } 170 }
170 171
171 /** 172 /**
172 * @param {!TimelineModel.TracingLayerPayload} payload 173 * @param {!TimelineModel.TracingLayerPayload} payload
173 */ 174 */
174 _reset(payload) { 175 _reset(payload) {
175 /** @type {?SDK.DOMNode} */ 176 /** @type {?SDK.DOMNode} */
176 this._node = null; 177 this._node = null;
177 this._layerId = String(payload.layer_id); 178 this._layerId = String(payload.layer_id);
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after
380 381
381 /** 382 /**
382 * @param {!Array<number>} targetRect 383 * @param {!Array<number>} targetRect
383 * @return {!Promise<?SDK.SnapshotWithRect>} 384 * @return {!Promise<?SDK.SnapshotWithRect>}
384 */ 385 */
385 _pictureForRect(targetRect) { 386 _pictureForRect(targetRect) {
386 return Promise.all(this._paints.map(paint => paint.picturePromise())).then(p ictures => { 387 return Promise.all(this._paints.map(paint => paint.picturePromise())).then(p ictures => {
387 var fragments = 388 var fragments =
388 pictures.filter(picture => picture && rectsOverlap(picture.rect, targe tRect)) 389 pictures.filter(picture => picture && rectsOverlap(picture.rect, targe tRect))
389 .map(picture => ({x: picture.rect[0], y: picture.rect[1], picture: picture.serializedPicture})); 390 .map(picture => ({x: picture.rect[0], y: picture.rect[1], picture: picture.serializedPicture}));
390 if (!fragments.length || !this._target) 391 if (!fragments.length || !this._paintProfilerModel)
391 return null; 392 return null;
392 var x0 = fragments.reduce((min, item) => Math.min(min, item.x), Infinity); 393 var x0 = fragments.reduce((min, item) => Math.min(min, item.x), Infinity);
393 var y0 = fragments.reduce((min, item) => Math.min(min, item.y), Infinity); 394 var y0 = fragments.reduce((min, item) => Math.min(min, item.y), Infinity);
394 // Rect is in layer content coordinates, make it relative to picture by of fsetting to the top left corner. 395 // Rect is in layer content coordinates, make it relative to picture by of fsetting to the top left corner.
395 var rect = {x: targetRect[0] - x0, y: targetRect[1] - y0, width: targetRec t[2], height: targetRect[3]}; 396 var rect = {x: targetRect[0] - x0, y: targetRect[1] - y0, width: targetRec t[2], height: targetRect[3]};
396 return SDK.PaintProfilerSnapshot.loadFromFragments(this._target, fragments ) 397 return this._paintProfilerModel.loadSnapshotFromFragments(fragments).then(
397 .then(snapshot => snapshot ? {rect: rect, snapshot: snapshot} : null); 398 snapshot => snapshot ? {rect: rect, snapshot: snapshot} : null);
398 }); 399 });
399 400
400 /** 401 /**
401 * @param {number} a1 402 * @param {number} a1
402 * @param {number} a2 403 * @param {number} a2
403 * @param {number} b1 404 * @param {number} b1
404 * @param {number} b2 405 * @param {number} b2
405 * @return {boolean} 406 * @return {boolean}
406 */ 407 */
407 function segmentsOverlap(a1, a2, b1, b2) { 408 function segmentsOverlap(a1, a2, b1, b2) {
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
468 } 469 }
469 470
470 /** 471 /**
471 * @override 472 * @override
472 * @return {boolean} 473 * @return {boolean}
473 */ 474 */
474 drawsContent() { 475 drawsContent() {
475 return this._drawsContent; 476 return this._drawsContent;
476 } 477 }
477 }; 478 };
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/devtools/front_end/timeline_model/TimelineFrameModel.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698