1c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)/* 2c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * Copyright (C) 2013 Google Inc. All rights reserved. 3c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * 4c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * Redistribution and use in source and binary forms, with or without 5c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * modification, are permitted provided that the following conditions are 6c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * met: 7c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * 8c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * * Redistributions of source code must retain the above copyright 9c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * notice, this list of conditions and the following disclaimer. 10c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * * Redistributions in binary form must reproduce the above 11c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * copyright notice, this list of conditions and the following disclaimer 12c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * in the documentation and/or other materials provided with the 13c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * distribution. 14c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * * Neither the name of Google Inc. nor the names of its 15c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * contributors may be used to endorse or promote products derived from 16c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * this software without specific prior written permission. 17c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * 18c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) */ 30c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) 31c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)/** 32c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * @constructor 33d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @extends {WebInspector.VBox} 34c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) */ 35d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)WebInspector.LayerDetailsView = function() 36c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles){ 37d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) WebInspector.VBox.call(this); 38c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) this.element.classList.add("layer-details-view"); 39c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) this._emptyView = new WebInspector.EmptyView(WebInspector.UIString("Select a layer to see its details")); 40c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) this._createTable(); 41c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)} 42c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) 43c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)/** 4410f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch * @enum {string} 4510f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch */ 4610f88d5669dbd969c059d61ba09fa37dd72ac559Ben MurdochWebInspector.LayerDetailsView.Events = { 4710f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch ObjectSelected: "ObjectSelected" 4810f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch} 4910f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch 5010f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch/** 51a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @type {!Object.<string, string>} 52c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) */ 53c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)WebInspector.LayerDetailsView.CompositingReasonDetail = { 54c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) "transform3D": WebInspector.UIString("Composition due to association with an element with a CSS 3D transform."), 55c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) "video": WebInspector.UIString("Composition due to association with a <video> element."), 56c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) "canvas": WebInspector.UIString("Composition due to the element being a <canvas> element."), 57c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) "plugin": WebInspector.UIString("Composition due to association with a plugin."), 58c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) "iFrame": WebInspector.UIString("Composition due to association with an <iframe> element."), 59c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) "backfaceVisibilityHidden": WebInspector.UIString("Composition due to association with an element with a \"backface-visibility: hidden\" style."), 60c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) "animation": WebInspector.UIString("Composition due to association with an animated element."), 61c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) "filters": WebInspector.UIString("Composition due to association with an element with CSS filters applied."), 62c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) "positionFixed": WebInspector.UIString("Composition due to association with an element with a \"position: fixed\" style."), 63c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) "positionSticky": WebInspector.UIString("Composition due to association with an element with a \"position: sticky\" style."), 64c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) "overflowScrollingTouch": WebInspector.UIString("Composition due to association with an element with a \"overflow-scrolling: touch\" style."), 65c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) "blending": WebInspector.UIString("Composition due to association with an element that has blend mode other than \"normal\"."), 66c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) "assumedOverlap": WebInspector.UIString("Composition due to association with an element that may overlap other composited elements."), 67c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) "overlap": WebInspector.UIString("Composition due to association with an element overlapping other composited elements."), 68c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) "negativeZIndexChildren": WebInspector.UIString("Composition due to association with an element with descendants that have a negative z-index."), 69c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) "transformWithCompositedDescendants": WebInspector.UIString("Composition due to association with an element with composited descendants."), 70c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) "opacityWithCompositedDescendants": WebInspector.UIString("Composition due to association with an element with opacity applied and composited descendants."), 71c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) "maskWithCompositedDescendants": WebInspector.UIString("Composition due to association with a masked element and composited descendants."), 72c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) "reflectionWithCompositedDescendants": WebInspector.UIString("Composition due to association with an element with a reflection and composited descendants."), 73c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) "filterWithCompositedDescendants": WebInspector.UIString("Composition due to association with an element with CSS filters applied and composited descendants."), 74c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) "blendingWithCompositedDescendants": WebInspector.UIString("Composition due to association with an element with CSS blending applied and composited descendants."), 75c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) "clipsCompositingDescendants": WebInspector.UIString("Composition due to association with an element clipping compositing descendants."), 76c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) "perspective": WebInspector.UIString("Composition due to association with an element with perspective applied."), 77c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) "preserve3D": WebInspector.UIString("Composition due to association with an element with a \"transform-style: preserve-3d\" style."), 78c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) "root": WebInspector.UIString("Root layer."), 79c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) "layerForClip": WebInspector.UIString("Layer for clip."), 80c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) "layerForScrollbar": WebInspector.UIString("Layer for scrollbar."), 81c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) "layerForScrollingContainer": WebInspector.UIString("Layer for scrolling container."), 82c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) "layerForForeground": WebInspector.UIString("Layer for foreground."), 83c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) "layerForBackground": WebInspector.UIString("Layer for background."), 84c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) "layerForMask": WebInspector.UIString("Layer for mask."), 85c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) "layerForVideoOverlay": WebInspector.UIString("Layer for video overlay.") 86c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)}; 87c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) 88c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)WebInspector.LayerDetailsView.prototype = { 89c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) /** 90d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) * @param {!WebInspector.Layers3DView.ActiveObject} activeObject 91c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) */ 9210f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch setObject: function(activeObject) 93c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) { 9410f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch this._layer = activeObject ? activeObject.layer : null; 9510f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch this._scrollRectIndex = activeObject ? activeObject.scrollRectIndex : null; 9609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) if (this.isShowing()) 97d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) this.update(); 9809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) }, 9909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 10009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) wasShown: function() 10109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) { 10209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) WebInspector.View.prototype.wasShown.call(this); 103d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) this.update(); 10409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) }, 10509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 10610f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch /** 10710f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch * @param {number} index 10810f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch * @param {?Event} event 10910f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch */ 11010f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch _onScrollRectClicked: function(index, event) 11110f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch { 11210f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch if (event.which !== 1) 11310f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch return; 11410f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch this.dispatchEventToListeners(WebInspector.LayerDetailsView.Events.ObjectSelected, {layer: this._layer, scrollRectIndex: index}); 11510f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch }, 11610f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch 11710f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch /** 11810f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch * @param {!LayerTreeAgent.ScrollRect} scrollRect 11910f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch * @param {number} index 12010f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch */ 12110f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch _createScrollRectElement: function(scrollRect, index) 12210f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch { 12310f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch if (index) 12410f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch this._scrollRectsCell.createTextChild(", "); 12510f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch var element = this._scrollRectsCell.createChild("span"); 12610f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch element.className = index === this._scrollRectIndex ? "scroll-rect active" : "scroll-rect"; 12710f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch element.textContent = WebInspector.LayerTreeModel.ScrollRectType[scrollRect.type].description + " (" + scrollRect.rect.x + ", " + scrollRect.rect.y + 12810f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch ", " + scrollRect.rect.width + ", " + scrollRect.rect.height + ")"; 12910f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch element.addEventListener("click", this._onScrollRectClicked.bind(this, index), false); 13010f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch }, 13110f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch 132d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) update: function() 13309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) { 13409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) if (!this._layer) { 135c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) this._tableElement.remove(); 136c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) this._emptyView.show(this.element); 137c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) return; 138c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) } 139c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) this._emptyView.detach(); 140c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) this.element.appendChild(this._tableElement); 14109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this._positionCell.textContent = WebInspector.UIString("%d,%d", this._layer.offsetX(), this._layer.offsetY()); 14209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this._sizeCell.textContent = WebInspector.UIString("%d × %d", this._layer.width(), this._layer.height()); 14309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this._paintCountCell.textContent = this._layer.paintCount(); 144c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) const bytesPerPixel = 4; 14509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this._memoryEstimateCell.textContent = Number.bytesToString(this._layer.invisible() ? 0 : this._layer.width() * this._layer.height() * bytesPerPixel); 14609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this._layer.requestCompositingReasons(this._updateCompositingReasons.bind(this)); 14710f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch this._scrollRectsCell.removeChildren(); 14810f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch this._layer.scrollRects().forEach(this._createScrollRectElement.bind(this)); 149c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) }, 150c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) 151c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) _createTable: function() 152c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) { 153c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) this._tableElement = this.element.createChild("table"); 154c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) this._tbodyElement = this._tableElement.createChild("tbody"); 155c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) this._positionCell = this._createRow(WebInspector.UIString("Position in parent:")); 156c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) this._sizeCell = this._createRow(WebInspector.UIString("Size:")); 157c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) this._compositingReasonsCell = this._createRow(WebInspector.UIString("Compositing Reasons:")); 158c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) this._memoryEstimateCell = this._createRow(WebInspector.UIString("Memory estimate:")); 159c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) this._paintCountCell = this._createRow(WebInspector.UIString("Paint count:")); 16010f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch this._scrollRectsCell = this._createRow(WebInspector.UIString("Slow scroll regions:")); 161c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) }, 162c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) 163c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) /** 164c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * @param {string} title 165c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) */ 166c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) _createRow: function(title) 167c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) { 168c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) var tr = this._tbodyElement.createChild("tr"); 169c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) var titleCell = tr.createChild("td"); 170c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) titleCell.textContent = title; 171c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) return tr.createChild("td"); 172c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) }, 173c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) 174c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) /** 175a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Array.<string>} compositingReasons 176c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) */ 177c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) _updateCompositingReasons: function(compositingReasons) 178c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) { 179c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) if (!compositingReasons || !compositingReasons.length) { 180c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) this._compositingReasonsCell.textContent = "n/a"; 181c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) return; 182c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) } 183c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) var fragment = document.createDocumentFragment(); 184c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) for (var i = 0; i < compositingReasons.length; ++i) { 185c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) if (i) 186c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) fragment.appendChild(document.createTextNode(",")); 187c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) var span = document.createElement("span"); 188c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) span.title = WebInspector.LayerDetailsView.CompositingReasonDetail[compositingReasons[i]] || ""; 189c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) span.textContent = compositingReasons[i]; 190c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) fragment.appendChild(span); 191c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) } 192c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) this._compositingReasonsCell.removeChildren(); 193c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) this._compositingReasonsCell.appendChild(fragment); 194c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) }, 195c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) 196d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) __proto__: WebInspector.VBox.prototype 197c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)} 198