71 lines
1.4 KiB
HTML
71 lines
1.4 KiB
HTML
<p>Tests that custom prototypes on DOM objects persist after garbage collection.</p>
|
|
<pre id="console"></pre>
|
|
|
|
<p id="p"></p>
|
|
|
|
<script>
|
|
function $(id)
|
|
{
|
|
return document.getElementById(id);
|
|
}
|
|
|
|
function log(s)
|
|
{
|
|
$("console").appendChild(document.createTextNode(s + "\n"));
|
|
}
|
|
|
|
function shouldBe(aDescription, a, b)
|
|
{
|
|
if (a != b) {
|
|
log("FAIL: " + aDescription + " should be " + b + " but instead is " + a + ".");
|
|
return;
|
|
}
|
|
|
|
log("PASS: " + aDescription + " should be " + b + " and is.");
|
|
}
|
|
|
|
function gc()
|
|
{
|
|
if (window.GCController) {
|
|
GCController.collect();
|
|
return;
|
|
}
|
|
|
|
for (var i = 0; i < 10000; ++i)
|
|
new Object;
|
|
}
|
|
|
|
function shouldBeNull(aDescription, a)
|
|
{
|
|
if (a == null) {
|
|
log("PASS: " + aDescription + " should be null and is.");
|
|
return;
|
|
}
|
|
|
|
log("FAIL: " + aDescription + " should be null but instead is " + a + ".");
|
|
}
|
|
|
|
function shouldBeNonNull(aDescription, a)
|
|
{
|
|
if (a != null) {
|
|
log("PASS: " + aDescription + " should be null and is.");
|
|
return;
|
|
}
|
|
|
|
log("FAIL: " + aDescription + " should be null but instead is " + a + ".");
|
|
}
|
|
|
|
(function () {
|
|
if (window.testRunner)
|
|
testRunner.dumpAsText();
|
|
|
|
shouldBeNonNull("$('p').__proto__", $('p').__proto__);
|
|
$('p').__proto__ = null;
|
|
shouldBeNull("$('p').__proto__", $('p').__proto__);
|
|
|
|
gc();
|
|
|
|
shouldBeNull("$('p').__proto__", $('p').__proto__);
|
|
})();
|
|
</script>
|