blob: 0511d8c74d250c77e9410a04b15de135dcfa7ba7 [file] [log] [blame]
<html>
<head>
<script src="resources/cross-frame-access.js"></script>
<script>
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.dumpChildFrames();
testRunner.waitUntilDone();
}
onload = function()
{
// Add manual run buttons if the browser does not support window.postMessage
if (!window.postMessage) {
log("YOUR BROWSER DOES NOT SUPPORT window.postMessage");
log("To run this test manually, first click the button titled 'Step 1 - Set Test' in this frame.");
log("Then click the button in the sub frame titled 'Step 2 - Set Check' to finish the test.\n");
var button = document.createElement("button");
button.appendChild(document.createTextNode("Step 1 - Set Test"));
button.onclick = doTest;
document.body.appendChild(button);
}
}
receiver = function(e)
{
if (e.data == "propertiesSet")
doTest();
}
addEventListener('message', receiver, false);
doTest = function()
{
targetFrame = frames[0];
// Attempt to inject functions into the target frame. These will be checked in the final step.
try { Object.prototype.__defineSetter__.call(targetFrame, 'injectedSetter', function() { alert("Set injected setter in: " + document.URL); return "customSetter"; }); } catch(e) { log(e); }
try { Object.prototype.__defineGetter__.call(targetFrame, 'injectedGetter', function() { return "customGetter"; }); } catch(e) { log(e); }
log("\n----- test getting values cross-frame using Object.prototype -----\n");
// Attempt to detect values set on the target frame.
try { shouldThrowException("Object.prototype.__lookupGetter__.call(targetFrame, 'myGetter');"); } catch(e) { log(e); }
try { shouldThrowException("Object.prototype.__lookupSetter__.call(targetFrame, 'mySetter');"); } catch(e) { log(e); }
try { shouldThrowException("Object.prototype.propertyIsEnumerable.call(targetFrame, 'myProp');"); } catch(e) { log(e); }
// FIXME: Unfortunatly, all cross-cross frame calls hasOwnProperty will return true so there is no way to test this right now.
// try { shouldBe("Object.prototype.hasOwnProperty.call(targetFrame, 'myProp');", "false"); } catch(e) { log(e); }
if (window.postMessage)
targetFrame.postMessage("settingValuesComplete", "*");
else
log("\nSet Test complete! Click button entitled 'Step 2 - Set Check' to finish the test.");
}
</script>
</head>
<body>
<iframe name="target" src="http://localhost:8000/security/resources/cross-frame-iframe-for-object-prototype-test.html"></iframe>
<pre id="console"></pre>
</body>
</html>