| <!DOCTYPE html> |
| <html> |
| <head> |
| <link rel="help" href="https://html.spec.whatwg.org/#crossoriginproperties-(-o-)"> |
| <link rel="help" href="https://html.spec.whatwg.org/#crossorigingetownpropertyhelper-(-o,-p-)"> |
| <script src="/js-test-resources/js-test-pre.js"></script> |
| </head> |
| <body> |
| <iframe src="http://localhost:8000/security/resources/iframe-with-element.html"></iframe> |
| <script> |
| description("Test the descriptors returns by Object.getOwnPropertyDescriptor() cross origin."); |
| jsTestIsAsync = true; |
| |
| function testDescriptor(object, propertyName, shouldHaveGetter, shouldHaveSetter) |
| { |
| descriptor = Object.getOwnPropertyDescriptor(object, propertyName); |
| if (shouldHaveGetter || shouldHaveSetter) { |
| if (shouldHaveGetter) |
| shouldBeType("descriptor.get", "Function"); |
| else |
| shouldBeUndefined("descriptor.get"); |
| if (shouldHaveSetter) |
| shouldBeType("descriptor.set", "Function"); |
| else |
| shouldBeUndefined("descriptor.set"); |
| } else { |
| shouldBeType("descriptor.value", "Function"); |
| shouldBeFalse("descriptor.writable"); |
| } |
| shouldBeFalse("descriptor.enumerable"); |
| shouldBeTrue("descriptor.configurable"); |
| } |
| |
| onload = function() { |
| var crossOriginLocationProperties = [ |
| ["href", false, true], |
| ["replace", false, false], |
| ]; |
| for (var property of crossOriginLocationProperties) { |
| debug("* Location." + property[0]); |
| testDescriptor(frames[0].location, property[0], property[1], property[2]); |
| } |
| |
| debug(""); |
| |
| var crossOriginWindowProperties = [ |
| ["window", true, false], |
| ["self", true, false], |
| ["location", true, true], |
| ["close", false, false], |
| ["closed", true, false], |
| ["focus", false, false], |
| ["blur", false, false], |
| ["frames", true, false], |
| ["length", true, false], |
| ["top", true, false], |
| ["opener", true, false], |
| ["parent", true, false], |
| ["postMessage", false, false] |
| ]; |
| for (var property of crossOriginWindowProperties) { |
| debug("* Window." + property[0]); |
| testDescriptor(frames[0], property[0], property[1], property[2]); |
| } |
| |
| debug(""); |
| finishJSTest(); |
| }; |
| </script> |
| <script src="/js-test-resources/js-test-post.js"></script> |
| </body> |
| </html> |