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/RenderLayerScrollableArea.cpp

Issue 714933002: Set relayoutChildren to 'true' only if size change happens in Table (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: wrong patch 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
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 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
146 146
147 HostWindow* RenderLayerScrollableArea::hostWindow() const 147 HostWindow* RenderLayerScrollableArea::hostWindow() const
148 { 148 {
149 if (Page* page = box().frame()->page()) 149 if (Page* page = box().frame()->page())
150 return &page->chrome(); 150 return &page->chrome();
151 return nullptr; 151 return nullptr;
152 } 152 }
153 153
154 GraphicsLayer* RenderLayerScrollableArea::layerForScrolling() const 154 GraphicsLayer* RenderLayerScrollableArea::layerForScrolling() const
155 { 155 {
156 return layer()->hasCompositedLayerMapping() ? layer()->compositedLayerMappin g()->scrollingContentsLayer() : 0; 156 CompositedLayerMapping* compositedLayerMapping = layer()->compositedLayerMap ping();
157 return compositedLayerMapping ? compositedLayerMapping->scrollingContentsLay er() : 0;
157 } 158 }
158 159
159 GraphicsLayer* RenderLayerScrollableArea::layerForHorizontalScrollbar() const 160 GraphicsLayer* RenderLayerScrollableArea::layerForHorizontalScrollbar() const
160 { 161 {
161 // See crbug.com/343132. 162 // See crbug.com/343132.
162 DisableCompositingQueryAsserts disabler; 163 DisableCompositingQueryAsserts disabler;
163 164
164 return layer()->hasCompositedLayerMapping() ? layer()->compositedLayerMappin g()->layerForHorizontalScrollbar() : 0; 165 CompositedLayerMapping* compositedLayerMapping = layer()->compositedLayerMap ping();
166 return compositedLayerMapping ? compositedLayerMapping->layerForHorizontalSc rollbar() : 0;
165 } 167 }
166 168
167 GraphicsLayer* RenderLayerScrollableArea::layerForVerticalScrollbar() const 169 GraphicsLayer* RenderLayerScrollableArea::layerForVerticalScrollbar() const
168 { 170 {
169 // See crbug.com/343132. 171 // See crbug.com/343132.
170 DisableCompositingQueryAsserts disabler; 172 DisableCompositingQueryAsserts disabler;
171 173
172 return layer()->hasCompositedLayerMapping() ? layer()->compositedLayerMappin g()->layerForVerticalScrollbar() : 0; 174 CompositedLayerMapping* compositedLayerMapping = layer()->compositedLayerMap ping();
175 return compositedLayerMapping ? compositedLayerMapping->layerForVerticalScro llbar() : 0;
173 } 176 }
174 177
175 GraphicsLayer* RenderLayerScrollableArea::layerForScrollCorner() const 178 GraphicsLayer* RenderLayerScrollableArea::layerForScrollCorner() const
176 { 179 {
177 // See crbug.com/343132. 180 // See crbug.com/343132.
178 DisableCompositingQueryAsserts disabler; 181 DisableCompositingQueryAsserts disabler;
179 182
180 return layer()->hasCompositedLayerMapping() ? layer()->compositedLayerMappin g()->layerForScrollCorner() : 0; 183 CompositedLayerMapping* compositedLayerMapping = layer()->compositedLayerMap ping();
184 return compositedLayerMapping ? compositedLayerMapping->layerForScrollCorner () : 0;
181 } 185 }
182 186
183 void RenderLayerScrollableArea::invalidateScrollbarRect(Scrollbar* scrollbar, co nst IntRect& rect) 187 void RenderLayerScrollableArea::invalidateScrollbarRect(Scrollbar* scrollbar, co nst IntRect& rect)
184 { 188 {
185 // See crbug.com/343132. 189 // See crbug.com/343132.
186 DisableCompositingQueryAsserts disabler; 190 DisableCompositingQueryAsserts disabler;
187 191
188 if (scrollbar == m_vBar.get()) { 192 if (scrollbar == m_vBar.get()) {
189 if (GraphicsLayer* layer = layerForVerticalScrollbar()) { 193 if (GraphicsLayer* layer = layerForVerticalScrollbar()) {
190 layer->setNeedsDisplayInRect(rect, PaintInvalidationScroll); 194 layer->setNeedsDisplayInRect(rect, PaintInvalidationScroll);
(...skipping 795 matching lines...) Expand 10 before | Expand all | Expand 10 after
986 const IntRect& scrollCorner = scrollCornerRect(); 990 const IntRect& scrollCorner = scrollCornerRect();
987 if (m_scrollCorner) 991 if (m_scrollCorner)
988 m_scrollCorner->setFrameRect(scrollCorner); 992 m_scrollCorner->setFrameRect(scrollCorner);
989 993
990 if (m_resizer) 994 if (m_resizer)
991 m_resizer->setFrameRect(resizerCornerRect(borderBox, ResizerForPointer)) ; 995 m_resizer->setFrameRect(resizerCornerRect(borderBox, ResizerForPointer)) ;
992 996
993 // FIXME, this should eventually be removed, once we are certain that compos ited 997 // FIXME, this should eventually be removed, once we are certain that compos ited
994 // controls get correctly positioned on a compositor update. For now, conser vatively 998 // controls get correctly positioned on a compositor update. For now, conser vatively
995 // leaving this unchanged. 999 // leaving this unchanged.
996 if (layer()->hasCompositedLayerMapping()) 1000 if (CompositedLayerMapping* compositedLayerMapping = layer()->compositedLaye rMapping())
997 layer()->compositedLayerMapping()->positionOverflowControlsLayers(offset FromRoot); 1001 compositedLayerMapping->positionOverflowControlsLayers(offsetFromRoot);
998 } 1002 }
999 1003
1000 void RenderLayerScrollableArea::updateScrollCornerStyle() 1004 void RenderLayerScrollableArea::updateScrollCornerStyle()
1001 { 1005 {
1002 if (!m_scrollCorner && !hasScrollbar()) 1006 if (!m_scrollCorner && !hasScrollbar())
1003 return; 1007 return;
1004 if (!m_scrollCorner && hasOverlayScrollbars()) 1008 if (!m_scrollCorner && hasOverlayScrollbars())
1005 return; 1009 return;
1006 1010
1007 RenderObject* actualRenderer = rendererForScrollbar(box()); 1011 RenderObject* actualRenderer = rendererForScrollbar(box());
(...skipping 432 matching lines...) Expand 10 before | Expand all | Expand 10 after
1440 else 1444 else
1441 frameView->removeScrollableArea(this); 1445 frameView->removeScrollableArea(this);
1442 } 1446 }
1443 1447
1444 void RenderLayerScrollableArea::updateCompositingLayersAfterScroll() 1448 void RenderLayerScrollableArea::updateCompositingLayersAfterScroll()
1445 { 1449 {
1446 RenderLayerCompositor* compositor = box().view()->compositor(); 1450 RenderLayerCompositor* compositor = box().view()->compositor();
1447 if (compositor->inCompositingMode()) { 1451 if (compositor->inCompositingMode()) {
1448 if (usesCompositedScrolling()) { 1452 if (usesCompositedScrolling()) {
1449 DisableCompositingQueryAsserts disabler; 1453 DisableCompositingQueryAsserts disabler;
1450 ASSERT(layer()->hasCompositedLayerMapping()); 1454 CompositedLayerMapping* compositedLayerMapping = layer()->composited LayerMapping();
1451 layer()->compositedLayerMapping()->setNeedsGraphicsLayerUpdate(Graph icsLayerUpdateSubtree); 1455 ASSERT(compositedLayerMapping);
1456 compositedLayerMapping->setNeedsGraphicsLayerUpdate(GraphicsLayerUpd ateSubtree);
1452 compositor->setNeedsCompositingUpdate(CompositingUpdateAfterGeometry Change); 1457 compositor->setNeedsCompositingUpdate(CompositingUpdateAfterGeometry Change);
1453 } else { 1458 } else {
1454 layer()->setNeedsCompositingInputsUpdate(); 1459 layer()->setNeedsCompositingInputsUpdate();
1455 } 1460 }
1456 } 1461 }
1457 } 1462 }
1458 1463
1459 bool RenderLayerScrollableArea::usesCompositedScrolling() const 1464 bool RenderLayerScrollableArea::usesCompositedScrolling() const
1460 { 1465 {
1461 // Scroll form controls on the main thread so they exhibit correct touch scr oll event bubbling 1466 // Scroll form controls on the main thread so they exhibit correct touch scr oll event bubbling
1462 if (box().isIntristicallyScrollable(VerticalScrollbar) || box().isIntristica llyScrollable(HorizontalScrollbar)) 1467 if (box().isIntristicallyScrollable(VerticalScrollbar) || box().isIntristica llyScrollable(HorizontalScrollbar))
1463 return false; 1468 return false;
1464 1469
1465 // See https://codereview.chromium.org/176633003/ for the tests that fail wi thout this disabler. 1470 // See https://codereview.chromium.org/176633003/ for the tests that fail wi thout this disabler.
1466 DisableCompositingQueryAsserts disabler; 1471 DisableCompositingQueryAsserts disabler;
1467 return layer()->hasCompositedLayerMapping() && layer()->compositedLayerMappi ng()->scrollingLayer(); 1472
1473 CompositedLayerMapping* compositedLayerMapping = layer()->compositedLayerMap ping();
1474 return compositedLayerMapping && compositedLayerMapping->scrollingLayer();
1468 } 1475 }
1469 1476
1470 static bool layerNeedsCompositedScrolling(const RenderLayer* layer) 1477 static bool layerNeedsCompositedScrolling(const RenderLayer* layer)
1471 { 1478 {
1472 return layer->scrollsOverflow() 1479 return layer->scrollsOverflow()
1473 && layer->compositor()->preferCompositingToLCDTextEnabled() 1480 && layer->compositor()->preferCompositingToLCDTextEnabled()
1474 && !layer->hasDescendantWithClipPath() 1481 && !layer->hasDescendantWithClipPath()
1475 && !layer->hasAncestorWithClipPath() 1482 && !layer->hasAncestorWithClipPath()
1476 && !layer->renderer()->style()->hasBorderRadius(); 1483 && !layer->renderer()->style()->hasBorderRadius();
1477 } 1484 }
(...skipping 10 matching lines...) Expand all
1488 void RenderLayerScrollableArea::setTopmostScrollChild(RenderLayer* scrollChild) 1495 void RenderLayerScrollableArea::setTopmostScrollChild(RenderLayer* scrollChild)
1489 { 1496 {
1490 // We only want to track the topmost scroll child for scrollable areas with 1497 // We only want to track the topmost scroll child for scrollable areas with
1491 // overlay scrollbars. 1498 // overlay scrollbars.
1492 if (!hasOverlayScrollbars()) 1499 if (!hasOverlayScrollbars())
1493 return; 1500 return;
1494 m_nextTopmostScrollChild = scrollChild; 1501 m_nextTopmostScrollChild = scrollChild;
1495 } 1502 }
1496 1503
1497 } // namespace blink 1504 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/rendering/RenderLayerClipper.cpp ('k') | Source/core/rendering/RenderTreeAsText.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698