<!doctype html>
<html>
<head>
  <meta charset=utf-8>
  <title>CSS Test: DOM modification re-parsing test</title>
  <link rel="help" href="https://drafts.csswg.org/cssom/">
  <link rel="help" href="http://www.w3.org/TR/cssom-1/#the-cssrule-interface">
  <script src=/resources/testharness.js></script>
  <script src=/resources/testharnessreport.js></script>
  <style>div { min-width: 0px; }</style>
  <style id="style-element"></style>
</head>
<body>
<div id="test-div"></div>
<script type="text/javascript">
    var style = document.getElementById("style-element");
    var div = document.getElementById("test-div");

    function testProperty(prop) {
      // Assigning an empty string to textContent or innerHTML should trigger a
      // reparse only if the element is not empty.
      style.sheet.insertRule("#test-div { min-width: 42px; }");
      assert_equals(getComputedStyle(div).minWidth, "42px");

      style[prop] = "";
      assert_equals(getComputedStyle(div).minWidth, "42px");

      style[prop] = " ";
      assert_equals(getComputedStyle(div).minWidth, "0px");

      style.sheet.insertRule("#test-div { min-width: 42px; }");
      assert_equals(getComputedStyle(div).minWidth, "42px");

      style[prop] = "";
      assert_equals(getComputedStyle(div).minWidth, "0px");

      style.sheet.insertRule("#test-div { min-width: 42px; }");
      assert_equals(getComputedStyle(div).minWidth, "42px");

      style.appendChild(document.createTextNode(""));
      assert_equals(getComputedStyle(div).minWidth, "0px");

      style.sheet.insertRule("#test-div { min-width: 42px; }");
      assert_equals(getComputedStyle(div).minWidth, "42px");

      style[prop] = "";
      assert_equals(getComputedStyle(div).minWidth, "0px");
    }

    test(function() {
      testProperty("textContent");
    }, "style.textContent modification");

    test(function() {
      testProperty("innerHTML");
    }, "style.innerHTML modification");
</script>
</body>
</html>
