| <!DOCTYPE html> |
| <html> |
| <head> |
| <script src="../../resources/js-test-pre.js"></script> |
| </head> |
| <body onload="runTest()"> |
| <iframe src="http://localhost:8000/security/resources/blank.html"></iframe> |
| <script> |
| description("Tests that using another window's property getter does not bypass cross-origin checks."); |
| jsTestIsAsync = true; |
| |
| function shouldThrowOrReturnUndefined(expression) |
| { |
| try { |
| result = eval(expression); |
| } catch (e) { |
| testPassed(expression + " threw exception " + e + "."); |
| return; |
| } |
| if (result === undefined) |
| testPassed(expression + " returned undefined."); |
| else |
| testFailed(expression + " returned " + result); |
| } |
| |
| function runTest() |
| { |
| crossOriginWindow = frames[0]; |
| shouldThrowOrReturnUndefined('Object.getOwnPropertyDescriptor(window, "document").get.call(crossOriginWindow)'); |
| shouldThrowOrReturnUndefined('Object.getOwnPropertyDescriptor(window, "name").get.call(crossOriginWindow)'); |
| shouldThrowOrReturnUndefined('Object.getOwnPropertyDescriptor(window, "menubar").get.call(crossOriginWindow)'); |
| shouldThrowOrReturnUndefined('Object.getOwnPropertyDescriptor(window, "scrollbars").get.call(crossOriginWindow)'); |
| shouldThrowOrReturnUndefined('Object.getOwnPropertyDescriptor(window, "navigator").get.call(crossOriginWindow)'); |
| shouldThrowOrReturnUndefined('Object.getOwnPropertyDescriptor(window, "screenX").get.call(crossOriginWindow)'); |
| shouldThrowOrReturnUndefined('Object.getOwnPropertyDescriptor(window.__proto__, "constructor").get.call(crossOriginWindow)'); |
| shouldThrowOrReturnUndefined('Object.getOwnPropertyDescriptor(window.__proto__, "constructor").get.call(crossOriginWindow.__proto__)'); |
| shouldThrowOrReturnUndefined('crossOriginWindow.constructor'); |
| shouldThrowOrReturnUndefined('Object.getOwnPropertyDescriptor(crossOriginWindow.__proto__, "constructor").value'); |
| shouldBeTrue('Object.getOwnPropertyDescriptor(window, "location").get.call(crossOriginWindow) === crossOriginWindow.location'); |
| finishJSTest(); |
| } |
| </script> |
| </body> |
| <script src="../../resources/js-test-post.js"></script> |
| </html> |