<html>
<head>
  <script type="text/javascript" charset="utf-8">
    if (window.testRunner)
      testRunner.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>
