<!DOCTYPE html>
<script src="../../resources/js-test.js"></script>
<iframe src="data:text/html,"></iframe>
<button type="button">Button</button>
<script>
description('Mousedown without mouseup in a sub frame should not confuse a click in another frame.');
jsTestIsAsync = true;
window.onload = function() {
    var button = document.querySelector('button');
    button.addEventListener('mousedown', function(event) {
        event.preventDefault();
    }, false);
    button.addEventListener('click', function(event) {
        testPassed('Click event was dispatched.');
        finishJSTest();
    }, false);

    var iframe = document.querySelector('iframe');
    // Mousedown on the iframe, but no mouseup.
    eventSender.mouseMoveTo(iframe.offsetLeft + iframe.offsetWidth / 2, iframe.offsetTop + iframe.offsetHeight / 2);
    eventSender.mouseDown(1);
    // Reset eventSender's internal button state.
    eventSender.setMouseButtonState(-1, []);
    // Click on the button in the main document.
    eventSender.mouseMoveTo(button.offsetLeft + button.offsetWidth / 2, button.offsetTop + button.offsetHeight / 2);
    eventSender.mouseDown(0);
    setTimeout(function() {
        testFailed('Click event was not dispatched.');
        finishJSTest();
    }, 100);
    eventSender.mouseUp(0);
}
</script>
