| 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 |