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

Side by Side Diff: Source/core/rendering/RenderLayerCompositor.cpp

Issue 19019004: Set root clip layer not to maskToBounds. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Another ClipLayer rename Created 7 years, 5 months 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 | Annotate | Revision Log
« no previous file with comments | « Source/core/rendering/RenderLayerCompositor.h ('k') | Source/web/PinchViewports.h » ('j') | 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) 2009, 2010 Apple Inc. All rights reserved. 2 * Copyright (C) 2009, 2010 Apple Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after
298 void RenderLayerCompositor::didChangeVisibleRect() 298 void RenderLayerCompositor::didChangeVisibleRect()
299 { 299 {
300 GraphicsLayer* rootLayer = rootGraphicsLayer(); 300 GraphicsLayer* rootLayer = rootGraphicsLayer();
301 if (!rootLayer) 301 if (!rootLayer)
302 return; 302 return;
303 303
304 FrameView* frameView = m_renderView ? m_renderView->frameView() : 0; 304 FrameView* frameView = m_renderView ? m_renderView->frameView() : 0;
305 if (!frameView) 305 if (!frameView)
306 return; 306 return;
307 307
308 IntRect visibleRect = m_clipLayer ? IntRect(IntPoint(), frameView->contentsS ize()) : frameView->visibleContentRect(); 308 IntRect visibleRect = m_containerLayer ? IntRect(IntPoint(), frameView->cont entsSize()) : frameView->visibleContentRect();
309 if (rootLayer->visibleRectChangeRequiresFlush(visibleRect)) { 309 if (rootLayer->visibleRectChangeRequiresFlush(visibleRect)) {
310 if (Page* page = this->page()) 310 if (Page* page = this->page())
311 page->chrome().client()->scheduleCompositingLayerFlush(); 311 page->chrome().client()->scheduleCompositingLayerFlush();
312 } 312 }
313 } 313 }
314 314
315 bool RenderLayerCompositor::hasAnyAdditionalCompositedLayers(const RenderLayer* rootLayer) const 315 bool RenderLayerCompositor::hasAnyAdditionalCompositedLayers(const RenderLayer* rootLayer) const
316 { 316 {
317 return m_compositedLayerCount > (rootLayer->isComposited() ? 1 : 0); 317 return m_compositedLayerCount > (rootLayer->isComposited() ? 1 : 0);
318 } 318 }
(...skipping 806 matching lines...) Expand 10 before | Expand all | Expand 10 after
1125 } 1125 }
1126 1126
1127 void RenderLayerCompositor::frameViewDidChangeLocation(const IntPoint& contentsO ffset) 1127 void RenderLayerCompositor::frameViewDidChangeLocation(const IntPoint& contentsO ffset)
1128 { 1128 {
1129 if (m_overflowControlsHostLayer) 1129 if (m_overflowControlsHostLayer)
1130 m_overflowControlsHostLayer->setPosition(contentsOffset); 1130 m_overflowControlsHostLayer->setPosition(contentsOffset);
1131 } 1131 }
1132 1132
1133 void RenderLayerCompositor::frameViewDidChangeSize() 1133 void RenderLayerCompositor::frameViewDidChangeSize()
1134 { 1134 {
1135 if (m_clipLayer) { 1135 if (m_containerLayer) {
1136 FrameView* frameView = m_renderView->frameView(); 1136 FrameView* frameView = m_renderView->frameView();
1137 m_clipLayer->setSize(frameView->unscaledVisibleContentSize()); 1137 m_containerLayer->setSize(frameView->unscaledVisibleContentSize());
1138 1138
1139 frameViewDidScroll(); 1139 frameViewDidScroll();
1140 updateOverflowControlsLayers(); 1140 updateOverflowControlsLayers();
1141 1141
1142 #if ENABLE(RUBBER_BANDING) 1142 #if ENABLE(RUBBER_BANDING)
1143 if (m_layerForOverhangAreas) 1143 if (m_layerForOverhangAreas)
1144 m_layerForOverhangAreas->setSize(frameView->frameRect().size()); 1144 m_layerForOverhangAreas->setSize(frameView->frameRect().size());
1145 #endif 1145 #endif
1146 } 1146 }
1147 } 1147 }
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
1187 // + Frame clip 1187 // + Frame clip
1188 // + (Fixed root background) <-- Here. 1188 // + (Fixed root background) <-- Here.
1189 // + Frame scroll 1189 // + Frame scroll
1190 // + Root content layer 1190 // + Root content layer
1191 // + Scrollbars 1191 // + Scrollbars
1192 // 1192 //
1193 // That is, it needs to be the first child of the frame clip, the sibling of 1193 // That is, it needs to be the first child of the frame clip, the sibling of
1194 // the frame scroll layer. The compositor does not own the background layer, it 1194 // the frame scroll layer. The compositor does not own the background layer, it
1195 // just positions it (like the foreground layer). 1195 // just positions it (like the foreground layer).
1196 if (GraphicsLayer* backgroundLayer = fixedRootBackgroundLayer()) 1196 if (GraphicsLayer* backgroundLayer = fixedRootBackgroundLayer())
1197 m_clipLayer->addChildBelow(backgroundLayer, m_scrollLayer.get()); 1197 m_containerLayer->addChildBelow(backgroundLayer, m_scrollLayer.get());
1198 } 1198 }
1199 1199
1200 bool RenderLayerCompositor::scrollingLayerDidChange(RenderLayer* layer) 1200 bool RenderLayerCompositor::scrollingLayerDidChange(RenderLayer* layer)
1201 { 1201 {
1202 if (ScrollingCoordinator* scrollingCoordinator = this->scrollingCoordinator( )) 1202 if (ScrollingCoordinator* scrollingCoordinator = this->scrollingCoordinator( ))
1203 return scrollingCoordinator->scrollableAreaScrollLayerDidChange(layer); 1203 return scrollingCoordinator->scrollableAreaScrollLayerDidChange(layer);
1204 return false; 1204 return false;
1205 } 1205 }
1206 1206
1207 String RenderLayerCompositor::layerTreeAsText(LayerTreeFlags flags) 1207 String RenderLayerCompositor::layerTreeAsText(LayerTreeFlags flags)
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after
1484 clearBackingForLayerIncludingDescendants(m_renderView->layer()); 1484 clearBackingForLayerIncludingDescendants(m_renderView->layer());
1485 } 1485 }
1486 1486
1487 void RenderLayerCompositor::updateRootLayerPosition() 1487 void RenderLayerCompositor::updateRootLayerPosition()
1488 { 1488 {
1489 if (m_rootContentLayer) { 1489 if (m_rootContentLayer) {
1490 const IntRect& documentRect = m_renderView->documentRect(); 1490 const IntRect& documentRect = m_renderView->documentRect();
1491 m_rootContentLayer->setSize(documentRect.size()); 1491 m_rootContentLayer->setSize(documentRect.size());
1492 m_rootContentLayer->setPosition(documentRect.location()); 1492 m_rootContentLayer->setPosition(documentRect.location());
1493 } 1493 }
1494 if (m_clipLayer) { 1494 if (m_containerLayer) {
1495 FrameView* frameView = m_renderView->frameView(); 1495 FrameView* frameView = m_renderView->frameView();
1496 m_clipLayer->setSize(frameView->unscaledVisibleContentSize()); 1496 m_containerLayer->setSize(frameView->unscaledVisibleContentSize());
1497 } 1497 }
1498 1498
1499 #if ENABLE(RUBBER_BANDING) 1499 #if ENABLE(RUBBER_BANDING)
1500 if (m_contentShadowLayer) { 1500 if (m_contentShadowLayer) {
1501 m_contentShadowLayer->setPosition(m_rootContentLayer->position()); 1501 m_contentShadowLayer->setPosition(m_rootContentLayer->position());
1502 1502
1503 FloatSize rootContentLayerSize = m_rootContentLayer->size(); 1503 FloatSize rootContentLayerSize = m_rootContentLayer->size();
1504 if (m_contentShadowLayer->size() != rootContentLayerSize) { 1504 if (m_contentShadowLayer->size() != rootContentLayerSize) {
1505 m_contentShadowLayer->setSize(rootContentLayerSize); 1505 m_contentShadowLayer->setSize(rootContentLayerSize);
1506 ScrollbarTheme::theme()->setUpContentShadowLayer(m_contentShadowLaye r.get()); 1506 ScrollbarTheme::theme()->setUpContentShadowLayer(m_contentShadowLaye r.get());
(...skipping 765 matching lines...) Expand 10 before | Expand all | Expand 10 after
2272 if (!m_layerForOverhangAreas) { 2272 if (!m_layerForOverhangAreas) {
2273 m_layerForOverhangAreas = GraphicsLayer::create(graphicsLayerFactory (), this); 2273 m_layerForOverhangAreas = GraphicsLayer::create(graphicsLayerFactory (), this);
2274 #ifndef NDEBUG 2274 #ifndef NDEBUG
2275 m_layerForOverhangAreas->setName("overhang areas"); 2275 m_layerForOverhangAreas->setName("overhang areas");
2276 #endif 2276 #endif
2277 m_layerForOverhangAreas->setDrawsContent(false); 2277 m_layerForOverhangAreas->setDrawsContent(false);
2278 m_layerForOverhangAreas->setSize(m_renderView->frameView()->frameRec t().size()); 2278 m_layerForOverhangAreas->setSize(m_renderView->frameView()->frameRec t().size());
2279 2279
2280 // We want the overhang areas layer to be positioned below the frame contents, 2280 // We want the overhang areas layer to be positioned below the frame contents,
2281 // so insert it below the clip layer. 2281 // so insert it below the clip layer.
2282 m_overflowControlsHostLayer->addChildBelow(m_layerForOverhangAreas.g et(), m_clipLayer.get()); 2282 m_overflowControlsHostLayer->addChildBelow(m_layerForOverhangAreas.g et(), m_containerLayer.get());
2283 } 2283 }
2284 } else if (m_layerForOverhangAreas) { 2284 } else if (m_layerForOverhangAreas) {
2285 m_layerForOverhangAreas->removeFromParent(); 2285 m_layerForOverhangAreas->removeFromParent();
2286 m_layerForOverhangAreas = nullptr; 2286 m_layerForOverhangAreas = nullptr;
2287 } 2287 }
2288 2288
2289 if (requiresContentShadowLayer()) { 2289 if (requiresContentShadowLayer()) {
2290 if (!m_contentShadowLayer) { 2290 if (!m_contentShadowLayer) {
2291 m_contentShadowLayer = GraphicsLayer::create(graphicsLayerFactory(), this); 2291 m_contentShadowLayer = GraphicsLayer::create(graphicsLayerFactory(), this);
2292 #ifndef NDEBUG 2292 #ifndef NDEBUG
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
2372 IntRect overflowRect = m_renderView->pixelSnappedLayoutOverflowRect(); 2372 IntRect overflowRect = m_renderView->pixelSnappedLayoutOverflowRect();
2373 m_rootContentLayer->setSize(FloatSize(overflowRect.maxX(), overflowRect. maxY())); 2373 m_rootContentLayer->setSize(FloatSize(overflowRect.maxX(), overflowRect. maxY()));
2374 m_rootContentLayer->setPosition(FloatPoint()); 2374 m_rootContentLayer->setPosition(FloatPoint());
2375 2375
2376 // Need to clip to prevent transformed content showing outside this fram e 2376 // Need to clip to prevent transformed content showing outside this fram e
2377 m_rootContentLayer->setMasksToBounds(true); 2377 m_rootContentLayer->setMasksToBounds(true);
2378 } 2378 }
2379 2379
2380 if (!m_overflowControlsHostLayer) { 2380 if (!m_overflowControlsHostLayer) {
2381 ASSERT(!m_scrollLayer); 2381 ASSERT(!m_scrollLayer);
2382 ASSERT(!m_clipLayer); 2382 ASSERT(!m_containerLayer);
2383 2383
2384 // Create a layer to host the clipping layer and the overflow controls l ayers. 2384 // Create a layer to host the clipping layer and the overflow controls l ayers.
2385 m_overflowControlsHostLayer = GraphicsLayer::create(graphicsLayerFactory (), this); 2385 m_overflowControlsHostLayer = GraphicsLayer::create(graphicsLayerFactory (), this);
2386 #ifndef NDEBUG 2386 #ifndef NDEBUG
2387 m_overflowControlsHostLayer->setName("overflow controls host"); 2387 m_overflowControlsHostLayer->setName("overflow controls host");
2388 #endif 2388 #endif
2389 2389
2390 // Create a clipping layer if this is an iframe 2390 // Create a clipping layer if this is an iframe
2391 m_clipLayer = GraphicsLayer::create(graphicsLayerFactory(), this); 2391 m_containerLayer = GraphicsLayer::create(graphicsLayerFactory(), this);
2392 #ifndef NDEBUG 2392 #ifndef NDEBUG
2393 m_clipLayer->setName("frame clipping"); 2393 m_containerLayer->setName("frame clipping");
2394 #endif 2394 #endif
2395 m_clipLayer->setMasksToBounds(true); 2395 if (!isMainFrame())
2396 m_containerLayer->setMasksToBounds(true);
2396 2397
2397 m_scrollLayer = GraphicsLayer::create(graphicsLayerFactory(), this); 2398 m_scrollLayer = GraphicsLayer::create(graphicsLayerFactory(), this);
2398 #ifndef NDEBUG 2399 #ifndef NDEBUG
2399 m_scrollLayer->setName("frame scrolling"); 2400 m_scrollLayer->setName("frame scrolling");
2400 #endif 2401 #endif
2401 if (ScrollingCoordinator* scrollingCoordinator = this->scrollingCoordina tor()) 2402 if (ScrollingCoordinator* scrollingCoordinator = this->scrollingCoordina tor())
2402 scrollingCoordinator->setLayerIsContainerForFixedPositionLayers(m_sc rollLayer.get(), true); 2403 scrollingCoordinator->setLayerIsContainerForFixedPositionLayers(m_sc rollLayer.get(), true);
2403 2404
2404 // Hook them up 2405 // Hook them up
2405 m_overflowControlsHostLayer->addChild(m_clipLayer.get()); 2406 m_overflowControlsHostLayer->addChild(m_containerLayer.get());
2406 m_clipLayer->addChild(m_scrollLayer.get()); 2407 m_containerLayer->addChild(m_scrollLayer.get());
2407 m_scrollLayer->addChild(m_rootContentLayer.get()); 2408 m_scrollLayer->addChild(m_rootContentLayer.get());
2408 2409
2409 frameViewDidChangeSize(); 2410 frameViewDidChangeSize();
2410 frameViewDidScroll(); 2411 frameViewDidScroll();
2411 } 2412 }
2412 2413
2413 // Check to see if we have to change the attachment 2414 // Check to see if we have to change the attachment
2414 if (m_rootLayerAttachment != RootLayerUnattached) 2415 if (m_rootLayerAttachment != RootLayerUnattached)
2415 detachRootLayer(); 2416 detachRootLayer();
2416 2417
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
2449 m_renderView->frameView()->invalidateScrollbar(verticalScrollbar, In tRect(IntPoint(0, 0), verticalScrollbar->frameRect().size())); 2450 m_renderView->frameView()->invalidateScrollbar(verticalScrollbar, In tRect(IntPoint(0, 0), verticalScrollbar->frameRect().size()));
2450 } 2451 }
2451 2452
2452 if (m_layerForScrollCorner) { 2453 if (m_layerForScrollCorner) {
2453 m_layerForScrollCorner = nullptr; 2454 m_layerForScrollCorner = nullptr;
2454 m_renderView->frameView()->invalidateScrollCorner(m_renderView->frameVie w()->scrollCornerRect()); 2455 m_renderView->frameView()->invalidateScrollCorner(m_renderView->frameVie w()->scrollCornerRect());
2455 } 2456 }
2456 2457
2457 if (m_overflowControlsHostLayer) { 2458 if (m_overflowControlsHostLayer) {
2458 m_overflowControlsHostLayer = nullptr; 2459 m_overflowControlsHostLayer = nullptr;
2459 m_clipLayer = nullptr; 2460 m_containerLayer = nullptr;
2460 m_scrollLayer = nullptr; 2461 m_scrollLayer = nullptr;
2461 } 2462 }
2462 ASSERT(!m_scrollLayer); 2463 ASSERT(!m_scrollLayer);
2463 m_rootContentLayer = nullptr; 2464 m_rootContentLayer = nullptr;
2464 } 2465 }
2465 2466
2466 void RenderLayerCompositor::attachRootLayer(RootLayerAttachment attachment) 2467 void RenderLayerCompositor::attachRootLayer(RootLayerAttachment attachment)
2467 { 2468 {
2468 if (!m_rootContentLayer) 2469 if (!m_rootContentLayer)
2469 return; 2470 return;
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after
2721 return frame->page(); 2722 return frame->page();
2722 2723
2723 return 0; 2724 return 0;
2724 } 2725 }
2725 2726
2726 void RenderLayerCompositor::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo ) const 2727 void RenderLayerCompositor::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo ) const
2727 { 2728 {
2728 MemoryClassInfo info(memoryObjectInfo, this, PlatformMemoryTypes::Rendering) ; 2729 MemoryClassInfo info(memoryObjectInfo, this, PlatformMemoryTypes::Rendering) ;
2729 info.addWeakPointer(m_renderView); 2730 info.addWeakPointer(m_renderView);
2730 info.addMember(m_rootContentLayer, "rootContentLayer"); 2731 info.addMember(m_rootContentLayer, "rootContentLayer");
2731 info.addMember(m_clipLayer, "clipLayer"); 2732 info.addMember(m_containerLayer, "containerLayer");
2732 info.addMember(m_scrollLayer, "scrollLayer"); 2733 info.addMember(m_scrollLayer, "scrollLayer");
2733 info.addMember(m_viewportConstrainedLayers, "viewportConstrainedLayers"); 2734 info.addMember(m_viewportConstrainedLayers, "viewportConstrainedLayers");
2734 info.addMember(m_overflowControlsHostLayer, "overflowControlsHostLayer"); 2735 info.addMember(m_overflowControlsHostLayer, "overflowControlsHostLayer");
2735 info.addMember(m_layerForHorizontalScrollbar, "layerForHorizontalScrollbar") ; 2736 info.addMember(m_layerForHorizontalScrollbar, "layerForHorizontalScrollbar") ;
2736 info.addMember(m_layerForVerticalScrollbar, "layerForVerticalScrollbar"); 2737 info.addMember(m_layerForVerticalScrollbar, "layerForVerticalScrollbar");
2737 info.addMember(m_layerForScrollCorner, "layerForScrollCorner"); 2738 info.addMember(m_layerForScrollCorner, "layerForScrollCorner");
2738 #if ENABLE(RUBBER_BANDING) 2739 #if ENABLE(RUBBER_BANDING)
2739 info.addMember(m_layerForOverhangAreas, "layerForOverhangAreas"); 2740 info.addMember(m_layerForOverhangAreas, "layerForOverhangAreas");
2740 info.addMember(m_contentShadowLayer, "contentShadowLayer"); 2741 info.addMember(m_contentShadowLayer, "contentShadowLayer");
2741 info.addMember(m_layerForTopOverhangArea, "layerForTopOverhangArea"); 2742 info.addMember(m_layerForTopOverhangArea, "layerForTopOverhangArea");
2742 info.addMember(m_layerForBottomOverhangArea, "layerForBottomOverhangArea"); 2743 info.addMember(m_layerForBottomOverhangArea, "layerForBottomOverhangArea");
2743 #endif 2744 #endif
2744 } 2745 }
2745 2746
2746 } // namespace WebCore 2747 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/core/rendering/RenderLayerCompositor.h ('k') | Source/web/PinchViewports.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698