| Index: Source/devtools/front_end/timeline/Layers3DView.js
|
| diff --git a/Source/devtools/front_end/timeline/Layers3DView.js b/Source/devtools/front_end/timeline/Layers3DView.js
|
| index 6ac251a9b95849dd0ff2e794ef1720bb42e428e2..a6406492ca4daf02f9059dc3c87b8b8a2e954537 100644
|
| --- a/Source/devtools/front_end/timeline/Layers3DView.js
|
| +++ b/Source/devtools/front_end/timeline/Layers3DView.js
|
| @@ -59,13 +59,10 @@ WebInspector.Layers3DView = function()
|
| WebInspector.settings.showPaintRects.addChangeListener(this._update, this);
|
| }
|
|
|
| -/** @typedef {{layer: !WebInspector.Layer, scrollRectIndex: number}|{layer: !WebInspector.Layer}} */
|
| -WebInspector.Layers3DView.ActiveObject;
|
| -
|
| /** @typedef {{borderColor: !Array.<number>, borderWidth: number}} */
|
| WebInspector.Layers3DView.LayerStyle;
|
|
|
| -/** @typedef {{layerId: string, rect: !Array.<number>, snapshot: !WebInspector.PaintProfilerSnapshot}} */
|
| +/** @typedef {{layerId: string, rect: !Array.<number>, snapshot: !WebInspector.PaintProfilerSnapshot, traceEvent: !WebInspector.TracingModel.Event}} */
|
| WebInspector.Layers3DView.PaintTile;
|
|
|
| /**
|
| @@ -82,7 +79,8 @@ WebInspector.Layers3DView.OutlineType = {
|
| WebInspector.Layers3DView.Events = {
|
| ObjectHovered: "ObjectHovered",
|
| ObjectSelected: "ObjectSelected",
|
| - LayerSnapshotRequested: "LayerSnapshotRequested"
|
| + LayerSnapshotRequested: "LayerSnapshotRequested",
|
| + JumpToPaintEventRequested: "JumpToPaintEventRequested"
|
| }
|
|
|
| /**
|
| @@ -398,7 +396,8 @@ WebInspector.Layers3DView.prototype = {
|
| {
|
| if (!this._isVisible[layer.id()])
|
| return;
|
| - var rect = new WebInspector.Layers3DView.Rectangle({layer: layer});
|
| + var activeObject = WebInspector.Layers3DView.ActiveObject.createLayerActiveObject(layer);
|
| + var rect = new WebInspector.Layers3DView.Rectangle(activeObject);
|
| var style = this._styleForLayer(layer);
|
| rect.setVertices(layer.quad(), this._depthForLayer(layer));
|
| rect.lineWidth = style.borderWidth;
|
| @@ -413,7 +412,8 @@ WebInspector.Layers3DView.prototype = {
|
| {
|
| var scrollRects = layer.scrollRects();
|
| for (var i = 0; i < scrollRects.length; ++i) {
|
| - var rect = new WebInspector.Layers3DView.Rectangle({layer: layer, scrollRectIndex: i});
|
| + var activeObject = WebInspector.Layers3DView.ActiveObject.createScrollRectActiveObject(layer, i);
|
| + var rect = new WebInspector.Layers3DView.Rectangle(activeObject);
|
| rect.calculateVerticesFromRect(layer, scrollRects[i].rect, this._calculateScrollRectDepth(layer, i));
|
| var isSelected = this._isObjectActive(WebInspector.Layers3DView.OutlineType.Selected, layer, i);
|
| var color = isSelected ? WebInspector.Layers3DView.SelectedScrollRectBackgroundColor : WebInspector.Layers3DView.ScrollRectBackgroundColor;
|
| @@ -431,7 +431,8 @@ WebInspector.Layers3DView.prototype = {
|
| var layerTexture = this._layerTexture;
|
| if (layer.id() !== layerTexture.layerId)
|
| return;
|
| - var rect = new WebInspector.Layers3DView.Rectangle({layer: layer});
|
| + var activeObject = WebInspector.Layers3DView.ActiveObject.createLayerActiveObject(layer);
|
| + var rect = new WebInspector.Layers3DView.Rectangle(activeObject);
|
| rect.setVertices(layer.quad(), this._depthForLayer(layer));
|
| rect.texture = layerTexture.texture;
|
| this._rects.push(rect);
|
| @@ -447,8 +448,9 @@ WebInspector.Layers3DView.prototype = {
|
| var tile = tiles[i];
|
| if (!tile.texture)
|
| continue;
|
| - var rect = new WebInspector.Layers3DView.Rectangle({layer: layer});
|
| - rect.calculateVerticesFromRect(layer, {x: tile.rect[0], y: tile.rect[1], width: tile.rect[2], height: tile.rect[3]}, this._depthForLayer(layer));
|
| + var activeObject = WebInspector.Layers3DView.ActiveObject.createTileActiveObject(layer, tile.traceEvent);
|
| + var rect = new WebInspector.Layers3DView.Rectangle(activeObject);
|
| + rect.calculateVerticesFromRect(layer, {x: tile.rect[0], y: tile.rect[1], width: tile.rect[2], height: tile.rect[3]}, this._depthForLayer(layer) + 1);
|
| rect.texture = tile.texture;
|
| this._rects.push(rect);
|
| }
|
| @@ -648,7 +650,9 @@ WebInspector.Layers3DView.prototype = {
|
| var activeObject = this._activeObjectFromEventPoint(event);
|
| var node = activeObject && activeObject.layer && activeObject.layer.nodeForSelfOrAncestor();
|
| var contextMenu = new WebInspector.ContextMenu(event);
|
| - contextMenu.appendItem("Reset view", this._transformController.resetAndNotify.bind(this._transformController), false);
|
| + contextMenu.appendItem(WebInspector.UIString("Reset View"), this._transformController.resetAndNotify.bind(this._transformController), false);
|
| + if (activeObject.type() === WebInspector.Layers3DView.ActiveObject.Type.Tile)
|
| + contextMenu.appendItem(WebInspector.UIString("Jump to Paint Event"), this.dispatchEventToListeners.bind(this, WebInspector.Layers3DView.Events.JumpToPaintEventRequested, activeObject.traceEvent), false);
|
| if (node)
|
| contextMenu.appendApplicableItems(node);
|
| contextMenu.show();
|
| @@ -691,8 +695,12 @@ WebInspector.Layers3DView.prototype = {
|
| _onDoubleClick: function(event)
|
| {
|
| var object = this._activeObjectFromEventPoint(event);
|
| - if (object && object.layer)
|
| - this.dispatchEventToListeners(WebInspector.Layers3DView.Events.LayerSnapshotRequested, object.layer);
|
| + if (object) {
|
| + if (object.type() == WebInspector.Layers3DView.ActiveObject.Type.Tile)
|
| + this.dispatchEventToListeners(WebInspector.Layers3DView.Events.JumpToPaintEventRequested, object.traceEvent);
|
| + else if (object.layer)
|
| + this.dispatchEventToListeners(WebInspector.Layers3DView.Events.LayerSnapshotRequested, object.layer);
|
| + }
|
| event.stopPropagation();
|
| },
|
|
|
| @@ -746,7 +754,7 @@ WebInspector.LayerTextureManager.prototype = {
|
| tilesForLayer = [];
|
| this._tilesByLayerId[layerId] = tilesForLayer;
|
| }
|
| - var tile = new WebInspector.LayerTextureManager.Tile(paintTiles[i].snapshot, paintTiles[i].rect);
|
| + var tile = new WebInspector.LayerTextureManager.Tile(paintTiles[i].snapshot, paintTiles[i].rect, paintTiles[i].traceEvent);
|
| tilesForLayer.push(tile);
|
| if (this._scale && this._gl)
|
| this._updateTile(tile);
|
| @@ -973,13 +981,81 @@ WebInspector.Layers3DView.Rectangle.prototype = {
|
|
|
| /**
|
| * @constructor
|
| + */
|
| +WebInspector.Layers3DView.ActiveObject = function()
|
| +{
|
| +}
|
| +
|
| +/**
|
| + * @enum {string}
|
| + */
|
| +WebInspector.Layers3DView.ActiveObject.Type = {
|
| + Layer: "Layer",
|
| + ScrollRect: "ScrollRect",
|
| + Tile: "Tile",
|
| +};
|
| +
|
| +/**
|
| + * @param {!WebInspector.Layer} layer
|
| + * @return {!WebInspector.Layers3DView.ActiveObject}
|
| + */
|
| +WebInspector.Layers3DView.ActiveObject.createLayerActiveObject = function(layer)
|
| +{
|
| + var activeObject = new WebInspector.Layers3DView.ActiveObject();
|
| + activeObject._type = WebInspector.Layers3DView.ActiveObject.Type.Layer;
|
| + activeObject.layer = layer;
|
| + return activeObject;
|
| +}
|
| +
|
| +/**
|
| + * @param {!WebInspector.Layer} layer
|
| + * @param {number} scrollRectIndex
|
| + * @return {!WebInspector.Layers3DView.ActiveObject}
|
| + */
|
| +WebInspector.Layers3DView.ActiveObject.createScrollRectActiveObject = function(layer, scrollRectIndex)
|
| +{
|
| + var activeObject = new WebInspector.Layers3DView.ActiveObject();
|
| + activeObject._type = WebInspector.Layers3DView.ActiveObject.Type.ScrollRect;
|
| + activeObject.layer = layer;
|
| + activeObject.scrollRectIndex = scrollRectIndex;
|
| + return activeObject;
|
| +}
|
| +
|
| +/**
|
| + * @param {!WebInspector.Layer} layer
|
| + * @param {!WebInspector.TracingModel.Event} traceEvent
|
| + * @return {!WebInspector.Layers3DView.ActiveObject}
|
| + */
|
| +WebInspector.Layers3DView.ActiveObject.createTileActiveObject = function(layer, traceEvent)
|
| +{
|
| + var activeObject = new WebInspector.Layers3DView.ActiveObject();
|
| + activeObject._type = WebInspector.Layers3DView.ActiveObject.Type.Tile;
|
| + activeObject.layer = layer;
|
| + activeObject.traceEvent = traceEvent;
|
| + return activeObject;
|
| +}
|
| +
|
| +WebInspector.Layers3DView.ActiveObject.prototype = {
|
| + /**
|
| + * @return {!WebInspector.Layers3DView.ActiveObject.Type}
|
| + */
|
| + type: function()
|
| + {
|
| + return this._type;
|
| + }
|
| +};
|
| +
|
| +/**
|
| + * @constructor
|
| * @param {!WebInspector.PaintProfilerSnapshot} snapshot
|
| * @param {!Array.<number>} rect
|
| + * @param {!WebInspector.TracingModel.Event} traceEvent
|
| */
|
| -WebInspector.LayerTextureManager.Tile = function(snapshot, rect)
|
| +WebInspector.LayerTextureManager.Tile = function(snapshot, rect, traceEvent)
|
| {
|
| this.snapshot = snapshot;
|
| this.rect = rect;
|
| + this.traceEvent = traceEvent;
|
| this.scale = 0;
|
| /** @type {?WebGLTexture} */
|
| this.texture = null;
|
|
|