<!doctype html>
<html>
	<head>
		<title>Data URI does not match /</title>
	</head>
	<body>
		<!--
/ sets an absolute URL pointing to the document's unique identifier - used as the script origin.
The script origin will in fact be inherited from the parent page, which is actually the same data URI.
That part works.
However, when it comes to matching against it, it will not match, as the global identifier does not
match because the origin does not match the scheme/host/port tuple required.
		-->
		<p>Load the following URL in a new tab (copy &amp; paste it into the address bar):</p>
		<noscript><p>Enable JavaScript and reload</p></noscript>

		<script type="text/javascript">
document.write('data:text/html,'+escape(
'<!doctype html>\
<html>\
	<head>\
		<title>Data URI does not match /<\/title>\
		<style type="text/css">\
html, body { margin: 0; padding: 0; }\
div { height: 100px; width: 100px; background: orange; }\
iframe { border: none; height: 150px; width: 150px; }\
		<\/style>\
	<\/head>\
	<body>\
		<script type="text/javascript">\
if( self == top ) {\
	document.body.ondragenter = document.body.ondragleave = document.body.ondragover = document.body.ondrop = function (e) {\
		e.preventDefault();\
		document.body.innerHTML = "FAIL";\
	};\
	document.write("<p>Drag the orange square below over this text, and release it. Pass if this text does not change.<\\\/p>");\
	document.write("<p><iframe src=\\""+location.href+"\\"><\\\/iframe><\\\/p>");\
} else {\
	document.write("<div draggable=\\"true\\"><\\\/div>");\
	document.getElementsByTagName("div")[0].ondragstart = function (e) {\
		e.dataTransfer.effectAllowed = "copy";\
		e.dataTransfer.setData("text","dummy text");\
		e.dataTransfer.allowTargetOrigin("/");\
	};\
}\
		<\/script>\
	<\/body>\
<\/html>'));

		</script>
	</body>
</html>