diff --git a/src/share/classes/java/awt/GraphicsEnvironment.java b/src/share/classes/java/awt/GraphicsEnvironment.java index 0f7ad266fbef898548d7c92a50341cff6fb6b085..b3c6b1184ea25ab86532bc27056fd862ed2ca1f3 100644 --- a/src/share/classes/java/awt/GraphicsEnvironment.java +++ b/src/share/classes/java/awt/GraphicsEnvironment.java @@ -28,6 +28,7 @@ package java.awt; import java.awt.image.BufferedImage; import java.security.AccessController; +import java.security.PrivilegedAction; import java.util.Locale; import sun.font.FontManager; @@ -160,43 +161,38 @@ public abstract class GraphicsEnvironment { */ private static boolean getHeadlessProperty() { if (headless == null) { - java.security.AccessController.doPrivileged( - new java.security.PrivilegedAction() { - public Object run() { - String nm = System.getProperty("java.awt.headless"); + AccessController.doPrivileged((PrivilegedAction) () -> { + String nm = System.getProperty("java.awt.headless"); - if (nm == null) { - /* No need to ask for DISPLAY when run in a browser */ - if (System.getProperty("javaplugin.version") != null) { - headless = defaultHeadless = Boolean.FALSE; + if (nm == null) { + /* No need to ask for DISPLAY when run in a browser */ + if (System.getProperty("javaplugin.version") != null) { + headless = defaultHeadless = Boolean.FALSE; + } else { + String osName = System.getProperty("os.name"); + if (osName.contains("OS X") && "sun.awt.HToolkit".equals( + System.getProperty("awt.toolkit"))) + { + headless = defaultHeadless = Boolean.TRUE; } else { - String osName = System.getProperty("os.name"); - if (osName.contains("OS X") && "sun.awt.HToolkit".equals( - System.getProperty("awt.toolkit"))) - { - headless = defaultHeadless = Boolean.TRUE; - } else { - headless = defaultHeadless = - Boolean.valueOf(("Linux".equals(osName) || - "SunOS".equals(osName) || - "FreeBSD".equals(osName) || - "NetBSD".equals(osName) || - "OpenBSD".equals(osName) || - "AIX".equals(osName)) && - (System.getenv("DISPLAY") == null)); - } + final String display = System.getenv("DISPLAY"); + headless = defaultHeadless = + ("Linux".equals(osName) || + "SunOS".equals(osName) || + "FreeBSD".equals(osName) || + "NetBSD".equals(osName) || + "OpenBSD".equals(osName) || + "AIX".equals(osName)) && + (display == null || display.trim().isEmpty()); } - } else if (nm.equals("true")) { - headless = Boolean.TRUE; - } else { - headless = Boolean.FALSE; } - return null; - } + } else { + headless = Boolean.valueOf(nm); } - ); + return null; + }); } - return headless.booleanValue(); + return headless; } /** diff --git a/test/java/awt/GraphicsEnvironment/TestDetectHeadless/TestDetectHeadless.sh b/test/java/awt/GraphicsEnvironment/TestDetectHeadless/TestDetectHeadless.sh index 6642efa5bd2492ce0ce080641e9e2aeef0d0bf14..2e1fd42c588d185d9a7ae937e8e278d511a88a9f 100644 --- a/test/java/awt/GraphicsEnvironment/TestDetectHeadless/TestDetectHeadless.sh +++ b/test/java/awt/GraphicsEnvironment/TestDetectHeadless/TestDetectHeadless.sh @@ -28,7 +28,7 @@ # # @test -# @bug 8058930 +# @bug 8058930 7077826 # @summary java.awt.GraphicsEnvironment.getHeadlessProperty() does not work for AIX # # @build TestDetectHeadless @@ -36,11 +36,21 @@ OS=`uname -s` case "$OS" in - Windows* | CYGWIN* ) + Windows* | CYGWIN* | Darwin) echo "Passed"; exit 0 ;; * ) unset DISPLAY ;; esac +${TESTJAVA}/bin/java ${TESTVMOPTS} \ + -cp ${TESTCLASSES} TestDetectHeadless + +if [ $? -ne 0 ]; then + exit 1; +fi + +DISPLAY= +export DISPLAY + ${TESTJAVA}/bin/java ${TESTVMOPTS} \ -cp ${TESTCLASSES} TestDetectHeadless diff --git a/test/java/awt/Toolkit/BadDisplayTest/BadDisplayTest.sh b/test/java/awt/Toolkit/BadDisplayTest/BadDisplayTest.sh index e58072890c13afacd2f3f25e703d46f1bd8724a4..acd31541dc857b34e11be25b942c062def619965 100644 --- a/test/java/awt/Toolkit/BadDisplayTest/BadDisplayTest.sh +++ b/test/java/awt/Toolkit/BadDisplayTest/BadDisplayTest.sh @@ -1,4 +1,4 @@ -# Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2012, 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 @@ -21,23 +21,15 @@ ${TESTJAVA}/bin/javac -cp ${TESTSRC} -d . ${TESTSRC}/BadDisplayTest.java - -DISPLAY= -export DISPLAY - OS=`uname -s` case "$OS" in - SunOS ) - ${TESTJAVA}/bin/java BadDisplayTest - ;; - Linux ) - ${TESTJAVA}/bin/java BadDisplayTest - ;; - * ) - echo "Unsupported System: ${OS}" - exit 0; - ;; + Windows* | CYGWIN* | Darwin) + echo "Passed"; exit 0 ;; esac -exit $? +DISPLAY=SomeBadDisplay +export DISPLAY + +${TESTJAVA}/bin/java ${TESTVMOPTS} BadDisplayTest +exit $?