<!DOCTYPE html>
<html>
<script src="../../resources/js-test.js"></script>
<script>
// Ensure that events are handled correctly when an image element is adopted.

jsTestIsAsync = true;

var doc = document.documentElement.appendChild(document.createElement("iframe")).contentDocument;
var adopting = false;
var readyStateChangeEventHandlerTriggeredWhenComplete = false;

doc.open();
doc.onreadystatechange = function() {
    if (doc.readyState == "complete") {
        readyStateChangeEventHandlerTriggeredWhenComplete = true;
        testPassed("readystatechange event handler was executed when complete");
        if (adopting)
            testFailed("script triggered during adoption");
        finishJSTest();
    }
}

var img = doc.appendChild(doc.createElement("img"));
var blobUrl = URL.createObjectURL(new Blob);

var x = new XMLHttpRequest;
x.onload = function() {
    img.src = blobUrl;
}
x.onloadend = function() {
    doc.close();
    URL.revokeObjectURL(blobUrl);
    adopting = true;
    document.adoptNode(img);
    adopting = false;
    if (doc.readyState == "complete" && !readyStateChangeEventHandlerTriggeredWhenComplete) {
        // TODO: This can be replaced with testFailed once https://crbug.com/606651 is fixed.
        debug("FAIL readystatechange event was dispatched but the handler was suppressed");
        finishJSTest();
    }
}
x.open("get", "data:text/html,");
x.send();
</script>
</html>
