<!doctype html>
<html>
<head>
<style type="text/css">
td {
    display: table-cell;
    width: 200px;
    height: 80px;
    border: 1px solid #ccc;
    text-align: center;
    vertical-align: middle;
}
</style>
<script src="../../resources/js-test-pre.js"></script>
</head>
<body>
  <table id="table">
    <tr>
      <td id="elementWithoutStyleAttribute">no HTML style attribute, no get/setAttribute</td>
      <td id="elementWithEmptyStyleAttribute" style="">empty HTML style attribute, no get/setAttribute</td>
      <td id="elementWithStyleAttribute" style="opacity: 1;">non-empty HTML style attribute, no get/setAttribute</td>
    </tr>
    <tr>
      <td id="elementWithoutStyleAttribute2">no HTML style attribute, getAttribute before modifying IDL attribute</td>
      <td id="elementWithoutStyleAttribute3">no HTML style attribute, getAttribute after modifying IDL attribute</td>
      <td id="elementWithoutStyleAttribute4">no HTML style attribute, setAttribute before removeAttribute</td>
    </tr>
  </table>
  <div id="console"></div>
  <script>
    description("[bug 99295] removeAttribute('style') not working in certain circumstances. If this test passes, all backgroundColors are rgba(0, 0, 0, 0), i.e. all styles are removed.");

    var elementWithoutStyleAttribute = $('elementWithoutStyleAttribute'),
        elementWithEmptyStyleAttribute = $('elementWithEmptyStyleAttribute'),
        elementWithStyleAttribute = $('elementWithStyleAttribute'),
        elementWithoutStyleAttribute2 = $('elementWithoutStyleAttribute2'),
        elementWithoutStyleAttribute3 = $('elementWithoutStyleAttribute3'),
        elementWithoutStyleAttribute4 = $('elementWithoutStyleAttribute4');

    shouldBe("elementWithoutStyleAttribute.style.backgroundColor = 'red'; elementWithoutStyleAttribute.removeAttribute('style'); getComputedStyle(elementWithoutStyleAttribute).backgroundColor", '"rgba(0, 0, 0, 0)"');

    elementWithEmptyStyleAttribute.style.backgroundColor = 'red';
    elementWithEmptyStyleAttribute.removeAttribute('style');
    shouldBe("getComputedStyle(elementWithEmptyStyleAttribute).backgroundColor", '"rgba(0, 0, 0, 0)"');

    elementWithStyleAttribute.style.backgroundColor = 'red';
    elementWithStyleAttribute.removeAttribute('style');
    shouldBe("getComputedStyle(elementWithStyleAttribute).backgroundColor", '"rgba(0, 0, 0, 0)"');

    shouldBeNull("elementWithoutStyleAttribute2.getAttribute('style')");
    shouldBe("elementWithoutStyleAttribute2.style.backgroundColor = 'red'; elementWithoutStyleAttribute2.removeAttribute('style'); getComputedStyle(elementWithoutStyleAttribute2).backgroundColor", '"rgba(0, 0, 0, 0)"');

    elementWithoutStyleAttribute3.style.backgroundColor = 'red';
    shouldBe("elementWithoutStyleAttribute3.getAttribute('style')", '"background-color: red;"');
    elementWithoutStyleAttribute3.removeAttribute('style');
    shouldBe("getComputedStyle(elementWithoutStyleAttribute3).backgroundColor", '"rgba(0, 0, 0, 0)"');

    shouldBe("elementWithoutStyleAttribute4.style.backgroundColor = 'red'; elementWithoutStyleAttribute4.setAttribute('style', ''); elementWithoutStyleAttribute4.removeAttribute('style'); getComputedStyle(elementWithoutStyleAttribute4).backgroundColor", '"rgba(0, 0, 0, 0)"');

    function $(id) {
        return document.getElementById(id);
    }

    document.getElementById('table').innerHTML = '';
  </script>
  <script src="../../resources/js-test-post.js"></script>
</body>
</html>
