aboutsummaryrefslogtreecommitdiff
path: root/src/share/classes/sun/awt/AppContext.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/share/classes/sun/awt/AppContext.java')
-rw-r--r--src/share/classes/sun/awt/AppContext.java14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/share/classes/sun/awt/AppContext.java b/src/share/classes/sun/awt/AppContext.java
index 5959e54de..fbee5079c 100644
--- a/src/share/classes/sun/awt/AppContext.java
+++ b/src/share/classes/sun/awt/AppContext.java
@@ -331,6 +331,20 @@ public final class AppContext {
while (context == null) {
threadGroup = threadGroup.getParent();
if (threadGroup == null) {
+ // We've got up to the root thread group and did not find an AppContext
+ // Try to get it from the security manager
+ SecurityManager securityManager = System.getSecurityManager();
+ if (securityManager != null) {
+ ThreadGroup smThreadGroup = securityManager.getThreadGroup();
+ if (smThreadGroup != null) {
+ /*
+ * If we get this far then it's likely that
+ * the ThreadGroup does not actually belong
+ * to the applet, so do not cache it.
+ */
+ return threadGroup2appContext.get(smThreadGroup);
+ }
+ }
return null;
}
context = threadGroup2appContext.get(threadGroup);