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

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

Issue 15425006: Revert "Remove NonCompositedContentHost" and follow-up rebaselining. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 7 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/WebKit/chromium/src/WebViewImpl.cpp ('k') | Source/core/rendering/RenderLayerBacking.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) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved. 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved.
3 * 3 *
4 * Portions are Copyright (C) 1998 Netscape Communications Corporation. 4 * Portions are Copyright (C) 1998 Netscape Communications Corporation.
5 * 5 *
6 * Other contributors: 6 * Other contributors:
7 * Robert O'Callahan <roc+@cs.cmu.edu> 7 * Robert O'Callahan <roc+@cs.cmu.edu>
8 * David Baron <dbaron@fas.harvard.edu> 8 * David Baron <dbaron@fas.harvard.edu>
9 * Christian Biesinger <cbiesinger@web.de> 9 * Christian Biesinger <cbiesinger@web.de>
10 * Randall Jesup <rjesup@wgate.com> 10 * Randall Jesup <rjesup@wgate.com>
(...skipping 1504 matching lines...) Expand 10 before | Expand all | Expand 10 after
1515 // Note: This is only for output rect, so there's no need to expand the dirty source rect. 1515 // Note: This is only for output rect, so there's no need to expand the dirty source rect.
1516 rectForRepaint.unite(calculateLayerBounds(this)); 1516 rectForRepaint.unite(calculateLayerBounds(this));
1517 } 1517 }
1518 1518
1519 RenderLayer* parentLayer = enclosingFilterRepaintLayer(); 1519 RenderLayer* parentLayer = enclosingFilterRepaintLayer();
1520 ASSERT(parentLayer); 1520 ASSERT(parentLayer);
1521 FloatQuad repaintQuad(rectForRepaint); 1521 FloatQuad repaintQuad(rectForRepaint);
1522 LayoutRect parentLayerRect = renderer()->localToContainerQuad(repaintQuad, p arentLayer->renderer()).enclosingBoundingBox(); 1522 LayoutRect parentLayerRect = renderer()->localToContainerQuad(repaintQuad, p arentLayer->renderer()).enclosingBoundingBox();
1523 1523
1524 if (parentLayer->isComposited()) { 1524 if (parentLayer->isComposited()) {
1525 parentLayer->setBackingNeedsRepaintInRect(parentLayerRect); 1525 if (!parentLayer->backing()->paintsIntoWindow()) {
1526 return; 1526 parentLayer->setBackingNeedsRepaintInRect(parentLayerRect);
1527 return;
1528 }
1529 // If the painting goes to window, redirect the painting to the parent R enderView.
1530 parentLayer = renderer()->view()->layer();
1531 parentLayerRect = renderer()->localToContainerQuad(repaintQuad, parentLa yer->renderer()).enclosingBoundingBox();
1527 } 1532 }
1528 1533
1529 if (parentLayer->paintsWithFilters()) { 1534 if (parentLayer->paintsWithFilters()) {
1530 parentLayer->setFilterBackendNeedsRepaintingInRect(parentLayerRect); 1535 parentLayer->setFilterBackendNeedsRepaintingInRect(parentLayerRect);
1531 return; 1536 return;
1532 } 1537 }
1533 1538
1534 if (parentLayer->isRootLayer()) { 1539 if (parentLayer->isRootLayer()) {
1535 RenderView* view = toRenderView(parentLayer->renderer()); 1540 RenderView* view = toRenderView(parentLayer->renderer());
1536 view->repaintViewRectangle(parentLayerRect); 1541 view->repaintViewRectangle(parentLayerRect);
(...skipping 2048 matching lines...) Expand 10 before | Expand all | Expand 10 after
3585 return false; 3590 return false;
3586 } 3591 }
3587 3592
3588 void RenderLayer::paintLayer(GraphicsContext* context, const LayerPaintingInfo& paintingInfo, PaintLayerFlags paintFlags) 3593 void RenderLayer::paintLayer(GraphicsContext* context, const LayerPaintingInfo& paintingInfo, PaintLayerFlags paintFlags)
3589 { 3594 {
3590 if (isComposited()) { 3595 if (isComposited()) {
3591 // The updatingControlTints() painting pass goes through compositing lay ers, 3596 // The updatingControlTints() painting pass goes through compositing lay ers,
3592 // but we need to ensure that we don't cache clip rects computed with th e wrong root in this case. 3597 // but we need to ensure that we don't cache clip rects computed with th e wrong root in this case.
3593 if (context->updatingControlTints() || (paintingInfo.paintBehavior & Pai ntBehaviorFlattenCompositingLayers)) 3598 if (context->updatingControlTints() || (paintingInfo.paintBehavior & Pai ntBehaviorFlattenCompositingLayers))
3594 paintFlags |= PaintLayerTemporaryClipRects; 3599 paintFlags |= PaintLayerTemporaryClipRects;
3595 else if (!backing()->paintsIntoCompositedAncestor() 3600 else if (!backing()->paintsIntoWindow()
3601 && !backing()->paintsIntoCompositedAncestor()
3596 && !shouldDoSoftwarePaint(this, paintFlags & PaintLayerPaintingRefle ction)) { 3602 && !shouldDoSoftwarePaint(this, paintFlags & PaintLayerPaintingRefle ction)) {
3597 // If this RenderLayer should paint into its backing, that will be d one via RenderLayerBacking::paintIntoLayer(). 3603 // If this RenderLayer should paint into its backing, that will be d one via RenderLayerBacking::paintIntoLayer().
3598 return; 3604 return;
3599 } 3605 }
3600 } else if (viewportConstrainedNotCompositedReason() == NotCompositedForBound sOutOfView) { 3606 } else if (viewportConstrainedNotCompositedReason() == NotCompositedForBound sOutOfView) {
3601 // Don't paint out-of-view viewport constrained layers (when doing prepa inting) because they will never be visible 3607 // Don't paint out-of-view viewport constrained layers (when doing prepa inting) because they will never be visible
3602 // unless their position or viewport size is changed. 3608 // unless their position or viewport size is changed.
3603 return; 3609 return;
3604 } 3610 }
3605 3611
(...skipping 1891 matching lines...) Expand 10 before | Expand all | Expand 10 after
5497 return m_backing ? m_backing->layerForVerticalScrollbar() : 0; 5503 return m_backing ? m_backing->layerForVerticalScrollbar() : 0;
5498 } 5504 }
5499 5505
5500 GraphicsLayer* RenderLayer::layerForScrollCorner() const 5506 GraphicsLayer* RenderLayer::layerForScrollCorner() const
5501 { 5507 {
5502 return m_backing ? m_backing->layerForScrollCorner() : 0; 5508 return m_backing ? m_backing->layerForScrollCorner() : 0;
5503 } 5509 }
5504 5510
5505 bool RenderLayer::paintsWithTransform(PaintBehavior paintBehavior) const 5511 bool RenderLayer::paintsWithTransform(PaintBehavior paintBehavior) const
5506 { 5512 {
5507 return transform() && ((paintBehavior & PaintBehaviorFlattenCompositingLayer s) || !isComposited()); 5513 bool paintsToWindow = !isComposited() || backing()->paintsIntoWindow();
5514 return transform() && ((paintBehavior & PaintBehaviorFlattenCompositingLayer s) || paintsToWindow);
5508 } 5515 }
5509 5516
5510 bool RenderLayer::backgroundIsKnownToBeOpaqueInRect(const LayoutRect& localRect) const 5517 bool RenderLayer::backgroundIsKnownToBeOpaqueInRect(const LayoutRect& localRect) const
5511 { 5518 {
5512 if (!isSelfPaintingLayer() && !hasSelfPaintingLayerDescendant()) 5519 if (!isSelfPaintingLayer() && !hasSelfPaintingLayerDescendant())
5513 return false; 5520 return false;
5514 5521
5515 if (paintsWithTransparency(PaintBehaviorNormal)) 5522 if (paintsWithTransparency(PaintBehaviorNormal))
5516 return false; 5523 return false;
5517 5524
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after
5753 void RenderLayer::repaintIncludingDescendants() 5760 void RenderLayer::repaintIncludingDescendants()
5754 { 5761 {
5755 renderer()->repaint(); 5762 renderer()->repaint();
5756 for (RenderLayer* curr = firstChild(); curr; curr = curr->nextSibling()) 5763 for (RenderLayer* curr = firstChild(); curr; curr = curr->nextSibling())
5757 curr->repaintIncludingDescendants(); 5764 curr->repaintIncludingDescendants();
5758 } 5765 }
5759 5766
5760 void RenderLayer::setBackingNeedsRepaint() 5767 void RenderLayer::setBackingNeedsRepaint()
5761 { 5768 {
5762 ASSERT(isComposited()); 5769 ASSERT(isComposited());
5763 backing()->setContentsNeedDisplay(); 5770 if (backing()->paintsIntoWindow()) {
5771 // If we're trying to repaint the placeholder document layer, propagate the
5772 // repaint to the native view system.
5773 RenderView* view = renderer()->view();
5774 if (view)
5775 view->repaintViewRectangle(absoluteBoundingBox());
5776 } else
5777 backing()->setContentsNeedDisplay();
5764 } 5778 }
5765 5779
5766 void RenderLayer::setBackingNeedsRepaintInRect(const LayoutRect& r) 5780 void RenderLayer::setBackingNeedsRepaintInRect(const LayoutRect& r)
5767 { 5781 {
5768 // https://bugs.webkit.org/show_bug.cgi?id=61159 describes an unreproducible crash here, 5782 // https://bugs.webkit.org/show_bug.cgi?id=61159 describes an unreproducible crash here,
5769 // so assert but check that the layer is composited. 5783 // so assert but check that the layer is composited.
5770 ASSERT(isComposited()); 5784 ASSERT(isComposited());
5771 if (!isComposited()) { 5785 if (!isComposited() || backing()->paintsIntoWindow()) {
5772 // If we're trying to repaint the placeholder document layer, propagate the 5786 // If we're trying to repaint the placeholder document layer, propagate the
5773 // repaint to the native view system. 5787 // repaint to the native view system.
5774 LayoutRect absRect(r); 5788 LayoutRect absRect(r);
5775 LayoutPoint delta; 5789 LayoutPoint delta;
5776 convertToLayerCoords(root(), delta); 5790 convertToLayerCoords(root(), delta);
5777 absRect.moveBy(delta); 5791 absRect.moveBy(delta);
5778 5792
5779 RenderView* view = renderer()->view(); 5793 RenderView* view = renderer()->view();
5780 if (view) 5794 if (view)
5781 view->repaintViewRectangle(absRect); 5795 view->repaintViewRectangle(absRect);
(...skipping 660 matching lines...) Expand 10 before | Expand all | Expand 10 after
6442 } 6456 }
6443 } 6457 }
6444 6458
6445 void showLayerTree(const WebCore::RenderObject* renderer) 6459 void showLayerTree(const WebCore::RenderObject* renderer)
6446 { 6460 {
6447 if (!renderer) 6461 if (!renderer)
6448 return; 6462 return;
6449 showLayerTree(renderer->enclosingLayer()); 6463 showLayerTree(renderer->enclosingLayer());
6450 } 6464 }
6451 #endif 6465 #endif
OLDNEW
« no previous file with comments | « Source/WebKit/chromium/src/WebViewImpl.cpp ('k') | Source/core/rendering/RenderLayerBacking.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698