Chromium Code Reviews| 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) |