| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |