OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2009, 2010 Apple Inc. All rights reserved. | 2 * Copyright (C) 2009, 2010 Apple Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 1186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1197 | 1197 |
1198 void RenderLayerCompositor::frameViewDidChangeSize() | 1198 void RenderLayerCompositor::frameViewDidChangeSize() |
1199 { | 1199 { |
1200 if (m_containerLayer) { | 1200 if (m_containerLayer) { |
1201 FrameView* frameView = m_renderView->frameView(); | 1201 FrameView* frameView = m_renderView->frameView(); |
1202 m_containerLayer->setSize(frameView->unscaledVisibleContentSize()); | 1202 m_containerLayer->setSize(frameView->unscaledVisibleContentSize()); |
1203 | 1203 |
1204 frameViewDidScroll(); | 1204 frameViewDidScroll(); |
1205 updateOverflowControlsLayers(); | 1205 updateOverflowControlsLayers(); |
1206 | 1206 |
1207 #if ENABLE(RUBBER_BANDING) | 1207 #if USE(RUBBER_BANDING) |
1208 if (m_layerForOverhangAreas) | 1208 if (m_layerForOverhangAreas) |
1209 m_layerForOverhangAreas->setSize(frameView->frameRect().size()); | 1209 m_layerForOverhangAreas->setSize(frameView->frameRect().size()); |
1210 #endif | 1210 #endif |
1211 } | 1211 } |
1212 } | 1212 } |
1213 | 1213 |
1214 enum AcceleratedFixedRootBackgroundHistogramBuckets { | 1214 enum AcceleratedFixedRootBackgroundHistogramBuckets { |
1215 ScrolledMainFrameBucket = 0, | 1215 ScrolledMainFrameBucket = 0, |
1216 ScrolledMainFrameWithAcceleratedFixedRootBackground = 1, | 1216 ScrolledMainFrameWithAcceleratedFixedRootBackground = 1, |
1217 ScrolledMainFrameWithUnacceleratedFixedRootBackground = 2, | 1217 ScrolledMainFrameWithUnacceleratedFixedRootBackground = 2, |
(...skipping 351 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1569 { | 1569 { |
1570 clearBackingForLayerIncludingDescendants(m_renderView->layer()); | 1570 clearBackingForLayerIncludingDescendants(m_renderView->layer()); |
1571 } | 1571 } |
1572 | 1572 |
1573 void RenderLayerCompositor::updateRootLayerPosition() | 1573 void RenderLayerCompositor::updateRootLayerPosition() |
1574 { | 1574 { |
1575 if (m_rootContentLayer) { | 1575 if (m_rootContentLayer) { |
1576 const IntRect& documentRect = m_renderView->documentRect(); | 1576 const IntRect& documentRect = m_renderView->documentRect(); |
1577 m_rootContentLayer->setSize(documentRect.size()); | 1577 m_rootContentLayer->setSize(documentRect.size()); |
1578 m_rootContentLayer->setPosition(documentRect.location()); | 1578 m_rootContentLayer->setPosition(documentRect.location()); |
1579 #if ENABLE(RUBBER_BANDING) | 1579 #if USE(RUBBER_BANDING) |
1580 if (m_layerForOverhangShadow) | 1580 if (m_layerForOverhangShadow) |
1581 ScrollbarTheme::theme()->updateOverhangShadowLayer(m_layerForOverhan
gShadow.get(), m_rootContentLayer.get()); | 1581 ScrollbarTheme::theme()->updateOverhangShadowLayer(m_layerForOverhan
gShadow.get(), m_rootContentLayer.get()); |
1582 #endif | 1582 #endif |
1583 } | 1583 } |
1584 if (m_containerLayer) { | 1584 if (m_containerLayer) { |
1585 FrameView* frameView = m_renderView->frameView(); | 1585 FrameView* frameView = m_renderView->frameView(); |
1586 m_containerLayer->setSize(frameView->unscaledVisibleContentSize()); | 1586 m_containerLayer->setSize(frameView->unscaledVisibleContentSize()); |
1587 } | 1587 } |
1588 } | 1588 } |
1589 | 1589 |
(...skipping 576 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2166 else if (graphicsLayer == layerForVerticalScrollbar()) | 2166 else if (graphicsLayer == layerForVerticalScrollbar()) |
2167 paintScrollbar(m_renderView->frameView()->verticalScrollbar(), context,
clip); | 2167 paintScrollbar(m_renderView->frameView()->verticalScrollbar(), context,
clip); |
2168 else if (graphicsLayer == layerForScrollCorner()) { | 2168 else if (graphicsLayer == layerForScrollCorner()) { |
2169 const IntRect& scrollCorner = m_renderView->frameView()->scrollCornerRec
t(); | 2169 const IntRect& scrollCorner = m_renderView->frameView()->scrollCornerRec
t(); |
2170 context.save(); | 2170 context.save(); |
2171 context.translate(-scrollCorner.x(), -scrollCorner.y()); | 2171 context.translate(-scrollCorner.x(), -scrollCorner.y()); |
2172 IntRect transformedClip = clip; | 2172 IntRect transformedClip = clip; |
2173 transformedClip.moveBy(scrollCorner.location()); | 2173 transformedClip.moveBy(scrollCorner.location()); |
2174 m_renderView->frameView()->paintScrollCorner(&context, transformedClip); | 2174 m_renderView->frameView()->paintScrollCorner(&context, transformedClip); |
2175 context.restore(); | 2175 context.restore(); |
2176 #if ENABLE(RUBBER_BANDING) | 2176 #if USE(RUBBER_BANDING) |
2177 } else if (graphicsLayer == layerForOverhangAreas()) { | 2177 } else if (graphicsLayer == layerForOverhangAreas()) { |
2178 ScrollView* view = m_renderView->frameView(); | 2178 ScrollView* view = m_renderView->frameView(); |
2179 view->calculateAndPaintOverhangBackground(&context, clip); | 2179 view->calculateAndPaintOverhangBackground(&context, clip); |
2180 #endif | 2180 #endif |
2181 } | 2181 } |
2182 } | 2182 } |
2183 | 2183 |
2184 bool RenderLayerCompositor::supportsFixedRootBackgroundCompositing() const | 2184 bool RenderLayerCompositor::supportsFixedRootBackgroundCompositing() const |
2185 { | 2185 { |
2186 if (Settings* settings = m_renderView->document().settings()) { | 2186 if (Settings* settings = m_renderView->document().settings()) { |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2271 FrameView* view = m_renderView->frameView(); | 2271 FrameView* view = m_renderView->frameView(); |
2272 return shouldCompositeOverflowControls(view) && view->verticalScrollbar(); | 2272 return shouldCompositeOverflowControls(view) && view->verticalScrollbar(); |
2273 } | 2273 } |
2274 | 2274 |
2275 bool RenderLayerCompositor::requiresScrollCornerLayer() const | 2275 bool RenderLayerCompositor::requiresScrollCornerLayer() const |
2276 { | 2276 { |
2277 FrameView* view = m_renderView->frameView(); | 2277 FrameView* view = m_renderView->frameView(); |
2278 return shouldCompositeOverflowControls(view) && view->isScrollCornerVisible(
); | 2278 return shouldCompositeOverflowControls(view) && view->isScrollCornerVisible(
); |
2279 } | 2279 } |
2280 | 2280 |
2281 #if ENABLE(RUBBER_BANDING) | 2281 #if USE(RUBBER_BANDING) |
2282 bool RenderLayerCompositor::requiresOverhangLayers() const | 2282 bool RenderLayerCompositor::requiresOverhangLayers() const |
2283 { | 2283 { |
2284 // We don't want a layer if this is a subframe. | 2284 // We don't want a layer if this is a subframe. |
2285 if (!isMainFrame()) | 2285 if (!isMainFrame()) |
2286 return false; | 2286 return false; |
2287 | 2287 |
2288 // We do want a layer if we have a scrolling coordinator and can scroll. | 2288 // We do want a layer if we have a scrolling coordinator and can scroll. |
2289 if (scrollingCoordinator() && m_renderView->frameView()->hasOpaqueBackground
()) | 2289 if (scrollingCoordinator() && m_renderView->frameView()->hasOpaqueBackground
()) |
2290 return true; | 2290 return true; |
2291 | 2291 |
2292 // Chromium always wants a layer. | 2292 // Chromium always wants a layer. |
2293 return true; | 2293 return true; |
2294 } | 2294 } |
2295 #endif | 2295 #endif |
2296 | 2296 |
2297 void RenderLayerCompositor::updateOverflowControlsLayers() | 2297 void RenderLayerCompositor::updateOverflowControlsLayers() |
2298 { | 2298 { |
2299 #if ENABLE(RUBBER_BANDING) | 2299 #if USE(RUBBER_BANDING) |
2300 if (requiresOverhangLayers()) { | 2300 if (requiresOverhangLayers()) { |
2301 if (!m_layerForOverhangAreas) { | 2301 if (!m_layerForOverhangAreas) { |
2302 m_layerForOverhangAreas = GraphicsLayer::create(graphicsLayerFactory
(), this); | 2302 m_layerForOverhangAreas = GraphicsLayer::create(graphicsLayerFactory
(), this); |
2303 m_layerForOverhangAreas->setDrawsContent(false); | 2303 m_layerForOverhangAreas->setDrawsContent(false); |
2304 m_layerForOverhangAreas->setSize(m_renderView->frameView()->frameRec
t().size()); | 2304 m_layerForOverhangAreas->setSize(m_renderView->frameView()->frameRec
t().size()); |
2305 | 2305 |
2306 // We want the overhang areas layer to be positioned below the frame
contents, | 2306 // We want the overhang areas layer to be positioned below the frame
contents, |
2307 // so insert it below the clip layer. | 2307 // so insert it below the clip layer. |
2308 m_overflowControlsHostLayer->addChildBelow(m_layerForOverhangAreas.g
et(), m_containerLayer.get()); | 2308 m_overflowControlsHostLayer->addChildBelow(m_layerForOverhangAreas.g
et(), m_containerLayer.get()); |
2309 } | 2309 } |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2418 attachRootLayer(expectedAttachment); | 2418 attachRootLayer(expectedAttachment); |
2419 } | 2419 } |
2420 | 2420 |
2421 void RenderLayerCompositor::destroyRootLayer() | 2421 void RenderLayerCompositor::destroyRootLayer() |
2422 { | 2422 { |
2423 if (!m_rootContentLayer) | 2423 if (!m_rootContentLayer) |
2424 return; | 2424 return; |
2425 | 2425 |
2426 detachRootLayer(); | 2426 detachRootLayer(); |
2427 | 2427 |
2428 #if ENABLE(RUBBER_BANDING) | 2428 #if USE(RUBBER_BANDING) |
2429 if (m_layerForOverhangAreas) { | 2429 if (m_layerForOverhangAreas) { |
2430 m_layerForOverhangAreas->removeFromParent(); | 2430 m_layerForOverhangAreas->removeFromParent(); |
2431 m_layerForOverhangAreas = nullptr; | 2431 m_layerForOverhangAreas = nullptr; |
2432 } | 2432 } |
2433 if (m_layerForOverhangShadow) { | 2433 if (m_layerForOverhangShadow) { |
2434 m_layerForOverhangShadow->removeFromParent(); | 2434 m_layerForOverhangShadow->removeFromParent(); |
2435 m_layerForOverhangShadow = nullptr; | 2435 m_layerForOverhangShadow = nullptr; |
2436 } | 2436 } |
2437 #endif | 2437 #endif |
2438 | 2438 |
(...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2720 Page* RenderLayerCompositor::page() const | 2720 Page* RenderLayerCompositor::page() const |
2721 { | 2721 { |
2722 return m_renderView->frameView()->frame().page(); | 2722 return m_renderView->frameView()->frame().page(); |
2723 } | 2723 } |
2724 | 2724 |
2725 String RenderLayerCompositor::debugName(const GraphicsLayer* graphicsLayer) | 2725 String RenderLayerCompositor::debugName(const GraphicsLayer* graphicsLayer) |
2726 { | 2726 { |
2727 String name; | 2727 String name; |
2728 if (graphicsLayer == m_rootContentLayer.get()) { | 2728 if (graphicsLayer == m_rootContentLayer.get()) { |
2729 name = "Content Root Layer"; | 2729 name = "Content Root Layer"; |
2730 #if ENABLE(RUBBER_BANDING) | 2730 #if USE(RUBBER_BANDING) |
2731 } else if (graphicsLayer == m_layerForOverhangAreas.get()) { | 2731 } else if (graphicsLayer == m_layerForOverhangAreas.get()) { |
2732 name = "Overhang Areas Layer"; | 2732 name = "Overhang Areas Layer"; |
2733 } else if (graphicsLayer == m_layerForOverhangAreas.get()) { | 2733 } else if (graphicsLayer == m_layerForOverhangAreas.get()) { |
2734 name = "Overhang Areas Shadow"; | 2734 name = "Overhang Areas Shadow"; |
2735 #endif | 2735 #endif |
2736 } else if (graphicsLayer == m_overflowControlsHostLayer.get()) { | 2736 } else if (graphicsLayer == m_overflowControlsHostLayer.get()) { |
2737 name = "Overflow Controls Host Layer"; | 2737 name = "Overflow Controls Host Layer"; |
2738 } else if (graphicsLayer == m_layerForHorizontalScrollbar.get()) { | 2738 } else if (graphicsLayer == m_layerForHorizontalScrollbar.get()) { |
2739 name = "Horizontal Scrollbar Layer"; | 2739 name = "Horizontal Scrollbar Layer"; |
2740 } else if (graphicsLayer == m_layerForVerticalScrollbar.get()) { | 2740 } else if (graphicsLayer == m_layerForVerticalScrollbar.get()) { |
2741 name = "Vertical Scrollbar Layer"; | 2741 name = "Vertical Scrollbar Layer"; |
2742 } else if (graphicsLayer == m_layerForScrollCorner.get()) { | 2742 } else if (graphicsLayer == m_layerForScrollCorner.get()) { |
2743 name = "Scroll Corner Layer"; | 2743 name = "Scroll Corner Layer"; |
2744 } else if (graphicsLayer == m_containerLayer.get()) { | 2744 } else if (graphicsLayer == m_containerLayer.get()) { |
2745 name = "Frame Clipping Layer"; | 2745 name = "Frame Clipping Layer"; |
2746 } else if (graphicsLayer == m_scrollLayer.get()) { | 2746 } else if (graphicsLayer == m_scrollLayer.get()) { |
2747 name = "Frame Scrolling Layer"; | 2747 name = "Frame Scrolling Layer"; |
2748 } else { | 2748 } else { |
2749 ASSERT_NOT_REACHED(); | 2749 ASSERT_NOT_REACHED(); |
2750 } | 2750 } |
2751 | 2751 |
2752 return name; | 2752 return name; |
2753 } | 2753 } |
2754 | 2754 |
2755 } // namespace WebCore | 2755 } // namespace WebCore |
OLD | NEW |