Title: [172365] trunk
Revision
172365
Author
[email protected]
Date
2014-08-08 16:24:02 -0700 (Fri, 08 Aug 2014)

Log Message

[WK2] Scrolling does not work inside nested frames
https://bugs.webkit.org/show_bug.cgi?id=135775
<rdar://problem/17959896>

Reviewed by Tim Horton.

Source/WebCore:

r169733 added an "isMainFrame" check in AsyncScrollingCoordinator::frameViewNonFastScrollableRegionChanged.
However we have to rebuild the non-fast-scrollable region when any subframe changes,
even a deeply nested one. So always rebuild it, starting from the root frame.

Fixes scrolling on nested framesets like http://www.opengl.org/sdk/docs/man3/.

Test: platform/mac-wk2/tiled-drawing/scrolling/frames/frameset-nested-frame-scrollability.html

* page/scrolling/AsyncScrollingCoordinator.cpp:
(WebCore::AsyncScrollingCoordinator::frameViewNonFastScrollableRegionChanged):

LayoutTests:

Nested frameset test that dumps the scrolling tree.

* platform/mac-wk2/tiled-drawing/scrolling/frames/frameset-nested-frame-scrollability-expected.txt: Added.
* platform/mac-wk2/tiled-drawing/scrolling/frames/frameset-nested-frame-scrollability.html: Added.
* platform/mac-wk2/tiled-drawing/scrolling/frames/resources/frameset-frame.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (172364 => 172365)


--- trunk/LayoutTests/ChangeLog	2014-08-08 23:15:55 UTC (rev 172364)
+++ trunk/LayoutTests/ChangeLog	2014-08-08 23:24:02 UTC (rev 172365)
@@ -1,3 +1,17 @@
+2014-08-08  Simon Fraser  <[email protected]>
+
+        [WK2] Scrolling does not work inside nested frames
+        https://bugs.webkit.org/show_bug.cgi?id=135775
+        <rdar://problem/17959896>
+
+        Reviewed by Tim Horton.
+        
+        Nested frameset test that dumps the scrolling tree.
+
+        * platform/mac-wk2/tiled-drawing/scrolling/frames/frameset-nested-frame-scrollability-expected.txt: Added.
+        * platform/mac-wk2/tiled-drawing/scrolling/frames/frameset-nested-frame-scrollability.html: Added.
+        * platform/mac-wk2/tiled-drawing/scrolling/frames/resources/frameset-frame.html: Added.
+
 2014-08-07  Roger Fong  <[email protected]>
 
         Adjustments to CueBox CSS Width calculations.

Added: trunk/LayoutTests/platform/mac-wk2/tiled-drawing/scrolling/frames/frameset-nested-frame-scrollability-expected.txt (0 => 172365)


--- trunk/LayoutTests/platform/mac-wk2/tiled-drawing/scrolling/frames/frameset-nested-frame-scrollability-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/platform/mac-wk2/tiled-drawing/scrolling/frames/frameset-nested-frame-scrollability-expected.txt	2014-08-08 23:24:02 UTC (rev 172365)
@@ -0,0 +1,7 @@
+(Frame scrolling node
+  (scrollable area size 800 600)
+  (contents size 800 600)
+  (non-fast-scrollable region
+    at (0,166) size 280x434)
+)
+

Added: trunk/LayoutTests/platform/mac-wk2/tiled-drawing/scrolling/frames/frameset-nested-frame-scrollability.html (0 => 172365)


--- trunk/LayoutTests/platform/mac-wk2/tiled-drawing/scrolling/frames/frameset-nested-frame-scrollability.html	                        (rev 0)
+++ trunk/LayoutTests/platform/mac-wk2/tiled-drawing/scrolling/frames/frameset-nested-frame-scrollability.html	2014-08-08 23:24:02 UTC (rev 172365)
@@ -0,0 +1,32 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+    <script>
+        if (window.testRunner) {
+            testRunner.dumpAsText();
+            testRunner.waitUntilDone();
+        }
+
+        function frameDidChange()
+        {
+            window.setTimeout(function() {
+                if (window.testRunner) {
+                    var scrollingTree = window.internals.scrollingStateTreeAsText();
+                    document.open();
+                    document.write('<pre>');
+                    document.write(scrollingTree);
+                    document.write('</pre>');
+                    document.close();
+                    testRunner.notifyDone();
+                }
+            }, 0);
+        }
+    </script>
+</head>
+<frameset rows="160,*">
+<frame></frame>
+<frame src=""
+</frameset>
+</html>

