REGRESSION(r120832): RenderLayer::clampScrollOffset doesn't properly clamp
https://bugs.webkit.org/show_bug.cgi?id=95776
Reviewed by Simon Fraser.
.:
* ManualTests/select-menu-list-wrongly-positioned.html: Added.
Source/WebCore:
r120832 consolidated the clamping logic into RenderLayer::clampScrollOffset. The existing code wouldn't properly ensure that
the offset were positive which got exposed to other code paths, leading to the regression.
Tested by ManualTests/select-menu-list-wrongly-positioned.html as I didn't find a way to create a reliable layout test.
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::clampScrollOffset):
Fixed the clamping logic to ensure that the scroll offset's dimensions are positive.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@127520 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/ManualTests/select-menu-list-wrongly-positioned.html b/ManualTests/select-menu-list-wrongly-positioned.html
new file mode 100755
index 0000000..9f1392a
--- /dev/null
+++ b/ManualTests/select-menu-list-wrongly-positioned.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html>
+<html>
+<head>
+<style>
+ table {
+ overflow: hidden;
+ }
+</style>
+<script>
+ function onSelectionChange(select)
+ {
+ document.getElementById('hiddenRow').style.display = '';
+ }
+</script>
+</head>
+<body>
+ <div><a href="https://bugs.webkit.org/show_bug.cgi?id=95776">95776</a>: REGRESSION(r120832): RenderLayer::clampScrollOffset doesn't properly clamp</div>
+ <div>Manual test: click on the menu below and <select> the 'shown' option. Click somewhere on the page so that the <select> loses focus and click again on the <select>.</div>
+ <div>To pass the menu should be properly placed below the <select>.</div>
+ <form name="teste">
+ <table>
+ <tr>
+ <th>Test select:</th>
+ <td>
+ <select onchange=onSelectionChange(this)>
+ <option value="0">hidden</option>
+ <option value="1">shown</option>
+ </select>
+ </td>
+ </tr>
+ <tr id="hiddenRow" style="display: none;">
+ <th>Lorem ipsum</th>
+ <td>dolor sic amet.</td>
+ </tr>
+ </table>
+ </form>
+</body>
+</html>