<script>
internals.settings.setCSSVariablesEnabled(true);
</script>
<style>
body {
    -webkit-var-a: url(1);
    -webkit-filter: -webkit-var(a);
}
body::first-letter {
    cursor: inherit;
}
</style>
<script>
if (window.testRunner) {
    testRunner.waitUntilDone();
    testRunner.dumpAsText(false);
}
function init() {
  var docElement = document.documentElement;
  rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
  docElement.appendChild(rect);
  text = document.createTextNode("If you can read this, the test passed.");
  docElement.appendChild(text);
  setTimeout("edit();", 20);
}
document.addEventListener("DOMContentLoaded", init, false);
function edit() {
  document.designMode = "on";
  r = document.createRange();
  r.selectNodeContents(rect);
  window.getSelection().addRange(r);
  window.getSelection().deleteFromDocument();
  if (window.testRunner) testRunner.notifyDone();
}
</script>
