Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(64)

Unified Diff: third_party/WebKit/LayoutTests/plugins/refcount-leaks.html

Issue 1840963002: Port refcount-leaks to PPAPI (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: add comment Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/LayoutTests/plugins/refcount-leaks.html
diff --git a/third_party/WebKit/LayoutTests/plugins/refcount-leaks.html b/third_party/WebKit/LayoutTests/plugins/refcount-leaks.html
index 0980fe1b275022a35f3739c7ced425f67bdc1bb6..f7a0daa20123abf27fa7af4dabfe1f638a23e624 100644
--- a/third_party/WebKit/LayoutTests/plugins/refcount-leaks.html
+++ b/third_party/WebKit/LayoutTests/plugins/refcount-leaks.html
@@ -7,24 +7,13 @@
window.GCController.collectAll();
}
}
+ var countOrig;
+ var countAfterCreate;
+ var countAfterGC;
- function runtest() {
- if (window.testRunner)
- testRunner.dumpAsText();
-
-
- var output = document.getElementById("output");
- output.innerHTML = "";
-
- // Test that objects are deleted after their JS references are released.
- var countOrig = plug.testObjectCount;
- o1 = plug.testCreateTestObject();
- o2 = plug.testCreateTestObject();
- o3 = plug.testCreateTestObject();
- var countAfterCreate = plug.testObjectCount;
- o1 = o2 = o3 = null;
+ function finishTest() {
doGC();
- var countAfterGC = plug.testObjectCount;
+ var countAfterGC2 = plug.testObjectCount;
output.innerHTML += "--- num test objects:<br>";
output.innerHTML += "countAfterCreate == countOrig + 3? "
@@ -33,35 +22,57 @@
output.innerHTML += "countOrig == countAfterGC? "
+ ((countOrig == countAfterGC) ? "PASS" : "FAIL")
+ "<br>";
+ output.innerHTML += "countOrig == countAfterGC2? "
+ + ((countOrig == countAfterGC2) ? "PASS" : "FAIL")
+ + "<br>";
output.innerHTML += "<br>";
- // Test that the object refcount returns to normal after JS references
- // are released.
- var testObj = plug.testObject;
- var refOrig = testObj.refCount;
- var o1 = plug.testObject;
- var o2 = plug.testObject;
- var o3 = plug.testObject;
- var refAfterGet = testObj.refCount;
- o1 = o2 = o3 = null;
+ var success = (countAfterGC == countOrig) && (countAfterGC2 == countOrig);
+ output.innerHTML += (success ? "SUCCESS" : "FAILURE");
+
+ if (window.testRunner)
+ testRunner.notifyDone();
+ }
+
+ function step2() {
doGC();
- var refAfterGetGC = testObj.refCount;
+ countAfterGC = plug.testObjectCount;
- // Test that calling NPN_Invoke with our object as a parameter returns
- // our refcount to normal (may require a GC).
+ var testObj = plug.testCreateTestObject();
+ // The following will refcount testObj by passing it to the plugin and again
+ // by the plugin calling noop, and we will verify in finishTest that the
+ // refcounts are properly released, by verifying the plugin object was
+ // properly deleted.
plug.testPassTestObject("noop", testObj);
plug.testPassTestObject("noop", testObj);
plug.testPassTestObject("noop", testObj);
+
doGC();
- var refAfterPass = testObj.refCount;
+ // PPAPI requires the main loop to run to fully release references. See
+ // PPB_Var_Deprecated_Proxy::OnMsgReleaseObject.
+ setTimeout(finishTest, 0);
+ }
- output.innerHTML += "--- refcount on plug.testObject:<br>";
- output.innerHTML += "originally: " + refOrig + "<br>";
- output.innerHTML += "after GC: " + refAfterGetGC + "<br>";
- output.innerHTML += "after passing: " + refAfterPass + "<br>";
+ function runtest() {
+ if (window.testRunner) {
+ testRunner.dumpAsText();
+ testRunner.waitUntilDone();
+ }
- var success = (countAfterGC == countOrig) && (refAfterPass == refOrig);
- output.innerHTML += (success ? "SUCCESS" : "FAILURE");
+ var output = document.getElementById("output");
+ output.innerHTML = "";
+
+ // Test that objects are deleted after their JS references are released.
+ countOrig = plug.testObjectCount;
+ o1 = plug.testCreateTestObject();
+ o2 = plug.testCreateTestObject();
+ o3 = plug.testCreateTestObject();
+ countAfterCreate = plug.testObjectCount;
+ o1 = o2 = o3 = null;
+ doGC();
+ // PPAPI requires the main loop to run to fully release references. See
+ // PPB_Var_Deprecated_Proxy::OnMsgReleaseObject.
+ setTimeout(step2, 0);
}
</script>
@@ -72,7 +83,7 @@ an NPAPI Object.<P>
Prints "SUCCESS" on success, "FAILURE" on failure.
-<embed name="plug" type="application/x-webkit-test-netscape">
+<embed name="plug" type="application/x-blink-deprecated-test-plugin">
<div id=output>FAILURE</div>
« no previous file with comments | « ppapi/tests/blink_deprecated_test_plugin.cc ('k') | third_party/WebKit/LayoutTests/plugins/refcount-leaks-expected.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698