summaryrefslogtreecommitdiff
path: root/Source/WebKit2/UIProcess/mac
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebKit2/UIProcess/mac')
-rw-r--r--Source/WebKit2/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h7
-rw-r--r--Source/WebKit2/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm32
-rw-r--r--Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm5
3 files changed, 40 insertions, 4 deletions
diff --git a/Source/WebKit2/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h b/Source/WebKit2/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h
index 08b16508d..c78610984 100644
--- a/Source/WebKit2/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h
+++ b/Source/WebKit2/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h
@@ -48,13 +48,15 @@ private:
virtual void sizeDidChange() OVERRIDE;
virtual void waitForPossibleGeometryUpdate() OVERRIDE;
virtual void colorSpaceDidChange() OVERRIDE;
+ virtual void minimumLayoutWidthDidChange() OVERRIDE;
virtual void enterAcceleratedCompositingMode(uint64_t backingStoreStateID, const LayerTreeContext&) OVERRIDE;
virtual void exitAcceleratedCompositingMode(uint64_t backingStoreStateID, const UpdateInfo&) OVERRIDE;
virtual void updateAcceleratedCompositingMode(uint64_t backingStoreStateID, const LayerTreeContext&) OVERRIDE;
// Message handlers.
- virtual void didUpdateGeometry() OVERRIDE;
+ virtual void didUpdateGeometry(const WebCore::IntSize& newIntrinsicContentSize) OVERRIDE;
+ virtual void intrinsicContentSizeDidChange(const WebCore::IntSize& newIntrinsicContentSize) OVERRIDE;
void sendUpdateGeometry();
@@ -63,6 +65,9 @@ private:
// The last size we sent to the web process.
WebCore::IntSize m_lastSentSize;
+
+ // The last minimum layout width we sent to the web process.
+ double m_lastSentMinimumLayoutWidth;
};
} // namespace WebKit
diff --git a/Source/WebKit2/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm b/Source/WebKit2/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm
index a0c181768..3de8be7a6 100644
--- a/Source/WebKit2/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm
+++ b/Source/WebKit2/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm
@@ -47,6 +47,7 @@ PassOwnPtr<TiledCoreAnimationDrawingAreaProxy> TiledCoreAnimationDrawingAreaProx
TiledCoreAnimationDrawingAreaProxy::TiledCoreAnimationDrawingAreaProxy(WebPageProxy* webPageProxy)
: DrawingAreaProxy(DrawingAreaTypeTiledCoreAnimation, webPageProxy)
, m_isWaitingForDidUpdateGeometry(false)
+ , m_lastSentMinimumLayoutWidth(0)
{
}
@@ -103,6 +104,19 @@ void TiledCoreAnimationDrawingAreaProxy::colorSpaceDidChange()
m_webPageProxy->process()->send(Messages::DrawingArea::SetColorSpace(m_webPageProxy->colorSpace()), m_webPageProxy->pageID());
}
+void TiledCoreAnimationDrawingAreaProxy::minimumLayoutWidthDidChange()
+{
+ if (!m_webPageProxy->isValid())
+ return;
+
+ // We only want one UpdateGeometry message in flight at once, so if we've already sent one but
+ // haven't yet received the reply we'll just return early here.
+ if (m_isWaitingForDidUpdateGeometry)
+ return;
+
+ sendUpdateGeometry();
+}
+
void TiledCoreAnimationDrawingAreaProxy::enterAcceleratedCompositingMode(uint64_t backingStoreStateID, const LayerTreeContext& layerTreeContext)
{
m_webPageProxy->enterAcceleratedCompositingMode(layerTreeContext);
@@ -119,24 +133,36 @@ void TiledCoreAnimationDrawingAreaProxy::updateAcceleratedCompositingMode(uint64
m_webPageProxy->updateAcceleratedCompositingMode(layerTreeContext);
}
-void TiledCoreAnimationDrawingAreaProxy::didUpdateGeometry()
+void TiledCoreAnimationDrawingAreaProxy::didUpdateGeometry(const IntSize& newIntrinsicContentSize)
{
ASSERT(m_isWaitingForDidUpdateGeometry);
m_isWaitingForDidUpdateGeometry = false;
+ double minimumLayoutWidth = m_webPageProxy->minimumLayoutWidth();
+
// If the WKView was resized while we were waiting for a DidUpdateGeometry reply from the web process,
// we need to resend the new size here.
- if (m_lastSentSize != m_size)
+ if (m_lastSentSize != m_size || m_lastSentMinimumLayoutWidth != minimumLayoutWidth)
sendUpdateGeometry();
+
+ if (minimumLayoutWidth > 0)
+ m_webPageProxy->intrinsicContentSizeDidChange(newIntrinsicContentSize);
+}
+
+void TiledCoreAnimationDrawingAreaProxy::intrinsicContentSizeDidChange(const IntSize& newIntrinsicContentSize)
+{
+ if (m_webPageProxy->minimumLayoutWidth() > 0)
+ m_webPageProxy->intrinsicContentSizeDidChange(newIntrinsicContentSize);
}
void TiledCoreAnimationDrawingAreaProxy::sendUpdateGeometry()
{
ASSERT(!m_isWaitingForDidUpdateGeometry);
+ m_lastSentMinimumLayoutWidth = m_webPageProxy->minimumLayoutWidth();
m_lastSentSize = m_size;
- m_webPageProxy->process()->send(Messages::DrawingArea::UpdateGeometry(m_size), m_webPageProxy->pageID());
+ m_webPageProxy->process()->send(Messages::DrawingArea::UpdateGeometry(m_size, m_lastSentMinimumLayoutWidth), m_webPageProxy->pageID());
m_isWaitingForDidUpdateGeometry = true;
}
diff --git a/Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm b/Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm
index 137c22f2c..849ba20f8 100644
--- a/Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm
+++ b/Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm
@@ -474,6 +474,11 @@ WKView* WebPageProxy::wkView() const
return m_pageClient->wkView();
}
+void WebPageProxy::intrinsicContentSizeDidChange(const IntSize& intrinsicContentSize)
+{
+ m_pageClient->intrinsicContentSizeDidChange(intrinsicContentSize);
+}
+
void WebPageProxy::setAcceleratedCompositingRootLayer(const GraphicsLayer* rootLayer)
{
m_pageClient->setAcceleratedCompositingRootLayer(rootLayer->platformLayer());