--- old/src/java.base/share/lib/security/default.policy 2018-09-12 18:02:09.000000000 -0700 +++ new/src/java.base/share/lib/security/default.policy 2018-09-12 18:02:08.000000000 -0700 @@ -140,10 +140,6 @@ permission java.io.FilePermission "<>", "read"; }; -grant codeBase "jrt:/jdk.desktop" { - permission java.lang.RuntimePermission "accessClassInPackage.com.sun.awt"; -}; - grant codeBase "jrt:/jdk.dynalink" { permission java.security.AllPermission; }; --- old/src/java.desktop/share/classes/java/awt/Window.java 2018-09-12 18:02:11.000000000 -0700 +++ new/src/java.desktop/share/classes/java/awt/Window.java 2018-09-12 18:02:11.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1995, 2018, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -394,16 +394,6 @@ private transient volatile int securityWarningWidth = 0; private transient volatile int securityWarningHeight = 0; - /** - * These fields represent the desired location for the security - * warning if this window is untrusted. - * See com.sun.awt.SecurityWarning for more details. - */ - private transient double securityWarningPointX = 2.0; - private transient double securityWarningPointY = 0.0; - private transient float securityWarningAlignmentX = RIGHT_ALIGNMENT; - private transient float securityWarningAlignmentY = TOP_ALIGNMENT; - static { /* ensure that the necessary native libraries are loaded */ Toolkit.loadLibraries(); @@ -3127,10 +3117,6 @@ this.securityWarningWidth = 0; this.securityWarningHeight = 0; - this.securityWarningPointX = 2.0; - this.securityWarningPointY = 0.0; - this.securityWarningAlignmentX = RIGHT_ALIGNMENT; - this.securityWarningAlignmentY = TOP_ALIGNMENT; deserializeResources(s); } @@ -4031,9 +4017,9 @@ private Point2D calculateSecurityWarningPosition(double x, double y, double w, double h) { - // The position according to the spec of SecurityWarning.setPosition() - double wx = x + w * securityWarningAlignmentX + securityWarningPointX; - double wy = y + h * securityWarningAlignmentY + securityWarningPointY; + // The desired location for the security warning + double wx = x + w * RIGHT_ALIGNMENT + 2.0; + double wy = y + h * TOP_ALIGNMENT + 0.0; // First, make sure the warning is not too far from the window bounds wx = Window.limit(wx, @@ -4068,33 +4054,12 @@ window.updateWindow(); } - public Dimension getSecurityWarningSize(Window window) { - return new Dimension(window.securityWarningWidth, - window.securityWarningHeight); - } - public void setSecurityWarningSize(Window window, int width, int height) { window.securityWarningWidth = width; window.securityWarningHeight = height; } - public void setSecurityWarningPosition(Window window, - Point2D point, float alignmentX, float alignmentY) - { - window.securityWarningPointX = point.getX(); - window.securityWarningPointY = point.getY(); - window.securityWarningAlignmentX = alignmentX; - window.securityWarningAlignmentY = alignmentY; - - synchronized (window.getTreeLock()) { - WindowPeer peer = (WindowPeer) window.peer; - if (peer != null) { - peer.repositionSecurityWarning(); - } - } - } - public Point2D calculateSecurityWarningPosition(Window window, double x, double y, double w, double h) { --- old/src/java.desktop/share/classes/sun/awt/AWTAccessor.java 2018-09-12 18:02:13.000000000 -0700 +++ new/src/java.desktop/share/classes/sun/awt/AWTAccessor.java 2018-09-12 18:02:12.000000000 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2017, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2008, 2018, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -295,20 +295,11 @@ */ void updateWindow(Window window); - /** Get the size of the security warning. - */ - Dimension getSecurityWarningSize(Window w); - /** * Set the size of the security warning. */ void setSecurityWarningSize(Window w, int width, int height); - /** Set the position of the security warning. - */ - void setSecurityWarningPosition(Window w, Point2D point, - float alignmentX, float alignmentY); - /** Request to recalculate the new position of the security warning for * the given window size/location as reported by the native system. */ --- old/test/jdk/TEST.ROOT 2018-09-12 18:02:15.000000000 -0700 +++ new/test/jdk/TEST.ROOT 2018-09-12 18:02:14.000000000 -0700 @@ -19,7 +19,7 @@ # Tests that must run in othervm mode othervm.dirs=java/awt java/beans javax/accessibility javax/imageio javax/sound javax/swing javax/print \ com/apple/laf com/sun/java/accessibility com/sun/java/swing sanity/client demo/jfc \ -javax/management com/sun/awt sun/awt sun/java2d javax/xml/jaxp/testng/validation java/lang/ProcessHandle +javax/management sun/awt sun/java2d javax/xml/jaxp/testng/validation java/lang/ProcessHandle # Tests that cannot run concurrently exclusiveAccess.dirs=java/rmi/Naming java/util/prefs sun/management/jmxremote sun/tools/jstatd sun/security/mscapi java/util/stream java/util/Arrays/largeMemory java/util/BitSet/stream javax/rmi --- old/test/jdk/TEST.groups 2018-09-12 18:02:16.000000000 -0700 +++ new/test/jdk/TEST.groups 2018-09-12 18:02:16.000000000 -0700 @@ -351,7 +351,6 @@ jdk_awt = \ java/awt \ - com/sun/awt \ com/apple/eawt \ com/apple/laf \ sun/awt @@ -489,8 +488,7 @@ :jdk_sound \ :jdk_sctp \ javax/accessibility \ - com/sun/java/swing \ - com/sun/awt + com/sun/java/swing needs_g1gc = \ jdk/jfr/event/gc/refstat/TestRefStatEventWithG1ConcurrentMark.java \ --- old/test/jdk/java/awt/Mixing/AWT_Mixing/OpaqueOverlappingChoice.java 2018-09-12 18:02:18.000000000 -0700 +++ new/test/jdk/java/awt/Mixing/AWT_Mixing/OpaqueOverlappingChoice.java 2018-09-12 18:02:18.000000000 -0700 @@ -33,8 +33,7 @@ * @bug 6994264 * @summary Opaque overlapping test for Choice AWT component * @library /java/awt/patchlib ../../regtesthelpers - * @modules java.desktop/com.sun.awt - * java.desktop/java.awt.peer + * @modules java.desktop/java.awt.peer * java.desktop/sun.awt * @build java.desktop/java.awt.Helper * @build Util --- old/src/java.desktop/share/classes/com/sun/awt/SecurityWarning.java 2018-09-12 18:02:20.000000000 -0700 +++ /dev/null 2018-09-12 18:02:20.000000000 -0700 @@ -1,172 +0,0 @@ -/* - * Copyright (c) 2008, 2018, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.awt; - -import java.awt.*; -import java.awt.geom.*; - -import sun.awt.AWTAccessor; - - -/** - * Security Warning control interface. - * - * This class provides a couple of methods that help a developer relocate - * the AWT security warning to an appropriate position relative to the current - * window size. A "top-level window" is an instance of the {@code Window} - * class (or its descendant, such as {@code JFrame}). The security warning - * is applied to all windows created by an untrusted code. All such windows - * have a non-null "warning string" (see {@link Window#getWarningString()}). - *

- * WARNING: This class is an implementation detail and only meant - * for limited use outside of the core platform. This API may change - * drastically between update release, and it may even be - * removed or be moved to some other packages or classes. - * - * @deprecated This class is deprecated, no replacement. - */ -@Deprecated(since = "11", forRemoval = true) -public final class SecurityWarning { - - /** - * The SecurityWarning class should not be instantiated - */ - private SecurityWarning() { - } - - /** - * Gets the size of the security warning. - * - * The returned value is not valid until the peer has been created. Before - * invoking this method a developer must call the {@link Window#pack()}, - * {@link Window#setVisible}, or some other method that creates the peer. - * - * @param window the window to get the security warning size for - * - * @throws NullPointerException if the window argument is null - * @throws IllegalArgumentException if the window is trusted (i.e. - * the {@code getWarningString()} returns null) - */ - public static Dimension getSize(Window window) { - if (window == null) { - throw new NullPointerException( - "The window argument should not be null."); - } - if (window.getWarningString() == null) { - throw new IllegalArgumentException( - "The window must have a non-null warning string."); - } - // We don't check for a non-null peer since it may be destroyed - // after assigning a valid value to the security warning size. - - return AWTAccessor.getWindowAccessor().getSecurityWarningSize(window); - } - - /** - * Sets the position of the security warning. - *

- * The {@code alignmentX} and {@code alignmentY} arguments specify the - * origin of the coordinate system used to calculate the position of the - * security warning. The values must be in the range [0.0f...1.0f]. The - * {@code 0.0f} value represents the left (top) edge of the rectangular - * bounds of the window. The {@code 1.0f} value represents the right - * (bottom) edge of the bounds. Whenever the size of the window changes, - * the origin of the coordinate system gets relocated accordingly. For - * convenience a developer may use the {@code Component.*_ALIGNMENT} - * constants to pass predefined values for these arguments. - *

- * The {@code point} argument specifies the location of the security - * warning in the coordinate system described above. If both {@code x} and - * {@code y} coordinates of the point are equal to zero, the warning will - * be located right in the origin of the coordinate system. On the other - * hand, if both {@code alignmentX} and {@code alignmentY} are equal to - * zero (i.e. the origin of the coordinate system is placed at the top-left - * corner of the window), then the {@code point} argument represents the - * absolute location of the security warning relative to the location of - * the window. The "absolute" in this case means that the position of the - * security warning is not effected by resizing of the window. - *

- * Note that the security warning management code guarantees that: - *

- * If either of the conditions is violated, the calculated position of the - * security warning is adjusted by the system to meet both these - * conditions. - *

- * The default position of the security warning is in the upper-right - * corner of the window, two pixels to the right from the right edge. This - * corresponds to the following arguments passed to this method: - *

- * - * @param window the window to set the position of the security warning for - * @param alignmentX the horizontal origin of the coordinate system - * @param alignmentY the vertical origin of the coordinate system - * @param point the position of the security warning in the specified - * coordinate system - * - * @throws NullPointerException if the window argument is null - * @throws NullPointerException if the point argument is null - * @throws IllegalArgumentException if the window is trusted (i.e. - * the {@code getWarningString()} returns null - * @throws IllegalArgumentException if the alignmentX or alignmentY - * arguments are not within the range [0.0f ... 1.0f] - */ - public static void setPosition(Window window, Point2D point, - float alignmentX, float alignmentY) - { - if (window == null) { - throw new NullPointerException( - "The window argument should not be null."); - } - if (window.getWarningString() == null) { - throw new IllegalArgumentException( - "The window must have a non-null warning string."); - } - if (point == null) { - throw new NullPointerException( - "The point argument must not be null"); - } - if (alignmentX < 0.0f || alignmentX > 1.0f) { - throw new IllegalArgumentException( - "alignmentX must be in the range [0.0f ... 1.0f]."); - } - if (alignmentY < 0.0f || alignmentY > 1.0f) { - throw new IllegalArgumentException( - "alignmentY must be in the range [0.0f ... 1.0f]."); - } - - AWTAccessor.getWindowAccessor().setSecurityWarningPosition(window, - point, alignmentX, alignmentY); - } -} - --- old/test/jdk/com/sun/awt/SecurityWarning/CustomSecurityManager.java 2018-09-12 18:02:21.000000000 -0700 +++ /dev/null 2018-09-12 18:02:21.000000000 -0700 @@ -1,36 +0,0 @@ -/* - * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -import sun.awt.AWTPermissions; -import java.security.Permission; - -public class CustomSecurityManager extends SecurityManager { - @Override - public void checkPermission(Permission perm) { - if (perm.implies(AWTPermissions.TOPLEVEL_WINDOW_PERMISSION)) { - throw new SecurityException(); - } - } -} --- old/test/jdk/com/sun/awt/SecurityWarning/GetSizeShouldNotReturnZero.java 2018-09-12 18:02:22.000000000 -0700 +++ /dev/null 2018-09-12 18:02:22.000000000 -0700 @@ -1,187 +0,0 @@ -/* - * Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - @test %W% %E% - @key headful - @bug 6818312 - @summary The size returned by SecurityWarning.getSize() should not be zero - @author anthony.petrov@sun.com: area=awt.toplevel - @library ../../../../java/awt/regtesthelpers - @modules java.desktop/com.sun.awt - java.desktop/sun.awt - @build Util CustomSecurityManager CopyClassFile - @run main CopyClassFile CustomSecurityManager bootcp/ - @run main/othervm/secure=CustomSecurityManager -Xbootclasspath/a:bootcp GetSizeShouldNotReturnZero -*/ - -/** - * GetSizeShouldNotReturnZero.java - * - * summary: The size returned by SecurityWarning.getSize() should not be zero - */ - -import com.sun.awt.SecurityWarning; -import test.java.awt.regtesthelpers.Util; - -import java.awt.*; - -public class GetSizeShouldNotReturnZero -{ - private static void init() - { - Frame f = new Frame(); - f.setSize(100, 100); - f.setVisible(true); - - Robot robot = Util.createRobot(); - Util.waitForIdle(robot); - - Dimension size = SecurityWarning.getSize(f); - if (size.width == 0 || size.height == 0) { - fail("Reported security warning size: " + size); - return; - } - pass(); - }//End init() - - - /***************************************************** - * Standard Test Machinery Section - * DO NOT modify anything in this section -- it's a - * standard chunk of code which has all of the - * synchronisation necessary for the test harness. - * By keeping it the same in all tests, it is easier - * to read and understand someone else's test, as - * well as insuring that all tests behave correctly - * with the test harness. - * There is a section following this for test- - * classes - ******************************************************/ - private static boolean theTestPassed = false; - private static boolean testGeneratedInterrupt = false; - private static String failureMessage = ""; - - private static Thread mainThread = null; - - private static int sleepTime = 300000; - - // Not sure about what happens if multiple of this test are - // instantiated in the same VM. Being static (and using - // static vars), it aint gonna work. Not worrying about - // it for now. - public static void main( String args[] ) throws InterruptedException - { - mainThread = Thread.currentThread(); - try - { - init(); - } - catch( TestPassedException e ) - { - //The test passed, so just return from main and harness will - // interepret this return as a pass - return; - } - //At this point, neither test pass nor test fail has been - // called -- either would have thrown an exception and ended the - // test, so we know we have multiple threads. - - //Test involves other threads, so sleep and wait for them to - // called pass() or fail() - try - { - Thread.sleep( sleepTime ); - //Timed out, so fail the test - throw new RuntimeException( "Timed out after " + sleepTime/1000 + " seconds" ); - } - catch (InterruptedException e) - { - //The test harness may have interrupted the test. If so, rethrow the exception - // so that the harness gets it and deals with it. - if( ! testGeneratedInterrupt ) throw e; - - //reset flag in case hit this code more than once for some reason (just safety) - testGeneratedInterrupt = false; - - if ( theTestPassed == false ) - { - throw new RuntimeException( failureMessage ); - } - } - - }//main - - public static synchronized void setTimeoutTo( int seconds ) - { - sleepTime = seconds * 1000; - } - - public static synchronized void pass() - { - System.out.println( "The test passed." ); - System.out.println( "The test is over, hit Ctl-C to stop Java VM" ); - //first check if this is executing in main thread - if ( mainThread == Thread.currentThread() ) - { - //Still in the main thread, so set the flag just for kicks, - // and throw a test passed exception which will be caught - // and end the test. - theTestPassed = true; - throw new TestPassedException(); - } - theTestPassed = true; - testGeneratedInterrupt = true; - mainThread.interrupt(); - }//pass() - - public static synchronized void fail() - { - //test writer didn't specify why test failed, so give generic - fail( "it just plain failed! :-)" ); - } - - public static synchronized void fail( String whyFailed ) - { - System.out.println( "The test failed: " + whyFailed ); - System.out.println( "The test is over, hit Ctl-C to stop Java VM" ); - //check if this called from main thread - if ( mainThread == Thread.currentThread() ) - { - //If main thread, fail now 'cause not sleeping - throw new RuntimeException( whyFailed ); - } - theTestPassed = false; - testGeneratedInterrupt = true; - failureMessage = whyFailed; - mainThread.interrupt(); - }//fail() - -}// class GetSizeShouldNotReturnZero - -//This exception is used to exit from any level of call nesting -// when it's determined that the test has passed, and immediately -// end the test. -class TestPassedException extends RuntimeException -{ -} --- old/test/jdk/com/sun/awt/TEST.properties 2018-09-12 18:02:23.000000000 -0700 +++ /dev/null 2018-09-12 18:02:24.000000000 -0700 @@ -1,2 +0,0 @@ -modules=java.desktop -