Chromium Code Reviews| Index: Source/devtools/front_end/Layers3DView.js |
| diff --git a/Source/devtools/front_end/Layers3DView.js b/Source/devtools/front_end/Layers3DView.js |
| index 0ba03ccf3652e9198f5530eba4362e9a849770e6..8107b60ab19c9cabde2eafd2f7a491552a40ead9 100644 |
| --- a/Source/devtools/front_end/Layers3DView.js |
| +++ b/Source/devtools/front_end/Layers3DView.js |
| @@ -50,6 +50,7 @@ WebInspector.Layers3DView = function(model) |
| this.element.addEventListener("dblclick", this._onDoubleClick.bind(this), false); |
| this.element.addEventListener("click", this._onClick.bind(this), false); |
| this._elementsByLayerId = {}; |
| + this._scrollRectElementsByLayerId = {} |
| this._rotateX = 0; |
| this._rotateY = 0; |
| this._scaleAdjustmentStylesheet = this.element.ownerDocument.head.createChild("style"); |
| @@ -82,6 +83,15 @@ WebInspector.Layers3DView.PaintRectColors = [ |
| WebInspector.Color.fromRGBA([0, 0xFF, 0, 0x3F]) |
| ] |
| +/** |
| + * @enum {string} |
| + */ |
| +WebInspector.Layers3DView.ScrollRectTitles = { |
| + RepaintsOnScroll: WebInspector.UIString("repaints on scroll"), |
| + TouchEventHandler: WebInspector.UIString("touch event listener"), |
| + WheelEventHandler: WebInspector.UIString("mousewheel event listener") |
| +} |
| + |
| WebInspector.Layers3DView.prototype = { |
| onResize: function() |
| { |
| @@ -181,6 +191,64 @@ WebInspector.Layers3DView.prototype = { |
| element.style.top = ((this._clientHeight - root.height() * this._scale) >> 1) + "px"; |
| }, |
| + /** |
| + * @param {!Element} element |
| + */ |
| + _removeElement: function(element) |
| + { |
| + element.remove() |
| + }, |
| + |
| + /** |
| + * @param {!string} layerId |
| + */ |
| + _removeScrollRects: function(layerId) |
| + { |
| + this._scrollRectElementsByLayerId[layerId].forEach(this._removeElement); |
| + delete this._scrollRectElementsByLayerId[layerId]; |
| + }, |
| + |
| + /** |
| + * @param {!LayerTreeAgent.ScrollRect} scrollRect |
| + * @param {!WebInspector.Layer} layer |
| + * @return {!Element} |
| + */ |
| + _createScrollRectElement: function(scrollRect, layer) |
| + { |
| + var element = document.createElement("div"); |
| + var style = element.style; |
| + var parentLayerId = layer.nodeId() ? layer.id() : this._model.contentRoot().id(); |
| + var parentLayerElement = this._elementsByLayerId[parentLayerId]; |
| + element.className = "scroll-rect"; |
| + element.title = WebInspector.Layers3DView.ScrollRectTitles[scrollRect.type]; |
| + style.width = scrollRect.rect.width + "px"; |
| + style.height = scrollRect.rect.height + "px"; |
| + style.left = scrollRect.rect.x + "px"; |
| + style.top = scrollRect.rect.y + "px"; |
| + parentLayerElement.appendChild(element); |
| + element.__scrollRect = scrollRect; |
| + return element; |
| + }, |
| + |
| + /** |
| + * @param {!WebInspector.Layer} layer |
| + */ |
| + _updateScrollRectsForLayer: function(layer) |
| + { |
| + if (!this._scrollRectElementsByLayerId[layer.id()]) |
|
caseq
2014/02/27 13:46:55
weird indent
malch
2014/02/27 14:58:59
Done.
|
| + this._scrollRectElementsByLayerId[layer.id()] = []; |
| + var newScrollRects = layer.scrollRects(), scrollRectElements = this._scrollRectElementsByLayerId[layer.id()]; |
|
caseq
2014/02/27 13:46:55
please split into two lines
malch
2014/02/27 14:58:59
Done.
|
| + for (var i = 0; i < newScrollRects.length; ++i) { |
| + if (i >= scrollRectElements.length) { |
| + scrollRectElements.push(this._createScrollRectElement(newScrollRects[i], layer)); |
| + } else if (newScrollRects[i] != scrollRectElements[i].__scrollRect) { |
| + scrollRectElements[i].remove(); |
| + scrollRectElements[i] = this._createScrollRectElement(newScrollRects[i], layer); |
| + } |
| + } |
| + scrollRectElements.splice(newScrollRects.length).forEach(this._removeElement); |
| + }, |
| + |
| _update: function() |
| { |
| if (!this.isShowing()) { |
| @@ -208,9 +276,11 @@ WebInspector.Layers3DView.prototype = { |
| continue; |
| this._elementsByLayerId[layerId].remove(); |
| delete this._elementsByLayerId[layerId]; |
| + this._removeScrollRects(layerId); |
| } |
| this._scaleToFit(); |
| this._model.forEachLayer(updateLayer.bind(this), this._model.contentRoot()); |
| + this._model.forEachLayer(this._updateScrollRectsForLayer.bind(this)); |
| this._needsUpdate = false; |
| }, |
| @@ -284,6 +354,9 @@ WebInspector.Layers3DView.prototype = { |
| } |
| }, |
| + /** |
| + * @param {!Element} element |
| + */ |
| _updatePaintRect: function(element) |
| { |
| var details = element.__layerDetails; |