blob: 455c1574357e4d4ff3af2e30c971929832e49106 [file] [log] [blame]
<!DOCTYPE html>
<html>
<body>
<script src="../../../resources/js-test-pre.js"></script>
<iframe src="http://localhost:8000/security/resources/iframe-with-element.html"></iframe>
<script>
description("Test security checking for access to Location.");
jsTestIsAsync = true;
onload = function() {
shouldThrowErrorName("frames[0].location.protocol", "SecurityError");
shouldThrowErrorName("frames[0].location.host", "SecurityError");
shouldThrowErrorName("frames[0].location.hostname", "SecurityError");
shouldThrowErrorName("frames[0].location.port", "SecurityError");
shouldThrowErrorName("frames[0].location.pathname", "SecurityError");
shouldThrowErrorName("frames[0].location.search", "SecurityError");
shouldThrowErrorName("frames[0].location.hash", "SecurityError");
shouldThrowErrorName("frames[0].location.origin", "SecurityError");
shouldThrowErrorName("frames[0].location.ancestorOrigins", "SecurityError");
shouldThrowErrorName("frames[0].location.toString()", "SecurityError");
shouldThrowErrorName("frames[0].location.reload()", "SecurityError");
shouldThrowErrorName("frames[0].location.assign('about:blank')", "SecurityError");
shouldThrowErrorName("frames[0].location.href", "SecurityError");
shouldThrowErrorName("Object.getOwnPropertyDescriptor(window.location, 'protocol').get.call(frames[0].location)", "SecurityError");
shouldThrowErrorName("Object.getOwnPropertyDescriptor(window.location, 'host').get.call(frames[0].location)", "SecurityError");
shouldThrowErrorName("Object.getOwnPropertyDescriptor(window.location, 'hostname').get.call(frames[0].location)", "SecurityError");
shouldThrowErrorName("Object.getOwnPropertyDescriptor(window.location, 'port').get.call(frames[0].location)", "SecurityError");
shouldThrowErrorName("Object.getOwnPropertyDescriptor(window.location, 'pathname').get.call(frames[0].location)", "SecurityError");
shouldThrowErrorName("Object.getOwnPropertyDescriptor(window.location, 'search').get.call(frames[0].location)", "SecurityError");
shouldThrowErrorName("Object.getOwnPropertyDescriptor(window.location, 'hash').get.call(frames[0].location)", "SecurityError");
shouldThrowErrorName("Object.getOwnPropertyDescriptor(window.location, 'origin').get.call(frames[0].location)", "SecurityError");
shouldThrowErrorName("Object.getOwnPropertyDescriptor(window.location, 'ancestorOrigins').get.call(frames[0].location)", "SecurityError");
shouldThrowErrorName("Object.getOwnPropertyDescriptor(window.location, 'toString').value.call(frames[0].location)", "SecurityError");
shouldThrowErrorName("Object.getOwnPropertyDescriptor(window.location, 'href').get.call(frames[0].location)", "SecurityError");
shouldThrowErrorName("frames[0].location.protocol = 1", "SecurityError");
shouldThrowErrorName("frames[0].location.host = 1", "SecurityError");
shouldThrowErrorName("frames[0].location.hostname = 1", "SecurityError");
shouldThrowErrorName("frames[0].location.port = 1", "SecurityError");
shouldThrowErrorName("frames[0].location.pathname = 1", "SecurityError");
shouldThrowErrorName("frames[0].location.search = 1", "SecurityError");
shouldThrowErrorName("frames[0].location.hash = 1", "SecurityError");
shouldThrowErrorName("frames[0].location.origin = 1", "SecurityError");
shouldThrowErrorName("frames[0].location.ancestorOrigins = 1", "SecurityError");
shouldThrowErrorName("frames[0].location.toString = 1", "SecurityError");
shouldThrowErrorName("frames[0].location.reload = 1", "SecurityError");
shouldThrowErrorName("frames[0].location.replace = 1", "SecurityError");
shouldThrowErrorName("frames[0].location.assign = 1", "SecurityError");
shouldThrowErrorName("Object.getOwnPropertyDescriptor(window.location, 'protocol').set.call(frames[0].location, 1)", "SecurityError");
shouldThrowErrorName("Object.getOwnPropertyDescriptor(window.location, 'host').set.call(frames[0].location, 1)", "SecurityError");
shouldThrowErrorName("Object.getOwnPropertyDescriptor(window.location, 'hostname').set.call(frames[0].location, 1)", "SecurityError");
shouldThrowErrorName("Object.getOwnPropertyDescriptor(window.location, 'port').set.call(frames[0].location, 1)", "SecurityError");
shouldThrowErrorName("Object.getOwnPropertyDescriptor(window.location, 'pathname').set.call(frames[0].location, 1)", "SecurityError");
shouldThrowErrorName("Object.getOwnPropertyDescriptor(window.location, 'search').set.call(frames[0].location, 1)", "SecurityError");
shouldThrowErrorName("Object.getOwnPropertyDescriptor(window.location, 'hash').set.call(frames[0].location, 1)", "SecurityError");
shouldThrowErrorName("Object.defineProperty(frames[0].location, 'foo', { value: 1 })", "SecurityError");
// Setting 'href' cross origin should be allowed.
shouldNotThrow("frames[0].location.href = 'about:blank'");
handle = setInterval(function() {
try {
frames[0].location.href; // Should throw if still cross-origin.
shouldBeEqualToString("frames[0].location.href", "about:blank");
clearInterval(handle);
finishJSTest();
} catch (e) { }
}, 5);
};
</script>
<script src="../../../resources/js-test-post.js"></script>
</body>
</html>