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 |