提交 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;
import java.awt.image.BufferedImage;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.Locale;
import sun.font.FontManager;
......@@ -160,9 +161,7 @@ public abstract class GraphicsEnvironment {
*/
private static boolean getHeadlessProperty() {
if (headless == null) {
java.security.AccessController.doPrivileged(
new java.security.PrivilegedAction<Object>() {
public Object run() {
AccessController.doPrivileged((PrivilegedAction<Void>) () -> {
String nm = System.getProperty("java.awt.headless");
if (nm == null) {
......@@ -176,27 +175,24 @@ public abstract class GraphicsEnvironment {
{
headless = defaultHeadless = Boolean.TRUE;
} else {
final String display = System.getenv("DISPLAY");
headless = defaultHeadless =
Boolean.valueOf(("Linux".equals(osName) ||
("Linux".equals(osName) ||
"SunOS".equals(osName) ||
"FreeBSD".equals(osName) ||
"NetBSD".equals(osName) ||
"OpenBSD".equals(osName) ||
"AIX".equals(osName)) &&
(System.getenv("DISPLAY") == null));
(display == null || display.trim().isEmpty());
}
}
} else if (nm.equals("true")) {
headless = Boolean.TRUE;
} else {
headless = Boolean.FALSE;
headless = Boolean.valueOf(nm);
}
return null;
});
}
}
);
}
return headless.booleanValue();
return headless;
}
/**
......
......@@ -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
......
# 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 $?
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册