75 lines
1.9 KiB
HTML
75 lines
1.9 KiB
HTML
<head>
|
|
<script src="../resources/js-test-pre.js"></script>
|
|
</head>
|
|
|
|
<script>
|
|
function noop(x) {
|
|
}
|
|
|
|
function doGC() {
|
|
// GC twice to make sure everything is cleaned up.
|
|
for (var i = 0; i < 2; i++) {
|
|
gc();
|
|
}
|
|
}
|
|
|
|
var countOrig;
|
|
var countAfterCreate;
|
|
var countAfterGC;
|
|
var testObj;
|
|
var refOrig;
|
|
var refAfterGet;
|
|
var refAfterGetGC;
|
|
var refBeforePass;
|
|
var refAfterPass;
|
|
var refAfterPassAndGC;
|
|
|
|
function runtest() {
|
|
if (window.testRunner)
|
|
testRunner.dumpAsText();
|
|
|
|
// Test that objects are deleted after their JS references are released.
|
|
countOrig = plug.testObjectCount;
|
|
let x;
|
|
for (let i = 0; i < 50; ++i)
|
|
x = plug.testCreateTestObject();
|
|
countAfterCreate = plug.testObjectCount;
|
|
x = null;
|
|
doGC();
|
|
countAfterGC = plug.testObjectCount;
|
|
shouldBe('countAfterCreate === countOrig + 50', 'true');
|
|
shouldBe('countAfterGC < countAfterCreate', 'true');
|
|
|
|
// Test that the object refcount returns to normal after JS references
|
|
// are released.
|
|
testObj = plug.testObject;
|
|
refOrig = testObj.refCount;
|
|
for (let i = 0; i < 50; ++i)
|
|
plug.testObject;
|
|
refAfterGet = testObj.refCount;
|
|
doGC();
|
|
refAfterGetGC = testObj.refCount;
|
|
shouldBe('refAfterGet === refOrig + 50', 'true');
|
|
shouldBe('refAfterGetGC < refAfterGet', 'true');
|
|
|
|
// Test that calling NPN_Invoke with our object as a parameter returns
|
|
// our refcount to normal (may require a GC).
|
|
refBeforePass = testObj.refCount;
|
|
for (let i = 0; i < 50; ++i)
|
|
plug.testPassTestObject("noop", testObj);
|
|
refAfterPass = testObj.refCount;
|
|
doGC();
|
|
refAfterPassAndGC = testObj.refCount;
|
|
shouldBe('refAfterPass === refBeforePass + 50', 'true');
|
|
shouldBe('refAfterPassAndGC < refAfterPass', 'true');
|
|
}
|
|
</script>
|
|
|
|
<body onload="runtest()">
|
|
|
|
Test that we can get an NPObject returned through a method on
|
|
an NPAPI Object.<P>
|
|
|
|
<embed name="plug" type="application/x-webkit-test-netscape">
|
|
</body>
|