Diff
Modified: branches/safari-600.1-branch/Source/WebCore/ChangeLog (172080 => 172081)
--- branches/safari-600.1-branch/Source/WebCore/ChangeLog 2014-08-05 21:28:38 UTC (rev 172080)
+++ branches/safari-600.1-branch/Source/WebCore/ChangeLog 2014-08-05 21:31:37 UTC (rev 172081)
@@ -1,5 +1,59 @@
2014-08-05 Lucas Forschler <lforsch...@apple.com>
+ Merge r171951
+
+ 2014-08-01 Beth Dakin <bda...@apple.com>
+
+ Inspector highlights clipped at the bottom on the page in WK1 views with
+ contentInsets
+ https://bugs.webkit.org/show_bug.cgi?id=135480
+ -and corresponding-
+ <rdar://problem/17850323>
+
+ Reviewed by Simon Fraser.
+
+ unscaledTotalVisibleContentSize() was the main function on Mac that was expected
+ to return the rect representing ALL visible content, including content that might
+ be in an inset area and obscured by UI elements. This patch re-names that function
+ to unscaledVisibleContentSizeIncludingObscuredArea(), and that patch makes that
+ function return the right thing in the platformWidget() case.
+
+ Re-name.
+ * inspector/InspectorOverlay.cpp:
+ (WebCore::InspectorOverlay::update):
+
+ Return platformVisibleContentSizeIncludingObscuredArea() for the platformWidget()
+ case and re-name.
+ * platform/ScrollView.cpp:
+ (WebCore::ScrollView::unscaledVisibleContentSizeIncludingObscuredArea):
+
+ This was just wrong. It was returning the big rectangle instead of the small one
+ for platformWidget().
+ (WebCore::ScrollView::unscaledUnobscuredVisibleContentSize):
+
+ New platform functions.
+ (WebCore::ScrollView::platformVisibleContentRectIncludingObscuredArea):
+ (WebCore::ScrollView::platformVisibleContentSizeIncludingObscuredArea):
+ (WebCore::ScrollView::unscaledTotalVisibleContentSize): Deleted.
+ * platform/ScrollView.h:
+ * platform/ios/ScrollViewIOS.mm:
+ (WebCore::ScrollView::platformVisibleContentRectIncludingObscuredArea):
+ (WebCore::ScrollView::platformVisibleContentSizeIncludingObscuredArea):
+ * platform/mac/ScrollViewMac.mm:
+ (WebCore::ScrollView::platformVisibleContentRect):
+ (WebCore::ScrollView::platformVisibleContentSize):
+ (WebCore::ScrollView::platformVisibleContentRectIncludingObscuredArea):
+ (WebCore::ScrollView::platformVisibleContentSizeIncludingObscuredArea):
+
+ Re-name.
+ * rendering/RenderLayerCompositor.cpp:
+ (WebCore::RenderLayerCompositor::flushPendingLayerChanges):
+ (WebCore::RenderLayerCompositor::frameViewDidChangeSize):
+ (WebCore::RenderLayerCompositor::updateRootLayerPosition):
+ (WebCore::RenderLayerCompositor::ensureRootLayer):
+
+2014-08-05 Lucas Forschler <lforsch...@apple.com>
+
Merge r172047
2014-08-05 Dean Jackson <d...@apple.com>
Modified: branches/safari-600.1-branch/Source/WebCore/inspector/InspectorOverlay.cpp (172080 => 172081)
--- branches/safari-600.1-branch/Source/WebCore/inspector/InspectorOverlay.cpp 2014-08-05 21:28:38 UTC (rev 172080)
+++ branches/safari-600.1-branch/Source/WebCore/inspector/InspectorOverlay.cpp 2014-08-05 21:31:37 UTC (rev 172081)
@@ -344,8 +344,8 @@
return;
FrameView* overlayView = overlayPage()->mainFrame().view();
- IntSize viewportSize = view->unscaledTotalVisibleContentSize();
- IntSize frameViewFullSize = view->unscaledTotalVisibleContentSize(ScrollableArea::IncludeScrollbars);
+ IntSize viewportSize = view->unscaledVisibleContentSizeIncludingObscuredArea();
+ IntSize frameViewFullSize = view->unscaledVisibleContentSizeIncludingObscuredArea(ScrollableArea::IncludeScrollbars);
overlayPage()->setPageScaleFactor(m_page.pageScaleFactor(), IntPoint());
frameViewFullSize.scale(m_page.pageScaleFactor());
overlayView->resize(frameViewFullSize);
Modified: branches/safari-600.1-branch/Source/WebCore/platform/ScrollView.cpp (172080 => 172081)
--- branches/safari-600.1-branch/Source/WebCore/platform/ScrollView.cpp 2014-08-05 21:28:38 UTC (rev 172080)
+++ branches/safari-600.1-branch/Source/WebCore/platform/ScrollView.cpp 2014-08-05 21:31:37 UTC (rev 172081)
@@ -266,7 +266,7 @@
return IntRect(IntPoint(m_scrollOffset), expandedIntSize(visibleContentSize));
}
-IntSize ScrollView::unscaledTotalVisibleContentSize(VisibleContentRectIncludesScrollbars scrollbarInclusion) const
+IntSize ScrollView::unscaledVisibleContentSizeIncludingObscuredArea(VisibleContentRectIncludesScrollbars scrollbarInclusion) const
{
if (platformWidget())
return platformVisibleContentSize(scrollbarInclusion == IncludeScrollbars);
@@ -291,10 +291,10 @@
IntSize ScrollView::unscaledUnobscuredVisibleContentSize(VisibleContentRectIncludesScrollbars scrollbarInclusion) const
{
- IntSize visibleContentSize = unscaledTotalVisibleContentSize(scrollbarInclusion);
-
+ IntSize visibleContentSize = unscaledVisibleContentSizeIncludingObscuredArea(scrollbarInclusion);
+
if (platformWidget())
- return visibleContentSize;
+ return platformVisibleContentSize(scrollbarInclusion == IncludeScrollbars);
#if USE(TILED_BACKING_STORE)
if (!m_fixedVisibleContentRect.isEmpty())
@@ -1529,6 +1529,16 @@
return IntSize();
}
+IntRect ScrollView::platformVisibleContentRectIncludingObscuredArea(bool) const
+{
+ return IntRect();
+}
+
+IntSize ScrollView::platformVisibleContentSizeIncludingObscuredArea(bool) const
+{
+ return IntSize();
+}
+
void ScrollView::platformSetContentsSize()
{
}
Modified: branches/safari-600.1-branch/Source/WebCore/platform/ScrollView.h (172080 => 172081)
--- branches/safari-600.1-branch/Source/WebCore/platform/ScrollView.h 2014-08-05 21:28:38 UTC (rev 172080)
+++ branches/safari-600.1-branch/Source/WebCore/platform/ScrollView.h 2014-08-05 21:31:37 UTC (rev 172081)
@@ -206,9 +206,9 @@
// visibleContentScaleFactor is usually 1, except when the setting delegatesPageScaling is true and the
// ScrollView is the main frame; in that case, visibleContentScaleFactor is equal to the page's pageScaleFactor.
// Ports that don't use pageScaleFactor can treat unscaledUnobscuredVisibleContentSize and visibleContentRect().size() as equivalent.
- // unscaledTotalVisibleContentSize() includes areas in the content that might be obscured by UI elements.
+ // unscaledVisibleContentSizeIncludingObscuredArea() includes areas in the content that might be obscured by UI elements.
IntSize unscaledUnobscuredVisibleContentSize(VisibleContentRectIncludesScrollbars = ExcludeScrollbars) const;
- IntSize unscaledTotalVisibleContentSize(VisibleContentRectIncludesScrollbars = ExcludeScrollbars) const;
+ IntSize unscaledVisibleContentSizeIncludingObscuredArea(VisibleContentRectIncludesScrollbars = ExcludeScrollbars) const;
virtual float visibleContentScaleFactor() const { return 1; }
// Functions for getting/setting the size webkit should use to layout the contents. By default this is the same as the visible
@@ -481,6 +481,8 @@
bool platformCanBlitOnScroll() const;
IntRect platformVisibleContentRect(bool includeScrollbars) const;
IntSize platformVisibleContentSize(bool includeScrollbars) const;
+ IntRect platformVisibleContentRectIncludingObscuredArea(bool includeScrollbars) const;
+ IntSize platformVisibleContentSizeIncludingObscuredArea(bool includeScrollbars) const;
void platformSetContentsSize();
IntRect platformContentsToScreen(const IntRect&) const;
IntPoint platformScreenToContents(const IntPoint&) const;
Modified: branches/safari-600.1-branch/Source/WebCore/platform/ios/ScrollViewIOS.mm (172080 => 172081)
--- branches/safari-600.1-branch/Source/WebCore/platform/ios/ScrollViewIOS.mm 2014-08-05 21:28:38 UTC (rev 172080)
+++ branches/safari-600.1-branch/Source/WebCore/platform/ios/ScrollViewIOS.mm 2014-08-05 21:31:37 UTC (rev 172081)
@@ -195,6 +195,16 @@
return IntSize();
}
+IntRect ScrollView::platformVisibleContentRectIncludingObscuredArea(bool includeScrollbars) const
+{
+ return platformVisibleContentRect(includeScrollbars);
+}
+
+IntSize ScrollView::platformVisibleContentSizeIncludingObscuredArea(bool includeScrollbars) const
+{
+ return platformVisibleContentSize(includeScrollbars);
+}
+
LegacyTileCache* ScrollView::legacyTileCache()
{
// Make tile cache pointer available via the main frame only. Tile cache interaction should be managed by
Modified: branches/safari-600.1-branch/Source/WebCore/platform/mac/ScrollViewMac.mm (172080 => 172081)
--- branches/safari-600.1-branch/Source/WebCore/platform/mac/ScrollViewMac.mm 2014-08-05 21:28:38 UTC (rev 172080)
+++ branches/safari-600.1-branch/Source/WebCore/platform/mac/ScrollViewMac.mm 2014-08-05 21:31:37 UTC (rev 172081)
@@ -141,30 +141,43 @@
IntRect ScrollView::platformVisibleContentRect(bool includeScrollbars) const
{
BEGIN_BLOCK_OBJC_EXCEPTIONS;
+ IntRect visibleContentRect = platformVisibleContentRectIncludingObscuredArea(includeScrollbars);
- IntRect visibleContentRect = enclosingIntRect([scrollView() documentVisibleRect]);
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 10100
visibleContentRect.move(scrollView().contentInsets.left, scrollView().contentInsets.top);
visibleContentRect.contract(scrollView().contentInsets.left + scrollView().contentInsets.right, scrollView().contentInsets.top + scrollView().contentInsets.bottom);
#endif
+ return visibleContentRect;
+ END_BLOCK_OBJC_EXCEPTIONS;
+
+ return IntRect();
+}
+
+IntSize ScrollView::platformVisibleContentSize(bool includeScrollbars) const
+{
+ return platformVisibleContentRect(includeScrollbars).size();
+}
+
+IntRect ScrollView::platformVisibleContentRectIncludingObscuredArea(bool includeScrollbars) const
+{
+ BEGIN_BLOCK_OBJC_EXCEPTIONS;
+ IntRect visibleContentRectIncludingObscuredArea = enclosingIntRect([scrollView() documentVisibleRect]);
+
if (includeScrollbars) {
IntSize frameSize = IntSize([scrollView() frame].size);
-#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 10100
- frameSize.contract(scrollView().contentInsets.left + scrollView().contentInsets.right, scrollView().contentInsets.top + scrollView().contentInsets.bottom);
-#endif
- visibleContentRect.setSize(frameSize);
+ visibleContentRectIncludingObscuredArea.setSize(frameSize);
}
- return visibleContentRect;
+ return visibleContentRectIncludingObscuredArea;
END_BLOCK_OBJC_EXCEPTIONS;
return IntRect();
}
-IntSize ScrollView::platformVisibleContentSize(bool includeScrollbars) const
+IntSize ScrollView::platformVisibleContentSizeIncludingObscuredArea(bool includeScrollbars) const
{
- return platformVisibleContentRect(includeScrollbars).size();
+ return platformVisibleContentRectIncludingObscuredArea(includeScrollbars).size();
}
void ScrollView::platformSetContentsSize()
Modified: branches/safari-600.1-branch/Source/WebCore/rendering/RenderLayerCompositor.cpp (172080 => 172081)
--- branches/safari-600.1-branch/Source/WebCore/rendering/RenderLayerCompositor.cpp 2014-08-05 21:28:38 UTC (rev 172080)
+++ branches/safari-600.1-branch/Source/WebCore/rendering/RenderLayerCompositor.cpp 2014-08-05 21:31:37 UTC (rev 172081)
@@ -460,7 +460,7 @@
rootLayer->flushCompositingState(visibleRect);
#else
// Having a m_clipLayer indicates that we're doing scrolling via GraphicsLayers.
- IntRect visibleRect = m_clipLayer ? IntRect(IntPoint(), frameView.unscaledTotalVisibleContentSize()) : frameView.visibleContentRect();
+ IntRect visibleRect = m_clipLayer ? IntRect(IntPoint(), frameView.unscaledVisibleContentSizeIncludingObscuredArea()) : frameView.visibleContentRect();
if (!frameView.exposedRect().isInfinite())
visibleRect.intersect(IntRect(frameView.exposedRect()));
rootLayer->flushCompositingState(visibleRect);
@@ -1562,7 +1562,7 @@
{
if (m_clipLayer) {
const FrameView& frameView = m_renderView.frameView();
- m_clipLayer->setSize(frameView.unscaledTotalVisibleContentSize());
+ m_clipLayer->setSize(frameView.unscaledVisibleContentSizeIncludingObscuredArea());
m_clipLayer->setPosition(positionForClipLayer());
frameViewDidScroll();
@@ -1970,7 +1970,7 @@
m_rootContentLayer->setAnchorPoint(FloatPoint3D());
}
if (m_clipLayer) {
- m_clipLayer->setSize(m_renderView.frameView().unscaledTotalVisibleContentSize());
+ m_clipLayer->setSize(m_renderView.frameView().unscaledVisibleContentSizeIncludingObscuredArea());
m_clipLayer->setPosition(positionForClipLayer());
}
@@ -3268,7 +3268,7 @@
m_clipLayer->addChild(m_scrollLayer.get());
m_scrollLayer->addChild(m_rootContentLayer.get());
- m_clipLayer->setSize(m_renderView.frameView().unscaledTotalVisibleContentSize());
+ m_clipLayer->setSize(m_renderView.frameView().unscaledVisibleContentSizeIncludingObscuredArea());
m_clipLayer->setPosition(positionForClipLayer());
m_clipLayer->setAnchorPoint(FloatPoint3D());