176c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
276c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
376c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)// found in the LICENSE file.
476c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)
576c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)/**
676c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) * @constructor
776c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) * @param {function(!WebInspector.Layer, string=)} showImageForLayerCallback
876c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) * @extends {WebInspector.SplitView}
976c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) */
1076c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)WebInspector.LayerPaintProfilerView = function(showImageForLayerCallback)
1176c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles){
1276c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)    WebInspector.SplitView.call(this, true, false);
1376c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)
1476c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)    this._showImageForLayerCallback = showImageForLayerCallback;
1576c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)    this._logTreeView = new WebInspector.PaintProfilerCommandLogView();
1676c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)    this._logTreeView.show(this.sidebarElement());
1776c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)    this._paintProfilerView = new WebInspector.PaintProfilerView(this._showImage.bind(this));
1876c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)    this._paintProfilerView.show(this.mainElement());
1976c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)
2076c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)    this._paintProfilerView.addEventListener(WebInspector.PaintProfilerView.Events.WindowChanged, this._onWindowChanged, this);
2176c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)}
2276c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)
2376c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)WebInspector.LayerPaintProfilerView.prototype = {
2476c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)    /**
2576c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)     * @param {!WebInspector.Layer} layer
2676c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)     */
2776c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)    profileLayer: function(layer)
2876c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)    {
2976c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)        layer.requestSnapshot(onSnapshotDone.bind(this));
3076c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)
3176c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)        /**
3276c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)         * @param {!WebInspector.PaintProfilerSnapshot=} snapshot
3376c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)         * @this {WebInspector.LayerPaintProfilerView}
3476c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)         */
3576c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)        function onSnapshotDone(snapshot)
3676c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)        {
3776c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)            this._layer = layer;
3876c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)            this._paintProfilerView.setSnapshot(snapshot || null);
3976c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)            this._logTreeView.setSnapshot(snapshot || null);
4076c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)        }
4176c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)    },
4276c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)
4376c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)    _onWindowChanged: function()
4476c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)    {
4576c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)        var window = this._paintProfilerView.windowBoundaries();
4676c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)        this._logTreeView.updateWindow(window.left, window.right);
4776c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)    },
4876c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)
4976c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)    /**
5076c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)     * @param {string=} imageURL
5176c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)     */
5276c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)    _showImage: function(imageURL)
5376c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)    {
5476c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)        this._showImageForLayerCallback(this._layer, imageURL);
5576c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)    },
5676c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)
5776c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)    __proto__: WebInspector.SplitView.prototype
5876c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)};
5976c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)
60