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

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

Issue 400643002: DevTools: Add ability to go to paint record and paint profiler in Timeline from layers view. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Added annotations. Created 6 years, 5 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
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 * @extends {WebInspector.VBox} 9 * @extends {WebInspector.VBox}
10 */ 10 */
11 WebInspector.TimelineLayersView = function() 11 WebInspector.TimelineLayersView = function()
12 { 12 {
13 WebInspector.VBox.call(this); 13 WebInspector.VBox.call(this);
14 14
15 this._paintTiles = []; 15 this._paintTiles = [];
16 this._layers3DView = new WebInspector.Layers3DView(); 16 this._layers3DView = new WebInspector.Layers3DView();
17 this._layers3DView.addEventListener(WebInspector.Layers3DView.Events.ObjectS elected, this._onObjectSelected, this); 17 this._layers3DView.addEventListener(WebInspector.Layers3DView.Events.ObjectS elected, this._onObjectSelected, this);
18 this._layers3DView.addEventListener(WebInspector.Layers3DView.Events.ObjectH overed, this._onObjectHovered, this); 18 this._layers3DView.addEventListener(WebInspector.Layers3DView.Events.ObjectH overed, this._onObjectHovered, this);
19 this._layers3DView.addEventListener(WebInspector.Layers3DView.Events.JumpToP aintEventRequested, this._jumpToPaintEvent, this);
19 this._layers3DView.show(this.element); 20 this._layers3DView.show(this.element);
20 } 21 }
21 22
22 WebInspector.TimelineLayersView.prototype = { 23 WebInspector.TimelineLayersView.prototype = {
23 /** 24 /**
24 * @param {!WebInspector.DeferredLayerTree} deferredLayerTree 25 * @param {!WebInspector.DeferredLayerTree} deferredLayerTree
25 * @param {?Array.<!WebInspector.LayerPaintEvent>} paints 26 * @param {?Array.<!WebInspector.LayerPaintEvent>} paints
26 */ 27 */
27 showLayerTree: function(deferredLayerTree, paints) 28 showLayerTree: function(deferredLayerTree, paints)
28 { 29 {
29 this._disposeTiles(); 30 this._disposeTiles();
30 this._deferredLayerTree = deferredLayerTree; 31 this._deferredLayerTree = deferredLayerTree;
31 this._paints = paints; 32 this._paints = paints;
32 if (this.isShowing()) 33 if (this.isShowing())
33 this._update(); 34 this._update();
34 else 35 else
35 this._updateWhenVisible = true; 36 this._updateWhenVisible = true;
36 }, 37 },
37 38
38 wasShown: function() 39 wasShown: function()
39 { 40 {
40 if (this._updateWhenVisible) { 41 if (this._updateWhenVisible) {
41 this._updateWhenVisible = false; 42 this._updateWhenVisible = false;
42 this._update(); 43 this._update();
43 } 44 }
44 }, 45 },
45 46
47 /**
48 * @param {!WebInspector.TimelineModel} model
49 * @param {!WebInspector.TimelineModeViewDelegate} delegate
50 */
51 setTimelineModelAndDelegate: function(model, delegate)
52 {
53 this._model = model;
54 this._delegate = delegate;
55 },
56
57 /**
58 * @param {!WebInspector.Event} event
59 */
60 _jumpToPaintEvent: function(event)
61 {
62 var traceEvent = event.data;
63 var eventRecord;
64
65 /**
66 * @param {!WebInspector.TimelineModel.Record} record
67 * @return {boolean}
68 */
69 function findRecordWithEvent(record)
70 {
71 if (record.traceEvent() === traceEvent) {
72 eventRecord = record;
73 return true;
74 }
75 return false;
76 }
77
78 this._model.forAllRecords(findRecordWithEvent);
79 if (eventRecord) {
80 var selection = WebInspector.TimelineSelection.fromRecord(eventRecor d);
81 this._delegate.select(selection);
82 }
83 },
84
46 _update: function() 85 _update: function()
47 { 86 {
48 var layerTree; 87 var layerTree;
49 88
50 this._target = this._deferredLayerTree.target(); 89 this._target = this._deferredLayerTree.target();
51 var originalTiles = this._paintTiles; 90 var originalTiles = this._paintTiles;
52 var tilesReadyBarrier = new CallbackBarrier(); 91 var tilesReadyBarrier = new CallbackBarrier();
53 this._deferredLayerTree.resolve(tilesReadyBarrier.createCallback(onLayer sReady)); 92 this._deferredLayerTree.resolve(tilesReadyBarrier.createCallback(onLayer sReady));
54 if (this._target) { 93 if (this._target) {
55 for (var i = 0; this._paints && i < this._paints.length; ++i) 94 for (var i = 0; this._paints && i < this._paints.length; ++i)
(...skipping 16 matching lines...) Expand all
72 */ 111 */
73 function onSnapshotLoaded(paintEvent, snapshot) 112 function onSnapshotLoaded(paintEvent, snapshot)
74 { 113 {
75 if (!snapshot) 114 if (!snapshot)
76 return; 115 return;
77 // We're too late and there's a new generation of tiles being loaded . 116 // We're too late and there's a new generation of tiles being loaded .
78 if (originalTiles !== this._paintTiles) { 117 if (originalTiles !== this._paintTiles) {
79 snapshot.dispose(); 118 snapshot.dispose();
80 return; 119 return;
81 } 120 }
82 this._paintTiles.push({layerId: paintEvent.layerId, rect: paintEvent .rect, snapshot: snapshot}); 121 this._paintTiles.push({layerId: paintEvent.layerId, rect: paintEvent .rect, snapshot: snapshot, traceEvent: paintEvent.traceEvent});
83 } 122 }
84 123
85 /** 124 /**
86 * @this {WebInspector.TimelineLayersView} 125 * @this {WebInspector.TimelineLayersView}
87 */ 126 */
88 function onLayersAndTilesReady() 127 function onLayersAndTilesReady()
89 { 128 {
90 this._layers3DView.setLayerTree(layerTree); 129 this._layers3DView.setLayerTree(layerTree);
91 this._layers3DView.setTiles(this._paintTiles); 130 this._layers3DView.setTiles(this._paintTiles);
92 } 131 }
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
152 191
153 _disposeTiles: function() 192 _disposeTiles: function()
154 { 193 {
155 for (var i = 0; i < this._paintTiles.length; ++i) 194 for (var i = 0; i < this._paintTiles.length; ++i)
156 this._paintTiles[i].snapshot.dispose(); 195 this._paintTiles[i].snapshot.dispose();
157 this._paintTiles = []; 196 this._paintTiles = [];
158 }, 197 },
159 198
160 __proto__: WebInspector.VBox.prototype 199 __proto__: WebInspector.VBox.prototype
161 } 200 }
OLDNEW
« no previous file with comments | « Source/devtools/front_end/timeline/TimelineFrameModel.js ('k') | Source/devtools/front_end/timeline/TimelinePanel.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698