Title: [162480] trunk/Source/WebCore
- Revision
- 162480
- Author
- simon.fra...@apple.com
- Date
- 2014-01-21 15:54:34 -0800 (Tue, 21 Jan 2014)
Log Message
Remove #if PLATFORM(IOS) in various places around customFixedPositionLayoutRect() code
https://bugs.webkit.org/show_bug.cgi?id=127373
Reviewed by Beth Dakin.
Instead of PLATFORM(IOS) #idefs at every call site for viewportConstrainedVisibleContentRect(),
move the #ifdef inside viewportConstrainedVisibleContentRect().
The one call site that needs special handling is RenderLayerBacking::updateCompositedBounds(),
which needs to avoid clipping fixed layers to the custom fixed position rect, but instead to
visibleContentRect() (which is really the document bounds on iOS). This ensures that the
fixed layers aren't clipped when zooming out.
* page/FrameView.cpp:
(WebCore::FrameView::viewportConstrainedVisibleContentRect):
* rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::stickyPositionOffset):
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateCompositedBounds):
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::requiresCompositingForPosition):
(WebCore::RenderLayerCompositor::computeFixedViewportConstraints):
(WebCore::RenderLayerCompositor::computeStickyViewportConstraints):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (162479 => 162480)
--- trunk/Source/WebCore/ChangeLog 2014-01-21 23:49:57 UTC (rev 162479)
+++ trunk/Source/WebCore/ChangeLog 2014-01-21 23:54:34 UTC (rev 162480)
@@ -1,3 +1,29 @@
+2014-01-21 Simon Fraser <simon.fra...@apple.com>
+
+ Remove #if PLATFORM(IOS) in various places around customFixedPositionLayoutRect() code
+ https://bugs.webkit.org/show_bug.cgi?id=127373
+
+ Reviewed by Beth Dakin.
+
+ Instead of PLATFORM(IOS) #idefs at every call site for viewportConstrainedVisibleContentRect(),
+ move the #ifdef inside viewportConstrainedVisibleContentRect().
+
+ The one call site that needs special handling is RenderLayerBacking::updateCompositedBounds(),
+ which needs to avoid clipping fixed layers to the custom fixed position rect, but instead to
+ visibleContentRect() (which is really the document bounds on iOS). This ensures that the
+ fixed layers aren't clipped when zooming out.
+
+ * page/FrameView.cpp:
+ (WebCore::FrameView::viewportConstrainedVisibleContentRect):
+ * rendering/RenderBoxModelObject.cpp:
+ (WebCore::RenderBoxModelObject::stickyPositionOffset):
+ * rendering/RenderLayerBacking.cpp:
+ (WebCore::RenderLayerBacking::updateCompositedBounds):
+ * rendering/RenderLayerCompositor.cpp:
+ (WebCore::RenderLayerCompositor::requiresCompositingForPosition):
+ (WebCore::RenderLayerCompositor::computeFixedViewportConstraints):
+ (WebCore::RenderLayerCompositor::computeStickyViewportConstraints):
+
2014-01-21 Andy Estes <aes...@apple.com>
[iOS] Allow all clients to link against WebCore
Modified: trunk/Source/WebCore/page/FrameView.cpp (162479 => 162480)
--- trunk/Source/WebCore/page/FrameView.cpp 2014-01-21 23:49:57 UTC (rev 162479)
+++ trunk/Source/WebCore/page/FrameView.cpp 2014-01-21 23:54:34 UTC (rev 162480)
@@ -1618,6 +1618,10 @@
LayoutRect FrameView::viewportConstrainedVisibleContentRect() const
{
+#if PLATFORM(IOS)
+ if (useCustomFixedPositionLayoutRect())
+ return customFixedPositionLayoutRect();
+#endif
LayoutRect viewportRect = visibleContentRect();
viewportRect.setLocation(toPoint(scrollOffsetForFixedPosition()));
return viewportRect;
Modified: trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp (162479 => 162480)
--- trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp 2014-01-21 23:49:57 UTC (rev 162479)
+++ trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp 2014-01-21 23:54:34 UTC (rev 162480)
@@ -432,11 +432,7 @@
FloatPoint scrollOffset = FloatPoint() + enclosingClippingLayer->scrollOffset();
constrainingRect.setLocation(scrollOffset);
} else {
-#if PLATFORM(IOS)
- LayoutRect viewportRect = view().frameView().customFixedPositionLayoutRect();
-#else
LayoutRect viewportRect = view().frameView().viewportConstrainedVisibleContentRect();
-#endif
float scale = view().frameView().frame().frameScaleFactor();
viewportRect.scale(1 / scale);
constrainingRect = viewportRect;
Modified: trunk/Source/WebCore/rendering/RenderLayerBacking.cpp (162479 => 162480)
--- trunk/Source/WebCore/rendering/RenderLayerBacking.cpp 2014-01-21 23:49:57 UTC (rev 162479)
+++ trunk/Source/WebCore/rendering/RenderLayerBacking.cpp 2014-01-21 23:54:34 UTC (rev 162480)
@@ -489,9 +489,13 @@
RenderLayer* rootLayer = view.layer();
LayoutRect clippingBounds;
- if (renderer().style().position() == FixedPosition && renderer().container() == &view)
+ if (renderer().style().position() == FixedPosition && renderer().container() == &view) {
+#if PLATFORM(IOS)
+ clippingBounds = view.frameView().visibleContentRect();
+#else
clippingBounds = view.frameView().viewportConstrainedVisibleContentRect();
- else
+#endif
+ } else
clippingBounds = view.unscaledDocumentRect();
if (&m_owningLayer != rootLayer)
Modified: trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp (162479 => 162480)
--- trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp 2014-01-21 23:49:57 UTC (rev 162479)
+++ trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp 2014-01-21 23:54:34 UTC (rev 162480)
@@ -2557,11 +2557,7 @@
}
// Fixed position elements that are invisible in the current view don't get their own layer.
-#if PLATFORM(IOS)
- LayoutRect viewBounds = m_renderView.frameView().customFixedPositionLayoutRect();
-#else
LayoutRect viewBounds = m_renderView.frameView().viewportConstrainedVisibleContentRect();
-#endif
LayoutRect layerBounds = layer.calculateLayerBounds(&layer, 0, RenderLayer::UseLocalClipRectIfPossible | RenderLayer::IncludeLayerFilterOutsets | RenderLayer::UseFragmentBoxes
| RenderLayer::ExcludeHiddenDescendants | RenderLayer::DontConstrainForMask | RenderLayer::IncludeCompositedDescendants);
// Map to m_renderView to ignore page scale.
@@ -3385,16 +3381,10 @@
{
ASSERT(layer.isComposited());
-#if PLATFORM(IOS)
- LayoutRect viewportRect = m_renderView.frameView().customFixedPositionLayoutRect();
-#else
+ GraphicsLayer* graphicsLayer = layer.backing()->graphicsLayer();
LayoutRect viewportRect = m_renderView.frameView().viewportConstrainedVisibleContentRect();
-#endif
FixedPositionViewportConstraints constraints;
-
- GraphicsLayer* graphicsLayer = layer.backing()->graphicsLayer();
-
constraints.setLayerPositionAtLastLayout(graphicsLayer->position());
constraints.setViewportRectAtLastLayout(viewportRect);
@@ -3431,12 +3421,7 @@
ASSERT(!layer.enclosingOverflowClipLayer(ExcludeSelf));
#endif
-#if PLATFORM(IOS)
- LayoutRect viewportRect = m_renderView.frameView().customFixedPositionLayoutRect();
-#else
LayoutRect viewportRect = m_renderView.frameView().viewportConstrainedVisibleContentRect();
-#endif
-
RenderBoxModelObject& renderer = toRenderBoxModelObject(layer.renderer());
StickyPositionViewportConstraints constraints;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes