<!DOCTYPE html>

<style>
    body { font: 16px/16px monospace; }

    .region {
        border: 1px solid blue;
        padding: 2px;
        width: 250px;
        height: 55px;
    }

    #region4 {
        height: 356px;
        position: absolute;
        left: 330px;
        top: 120px;
        border-width: thick;
    }

    p {
        margin: 0px;
    }

    #container {
        overflow: auto; 
        border: 3px solid blue;
        width: 270px;
        height: 100px; 
        padding: 10px;
    }

    .inner_scroll {
        height: 75px;
        border: 2px solid green;
        margin: 5px;
        overflow: scroll;
        padding: 5px;
    }
</style>

<script>
    onload = function() {
        if (window.eventSender) {
            eventSender.mouseMoveTo(150, 230);
            eventSender.continuousMouseScrollBy(0, -10000);
            eventSender.continuousMouseScrollBy(0, -10000);
            eventSender.mouseMoveTo(0, 0);
        }
    }
</script>

<body>
    <div>
        The text passes if everything can be scrolled normally using the mouse wheel: 
        <ul>
            <li>Scrolling inside the green div should work until it reaches the end and then the blue container should scroll.</li>
            <li>Scrolling inside the brown div should work until it reaches the end and then the blue container should NOT scroll because the region in which the orange div is flowed is absolutely positioned</li>
        </ul>
    </div>

    <div id="container">
        <div class="region">
            <p>Assume that there is enough content in the flow to fill the regions</p>
        </div>
        <div class="region">
            <div class="inner_scroll" style="height: 30px; margin-top: 0px;">
                <p>Assume that there is enough content in the flow to fill the regions and the size of the container is less than the size of regions so that the container gets vertical scrollbar. Case1. If the mouse cursor is over the flow thread fragmented content inside a region, the user is unable to scroll the content inside the container. Case2. However, if the mouse is outside the flow thread content but still inside the container, then the user is able to scroll the container content. There *should be* a possibility to scroll the container content even when the mouse cursor is over the flow thread content in regions. (Case1)</p>
            </div>
        </div>
        <div class="region">
            <p style="margin-top: 1px">is less than the size of regions so that the container gets vertical</p>
        </div>
        <div class="region" id="region4">
            <p style="margin-top: 1px">scrollbar. Case1. If the mouse cursor is over the flow thread fragmented content inside a region, the user is unable to scroll the content inside the container.</p>
            <div class="inner_scroll" style="border-color: brown;">
                <p>Assume that there is enough content in the flow to fill the regions and the size of the container is less than the size of regions so that the container gets vertical scrollbar. Case1. If the mouse cursor is over the flow thread fragmented content inside a region, the user is unable to scroll the content inside the container. Case2. However, if the mouse is outside the flow thread content but still inside the container, then the user is able to scroll the container content. There *should be* a possibility to scroll the container content even when the mouse cursor is over the flow thread content in regions. (Case1)</p>
                <p>Assume that there is enough content in the flow to fill the regions and the size of the container is less than the size of regions so that the container gets vertical scrollbar. Case1. If the mouse cursor is over the flow thread fragmented content inside a region, the user is unable to scroll the content inside the container. Case2. However, if the mouse is outside the flow thread content but still inside the container, then the user is able to scroll the container content. There *should be* a possibility to scroll the container content even when the mouse cursor is over the flow thread content in regions. (Case1)</p>
                <p>Assume that there is enough content in the flow to fill the regions and the size of the container is less than the size of regions so that the container gets vertical scrollbar. Case1. If the mouse cursor is over the flow thread fragmented content inside a region, the user is unable to scroll the content inside the container. Case2. However, if the mouse is outside the flow thread content but still inside the container, then the user is able to scroll the container content. There *should be* a possibility to scroll the container content even when the mouse cursor is over the flow thread content in regions. (Case1)</p>
            </div>
            <p>Assume that there is enough content in the flow to fill the regions and the size of the container is less than the size of regions so that the container gets vertical scrollbar. Case1.</p>
        </div>
    </div>
</body>
