src/share/classes/sun/security/util/SecurityConstants.java
Print this page
@@ -23,16 +23,16 @@
* have any questions.
*/
package sun.security.util;
-import java.io.FilePermission;
-import java.awt.AWTPermission;
-import java.util.PropertyPermission;
-import java.lang.RuntimePermission;
import java.net.SocketPermission;
import java.net.NetPermission;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.security.Permission;
+import java.security.BasicPermission;
import java.security.SecurityPermission;
import java.security.AllPermission;
import javax.security.auth.AuthPermission;
/**
@@ -69,49 +69,121 @@
// java.lang.Class, java.lang.SecurityManager, java.lang.System,
// java.net.URLConnection, java.security.AllPermission, java.security.Policy,
// sun.security.provider.PolicyFile
public static final AllPermission ALL_PERMISSION = new AllPermission();
- // java.lang.SecurityManager
- public static final AWTPermission TOPLEVEL_WINDOW_PERMISSION =
- new AWTPermission("showWindowWithoutWarningBanner");
+ /**
+ * Permission type used when AWT is not present.
+ */
+ private static class FakeAWTPermission extends BasicPermission {
+ private static final long serialVersionUID = -1L;
+ public FakeAWTPermission(String name) {
+ super(name);
+ }
+ public String toString() {
+ return "(\"java.awt.AWTPermission\" \"" + getName() + "\")";
+ }
+ }
+ /**
+ * Permission factory used when AWT is not present.
+ */
+ private static class FakeAWTPermissionFactory
+ implements PermissionFactory<FakeAWTPermission>
+ {
+ @Override
+ public FakeAWTPermission newPermission(String name) {
+ return new FakeAWTPermission(name);
+ }
+ }
+
+ /**
+ * AWT Permissions used in the JDK.
+ */
+ public static class AWT {
+ private AWT() { }
+
+ /**
+ * The class name of the factory to create java.awt.AWTPermission objects.
+ */
+ private static final String AWTFactory = "sun.awt.AWTPermissionFactory";
+
+ /**
+ * The PermissionFactory to create AWT permissions (or fake permissions
+ * if AWT is not present).
+ */
+ private static final PermissionFactory<?> factory = permissionFactory();
+
+ private static PermissionFactory<?> permissionFactory() {
+ Class<?> c = AccessController
+ .doPrivileged(new PrivilegedAction<Class<?>>() {
+ public Class<?> run() {
+ try {
+ return Class.forName(AWTFactory, true, null);
+ } catch (ClassNotFoundException e) {
+ // not available
+ return null;
+ }
+ }});
+ if (c != null) {
+ // AWT present
+ try {
+ return (PermissionFactory<?>)c.newInstance();
+ } catch (InstantiationException x) {
+ throw new InternalError(x.getMessage());
+ } catch (IllegalAccessException x) {
+ throw new InternalError(x.getMessage());
+ }
+ } else {
+ // AWT not present
+ return new FakeAWTPermissionFactory();
+ }
+ }
+
+ private static Permission newAWTPermission(String name) {
+ return factory.newPermission(name);
+ }
+
// java.lang.SecurityManager
- public static final AWTPermission ACCESS_CLIPBOARD_PERMISSION =
- new AWTPermission("accessClipboard");
+ public static final Permission TOPLEVEL_WINDOW_PERMISSION =
+ newAWTPermission("showWindowWithoutWarningBanner");
+ // java.lang.SecurityManager
+ public static final Permission ACCESS_CLIPBOARD_PERMISSION =
+ newAWTPermission("accessClipboard");
// java.lang.SecurityManager
- public static final AWTPermission CHECK_AWT_EVENTQUEUE_PERMISSION =
- new AWTPermission("accessEventQueue");
+ public static final Permission CHECK_AWT_EVENTQUEUE_PERMISSION =
+ newAWTPermission("accessEventQueue");
// java.awt.Dialog
- public static final AWTPermission TOOLKIT_MODALITY_PERMISSION =
- new AWTPermission("toolkitModality");
+ public static final Permission TOOLKIT_MODALITY_PERMISSION =
+ newAWTPermission("toolkitModality");
// java.awt.Robot
- public static final AWTPermission READ_DISPLAY_PIXELS_PERMISSION =
- new AWTPermission("readDisplayPixels");
+ public static final Permission READ_DISPLAY_PIXELS_PERMISSION =
+ newAWTPermission("readDisplayPixels");
// java.awt.Robot
- public static final AWTPermission CREATE_ROBOT_PERMISSION =
- new AWTPermission("createRobot");
+ public static final Permission CREATE_ROBOT_PERMISSION =
+ newAWTPermission("createRobot");
// java.awt.MouseInfo
- public static final AWTPermission WATCH_MOUSE_PERMISSION =
- new AWTPermission("watchMousePointer");
+ public static final Permission WATCH_MOUSE_PERMISSION =
+ newAWTPermission("watchMousePointer");
// java.awt.Window
- public static final AWTPermission SET_WINDOW_ALWAYS_ON_TOP_PERMISSION =
- new AWTPermission("setWindowAlwaysOnTop");
+ public static final Permission SET_WINDOW_ALWAYS_ON_TOP_PERMISSION =
+ newAWTPermission("setWindowAlwaysOnTop");
// java.awt.Toolkit
- public static final AWTPermission ALL_AWT_EVENTS_PERMISSION =
- new AWTPermission("listenToAllAWTEvents");
+ public static final Permission ALL_AWT_EVENTS_PERMISSION =
+ newAWTPermission("listenToAllAWTEvents");
// java.awt.SystemTray
- public static final AWTPermission ACCESS_SYSTEM_TRAY_PERMISSION =
- new AWTPermission("accessSystemTray");
+ public static final Permission ACCESS_SYSTEM_TRAY_PERMISSION =
+ newAWTPermission("accessSystemTray");
+ }
// java.net.URL
public static final NetPermission SPECIFY_HANDLER_PERMISSION =
new NetPermission("specifyStreamHandler");