Modified: trunk/LayoutTests/ChangeLog (174739 => 174740)
--- trunk/LayoutTests/ChangeLog 2014-10-15 19:15:16 UTC (rev 174739)
+++ trunk/LayoutTests/ChangeLog 2014-10-15 19:18:23 UTC (rev 174740)
@@ -1,3 +1,17 @@
+2014-10-15 Simon Fraser <[email protected]>
+
+ Sometimes can't scroll overflow:scroll areas in subframes
+ https://bugs.webkit.org/show_bug.cgi?id=137746
+ rdar://problem/18603560
+
+ Reviewed by Tim Horton.
+
+ Test that changes an overflow size in a subframe and then dumps the non-fast scrollable region.
+
+ * platform/mac-wk2/tiled-drawing/scrolling/frames/resources/layouting-frame.html: Added.
+ * platform/mac-wk2/tiled-drawing/scrolling/frames/scroll-region-after-frame-layout-expected.txt: Added.
+ * platform/mac-wk2/tiled-drawing/scrolling/frames/scroll-region-after-frame-layout.html: Added.
+
2014-10-15 Zalan Bujtas <[email protected]>
[Mac] Unreviewed gardening.
Added: trunk/LayoutTests/platform/mac-wk2/tiled-drawing/scrolling/frames/resources/layouting-frame.html (0 => 174740)
--- trunk/LayoutTests/platform/mac-wk2/tiled-drawing/scrolling/frames/resources/layouting-frame.html (rev 0)
+++ trunk/LayoutTests/platform/mac-wk2/tiled-drawing/scrolling/frames/resources/layouting-frame.html 2014-10-15 19:18:23 UTC (rev 174740)
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+
+<html>
+<head>
+ <style>
+ .container {
+ width: 300px;
+ height: 0;
+ overflow: scroll;
+ }
+
+ .tall {
+ height: 300px;
+ }
+ </style>
+ <script>
+ function changeHeight()
+ {
+ window.setTimeout(function() {
+ document.getElementById('container').classList.add('tall');
+ document.body.offsetHeight;
+ window.parent.frameDidChange();
+ }, 0);
+ }
+ window.addEventListener('load', changeHeight, false);
+ </script>
+</head>
+<body>
+
+ <div id="container" class="container">
+ <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
+ <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
+ <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
+ <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
+ <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
+ <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
+ <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
+ <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
+ <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
+ <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
+ </div>
+</body>
+</html>
Added: trunk/LayoutTests/platform/mac-wk2/tiled-drawing/scrolling/frames/scroll-region-after-frame-layout-expected.txt (0 => 174740)
--- trunk/LayoutTests/platform/mac-wk2/tiled-drawing/scrolling/frames/scroll-region-after-frame-layout-expected.txt (rev 0)
+++ trunk/LayoutTests/platform/mac-wk2/tiled-drawing/scrolling/frames/scroll-region-after-frame-layout-expected.txt 2014-10-15 19:18:23 UTC (rev 174740)
@@ -0,0 +1,8 @@
+
+(Frame scrolling node
+ (scrollable area size 785 600)
+ (contents size 785 757)
+ (non-fast-scrollable region
+ at (68,68) size 300x300)
+)
+
Added: trunk/LayoutTests/platform/mac-wk2/tiled-drawing/scrolling/frames/scroll-region-after-frame-layout.html (0 => 174740)
--- trunk/LayoutTests/platform/mac-wk2/tiled-drawing/scrolling/frames/scroll-region-after-frame-layout.html (rev 0)
+++ trunk/LayoutTests/platform/mac-wk2/tiled-drawing/scrolling/frames/scroll-region-after-frame-layout.html 2014-10-15 19:18:23 UTC (rev 174740)
@@ -0,0 +1,40 @@
+<!DOCTYPE html>
+
+<html>
+<head>
+ <style>
+ iframe {
+ margin: 50px;
+ border: 2px solid black;
+ width: 600px;
+ height: 600px;
+ }
+ </style>
+ <script>
+ if (window.testRunner) {
+ testRunner.waitUntilDone();
+ testRunner.dumpAsText();
+ window.internals.settings.setScrollingTreeIncludesFrames(true);
+ }
+
+ function frameDidChange()
+ {
+ window.setTimeout(function() {
+ if (window.testRunner) {
+ var scrollingTree = internals.scrollingStateTreeAsText();
+ var layerTree = internals.layerTreeAsText(document);
+
+ var resultElement = document.getElementById('result');
+ resultElement.textContent = scrollingTree + layerTree;
+
+ testRunner.notifyDone();
+ }
+ }, 0);
+ }
+ </script>
+</head>
+<body>
+<iframe src=""
+<pre id="result">Results</pre>
+</body>
+</html>
Modified: trunk/Source/WebCore/ChangeLog (174739 => 174740)
--- trunk/Source/WebCore/ChangeLog 2014-10-15 19:15:16 UTC (rev 174739)
+++ trunk/Source/WebCore/ChangeLog 2014-10-15 19:18:23 UTC (rev 174740)
@@ -1,3 +1,20 @@
+2014-10-15 Simon Fraser <[email protected]>
+
+ Sometimes can't scroll overflow:scroll areas in subframes
+ https://bugs.webkit.org/show_bug.cgi?id=137746
+ rdar://problem/18603560
+
+ Reviewed by Tim Horton.
+
+ r169733 introduced a regression which caused us to no longer update the non-fast
+ scrollable region on every layout in subframes, by adding a bogus isMainFrame() check.
+ Revert to the previous code.
+
+ Test: platform/mac-wk2/tiled-drawing/scrolling/frames/scroll-region-after-frame-layout.html
+
+ * page/scrolling/AsyncScrollingCoordinator.cpp:
+ (WebCore::AsyncScrollingCoordinator::frameViewLayoutUpdated):
+
2014-10-15 Chris Dumez <[email protected]>
Use is<>() / downcast<>() for TransformOperation subclasses
Modified: trunk/Source/WebCore/page/scrolling/AsyncScrollingCoordinator.cpp (174739 => 174740)
--- trunk/Source/WebCore/page/scrolling/AsyncScrollingCoordinator.cpp 2014-10-15 19:15:16 UTC (rev 174739)
+++ trunk/Source/WebCore/page/scrolling/AsyncScrollingCoordinator.cpp 2014-10-15 19:18:23 UTC (rev 174740)
@@ -87,8 +87,7 @@
// frame view whose layout was updated is not the main frame.
// In the future, we may want to have the ability to set non-fast scrolling regions for more than
// just the root node. But right now, this concept only applies to the root.
- if (frameView->frame().isMainFrame())
- m_scrollingStateTree->rootStateNode()->setNonFastScrollableRegion(computeNonFastScrollableRegion(&frameView->frame(), IntPoint()));
+ m_scrollingStateTree->rootStateNode()->setNonFastScrollableRegion(computeNonFastScrollableRegion(&m_page->mainFrame(), IntPoint()));
if (!coordinatesScrollingForFrameView(frameView))
return;