提交 75573847 编写于 作者: S serb

7077826: Unset and empty DISPLAY variable is handled differently by JDK

Reviewed-by: azvegint, ant
上级 da38dce6
...@@ -28,6 +28,7 @@ package java.awt; ...@@ -28,6 +28,7 @@ package java.awt;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.security.AccessController; import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.Locale; import java.util.Locale;
import sun.font.FontManager; import sun.font.FontManager;
...@@ -160,9 +161,7 @@ public abstract class GraphicsEnvironment { ...@@ -160,9 +161,7 @@ public abstract class GraphicsEnvironment {
*/ */
private static boolean getHeadlessProperty() { private static boolean getHeadlessProperty() {
if (headless == null) { if (headless == null) {
java.security.AccessController.doPrivileged( AccessController.doPrivileged((PrivilegedAction<Void>) () -> {
new java.security.PrivilegedAction<Object>() {
public Object run() {
String nm = System.getProperty("java.awt.headless"); String nm = System.getProperty("java.awt.headless");
if (nm == null) { if (nm == null) {
...@@ -176,27 +175,24 @@ public abstract class GraphicsEnvironment { ...@@ -176,27 +175,24 @@ public abstract class GraphicsEnvironment {
{ {
headless = defaultHeadless = Boolean.TRUE; headless = defaultHeadless = Boolean.TRUE;
} else { } else {
final String display = System.getenv("DISPLAY");
headless = defaultHeadless = headless = defaultHeadless =
Boolean.valueOf(("Linux".equals(osName) || ("Linux".equals(osName) ||
"SunOS".equals(osName) || "SunOS".equals(osName) ||
"FreeBSD".equals(osName) || "FreeBSD".equals(osName) ||
"NetBSD".equals(osName) || "NetBSD".equals(osName) ||
"OpenBSD".equals(osName) || "OpenBSD".equals(osName) ||
"AIX".equals(osName)) && "AIX".equals(osName)) &&
(System.getenv("DISPLAY") == null)); (display == null || display.trim().isEmpty());
} }
} }
} else if (nm.equals("true")) {
headless = Boolean.TRUE;
} else { } else {
headless = Boolean.FALSE; headless = Boolean.valueOf(nm);
} }
return null; return null;
});
} }
} return headless;
);
}
return headless.booleanValue();
} }
/** /**
......
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
# #
# @test # @test
# @bug 8058930 # @bug 8058930 7077826
# @summary java.awt.GraphicsEnvironment.getHeadlessProperty() does not work for AIX # @summary java.awt.GraphicsEnvironment.getHeadlessProperty() does not work for AIX
# #
# @build TestDetectHeadless # @build TestDetectHeadless
...@@ -36,11 +36,21 @@ ...@@ -36,11 +36,21 @@
OS=`uname -s` OS=`uname -s`
case "$OS" in case "$OS" in
Windows* | CYGWIN* ) Windows* | CYGWIN* | Darwin)
echo "Passed"; exit 0 ;; echo "Passed"; exit 0 ;;
* ) unset DISPLAY ;; * ) unset DISPLAY ;;
esac esac
${TESTJAVA}/bin/java ${TESTVMOPTS} \
-cp ${TESTCLASSES} TestDetectHeadless
if [ $? -ne 0 ]; then
exit 1;
fi
DISPLAY=
export DISPLAY
${TESTJAVA}/bin/java ${TESTVMOPTS} \ ${TESTJAVA}/bin/java ${TESTVMOPTS} \
-cp ${TESTCLASSES} TestDetectHeadless -cp ${TESTCLASSES} TestDetectHeadless
......
# 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. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
# #
# This code is free software; you can redistribute it and/or modify it # This code is free software; you can redistribute it and/or modify it
...@@ -21,23 +21,15 @@ ...@@ -21,23 +21,15 @@
${TESTJAVA}/bin/javac -cp ${TESTSRC} -d . ${TESTSRC}/BadDisplayTest.java ${TESTJAVA}/bin/javac -cp ${TESTSRC} -d . ${TESTSRC}/BadDisplayTest.java
DISPLAY=
export DISPLAY
OS=`uname -s` OS=`uname -s`
case "$OS" in case "$OS" in
SunOS ) Windows* | CYGWIN* | Darwin)
${TESTJAVA}/bin/java BadDisplayTest echo "Passed"; exit 0 ;;
;;
Linux )
${TESTJAVA}/bin/java BadDisplayTest
;;
* )
echo "Unsupported System: ${OS}"
exit 0;
;;
esac esac
exit $? DISPLAY=SomeBadDisplay
export DISPLAY
${TESTJAVA}/bin/java ${TESTVMOPTS} BadDisplayTest
exit $?
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册