| 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 1157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1168 } | 1168 } |
| 1169 | 1169 |
| 1170 void RenderLayerCompositor::frameViewDidScroll() | 1170 void RenderLayerCompositor::frameViewDidScroll() |
| 1171 { | 1171 { |
| 1172 FrameView* frameView = m_renderView->frameView(); | 1172 FrameView* frameView = m_renderView->frameView(); |
| 1173 IntPoint scrollPosition = frameView->scrollPosition(); | 1173 IntPoint scrollPosition = frameView->scrollPosition(); |
| 1174 | 1174 |
| 1175 if (!m_scrollLayer) | 1175 if (!m_scrollLayer) |
| 1176 return; | 1176 return; |
| 1177 | 1177 |
| 1178 // If there's a scrolling coordinator that manages scrolling for this frame
view, | 1178 bool scrollingCoordinatorHandlesOffset = false; |
| 1179 // it will also manage updating the scroll layer position. | |
| 1180 if (ScrollingCoordinator* scrollingCoordinator = this->scrollingCoordinator(
)) { | 1179 if (ScrollingCoordinator* scrollingCoordinator = this->scrollingCoordinator(
)) { |
| 1181 if (Settings* settings = m_renderView->document()->settings()) { | 1180 if (Settings* settings = m_renderView->document()->settings()) { |
| 1182 if (isMainFrame() || settings->compositedScrollingForFramesEnabled()
) | 1181 if (isMainFrame() || settings->compositedScrollingForFramesEnabled()
) |
| 1183 scrollingCoordinator->scrollableAreaScrollLayerDidChange(frameVi
ew); | 1182 scrollingCoordinatorHandlesOffset = scrollingCoordinator->scroll
ableAreaScrollLayerDidChange(frameView); |
| 1184 } | 1183 } |
| 1185 } | 1184 } |
| 1186 | 1185 |
| 1187 m_scrollLayer->setPosition(FloatPoint(-scrollPosition.x(), -scrollPosition.y
())); | 1186 #ifndef BLINK_SCROLLING_POSITION_NO_OFFSET |
| 1187 // FIXME: Remove when possible. Only required to stage multi-repo change. |
| 1188 scrollingCoordinatorHandlesOffset = false; |
| 1189 #endif |
| 1190 |
| 1191 // Scroll position = scroll minimum + scroll offset. Adjust the layer's |
| 1192 // position to handle whatever the scroll coordinator isn't handling. |
| 1193 // The minimum scroll position is non-zero for RTL pages with overflow. |
| 1194 if (scrollingCoordinatorHandlesOffset) |
| 1195 m_scrollLayer->setPosition(-frameView->minimumScrollPosition()); |
| 1196 else |
| 1197 m_scrollLayer->setPosition(-scrollPosition); |
| 1188 } | 1198 } |
| 1189 | 1199 |
| 1190 void RenderLayerCompositor::frameViewDidLayout() | 1200 void RenderLayerCompositor::frameViewDidLayout() |
| 1191 { | 1201 { |
| 1192 } | 1202 } |
| 1193 | 1203 |
| 1194 void RenderLayerCompositor::rootFixedBackgroundsChanged() | 1204 void RenderLayerCompositor::rootFixedBackgroundsChanged() |
| 1195 { | 1205 { |
| 1196 if (!supportsFixedRootBackgroundCompositing()) | 1206 if (!supportsFixedRootBackgroundCompositing()) |
| 1197 return; | 1207 return; |
| 1198 | 1208 |
| 1199 // To avoid having to make the fixed root background layer fixed positioned
to | 1209 // To avoid having to make the fixed root background layer fixed positioned
to |
| 1200 // stay put, we position it in the layer tree as follows: | 1210 // stay put, we position it in the layer tree as follows: |
| 1201 // | 1211 // |
| 1202 // + Overflow controls host | 1212 // + Overflow controls host |
| 1203 // + Frame clip | 1213 // + Frame clip |
| 1204 // + (Fixed root background) <-- Here. | 1214 // + (Fixed root background) <-- Here. |
| 1205 // + Frame scroll | 1215 // + Frame scroll |
| 1206 // + Root content layer | 1216 // + Root content layer |
| 1207 // + Scrollbars | 1217 // + Scrollbars |
| 1208 // | 1218 // |
| 1209 // That is, it needs to be the first child of the frame clip, the sibling of | 1219 // That is, it needs to be the first child of the frame clip, the sibling of |
| 1210 // the frame scroll layer. The compositor does not own the background layer,
it | 1220 // the frame scroll layer. The compositor does not own the background layer,
it |
| 1211 // just positions it (like the foreground layer). | 1221 // just positions it (like the foreground layer). |
| 1212 if (GraphicsLayer* backgroundLayer = fixedRootBackgroundLayer()) | 1222 if (GraphicsLayer* backgroundLayer = fixedRootBackgroundLayer()) |
| 1213 m_clipLayer->addChildBelow(backgroundLayer, m_scrollLayer.get()); | 1223 m_clipLayer->addChildBelow(backgroundLayer, m_scrollLayer.get()); |
| 1214 } | 1224 } |
| 1215 | 1225 |
| 1216 void RenderLayerCompositor::scrollingLayerDidChange(RenderLayer* layer) | 1226 bool RenderLayerCompositor::scrollingLayerDidChange(RenderLayer* layer) |
| 1217 { | 1227 { |
| 1218 if (ScrollingCoordinator* scrollingCoordinator = this->scrollingCoordinator(
)) | 1228 if (ScrollingCoordinator* scrollingCoordinator = this->scrollingCoordinator(
)) |
| 1219 scrollingCoordinator->scrollableAreaScrollLayerDidChange(layer); | 1229 return scrollingCoordinator->scrollableAreaScrollLayerDidChange(layer); |
| 1230 return false; |
| 1220 } | 1231 } |
| 1221 | 1232 |
| 1222 String RenderLayerCompositor::layerTreeAsText(LayerTreeFlags flags) | 1233 String RenderLayerCompositor::layerTreeAsText(LayerTreeFlags flags) |
| 1223 { | 1234 { |
| 1224 updateCompositingLayers(CompositingUpdateAfterLayout); | 1235 updateCompositingLayers(CompositingUpdateAfterLayout); |
| 1225 | 1236 |
| 1226 if (!m_rootContentLayer) | 1237 if (!m_rootContentLayer) |
| 1227 return String(); | 1238 return String(); |
| 1228 | 1239 |
| 1229 // We skip dumping the scroll and clip layers to keep layerTreeAsText output | 1240 // We skip dumping the scroll and clip layers to keep layerTreeAsText output |
| (...skipping 1525 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2755 info.addMember(m_layerForScrollCorner, "layerForScrollCorner"); | 2766 info.addMember(m_layerForScrollCorner, "layerForScrollCorner"); |
| 2756 #if ENABLE(RUBBER_BANDING) | 2767 #if ENABLE(RUBBER_BANDING) |
| 2757 info.addMember(m_layerForOverhangAreas, "layerForOverhangAreas"); | 2768 info.addMember(m_layerForOverhangAreas, "layerForOverhangAreas"); |
| 2758 info.addMember(m_contentShadowLayer, "contentShadowLayer"); | 2769 info.addMember(m_contentShadowLayer, "contentShadowLayer"); |
| 2759 info.addMember(m_layerForTopOverhangArea, "layerForTopOverhangArea"); | 2770 info.addMember(m_layerForTopOverhangArea, "layerForTopOverhangArea"); |
| 2760 info.addMember(m_layerForBottomOverhangArea, "layerForBottomOverhangArea"); | 2771 info.addMember(m_layerForBottomOverhangArea, "layerForBottomOverhangArea"); |
| 2761 #endif | 2772 #endif |
| 2762 } | 2773 } |
| 2763 | 2774 |
| 2764 } // namespace WebCore | 2775 } // namespace WebCore |
| OLD | NEW |