<!DOCTYPE html>
<script src="../../../resources/js-test.js"></script>
<script src="resources/currentSrcHelper.js"></script>

<picture>
    <source id="src" srcset="../../hidpi/resources/image-set-1x.png?1 1x">
    <img id="simple" src="resources/blue_rect.jpg?1">
</picture>

<script>
    jsTestIsAsync = true;

    var iteration = 0;

    var simple = document.getElementById('simple');
    var src = document.getElementById('src');

    simple.addEventListener('load', function() {
        switch (iteration) {
        case 0:
            shouldBe('document.getElementById("simple").clientWidth', '400');
            shouldBe('currentSrcFileName("simple")', '"image-set-1x.png?1"');

            src.srcset = 'resources/image-set-4x.png 1x';
            break;
        case 1:
            shouldBe('document.getElementById("simple").clientWidth', '1600');
            shouldBe('currentSrcFileName("simple")', '"image-set-4x.png"');

            src.parentNode.removeChild(src);
            break;
        case 2:
            shouldBe('document.getElementById("simple").clientWidth', '75');
            shouldBe('currentSrcFileName("simple")', '"blue_rect.jpg?1"');

            src.srcset = '../../hidpi/resources/image-set-1x.png?2 1x';
            simple.parentNode.insertBefore(src, simple);
            break;
        case 3:
            shouldBe('document.getElementById("simple").clientWidth', '400');
            shouldBe('currentSrcFileName("simple")', '"image-set-1x.png?2"');


            // When there is a <source>, changing the <src> should have no effect
            simple.src = 'resources/blue_rect.jpg?2';
            shouldBe('currentSrcFileName("simple")', '"image-set-1x.png?2"');

            finishJSTest();
            break;
        };
        ++iteration;
    }, false);
</script>

