<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[170514] trunk/Source</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/170514">170514</a></dd>
<dt>Author</dt> <dd>timothy_horton@apple.com</dd>
<dt>Date</dt> <dd>2014-06-26 19:05:15 -0700 (Thu, 26 Jun 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>[WK2] Pinch-zoom shadows can overlap headers and footers
https://bugs.webkit.org/show_bug.cgi?id=134372
&lt;rdar://problem/16004095&gt;

Reviewed by Simon Fraser.

* WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
(WebKit::shadowLayerPositionForFrame):
(WebKit::shadowLayerBoundsForFrame):
Compute the initial shadow layer and shadow bounds exactly as RenderLayerCompositor does
(in updateRootLayerPosition and friends). Also, clip the shadow layer to the old document rect,
otherwise it can extend over top of the header/footers. The content is automatically clipped to
this rect by the root content layer, but the shadow is outside of that.

(WebKit::TiledCoreAnimationDrawingArea::applyTransientZoomToLayers):
(WebKit::TiledCoreAnimationDrawingArea::commitTransientZoom):
Pass all of the arguments to constrainScrollPositionForOverhang, not just half of them.
There's still a bug where we constrain incorrectly with header/footer layers, but that
will be addressed elsewhere.

(WebKit::TiledCoreAnimationDrawingArea::applyTransientZoomToPage):
Make use of the new helpers.

* WebCore.exp.in:
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::updateLayerForHeader):
(WebCore::RenderLayerCompositor::updateLayerForFooter):
Put header/footer layers in front of the root content layer instead of behind.
Ideally nothing would ever overlap them, but this will give them precedence regardless.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreWebCoreexpin">trunk/Source/WebCore/WebCore.exp.in</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderLayerCompositorcpp">trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPagemacTiledCoreAnimationDrawingAreamm">trunk/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (170513 => 170514)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-06-27 01:10:48 UTC (rev 170513)
+++ trunk/Source/WebCore/ChangeLog        2014-06-27 02:05:15 UTC (rev 170514)
</span><span class="lines">@@ -1,3 +1,18 @@
</span><ins>+2014-06-26  Tim Horton  &lt;timothy_horton@apple.com&gt;
+
+        [WK2] Pinch-zoom shadows can overlap headers and footers
+        https://bugs.webkit.org/show_bug.cgi?id=134372
+        &lt;rdar://problem/16004095&gt;
+
+        Reviewed by Simon Fraser.
+
+        * WebCore.exp.in:
+        * rendering/RenderLayerCompositor.cpp:
+        (WebCore::RenderLayerCompositor::updateLayerForHeader):
+        (WebCore::RenderLayerCompositor::updateLayerForFooter):
+        Put header/footer layers in front of the root content layer instead of behind.
+        Ideally nothing would ever overlap them, but this will give them precedence regardless.
+
</ins><span class="cx"> 2014-06-26  David Kilzer  &lt;ddkilzer@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [Win] Always NULL-terminate the string in createUTF8String()
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCoreexpin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.exp.in (170513 => 170514)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.exp.in        2014-06-27 01:10:48 UTC (rev 170513)
+++ trunk/Source/WebCore/WebCore.exp.in        2014-06-27 02:05:15 UTC (rev 170514)
</span><span class="lines">@@ -1405,6 +1405,7 @@
</span><span class="cx"> __ZN7WebCore9FrameView24setScrollPinningBehaviorENS_21ScrollPinningBehaviorE
</span><span class="cx"> __ZN7WebCore9FrameView26adjustPageHeightDeprecatedEPffff
</span><span class="cx"> __ZN7WebCore9FrameView26adjustTiledBackingCoverageEv
</span><ins>+__ZN7WebCore9FrameView28yPositionForRootContentLayerERKNS_10FloatPointEff
</ins><span class="cx"> __ZN7WebCore9FrameView29setAutoSizeFixedMinimumHeightEi
</span><span class="cx"> __ZN7WebCore9FrameView29setShouldUpdateWhileOffscreenEb
</span><span class="cx"> __ZN7WebCore9FrameView31setVisualUpdatesAllowedByClientEb
</span><span class="lines">@@ -1998,6 +1999,7 @@
</span><span class="cx"> __ZNK7WebCore9FrameView13isTransparentEv
</span><span class="cx"> __ZNK7WebCore9FrameView13paintBehaviorEv
</span><span class="cx"> __ZNK7WebCore9FrameView14didFirstLayoutEv
</span><ins>+__ZNK7WebCore9FrameView15topContentInsetEv
</ins><span class="cx"> __ZNK7WebCore9FrameView17convertToRendererEPKNS_13RenderElementERKNS_7IntRectE
</span><span class="cx"> __ZNK7WebCore9FrameView17convertToRendererEPKNS_13RenderElementERKNS_8IntPointE
</span><span class="cx"> __ZNK7WebCore9FrameView19baseBackgroundColorEv
</span><span class="lines">@@ -2408,6 +2410,11 @@
</span><span class="cx"> __ZNK7WebCore7IntSizecv7_NSSizeEv
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 10100
+__ZN7WebCore32shouldRegisterInsertionUndoGroupEP18NSAttributedString
+__ZN7WebCore44registerInsertionUndoGroupingWithUndoManagerEP13NSUndoManager
+#endif
+
</ins><span class="cx"> #if PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 1080
</span><span class="cx"> __ZN7WebCore24TextAlternativeWithRangeC1EP18NSTextAlternatives8_NSRange
</span><span class="cx"> __ZN7WebCore27AlternativeTextUIController15addAlternativesERKN3WTF9RetainPtrI18NSTextAlternativesEE
</span><span class="lines">@@ -2427,11 +2434,6 @@
</span><span class="cx"> _wkCreateMemoryStatusPressureCriticalDispatchOnMainQueue
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-#if PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 10100
-__ZN7WebCore32shouldRegisterInsertionUndoGroupEP18NSAttributedString
-__ZN7WebCore44registerInsertionUndoGroupingWithUndoManagerEP13NSUndoManager
-#endif
-
</del><span class="cx"> #if PLATFORM(MAC) || PLATFORM(IOS_SIMULATOR)
</span><span class="cx"> _wkSetCrashReportApplicationSpecificInformation
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderLayerCompositorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp (170513 => 170514)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp        2014-06-27 01:10:48 UTC (rev 170513)
+++ trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp        2014-06-27 02:05:15 UTC (rev 170514)
</span><span class="lines">@@ -3001,7 +3001,7 @@
</span><span class="cx"> #ifndef NDEBUG
</span><span class="cx">         m_layerForHeader-&gt;setName(&quot;header&quot;);
</span><span class="cx"> #endif
</span><del>-        m_scrollLayer-&gt;addChildBelow(m_layerForHeader.get(), m_rootContentLayer.get());
</del><ins>+        m_scrollLayer-&gt;addChildAbove(m_layerForHeader.get(), m_rootContentLayer.get());
</ins><span class="cx">         m_renderView.frameView().addPaintPendingMilestones(DidFirstFlushForHeaderLayer);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -3042,7 +3042,7 @@
</span><span class="cx"> #ifndef NDEBUG
</span><span class="cx">         m_layerForFooter-&gt;setName(&quot;footer&quot;);
</span><span class="cx"> #endif
</span><del>-        m_scrollLayer-&gt;addChildBelow(m_layerForFooter.get(), m_rootContentLayer.get());
</del><ins>+        m_scrollLayer-&gt;addChildAbove(m_layerForFooter.get(), m_rootContentLayer.get());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     float totalContentHeight = m_rootContentLayer-&gt;size().height() + m_renderView.frameView().headerHeight() + m_renderView.frameView().footerHeight();
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (170513 => 170514)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2014-06-27 01:10:48 UTC (rev 170513)
+++ trunk/Source/WebKit2/ChangeLog        2014-06-27 02:05:15 UTC (rev 170514)
</span><span class="lines">@@ -1,5 +1,30 @@
</span><span class="cx"> 2014-06-26  Tim Horton  &lt;timothy_horton@apple.com&gt;
</span><span class="cx"> 
</span><ins>+        [WK2] Pinch-zoom shadows can overlap headers and footers
+        https://bugs.webkit.org/show_bug.cgi?id=134372
+        &lt;rdar://problem/16004095&gt;
+
+        Reviewed by Simon Fraser.
+
+        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
+        (WebKit::shadowLayerPositionForFrame):
+        (WebKit::shadowLayerBoundsForFrame):
+        Compute the initial shadow layer and shadow bounds exactly as RenderLayerCompositor does
+        (in updateRootLayerPosition and friends). Also, clip the shadow layer to the old document rect,
+        otherwise it can extend over top of the header/footers. The content is automatically clipped to
+        this rect by the root content layer, but the shadow is outside of that.
+
+        (WebKit::TiledCoreAnimationDrawingArea::applyTransientZoomToLayers):
+        (WebKit::TiledCoreAnimationDrawingArea::commitTransientZoom):
+        Pass all of the arguments to constrainScrollPositionForOverhang, not just half of them.
+        There's still a bug where we constrain incorrectly with header/footer layers, but that
+        will be addressed elsewhere.
+
+        (WebKit::TiledCoreAnimationDrawingArea::applyTransientZoomToPage):
+        Make use of the new helpers.
+
+2014-06-26  Tim Horton  &lt;timothy_horton@apple.com&gt;
+
</ins><span class="cx">         Don't leak WKBrowsingContextControllers
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=134368
</span><span class="cx">         &lt;rdar://problem/17476582&gt;
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPagemacTiledCoreAnimationDrawingAreamm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm (170513 => 170514)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm        2014-06-27 01:10:48 UTC (rev 170513)
+++ trunk/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm        2014-06-27 02:05:15 UTC (rev 170514)
</span><span class="lines">@@ -524,7 +524,25 @@
</span><span class="cx"> 
</span><span class="cx">     return nullptr;
</span><span class="cx"> }
</span><ins>+    
+static FloatPoint shadowLayerPositionForFrame(FrameView&amp; frameView, FloatPoint origin)
+{
+    FloatPoint position = frameView.renderView()-&gt;documentRect().location() + FloatPoint(0, FrameView::yPositionForRootContentLayer(frameView.scrollPosition(), frameView.topContentInset(), frameView.headerHeight()));
</ins><span class="cx"> 
</span><ins>+    return position + origin.expandedTo(FloatPoint());
+}
+
+static FloatRect shadowLayerBoundsForFrame(FrameView&amp; frameView, float transientScale)
+{
+    FloatRect clipLayerFrame(frameView.renderView()-&gt;documentRect());
+    FloatRect shadowLayerFrame = clipLayerFrame;
+    
+    shadowLayerFrame.scale(transientScale / frameView.frame().page()-&gt;pageScaleFactor());
+    shadowLayerFrame.intersect(clipLayerFrame);
+    
+    return shadowLayerFrame;
+}
+
</ins><span class="cx"> void TiledCoreAnimationDrawingArea::applyTransientZoomToLayers(double scale, FloatPoint origin)
</span><span class="cx"> {
</span><span class="cx">     // FIXME: Scrollbars should stay in-place and change height while zooming.
</span><span class="lines">@@ -540,14 +558,11 @@
</span><span class="cx">     zoomLayer-&gt;setTransform(transform);
</span><span class="cx">     zoomLayer-&gt;setAnchorPoint(FloatPoint3D());
</span><span class="cx">     zoomLayer-&gt;setPosition(FloatPoint3D());
</span><del>-
</del><ins>+    
</ins><span class="cx">     if (PlatformCALayer* shadowLayer = shadowLayerForTransientZoom()) {
</span><del>-        RenderView* renderView = m_webPage.mainFrameView()-&gt;renderView();
-        FloatRect shadowBounds = FloatRect(FloatPoint(), toFloatSize(renderView-&gt;layoutOverflowRect().maxXMaxYCorner()));
-        shadowBounds.scale(scale);
-
-        shadowLayer-&gt;setBounds(shadowBounds);
-        shadowLayer-&gt;setPosition(origin);
</del><ins>+        FrameView&amp; frameView = *m_webPage.mainFrameView();
+        shadowLayer-&gt;setBounds(shadowLayerBoundsForFrame(frameView, scale));
+        shadowLayer-&gt;setPosition(shadowLayerPositionForFrame(frameView, origin));
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     m_transientZoomScale = scale;
</span><span class="lines">@@ -584,20 +599,19 @@
</span><span class="cx"> 
</span><span class="cx"> void TiledCoreAnimationDrawingArea::commitTransientZoom(double scale, FloatPoint origin)
</span><span class="cx"> {
</span><del>-    FrameView* frameView = m_webPage.mainFrameView();
-    FloatRect visibleContentRect = frameView-&gt;visibleContentRectIncludingScrollbars();
</del><ins>+    FrameView&amp; frameView = *m_webPage.mainFrameView();
+    FloatRect visibleContentRect = frameView.visibleContentRectIncludingScrollbars();
</ins><span class="cx"> 
</span><span class="cx">     FloatPoint constrainedOrigin = visibleContentRect.location();
</span><span class="cx">     constrainedOrigin.moveBy(-origin);
</span><span class="cx"> 
</span><del>-    RenderView* renderView = frameView-&gt;renderView();
-    IntRect documentRect = renderView-&gt;unscaledDocumentRect();
-    documentRect.scale(scale);
</del><ins>+    IntSize scaledTotalContentsSize = frameView.totalContentsSize();
+    scaledTotalContentsSize.scale(scale / m_webPage.pageScaleFactor());
</ins><span class="cx"> 
</span><span class="cx">     // Scaling may have exposed the overhang area, so we need to constrain the final
</span><span class="cx">     // layer position exactly like scrolling will once it's committed, to ensure that
</span><span class="cx">     // scrolling doesn't make the view jump.
</span><del>-    constrainedOrigin = ScrollableArea::constrainScrollPositionForOverhang(roundedIntRect(visibleContentRect), documentRect.size(), roundedIntPoint(constrainedOrigin), IntPoint(), 0, 0);
</del><ins>+    constrainedOrigin = ScrollableArea::constrainScrollPositionForOverhang(roundedIntRect(visibleContentRect), scaledTotalContentsSize, roundedIntPoint(constrainedOrigin), frameView.scrollOrigin(), frameView.headerHeight(), frameView.footerHeight());
</ins><span class="cx">     constrainedOrigin.moveBy(-visibleContentRect.location());
</span><span class="cx">     constrainedOrigin = -constrainedOrigin;
</span><span class="cx"> 
</span><span class="lines">@@ -632,14 +646,13 @@
</span><span class="cx">     zoomLayer-&gt;addAnimationForKey(&quot;transientZoomCommit&quot;, renderViewAnimation.get());
</span><span class="cx"> 
</span><span class="cx">     if (shadowCALayer) {
</span><del>-        FloatRect shadowBounds = FloatRect(FloatPoint(), toFloatSize(renderView-&gt;layoutOverflowRect().maxXMaxYCorner()));
-        shadowBounds.scale(scale);
</del><ins>+        FloatRect shadowBounds = shadowLayerBoundsForFrame(frameView, scale);
</ins><span class="cx">         RetainPtr&lt;CGPathRef&gt; shadowPath = adoptCF(CGPathCreateWithRect(shadowBounds, NULL)).get();
</span><span class="cx"> 
</span><span class="cx">         RetainPtr&lt;CABasicAnimation&gt; shadowBoundsAnimation = transientZoomSnapAnimationForKeyPath(&quot;bounds&quot;);
</span><span class="cx">         [shadowBoundsAnimation setToValue:[NSValue valueWithRect:shadowBounds]];
</span><span class="cx">         RetainPtr&lt;CABasicAnimation&gt; shadowPositionAnimation = transientZoomSnapAnimationForKeyPath(&quot;position&quot;);
</span><del>-        [shadowPositionAnimation setToValue:[NSValue valueWithPoint:constrainedOrigin]];
</del><ins>+        [shadowPositionAnimation setToValue:[NSValue valueWithPoint:shadowLayerPositionForFrame(frameView, constrainedOrigin)]];
</ins><span class="cx">         RetainPtr&lt;CABasicAnimation&gt; shadowPathAnimation = transientZoomSnapAnimationForKeyPath(&quot;shadowPath&quot;);
</span><span class="cx">         [shadowPathAnimation setToValue:(id)shadowPath.get()];
</span><span class="cx"> 
</span><span class="lines">@@ -658,16 +671,16 @@
</span><span class="cx">     TransformationMatrix finalTransform;
</span><span class="cx">     finalTransform.scale(scale);
</span><span class="cx">     layerForTransientZoom()-&gt;setTransform(finalTransform);
</span><ins>+    
+    FrameView&amp; frameView = *m_webPage.mainFrameView();
</ins><span class="cx"> 
</span><span class="cx">     if (PlatformCALayer* shadowLayer = shadowLayerForTransientZoom()) {
</span><del>-        RenderView* renderView = m_webPage.mainFrameView()-&gt;renderView();
-        IntRect overflowRect = renderView-&gt;pixelSnappedLayoutOverflowRect();
-        shadowLayer-&gt;setBounds(IntRect(IntPoint(), toIntSize(overflowRect.maxXMaxYCorner())));
-        shadowLayer-&gt;setPosition(FloatPoint());
</del><ins>+        shadowLayer-&gt;setBounds(shadowLayerBoundsForFrame(frameView, 1));
+        shadowLayer-&gt;setPosition(shadowLayerPositionForFrame(frameView, FloatPoint()));
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     FloatPoint unscrolledOrigin(origin);
</span><del>-    FloatRect unobscuredContentRect = m_webPage.mainFrameView()-&gt;unobscuredContentRectIncludingScrollbars();
</del><ins>+    FloatRect unobscuredContentRect = frameView.unobscuredContentRectIncludingScrollbars();
</ins><span class="cx">     unscrolledOrigin.moveBy(-unobscuredContentRect.location());
</span><span class="cx">     m_webPage.scalePage(scale, roundedIntPoint(-unscrolledOrigin));
</span><span class="cx">     m_transientZoomScale = 1;
</span></span></pre>
</div>
</div>

</body>
</html>