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

Side by Side Diff: Source/core/inspector/InspectorLayerTreeAgent.cpp

Issue 684373003: Fixing crashes in layout tests when virtual-viewport is enabled. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 1 month 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 unified diff | Download patch
« no previous file with comments | « Source/core/inspector/InspectorLayerTreeAgent.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 16 matching lines...) Expand all
27 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 */ 30 */
31 31
32 #include "config.h" 32 #include "config.h"
33 33
34 #include "core/inspector/InspectorLayerTreeAgent.h" 34 #include "core/inspector/InspectorLayerTreeAgent.h"
35 35
36 #include "core/dom/Document.h" 36 #include "core/dom/Document.h"
37 #include "core/frame/FrameHost.h"
37 #include "core/frame/LocalFrame.h" 38 #include "core/frame/LocalFrame.h"
39 #include "core/frame/Settings.h"
38 #include "core/inspector/IdentifiersFactory.h" 40 #include "core/inspector/IdentifiersFactory.h"
39 #include "core/inspector/InspectorNodeIds.h" 41 #include "core/inspector/InspectorNodeIds.h"
40 #include "core/inspector/InspectorState.h" 42 #include "core/inspector/InspectorState.h"
41 #include "core/inspector/InstrumentingAgents.h" 43 #include "core/inspector/InstrumentingAgents.h"
42 #include "core/loader/DocumentLoader.h" 44 #include "core/loader/DocumentLoader.h"
43 #include "core/page/Page.h" 45 #include "core/page/Page.h"
44 #include "core/rendering/RenderPart.h" 46 #include "core/rendering/RenderPart.h"
45 #include "core/rendering/RenderView.h" 47 #include "core/rendering/RenderView.h"
46 #include "core/rendering/compositing/CompositedLayerMapping.h" 48 #include "core/rendering/compositing/CompositedLayerMapping.h"
47 #include "core/rendering/compositing/RenderLayerCompositor.h" 49 #include "core/rendering/compositing/RenderLayerCompositor.h"
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
214 216
215 PassRefPtr<TypeBuilder::Array<TypeBuilder::LayerTree::Layer> > InspectorLayerTre eAgent::buildLayerTree() 217 PassRefPtr<TypeBuilder::Array<TypeBuilder::LayerTree::Layer> > InspectorLayerTre eAgent::buildLayerTree()
216 { 218 {
217 RenderLayerCompositor* compositor = renderLayerCompositor(); 219 RenderLayerCompositor* compositor = renderLayerCompositor();
218 if (!compositor || !compositor->inCompositingMode()) 220 if (!compositor || !compositor->inCompositingMode())
219 return nullptr; 221 return nullptr;
220 222
221 LayerIdToNodeIdMap layerIdToNodeIdMap; 223 LayerIdToNodeIdMap layerIdToNodeIdMap;
222 RefPtr<TypeBuilder::Array<TypeBuilder::LayerTree::Layer> > layers = TypeBuil der::Array<TypeBuilder::LayerTree::Layer>::create(); 224 RefPtr<TypeBuilder::Array<TypeBuilder::LayerTree::Layer> > layers = TypeBuil der::Array<TypeBuilder::LayerTree::Layer>::create();
223 buildLayerIdToNodeIdMap(compositor->rootRenderLayer(), layerIdToNodeIdMap); 225 buildLayerIdToNodeIdMap(compositor->rootRenderLayer(), layerIdToNodeIdMap);
224 gatherGraphicsLayers(compositor->rootGraphicsLayer(), layerIdToNodeIdMap, la yers); 226 gatherGraphicsLayers(rootGraphicsLayer(), layerIdToNodeIdMap, layers);
225 return layers.release(); 227 return layers.release();
226 } 228 }
227 229
228 void InspectorLayerTreeAgent::buildLayerIdToNodeIdMap(RenderLayer* root, LayerId ToNodeIdMap& layerIdToNodeIdMap) 230 void InspectorLayerTreeAgent::buildLayerIdToNodeIdMap(RenderLayer* root, LayerId ToNodeIdMap& layerIdToNodeIdMap)
229 { 231 {
230 if (root->hasCompositedLayerMapping()) { 232 if (root->hasCompositedLayerMapping()) {
231 if (Node* node = root->renderer()->generatingNode()) { 233 if (Node* node = root->renderer()->generatingNode()) {
232 GraphicsLayer* graphicsLayer = root->compositedLayerMapping()->child ForSuperlayers(); 234 GraphicsLayer* graphicsLayer = root->compositedLayerMapping()->child ForSuperlayers();
233 layerIdToNodeIdMap.set(graphicsLayer->platformLayer()->id(), idForNo de(node)); 235 layerIdToNodeIdMap.set(graphicsLayer->platformLayer()->id(), idForNo de(node));
234 } 236 }
(...skipping 26 matching lines...) Expand all
261 return InspectorNodeIds::idForNode(node); 263 return InspectorNodeIds::idForNode(node);
262 } 264 }
263 265
264 RenderLayerCompositor* InspectorLayerTreeAgent::renderLayerCompositor() 266 RenderLayerCompositor* InspectorLayerTreeAgent::renderLayerCompositor()
265 { 267 {
266 RenderView* renderView = m_page->deprecatedLocalMainFrame()->contentRenderer (); 268 RenderView* renderView = m_page->deprecatedLocalMainFrame()->contentRenderer ();
267 RenderLayerCompositor* compositor = renderView ? renderView->compositor() : 0; 269 RenderLayerCompositor* compositor = renderView ? renderView->compositor() : 0;
268 return compositor; 270 return compositor;
269 } 271 }
270 272
273 GraphicsLayer* InspectorLayerTreeAgent::rootGraphicsLayer()
274 {
275 if (m_page->settings().pinchVirtualViewportEnabled())
276 return m_page->frameHost().pinchViewport().rootGraphicsLayer();
277
278 return renderLayerCompositor()->rootGraphicsLayer();
279 }
280
271 static GraphicsLayer* findLayerById(GraphicsLayer* root, int layerId) 281 static GraphicsLayer* findLayerById(GraphicsLayer* root, int layerId)
272 { 282 {
273 if (root->platformLayer()->id() == layerId) 283 if (root->platformLayer()->id() == layerId)
274 return root; 284 return root;
275 if (root->replicaLayer()) { 285 if (root->replicaLayer()) {
276 if (GraphicsLayer* layer = findLayerById(root->replicaLayer(), layerId)) 286 if (GraphicsLayer* layer = findLayerById(root->replicaLayer(), layerId))
277 return layer; 287 return layer;
278 } 288 }
279 for (size_t i = 0, size = root->children().size(); i < size; ++i) { 289 for (size_t i = 0, size = root->children().size(); i < size; ++i) {
280 if (GraphicsLayer* layer = findLayerById(root->children()[i], layerId)) 290 if (GraphicsLayer* layer = findLayerById(root->children()[i], layerId))
281 return layer; 291 return layer;
282 } 292 }
283 return 0; 293 return 0;
284 } 294 }
285 295
286 GraphicsLayer* InspectorLayerTreeAgent::layerById(ErrorString* errorString, cons t String& layerId) 296 GraphicsLayer* InspectorLayerTreeAgent::layerById(ErrorString* errorString, cons t String& layerId)
287 { 297 {
288 bool ok; 298 bool ok;
289 int id = layerId.toInt(&ok); 299 int id = layerId.toInt(&ok);
290 if (!ok) { 300 if (!ok) {
291 *errorString = "Invalid layer id"; 301 *errorString = "Invalid layer id";
292 return 0; 302 return 0;
293 } 303 }
294 RenderLayerCompositor* compositor = renderLayerCompositor(); 304 RenderLayerCompositor* compositor = renderLayerCompositor();
295 if (!compositor) { 305 if (!compositor) {
296 *errorString = "Not in compositing mode"; 306 *errorString = "Not in compositing mode";
297 return 0; 307 return 0;
298 } 308 }
299 309
300 GraphicsLayer* result = findLayerById(compositor->rootGraphicsLayer(), id); 310 GraphicsLayer* result = findLayerById(rootGraphicsLayer(), id);
301 if (!result) 311 if (!result)
302 *errorString = "No layer matching given id found"; 312 *errorString = "No layer matching given id found";
303 return result; 313 return result;
304 } 314 }
305 315
306 void InspectorLayerTreeAgent::compositingReasons(ErrorString* errorString, const String& layerId, RefPtr<TypeBuilder::Array<String> >& reasonStrings) 316 void InspectorLayerTreeAgent::compositingReasons(ErrorString* errorString, const String& layerId, RefPtr<TypeBuilder::Array<String> >& reasonStrings)
307 { 317 {
308 const GraphicsLayer* graphicsLayer = layerById(errorString, layerId); 318 const GraphicsLayer* graphicsLayer = layerById(errorString, layerId);
309 if (!graphicsLayer) 319 if (!graphicsLayer)
310 return; 320 return;
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
423 void InspectorLayerTreeAgent::didRemovePageOverlay(const GraphicsLayer* layer) 433 void InspectorLayerTreeAgent::didRemovePageOverlay(const GraphicsLayer* layer)
424 { 434 {
425 size_t index = m_pageOverlayLayerIds.find(layer->platformLayer()->id()); 435 size_t index = m_pageOverlayLayerIds.find(layer->platformLayer()->id());
426 if (index == WTF::kNotFound) 436 if (index == WTF::kNotFound)
427 return; 437 return;
428 m_pageOverlayLayerIds.remove(index); 438 m_pageOverlayLayerIds.remove(index);
429 } 439 }
430 440
431 441
432 } // namespace blink 442 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/inspector/InspectorLayerTreeAgent.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698