<!DOCTYPE html>
<html>
<head>
<title>This tests that find the proper spanner in flow when out-of-flow elements are present.</title>
<style>
.multiCol {
  column-count: 2;
  position: absolute;
}

.spanner {
  column-span: all;
}
</style>
</head>
<body class=multiCol>
  <svg xmlns="http://www.w3.org/2000/svg">
    <foreignobject class=multiCol>
      <div class=multiCol><br></div>
      <div class=spanner>Pass if no crash.</div>
    </foreignobject>
  </svg>
</body>
<script>
  if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.waitUntilDone();
  }
  
  setTimeout(function() {
    document.body.style.columnCount = "unset";    
    if (window.testRunner)
      testRunner.notifyDone();
  }, 0);
</script>
</html>