<!DOCTYPE html>
<html>
<body>
<p>Test passes if you see a single 100px by 100px green box below.</p> 
<my-host id="host1" style="background: green;"><div style="background: red;">FAIL</div></my-host>
<my-host id="host2" style="background: green;"><div slot="foo" style="background: red;">FAIL</div></my-host>
<my-host id="host3" style="background: red;"><div style="background: green;"></div><div slot="foo" style="background: red;">FAIL</div></my-host>
<my-host id="host4" style="background: red;"><div style="background: green;"></div></my-host>
<style>

my-host {
    display: block;
    width: 100px;
    height: 25px;
    overflow: hidden;
}

my-host > div {
    width: 100%;
    height: 100%;
}

</style>
<script>

function forceLayout() {
    if (window.internals)
        internals.updateLayoutIgnorePendingStylesheetsAndRunPostLayoutTasks();
    else
        document.querySelector('p').getBoundingClientRect();
}

try {
    var shadow1 = document.getElementById('host1').attachShadow({mode: 'open'});
    shadow1.innerHTML = '<slot></slot>';

    var shadow2 = document.getElementById('host2').attachShadow({mode: 'open'});
    shadow2.innerHTML = '<slot name="foo"></slot>';

    var shadow3 = document.getElementById('host3').attachShadow({mode: 'open'});
    shadow3.innerHTML = '<slot name="foo"></slot>';

    var shadow4 = document.getElementById('host4').attachShadow({mode: 'open'});
    shadow4.innerHTML = 'FAIL';

    forceLayout();

    shadow1.removeChild(shadow1.firstChild);
    forceLayout();

    shadow2.firstChild.name = 'bar';
    forceLayout();

    shadow3.firstChild.removeAttribute("name");
    forceLayout();

    shadow4.insertBefore(document.createElement('slot'), shadow4.firstChild);

} catch (exception) {
    document.body.appendChild(document.createTextNode(exception));
}

</script>
</body>
</html>
