<head>
<script>
function addFrameText() {
  frameDoc = window.frames[0].document;
  item = frameDoc.createElement("p");
  item.appendChild(frameDoc.createTextNode("Hello, world!"));
  for (i = 0; i < 1000; ++i) {
    frameDoc.body.appendChild(item.cloneNode(true));
  }
}
</script>
</head>

<body onload="javascript:addFrameText()">

<p>Test for <a href="http://bugs.webkit.org/show_bug.cgi?id=11718">bug 11718</a>:
When I mouse up after dragging a selection outside of a iframe, the iframe continues to scroll automatically.</p>

<p>Make the frame autoscroll by moving the mouse pointer outside of it while selecting. 
Autoscrolling should stop when you release the mouse button outside the frame (in the main frame, 
in another subframe, or just outside the window).</p>

<p>Test for <a href="https://bugs.webkit.org/show_bug.cgi?id=49209">bug 49209</a>:
Open another page in a different tab, middle click in the first iframe, scroll up, and select the other tab. The pan scrolling
cursor should disappear, and you should exit pan scrolling mode.</p>

<IFRAME FRAMEBORDER=1></IFRAME>
<br>
<IFRAME FRAMEBORDER=1></IFRAME>

</body>
</html>
