<!DOCTYPE html>
<html>
<head>
    <title>CSSOM View - 7 - element.offsetWidth detatches correctly</title>
    <link rel="author" title="Michael Howell" href="mailto:michael@notriddle.com">
    <link rel="help" href="https://drafts.csswg.org/cssom-view-1/#dom-htmlelement-offsetwidth">
    <meta name="flags" content="dom">
    <meta name="assert" content="element.offsetWidth returns 0 when there is no documentElement.">
    <script src="../../../../../resources/testharness.js"></script>
    <script src="../../../../../resources/testharnessreport.js"></script>
</head>
<body>
    <div id="myDiv">...</div>
    <div id="log"></div>
    <script>
        test(function() {
            // These asserts need to be in this order to trigger a bug in Servo.
            var el = document.createElement("div");
            el.appendChild(document.createTextNode("..."));
            assert_equals(el.offsetWidth, 0, "new element has offset width not equal to zero");
            assert_not_equals(document.getElementById("myDiv"), 0, "element with content has offset width equal to zero");
            var html = document.removeChild(document.documentElement);
            // Put back the root element, so that testharnessreport.js can append the result.
            this.add_cleanup(function() { document.appendChild(html); });
            assert_equals(el.offsetWidth, 0, "new element has offset width not equal to zero after removing documentElement");
        });
    </script>
</body>
</html>
