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

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/timeline/LayerViewHost.js

Issue 1463143005: DevTools: avoid layout thrashing on Layers panel (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: extracted reveal() change Created 5 years, 1 month 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 2015 The Chromium Authors. All rights reserved. 2 * Copyright 2015 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 * @interface 8 * @interface
9 */ 9 */
10 WebInspector.LayerView = function() 10 WebInspector.LayerView = function()
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 42
43 /** 43 /**
44 * @enum {string} 44 * @enum {string}
45 */ 45 */
46 WebInspector.LayerView.Selection.Type = { 46 WebInspector.LayerView.Selection.Type = {
47 Layer: "Layer", 47 Layer: "Layer",
48 ScrollRect: "ScrollRect", 48 ScrollRect: "ScrollRect",
49 Tile: "Tile", 49 Tile: "Tile",
50 } 50 }
51 51
52 /**
53 * @param {?WebInspector.LayerView.Selection} a
54 * @param {?WebInspector.LayerView.Selection} b
55 * @return {boolean}
56 */
57 WebInspector.LayerView.Selection.isEqual = function(a, b)
58 {
59 return a && b ? a._isEqual(b) : a === b;
60 }
61
52 WebInspector.LayerView.Selection.prototype = { 62 WebInspector.LayerView.Selection.prototype = {
53 /** 63 /**
54 * @return {!WebInspector.LayerView.Selection.Type} 64 * @return {!WebInspector.LayerView.Selection.Type}
55 */ 65 */
56 type: function() 66 type: function()
57 { 67 {
58 return this._type; 68 return this._type;
59 }, 69 },
60 70
61 /** 71 /**
62 * @return {!WebInspector.Layer} 72 * @return {!WebInspector.Layer}
63 */ 73 */
64 layer: function() 74 layer: function()
65 { 75 {
66 return this._layer; 76 return this._layer;
67 }, 77 },
68 78
69 /** 79 /**
70 * @param {!WebInspector.LayerView.Selection} other 80 * @param {!WebInspector.LayerView.Selection} other
71 * @return {boolean} 81 * @return {boolean}
72 */ 82 */
73 isEqual: function(other) 83 _isEqual: function(other)
74 { 84 {
75 return false; 85 return false;
76 } 86 }
77 } 87 }
78 88
79 /** 89 /**
80 * @constructor 90 * @constructor
81 * @extends {WebInspector.LayerView.Selection} 91 * @extends {WebInspector.LayerView.Selection}
82 * @param {!WebInspector.Layer} layer 92 * @param {!WebInspector.Layer} layer
83 */ 93 */
84 WebInspector.LayerView.LayerSelection = function(layer) 94 WebInspector.LayerView.LayerSelection = function(layer)
85 { 95 {
86 console.assert(layer, "LayerSelection with empty layer"); 96 console.assert(layer, "LayerSelection with empty layer");
87 WebInspector.LayerView.Selection.call(this, WebInspector.LayerView.Selection .Type.Layer, layer); 97 WebInspector.LayerView.Selection.call(this, WebInspector.LayerView.Selection .Type.Layer, layer);
88 } 98 }
89 99
90 WebInspector.LayerView.LayerSelection.prototype = { 100 WebInspector.LayerView.LayerSelection.prototype = {
91 /** 101 /**
92 * @override 102 * @override
93 * @param {!WebInspector.LayerView.Selection} other 103 * @param {!WebInspector.LayerView.Selection} other
94 * @return {boolean} 104 * @return {boolean}
95 */ 105 */
96 isEqual: function(other) 106 _isEqual: function(other)
97 { 107 {
98 return other._type === WebInspector.LayerView.Selection.Type.Layer && ot her.layer().id() === this.layer().id(); 108 return other._type === WebInspector.LayerView.Selection.Type.Layer && ot her.layer().id() === this.layer().id();
99 }, 109 },
100 110
101 __proto__: WebInspector.LayerView.Selection.prototype 111 __proto__: WebInspector.LayerView.Selection.prototype
102 } 112 }
103 113
104 /** 114 /**
105 * @constructor 115 * @constructor
106 * @extends {WebInspector.LayerView.Selection} 116 * @extends {WebInspector.LayerView.Selection}
107 * @param {!WebInspector.Layer} layer 117 * @param {!WebInspector.Layer} layer
108 * @param {number} scrollRectIndex 118 * @param {number} scrollRectIndex
109 */ 119 */
110 WebInspector.LayerView.ScrollRectSelection = function(layer, scrollRectIndex) 120 WebInspector.LayerView.ScrollRectSelection = function(layer, scrollRectIndex)
111 { 121 {
112 WebInspector.LayerView.Selection.call(this, WebInspector.LayerView.Selection .Type.ScrollRect, layer); 122 WebInspector.LayerView.Selection.call(this, WebInspector.LayerView.Selection .Type.ScrollRect, layer);
113 this.scrollRectIndex = scrollRectIndex; 123 this.scrollRectIndex = scrollRectIndex;
114 } 124 }
115 125
116 WebInspector.LayerView.ScrollRectSelection.prototype = { 126 WebInspector.LayerView.ScrollRectSelection.prototype = {
117 /** 127 /**
118 * @override 128 * @override
119 * @param {!WebInspector.LayerView.Selection} other 129 * @param {!WebInspector.LayerView.Selection} other
120 * @return {boolean} 130 * @return {boolean}
121 */ 131 */
122 isEqual: function(other) 132 _isEqual: function(other)
123 { 133 {
124 return other._type === WebInspector.LayerView.Selection.Type.ScrollRect && 134 return other._type === WebInspector.LayerView.Selection.Type.ScrollRect &&
125 this.layer().id() === other.layer().id() && this.scrollRectIndex === other.scrollRectIndex; 135 this.layer().id() === other.layer().id() && this.scrollRectIndex === other.scrollRectIndex;
126 }, 136 },
127 137
128 __proto__: WebInspector.LayerView.Selection.prototype 138 __proto__: WebInspector.LayerView.Selection.prototype
129 } 139 }
130 140
131 /** 141 /**
132 * @constructor 142 * @constructor
133 * @extends {WebInspector.LayerView.Selection} 143 * @extends {WebInspector.LayerView.Selection}
134 * @param {!WebInspector.Layer} layer 144 * @param {!WebInspector.Layer} layer
135 * @param {!WebInspector.TracingModel.Event} traceEvent 145 * @param {!WebInspector.TracingModel.Event} traceEvent
136 */ 146 */
137 WebInspector.LayerView.TileSelection = function(layer, traceEvent) 147 WebInspector.LayerView.TileSelection = function(layer, traceEvent)
138 { 148 {
139 WebInspector.LayerView.Selection.call(this, WebInspector.LayerView.Selection .Type.Tile, layer); 149 WebInspector.LayerView.Selection.call(this, WebInspector.LayerView.Selection .Type.Tile, layer);
140 this._traceEvent = traceEvent; 150 this._traceEvent = traceEvent;
141 } 151 }
142 152
143 WebInspector.LayerView.TileSelection.prototype = { 153 WebInspector.LayerView.TileSelection.prototype = {
144 /** 154 /**
145 * @override 155 * @override
146 * @param {!WebInspector.LayerView.Selection} other 156 * @param {!WebInspector.LayerView.Selection} other
147 * @return {boolean} 157 * @return {boolean}
148 */ 158 */
149 isEqual: function(other) 159 _isEqual: function(other)
150 { 160 {
151 return other._type === WebInspector.LayerView.Selection.Type.Tile 161 return other._type === WebInspector.LayerView.Selection.Type.Tile
152 && this.layer().id() === other.layer().id() && this.traceEvent === o ther.traceEvent; 162 && this.layer().id() === other.layer().id() && this.traceEvent === o ther.traceEvent;
153 }, 163 },
154 164
155 /** 165 /**
156 * @return {!WebInspector.TracingModel.Event} 166 * @return {!WebInspector.TracingModel.Event}
157 */ 167 */
158 traceEvent: function() 168 traceEvent: function()
159 { 169 {
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 this.hoverObject(null); 208 this.hoverObject(null);
199 for (var view of this._views) 209 for (var view of this._views)
200 view.setLayerTree(layerTree); 210 view.setLayerTree(layerTree);
201 }, 211 },
202 212
203 /** 213 /**
204 * @param {?WebInspector.LayerView.Selection} selection 214 * @param {?WebInspector.LayerView.Selection} selection
205 */ 215 */
206 hoverObject: function(selection) 216 hoverObject: function(selection)
207 { 217 {
208 if (this._hoveredObject === selection) 218 if (WebInspector.LayerView.Selection.isEqual(this._hoveredObject, select ion))
209 return; 219 return;
210 this._hoveredObject = selection; 220 this._hoveredObject = selection;
211 var layer = selection && selection.layer(); 221 var layer = selection && selection.layer();
212 this._toggleNodeHighlight(layer ? layer.nodeForSelfOrAncestor() : null); 222 this._toggleNodeHighlight(layer ? layer.nodeForSelfOrAncestor() : null);
213 for (var view of this._views) 223 for (var view of this._views)
214 view.hoverObject(selection); 224 view.hoverObject(selection);
215 }, 225 },
216 226
217 /** 227 /**
218 * @param {?WebInspector.LayerView.Selection} selection 228 * @param {?WebInspector.LayerView.Selection} selection
219 */ 229 */
220 selectObject: function(selection) 230 selectObject: function(selection)
221 { 231 {
222 if (this._selectedObject === selection) 232 if (WebInspector.LayerView.Selection.isEqual(this._selectedObject, selec tion))
223 return; 233 return;
224 this._selectedObject = selection; 234 this._selectedObject = selection;
225 for (var view of this._views) 235 for (var view of this._views)
226 view.selectObject(selection); 236 view.selectObject(selection);
227 }, 237 },
228 238
229 /** 239 /**
230 * @return {?WebInspector.LayerView.Selection} 240 * @return {?WebInspector.LayerView.Selection}
231 */ 241 */
232 selection: function() 242 selection: function()
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
266 _toggleNodeHighlight: function(node) 276 _toggleNodeHighlight: function(node)
267 { 277 {
268 if (node) { 278 if (node) {
269 node.highlightForTwoSeconds(); 279 node.highlightForTwoSeconds();
270 return; 280 return;
271 } 281 }
272 WebInspector.DOMModel.hideDOMNodeHighlight(); 282 WebInspector.DOMModel.hideDOMNodeHighlight();
273 } 283 }
274 } 284 }
275 285
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698