<!doctype html>
<html>
  <head>
    <title>Selection dragging should drag no HTML when inside a single element</title>
    <style type="text/css">
p + div {
  background: orange;
  width: 4em;
}
div + div {
  border: 1px solid black;
  min-height: 5em;
}
    </style>
    <script type="text/javascript">
window.onload = function () {
  var output = document.getElementsByTagName('div')[1];
  output.ondragenter = output.ondragover = function (e) { e.preventDefault(); };
  output.ondrop = function (e) {
    e.preventDefault();
    var drophtml = e.dataTransfer.getData('text/html').toUpperCase().replace(/\sSTYLE="[^"]*"/g,'').replace(/[\r\n]+/g,'\\n');
    var droptext = e.dataTransfer.getData('text/plain').replace(/[\r\n]+/g,'\\n');
    var expectedhtml = 'B';
    var expectedtext = 'B';
    if( drophtml != expectedhtml ) {
      output.innerHTML = 'FAIL - normalised dropped HTML was:<br>'+drophtml.replace(/</g,'&lt;');
    } else if( droptext != expectedtext ) {
      output.innerHTML = 'FAIL - normalised dropped text was:<br>'+droptext.replace(/</g,'&lt;');
    } else {
      output.innerHTML = 'PASS';
    }
  };
};
    </script>
  </head>
  <body>

    <p>Select &quot;B&quot; in the text below.</p>
    <div>
      <p>ABC</p>
    </div>
    <div>Drag the selection and drop it here.</div>

  </body>
</html>
