diff -r 43fba26ba0c0 -r 8d29792a09c6 launcher/fx/src/main/java/org/apidesign/bck2brwsr/launcher/fximpl/JVMBridge.java --- a/launcher/fx/src/main/java/org/apidesign/bck2brwsr/launcher/fximpl/JVMBridge.java Wed Jun 26 20:27:06 2013 +0200 +++ b/launcher/fx/src/main/java/org/apidesign/bck2brwsr/launcher/fximpl/JVMBridge.java Thu Sep 12 14:15:47 2013 +0200 @@ -39,6 +39,7 @@ public final class JVMBridge { private final WebEngine engine; private final ClassLoader cl; + private final WebPresenter presenter; private static ClassLoader[] ldrs; private static ChangeListener onBck2BrwsrLoad; @@ -46,8 +47,8 @@ JVMBridge(WebEngine eng) { this.engine = eng; final ClassLoader p = JVMBridge.class.getClassLoader().getParent(); - WebClassLoader wcl = new WebClassLoader(); - this.cl = FnUtils.newLoader(wcl, wcl, p); + this.presenter = new WebPresenter(); + this.cl = FnUtils.newLoader(presenter, presenter, p); } public static void registerClassLoaders(ClassLoader[] loaders) { @@ -69,10 +70,11 @@ } public Class loadClass(String name) throws ClassNotFoundException { + FnUtils.currentPresenter(presenter); return Class.forName(name, true, cl); } - private final class WebClassLoader implements FindResources, Fn.Presenter { + private final class WebPresenter implements FindResources, Fn.Presenter { @Override public void findResources(String name, Collection results, boolean oneIsEnough) { if (ldrs != null) for (ClassLoader l : ldrs) { @@ -99,7 +101,7 @@ sb.append("})()"); JSObject x = (JSObject) engine.executeScript(sb.toString()); - return new JSFn(x); + return new JSFn(this, x); } @Override @@ -125,10 +127,11 @@ private static final class JSFn extends Fn { private final JSObject fn; - public JSFn(JSObject fn) { + private JSFn(WebPresenter cl, JSObject fn) { + super(cl); this.fn = fn; } - + @Override public Object invoke(Object thiz, Object... args) throws Exception { try {