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

Unified 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: Fixes. Created 6 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: Source/core/inspector/InspectorLayerTreeAgent.cpp
diff --git a/Source/core/inspector/InspectorLayerTreeAgent.cpp b/Source/core/inspector/InspectorLayerTreeAgent.cpp
index 55762f82a85252a9ec973787903f0917f7d238f0..21479be8813fff75040a159e6d08d7aeb6289208 100644
--- a/Source/core/inspector/InspectorLayerTreeAgent.cpp
+++ b/Source/core/inspector/InspectorLayerTreeAgent.cpp
@@ -73,6 +73,44 @@ inline String idForLayer(const GraphicsLayer* graphicsLayer)
return String::number(graphicsLayer->platformLayer()->id());
}
+static void buildRegionObjects(const blink::WebVector<blink::WebRect>& regions,
pfeldman 2014/02/28 07:43:43 Builders return objects: we have buildObjectFor an
malch 2014/02/28 12:19:57 Done.
+ TypeBuilder::Array<TypeBuilder::LayerTree::ScrollRect>& scrollRects,
+ const TypeBuilder::LayerTree::ScrollRect::Type::Enum& type,
+ const TypeBuilder::LayerTree::LayerId& layerId)
pfeldman 2014/02/28 07:43:43 Looks like this is unused.
malch 2014/02/28 12:19:57 Done.
+{
+ for (size_t i = 0; i < regions.size(); ++i) {
+ RefPtr<TypeBuilder::DOM::Rect> rectObject = TypeBuilder::DOM::Rect::create()
+ .setX(regions[i].x)
+ .setY(regions[i].y)
+ .setHeight(regions[i].height)
+ .setWidth(regions[i].width);
+ RefPtr<TypeBuilder::LayerTree::ScrollRect> regionObject = TypeBuilder::LayerTree::ScrollRect::create()
+ .setRect(rectObject)
+ .setType(type);
+ scrollRects.addItem(regionObject);
+ }
+}
+
+static PassRefPtr<TypeBuilder::Array<TypeBuilder::LayerTree::ScrollRect> > buildScrollRectsForLayer(GraphicsLayer* graphicsLayer)
+{
+ RefPtr<TypeBuilder::Array<TypeBuilder::LayerTree::ScrollRect> > scrollRects = TypeBuilder::Array<TypeBuilder::LayerTree::ScrollRect>::create();
+ blink::WebLayer* webLayer = graphicsLayer->platformLayer();
+ buildRegionObjects(webLayer->nonFastScrollableRegion(), *scrollRects, TypeBuilder::LayerTree::ScrollRect::Type::RepaintsOnScroll, idForLayer(graphicsLayer));
+ buildRegionObjects(webLayer->touchEventHandlerRegion(), *scrollRects, TypeBuilder::LayerTree::ScrollRect::Type::TouchEventHandler, idForLayer(graphicsLayer));
+ if (webLayer->haveWheelEventHandlers()) {
+ RefPtr<TypeBuilder::DOM::Rect> rectObject = TypeBuilder::DOM::Rect::create()
pfeldman 2014/02/28 07:43:43 Then you would be able to reuse builder method her
malch 2014/02/28 12:19:57 Done.
+ .setX(webLayer->position().x)
+ .setY(webLayer->position().y)
+ .setHeight(webLayer->bounds().height)
+ .setWidth(webLayer->bounds().width);
+ RefPtr<TypeBuilder::LayerTree::ScrollRect> regionObject = TypeBuilder::LayerTree::ScrollRect::create()
+ .setRect(rectObject)
+ .setType(TypeBuilder::LayerTree::ScrollRect::Type::WheelEventHandler);
+ scrollRects->addItem(regionObject);
+ }
+ return scrollRects->length() ? scrollRects : nullptr;
+}
+
static PassRefPtr<TypeBuilder::LayerTree::Layer> buildObjectForLayer(GraphicsLayer* graphicsLayer, int nodeId)
{
blink::WebLayer* webLayer = graphicsLayer->platformLayer();
@@ -107,6 +145,10 @@ static PassRefPtr<TypeBuilder::LayerTree::Layer> buildObjectForLayer(GraphicsLay
layerObject->setAnchorY(anchor.y());
layerObject->setAnchorZ(anchor.z());
}
+ RefPtr<TypeBuilder::Array<TypeBuilder::LayerTree::ScrollRect> > scrollRects =
+ buildScrollRectsForLayer(graphicsLayer);
+ if (scrollRects)
+ layerObject->setScrollRects(buildScrollRectsForLayer(graphicsLayer));
pfeldman 2014/02/28 07:43:43 Why building twice, use scrollRects instead? Do y
malch 2014/02/28 12:19:57 Done.
return layerObject;
}
@@ -202,7 +244,8 @@ void InspectorLayerTreeAgent::buildLayerIdToNodeIdMap(RenderLayer* root, LayerId
}
}
-void InspectorLayerTreeAgent::gatherGraphicsLayers(GraphicsLayer* root, HashMap<int, int>& layerIdToNodeIdMap, RefPtr<TypeBuilder::Array<TypeBuilder::LayerTree::Layer> >& layers)
+void InspectorLayerTreeAgent::gatherGraphicsLayers(GraphicsLayer* root, HashMap<int, int>& layerIdToNodeIdMap,
+ RefPtr<TypeBuilder::Array<TypeBuilder::LayerTree::Layer> >& layers)
pfeldman 2014/02/28 07:43:43 no need for new line here.
malch 2014/02/28 12:19:57 Done.
{
int layerId = root->platformLayer()->id();
if (m_pageOverlayLayerIds.find(layerId) != WTF::kNotFound)

Powered by Google App Engine
This is Rietveld 408576698