| <!DOCTYPE html> |
| <html> |
| <body> |
| <script src="../../resources/js-test-pre.js"></script> |
| <div id="testDiv"> |
| <p name="toString" id="toStringP"></p> |
| <p name="length" id="lengthP"></p> |
| <p name="foo" id="fooP"></p> |
| <p name="0" id="0P"></p> |
| </div> |
| <script> |
| description("Tests that the behavior of HTMLCollection's [[GetOwnProperty]] conforms to Web IDL"); |
| |
| var testDiv = document.getElementById("testDiv"); |
| var htmlCollection = testDiv.children; |
| |
| debug("* Named properties should not mask properties on the prototype"); |
| shouldBe("htmlCollection.namedItem('toString')", "document.getElementById('toStringP')"); |
| shouldBe("htmlCollection.toString", "HTMLCollection.prototype.toString"); |
| |
| debug(""); |
| debug("* Named properties should not mask static properties on HTMLCollection"); |
| shouldBe("htmlCollection.namedItem('length')", "document.getElementById('lengthP')"); |
| shouldBe("htmlCollection.length", "4"); |
| |
| debug(""); |
| debug("* Named properties should not mask own properties on HTMLCollection"); |
| evalAndLog("htmlCollection.foo = 'foo'"); |
| shouldBe("htmlCollection.namedItem('foo')", "document.getElementById('fooP')") |
| shouldBeEqualToString("htmlCollection.foo", "foo"); |
| |
| debug(""); |
| debug("* Named properties should not mask indexed properties"); |
| shouldBe("htmlCollection.item(0)", "testDiv.firstElementChild"); |
| shouldBe("htmlCollection[0]", "testDiv.firstElementChild"); |
| shouldBe("htmlCollection.namedItem('0')", "document.getElementById('0P')"); |
| shouldBe("htmlCollection['0']", "testDiv.firstElementChild"); |
| |
| debug(""); |
| debug("* Own properties on HTMLCollection should mask properties on prototype"); |
| evalAndLog("htmlCollection.toString = 'InstanceToString'"); |
| shouldBeEqualToString("htmlCollection.toString", "InstanceToString"); |
| |
| </script> |
| <script src="../../resources/js-test-post.js"></script> |
| </body> |
| </html> |