OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |