<!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>[184065] trunk</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/184065">184065</a></dd>
<dt>Author</dt> <dd>simon.fraser@apple.com</dd>
<dt>Date</dt> <dd>2015-05-10 20:56:15 -0700 (Sun, 10 May 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>background-position sometimes doesn't work properly with background-attachment: fixed
https://bugs.webkit.org/show_bug.cgi?id=103757
rdar://problem/18749925

Reviewed by Darin Adler.

Source/WebCore:

Fix sizing issues with fixed backgrounds when top content inset (blurred toolbar) is in
effect.

The primary issue was that positioningAreaSize was including the top content inset
height, and should not have been, but there were also issues with the &quot;fixedBackgroundPaintsInLocalCoordinates&quot;
code path, which kicks in when the root background is fixed.

Tests: platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-cover-local.html
       platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-cover.html
       platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-local.html
       platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-positioned.html

* rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::calculateBackgroundImageGeometry):

LayoutTests:

Tests various configurations for painting the fixed backgrounds. The existing test was
actually wrong, so fixed to use a gradient (so you can see where the edges of the image are),
and be valid. Testing is complicated by the fact that setting top content inset actually
causes the snapshot to be inset at the top.

* platform/mac-wk2/tiled-drawing/resources/bordered-image.png: Added.
* platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-cover-expected.html: Added.
* platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-cover-local-expected.html: Added.
* platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-cover-local.html: Copied from LayoutTests/platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment.html.
* platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-cover.html: Added.
* platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-expected.html:
* platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-local-expected.html: Added.
* platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-local.html: Added.
* platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-positioned-expected.html: Added.
* platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-positioned.html: Added.
* platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment.html:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsplatformmacwk2tileddrawingtopcontentinsetfixedattachmentexpectedhtml">trunk/LayoutTests/platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-expected.html</a></li>
<li><a href="#trunkLayoutTestsplatformmacwk2tileddrawingtopcontentinsetfixedattachmenthtml">trunk/LayoutTests/platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment.html</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderBoxModelObjectcpp">trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsplatformmacwk2tileddrawingresourcesborderedimagepng">trunk/LayoutTests/platform/mac-wk2/tiled-drawing/resources/bordered-image.png</a></li>
<li><a href="#trunkLayoutTestsplatformmacwk2tileddrawingtopcontentinsetfixedattachmentcoverexpectedhtml">trunk/LayoutTests/platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-cover-expected.html</a></li>
<li><a href="#trunkLayoutTestsplatformmacwk2tileddrawingtopcontentinsetfixedattachmentcoverlocalexpectedhtml">trunk/LayoutTests/platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-cover-local-expected.html</a></li>
<li><a href="#trunkLayoutTestsplatformmacwk2tileddrawingtopcontentinsetfixedattachmentcoverlocalhtml">trunk/LayoutTests/platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-cover-local.html</a></li>
<li><a href="#trunkLayoutTestsplatformmacwk2tileddrawingtopcontentinsetfixedattachmentcoverhtml">trunk/LayoutTests/platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-cover.html</a></li>
<li><a href="#trunkLayoutTestsplatformmacwk2tileddrawingtopcontentinsetfixedattachmentlocalexpectedhtml">trunk/LayoutTests/platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-local-expected.html</a></li>
<li><a href="#trunkLayoutTestsplatformmacwk2tileddrawingtopcontentinsetfixedattachmentlocalhtml">trunk/LayoutTests/platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-local.html</a></li>
<li><a href="#trunkLayoutTestsplatformmacwk2tileddrawingtopcontentinsetfixedattachmentpositionedexpectedhtml">trunk/LayoutTests/platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-positioned-expected.html</a></li>
<li><a href="#trunkLayoutTestsplatformmacwk2tileddrawingtopcontentinsetfixedattachmentpositionedhtml">trunk/LayoutTests/platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-positioned.html</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (184064 => 184065)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2015-05-11 03:09:11 UTC (rev 184064)
+++ trunk/LayoutTests/ChangeLog        2015-05-11 03:56:15 UTC (rev 184065)
</span><span class="lines">@@ -1,3 +1,28 @@
</span><ins>+2015-05-10  Simon Fraser  &lt;simon.fraser@apple.com&gt;
+
+        background-position sometimes doesn't work properly with background-attachment: fixed
+        https://bugs.webkit.org/show_bug.cgi?id=103757
+        rdar://problem/18749925
+
+        Reviewed by Darin Adler.
+        
+        Tests various configurations for painting the fixed backgrounds. The existing test was
+        actually wrong, so fixed to use a gradient (so you can see where the edges of the image are),
+        and be valid. Testing is complicated by the fact that setting top content inset actually
+        causes the snapshot to be inset at the top.
+
+        * platform/mac-wk2/tiled-drawing/resources/bordered-image.png: Added.
+        * platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-cover-expected.html: Added.
+        * platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-cover-local-expected.html: Added.
+        * platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-cover-local.html: Copied from LayoutTests/platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment.html.
+        * platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-cover.html: Added.
+        * platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-expected.html:
+        * platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-local-expected.html: Added.
+        * platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-local.html: Added.
+        * platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-positioned-expected.html: Added.
+        * platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-positioned.html: Added.
+        * platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment.html:
+
</ins><span class="cx"> 2015-05-10  Martin Robinson  &lt;mrobinson@igalia.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [GTK] fast/events/page-visibility-transition-test.html is timing out
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacwk2tileddrawingresourcesborderedimagepng"></a>
<div class="binary"><h4>Added: trunk/LayoutTests/platform/mac-wk2/tiled-drawing/resources/bordered-image.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<span class="cx">Property changes on: trunk/LayoutTests/platform/mac-wk2/tiled-drawing/resources/bordered-image.png
</span><span class="cx">___________________________________________________________________
</span><a id="svnmimetype"></a>
<div class="addfile"><h4>Added: svn:mime-type</h4></div>
<a id="trunkLayoutTestsplatformmacwk2tileddrawingtopcontentinsetfixedattachmentcoverexpectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-cover-expected.html (0 => 184065)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-cover-expected.html                                (rev 0)
+++ trunk/LayoutTests/platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-cover-expected.html        2015-05-11 03:56:15 UTC (rev 184065)
</span><span class="lines">@@ -0,0 +1,27 @@
</span><ins>+&lt;html&gt;
+&lt;head&gt;
+&lt;style&gt;
+body {
+    margin: 0;
+}
+.container {
+    width: 100%;
+    height: 100%;
+    background-image: url('resources/bordered-image.png');
+    background-attachment: fixed;
+    background-size: contain;
+    background-repeat: no-repeat;
+}
+&lt;/style&gt;
+&lt;script&gt;
+function runTest() {
+    if (window.internals)
+        window.internals.setTopContentInset(100);
+}
+window.addEventListener('load', runTest, false);
+&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+    &lt;div class=&quot;container&quot;&gt;&lt;/div&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformmacwk2tileddrawingtopcontentinsetfixedattachmentcoverlocalexpectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-cover-local-expected.html (0 => 184065)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-cover-local-expected.html                                (rev 0)
+++ trunk/LayoutTests/platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-cover-local-expected.html        2015-05-11 03:56:15 UTC (rev 184065)
</span><span class="lines">@@ -0,0 +1,28 @@
</span><ins>+&lt;html&gt;
+&lt;head&gt;
+&lt;style&gt;
+body {
+    margin: 0;
+}
+.container {
+    width: 100%;
+    height: 100%;
+    background-image: url('resources/bordered-image.png');
+    background-attachment: fixed;
+    background-size: contain;
+    background-repeat: no-repeat;
+}
+
+&lt;/style&gt;
+&lt;script&gt;
+function runTest() {
+    if (window.internals)
+        window.internals.setTopContentInset(100);
+}
+window.addEventListener('load', runTest, false);
+&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+    &lt;div class=&quot;container&quot;&gt;&lt;/div&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformmacwk2tileddrawingtopcontentinsetfixedattachmentcoverlocalhtmlfromrev184064trunkLayoutTestsplatformmacwk2tileddrawingtopcontentinsetfixedattachmenthtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-cover-local.html (from rev 184064, trunk/LayoutTests/platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment.html) (0 => 184065)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-cover-local.html                                (rev 0)
+++ trunk/LayoutTests/platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-cover-local.html        2015-05-11 03:56:15 UTC (rev 184065)
</span><span class="lines">@@ -0,0 +1,31 @@
</span><ins>+&lt;html&gt;
+&lt;head&gt;
+&lt;style&gt;
+
+html {
+    background-color: white;
+}
+body {
+    margin: 0;
+    height: 2000px;
+    overflow: hidden;
+    background-image: url('resources/bordered-image.png');
+    background-attachment: fixed;
+    background-size: contain;
+    background-repeat: no-repeat;
+}
+
+&lt;/style&gt;
+
+&lt;script&gt;
+function runTest() {
+    if (window.internals)
+        window.internals.setTopContentInset(100);
+    window.scrollTo(0, 100);
+}
+window.addEventListener('load', runTest, false);
+&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformmacwk2tileddrawingtopcontentinsetfixedattachmentcoverhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-cover.html (0 => 184065)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-cover.html                                (rev 0)
+++ trunk/LayoutTests/platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-cover.html        2015-05-11 03:56:15 UTC (rev 184065)
</span><span class="lines">@@ -0,0 +1,26 @@
</span><ins>+&lt;html&gt;
+&lt;head&gt;
+&lt;style&gt;
+body {
+    margin: 0;
+    height: 2000px;
+    overflow: hidden;
+    background-image: url('resources/bordered-image.png');
+    background-attachment: fixed;
+    background-size: contain;
+    background-repeat: no-repeat;
+}
+
+&lt;/style&gt;
+
+&lt;script&gt;
+function runTest() {
+    if (window.internals)
+        window.internals.setTopContentInset(100);
+}
+window.addEventListener('load', runTest, false);
+&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformmacwk2tileddrawingtopcontentinsetfixedattachmentexpectedhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-expected.html (184064 => 184065)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-expected.html        2015-05-11 03:09:11 UTC (rev 184064)
+++ trunk/LayoutTests/platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-expected.html        2015-05-11 03:56:15 UTC (rev 184065)
</span><span class="lines">@@ -9,18 +9,25 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #fixed-background-box {
</span><ins>+    position: absolute;
+    top: -100px;
</ins><span class="cx">     width:400px;
</span><span class="cx">     height:600px;
</span><del>-    background-image:url(resources/green.png);
</del><ins>+    background-image: linear-gradient(blue, blue 10px, green 10px, green 490px, black 490px, black);
</ins><span class="cx">     background-attachment:fixed;
</span><ins>+    background-repeat:no-repeat;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> &lt;/style&gt;
</span><ins>+&lt;script&gt;
+function runTest() {
+    if (window.internals)
+        window.internals.setTopContentInset(100);
+}
+window.addEventListener('load', runTest, false);
+&lt;/script&gt;
</ins><span class="cx"> &lt;/head&gt;
</span><del>-
</del><span class="cx"> &lt;body&gt;
</span><del>-
-&lt;div id=&quot;fixed-background-box&quot;&gt;&lt;/div&gt;
-
</del><ins>+    &lt;div id=&quot;fixed-background-box&quot;&gt;&lt;/div&gt;
</ins><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacwk2tileddrawingtopcontentinsetfixedattachmentlocalexpectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-local-expected.html (0 => 184065)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-local-expected.html                                (rev 0)
+++ trunk/LayoutTests/platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-local-expected.html        2015-05-11 03:56:15 UTC (rev 184065)
</span><span class="lines">@@ -0,0 +1,30 @@
</span><ins>+&lt;html&gt;
+&lt;head&gt;
+&lt;style&gt;
+body {
+    margin: 0;
+}
+.container {
+    width: 100%;
+    height: 100%;
+    background-image:
+          linear-gradient(blue, blue 10px, green 10px, green 490px, black 490px, black)
+        , linear-gradient(blue, blue 10px, green 10px, green 490px, black 490px, black)
+        , linear-gradient(blue, blue 10px, green 10px, green 490px, black 490px, black);
+    background-size: 200px 500px;
+    background-position: left bottom, 200px center, 400px top;
+    background-repeat: no-repeat;
+}
+&lt;/style&gt;
+&lt;script&gt;
+function runTest() {
+    if (window.internals)
+        window.internals.setTopContentInset(100);
+}
+window.addEventListener('load', runTest, false);
+&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+    &lt;div class=&quot;container&quot;&gt;&lt;/div&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformmacwk2tileddrawingtopcontentinsetfixedattachmentlocalhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-local.html (0 => 184065)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-local.html                                (rev 0)
+++ trunk/LayoutTests/platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-local.html        2015-05-11 03:56:15 UTC (rev 184065)
</span><span class="lines">@@ -0,0 +1,34 @@
</span><ins>+&lt;html&gt;
+&lt;head&gt;
+&lt;style&gt;
+html {
+    background: white;
+}
+body {
+    margin: 0;
+    height: 2000px;
+    overflow: hidden;
+    background-image:
+          linear-gradient(blue, blue 10px, green 10px, green 490px, black 490px, black)
+        , linear-gradient(blue, blue 10px, green 10px, green 490px, black 490px, black)
+        , linear-gradient(blue, blue 10px, green 10px, green 490px, black 490px, black);
+    background-attachment: fixed;
+    background-size: 200px 500px;
+    background-position: left bottom, 200px center, 400px top;
+    background-repeat: no-repeat;
+}
+
+&lt;/style&gt;
+
+&lt;script&gt;
+function runTest() {
+    if (window.internals)
+        window.internals.setTopContentInset(100);
+    window.scrollTo(0, 100);
+}
+window.addEventListener('load', runTest, false);
+&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformmacwk2tileddrawingtopcontentinsetfixedattachmentpositionedexpectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-positioned-expected.html (0 => 184065)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-positioned-expected.html                                (rev 0)
+++ trunk/LayoutTests/platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-positioned-expected.html        2015-05-11 03:56:15 UTC (rev 184065)
</span><span class="lines">@@ -0,0 +1,30 @@
</span><ins>+&lt;html&gt;
+&lt;head&gt;
+&lt;style&gt;
+body {
+    margin: 0;
+}
+.container {
+    width: 100%;
+    height: 100%;
+    background-image:
+          linear-gradient(blue, blue 10px, green 10px, green 490px, black 490px, black)
+        , linear-gradient(blue, blue 10px, green 10px, green 490px, black 490px, black)
+        , linear-gradient(blue, blue 10px, green 10px, green 490px, black 490px, black);
+    background-size: 200px 500px;
+    background-position: left bottom, 200px center, 400px top;
+    background-repeat: no-repeat;
+}
+&lt;/style&gt;
+&lt;script&gt;
+function runTest() {
+    if (window.internals)
+        window.internals.setTopContentInset(100);
+}
+window.addEventListener('load', runTest, false);
+&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+    &lt;div class=&quot;container&quot;&gt;&lt;/div&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformmacwk2tileddrawingtopcontentinsetfixedattachmentpositionedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-positioned.html (0 => 184065)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-positioned.html                                (rev 0)
+++ trunk/LayoutTests/platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-positioned.html        2015-05-11 03:56:15 UTC (rev 184065)
</span><span class="lines">@@ -0,0 +1,28 @@
</span><ins>+&lt;html&gt;
+&lt;head&gt;
+&lt;style&gt;
+html {
+    height: 2000px;
+    overflow: hidden;
+    background-image:
+          linear-gradient(blue, blue 10px, green 10px, green 490px, black 490px, black)
+        , linear-gradient(blue, blue 10px, green 10px, green 490px, black 490px, black)
+        , linear-gradient(blue, blue 10px, green 10px, green 490px, black 490px, black);
+    background-attachment: fixed;
+    background-size: 200px 500px;
+    background-position: left bottom, 200px center, 400px top;
+    background-repeat: no-repeat;
+}
+
+&lt;/style&gt;
+&lt;script&gt;
+function runTest() {
+    if (window.internals)
+        window.internals.setTopContentInset(100);
+}
+window.addEventListener('load', runTest, false);
+&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformmacwk2tileddrawingtopcontentinsetfixedattachmenthtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment.html (184064 => 184065)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment.html        2015-05-11 03:09:11 UTC (rev 184064)
+++ trunk/LayoutTests/platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment.html        2015-05-11 03:56:15 UTC (rev 184065)
</span><span class="lines">@@ -9,28 +9,24 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #fixed-background-box {
</span><del>-    width:400px;
-    height:600px;
-    background-image:url(resources/green.png);
-    background-attachment:fixed;
</del><ins>+    width: 400px;
+    height: 600px;
+    background-image: linear-gradient(blue, blue 10px, green 10px, green 490px, black 490px, black);
+    background-attachment: fixed;
+    background-repeat:no-repeat;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> &lt;/style&gt;
</span><del>-
</del><span class="cx"> &lt;script&gt;
</span><span class="cx"> function runTest() {
</span><span class="cx">     if (window.internals)
</span><span class="cx">         window.internals.setTopContentInset(100);
</span><span class="cx">     window.scrollTo(0, 100);
</span><span class="cx"> }
</span><del>-
</del><span class="cx"> window.addEventListener('load', runTest, false);
</span><span class="cx"> &lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><del>-
</del><span class="cx"> &lt;body&gt;
</span><del>-
-&lt;div id=&quot;fixed-background-box&quot;&gt;&lt;/div&gt;
-
</del><ins>+    &lt;div id=&quot;fixed-background-box&quot;&gt;&lt;/div&gt;
</ins><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (184064 => 184065)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-05-11 03:09:11 UTC (rev 184064)
+++ trunk/Source/WebCore/ChangeLog        2015-05-11 03:56:15 UTC (rev 184065)
</span><span class="lines">@@ -1,3 +1,26 @@
</span><ins>+2015-05-10  Simon Fraser  &lt;simon.fraser@apple.com&gt;
+
+        background-position sometimes doesn't work properly with background-attachment: fixed
+        https://bugs.webkit.org/show_bug.cgi?id=103757
+        rdar://problem/18749925
+
+        Reviewed by Darin Adler.
+        
+        Fix sizing issues with fixed backgrounds when top content inset (blurred toolbar) is in
+        effect.
+        
+        The primary issue was that positioningAreaSize was including the top content inset
+        height, and should not have been, but there were also issues with the &quot;fixedBackgroundPaintsInLocalCoordinates&quot;
+        code path, which kicks in when the root background is fixed.
+
+        Tests: platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-cover-local.html
+               platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-cover.html
+               platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-local.html
+               platform/mac-wk2/tiled-drawing/top-content-inset-fixed-attachment-positioned.html
+
+        * rendering/RenderBoxModelObject.cpp:
+        (WebCore::RenderBoxModelObject::calculateBackgroundImageGeometry):
+
</ins><span class="cx"> 2015-05-10  Sungmann Cho  &lt;sungmann.cho@navercorp.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Get rid of the public item accessors in BackForwardClient
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBoxModelObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp (184064 => 184065)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp        2015-05-11 03:09:11 UTC (rev 184064)
+++ trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp        2015-05-11 03:56:15 UTC (rev 184065)
</span><span class="lines">@@ -1111,16 +1111,20 @@
</span><span class="cx">             positioningAreaSize = paintRect.size() - LayoutSize(left + right, top + bottom);
</span><span class="cx">     } else {
</span><span class="cx">         LayoutRect viewportRect;
</span><ins>+        float topContentInset = 0;
</ins><span class="cx">         if (frame().settings().fixedBackgroundsPaintRelativeToDocument())
</span><span class="cx">             viewportRect = view().unscaledDocumentRect();
</span><span class="cx">         else {
</span><del>-            viewportRect.setSize(view().frameView().unscaledVisibleContentSizeIncludingObscuredArea());
</del><ins>+            FrameView&amp; frameView = view().frameView();
+            viewportRect.setSize(frameView.unscaledVisibleContentSizeIncludingObscuredArea());
+            topContentInset = frameView.topContentInset(ScrollView::TopContentInsetType::WebCoreOrPlatformContentInset);
+
</ins><span class="cx">             if (fixedBackgroundPaintsInLocalCoordinates())
</span><del>-                viewportRect.setLocation(LayoutPoint());
-            else {
-                viewportRect.setLocation(toLayoutPoint(view().frameView().documentScrollOffsetRelativeToViewOrigin()));
-                top += view().frameView().topContentInset(ScrollView::TopContentInsetType::WebCoreOrPlatformContentInset);
-            }
</del><ins>+                viewportRect.setLocation(LayoutPoint(0, -topContentInset));
+            else
+                viewportRect.setLocation(toLayoutPoint(frameView.documentScrollOffsetRelativeToViewOrigin()));
+
+            top += topContentInset;
</ins><span class="cx">         }
</span><span class="cx">         
</span><span class="cx">         if (paintContainer)
</span><span class="lines">@@ -1128,6 +1132,7 @@
</span><span class="cx"> 
</span><span class="cx">         destinationRect = viewportRect;
</span><span class="cx">         positioningAreaSize = destinationRect.size();
</span><ins>+        positioningAreaSize.setHeight(positioningAreaSize.height() - topContentInset);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     auto clientForBackgroundImage = backgroundObject ? backgroundObject : this;
</span></span></pre>
</div>
</div>

</body>
</html>