RESOLVED FIXED 103999
Rework bug 97927 to not depend on RenderLayer::allowsScrolling
https://bugs.webkit.org/show_bug.cgi?id=103999
Summary Rework bug 97927 to not depend on RenderLayer::allowsScrolling
Antonio Gomes
Reported 2012-12-04 07:27:43 PST
Instead of adding ::allowScrolling calls to check scrollability, check if scrolling in allowed in the direction where overflow happens. That allow methods like RenderLayer::updateScrollbarsAfterLayout and RenderLayer::updateScrollbarsAfterStyleChange to be scrollbars-agnostic. Reason behind it: scrollbars can be disabled completely (not only "hidden") in WebCore, and its drawing delegated to the client application.
Attachments
patch (4.83 KB, patch)
2012-12-04 08:11 PST, Antonio Gomes
simon.fraser: review-
patch2 - take simon's feedback into account (11.86 KB, patch)
2012-12-05 08:27 PST, Antonio Gomes
no flags
(landed r136947, r=jamesr) patch 2.1 - take Sami's feedback into account (12.04 KB, patch)
2012-12-06 07:16 PST, Antonio Gomes
no flags
patch for EWS (12.10 KB, patch)
2012-12-07 05:03 PST, Antonio Gomes
no flags
Antonio Gomes
Comment 1 2012-12-04 08:11:46 PST
Simon Fraser (smfr)
Comment 2 2012-12-04 13:04:49 PST
Comment on attachment 177484 [details] patch View in context: https://bugs.webkit.org/attachment.cgi?id=177484&action=review It would be nice to only have the "scrollsOverflowX() && scrollWidth() != clientWidth()" logic in one place; here it's in both RenderLayer and RenderBox, and the various width implementations are subtly different. > Source/WebCore/rendering/RenderBox.cpp:621 > + bool hasOverflowAndAllowsScrollingInThatDirection = (scrollsOverflowX() && scrollWidth() != clientWidth()) Awkward variable name. How about hasScrollableOverflow?
Antonio Gomes
Comment 3 2012-12-05 08:27:17 PST
Created attachment 177756 [details] patch2 - take simon's feedback into account
Sami Kyöstilä
Comment 4 2012-12-06 06:46:16 PST
Comment on attachment 177756 [details] patch2 - take simon's feedback into account View in context: https://bugs.webkit.org/attachment.cgi?id=177756&action=review Thanks Antonio, I think this makes the logic clearer. > Source/WebCore/ChangeLog:17 > + The naming pattern for the newly added methods were choosen to keep the consitency s/choosen/chosen/, s/consitency/consistency/. > Source/WebCore/ChangeLog:20 > + No new tests, as it is a refactor. Also it is already covered by ScrollingCoordinatorChromiumTest.clippedBodyTest. Not exactly a refactor since it makes canBeScrolledAndHasScrollableArea() more strict, although I can't think of any bad effects from doing so.
Antonio Gomes
Comment 5 2012-12-06 07:16:36 PST
Created attachment 178009 [details] (landed r136947, r=jamesr) patch 2.1 - take Sami's feedback into account
Antonio Gomes
Comment 6 2012-12-06 15:53:44 PST
(In reply to comment #5) > Created an attachment (id=178009) [details] > patch 2.1 - take Sami's feedback into account Kindly ping reviewers.
Antonio Gomes
Comment 7 2012-12-07 05:03:30 PST
Created attachment 178200 [details] patch for EWS
Antonio Gomes
Comment 8 2012-12-07 05:15:37 PST
Comment on attachment 178009 [details] (landed r136947, r=jamesr) patch 2.1 - take Sami's feedback into account https://trac.webkit.org/changeset/136947
Csaba Osztrogonác
Comment 9 2012-12-07 06:08:00 PST
(In reply to comment #8) > (From update of attachment 178009 [details]) > https://trac.webkit.org/changeset/136947 It broke 2 tests on all platform: - fast/events/autoscroll-in-textfield.html - fast/events/autoscroll-should-not-stop-on-keypress.html --- /ramdisk/qt-linux-64-release/build/layout-test-results/fast/events/autoscroll-in-textfield-expected.txt +++ /ramdisk/qt-linux-64-release/build/layout-test-results/fast/events/autoscroll-in-textfield-actual.txt @@ -1,3 +1,3 @@ https://bugs.webkit.org/show_bug.cgi?id=20201 To do the test manually you have to try triggering the autoscroll by starting the dragging from within the text field and moving to the right. If the autoscroll occurs the test has PASSED. -PASSED +FAILED the textfield should have been scrolled --- /ramdisk/qt-linux-64-release/build/layout-test-results/fast/events/autoscroll-should-not-stop-on-keypress-expected.txt +++ /ramdisk/qt-linux-64-release/build/layout-test-results/fast/events/autoscroll-should-not-stop-on-keypress-actual.txt @@ -1,5 +1,5 @@ -PASS frame.contentDocument.body.scrollTop + frame.clientHeight is frame.contentDocument.body.scrollHeight +FAIL frame.contentDocument.body.scrollTop + frame.clientHeight should be 2022. Was 400. PASS successfullyParsed is true TEST COMPLETE
Antonio Gomes
Comment 10 2012-12-07 06:14:45 PST
(In reply to comment #9) > (In reply to comment #8) > > (From update of attachment 178009 [details] [details]) > > https://trac.webkit.org/changeset/136947 > > It broke 2 tests on all platform: > - fast/events/autoscroll-in-textfield.html > - fast/events/autoscroll-should-not-stop-on-keypress.html Saw it. Checking...
Antonio Gomes
Comment 11 2012-12-07 06:38:47 PST
Unfortunately, EWS for some reason can not apply the patch and run the tests in advance. I will likely revert the RenderBox part of the patch, and track is separately. Testing locally first. to See if it fixes the tests.
Antonio Gomes
Comment 12 2012-12-07 06:39:34 PST
Unfortunately, EWS for some reason can not apply the patch and run the tests in advance (abarth, would you know why?). I will likely revert the RenderBox part of the patch, and track is separately. Testing locally first to see if it fixes the tests.
Antonio Gomes
Comment 13 2012-12-07 08:30:36 PST
(In reply to comment #12) ... > I will likely revert the RenderBox part of the patch, and track is separately. Filed bug 104373
Antonio Gomes
Comment 14 2012-12-12 08:34:24 PST
(In reply to comment #11) > Unfortunately, EWS for some reason can not apply the patch and run the tests in advance. > > I will likely revert the RenderBox part of the patch, and track is separately. Testing locally first. to See if it fixes the tests. Fixed by https://trac.webkit.org/changeset/136954
Note You need to log in before you can comment on or make changes to this bug.