<!doctype html>

<script src="../../resources/js-test.js"></script>

<iframe data-test="frameborder=1 is true" data-assert-frame-width="145">
    <!doctype html>
    <!--
        To test true values we need to nest in a false value first since the
        default value is already true. If we didn't do this then the tests would
        pass even if the browser ignored the attribute entirely.
    -->
    <frameset rows="*" cols="*" frameborder="0">
        <frameset rows="*" cols="50,50" frameborder="1" border="10">
            <frame src="data:text/html,<body bgcolor=red>">
            <frame src="data:text/html,<body bgcolor=blue>">
        </frameset>
    </frameset>
</iframe>

<iframe data-test="frameborder=yes is true" data-assert-frame-width="145">
    <!doctype html>
    <frameset rows="*" cols="*" frameborder="0">
        <frameset rows="*" cols="50,50" frameborder="yes" border="10">
            <frame src="data:text/html,<body bgcolor=red>">
            <frame src="data:text/html,<body bgcolor=blue>">
        </frameset>
    </frameset>
</iframe>

<iframe data-test="frameborder=0 is false" data-assert-frame-width="150">
    <!doctype html>
    <frameset rows="*" cols="50,50" frameborder="0">
        <frame src="data:text/html,<body bgcolor=red>">
        <frame src="data:text/html,<body bgcolor=blue>">
    </frameset>
</iframe>

<iframe data-test="frameborder=no is false" data-assert-frame-width="150">
    <!doctype html>
    <frameset rows="*" cols="50,50" frameborder="nO">
        <frame src="data:text/html,<body bgcolor=red>">
        <frame src="data:text/html,<body bgcolor=blue>">
    </frameset>
</iframe>

<iframe data-test="Invalid values like frameborder=false are ignored" data-assert-frame-width="147">
    <!doctype html>
    <frameset rows="*" cols="50,50" frameborder="false">
        <frame src="data:text/html,<body bgcolor=red>">
        <frame src="data:text/html,<body bgcolor=blue>">
    </frameset>
</iframe>

<iframe data-test="Invalid values like frameborder=2 are ignored" data-assert-frame-width="147">
    <!doctype html>
    <frameset rows="*" cols="50,50" frameborder="2">
        <frame src="data:text/html,<body bgcolor=red>">
        <frame src="data:text/html,<body bgcolor=blue>">
    </frameset>
</iframe>

<script>
    description('Check frameset frameborder attribute allows 1,yes for true and 0,no for false');

    iframes = [].slice.call(document.querySelectorAll('iframe'));
    iframes.forEach(function(iframe) {
        // Can't use srcdoc since that wouldn't synchronously load the content.
        iframe.contentDocument.write(iframe.textContent);
        iframe.contentDocument.close();

        frameset = iframe.contentDocument.querySelector('frameset');
        expectedWidth = iframe.dataset.assertFrameWidth;
        frames = frameset.querySelectorAll('frame');
        debug(iframe.dataset.test);
        shouldBe('frames[0].offsetWidth', expectedWidth);
        shouldBe('frames[1].offsetWidth', expectedWidth);
        debug('<br>');
    });
</script>

