<!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>[209932] 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/209932">209932</a></dd>
<dt>Author</dt> <dd>akling@apple.com</dd>
<dt>Date</dt> <dd>2016-12-16 12:44:01 -0800 (Fri, 16 Dec 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>Subframes going into page cache don't need to resetScrollbars().
&lt;https://webkit.org/b/163750&gt;
&lt;rdar://problem/29273020&gt;

Reviewed by Antti Koivisto.

Source/WebCore:

The main frame is the only frame that switches its FrameView when using the page cache,
subframes just suspend their DOM and wait around to be either killed or restored.

Thus there is no reason for subframes to reset their FrameView's scrollbars when going
into page cache, since nothing affects them while cached, and their layout should end up
identical when restoring.

This was causing some flakiness with subframe scrollbars jumping between different sizes
in when restoring from page cache in macOS/WK1. This change makes the behavior consistent
in both WK1 and WK2, and removes the flakiness.

* dom/Document.cpp:
(WebCore::Document::setPageCacheState):

LayoutTests:

Unskip compositing/iframes/page-cache-layer-tree.html on mac-wk1 and fix up the
result now that WK2 behaves correctly as well.

Both DRT and WTR run with scrollbars in &quot;always on&quot; mode, so the correct dimensions
for the 300x150 iframe layers here are 285x135.

* compositing/iframes/page-cache-layer-tree-expected.txt:
* platform/mac-wk1/TestExpectations:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestscompositingiframespagecachelayertreeexpectedtxt">trunk/LayoutTests/compositing/iframes/page-cache-layer-tree-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacwk1TestExpectations">trunk/LayoutTests/platform/mac-wk1/TestExpectations</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoredomDocumentcpp">trunk/Source/WebCore/dom/Document.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (209931 => 209932)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2016-12-16 20:24:37 UTC (rev 209931)
+++ trunk/LayoutTests/ChangeLog        2016-12-16 20:44:01 UTC (rev 209932)
</span><span class="lines">@@ -1,3 +1,20 @@
</span><ins>+2016-12-16  Andreas Kling  &lt;akling@apple.com&gt;
+
+        Subframes going into page cache don't need to resetScrollbars().
+        &lt;https://webkit.org/b/163750&gt;
+        &lt;rdar://problem/29273020&gt;
+
+        Reviewed by Antti Koivisto.
+
+        Unskip compositing/iframes/page-cache-layer-tree.html on mac-wk1 and fix up the
+        result now that WK2 behaves correctly as well.
+
+        Both DRT and WTR run with scrollbars in &quot;always on&quot; mode, so the correct dimensions
+        for the 300x150 iframe layers here are 285x135.
+
+        * compositing/iframes/page-cache-layer-tree-expected.txt:
+        * platform/mac-wk1/TestExpectations:
+
</ins><span class="cx"> 2016-12-16  Wenson Hsieh  &lt;wenson_hsieh@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Visual viewports: carets and selection UI are incorrectly positioned when editing fixed elements
</span></span></pre></div>
<a id="trunkLayoutTestscompositingiframespagecachelayertreeexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/compositing/iframes/page-cache-layer-tree-expected.txt (209931 => 209932)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/compositing/iframes/page-cache-layer-tree-expected.txt        2016-12-16 20:24:37 UTC (rev 209931)
+++ trunk/LayoutTests/compositing/iframes/page-cache-layer-tree-expected.txt        2016-12-16 20:44:01 UTC (rev 209932)
</span><span class="lines">@@ -23,7 +23,7 @@
</span><span class="cx">               (children 1
</span><span class="cx">                 (GraphicsLayer
</span><span class="cx">                   (anchor 0.00 0.00)
</span><del>-                  (bounds 285.00 150.00)
</del><ins>+                  (bounds 285.00 135.00)
</ins><span class="cx">                   (children 1
</span><span class="cx">                     (GraphicsLayer
</span><span class="cx">                       (children 1
</span><span class="lines">@@ -73,7 +73,7 @@
</span><span class="cx">                   (children 1
</span><span class="cx">                     (GraphicsLayer
</span><span class="cx">                       (anchor 0.00 0.00)
</span><del>-                      (bounds 285.00 150.00)
</del><ins>+                      (bounds 285.00 135.00)
</ins><span class="cx">                       (children 1
</span><span class="cx">                         (GraphicsLayer
</span><span class="cx">                           (children 1
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacwk1TestExpectations"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac-wk1/TestExpectations (209931 => 209932)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac-wk1/TestExpectations        2016-12-16 20:24:37 UTC (rev 209931)
+++ trunk/LayoutTests/platform/mac-wk1/TestExpectations        2016-12-16 20:44:01 UTC (rev 209932)
</span><span class="lines">@@ -285,8 +285,6 @@
</span><span class="cx"> webkit.org/b/163361 imported/w3c/web-platform-tests/html/webappapis/animation-frames/callback-invoked.html [ Pass Failure ]
</span><span class="cx"> webkit.org/b/163361 imported/w3c/web-platform-tests/html/webappapis/animation-frames/callback-multicalls.html [ Pass Failure ]
</span><span class="cx"> 
</span><del>-webkit.org/b/163750 compositing/iframes/page-cache-layer-tree.html [ Pass Failure ]
-
</del><span class="cx"> webkit.org/b/164491 [ Yosemite ElCapitan ] fast/visual-viewport/rtl-zoomed-rects.html [ Failure ]
</span><span class="cx"> 
</span><span class="cx"> webkit.org/b/164933 http/tests/misc/link-rel-icon-beforeload.html [ Failure ]
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (209931 => 209932)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-12-16 20:24:37 UTC (rev 209931)
+++ trunk/Source/WebCore/ChangeLog        2016-12-16 20:44:01 UTC (rev 209932)
</span><span class="lines">@@ -1,3 +1,25 @@
</span><ins>+2016-12-16  Andreas Kling  &lt;akling@apple.com&gt;
+
+        Subframes going into page cache don't need to resetScrollbars().
+        &lt;https://webkit.org/b/163750&gt;
+        &lt;rdar://problem/29273020&gt;
+
+        Reviewed by Antti Koivisto.
+
+        The main frame is the only frame that switches its FrameView when using the page cache,
+        subframes just suspend their DOM and wait around to be either killed or restored.
+
+        Thus there is no reason for subframes to reset their FrameView's scrollbars when going
+        into page cache, since nothing affects them while cached, and their layout should end up
+        identical when restoring.
+
+        This was causing some flakiness with subframe scrollbars jumping between different sizes
+        in when restoring from page cache in macOS/WK1. This change makes the behavior consistent
+        in both WK1 and WK2, and removes the flakiness.
+
+        * dom/Document.cpp:
+        (WebCore::Document::setPageCacheState):
+
</ins><span class="cx"> 2016-12-16  Wenson Hsieh  &lt;wenson_hsieh@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Visual viewports: carets and selection UI are incorrectly positioned when editing fixed elements
</span></span></pre></div>
<a id="trunkSourceWebCoredomDocumentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Document.cpp (209931 => 209932)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Document.cpp        2016-12-16 20:24:37 UTC (rev 209931)
+++ trunk/Source/WebCore/dom/Document.cpp        2016-12-16 20:44:01 UTC (rev 209932)
</span><span class="lines">@@ -4540,8 +4540,7 @@
</span><span class="cx">                 v-&gt;resetScrollbarsAndClearContentsSize();
</span><span class="cx">                 if (ScrollingCoordinator* scrollingCoordinator = page-&gt;scrollingCoordinator())
</span><span class="cx">                     scrollingCoordinator-&gt;clearStateTree();
</span><del>-            } else
-                v-&gt;resetScrollbars();
</del><ins>+            }
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(POINTER_LOCK)
</span></span></pre>
</div>
</div>

</body>
</html>