changeset 2125:89b0235188b5

Merge
author lana
date Tue, 09 Feb 2010 00:00:38 -0800
parents e79d95ea2e81 58d014485a29
children b51982678191
files
diffstat 7 files changed, 302 insertions(+), 84 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/classes/java/awt/GraphicsEnvironment.java	Mon Feb 08 23:59:22 2010 -0800
+++ b/src/share/classes/java/awt/GraphicsEnvironment.java	Tue Feb 09 00:00:38 2010 -0800
@@ -110,7 +110,7 @@
 //          long t1 = System.currentTimeMillis();
 //          System.out.println("GE creation took " + (t1-t0)+ "ms.");
             if (isHeadless()) {
-                localEnv = new HeadlessGraphicsEnvironment(localEnv);
+                ge = new HeadlessGraphicsEnvironment(ge);
             }
         } catch (ClassNotFoundException e) {
             throw new Error("Could not find class: "+nm);
--- a/src/share/classes/sun/font/FontManagerFactory.java	Mon Feb 08 23:59:22 2010 -0800
+++ b/src/share/classes/sun/font/FontManagerFactory.java	Tue Feb 09 00:00:38 2010 -0800
@@ -68,38 +68,34 @@
             return instance;
         }
 
-        String fmClassName = AccessController.doPrivileged(
-                new GetPropertyAction("sun.font.fontmanager",
-                                      DEFAULT_CLASS));
+        AccessController.doPrivileged(new PrivilegedAction() {
 
-        try {
-            @SuppressWarnings("unchecked")
-            ClassLoader cl = (ClassLoader)
-                AccessController.doPrivileged(new PrivilegedAction() {
-                    public Object run() {
-                        return ClassLoader.getSystemClassLoader();
-                    }
-                });
+            public Object run() {
+                try {
+                    String fmClassName =
+                            System.getProperty("sun.font.fontmanager",
+                                               DEFAULT_CLASS);
+                    ClassLoader cl = ClassLoader.getSystemClassLoader();
+                    Class fmClass = Class.forName(fmClassName, true, cl);
+                    instance = (FontManager) fmClass.newInstance();
+                } catch (ClassNotFoundException ex) {
+                    InternalError err = new InternalError();
+                    err.initCause(ex);
+                    throw err;
 
-            @SuppressWarnings("unchecked")
-            Class fmClass = Class.forName(fmClassName, true, cl);
-            instance = (FontManager) fmClass.newInstance();
+                } catch (InstantiationException ex) {
+                    InternalError err = new InternalError();
+                    err.initCause(ex);
+                    throw err;
 
-        } catch (ClassNotFoundException ex) {
-            InternalError err = new InternalError();
-            err.initCause(ex);
-            throw err;
-
-        } catch (InstantiationException ex) {
-            InternalError err = new InternalError();
-            err.initCause(ex);
-            throw err;
-
-        } catch (IllegalAccessException ex) {
-            InternalError err = new InternalError();
-            err.initCause(ex);
-            throw err;
-        }
+                } catch (IllegalAccessException ex) {
+                    InternalError err = new InternalError();
+                    err.initCause(ex);
+                    throw err;
+                }
+                return null;
+            }
+        });
 
         return instance;
     }
--- a/src/share/classes/sun/font/FontUtilities.java	Mon Feb 08 23:59:22 2010 -0800
+++ b/src/share/classes/sun/font/FontUtilities.java	Tue Feb 09 00:00:38 2010 -0800
@@ -32,9 +32,9 @@
 import java.io.InputStreamReader;
 import java.security.AccessController;
 
+import java.security.PrivilegedAction;
 import javax.swing.plaf.FontUIResource;
 
