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;