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

Side by Side Diff: third_party/WebKit/Source/core/paint/PaintLayer.cpp

Issue 1643663002: Conditionally create PaintLayer's scrollable area object (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@PaintLayerClipper
Patch Set: Created 4 years, 9 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
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 1431 matching lines...) Expand 10 before | Expand all | Expand 10 after
1442 { 1442 {
1443 ASSERT(!m_stackingNode); 1443 ASSERT(!m_stackingNode);
1444 if (requiresStackingNode()) 1444 if (requiresStackingNode())
1445 m_stackingNode = adoptPtr(new PaintLayerStackingNode(this)); 1445 m_stackingNode = adoptPtr(new PaintLayerStackingNode(this));
1446 else 1446 else
1447 m_stackingNode = nullptr; 1447 m_stackingNode = nullptr;
1448 } 1448 }
1449 1449
1450 void PaintLayer::updateScrollableArea() 1450 void PaintLayer::updateScrollableArea()
1451 { 1451 {
1452 ASSERT(!m_scrollableArea); 1452 if (requiresScrollableArea()) {
1453 if (requiresScrollableArea()) 1453 if (!m_scrollableArea)
1454 m_scrollableArea = PaintLayerScrollableArea::create(*this); 1454 m_scrollableArea = PaintLayerScrollableArea::create(*this);
1455 } else if (m_scrollableArea) {
1456 if (m_scrollableArea)
1457 m_scrollableArea->dispose();
1458 m_scrollableArea.clear();
1459 }
1455 } 1460 }
1456 1461
1457 bool PaintLayer::hasOverflowControls() const 1462 bool PaintLayer::hasOverflowControls() const
1458 { 1463 {
1459 return m_scrollableArea && (m_scrollableArea->hasScrollbar() || m_scrollable Area->scrollCorner() || layoutObject()->style()->resize() != RESIZE_NONE); 1464 return m_scrollableArea && (m_scrollableArea->hasScrollbar() || m_scrollable Area->scrollCorner() || layoutObject()->style()->resize() != RESIZE_NONE);
1460 } 1465 }
1461 1466
1462 void PaintLayer::appendSingleFragmentIgnoringPagination(PaintLayerFragments& fra gments, const PaintLayer* rootLayer, const LayoutRect& dirtyRect, ClipRectsCache Slot clipRectsCacheSlot, OverlayScrollbarSizeRelevancy inOverlayScrollbarSizeRel evancy, ShouldRespectOverflowClip respectOverflowClip, const LayoutPoint* offset FromRoot, const LayoutSize& subPixelAccumulation) 1467 void PaintLayer::appendSingleFragmentIgnoringPagination(PaintLayerFragments& fra gments, const PaintLayer* rootLayer, const LayoutRect& dirtyRect, ClipRectsCache Slot clipRectsCacheSlot, OverlayScrollbarSizeRelevancy inOverlayScrollbarSizeRel evancy, ShouldRespectOverflowClip respectOverflowClip, const LayoutPoint* offset FromRoot, const LayoutSize& subPixelAccumulation)
1463 { 1468 {
1464 PaintLayerFragment fragment; 1469 PaintLayerFragment fragment;
(...skipping 1077 matching lines...) Expand 10 before | Expand all | Expand 10 after
2542 } 2547 }
2543 2548
2544 void PaintLayer::styleChanged(StyleDifference diff, const ComputedStyle* oldStyl e) 2549 void PaintLayer::styleChanged(StyleDifference diff, const ComputedStyle* oldStyl e)
2545 { 2550 {
2546 if (attemptDirectCompositingUpdate(diff, oldStyle)) 2551 if (attemptDirectCompositingUpdate(diff, oldStyle))
2547 return; 2552 return;
2548 2553
2549 m_stackingNode->updateIsTreatedAsStackingContext(); 2554 m_stackingNode->updateIsTreatedAsStackingContext();
2550 m_stackingNode->updateStackingNodesAfterStyleChange(oldStyle); 2555 m_stackingNode->updateStackingNodesAfterStyleChange(oldStyle);
2551 2556
2557 updateScrollableArea();
2552 if (m_scrollableArea) 2558 if (m_scrollableArea)
2553 m_scrollableArea->updateAfterStyleChange(oldStyle); 2559 m_scrollableArea->updateAfterStyleChange(oldStyle);
2554 2560
2555 // Overlay scrollbars can make this layer self-painting so we need 2561 // Overlay scrollbars can make this layer self-painting so we need
2556 // to recompute the bit once scrollbars have been updated. 2562 // to recompute the bit once scrollbars have been updated.
2557 updateSelfPaintingLayer(); 2563 updateSelfPaintingLayer();
2558 2564
2559 if (!oldStyle || !layoutObject()->style()->reflectionDataEquivalent(oldStyle )) { 2565 if (!oldStyle || !layoutObject()->style()->reflectionDataEquivalent(oldStyle )) {
2560 ASSERT(!oldStyle || diff.needsFullLayout()); 2566 ASSERT(!oldStyle || diff.needsFullLayout());
2561 updateReflectionInfo(oldStyle); 2567 updateReflectionInfo(oldStyle);
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after
2808 2814
2809 void showLayerTree(const blink::LayoutObject* layoutObject) 2815 void showLayerTree(const blink::LayoutObject* layoutObject)
2810 { 2816 {
2811 if (!layoutObject) { 2817 if (!layoutObject) {
2812 fprintf(stderr, "Cannot showLayerTree. Root is (nil)\n"); 2818 fprintf(stderr, "Cannot showLayerTree. Root is (nil)\n");
2813 return; 2819 return;
2814 } 2820 }
2815 showLayerTree(layoutObject->enclosingLayer()); 2821 showLayerTree(layoutObject->enclosingLayer());
2816 } 2822 }
2817 #endif 2823 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698