<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script src = "./script-tests/canvas-toBlob-toDataURL-race.js"></script>

<script>
async_test(function(t) {

    createAllTestCases(t);
    
    //Fire a bunch of toBlob operations of canvas to keep the async thread busy
    var j = 0; // due to async nature of toBlob we need a separate counter
    for (var i = 0; i < numToBlobCalls; i++) 
    {
        canvas.toBlob(function(blob) {
            url = URL.createObjectURL(blob);
            testImages[j++].src = url;
        }, "image/jpeg", 1.0);
    }
    
    //Then file a bunch of toDataURL operation on main thread, so both threads now compete for image encoding
    for (var i = numToBlobCalls; i < (numToDataURLCalls + numToBlobCalls); i++) 
    {
        testImages[i].src = canvas.toDataURL("image/jpeg", 1.0);
    }

}, "Verifies if JPEG image encoding on main thread (toDataURL) conflicts with image encoding on async thread (toBlob)");
</script>
