| <!doctype html> |
| <meta charset=utf-8> |
| <title>Named access with shadowing properties</title> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <div id=log></div> |
| <script> |
| test(function() { |
| var name = "named1"; |
| window[name] = "shadowing"; |
| var element = document.createElement("span"); |
| element.id = name; |
| document.body.appendChild(element); |
| |
| assert_equals(window[name], "shadowing"); |
| assert_equals(Object.getOwnPropertyDescriptor(window, name).value, "shadowing"); |
| |
| assert_equals(Window.prototype[name], element); |
| assert_equals(Object.getOwnPropertyDescriptor(Window.prototype, name), undefined); |
| |
| var npo = Object.getPrototypeOf(Window.prototype); |
| assert_equals(npo[name], element); |
| assert_equals(Object.getOwnPropertyDescriptor(npo, name).value, element); |
| |
| assert_equals(EventTarget.prototype[name], undefined); |
| assert_equals(Object.getOwnPropertyDescriptor(EventTarget.prototype, name), undefined); |
| }, "Property on window."); |
| |
| test(function() { |
| var name = "named2"; |
| Window.prototype[name] = "shadowing"; |
| var element = document.createElement("span"); |
| element.id = name; |
| document.body.appendChild(element); |
| |
| assert_equals(window[name], "shadowing"); |
| assert_equals(Object.getOwnPropertyDescriptor(window, name), undefined); |
| |
| assert_equals(Window.prototype[name], "shadowing"); |
| assert_equals(Object.getOwnPropertyDescriptor(Window.prototype, name).value, "shadowing"); |
| |
| var npo = Object.getPrototypeOf(Window.prototype); |
| assert_equals(npo[name], element); |
| assert_equals(Object.getOwnPropertyDescriptor(npo, name).value, element); |
| |
| assert_equals(EventTarget.prototype[name], undefined); |
| assert_equals(Object.getOwnPropertyDescriptor(EventTarget.prototype, name), undefined); |
| }, "Property on Window.prototype."); |
| |
| test(function() { |
| var name = "named3"; |
| EventTarget.prototype[name] = "shadowing"; |
| var element = document.createElement("span"); |
| element.id = name; |
| document.body.appendChild(element); |
| |
| assert_equals(window[name], "shadowing"); |
| assert_equals(Object.getOwnPropertyDescriptor(window, name), undefined); |
| |
| assert_equals(Window.prototype[name], "shadowing"); |
| assert_equals(Object.getOwnPropertyDescriptor(Window.prototype, name), undefined); |
| |
| var npo = Object.getPrototypeOf(Window.prototype); |
| assert_equals(npo[name], "shadowing"); |
| assert_equals(Object.getOwnPropertyDescriptor(npo, name), undefined); |
| |
| assert_equals(EventTarget.prototype[name], "shadowing"); |
| assert_equals(Object.getOwnPropertyDescriptor(EventTarget.prototype, name).value, "shadowing"); |
| }, "Property on EventTarget.prototype."); |
| |
| test(function() { |
| var name = "named4"; |
| Object.prototype[name] = "shadowing"; |
| var element = document.createElement("span"); |
| element.id = name; |
| document.body.appendChild(element); |
| |
| assert_equals(window[name], "shadowing"); |
| assert_equals(Object.getOwnPropertyDescriptor(window, name), undefined); |
| |
| assert_equals(Window.prototype[name], "shadowing"); |
| assert_equals(Object.getOwnPropertyDescriptor(Window.prototype, name), undefined); |
| |
| var npo = Object.getPrototypeOf(Window.prototype); |
| assert_equals(npo[name], "shadowing"); |
| assert_equals(Object.getOwnPropertyDescriptor(npo, name), undefined); |
| |
| assert_equals(EventTarget.prototype[name], "shadowing"); |
| assert_equals(Object.getOwnPropertyDescriptor(EventTarget.prototype, name), undefined); |
| |
| assert_equals(Object.prototype[name], "shadowing"); |
| assert_equals(Object.getOwnPropertyDescriptor(Object.prototype, name).value, "shadowing"); |
| }, "Property on Object.prototype."); |
| </script> |