// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. /** * @constructor * @param {function(!WebInspector.Layer, string=)} showImageForLayerCallback * @extends {WebInspector.SplitWidget} */ WebInspector.LayerPaintProfilerView = function(showImageForLayerCallback) { WebInspector.SplitWidget.call(this, true, false); this._showImageForLayerCallback = showImageForLayerCallback; this._logTreeView = new WebInspector.PaintProfilerCommandLogView(); this.setSidebarWidget(this._logTreeView); this._paintProfilerView = new WebInspector.PaintProfilerView(this._showImage.bind(this)); this.setMainWidget(this._paintProfilerView); this._paintProfilerView.addEventListener(WebInspector.PaintProfilerView.Events.WindowChanged, this._onWindowChanged, this); } WebInspector.LayerPaintProfilerView.prototype = { /** * @param {!WebInspector.Layer} layer */ profileLayer: function(layer) { this._logTreeView.setCommandLog(null, []); this._paintProfilerView.setSnapshotAndLog(null, [], null); /** @type {!WebInspector.AgentLayer} */ (layer).requestSnapshot(onSnapshotDone.bind(this)); /** * @param {!WebInspector.PaintProfilerSnapshot=} snapshot * @this {WebInspector.LayerPaintProfilerView} */ function onSnapshotDone(snapshot) { this._layer = layer; snapshot.commandLog(onCommandLogDone.bind(this, snapshot)); } /** * @param {!WebInspector.PaintProfilerSnapshot=} snapshot * @param {!Array.=} log * @this {WebInspector.LayerPaintProfilerView} */ function onCommandLogDone(snapshot, log) { this._logTreeView.setCommandLog(snapshot.target(), log || []); this._paintProfilerView.setSnapshotAndLog(snapshot || null, log || [], null); } }, _onWindowChanged: function() { var window = this._paintProfilerView.windowBoundaries(); this._logTreeView.updateWindow(window.left, window.right); }, /** * @param {string=} imageURL */ _showImage: function(imageURL) { this._showImageForLayerCallback(this._layer, imageURL); }, __proto__: WebInspector.SplitWidget.prototype };