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 &lt;select&gt; the 'shown' option. Click somewhere on the page so that the &lt;select&gt; loses focus and click again on the &lt;select&gt;.</div>
+    <div>To pass the menu should be properly placed below the &lt;select&gt;.</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>