blob: d034e20dc04efe825ee758f802574f3b17ceac6f [file] [log] [blame]
<!DOCTYPE HTML>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<button id="button"></button>
<iframe id="iframe"></iframe>
<script>
// This is a crash reproduction case for crbug.com/626750.
// Things are expected to happen in this order:
// 1. window.onload event fires
// 2. button.focus()
// 3. button's focus event handler is called
// 4. iframe.contentWindow.focus()
// 5. button's blur event handler is called (due to 4)
// 6. document.open() (detaches <iframe>)
// 7. focus in iframe blurs
// 8. iframe is set to active while detached <- crash due to crbug.com/626750
// 9. script execution gets back to button's focus event handler
// (4-8 happen while iframe.contentWindow.focus() is handled)
async_test((test) => {
button.addEventListener('focus', test.step_func_done(() => {
iframe.contentWindow.focus();
assert_equals(document.activeElement, null, 'blur handler properly finished.');
}));
button.addEventListener('blur', test.step_func(() => {
// This detaches <iframe>.
document.open();
}));
window.addEventListener('load', () => button.focus());
}, 'focusing on detached frame should not crash');
</script>