Unreviewed, rolling out r163182.
http://trac.webkit.org/changeset/163182
https://bugs.webkit.org/show_bug.cgi?id=128012

Broke lots of tests (Requested by smfr on #webkit).

* page/FrameView.cpp:
(WebCore::FrameView::visibleContentsResized):
* page/FrameView.h:
* rendering/RenderView.cpp:
(WebCore::isFixedPositionInViewport):
(WebCore::RenderView::hasCustomFixedPosition):
* rendering/RenderView.h:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@163188 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index bb13080..9be753c 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,3 +1,19 @@
+2014-01-31  Commit Queue  <commit-queue@webkit.org>
+
+        Unreviewed, rolling out r163182.
+        http://trac.webkit.org/changeset/163182
+        https://bugs.webkit.org/show_bug.cgi?id=128012
+
+        Broke lots of tests (Requested by smfr on #webkit).
+
+        * page/FrameView.cpp:
+        (WebCore::FrameView::visibleContentsResized):
+        * page/FrameView.h:
+        * rendering/RenderView.cpp:
+        (WebCore::isFixedPositionInViewport):
+        (WebCore::RenderView::hasCustomFixedPosition):
+        * rendering/RenderView.h:
+
 2014-01-31  Brady Eidson  <beidson@apple.com>
 
         IDB: openCursor() needs to prime the cursor with first position values
diff --git a/Source/WebCore/page/FrameView.cpp b/Source/WebCore/page/FrameView.cpp
index baff3d4..2909bec 100644
--- a/Source/WebCore/page/FrameView.cpp
+++ b/Source/WebCore/page/FrameView.cpp
@@ -2139,11 +2139,6 @@
     ScrollView::fixedLayoutSizeChanged();
 }
 
-bool FrameView::shouldLayoutAfterViewportChange() const
-{
-    return hasViewportConstrainedObjects() && (!useFixedLayout() || useCustomFixedPositionLayoutRect());
-}
-
 void FrameView::visibleContentsResized()
 {
     // We check to make sure the view is attached to a frame() as this method can
@@ -2165,7 +2160,7 @@
     }
 #endif
 
-    if (shouldLayoutAfterViewportChange() && needsLayout())
+    if (!useFixedLayout() && needsLayout())
         layout();
 
     if (RenderView* renderView = this->renderView()) {
diff --git a/Source/WebCore/page/FrameView.h b/Source/WebCore/page/FrameView.h
index 2771bca..a93a718e 100644
--- a/Source/WebCore/page/FrameView.h
+++ b/Source/WebCore/page/FrameView.h
@@ -129,8 +129,6 @@
     IntRect customFixedPositionLayoutRect() const { return m_customFixedPositionLayoutRect; }
     void setCustomFixedPositionLayoutRect(const IntRect&);
     bool updateFixedPositionLayoutRect();
-#else
-    bool useCustomFixedPositionLayoutRect() const { return false; }
 #endif
 
 #if ENABLE(REQUEST_ANIMATION_FRAME)
@@ -481,7 +479,6 @@
     bool useSlowRepaintsIfNotOverlapped() const;
     void updateCanBlitOnScrollRecursively();
     bool contentsInCompositedLayer() const;
-    bool shouldLayoutAfterViewportChange() const;
 
     bool shouldUpdateCompositingLayersAfterScrolling() const;
 
diff --git a/Source/WebCore/rendering/RenderView.cpp b/Source/WebCore/rendering/RenderView.cpp
index 4384ef0..c449b88 100644
--- a/Source/WebCore/rendering/RenderView.cpp
+++ b/Source/WebCore/rendering/RenderView.cpp
@@ -1197,6 +1197,24 @@
     return *m_flowThreadController;
 }
 
+#if PLATFORM(IOS)
+static bool isFixedPositionInViewport(const RenderObject& renderer, const RenderObject* container)
+{
+    return (renderer.style().position() == FixedPosition) && renderer.container() == container;
+}
+
+bool RenderView::hasCustomFixedPosition(const RenderObject& renderer, ContainingBlockCheck checkContainer) const
+{
+    if (!frameView().useCustomFixedPositionLayoutRect())
+        return false;
+
+    if (checkContainer == CheckContainingBlock)
+        return isFixedPositionInViewport(renderer, this);
+
+    return renderer.style().position() == FixedPosition;
+}
+#endif
+
 void RenderView::pushLayoutStateForCurrentFlowThread(const RenderObject& object)
 {
     if (!m_flowThreadController)
diff --git a/Source/WebCore/rendering/RenderView.h b/Source/WebCore/rendering/RenderView.h
index ae04d8b..be194ae 100644
--- a/Source/WebCore/rendering/RenderView.h
+++ b/Source/WebCore/rendering/RenderView.h
@@ -191,6 +191,11 @@
 
     virtual void styleDidChange(StyleDifference, const RenderStyle* oldStyle) override;
 
+#if PLATFORM(IOS)
+    enum ContainingBlockCheck { CheckContainingBlock, DontCheckContainingBlock };
+    bool hasCustomFixedPosition(const RenderObject&, ContainingBlockCheck = CheckContainingBlock) const;
+#endif
+
     IntervalArena* intervalArena();
 
     IntSize viewportSize() const;