<html>
<head>
  <script type="text/javascript" charset="utf-8">
    if (window.layoutTestController)
      layoutTestController.dumpAsText();

    function runTest()
    {
      var testHeader = document.getElementById('testHeader');
      var testDiv = document.getElementById('testDiv');
      
      var result = document.getElementById('result');
      result.innerHTML = 'Computed white-space style of &lt;th&gt;: ' + window.getComputedStyle(testHeader).whiteSpace + '<br>';
      result.innerHTML += 'Computed white-space style of &lt;div&gt;: ' + window.getComputedStyle(testDiv).whiteSpace + '<br>';
    }
  </script>
</head>
<body onload="runTest()">

<p>Tests the behavior change mentioned in <a href="https://bugs.webkit.org/show_bug.cgi?id=21287#c3">https://bugs.webkit.org/show_bug.cgi?id=21287#c3</a></p>

<table>
  <tr><th nowrap id="testHeader" style="display: block;">Header</th></tr>
</table>
<div id="testDiv" style="display: table-cell; white-space: -webkit-nowrap">
  Div with display: table-cell
</div>
<div id="result" style="margin: 10px;">
</div>

</body>
</html>
