blob: af7d0e71591c8df007cbe32535c2b81ca9e93e75 [file] [log] [blame]
<html>
<head>
<script src="/js-test-resources/js-test-pre.js"></script>
<script src="resources/cross-frame-access.js"></script>
<script>
jsTestIsAsync = true;
data = null;
// Set up listener for message from iframe
addEventListener('message', function(event) {
if (event.data == "finishedLoad")
doTest();
}, false);
function turnLeakedException(object) {
try {
object.setter = {toString: function() { return {} } };
} catch (e) {
let crossOriginFunctionConstructor = e.constructor.constructor;
data = crossOriginFunctionConstructor(`
var element = document.getElementById("password");
if (!element)
return null;
return element.textContent;`)();
}
shouldNotBeEqualToString(`data`, `null`);
shouldNotBeEqualToString(`data`, "Cocoa");
data = null;
}
doTest = function()
{
let targetWindow = document.getElementById("target").contentWindow;
// putInlineSlow
turnLeakedException({__proto__: targetWindow.location});
// putToPrimitive
num = 1337;
num.__proto__.__proto__ = targetWindow.location;
turnLeakedException(num);
finishJSTest();
}
</script>
</head>
<body>
<div>This tests that you can't get cross-origin object during [[Put]] operation.</div>
<iframe id="target" src="http://localhost:8000/security/resources/cross-frame-iframe-for-object-put-optimization-test.html"></iframe>
<pre id="console"></pre>
<script src="/js-test-resources/js-test-post.js"></script>
</body>
</html>