< prev index next >
modules/web/src/main/java/com/sun/webkit/Disposer.java
Print this page
rev 9728 : 8139317: [Mac] SecurityException when constructing WebView from JFXPanel application
Reviewed-by:
@@ -30,10 +30,11 @@
package com.sun.webkit;
import java.lang.ref.ReferenceQueue;
import java.lang.ref.WeakReference;
+import java.security.PrivilegedAction;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
import java.util.concurrent.LinkedBlockingQueue;
@@ -56,14 +57,27 @@
private static final Disposer disposerInstance = new Disposer();
private static final Set<WeakDisposerRecord> records =
new HashSet<WeakDisposerRecord>();
static {
- Thread t = new Thread(disposerInstance, "Disposer");
+ java.security.AccessController.doPrivileged((PrivilegedAction<Void>) () -> {
+ /*
+ * The thread must be a member of a thread group
+ * which will not get GCed before VM exit.
+ * Make its parent the top-level thread group.
+ */
+ ThreadGroup tg = Thread.currentThread().getThreadGroup();
+ for (ThreadGroup tgn = tg;
+ tgn != null;
+ tg = tgn, tgn = tg.getParent());
+
+ Thread t = new Thread(tg, disposerInstance, "Disposer");
t.setDaemon(true);
t.setPriority(Thread.MAX_PRIORITY);
t.start();
+ return null;
+ });
}
/**
* Registers the object and the native data for later disposal.
* @param target Object to be registered
< prev index next >