<!DOCTYPE>
<html>
<head>
<title>Image layer content change</title>

<style type="text/css" media="screen">
    #image {
        width: 200px;
        height: 200px;
        transform: translateZ(0);
    }
</style>
<script type="text/javascript" charset="utf-8">
    if (window.testRunner) {
        testRunner.waitUntilDone();
        testRunner.dumpAsTextWithPixelResults();
    }
    function doTest()
    {
        var image = document.getElementById("image");

        window.setTimeout(function() {
            // Change the contents to green.
            image.src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAIAAAAiOjnJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3gwCFjAZKJ+zhAAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAFySURBVHja7dIxEQAACMSwB/+ewQQDQyKh18oEzrUEGAtjYSwwFsbCWGAsjIWxwFgYC2OBsTAWxgJjYSyMBcbCWBgLjIWxMBYYC2NhLDAWxsJYYCyMhbHAWBgLY4GxMBbGAmNhLIwFxsJYGAuMhbEwFhgLY2EsMBbGwlhgLIyFscBYGAtjgbEwFsYCY2EsjAXGwlgYC4yFsTAWGAtjYSwwFsbCWGAsjIWxwFgYC2OBsTAWxsJYYCyMhbHAWBgLY4GxMBbGAmNhLIwFxsJYGAuMhbEwFhgLY2EsMBbGwlhgLIyFscBYGAtjgbEwFsYCY2EsjAXGwlgYC4yFsTAWGAtjYSwwFsbCWGAsjIWxwFgYC2OBsTAWxgJjYSyMBcbCWBgLjIWxMBYYC2NhLDAWxsJYYCyMhbHAWBgLY4GxMBbGAmNhLIyFscBYGAtjgbEwFsYCY2EsjAXGwlgYC4yFsTAWGAtjYSwwFsbCWGAsjIWxwFh8s4k+Ao/85tbzAAAAAElFTkSuQmCC";
            if (window.testRunner) {
                window.setTimeout(function() {
                    testRunner.notifyDone();
                }, 0);
            }
        }, 0);
    }

    window.addEventListener('load', doTest, false);
</script>
</head>
<body>
<!-- When the test is done, there should only be a green square on the page -->

<!-- Start with a red image -->
<img id="image" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAADElEQVR4nGP4z8AAAAMBAQDJ/pLvAAAAAElFTkSuQmCC" />

</body>
</html>
