<!DOCTYPE html>
<html>
<head>
<title>This test that inset borders are painted. It takes advantage of the fact that borders with radius get through a different code path (Path vs. drawLine).</title>
<style>
  .borderBox {
    position: absolute;
    width: 30px;
    height: 30px;
    border-style: inset;
    border-color: red;
  }
  
  .hide {
    position: fixed;
    width: 4px;
    height: 4px;
    background-color: white;
  }
</style>
<head>
<body>
<script>
  var borderWidth = 1;
  var x = 0;
  var y = 0;
  var cornerBoxSize = 0;
  for (var i = 0; i < 10; ++i) {
      w = 20 * i;
      h = 20 * i;
      cornerBoxSize = 2 * borderWidth;
      
      var e = document.createElement("div");
      e.className = "borderBox";
      e.style.top =  y + "px";
      e.style.left = x + "px";
      e.style.width = w + "px";
      e.style.height = h + "px";
      e.style.borderWidth = borderWidth + "px";
      e.style.borderRadius = borderWidth + 1 + "px";
      document.body.appendChild(e);

      var hb1 = document.createElement("div");
      hb1.className = "hide";
      hb1.style.top = y + "px";
      hb1.style.left = x + "px";
      hb1.style.width = cornerBoxSize + "px";
      hb1.style.height = cornerBoxSize + "px";
      document.body.appendChild(hb1);

      var hb2 = document.createElement("div");
      hb2.className = "hide";
      hb2.style.top = y + "px";
      hb2.style.left = x + w + "px";
      hb2.style.width = cornerBoxSize + "px";
      hb2.style.height = cornerBoxSize + "px";
      document.body.appendChild(hb2);

      var hb3 = document.createElement("div");
      hb3.className = "hide";
      hb3.style.top = y + h + "px";
      hb3.style.left = x + "px";
      hb3.style.width = cornerBoxSize + "px";
      hb3.style.height = cornerBoxSize + "px";
      document.body.appendChild(hb3);

      var hb4 = document.createElement("div");
      hb4.className = "hide";
      hb4.style.top = y + w + "px";
      hb4.style.left = x + h + "px";
      hb4.style.width = cornerBoxSize + "px";
      hb4.style.height = cornerBoxSize + "px";
      document.body.appendChild(hb4);
      
      borderWidth += 1;
      x += (w + 2 * borderWidth);
  }
</script>
</body>
</html>
