You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by jt...@apache.org on 2017/09/08 21:06:16 UTC
[08/28] incubator-netbeans-html4j git commit: Test to verify that
keepAlive=true objects are really kept in memory
Test to verify that keepAlive=true objects are really kept in memory
Project: http://git-wip-us.apache.org/repos/asf/incubator-netbeans-html4j/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-netbeans-html4j/commit/323e9ba0
Tree: http://git-wip-us.apache.org/repos/asf/incubator-netbeans-html4j/tree/323e9ba0
Diff: http://git-wip-us.apache.org/repos/asf/incubator-netbeans-html4j/diff/323e9ba0
Branch: refs/heads/master
Commit: 323e9ba0782e85637a7e962531d7d49ca4010803
Parents: c3034c1
Author: Jaroslav Tulach <jt...@netbeans.org>
Authored: Fri Jan 13 19:38:45 2017 +0100
Committer: Jaroslav Tulach <ja...@apidesign.org>
Committed: Fri Sep 8 17:13:55 2017 +0200
----------------------------------------------------------------------
.../java/net/java/html/js/tests/Bodies.java | 12 ++++++++++++
.../java/net/java/html/js/tests/GCBodyTest.java | 20 ++++++++++++++++++++
2 files changed, 32 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-netbeans-html4j/blob/323e9ba0/json-tck/src/main/java/net/java/html/js/tests/Bodies.java
----------------------------------------------------------------------
diff --git a/json-tck/src/main/java/net/java/html/js/tests/Bodies.java b/json-tck/src/main/java/net/java/html/js/tests/Bodies.java
index 029a3a2..122f9f7 100644
--- a/json-tck/src/main/java/net/java/html/js/tests/Bodies.java
+++ b/json-tck/src/main/java/net/java/html/js/tests/Bodies.java
@@ -92,6 +92,18 @@ final class Bodies {
"return c.@net.java.html.js.tests.Sum::sum(II)(a, b);"
)
public static native int sumIndirect(Sum c, int a, int b);
+
+ @JavaScriptBody(args = { "c" }, javacall = true, body =
+ "return {\n" +
+ " 'sum' : function(a,b) {\n" +
+ " return c.@net.java.html.js.tests.Sum::sum(II)(a, b);\n" +
+ " }\n" +
+ "};\n"
+ )
+ public static native Object sumDelayed(Sum c);
+
+ @JavaScriptBody(args = { "sum", "a", "b" }, body = "return sum.sum(a, b);")
+ public static native int sumNow(Object sum, int a, int b);
@JavaScriptBody(args = { "arr", "index" }, body = "return arr[index];")
public static native Object select(Object[] arr, int index);
http://git-wip-us.apache.org/repos/asf/incubator-netbeans-html4j/blob/323e9ba0/json-tck/src/main/java/net/java/html/js/tests/GCBodyTest.java
----------------------------------------------------------------------
diff --git a/json-tck/src/main/java/net/java/html/js/tests/GCBodyTest.java b/json-tck/src/main/java/net/java/html/js/tests/GCBodyTest.java
index 46d0775..5baa865 100644
--- a/json-tck/src/main/java/net/java/html/js/tests/GCBodyTest.java
+++ b/json-tck/src/main/java/net/java/html/js/tests/GCBodyTest.java
@@ -67,6 +67,26 @@ public class GCBodyTest {
s = null;
assertGC(ref, "Can disappear!");
}
+
+ @KOTest public void callbackInterfaceShallNotDisappear() throws InterruptedException {
+ Sum sum = new Sum();
+ Object jsSum = Bodies.sumDelayed(sum);
+ Reference<?> ref = new WeakReference<Object>(sum);
+ sum = null;
+ IllegalStateException gcError = null;
+ try {
+ assertNotGC(ref, false, "object s should still stay");
+ } catch (IllegalStateException ex) {
+ gcError = ex;
+ }
+
+ int res = Bodies.sumNow(jsSum, 22, 20);
+ assertEquals(res, 42, "Expecting 42");
+ assertGC(ref, "Can disappear!");
+ if (gcError != null) {
+ throw gcError;
+ }
+ }
private Object assignInst() {
Object obj = Bodies.instance(0);