chromium/third_party/blink/web_tests/fast/canvas/canvas-toBlob-toDataURL-race-imageEncoder-jpeg.html

<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>