-import sun.security.action.GetPropertyAction;
 import sun.util.logging.PlatformLogger;
 
 /**
@@ -42,79 +42,82 @@
  */
 public final class FontUtilities {
 
-    public static final boolean isSolaris;
+    public static boolean isSolaris;
 
-    public static final boolean isLinux;
+    public static boolean isLinux;
 
-    public static final boolean isSolaris8;
+    public static boolean isSolaris8;
 
-    public static final boolean isSolaris9;
+    public static boolean isSolaris9;
 
-    public static final boolean isOpenSolaris;
+    public static boolean isOpenSolaris;
 
-    public static final boolean useT2K;
+    public static boolean useT2K;
 
-    public static final boolean isWindows;
+    public static boolean isWindows;
 
-    public static final boolean isOpenJDK;
+    public static boolean isOpenJDK;
 
     static final String LUCIDA_FILE_NAME = "LucidaSansRegular.ttf";
 
     // This static initializer block figures out the OS constants.
     static {
 
-        String osName = AccessController.doPrivileged(
-                                new GetPropertyAction("os.name", "unknownOS"));
-        isSolaris = osName.startsWith("SunOS");
+        AccessController.doPrivileged(new PrivilegedAction () {
+            public Object run() {
+                String osName = System.getProperty("os.name", "unknownOS");
+                isSolaris = osName.startsWith("SunOS");
 
-        isLinux = osName.startsWith("Linux");
+                isLinux = osName.startsWith("Linux");
 
-        String t2kStr = AccessController.doPrivileged(
-                              new GetPropertyAction("sun.java2d.font.scaler"));
-        if (t2kStr != null) {
-            useT2K = "t2k".equals(t2kStr);
-        } else {
-            useT2K = false;
-        }
-        if (isSolaris) {
-            String version = AccessController.doPrivileged(
-                                   new GetPropertyAction("os.version", "0.0"));
-            isSolaris8 = version.startsWith("5.8");
-            isSolaris9 = version.startsWith("5.9");
-            float ver = Float.parseFloat(version);
-            if (ver > 5.10f) {
-                File f = new File("/etc/release");
-                String line = null;
-                try {
-                    FileInputStream fis = new FileInputStream(f);
-                    InputStreamReader isr = new InputStreamReader(
+                String t2kStr = System.getProperty("sun.java2d.font.scaler");
+                if (t2kStr != null) {
+                    useT2K = "t2k".equals(t2kStr);
+                } else {
+                    useT2K = false;
+                }
+                if (isSolaris) {
+                    String version = System.getProperty("os.version", "0.0");
+                    isSolaris8 = version.startsWith("5.8");
+                    isSolaris9 = version.startsWith("5.9");
+                    float ver = Float.parseFloat(version);
+                    if (ver > 5.10f) {
+                        File f = new File("/etc/release");
+                        String line = null;
+                        try {
+                            FileInputStream fis = new FileInputStream(f);
+                            InputStreamReader isr = new InputStreamReader(
                                                             fis, "ISO-8859-1");
-                    BufferedReader br = new BufferedReader(isr);
-                    line = br.readLine();
-                    fis.close();
-                } catch (Exception ex) {
-                    // Nothing to do here.
-                }
-                if (line != null && line.indexOf("OpenSolaris") >= 0) {
-                    isOpenSolaris = true;
+                            BufferedReader br = new BufferedReader(isr);
+                            line = br.readLine();
+                            fis.close();
+                        } catch (Exception ex) {
+                            // Nothing to do here.
+                        }
+                        if (line != null && line.indexOf("OpenSolaris") >= 0) {
+                            isOpenSolaris = true;
+                        } else {
+                            isOpenSolaris = false;
+                        }
+                    } else {
+                        isOpenSolaris = false;
+                    }
                 } else {
+                    isSolaris8 = false;
+                    isSolaris9 = false;
                     isOpenSolaris = false;
                 }
-            } else {
-                isOpenSolaris= false;
+                isWindows = osName.startsWith("Windows");
+                String jreLibDirName = System.getProperty("java.home", "")
+                                                      + File.separator + "lib";
+                String jreFontDirName =
+                        jreLibDirName + File.separator + "fonts";
+                File lucidaFile = new File(jreFontDirName + File.separator
+                                           + LUCIDA_FILE_NAME);
+                isOpenJDK = !lucidaFile.exists();
+                return null;
             }
-        } else {
-            isSolaris8 = false;
-            isSolaris9 = false;
-            isOpenSolaris = false;
-        }
-        isWindows = osName.startsWith("Windows");
-        String jreLibDirName = AccessController.doPrivileged(
-               new GetPropertyAction("java.home","")) + File.separator + "lib";
-        String jreFontDirName = jreLibDirName + File.separator + "fonts";
-        File lucidaFile =
-                new File(jreFontDirName + File.separator + LUCIDA_FILE_NAME);
-        isOpenJDK = !lucidaFile.exists();
+        });
     }
 
     /**
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/java/awt/FontClass/FontPrivilege.java	Tue Feb 09 00:00:38 2010 -0800
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2010 Sun Microsystems, Inc.  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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 5010310 6319835 6904882
+ * @summary test fonts can be created in the presence of a security manager
+ * @run main/othervm/secure=java.lang.SecurityManager FontPrivilege
+ */
+
+import java.awt.Font;
+
+public class FontPrivilege {
+
+    public static void main(String[] args) throws Exception {
+        new Font("Helvetica", Font.PLAIN, 12).getFamily();
+        new Font("foo bar", Font.PLAIN, 12).getFamily();
+   }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/java/awt/GraphicsEnvironment/TestGetDefScreenDevice.java	Tue Feb 09 00:00:38 2010 -0800
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 2010 Sun Microsystems, Inc.  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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 6896335
+ * @summary Test GraphicsEnvironment.getDefaultScreenDevice() in headless mode
+ * @run main/othervm -Djava.awt.headless=true TestGetDefScreenDevice
+ */
+
+import java.awt.*;
+public class TestGetDefScreenDevice {
+
+    public static void main(String[] args) throws Exception {
+        GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
+        try {
+            ge.getDefaultScreenDevice();
+            throw new Exception("Failed. HeadlessException not thrown");
+        } catch (HeadlessException he) {
+            // OK, test passed.
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/java/awt/PrintJob/Security/SecurityDialogTest.java	Tue Feb 09 00:00:38 2010 -0800
@@ -0,0 +1,105 @@
+/*
+ * Copyright 2010 Sun Microsystems, Inc.  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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/**
+ * @test
+ * @bug 6195901 6195923 6195928 6195933 6491273 6888734
+ * @summary No SecurityException should be thrown when printing to a file
+            using the given policy.
+            Print to file option should be selected.
+ * @run main/othervm/policy=policy SecurityDialogTest
+ */
+import java.awt.*;
+import java.awt.event.*;
+import java.util.*;
+import java.io.*;
+
+
+public class SecurityDialogTest extends Frame implements ActionListener {
+    // Declare things used in the test, like buttons and labels here
+
+    Button nativeDlg, setSecurity;
+        boolean isNative = true;
+
+    public SecurityDialogTest() {
+
+        nativeDlg = new Button("Print Dialog");
+        nativeDlg.addActionListener(this);
+        setSecurity = new Button("Toggle Dialog");
+        setSecurity.addActionListener(this);
+        add("South", nativeDlg);
+        add("North", setSecurity);
+        setSize(300, 300);
+        setVisible(true);
+    }
+
+    public static void main(String args[]) {
+        System.out.println("Native dialog is the default");
+        SecurityDialogTest test = new SecurityDialogTest();
+    }
+
+    public void actionPerformed(ActionEvent e) {
+
+        if (e.getSource() == setSecurity) {
+            if (isNative) {
+                isNative = false;
+                System.out.println("Common dialog is the default");
+
+            } else {
+                isNative = true;
+                System.out.println("Native dialog is the default");
+            }
+            return;
+        }
+
+        JobAttributes  ja = new JobAttributes();
+        PageAttributes pa = new PageAttributes();
+
+        if (isNative) {
+            ja.setDialog(JobAttributes.DialogType.NATIVE);
+        } else {
+            ja.setDialog(JobAttributes.DialogType.COMMON);
+        }
+        ja.setDestination(JobAttributes.DestinationType.FILE);
+        ja.setFileName("mohan.ps");
+
+
+        PrintJob pjob = getToolkit().getPrintJob(this, null, ja, pa);
+
+        if (pjob != null) {
+            Graphics pg = pjob.getGraphics();
+            System.out.println("PJOB: " + pjob);
+            if (pg != null) {
+                System.out.println("Printer Graphics: " + pg);
+                this.printAll(pg);
+                pg.dispose();
+            } else {
+                System.out.println("Printer Graphics is null");
+            }
+            pjob.end();
+            System.out.println("DONE");
+        } else {
+            System.out.println("PJOB is null");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/java/awt/PrintJob/Security/policy	Tue Feb 09 00:00:38 2010 -0800
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2010 Sun Microsystems, Inc.  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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/* AUTOMATICALLY GENERATED ON Thu Jan 03 15:48:39 PST 2002*/
+/* DO NOT EDIT */
+
+grant {
+ permission java.io.FilePermission "<<ALL FILES>>", "read,write";
+ permission java.lang.RuntimePermission "queuePrintJob"; 
+ permission java.lang.RuntimePermission "setSecurityManager"; 
+};
+