void gatherGraphicsLayers(GraphicsLayer* root, HashMap<int, int>& layerIdToNodeIdMap, RefPtr<TypeBuilder::Array<TypeBuilder::LayerTree::Layer> >& layers) { int layerId = root->platformLayer()->id(); layers->addItem(buildObjectForLayer(root, layerIdToNodeIdMap.get(layerId))); if (GraphicsLayer* replica = root->replicaLayer()) gatherGraphicsLayers(replica, layerIdToNodeIdMap, layers); for (size_t i = 0, size = root->children().size(); i < size; ++i) gatherGraphicsLayers(root->children()[i], layerIdToNodeIdMap, layers); }
void InspectorLayerTreeAgent::gatherGraphicsLayers(GraphicsLayer* root, HashMap<int, int>& layerIdToNodeIdMap, RefPtr<TypeBuilder::Array<TypeBuilder::LayerTree::Layer> >& layers) { int layerId = root->platformLayer()->id(); if (m_pageOverlayLayerIds.find(layerId) != WTF::kNotFound) return; layers->addItem(buildObjectForLayer(root, layerIdToNodeIdMap.get(layerId))); if (GraphicsLayer* replica = root->replicaLayer()) gatherGraphicsLayers(replica, layerIdToNodeIdMap, layers); for (size_t i = 0, size = root->children().size(); i < size; ++i) gatherGraphicsLayers(root->children()[i], layerIdToNodeIdMap, layers); }
PassRefPtr<TypeBuilder::Array<TypeBuilder::LayerTree::Layer> > InspectorLayerTreeAgent::buildLayerTree() { RenderLayerCompositor* compositor = renderLayerCompositor(); if (!compositor || !compositor->inCompositingMode()) return 0; LayerIdToNodeIdMap layerIdToNodeIdMap; RefPtr<TypeBuilder::Array<TypeBuilder::LayerTree::Layer> > layers = TypeBuilder::Array<TypeBuilder::LayerTree::Layer>::create(); buildLayerIdToNodeIdMap(compositor->rootRenderLayer(), layerIdToNodeIdMap); gatherGraphicsLayers(compositor->rootGraphicsLayer(), layerIdToNodeIdMap, layers); return layers.release(); }