src/share/classes/java/awt/Window.java
Print this page
@@ -193,14 +193,13 @@
}
/**
* This represents the warning message that is
* to be displayed in a non secure window. ie :
- * a window that has a security manager installed for
- * which calling SecurityManager.checkTopLevelWindow()
- * is false. This message can be displayed anywhere in
- * the window.
+ * a window that has a security manager installed that denies
+ * {@code AWTPermission("showWindowWithoutWarningBanner")}.
+ * This message can be displayed anywhere in the window.
*
* @serial
* @see #getWarningString
*/
String warningString;
@@ -415,26 +414,24 @@
/**
* Constructs a new, initially invisible window in default size with the
* specified {@code GraphicsConfiguration}.
* <p>
- * If there is a security manager, this method first calls
- * the security manager's {@code checkTopLevelWindow}
- * method with {@code this}
- * as its argument to determine whether or not the window
- * must be displayed with a warning banner.
+ * If there is a security manager, then it is invoked to check
+ * {@code AWTPermission("showWindowWithoutWarningBanner")}
+ * to determine whether or not the window must be displayed with
+ * a warning banner.
*
* @param gc the {@code GraphicsConfiguration} of the target screen
* device. If {@code gc} is {@code null}, the system default
* {@code GraphicsConfiguration} is assumed
* @exception IllegalArgumentException if {@code gc}
* is not from a screen device
* @exception HeadlessException when
* {@code GraphicsEnvironment.isHeadless()} returns {@code true}
*
* @see java.awt.GraphicsEnvironment#isHeadless
- * @see java.lang.SecurityManager#checkTopLevelWindow
*/
Window(GraphicsConfiguration gc) {
init(gc);
}
@@ -509,29 +506,20 @@
SunToolkit.checkAndSetPolicy(this);
}
/**
* Constructs a new, initially invisible window in the default size.
- *
- * <p>First, if there is a security manager, its
- * {@code checkTopLevelWindow}
- * method is called with {@code this}
- * as its argument
- * to see if it's ok to display the window without a warning banner.
- * If the default implementation of {@code checkTopLevelWindow}
- * is used (that is, that method is not overriden), then this results in
- * a call to the security manager's {@code checkPermission} method
- * with an {@code AWTPermission("showWindowWithoutWarningBanner")}
- * permission. It that method raises a SecurityException,
- * {@code checkTopLevelWindow} returns false, otherwise it
- * returns true. If it returns false, a warning banner is created.
+ * <p>
+ * If there is a security manager set, it is invoked to check
+ * {@code AWTPermission("showWindowWithoutWarningBanner")}.
+ * If that check fails with a {@code SecurityException} then a warning
+ * banner is created.
*
* @exception HeadlessException when
* {@code GraphicsEnvironment.isHeadless()} returns {@code true}
*
* @see java.awt.GraphicsEnvironment#isHeadless
- * @see java.lang.SecurityManager#checkTopLevelWindow
*/
Window() throws HeadlessException {
GraphicsEnvironment.checkHeadless();
init((GraphicsConfiguration)null);
}
@@ -539,25 +527,23 @@
/**
* Constructs a new, initially invisible window with the specified
* {@code Frame} as its owner. The window will not be focusable
* unless its owner is showing on the screen.
* <p>
- * If there is a security manager, this method first calls
- * the security manager's {@code checkTopLevelWindow}
- * method with {@code this}
- * as its argument to determine whether or not the window
- * must be displayed with a warning banner.
+ * If there is a security manager set, it is invoked to check
+ * {@code AWTPermission("showWindowWithoutWarningBanner")}.
+ * If that check fails with a {@code SecurityException} then a warning
+ * banner is created.
*
* @param owner the {@code Frame} to act as owner or {@code null}
* if this window has no owner
* @exception IllegalArgumentException if the {@code owner}'s
* {@code GraphicsConfiguration} is not from a screen device
* @exception HeadlessException when
* {@code GraphicsEnvironment.isHeadless} returns {@code true}
*
* @see java.awt.GraphicsEnvironment#isHeadless
- * @see java.lang.SecurityManager#checkTopLevelWindow
* @see #isShowing
*/
public Window(Frame owner) {
this(owner == null ? (GraphicsConfiguration)null :
owner.getGraphicsConfiguration());
@@ -568,26 +554,24 @@
* Constructs a new, initially invisible window with the specified
* {@code Window} as its owner. This window will not be focusable
* unless its nearest owning {@code Frame} or {@code Dialog}
* is showing on the screen.
* <p>
- * If there is a security manager, this method first calls
- * the security manager's {@code checkTopLevelWindow}
- * method with {@code this}
- * as its argument to determine whether or not the window
- * must be displayed with a warning banner.
+ * If there is a security manager set, it is invoked to check
+ * {@code AWTPermission("showWindowWithoutWarningBanner")}.
+ * If that check fails with a {@code SecurityException} then a
+ * warning banner is created.
*
* @param owner the {@code Window} to act as owner or
* {@code null} if this window has no owner
* @exception IllegalArgumentException if the {@code owner}'s
* {@code GraphicsConfiguration} is not from a screen device
* @exception HeadlessException when
* {@code GraphicsEnvironment.isHeadless()} returns
* {@code true}
*
* @see java.awt.GraphicsEnvironment#isHeadless
- * @see java.lang.SecurityManager#checkTopLevelWindow
* @see #isShowing
*
* @since 1.2
*/
public Window(Window owner) {
@@ -601,15 +585,14 @@
* {@code Window} and a {@code GraphicsConfiguration}
* of a screen device. The Window will not be focusable unless
* its nearest owning {@code Frame} or {@code Dialog}
* is showing on the screen.
* <p>
- * If there is a security manager, this method first calls
- * the security manager's {@code checkTopLevelWindow}
- * method with {@code this}
- * as its argument to determine whether or not the window
- * must be displayed with a warning banner.
+ * If there is a security manager set, it is invoked to check
+ * {@code AWTPermission("showWindowWithoutWarningBanner")}. If that
+ * check fails with a {@code SecurityException} then a warning banner
+ * is created.
*
* @param owner the window to act as owner or {@code null}
* if this window has no owner
* @param gc the {@code GraphicsConfiguration} of the target
* screen device; if {@code gc} is {@code null},
@@ -619,11 +602,10 @@
* @exception HeadlessException when
* {@code GraphicsEnvironment.isHeadless()} returns
* {@code true}
*
* @see java.awt.GraphicsEnvironment#isHeadless
- * @see java.lang.SecurityManager#checkTopLevelWindow
* @see GraphicsConfiguration#getBounds
* @see #isShowing
* @since 1.3
*/
public Window(Window owner, GraphicsConfiguration gc) {
@@ -1360,35 +1342,35 @@
/**
* Gets the warning string that is displayed with this window.
* If this window is insecure, the warning string is displayed
* somewhere in the visible area of the window. A window is
- * insecure if there is a security manager, and the security
- * manager's {@code checkTopLevelWindow} method returns
- * {@code false} when this window is passed to it as an
- * argument.
+ * insecure if there is a security manager and the security
+ * manager denies
+ * {@code AWTPermission("showWindowWithoutWarningBanner")}.
* <p>
* If the window is secure, then {@code getWarningString}
* returns {@code null}. If the window is insecure, this
* method checks for the system property
* {@code awt.appletWarning}
* and returns the string value of that property.
* @return the warning string for this window.
- * @see java.lang.SecurityManager#checkTopLevelWindow(java.lang.Object)
*/
public final String getWarningString() {
return warningString;
}
private void setWarningString() {
warningString = null;
SecurityManager sm = System.getSecurityManager();
if (sm != null) {
- if (!sm.checkTopLevelWindow(this)) {
+ try {
+ sm.checkPermission(SecurityConstants.AWT.TOPLEVEL_WINDOW_PERMISSION);
+ } catch (SecurityException se) {
// make sure the privileged action is only
// for getting the property! We don't want the
- // above checkTopLevelWindow call to always succeed!
+ // above checkPermission call to always succeed!
warningString = AccessController.doPrivileged(
new GetPropertyAction("awt.appletWarning",
"Java Applet Window"));
}
}