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

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

Issue 15973002: Remove NonCompositedContentHost -- Take 2 (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: adding back annotation. final rebase. Created 7 years, 6 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2009, 2010, 2011 Apple Inc. All rights reserved. 2 * Copyright (C) 2009, 2010, 2011 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 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 188
189 void RenderLayerBacking::createPrimaryGraphicsLayer() 189 void RenderLayerBacking::createPrimaryGraphicsLayer()
190 { 190 {
191 String layerName; 191 String layerName;
192 #ifndef NDEBUG 192 #ifndef NDEBUG
193 layerName = m_owningLayer->debugName(); 193 layerName = m_owningLayer->debugName();
194 #endif 194 #endif
195 195
196 m_graphicsLayer = createGraphicsLayer(layerName, m_owningLayer->compositingR easons()); 196 m_graphicsLayer = createGraphicsLayer(layerName, m_owningLayer->compositingR easons());
197 197
198 #if !OS(ANDROID)
198 if (m_isMainFrameRenderViewLayer) 199 if (m_isMainFrameRenderViewLayer)
199 m_graphicsLayer->setContentsOpaque(true); 200 m_graphicsLayer->contentLayer()->setDrawCheckerboardForMissingTiles(true );
201 #endif
200 202
201 updateOpacity(renderer()->style()); 203 updateOpacity(renderer()->style());
202 updateTransform(renderer()->style()); 204 updateTransform(renderer()->style());
203 updateFilters(renderer()->style()); 205 updateFilters(renderer()->style());
204 206
205 if (RuntimeEnabledFeatures::cssCompositingEnabled()) 207 if (RuntimeEnabledFeatures::cssCompositingEnabled())
206 updateLayerBlendMode(renderer()->style()); 208 updateLayerBlendMode(renderer()->style());
207 } 209 }
208 210
209 void RenderLayerBacking::destroyGraphicsLayers() 211 void RenderLayerBacking::destroyGraphicsLayers()
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
261 // 263 //
262 m_owningLayer->updateOrRemoveFilterEffectRenderer(); 264 m_owningLayer->updateOrRemoveFilterEffectRenderer();
263 setContentsNeedDisplay(); 265 setContentsNeedDisplay();
264 } 266 }
265 } 267 }
266 268
267 void RenderLayerBacking::updateLayerBlendMode(const RenderStyle*) 269 void RenderLayerBacking::updateLayerBlendMode(const RenderStyle*)
268 { 270 {
269 } 271 }
270 272
273 void RenderLayerBacking::updateContentsOpaque()
274 {
275 // For non-root layers, background is always painted by the primary graphics layer.
276 ASSERT(m_isMainFrameRenderViewLayer || !m_backgroundLayer);
277 m_graphicsLayer->setContentsOpaque(m_owningLayer->backgroundIsKnownToBeOpaqu eInRect(compositedBounds()));
278 }
279
271 static bool hasNonZeroTransformOrigin(const RenderObject* renderer) 280 static bool hasNonZeroTransformOrigin(const RenderObject* renderer)
272 { 281 {
273 RenderStyle* style = renderer->style(); 282 RenderStyle* style = renderer->style();
274 return (style->transformOriginX().type() == Fixed && style->transformOriginX ().value()) 283 return (style->transformOriginX().type() == Fixed && style->transformOriginX ().value())
275 || (style->transformOriginY().type() == Fixed && style->transformOriginY ().value()); 284 || (style->transformOriginY().type() == Fixed && style->transformOriginY ().value());
276 } 285 }
277 286
278 static bool layerOrAncestorIsTransformedOrUsingCompositedScrolling(RenderLayer* layer) 287 static bool layerOrAncestorIsTransformedOrUsingCompositedScrolling(RenderLayer* layer)
279 { 288 {
280 for (RenderLayer* curr = layer; curr; curr = curr->parent()) { 289 for (RenderLayer* curr = layer; curr; curr = curr->parent()) {
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
372 381
373 if (flags & IsUpdateRoot) { 382 if (flags & IsUpdateRoot) {
374 updateGraphicsLayerGeometry(); 383 updateGraphicsLayerGeometry();
375 layerCompositor->updateRootLayerPosition(); 384 layerCompositor->updateRootLayerPosition();
376 RenderLayer* stackingContainer = m_owningLayer->enclosingStackingCon tainer(); 385 RenderLayer* stackingContainer = m_owningLayer->enclosingStackingCon tainer();
377 if (!layerCompositor->compositingLayersNeedRebuild() && stackingCont ainer && (stackingContainer != m_owningLayer)) 386 if (!layerCompositor->compositingLayersNeedRebuild() && stackingCont ainer && (stackingContainer != m_owningLayer))
378 layerCompositor->updateCompositingDescendantGeometry(stackingCon tainer, stackingContainer, flags & CompositingChildrenOnly); 387 layerCompositor->updateCompositingDescendantGeometry(stackingCon tainer, stackingContainer, flags & CompositingChildrenOnly);
379 } 388 }
380 } 389 }
381 390
382 if (flags & NeedsFullRepaint && !paintsIntoWindow() && !paintsIntoComposited Ancestor()) 391 if (flags & NeedsFullRepaint && !paintsIntoCompositedAncestor())
383 setContentsNeedDisplay(); 392 setContentsNeedDisplay();
384 } 393 }
385 394
386 bool RenderLayerBacking::updateGraphicsLayerConfiguration() 395 bool RenderLayerBacking::updateGraphicsLayerConfiguration()
387 { 396 {
388 RenderLayerCompositor* compositor = this->compositor(); 397 RenderLayerCompositor* compositor = this->compositor();
389 RenderObject* renderer = this->renderer(); 398 RenderObject* renderer = this->renderer();
390 399
391 m_owningLayer->updateDescendantDependentFlags(); 400 m_owningLayer->updateDescendantDependentFlags();
392 m_owningLayer->updateZOrderLists(); 401 m_owningLayer->updateZOrderLists();
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
565 574
566 FloatSize oldSize = m_graphicsLayer->size(); 575 FloatSize oldSize = m_graphicsLayer->size();
567 if (oldSize != contentsSize) { 576 if (oldSize != contentsSize) {
568 m_graphicsLayer->setSize(contentsSize); 577 m_graphicsLayer->setSize(contentsSize);
569 // Usually invalidation will happen via layout etc, but if we've affecte d the layer 578 // Usually invalidation will happen via layout etc, but if we've affecte d the layer
570 // size by constraining relative to a clipping ancestor or the viewport, we 579 // size by constraining relative to a clipping ancestor or the viewport, we
571 // have to invalidate to avoid showing stretched content. 580 // have to invalidate to avoid showing stretched content.
572 if (m_boundsConstrainedByClipping) 581 if (m_boundsConstrainedByClipping)
573 m_graphicsLayer->setNeedsDisplay(); 582 m_graphicsLayer->setNeedsDisplay();
574 } 583 }
575 if (!m_isMainFrameRenderViewLayer) {
576 // For non-root layers, background is always painted by the primary grap hics layer.
577 ASSERT(!m_backgroundLayer);
578 m_graphicsLayer->setContentsOpaque(m_owningLayer->backgroundIsKnownToBeO paqueInRect(localCompositingBounds));
579 }
580 584
581 // If we have a layer that clips children, position it. 585 // If we have a layer that clips children, position it.
582 IntRect clippingBox; 586 IntRect clippingBox;
583 if (GraphicsLayer* clipLayer = clippingLayer()) { 587 if (GraphicsLayer* clipLayer = clippingLayer()) {
584 clippingBox = clipBox(toRenderBox(renderer())); 588 clippingBox = clipBox(toRenderBox(renderer()));
585 clipLayer->setPosition(FloatPoint(clippingBox.location() - localComposit ingBounds.location())); 589 clipLayer->setPosition(FloatPoint(clippingBox.location() - localComposit ingBounds.location()));
586 clipLayer->setSize(clippingBox.size()); 590 clipLayer->setSize(clippingBox.size());
587 clipLayer->setOffsetFromRenderer(toIntSize(clippingBox.location())); 591 clipLayer->setOffsetFromRenderer(toIntSize(clippingBox.location()));
588 } 592 }
589 593
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
719 m_foregroundLayer->setOffsetFromRenderer(m_scrollingContentsLayer->o ffsetFromRenderer()); 723 m_foregroundLayer->setOffsetFromRenderer(m_scrollingContentsLayer->o ffsetFromRenderer());
720 } 724 }
721 } 725 }
722 726
723 // If this layer was created just for clipping or to apply perspective, it d oesn't need its own backing store. 727 // If this layer was created just for clipping or to apply perspective, it d oesn't need its own backing store.
724 setRequiresOwnBackingStore(compositor()->requiresOwnBackingStore(m_owningLay er, compAncestor)); 728 setRequiresOwnBackingStore(compositor()->requiresOwnBackingStore(m_owningLay er, compAncestor));
725 729
726 updateContentsRect(isSimpleContainer); 730 updateContentsRect(isSimpleContainer);
727 updateBackgroundColor(isSimpleContainer); 731 updateBackgroundColor(isSimpleContainer);
728 updateDrawsContent(isSimpleContainer); 732 updateDrawsContent(isSimpleContainer);
733 updateContentsOpaque();
729 updateAfterWidgetResize(); 734 updateAfterWidgetResize();
730 registerScrollingLayers(); 735 registerScrollingLayers();
731 736
732 updateCompositingReasons(); 737 updateCompositingReasons();
733 } 738 }
734 739
735 void RenderLayerBacking::registerScrollingLayers() 740 void RenderLayerBacking::registerScrollingLayers()
736 { 741 {
737 // Register fixed position layers and their containers with the scrolling co ordinator. 742 // Register fixed position layers and their containers with the scrolling co ordinator.
738 ScrollingCoordinator* scrollingCoordinator = scrollingCoordinatorFromLayer(m _owningLayer); 743 ScrollingCoordinator* scrollingCoordinator = scrollingCoordinatorFromLayer(m _owningLayer);
(...skipping 584 matching lines...) Expand 10 before | Expand all | Expand 10 after
1323 } 1328 }
1324 1329
1325 // Conservative test for having no rendered children. 1330 // Conservative test for having no rendered children.
1326 bool RenderLayerBacking::hasVisibleNonCompositingDescendantLayers() const 1331 bool RenderLayerBacking::hasVisibleNonCompositingDescendantLayers() const
1327 { 1332 {
1328 return hasVisibleNonCompositingDescendant(m_owningLayer); 1333 return hasVisibleNonCompositingDescendant(m_owningLayer);
1329 } 1334 }
1330 1335
1331 bool RenderLayerBacking::containsPaintedContent() const 1336 bool RenderLayerBacking::containsPaintedContent() const
1332 { 1337 {
1333 if (isSimpleContainerCompositingLayer() || paintsIntoWindow() || paintsIntoC ompositedAncestor() || m_artificiallyInflatedBounds || m_owningLayer->isReflecti on()) 1338 if (isSimpleContainerCompositingLayer() || paintsIntoCompositedAncestor() || m_artificiallyInflatedBounds || m_owningLayer->isReflection())
1334 return false; 1339 return false;
1335 1340
1336 if (isDirectlyCompositedImage()) 1341 if (isDirectlyCompositedImage())
1337 return false; 1342 return false;
1338 1343
1339 // FIXME: we could optimize cases where the image, video or canvas is known to fill the border box entirely, 1344 // FIXME: we could optimize cases where the image, video or canvas is known to fill the border box entirely,
1340 // and set background color on the layer in that case, instead of allocating backing store and painting. 1345 // and set background color on the layer in that case, instead of allocating backing store and painting.
1341 if (renderer()->isVideo() && toRenderVideo(renderer())->shouldDisplayVideo() ) 1346 if (renderer()->isVideo() && toRenderVideo(renderer())->shouldDisplayVideo() )
1342 return m_owningLayer->hasBoxDecorationsOrBackground(); 1347 return m_owningLayer->hasBoxDecorationsOrBackground();
1343 1348
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
1506 { 1511 {
1507 if (m_ancestorClippingLayer) 1512 if (m_ancestorClippingLayer)
1508 return m_ancestorClippingLayer.get(); 1513 return m_ancestorClippingLayer.get();
1509 1514
1510 if (m_contentsContainmentLayer) 1515 if (m_contentsContainmentLayer)
1511 return m_contentsContainmentLayer.get(); 1516 return m_contentsContainmentLayer.get();
1512 1517
1513 return m_graphicsLayer.get(); 1518 return m_graphicsLayer.get();
1514 } 1519 }
1515 1520
1516 bool RenderLayerBacking::paintsIntoWindow() const
1517 {
1518 if (m_owningLayer->isRootLayer()) {
1519 return compositor()->rootLayerAttachment() != RenderLayerCompositor::Roo tLayerAttachedViaEnclosingFrame;
1520 }
1521
1522 return false;
1523 }
1524
1525 void RenderLayerBacking::setRequiresOwnBackingStore(bool requiresOwnBacking) 1521 void RenderLayerBacking::setRequiresOwnBackingStore(bool requiresOwnBacking)
1526 { 1522 {
1527 if (requiresOwnBacking == m_requiresOwnBackingStore) 1523 if (requiresOwnBacking == m_requiresOwnBackingStore)
1528 return; 1524 return;
1529 1525
1530 m_requiresOwnBackingStore = requiresOwnBacking; 1526 m_requiresOwnBackingStore = requiresOwnBacking;
1531 1527
1532 // This affects the answer to paintsIntoCompositedAncestor(), which in turn affects 1528 // This affects the answer to paintsIntoCompositedAncestor(), which in turn affects
1533 // cached clip rects, so when it changes we have to clear clip rects on desc endants. 1529 // cached clip rects, so when it changes we have to clear clip rects on desc endants.
1534 m_owningLayer->clearClipRectsIncludingDescendants(PaintingClipRects); 1530 m_owningLayer->clearClipRectsIncludingDescendants(PaintingClipRects);
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
1595 IntRect layerDirtyRect = r; 1591 IntRect layerDirtyRect = r;
1596 layerDirtyRect.move(-m_scrollingContentsLayer->offsetFromRenderer()); 1592 layerDirtyRect.move(-m_scrollingContentsLayer->offsetFromRenderer());
1597 m_scrollingContentsLayer->setNeedsDisplayInRect(layerDirtyRect); 1593 m_scrollingContentsLayer->setNeedsDisplayInRect(layerDirtyRect);
1598 } 1594 }
1599 } 1595 }
1600 1596
1601 void RenderLayerBacking::paintIntoLayer(const GraphicsLayer* graphicsLayer, Grap hicsContext* context, 1597 void RenderLayerBacking::paintIntoLayer(const GraphicsLayer* graphicsLayer, Grap hicsContext* context,
1602 const IntRect& paintDirtyRect, // In the coords of rootLayer . 1598 const IntRect& paintDirtyRect, // In the coords of rootLayer .
1603 PaintBehavior paintBehavior, GraphicsLayerPaintingPhase pain tingPhase) 1599 PaintBehavior paintBehavior, GraphicsLayerPaintingPhase pain tingPhase)
1604 { 1600 {
1605 if (paintsIntoWindow() || paintsIntoCompositedAncestor()) { 1601 if (paintsIntoCompositedAncestor()) {
1606 ASSERT_NOT_REACHED(); 1602 ASSERT_NOT_REACHED();
1607 return; 1603 return;
1608 } 1604 }
1609 1605
1610 FontCachePurgePreventer fontCachePurgePreventer; 1606 FontCachePurgePreventer fontCachePurgePreventer;
1611 1607
1612 RenderLayer::PaintLayerFlags paintFlags = 0; 1608 RenderLayer::PaintLayerFlags paintFlags = 0;
1613 if (paintingPhase & GraphicsLayerPaintBackground) 1609 if (paintingPhase & GraphicsLayerPaintBackground)
1614 paintFlags |= RenderLayer::PaintLayerPaintingCompositingBackgroundPhase; 1610 paintFlags |= RenderLayer::PaintLayerPaintingCompositingBackgroundPhase;
1615 if (paintingPhase & GraphicsLayerPaintForeground) 1611 if (paintingPhase & GraphicsLayerPaintForeground)
(...skipping 351 matching lines...) Expand 10 before | Expand all | Expand 10 after
1967 info.addMember(m_childContainmentLayer, "childContainmentLayer"); 1963 info.addMember(m_childContainmentLayer, "childContainmentLayer");
1968 info.addMember(m_maskLayer, "maskLayer"); 1964 info.addMember(m_maskLayer, "maskLayer");
1969 info.addMember(m_layerForHorizontalScrollbar, "layerForHorizontalScrollbar") ; 1965 info.addMember(m_layerForHorizontalScrollbar, "layerForHorizontalScrollbar") ;
1970 info.addMember(m_layerForVerticalScrollbar, "layerForVerticalScrollbar"); 1966 info.addMember(m_layerForVerticalScrollbar, "layerForVerticalScrollbar");
1971 info.addMember(m_layerForScrollCorner, "layerForScrollCorner"); 1967 info.addMember(m_layerForScrollCorner, "layerForScrollCorner");
1972 info.addMember(m_scrollingLayer, "scrollingLayer"); 1968 info.addMember(m_scrollingLayer, "scrollingLayer");
1973 info.addMember(m_scrollingContentsLayer, "scrollingContentsLayer"); 1969 info.addMember(m_scrollingContentsLayer, "scrollingContentsLayer");
1974 } 1970 }
1975 1971
1976 } // namespace WebCore 1972 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/core/rendering/RenderLayerBacking.h ('k') | Source/core/rendering/RenderLayerCompositor.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698