Test the descriptors returns by Object.getOwnPropertyDescriptor() cross origin.

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


* Location.href
PASS descriptor.get is undefined.
PASS descriptor.set is an instance of Function
PASS descriptor.enumerable is false
PASS descriptor.configurable is true
* Location.replace
PASS descriptor.value is an instance of Function
PASS descriptor.writable is false
PASS descriptor.enumerable is false
PASS descriptor.configurable is true

* Window.window
PASS descriptor.get is an instance of Function
PASS descriptor.set is undefined.
PASS descriptor.enumerable is false
PASS descriptor.configurable is true
* Window.self
PASS descriptor.get is an instance of Function
PASS descriptor.set is undefined.
PASS descriptor.enumerable is false
PASS descriptor.configurable is true
* Window.location
PASS descriptor.get is an instance of Function
PASS descriptor.set is an instance of Function
PASS descriptor.enumerable is false
PASS descriptor.configurable is true
* Window.close
PASS descriptor.value is an instance of Function
PASS descriptor.writable is false
PASS descriptor.enumerable is false
PASS descriptor.configurable is true
* Window.closed
PASS descriptor.get is an instance of Function
PASS descriptor.set is undefined.
PASS descriptor.enumerable is false
PASS descriptor.configurable is true
* Window.focus
PASS descriptor.value is an instance of Function
PASS descriptor.writable is false
PASS descriptor.enumerable is false
PASS descriptor.configurable is true
* Window.blur
PASS descriptor.value is an instance of Function
PASS descriptor.writable is false
PASS descriptor.enumerable is false
PASS descriptor.configurable is true
* Window.frames
PASS descriptor.get is an instance of Function
PASS descriptor.set is undefined.
PASS descriptor.enumerable is false
PASS descriptor.configurable is true
* Window.length
PASS descriptor.get is an instance of Function
PASS descriptor.set is undefined.
PASS descriptor.enumerable is false
PASS descriptor.configurable is true
* Window.top
PASS descriptor.get is an instance of Function
PASS descriptor.set is undefined.
PASS descriptor.enumerable is false
PASS descriptor.configurable is true
* Window.opener
PASS descriptor.get is an instance of Function
PASS descriptor.set is undefined.
PASS descriptor.enumerable is false
PASS descriptor.configurable is true
* Window.parent
PASS descriptor.get is an instance of Function
PASS descriptor.set is undefined.
PASS descriptor.enumerable is false
PASS descriptor.configurable is true
* Window.postMessage
PASS descriptor.value is an instance of Function
PASS descriptor.writable is false
PASS descriptor.enumerable is false
PASS descriptor.configurable is true

PASS successfullyParsed is true

TEST COMPLETE

