Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(432)

Side by Side Diff: Source/core/inspector/InspectorLayerTreeAgent.cpp

Issue 166273018: Added showing slow scroll rectangles in Layers panel. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Fixed test. Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2012 Apple Inc. All rights reserved. 2 * Copyright (C) 2012 Apple Inc. All rights reserved.
3 * Copyright (C) 2013 Google Inc. All rights reserved. 3 * Copyright (C) 2013 Google Inc. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are 6 * modification, are permitted provided that the following conditions are
7 * met: 7 * met:
8 * 8 *
9 * * Redistributions of source code must retain the above copyright 9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 } 70 }
71 int layerId; 71 int layerId;
72 RefPtr<GraphicsContextSnapshot> graphicsSnapshot; 72 RefPtr<GraphicsContextSnapshot> graphicsSnapshot;
73 }; 73 };
74 74
75 inline String idForLayer(const GraphicsLayer* graphicsLayer) 75 inline String idForLayer(const GraphicsLayer* graphicsLayer)
76 { 76 {
77 return String::number(graphicsLayer->platformLayer()->id()); 77 return String::number(graphicsLayer->platformLayer()->id());
78 } 78 }
79 79
80 static PassRefPtr<TypeBuilder::LayerTree::ScrollRect> buildScrollRect(const blin k::WebRect& rect, const TypeBuilder::LayerTree::ScrollRect::Type::Enum& type)
81 {
82 RefPtr<TypeBuilder::DOM::Rect> rectObject = TypeBuilder::DOM::Rect::create()
83 .setX(rect.x)
84 .setY(rect.y)
85 .setHeight(rect.height)
86 .setWidth(rect.width);
87 RefPtr<TypeBuilder::LayerTree::ScrollRect> scrollRectObject = TypeBuilder::L ayerTree::ScrollRect::create()
88 .setRect(rectObject.release())
89 .setType(type);
90 return scrollRectObject.release();
91 }
92
93 static PassRefPtr<TypeBuilder::Array<TypeBuilder::LayerTree::ScrollRect> > build ScrollRectsForLayer(GraphicsLayer* graphicsLayer)
94 {
95 RefPtr<TypeBuilder::Array<TypeBuilder::LayerTree::ScrollRect> > scrollRects = TypeBuilder::Array<TypeBuilder::LayerTree::ScrollRect>::create();
96 blink::WebLayer* webLayer = graphicsLayer->platformLayer();
97 for (size_t i = 0; i < webLayer->nonFastScrollableRegion().size(); ++i) {
98 scrollRects->addItem(buildScrollRect(webLayer->nonFastScrollableRegion() [i], TypeBuilder::LayerTree::ScrollRect::Type::RepaintsOnScroll));
99 }
100 for (size_t i = 0; i < webLayer->touchEventHandlerRegion().size(); ++i) {
101 scrollRects->addItem(buildScrollRect(webLayer->touchEventHandlerRegion() [i], TypeBuilder::LayerTree::ScrollRect::Type::TouchEventHandler));
102 }
103 if (webLayer->haveWheelEventHandlers()) {
104 blink::WebRect webRect(webLayer->position().x, webLayer->position().y, w ebLayer->bounds().width, webLayer->bounds().height);
105 scrollRects->addItem(buildScrollRect(webRect, TypeBuilder::LayerTree::Sc rollRect::Type::WheelEventHandler));
106 }
107 return scrollRects->length() ? scrollRects.release() : nullptr;
108 }
109
80 static PassRefPtr<TypeBuilder::LayerTree::Layer> buildObjectForLayer(GraphicsLay er* graphicsLayer, BackendNodeId nodeId) 110 static PassRefPtr<TypeBuilder::LayerTree::Layer> buildObjectForLayer(GraphicsLay er* graphicsLayer, BackendNodeId nodeId)
81 { 111 {
82 blink::WebLayer* webLayer = graphicsLayer->platformLayer(); 112 blink::WebLayer* webLayer = graphicsLayer->platformLayer();
83 RefPtr<TypeBuilder::LayerTree::Layer> layerObject = TypeBuilder::LayerTree:: Layer::create() 113 RefPtr<TypeBuilder::LayerTree::Layer> layerObject = TypeBuilder::LayerTree:: Layer::create()
84 .setLayerId(idForLayer(graphicsLayer)) 114 .setLayerId(idForLayer(graphicsLayer))
85 .setOffsetX(webLayer->position().x) 115 .setOffsetX(webLayer->position().x)
86 .setOffsetY(webLayer->position().y) 116 .setOffsetY(webLayer->position().y)
87 .setWidth(webLayer->bounds().width) 117 .setWidth(webLayer->bounds().width)
88 .setHeight(webLayer->bounds().height) 118 .setHeight(webLayer->bounds().height)
89 .setPaintCount(graphicsLayer->paintCount()); 119 .setPaintCount(graphicsLayer->paintCount());
(...skipping 14 matching lines...) Expand all
104 transform.toColumnMajorFloatArray(flattenedMatrix); 134 transform.toColumnMajorFloatArray(flattenedMatrix);
105 RefPtr<TypeBuilder::Array<double> > transformArray = TypeBuilder::Array< double>::create(); 135 RefPtr<TypeBuilder::Array<double> > transformArray = TypeBuilder::Array< double>::create();
106 for (size_t i = 0; i < WTF_ARRAY_LENGTH(flattenedMatrix); ++i) 136 for (size_t i = 0; i < WTF_ARRAY_LENGTH(flattenedMatrix); ++i)
107 transformArray->addItem(flattenedMatrix[i]); 137 transformArray->addItem(flattenedMatrix[i]);
108 layerObject->setTransform(transformArray); 138 layerObject->setTransform(transformArray);
109 const FloatPoint3D& anchor = graphicsLayer->anchorPoint(); 139 const FloatPoint3D& anchor = graphicsLayer->anchorPoint();
110 layerObject->setAnchorX(anchor.x()); 140 layerObject->setAnchorX(anchor.x());
111 layerObject->setAnchorY(anchor.y()); 141 layerObject->setAnchorY(anchor.y());
112 layerObject->setAnchorZ(anchor.z()); 142 layerObject->setAnchorZ(anchor.z());
113 } 143 }
144 RefPtr<TypeBuilder::Array<TypeBuilder::LayerTree::ScrollRect> > scrollRects = buildScrollRectsForLayer(graphicsLayer);
145 if (scrollRects)
146 layerObject->setScrollRects(scrollRects.release());
114 return layerObject; 147 return layerObject;
115 } 148 }
116 149
117 InspectorLayerTreeAgent::InspectorLayerTreeAgent(InspectorDOMAgent* domAgent, Pa ge* page) 150 InspectorLayerTreeAgent::InspectorLayerTreeAgent(InspectorDOMAgent* domAgent, Pa ge* page)
118 : InspectorBaseAgent<InspectorLayerTreeAgent>("LayerTree") 151 : InspectorBaseAgent<InspectorLayerTreeAgent>("LayerTree")
119 , m_frontend(0) 152 , m_frontend(0)
120 , m_page(page) 153 , m_page(page)
121 , m_domAgent(domAgent) 154 , m_domAgent(domAgent)
122 { 155 {
123 } 156 }
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
178 } 211 }
179 212
180 PassRefPtr<TypeBuilder::Array<TypeBuilder::LayerTree::Layer> > InspectorLayerTre eAgent::buildLayerTree(const String& nodeGroup) 213 PassRefPtr<TypeBuilder::Array<TypeBuilder::LayerTree::Layer> > InspectorLayerTre eAgent::buildLayerTree(const String& nodeGroup)
181 { 214 {
182 RenderLayerCompositor* compositor = renderLayerCompositor(); 215 RenderLayerCompositor* compositor = renderLayerCompositor();
183 if (!compositor || !compositor->inCompositingMode()) 216 if (!compositor || !compositor->inCompositingMode())
184 return nullptr; 217 return nullptr;
185 ASSERT(!compositor->compositingLayersNeedRebuild()); 218 ASSERT(!compositor->compositingLayersNeedRebuild());
186 219
187 LayerIdToNodeIdMap layerIdToNodeIdMap; 220 LayerIdToNodeIdMap layerIdToNodeIdMap;
221 RefPtr<TypeBuilder::Array<TypeBuilder::LayerTree::Layer> > layers = TypeBuil der::Array<TypeBuilder::LayerTree::Layer>::create();
188 buildLayerIdToNodeIdMap(compositor->rootRenderLayer(), nodeGroup, layerIdToN odeIdMap); 222 buildLayerIdToNodeIdMap(compositor->rootRenderLayer(), nodeGroup, layerIdToN odeIdMap);
189 RefPtr<TypeBuilder::Array<TypeBuilder::LayerTree::Layer> > layers = TypeBuil der::Array<TypeBuilder::LayerTree::Layer>::create();
190 gatherGraphicsLayers(compositor->rootGraphicsLayer(), layerIdToNodeIdMap, la yers); 223 gatherGraphicsLayers(compositor->rootGraphicsLayer(), layerIdToNodeIdMap, la yers);
191 return layers.release(); 224 return layers.release();
192 } 225 }
193 226
194 void InspectorLayerTreeAgent::buildLayerIdToNodeIdMap(RenderLayer* root, const S tring& nodeGroup, LayerIdToNodeIdMap& layerIdToNodeIdMap) 227 void InspectorLayerTreeAgent::buildLayerIdToNodeIdMap(RenderLayer* root, const S tring& nodeGroup, LayerIdToNodeIdMap& layerIdToNodeIdMap)
195 { 228 {
196 if (root->hasCompositedLayerMapping()) { 229 if (root->hasCompositedLayerMapping()) {
197 if (Node* node = root->renderer()->generatingNode()) { 230 if (Node* node = root->renderer()->generatingNode()) {
198 GraphicsLayer* graphicsLayer = root->compositedLayerMapping()->child ForSuperlayers(); 231 GraphicsLayer* graphicsLayer = root->compositedLayerMapping()->child ForSuperlayers();
199 layerIdToNodeIdMap.set(graphicsLayer->platformLayer()->id(), idForNo de(node, nodeGroup)); 232 layerIdToNodeIdMap.set(graphicsLayer->platformLayer()->id(), idForNo de(node, nodeGroup));
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
356 void InspectorLayerTreeAgent::didRemovePageOverlay(const GraphicsLayer* layer) 389 void InspectorLayerTreeAgent::didRemovePageOverlay(const GraphicsLayer* layer)
357 { 390 {
358 size_t index = m_pageOverlayLayerIds.find(layer->platformLayer()->id()); 391 size_t index = m_pageOverlayLayerIds.find(layer->platformLayer()->id());
359 if (index == WTF::kNotFound) 392 if (index == WTF::kNotFound)
360 return; 393 return;
361 m_pageOverlayLayerIds.remove(index); 394 m_pageOverlayLayerIds.remove(index);
362 } 395 }
363 396
364 397
365 } // namespace WebCore 398 } // namespace WebCore
OLDNEW
« no previous file with comments | « LayoutTests/inspector/layers/layer-scroll-rects-update-expected.txt ('k') | Source/devtools/front_end/LayerTreeModel.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698