Added: trunk/LayoutTests/platform/mac-wk2/tiled-drawing/scrolling/frames/resources/frameset-frame.html (0 => 172365)


--- trunk/LayoutTests/platform/mac-wk2/tiled-drawing/scrolling/frames/resources/frameset-frame.html	                        (rev 0)
+++ trunk/LayoutTests/platform/mac-wk2/tiled-drawing/scrolling/frames/resources/frameset-frame.html	2014-08-08 23:24:02 UTC (rev 172365)
@@ -0,0 +1,17 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+    <script>
+        function frameDidChange()
+        {
+            window.parent.frameDidChange();
+        }
+    </script>
+</head>
+
+<frameset cols="280, *">
+<frame src=""
+</frameset>
+</html>

Modified: trunk/Source/WebCore/ChangeLog (172364 => 172365)


--- trunk/Source/WebCore/ChangeLog	2014-08-08 23:15:55 UTC (rev 172364)
+++ trunk/Source/WebCore/ChangeLog	2014-08-08 23:24:02 UTC (rev 172365)
@@ -1,3 +1,22 @@
+2014-08-08  Simon Fraser  <[email protected]>
+
+        [WK2] Scrolling does not work inside nested frames
+        https://bugs.webkit.org/show_bug.cgi?id=135775
+        <rdar://problem/17959896>
+
+        Reviewed by Tim Horton.
+        
+        r169733 added an "isMainFrame" check in AsyncScrollingCoordinator::frameViewNonFastScrollableRegionChanged.
+        However we have to rebuild the non-fast-scrollable region when any subframe changes,
+        even a deeply nested one. So always rebuild it, starting from the root frame.
+        
+        Fixes scrolling on nested framesets like http://www.opengl.org/sdk/docs/man3/.
+
+        Test: platform/mac-wk2/tiled-drawing/scrolling/frames/frameset-nested-frame-scrollability.html
+
+        * page/scrolling/AsyncScrollingCoordinator.cpp:
+        (WebCore::AsyncScrollingCoordinator::frameViewNonFastScrollableRegionChanged):
+
 2014-08-08  Bem Jones-Bey  <[email protected]>
 
         [CSS Shapes] Refactor getExcludedIntervals since only one LineSegment is ever returned

Modified: trunk/Source/WebCore/page/scrolling/AsyncScrollingCoordinator.cpp (172364 => 172365)


--- trunk/Source/WebCore/page/scrolling/AsyncScrollingCoordinator.cpp	2014-08-08 23:15:55 UTC (rev 172364)
+++ trunk/Source/WebCore/page/scrolling/AsyncScrollingCoordinator.cpp	2014-08-08 23:24:02 UTC (rev 172365)
@@ -108,13 +108,12 @@
     node->setScrollableAreaParameters(scrollParameters);
 }
 
-void AsyncScrollingCoordinator::frameViewNonFastScrollableRegionChanged(FrameView* frameView)
+void AsyncScrollingCoordinator::frameViewNonFastScrollableRegionChanged(FrameView*)
 {
     if (!m_scrollingStateTree->rootStateNode())
         return;
 
-    if (frameView->frame().isMainFrame())
-        m_scrollingStateTree->rootStateNode()->setNonFastScrollableRegion(computeNonFastScrollableRegion(&frameView->frame(), IntPoint()));
+    m_scrollingStateTree->rootStateNode()->setNonFastScrollableRegion(computeNonFastScrollableRegion(&m_page->mainFrame(), IntPoint()));
 }
 
 void AsyncScrollingCoordinator::frameViewRootLayerDidChange(FrameView* frameView)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to