| OLD | NEW |
| (Empty) |
| 1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> | |
| 2 <html> | |
| 3 <head> | |
| 4 <script src="../../../resources/js-test.js"></script> | |
| 5 </head> | |
| 6 <body> | |
| 7 <script> | |
| 8 description("Tests that accessing Attr after its Element has been destroyed work
s without crashing."); | |
| 9 | |
| 10 jsTestIsAsync = true; | |
| 11 | |
| 12 var element = document.createElement("p"); | |
| 13 element.setAttribute("a", "b"); | |
| 14 var attributes = element.attributes; | |
| 15 element = null; | |
| 16 var attr = null; | |
| 17 | |
| 18 asyncGC(function() { | |
| 19 shouldBe("attributes.length", "1"); | |
| 20 shouldBe("attributes[0]", "attributes.item(0)"); | |
| 21 shouldBe("attributes.getNamedItem('a')", "attributes.item(0)"); | |
| 22 | |
| 23 shouldBe("attributes.item(0).name", "'a'"); | |
| 24 shouldBe("attributes.item(0).value", "'b'"); | |
| 25 shouldBe("attributes.item(0).ownerElement.tagName", "'P'"); | |
| 26 | |
| 27 attributes.item(0).value = 'c'; | |
| 28 | |
| 29 shouldBe("attributes.item(0).value", "'c'"); | |
| 30 | |
| 31 attributes.removeNamedItem('a'); | |
| 32 | |
| 33 shouldBe("attributes.length", "0"); | |
| 34 | |
| 35 element = document.createElement("p"); | |
| 36 element.setAttribute("a", "b"); | |
| 37 attr = element.attributes.item(0); | |
| 38 element = null; | |
| 39 | |
| 40 asyncGC(function() { | |
| 41 | |
| 42 shouldBe("attr.name", "'a'"); | |
| 43 shouldBe("attr.value", "'b'"); | |
| 44 shouldBe("attr.ownerElement.tagName", "'P'"); | |
| 45 | |
| 46 attr.value = 'c'; | |
| 47 | |
| 48 shouldBe("attr.value", "'c'"); | |
| 49 | |
| 50 finishJSTest(); | |
| 51 }); | |
| 52 }); | |
| 53 </script> | |
| 54 </body> | |
| 55 </html> | |
| OLD | NEW |