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

Reply via email to