<html>
<head>
<script>
window.onload = function() {
  if (window.testRunner)
    window.testRunner.dumpAsText();

  var cell = document.getElementById("cell");
  var text = cell.firstElementChild;
  var wdiff = cell.offsetWidth - text.offsetWidth - (parseInt(window.getComputedStyle(cell).getPropertyValue('padding-right')) +
                                                     parseInt(window.getComputedStyle(cell).getPropertyValue('padding-left')));
  if (wdiff > 0)
    text.innerText = "PASS";
}
</script>
</head>
<body>
<div style="float: left;">
  <div style="display: -webkit-box; border: 1px solid">
    <table>
      <tr>
        <td></td>
        <td id="cell" style="background-color: green; width: 100%; height: 30px">
          <span>FAIL</span>
        </td>
      </tr>
    </table>
  </div>
</div>
<div style="clear: left;">The green box should be the full width of the page.</div>
</body>
</html>