<!DOCTYPE html>
<html>
<head>
  <style>
    #target1 {
      -webkit-transition-property: none;
    }
    #target2 {
      transition-property: none;
    }
  </style>
  <script>
    if (window.testRunner) {
        testRunner.dumpAsText();
        testRunner.waitUntilDone();
    }

    function testValue(actual, expected) {
      if (actual == expected)
        document.getElementById('result').innerHTML += 'PASS: transition-property was ' + expected + '<br>';
      else
        document.getElementById('result').innerHTML += 'FAIL: transition-property was ' + actual + ', expected ' + expected + '<br>';
    }


    function testProperties()
    {
      var target1 = document.getElementById('target1');
      var target2 = document.getElementById('target2');
      testValue(getComputedStyle(target1).webkitTransitionProperty, 'none');
      testValue(getComputedStyle(target2).transitionProperty, 'none');

      target1.style.webkitTransitionProperty = 'initial';
      target2.style.transitionProperty = 'initial';
      testValue(getComputedStyle(target1).webkitTransitionProperty, 'all');
      testValue(getComputedStyle(target2).transitionProperty, 'all');

      if (window.testRunner)
          testRunner.notifyDone();

    }

    window.addEventListener('load', testProperties, false);
  </script>
</head>
<body>
<p>Tests that explicitly setting the transition-property property to 'initial' works for both prefixed and unprefixed versions.

<div id="target1"></div>
<div id="target2"></div>

<div id="result"></div>

</body>
</html>