<html>
<head>

<style type="text/css" media="screen">
/* Invalid selector */
.navbar-search .search-query:-moz-placeholder {
  color: #cccccc;
}

#container {
  padding: 15px;
}
</style>

<script src="../../http/tests/inspector/inspector-test.js"></script>
<script src="../../http/tests/inspector/elements-test.js"></script>
<script>

function test()
{
      InspectorTest.selectNodeAndWaitForStyles("container", step1);
    
      function step1()
      {
          InspectorTest.addResult("Initial value");
          InspectorTest.dumpSelectedElementStyles(true, false, true);
    
          var treeItem = InspectorTest.getMatchedStylePropertyTreeItem("padding");
          treeItem.applyStyleText("padding: 20px", true, false);
          InspectorTest.waitForStyles("container", step2);
      }
    
      function step2()
      {
          InspectorTest.addResult("After changing property");
          InspectorTest.dumpSelectedElementStyles(true, false, true);
          InspectorTest.completeTest();
      }
}

</script>
</head>

<body onload="runTest()">
<p>
Tests that proper source lines are reported for the styles after unrecognizer / invalid selector.
</p>

<div id="container"></div>

</body>
</html>
