mirror of
https://github.com/JetBrains/JetBrainsRuntime.git
synced 2026-01-27 10:50:51 +01:00
Compare commits
26 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
49982aff3c | ||
|
|
35aabb6ed3 | ||
|
|
43e9aea49e | ||
|
|
3960cc1c3f | ||
|
|
8fd8c5767d | ||
|
|
50123f3f9f | ||
|
|
146afcfb37 | ||
|
|
18f0138745 | ||
|
|
d28bfec70b | ||
|
|
3dae769bb2 | ||
|
|
b06e625923 | ||
|
|
980b5a354c | ||
|
|
8183c5b042 | ||
|
|
4c2ce96b68 | ||
|
|
b715412025 | ||
|
|
0cab753fb1 | ||
|
|
de64e51188 | ||
|
|
03ff99a62b | ||
|
|
18c3fd40ee | ||
|
|
66bd338d23 | ||
|
|
8b0b738416 | ||
|
|
f2a562e0c0 | ||
|
|
fd29e06c9c | ||
|
|
fe55cc7bd9 | ||
|
|
96e0246394 | ||
|
|
4f2900a929 |
@@ -38,5 +38,4 @@ RUN apk --no-cache add --update \
|
||||
|
||||
RUN git config --global user.email "teamcity@jetbrains.com" && \
|
||||
git config --global user.name "builduser" && \
|
||||
git config --global --add safe.directory '*' && \
|
||||
git config --global http.postBuffer 524288000
|
||||
git config --global --add safe.directory '*'
|
||||
@@ -1,63 +0,0 @@
|
||||
# NOTE: This Dockerfile is meant to be used from the mkdocker_<arch>.sh script.
|
||||
|
||||
# Pull a concrete version of Linux that does NOT recieve updates after it's
|
||||
# been created. This is so that the image is as stable as possible to make
|
||||
# image creation reproducible.
|
||||
# NB: this also means there may be no security-related fixes there, need to
|
||||
# move the version to the next manually.
|
||||
|
||||
FROM oraclelinux:8
|
||||
|
||||
# Install the necessary build tools
|
||||
RUN yum -y update; \
|
||||
yum -y install gcc-toolset-10-10.1-0.el8; \
|
||||
yum -y install \
|
||||
alsa-lib-devel-1.1.9-4.el8 \
|
||||
autoconf-2.69-29.el8_10.1 \
|
||||
automake-1.16.1-6.el8 \
|
||||
bzip2-libs-1.0.6-26.el8 \
|
||||
cups-devel-2.2.6-60.el8_10 \
|
||||
file-5.33-26.el8 \
|
||||
fontconfig-devel-2.13.1-4.el8 \
|
||||
freetype-devel-2.9.1-9.el8 \
|
||||
gcc-c++-8.5.0-22.0.1.el8_10 \
|
||||
git-2.43.5-1.el8_10 \
|
||||
git-core-2.43.5-1.el8_10 \
|
||||
libtool-2.4.6-25.el8 \
|
||||
libXi-devel-1.7.10-1.el8 \
|
||||
libXrandr-devel-1.5.2-1.el8 \
|
||||
libXrender-devel-0.9.10-7.el8 \
|
||||
libXt-devel-1.1.5-12.el8 \
|
||||
libXtst-devel-1.2.3-7.el8 \
|
||||
make-devel-4.2.1-11.el8 \
|
||||
rsync-3.1.3-19.el8_7.1 \
|
||||
unzip-6.0-46.el8 \
|
||||
wayland-devel-1.21.0-1.el8 \
|
||||
python36-3.6.8-39.module+el8.10.0+90274+07ba55de \
|
||||
cmake-3.26.5-2.el8 \
|
||||
vulkan-headers-1.3.250.1-1.el8 \
|
||||
vulkan-loader-devel-1.3.250.1-1.el8 \
|
||||
vulkan-validation-layers-1.3.250.1-1.el8; \
|
||||
yum -y clean all
|
||||
|
||||
RUN git config --global user.email "teamcity@jetbrains.com" && \
|
||||
git config --global user.name "builduser" && \
|
||||
git config --global --add safe.directory '*' && \
|
||||
git config --global http.postBuffer 524288000
|
||||
|
||||
# Build GLSLC
|
||||
RUN git clone https://github.com/google/shaderc --branch v2023.6 \
|
||||
&& cd shaderc \
|
||||
&& ./utils/git-sync-deps \
|
||||
&& mkdir build \
|
||||
&& cd build \
|
||||
&& cmake \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DCMAKE_INSTALL_PREFIX=/usr/local \
|
||||
-DSHADERC_SKIP_TESTS=ON \
|
||||
-DSHADERC_SKIP_EXAMPLES=ON \
|
||||
-DSHADERC_SKIP_COPYRIGHT_CHECK=ON \
|
||||
-DSPIRV_SKIP_EXECUTABLES=ON \
|
||||
-DENABLE_SPVREMAPPER=OFF \
|
||||
.. \
|
||||
&& make install
|
||||
57
jb/project/docker/Dockerfile.oraclelinux.aarch64
Normal file
57
jb/project/docker/Dockerfile.oraclelinux.aarch64
Normal file
@@ -0,0 +1,57 @@
|
||||
# NOTE: This Dockerfile is meant to be used from the mkdocker_aarch64.sh script.
|
||||
|
||||
# Pull a concrete version of Linux that does NOT recieve updates after it's
|
||||
# been created. This is so that the image is as stable as possible to make
|
||||
# image creation reproducible.
|
||||
# NB: this also means there may be no security-related fixes there, need to
|
||||
# move the version to the next manually.
|
||||
|
||||
FROM oraclelinux:7
|
||||
ARG profilename username password csi
|
||||
|
||||
RUN /usr/sbin/ulnreg_ks --profilename=$profilename \
|
||||
--username=$username \
|
||||
--password=$password \
|
||||
--csi=$csi
|
||||
|
||||
COPY scl.repo /etc/yum.repos.d/
|
||||
|
||||
# Install the necessary build tools
|
||||
RUN yum -y update && \
|
||||
yum -y install \
|
||||
devtoolset-10-libstdc++-devel-10.2.1-11.2.0.2.el7 \
|
||||
devtoolset-10-runtime-10.1-0.el7 \
|
||||
devtoolset-10-binutils-2.35-5.el7.4 \
|
||||
devtoolset-10-gcc-10.2.1-11.2.0.2.el7 \
|
||||
devtoolset-10-gcc-c++-10.2.1-11.2.0.2.el7 && \
|
||||
yum -y install \
|
||||
alsa-lib-devel-1.1.8-1.el7 \
|
||||
autoconf-2.69-11.el7 \
|
||||
automake-1.13.4-3.el7 \
|
||||
bzip2-libs-1.0.6-13.el7 \
|
||||
cups-devel-1.6.3-52.el7_9 \
|
||||
file-5.11-37.el7 \
|
||||
fontconfig-devel-2.13.0-4.3.el7 \
|
||||
freetype-devel-2.8-14.el7_9.1 \
|
||||
git-1.8.3.1-25.el7_9 \
|
||||
git-core-1.8.3.1-25.el7_9 \
|
||||
libtool-2.4.2-22.el7_3 \
|
||||
libXi-devel-1.7.9-1.el7 \
|
||||
libXrandr-devel-1.5.1-2.el7 \
|
||||
libXrender-devel-0.9.10-1.el7 \
|
||||
libXt-devel-1.1.5-3.el7 \
|
||||
libXtst-devel-1.2.3-1.el7 \
|
||||
make-3.82-24.el7 \
|
||||
rsync-3.1.2-12.el7_9 \
|
||||
unzip-6.0-24.0.1.el7_9 \
|
||||
zip-3.0-11.el7 \
|
||||
wayland-devel-1.15.0-1.el7 && \
|
||||
yum -y clean all
|
||||
|
||||
RUN git config --global user.email "teamcity@jetbrains.com" && \
|
||||
git config --global user.name "builduser" && \
|
||||
git config --global --add safe.directory '*'
|
||||
|
||||
ENV PATH="/opt/rh/devtoolset-10/root/usr/bin:${PATH}"
|
||||
ENV LD_LIBRARY_PATH="/opt/rh/devtoolset-10/root/usr/lib64:/opt/rh/devtoolset-10/root/usr/lib:/opt/rh/devtoolset-10/root/usr/lib64/dyninst:/opt/rh/devtoolset-10/root/usr/lib/dyninst:/opt/rh/devtoolset-10/root/usr/lib64:/opt/rh/devtoolset-10/root/usr/lib"
|
||||
ENV PKG_CONFIG_PATH="/opt/rh/devtoolset-10/root/usr/lib64/pkgconfig"
|
||||
57
jb/project/docker/Dockerfile.oraclelinux.x86_64
Normal file
57
jb/project/docker/Dockerfile.oraclelinux.x86_64
Normal file
@@ -0,0 +1,57 @@
|
||||
# NOTE: This Dockerfile is meant to be used from the mkdocker_64.sh script.
|
||||
|
||||
# Pull a concrete version of Linux that does NOT recieve updates after it's
|
||||
# been created. This is so that the image is as stable as possible to make
|
||||
# image creation reproducible.
|
||||
# NB: this also means there may be no security-related fixes there, need to
|
||||
# move the version to the next manually.
|
||||
|
||||
FROM oraclelinux:7
|
||||
ARG profilename username password csi
|
||||
|
||||
RUN /usr/sbin/ulnreg_ks --profilename=$profilename \
|
||||
--username=$username \
|
||||
--password=$password \
|
||||
--csi=$csi
|
||||
|
||||
COPY scl.repo /etc/yum.repos.d/
|
||||
|
||||
# Install the necessary build tools
|
||||
RUN yum -y update && \
|
||||
yum -y install \
|
||||
devtoolset-10-libstdc++-devel-10.2.1-11.2.0.1.el7 \
|
||||
devtoolset-10-runtime-10.1-0.el7 \
|
||||
devtoolset-10-binutils-2.35-5.el7.4 \
|
||||
devtoolset-10-gcc-10.2.1-11.2.0.1.el7 \
|
||||
devtoolset-10-gcc-c++-10.2.1-11.2.0.1.el7 && \
|
||||
yum -y install \
|
||||
alsa-lib-devel-1.1.8-1.el7 \
|
||||
autoconf-2.69-11.el7 \
|
||||
automake-1.13.4-3.el7 \
|
||||
bzip2-libs-1.0.6-13.el7 \
|
||||
cups-devel-1.6.3-52.el7_9 \
|
||||
file-5.11-37.el7 \
|
||||
fontconfig-devel-2.13.0-4.3.el7 \
|
||||
freetype-devel-2.8-14.el7_9.1 \
|
||||
git-1.8.3.1-25.el7_9 \
|
||||
git-core-1.8.3.1-25.el7_9 \
|
||||
libtool-2.4.2-22.el7_3 \
|
||||
libXi-devel-1.7.9-1.el7 \
|
||||
libXrandr-devel-1.5.1-2.el7 \
|
||||
libXrender-devel-0.9.10-1.el7 \
|
||||
libXt-devel-1.1.5-3.el7 \
|
||||
libXtst-devel-1.2.3-1.el7 \
|
||||
make-3.82-24.el7 \
|
||||
rsync-3.1.2-12.el7_9 \
|
||||
unzip-6.0-24.0.1.el7_9 \
|
||||
zip-3.0-11.el7 \
|
||||
wayland-devel-1.15.0-1.el7 && \
|
||||
yum -y clean all
|
||||
|
||||
RUN git config --global user.email "teamcity@jetbrains.com" && \
|
||||
git config --global user.name "builduser" && \
|
||||
git config --global --add safe.directory '*'
|
||||
|
||||
ENV PATH="/opt/rh/devtoolset-10/root/usr/bin:${PATH}"
|
||||
ENV LD_LIBRARY_PATH="/opt/rh/devtoolset-10/root/usr/lib64:/opt/rh/devtoolset-10/root/usr/lib:/opt/rh/devtoolset-10/root/usr/lib64/dyninst:/opt/rh/devtoolset-10/root/usr/lib/dyninst:/opt/rh/devtoolset-10/root/usr/lib64:/opt/rh/devtoolset-10/root/usr/lib"
|
||||
ENV PKG_CONFIG_PATH="/opt/rh/devtoolset-10/root/usr/lib64/pkgconfig"
|
||||
@@ -5,8 +5,6 @@
|
||||
# image creation reproducible.
|
||||
# NB: this also means there may be no security-related fixes there, need to
|
||||
# move the version to the next manually.
|
||||
#FROM i386/ubuntu:xenial
|
||||
#FROM i386/ubuntu:bionic
|
||||
FROM i386/ubuntu:focal
|
||||
|
||||
RUN linux32 \
|
||||
@@ -30,7 +28,6 @@ RUN export DEBIAN_FRONTEND=noninteractive \
|
||||
libxt-dev \
|
||||
libcups2-dev \
|
||||
libasound2-data \
|
||||
# libpng12-0 \
|
||||
libasound2 \
|
||||
libfreetype6 \
|
||||
libfontconfig1-dev \
|
||||
|
||||
@@ -1,10 +1,27 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -euxo pipefail
|
||||
set -euo pipefail
|
||||
|
||||
# This script creates a Docker image suitable for building AArch64 variant
|
||||
|
||||
docker build --platform=linux/aarch64 -t jetbrains/runtime:oraclelinux8_aarch64 -f Dockerfile.oraclelinux .
|
||||
echo "ULN username:"
|
||||
read username
|
||||
|
||||
echo "ULN password:"
|
||||
read -s password
|
||||
|
||||
echo "CSI:"
|
||||
read csi
|
||||
|
||||
docker build \
|
||||
--platform=linux/aarch64 \
|
||||
--no-cache \
|
||||
-t registry.jetbrains.team/p/jbre/containers/oraclelinux7_aarch64:latest \
|
||||
--build-arg profilename=OL7_aarch64 \
|
||||
--build-arg username=$username \
|
||||
--build-arg password=$password \
|
||||
--build-arg csi=$csi \
|
||||
-f Dockerfile.oraclelinux.aarch64 .
|
||||
|
||||
# NB: the resulting container can (and should) be used without the network
|
||||
# connection (--network none) during build in order to reduce the chance
|
||||
|
||||
@@ -4,7 +4,11 @@ set -euxo pipefail
|
||||
|
||||
# This script creates a Docker image suitable for building musl AArch64 variant
|
||||
|
||||
docker build --platform=linux/aarch64 -t jetbrains/runtime:alpine14_aarch64 -f Dockerfile.alpine .
|
||||
docker build \
|
||||
--platform=linux/aarch64 \
|
||||
--no-cache \
|
||||
-t registry.jetbrains.team/p/jbre/containers/alpine14_aarch64:latest \
|
||||
-f Dockerfile.alpine .
|
||||
|
||||
# NB: the resulting container can (and should) be used without the network
|
||||
# connection (--network none) during build in order to reduce the chance
|
||||
|
||||
@@ -4,7 +4,11 @@ set -euxo pipefail
|
||||
|
||||
# This script creates a Docker image suitable for building musl x64 variant
|
||||
|
||||
docker build --platform=linux/amd64 -t jetbrains/runtime:alpine14_x64 -f Dockerfile.alpine .
|
||||
docker build \
|
||||
--platform=linux/amd64 \
|
||||
--no-cache \
|
||||
-t registry.jetbrains.team/p/jbre/containers/alpine14_x64:latest \
|
||||
-f Dockerfile.alpine .
|
||||
|
||||
# NB: the resulting container can (and should) be used without the network
|
||||
# connection (--network none) during build in order to reduce the chance
|
||||
|
||||
@@ -1,10 +1,27 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -euxo pipefail
|
||||
set -euo pipefail
|
||||
|
||||
# This script creates a Docker image suitable for building x64 variant
|
||||
|
||||
docker build --platform=linux/amd64 -t jetbrains/runtime:oraclelinux8_x64 -f Dockerfile.oraclelinux .
|
||||
echo "ULN username:"
|
||||
read username
|
||||
|
||||
echo "ULN password:"
|
||||
read -s password
|
||||
|
||||
echo "CSI:"
|
||||
read csi
|
||||
|
||||
docker build \
|
||||
--platform=linux/amd64 \
|
||||
--no-cache \
|
||||
-t registry.jetbrains.team/p/jbre/containers/oraclelinux7_x64:latest \
|
||||
--build-arg profilename=OL7_x64 \
|
||||
--build-arg username=$username \
|
||||
--build-arg password=$password \
|
||||
--build-arg csi=$csi \
|
||||
-f Dockerfile.oraclelinux.x86_64 .
|
||||
|
||||
# NB: the resulting container can (and should) be used without the network
|
||||
# connection (--network none) during build in order to reduce the chance
|
||||
|
||||
@@ -4,7 +4,11 @@ set -euxo pipefail
|
||||
|
||||
# This script creates a Docker image suitable for building x86 variant
|
||||
|
||||
docker build --platform=linux/i386 -t jetbrains/runtime:ubuntu2004_x86 -f Dockerfile.ubuntu.x86 .
|
||||
docker build \
|
||||
--platform=linux/i386 \
|
||||
--no-cache \
|
||||
-t registry.jetbrains.team/p/jbre/containers/ubuntu2004_x86:latest \
|
||||
-f Dockerfile.ubuntu.x86 .
|
||||
|
||||
# NB: the resulting container can (and should) be used without the network
|
||||
# connection (--network none) during build in order to reduce the chance
|
||||
|
||||
6
jb/project/docker/scl.repo
Normal file
6
jb/project/docker/scl.repo
Normal file
@@ -0,0 +1,6 @@
|
||||
[ol7_scl]
|
||||
name=Oracle Linux $releasever Update 8 ($basearch) Software Collection
|
||||
baseurl=https://yum$ociregion.$ocidomain/repo/OracleLinux/OL7/SoftwareCollections/$basearch/
|
||||
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
|
||||
gpgcheck=1
|
||||
enabled=1
|
||||
@@ -102,6 +102,12 @@ else
|
||||
WITH_BUNDLED_FREETYPE=""
|
||||
fi
|
||||
|
||||
if [ "$bundle_type" == "vk" ]; then
|
||||
WITH_VULKAN="--with-vulkan"
|
||||
else
|
||||
WITH_VULKAN=""
|
||||
fi
|
||||
|
||||
REPRODUCIBLE_BUILD_OPTS="--with-source-date=$SOURCE_DATE_EPOCH
|
||||
--with-hotspot-build-time=$BUILD_TIME
|
||||
--with-copyright-year=$COPYRIGHT_YEAR
|
||||
|
||||
@@ -35,7 +35,7 @@ function do_configure {
|
||||
--with-version-opt=b"$build_number" \
|
||||
--with-boot-jdk="$BOOT_JDK" \
|
||||
--enable-cds=yes \
|
||||
--with-vulkan \
|
||||
$WITH_VULKAN \
|
||||
$DISABLE_WARNINGS_AS_ERRORS \
|
||||
$STATIC_CONF_ARGS \
|
||||
$REPRODUCIBLE_BUILD_OPTS \
|
||||
@@ -113,6 +113,11 @@ case "$bundle_type" in
|
||||
jbr_name_postfix="_${bundle_type}"
|
||||
do_maketest=1
|
||||
;;
|
||||
"vk")
|
||||
do_reset_changes=1
|
||||
jbr_name_postfix="_${bundle_type}"
|
||||
do_maketest=1
|
||||
;;
|
||||
"nomod" | "")
|
||||
bundle_type=""
|
||||
;;
|
||||
@@ -141,7 +146,7 @@ JBRSDK_BUNDLE=jbrsdk
|
||||
echo Fixing permissions
|
||||
chmod -R a+r $JSDK
|
||||
|
||||
if [ "$bundle_type" == "jcef" ] || [ "$bundle_type" == "fd" ]; then
|
||||
if [ "$bundle_type" == "jcef" ] || [ "$bundle_type" == "vk" ] || [ "$bundle_type" == "fd" ]; then
|
||||
git apply -p0 < jb/project/tools/patches/add_jcef_module_aarch64.patch || do_exit $?
|
||||
update_jsdk_mods $JSDK $JCEF_PATH/jmods $JSDK/jmods $JSDK_MODS_DIR || do_exit $?
|
||||
cp $JCEF_PATH/jmods/* $JSDK_MODS_DIR # $JSDK/jmods is not changed
|
||||
@@ -154,7 +159,7 @@ create_image_bundle "jbr${jbr_name_postfix}" "jbr" $JSDK_MODS_DIR "$modules" ||
|
||||
|
||||
# create sdk image bundle
|
||||
modules=$(cat $JSDK/release | grep MODULES | sed s/MODULES=//g | sed s/' '/','/g | sed s/\"//g | sed s/\\n//g) || do_exit $?
|
||||
if [ "$bundle_type" == "jcef" ] || [ "$bundle_type" == "fd" ] || [ "$bundle_type" == "$JBRSDK_BUNDLE" ]; then
|
||||
if [ "$bundle_type" == "jcef" ] || [ "$bundle_type" == "vk" ] || [ "$bundle_type" == "fd" ] || [ "$bundle_type" == "$JBRSDK_BUNDLE" ]; then
|
||||
modules=${modules},$(get_mods_list "$JCEF_PATH"/jmods)
|
||||
fi
|
||||
create_image_bundle "$JBRSDK_BUNDLE${jbr_name_postfix}" $JBRSDK_BUNDLE $JSDK_MODS_DIR "$modules" || do_exit $?
|
||||
|
||||
@@ -42,7 +42,7 @@ function do_configure {
|
||||
--with-version-opt=b"$build_number" \
|
||||
--with-boot-jdk="$BOOT_JDK" \
|
||||
--enable-cds=yes \
|
||||
--with-vulkan \
|
||||
$WITH_VULKAN \
|
||||
$LINUX_TARGET \
|
||||
$DISABLE_WARNINGS_AS_ERRORS \
|
||||
$STATIC_CONF_ARGS \
|
||||
@@ -121,6 +121,11 @@ case "$bundle_type" in
|
||||
jbr_name_postfix="_${bundle_type}"
|
||||
do_maketest=1
|
||||
;;
|
||||
"vk")
|
||||
do_reset_changes=1
|
||||
jbr_name_postfix="_${bundle_type}"
|
||||
do_maketest=1
|
||||
;;
|
||||
"nomod" | "")
|
||||
bundle_type=""
|
||||
;;
|
||||
@@ -149,7 +154,7 @@ JBRSDK_BUNDLE=jbrsdk
|
||||
echo Fixing permissions
|
||||
chmod -R a+r $JSDK
|
||||
|
||||
if [ "$bundle_type" == "jcef" ] || [ "$bundle_type" == "fd" ]; then
|
||||
if [ "$bundle_type" == "jcef" ] || [ "$bundle_type" == "vk" ] || [ "$bundle_type" == "fd" ]; then
|
||||
git apply -p0 < jb/project/tools/patches/add_jcef_module.patch || do_exit $?
|
||||
update_jsdk_mods $JSDK $JCEF_PATH/jmods $JSDK/jmods $JSDK_MODS_DIR || do_exit $?
|
||||
cp $JCEF_PATH/jmods/* $JSDK_MODS_DIR # $JSDK/jmods is not changed
|
||||
@@ -162,7 +167,7 @@ create_image_bundle "jbr${jbr_name_postfix}" "jbr" $JSDK_MODS_DIR "$modules" ||
|
||||
|
||||
# create sdk image bundle
|
||||
modules=$(cat $JSDK/release | grep MODULES | sed s/MODULES=//g | sed s/' '/','/g | sed s/\"//g | sed s/\\n//g) || do_exit $?
|
||||
if [ "$bundle_type" == "jcef" ] || [ "$bundle_type" == "fd" ] || [ "$bundle_type" == "$JBRSDK_BUNDLE" ]; then
|
||||
if [ "$bundle_type" == "jcef" ] || [ "$bundle_type" == "vk" ] || [ "$bundle_type" == "fd" ] || [ "$bundle_type" == "$JBRSDK_BUNDLE" ]; then
|
||||
modules=${modules},$(get_mods_list "$JCEF_PATH"/jmods)
|
||||
fi
|
||||
create_image_bundle "$JBRSDK_BUNDLE${jbr_name_postfix}" $JBRSDK_BUNDLE $JSDK_MODS_DIR "$modules" || do_exit $?
|
||||
|
||||
@@ -92,7 +92,7 @@ WITH_DEBUG_LEVEL="--with-debug-level=release"
|
||||
RELEASE_NAME=linux-x86-server-release
|
||||
|
||||
case "$bundle_type" in
|
||||
"jcef")
|
||||
"jcef" | "vk")
|
||||
echo "not implemented" && do_exit 1
|
||||
;;
|
||||
"nomod" | "")
|
||||
@@ -119,7 +119,7 @@ JBRSDK_BUNDLE=jbrsdk
|
||||
echo Fixing permissions
|
||||
chmod -R a+r $JSDK
|
||||
|
||||
if [ "$bundle_type" == "jcef" ] || [ "$bundle_type" == "fd" ]; then
|
||||
if [ "$bundle_type" == "jcef" ] || [ "$bundle_type" == "fd" ] || [ "$bundle_type" == "vk" ]; then
|
||||
jbr_name_postfix="_${bundle_type}"
|
||||
else
|
||||
jbr_name_postfix=""
|
||||
|
||||
@@ -1923,6 +1923,13 @@ bool G1CollectedHeap::try_collect_fullgc(GCCause::Cause cause,
|
||||
const G1GCCounters& counters_before) {
|
||||
assert_heap_not_locked();
|
||||
|
||||
if (cause == GCCause::_jbr_gc_run) {
|
||||
VM_G1CollectForAllocation op(0, // no following allocation
|
||||
counters_before.total_collections(),
|
||||
cause);
|
||||
VMThread::execute(&op);
|
||||
}
|
||||
|
||||
while(true) {
|
||||
VM_G1CollectFull op(counters_before.total_collections(),
|
||||
counters_before.total_full_collections(),
|
||||
|
||||
@@ -51,8 +51,13 @@ bool VM_G1CollectFull::skip_operation() const {
|
||||
void VM_G1CollectFull::doit() {
|
||||
G1CollectedHeap* g1h = G1CollectedHeap::heap();
|
||||
GCCauseSetter x(g1h, _gc_cause);
|
||||
_gc_succeeded = g1h->do_full_collection(false /* clear_all_soft_refs */,
|
||||
false /* do_maximal_compaction */);
|
||||
if (_gc_cause == GCCause::_jbr_gc_run) {
|
||||
_gc_succeeded = g1h->do_full_collection(true /* clear_all_soft_refs */,
|
||||
true /* do_maximal_compaction */);
|
||||
} else {
|
||||
_gc_succeeded = g1h->do_full_collection(false /* clear_all_soft_refs */,
|
||||
false /* do_maximal_compaction */);
|
||||
}
|
||||
}
|
||||
|
||||
VM_G1TryInitiateConcMark::VM_G1TryInitiateConcMark(uint gc_count_before,
|
||||
|
||||
@@ -129,6 +129,9 @@ const char* GCCause::to_string(GCCause::Cause cause) {
|
||||
case _last_gc_cause:
|
||||
return "ILLEGAL VALUE - last gc cause - ILLEGAL VALUE";
|
||||
|
||||
case _jbr_gc_run:
|
||||
return "JBR full GC";
|
||||
|
||||
default:
|
||||
return "unknown GCCause";
|
||||
}
|
||||
|
||||
@@ -74,6 +74,7 @@ class GCCause : public AllStatic {
|
||||
_g1_periodic_collection,
|
||||
|
||||
_dcmd_gc_run,
|
||||
_jbr_gc_run,
|
||||
|
||||
_shenandoah_stop_vm,
|
||||
_shenandoah_allocation_failure_evac,
|
||||
@@ -92,7 +93,8 @@ class GCCause : public AllStatic {
|
||||
|
||||
inline static bool is_user_requested_gc(GCCause::Cause cause) {
|
||||
return (cause == GCCause::_java_lang_system_gc ||
|
||||
cause == GCCause::_dcmd_gc_run);
|
||||
cause == GCCause::_dcmd_gc_run ||
|
||||
cause == GCCause::_jbr_gc_run);
|
||||
}
|
||||
|
||||
inline static bool is_explicit_full_gc(GCCause::Cause cause) {
|
||||
|
||||
@@ -402,7 +402,8 @@ HeapWord* GenCollectedHeap::mem_allocate(size_t size,
|
||||
|
||||
bool GenCollectedHeap::must_clear_all_soft_refs() {
|
||||
return _gc_cause == GCCause::_metadata_GC_clear_soft_refs ||
|
||||
_gc_cause == GCCause::_wb_full_gc;
|
||||
_gc_cause == GCCause::_wb_full_gc ||
|
||||
_gc_cause == GCCause::_jbr_gc_run;
|
||||
}
|
||||
|
||||
void GenCollectedHeap::collect_generation(Generation* gen, bool full, size_t size,
|
||||
|
||||
@@ -231,6 +231,7 @@ void XDriver::collect(const XDriverRequest& request) {
|
||||
case GCCause::_wb_young_gc:
|
||||
case GCCause::_wb_full_gc:
|
||||
case GCCause::_dcmd_gc_run:
|
||||
case GCCause::_jbr_gc_run:
|
||||
case GCCause::_java_lang_system_gc:
|
||||
case GCCause::_full_gc_alot:
|
||||
case GCCause::_scavenge_alot:
|
||||
@@ -354,7 +355,8 @@ static bool should_clear_soft_references(const XDriverRequest& request) {
|
||||
// Clear soft references if implied by the GC cause
|
||||
if (request.cause() == GCCause::_wb_full_gc ||
|
||||
request.cause() == GCCause::_metadata_GC_clear_soft_refs ||
|
||||
request.cause() == GCCause::_z_allocation_stall) {
|
||||
request.cause() == GCCause::_z_allocation_stall ||
|
||||
request.cause() == GCCause::_jbr_gc_run) {
|
||||
// Clear
|
||||
return true;
|
||||
}
|
||||
@@ -376,7 +378,8 @@ static uint select_active_worker_threads_static(const XDriverRequest& request) {
|
||||
if (cause == GCCause::_wb_full_gc ||
|
||||
cause == GCCause::_java_lang_system_gc ||
|
||||
cause == GCCause::_metadata_GC_clear_soft_refs ||
|
||||
cause == GCCause::_z_allocation_stall) {
|
||||
cause == GCCause::_z_allocation_stall ||
|
||||
cause == GCCause::_jbr_gc_run) {
|
||||
// Boost
|
||||
const uint boosted_nworkers = MAX2(nworkers, ParallelGCThreads);
|
||||
return boosted_nworkers;
|
||||
|
||||
@@ -192,6 +192,7 @@ void ZCollectedHeap::collect(GCCause::Cause cause) {
|
||||
case GCCause::_wb_full_gc:
|
||||
case GCCause::_wb_breakpoint:
|
||||
case GCCause::_dcmd_gc_run:
|
||||
case GCCause::_jbr_gc_run:
|
||||
case GCCause::_java_lang_system_gc:
|
||||
case GCCause::_full_gc_alot:
|
||||
case GCCause::_jvmti_force_gc:
|
||||
|
||||
@@ -236,6 +236,7 @@ static bool should_clear_soft_references(GCCause::Cause cause) {
|
||||
case GCCause::_wb_full_gc:
|
||||
case GCCause::_metadata_GC_clear_soft_refs:
|
||||
case GCCause::_z_allocation_stall:
|
||||
case GCCause::_jbr_gc_run:
|
||||
return true;
|
||||
|
||||
case GCCause::_heap_dump:
|
||||
@@ -276,6 +277,7 @@ static bool should_preclean_young(GCCause::Cause cause) {
|
||||
case GCCause::_wb_full_gc:
|
||||
case GCCause::_wb_breakpoint:
|
||||
case GCCause::_dcmd_gc_run:
|
||||
case GCCause::_jbr_gc_run:
|
||||
case GCCause::_java_lang_system_gc:
|
||||
case GCCause::_full_gc_alot:
|
||||
case GCCause::_jvmti_force_gc:
|
||||
@@ -335,6 +337,7 @@ void ZDriverMajor::collect(const ZDriverRequest& request) {
|
||||
case GCCause::_heap_inspection:
|
||||
case GCCause::_wb_full_gc:
|
||||
case GCCause::_dcmd_gc_run:
|
||||
case GCCause::_jbr_gc_run:
|
||||
case GCCause::_java_lang_system_gc:
|
||||
case GCCause::_full_gc_alot:
|
||||
case GCCause::_jvmti_force_gc:
|
||||
|
||||
@@ -557,7 +557,11 @@ JNI_ENTRY(jint, jni_ThrowNew(JNIEnv *env, jclass clazz, const char *message))
|
||||
} else if (name->equals("java/lang/Exception$JB$$Event")) {
|
||||
Events::log(THREAD, "%s", message);
|
||||
return 0;
|
||||
} else if (name->equals("java/lang/Exception$JB$$FullGC")) {
|
||||
Universe::heap()->collect(GCCause::_jbr_gc_run);
|
||||
return 0;
|
||||
}
|
||||
|
||||
Handle class_loader (THREAD, k->class_loader());
|
||||
Handle protection_domain (THREAD, k->protection_domain());
|
||||
THROW_MSG_LOADER_(name, (char *)message, class_loader, protection_domain, JNI_OK);
|
||||
|
||||
@@ -505,6 +505,12 @@ void jniCheck::validate_throwable_klass(JavaThread* thr, Klass* klass) {
|
||||
ASSERT_OOPS_ALLOWED;
|
||||
assert(klass != nullptr, "klass argument must have a value");
|
||||
|
||||
if (klass->name()->index_of_at(0, "/Exception$JB$$", strlen("/Exception$JB$$")) > 0) {
|
||||
// This is a special "marker" class that is never really thrown and
|
||||
// therefore it does not have to be Throwable.
|
||||
return;
|
||||
}
|
||||
|
||||
if (!klass->is_instance_klass() ||
|
||||
!klass->is_subclass_of(vmClasses::Throwable_klass())) {
|
||||
ReportJNIFatalError(thr, fatal_class_not_a_throwable_class);
|
||||
|
||||
@@ -125,4 +125,5 @@ public class Exception extends Throwable {
|
||||
|
||||
private static class JB$$Assertion {}
|
||||
private static class JB$$Event {}
|
||||
private static class JB$$FullGC {}
|
||||
}
|
||||
|
||||
@@ -53,6 +53,7 @@ import java.security.AccessControlContext;
|
||||
import java.security.AccessController;
|
||||
import java.security.CodeSource;
|
||||
import java.security.PrivilegedAction;
|
||||
import java.nio.file.FileSystems;
|
||||
import java.security.ProtectionDomain;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
@@ -68,6 +69,7 @@ import java.util.function.Supplier;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import com.jetbrains.exported.JBRApi;
|
||||
import jdk.internal.logger.LoggerFinderLoader.TemporaryLoggerFinder;
|
||||
import jdk.internal.misc.CarrierThreadLocal;
|
||||
import jdk.internal.misc.Unsafe;
|
||||
@@ -2335,6 +2337,16 @@ public final class System {
|
||||
// set TCCL
|
||||
Thread.currentThread().setContextClassLoader(scl);
|
||||
|
||||
if (Boolean.getBoolean("java.util.zip.use.nio.for.zip.file.access")
|
||||
&& System.getProperty("java.nio.file.spi.DefaultFileSystemProvider") != null) {
|
||||
// Make sure the custom file system(s) are loaded using the "standard" ZipFile operating mode
|
||||
// rather than the one that forwards to NIO. The latter will use the file system that is being loaded to
|
||||
// try to load files, which will result in an NPE from FileSystems.getDefault().
|
||||
// Calling FileSystems.getDefault() here bypasses that because the NIO operating mode of ZipFile only
|
||||
// activates at init level 4.
|
||||
FileSystems.getDefault();
|
||||
}
|
||||
|
||||
// system is fully initialized
|
||||
VM.initLevel(4);
|
||||
}
|
||||
@@ -2674,4 +2686,7 @@ public final class System {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@JBRApi.Provides("SystemUtils#fullGC")
|
||||
private static native void $$jb$FullGC();
|
||||
}
|
||||
|
||||
@@ -36,6 +36,7 @@ import java.util.Map;
|
||||
import java.util.ServiceConfigurationError;
|
||||
import java.util.ServiceLoader;
|
||||
|
||||
import jdk.internal.loader.ClassLoaders;
|
||||
import jdk.internal.misc.VM;
|
||||
import sun.nio.fs.DefaultFileSystemProvider;
|
||||
|
||||
@@ -120,11 +121,9 @@ public final class FileSystems {
|
||||
if (propValue != null) {
|
||||
for (String cn: propValue.split(",")) {
|
||||
try {
|
||||
Class<?> c = Class
|
||||
.forName(cn, true, ClassLoader.getSystemClassLoader());
|
||||
Constructor<?> ctor = c
|
||||
.getDeclaredConstructor(FileSystemProvider.class);
|
||||
provider = (FileSystemProvider)ctor.newInstance(provider);
|
||||
Class<?> c = Class.forName(cn, true, ClassLoaders.appClassLoader());
|
||||
Constructor<?> ctor = c.getDeclaredConstructor(FileSystemProvider.class);
|
||||
provider = (FileSystemProvider) ctor.newInstance(provider);
|
||||
|
||||
// must be "file"
|
||||
if (!provider.getScheme().equals("file"))
|
||||
@@ -154,13 +153,17 @@ public final class FileSystems {
|
||||
* is invoked to create the default file system.
|
||||
*
|
||||
* <p> If the system property {@code java.nio.file.spi.DefaultFileSystemProvider}
|
||||
* is defined then it is taken to be a list of one or more fully-qualified
|
||||
* names of concrete provider classes identified by the URI scheme
|
||||
* {@code "file"}. Where the property is a list of more than one name then
|
||||
* the names are separated by a comma. Each class is loaded, using the system
|
||||
* class loader, and instantiated by invoking a one argument constructor
|
||||
* whose formal parameter type is {@code FileSystemProvider}. The providers
|
||||
* are loaded and instantiated in the order they are listed in the property.
|
||||
* is defined then it is taken to be a list of one or more fully-qualified names
|
||||
* of concrete provider classes identified by the URI scheme {@code "file"}.
|
||||
* If the property is a list of more than one name then the names are separated
|
||||
* by a comma character. Each provider class is a {@code public} class with a
|
||||
* {@code public} constructor that has one formal parameter of type {@code
|
||||
* FileSystemProvider}. If the provider class is in a named module then the module
|
||||
* exports the package containing the provider class to at least {@code java.base}.
|
||||
* Each provider class is loaded, using the
|
||||
* {@linkplain ClassLoader#getSystemClassLoader() default system class loader},
|
||||
* and instantiated by invoking the constructor. The providers are loaded and
|
||||
* instantiated in the order they are listed in the property.
|
||||
* If this process fails or a provider's scheme is not equal to {@code "file"}
|
||||
* then an unspecified error is thrown. URI schemes are normally compared
|
||||
* without regard to case but for the default provider, the scheme is
|
||||
|
||||
@@ -322,3 +322,16 @@ Java_java_lang_System_mapLibraryName(JNIEnv *env, jclass ign, jstring libname)
|
||||
|
||||
return (*env)->NewString(env, chars, len);
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_java_lang_System__00024_00024jb_00024FullGC(JNIEnv *env, jclass ign)
|
||||
{
|
||||
jclass cls = (*env)->FindClass(env, "java/lang/Exception$JB$$FullGC");
|
||||
if (cls != 0) {
|
||||
// Throwing an exception by this name will trigger a full GC with
|
||||
// a special cause indicating the need to collect as much as possible
|
||||
// for testing purposes.
|
||||
(*env)->ThrowNew(env, cls, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -25,7 +25,9 @@
|
||||
|
||||
package sun.nio.fs;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.nio.file.FileSystems;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.spi.FileTypeDetector;
|
||||
import java.nio.file.spi.FileSystemProvider;
|
||||
|
||||
@@ -34,6 +36,14 @@ public class DefaultFileTypeDetector {
|
||||
|
||||
public static FileTypeDetector create() {
|
||||
FileSystemProvider provider = FileSystems.getDefault().provider();
|
||||
return ((UnixFileSystemProvider)provider).getFileTypeDetector();
|
||||
if (provider instanceof UnixFileSystemProvider unixProvider) {
|
||||
return unixProvider.getFileTypeDetector();
|
||||
}
|
||||
return new FileTypeDetector() {
|
||||
@Override
|
||||
public String probeContentType(Path path) throws IOException {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,6 +53,7 @@ import java.security.AccessController;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Comparator;
|
||||
import java.util.Objects;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
@@ -1178,53 +1179,104 @@ public class CPlatformWindow extends CFRetainedResource implements PlatformWindo
|
||||
return contentView.getWindowLayerPtr();
|
||||
}
|
||||
|
||||
private final static int INVOKE_LATER_DISABLED = 0;
|
||||
private final static int INVOKE_LATER_AUTO = 1;
|
||||
private final static int INVOKE_LATER_ENABLED = 2;
|
||||
|
||||
private final static int INVOKE_LATER_FLUSH_BUFFERS = getInvokeLaterMode();
|
||||
|
||||
@SuppressWarnings("removal")
|
||||
private final static boolean INVOKE_LATER_FLUSH_BUFFERS
|
||||
= Boolean.parseBoolean(AccessController.doPrivileged(
|
||||
new GetPropertyAction("awt.mac.flushBuffers.invokeLater", "false")));
|
||||
private static int getInvokeLaterMode() {
|
||||
final String invokeLaterKey = "awt.mac.flushBuffers.invokeLater";
|
||||
final String invokeLaterArg = AccessController.doPrivileged(
|
||||
new GetPropertyAction(invokeLaterKey));
|
||||
final int result;
|
||||
if (invokeLaterArg == null) {
|
||||
// default = 'auto':
|
||||
result = INVOKE_LATER_AUTO;
|
||||
} else {
|
||||
switch (invokeLaterArg.toLowerCase()) {
|
||||
default:
|
||||
case "auto":
|
||||
result = INVOKE_LATER_AUTO;
|
||||
break;
|
||||
case "false":
|
||||
result = INVOKE_LATER_DISABLED;
|
||||
break;
|
||||
case "true":
|
||||
result = INVOKE_LATER_ENABLED;
|
||||
break;
|
||||
}
|
||||
logger.info("CPlatformWindow: property \"{0}={1}\", using invokeLater={2}.",
|
||||
invokeLaterKey, invokeLaterArg,
|
||||
(result == INVOKE_LATER_DISABLED) ? "false"
|
||||
: ((result == INVOKE_LATER_AUTO) ? "auto" : "true"));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private final static int INVOKE_LATER_COUNT = 5;
|
||||
private final static AtomicInteger invokeLaterCount = new AtomicInteger();
|
||||
/** per window counter of remaining invokeLater calls */
|
||||
private final AtomicInteger invokeLaterCount = new AtomicInteger();
|
||||
|
||||
// Specific class needed to get obvious stack traces:
|
||||
private final class EmptyRunnable implements Runnable {
|
||||
@Override
|
||||
public void run() {
|
||||
// Posting an empty to flush the EventQueue without blocking the main thread
|
||||
if (logger.isLoggable(PlatformLogger.Level.FINE)) {
|
||||
logger.fine("CPlatformWindow.flushBuffers: run() invoked on {0}",
|
||||
getIdentifier(target));
|
||||
}
|
||||
}
|
||||
};
|
||||
private final EmptyRunnable emptyTask = new EmptyRunnable();
|
||||
|
||||
void flushBuffers() {
|
||||
// only 1 usage by deliverMoveResizeEvent():
|
||||
if (isVisible() && !nativeBounds.isEmpty() && !isFullScreenMode) {
|
||||
// Runnable needed to get obvious stack traces:
|
||||
final Runnable emptyTask = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
// Posting an empty to flush the EventQueue without blocking the main thread
|
||||
logger.fine("CPlatformWindow.flushBuffers: run() invoked on {0}", target);
|
||||
}
|
||||
};
|
||||
|
||||
// use the system property 'awt.mac.flushBuffers.invokeLater' to 'true' (default: false)
|
||||
// use the system property 'awt.mac.flushBuffers.invokeLater' to true/auto (default: auto)
|
||||
// to avoid deadlocks caused by the LWCToolkit.invokeAndWait() call below:
|
||||
boolean useInvokeLater = INVOKE_LATER_FLUSH_BUFFERS;
|
||||
boolean useInvokeLater;
|
||||
|
||||
if (!useInvokeLater && (peer != null)) {
|
||||
final GraphicsDevice device = peer.getGraphicsConfiguration().getDevice();
|
||||
if (device instanceof CGraphicsDevice) {
|
||||
// JBR-5497: avoid deadlock in mirroring mode (laptop + external screen):
|
||||
useInvokeLater = ((CGraphicsDevice)device).isMirroring();
|
||||
logger.fine("CPlatformWindow.flushBuffers: CGraphicsDevice.isMirroring = {0}", useInvokeLater);
|
||||
}
|
||||
}
|
||||
// JBR-5497: keep few more invokeLater() when computer returns from sleep or displayChanged()
|
||||
// to avoid deadlocks until solved definitely:
|
||||
if (useInvokeLater) {
|
||||
// reset to max count:
|
||||
invokeLaterCount.set(INVOKE_LATER_COUNT);
|
||||
} else {
|
||||
final int prev = invokeLaterCount.get();
|
||||
if (prev > 0) {
|
||||
invokeLaterCount.compareAndSet(prev, prev - 1);
|
||||
switch (INVOKE_LATER_FLUSH_BUFFERS) {
|
||||
case INVOKE_LATER_DISABLED:
|
||||
useInvokeLater = false;
|
||||
break;
|
||||
default:
|
||||
case INVOKE_LATER_AUTO:
|
||||
useInvokeLater = false;
|
||||
if (peer != null) {
|
||||
final GraphicsDevice device = peer.getGraphicsConfiguration().getDevice();
|
||||
if (device instanceof CGraphicsDevice) {
|
||||
// JBR-5497: avoid deadlock in mirroring mode (laptop + external screen):
|
||||
useInvokeLater = ((CGraphicsDevice)device).isMirroring();
|
||||
if (logger.isLoggable(PlatformLogger.Level.FINE)) {
|
||||
logger.fine("CPlatformWindow.flushBuffers: CGraphicsDevice.isMirroring = {0}",
|
||||
useInvokeLater);
|
||||
}
|
||||
}
|
||||
}
|
||||
// JBR-5497: keep few more invokeLater() when computer returns from sleep or displayChanged()
|
||||
// to avoid deadlocks until solved definitely:
|
||||
if (useInvokeLater) {
|
||||
// reset to max count:
|
||||
invokeLaterCount.set(INVOKE_LATER_COUNT);
|
||||
} else {
|
||||
final int prev = invokeLaterCount.get();
|
||||
if (prev > 0) {
|
||||
invokeLaterCount.compareAndSet(prev, prev - 1);
|
||||
useInvokeLater = true;
|
||||
}
|
||||
}
|
||||
if (logger.isLoggable(PlatformLogger.Level.FINE)) {
|
||||
logger.fine("CPlatformWindow.flushBuffers: useInvokeLater = {0} (count = {1})",
|
||||
useInvokeLater, invokeLaterCount.get());
|
||||
}
|
||||
break;
|
||||
case INVOKE_LATER_ENABLED:
|
||||
useInvokeLater = true;
|
||||
}
|
||||
}
|
||||
if (logger.isLoggable(PlatformLogger.Level.FINE)) {
|
||||
logger.fine("CPlatformWindow.flushBuffers: useInvokeLater = {0} (count = {1})",
|
||||
useInvokeLater, invokeLaterCount.get());
|
||||
break;
|
||||
}
|
||||
try {
|
||||
// check invokeAndWait: KO (operations require AWTLock and main thread)
|
||||
@@ -1232,11 +1284,19 @@ public class CPlatformWindow extends CFRetainedResource implements PlatformWindo
|
||||
if (useInvokeLater) {
|
||||
LWCToolkit.invokeLater(emptyTask, target);
|
||||
} else {
|
||||
logger.fine("CPlatformWindow.flushBuffers: enter LWCToolkit.invokeAndWait(empty) on target = {0}", target);
|
||||
if (logger.isLoggable(PlatformLogger.Level.FINE)) {
|
||||
logger.fine("CPlatformWindow.flushBuffers: enter " +
|
||||
"LWCToolkit.invokeAndWait(emptyTask) on target = {0}",
|
||||
getIdentifier(target));
|
||||
}
|
||||
|
||||
LWCToolkit.invokeAndWait(emptyTask, target);
|
||||
|
||||
logger.fine("CPlatformWindow.flushBuffers: exit LWCToolkit.invokeAndWait(empty) on target = {0}", target);
|
||||
if (logger.isLoggable(PlatformLogger.Level.FINE)) {
|
||||
logger.fine("CPlatformWindow.flushBuffers: exit " +
|
||||
"LWCToolkit.invokeAndWait(emptyTask) on target = {0}",
|
||||
getIdentifier(target));
|
||||
}
|
||||
}
|
||||
} catch (InvocationTargetException ite) {
|
||||
logger.severe("CPlatformWindow.flushBuffers: exception occurred: ", ite);
|
||||
@@ -1244,6 +1304,15 @@ public class CPlatformWindow extends CFRetainedResource implements PlatformWindo
|
||||
}
|
||||
}
|
||||
|
||||
private static String getIdentifier(Window t) {
|
||||
if (t == null) {
|
||||
return "null";
|
||||
}
|
||||
return t.getClass().getName()
|
||||
+ "['" + Objects.toString(t.getName(), "")
|
||||
+ "' @" + Integer.toHexString(System.identityHashCode(t)) + ']';
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper method to get a pointer to the native view from the PlatformWindow.
|
||||
*/
|
||||
|
||||
@@ -94,7 +94,7 @@ static const struct KeyTableEntry keyTable[] =
|
||||
{kVK_ANSI_X, 'x', YES, KL_STANDARD, java_awt_event_KeyEvent_VK_X},
|
||||
{kVK_ANSI_C, 'c', YES, KL_STANDARD, java_awt_event_KeyEvent_VK_C},
|
||||
{kVK_ANSI_V, 'v', YES, KL_STANDARD, java_awt_event_KeyEvent_VK_V},
|
||||
{kVK_ISO_Section, '\xa7', YES, KL_STANDARD, 0x1000000 + 0x00A7},
|
||||
{kVK_ISO_Section, 0xA7, YES, KL_STANDARD, 0x1000000 + 0x00A7},
|
||||
{kVK_ANSI_B, 'b', YES, KL_STANDARD, java_awt_event_KeyEvent_VK_B},
|
||||
{kVK_ANSI_Q, 'q', YES, KL_STANDARD, java_awt_event_KeyEvent_VK_Q},
|
||||
{kVK_ANSI_W, 'w', YES, KL_STANDARD, java_awt_event_KeyEvent_VK_W},
|
||||
@@ -137,7 +137,7 @@ static const struct KeyTableEntry keyTable[] =
|
||||
{kVK_ANSI_Grave, '`', YES, KL_STANDARD, java_awt_event_KeyEvent_VK_BACK_QUOTE},
|
||||
{kVK_Delete, NSDeleteCharacter, NO, KL_STANDARD, java_awt_event_KeyEvent_VK_BACK_SPACE},
|
||||
{0x34, 0, NO, KL_UNKNOWN, java_awt_event_KeyEvent_VK_UNDEFINED}, // undefined
|
||||
{kVK_Escape, '\x1b', NO, KL_STANDARD, java_awt_event_KeyEvent_VK_ESCAPE},
|
||||
{kVK_Escape, 0x1B, NO, KL_STANDARD, java_awt_event_KeyEvent_VK_ESCAPE},
|
||||
{kVK_RightCommand, 0, NO, KL_RIGHT, java_awt_event_KeyEvent_VK_META},
|
||||
{kVK_Command, 0, NO, KL_LEFT, java_awt_event_KeyEvent_VK_META},
|
||||
{kVK_Shift, 0, NO, KL_LEFT, java_awt_event_KeyEvent_VK_SHIFT},
|
||||
@@ -177,7 +177,7 @@ static const struct KeyTableEntry keyTable[] =
|
||||
{kVK_F20, NSF20FunctionKey, NO, KL_STANDARD, java_awt_event_KeyEvent_VK_F20},
|
||||
{kVK_ANSI_Keypad8, '8', NO, KL_NUMPAD, java_awt_event_KeyEvent_VK_NUMPAD8},
|
||||
{kVK_ANSI_Keypad9, '9', NO, KL_NUMPAD, java_awt_event_KeyEvent_VK_NUMPAD9},
|
||||
{kVK_JIS_Yen, '\xa5', YES, KL_STANDARD, 0x1000000 + 0x00A5},
|
||||
{kVK_JIS_Yen, 0xA5, YES, KL_STANDARD, 0x1000000 + 0x00A5},
|
||||
{kVK_JIS_Underscore, '_', YES, KL_STANDARD, java_awt_event_KeyEvent_VK_UNDERSCORE},
|
||||
{kVK_JIS_KeypadComma, ',', NO, KL_NUMPAD, java_awt_event_KeyEvent_VK_COMMA},
|
||||
{kVK_F5, NSF5FunctionKey, NO, KL_STANDARD, java_awt_event_KeyEvent_VK_F5},
|
||||
@@ -194,7 +194,7 @@ static const struct KeyTableEntry keyTable[] =
|
||||
{kVK_F14, NSF14FunctionKey, NO, KL_STANDARD, java_awt_event_KeyEvent_VK_F14},
|
||||
{0x6C, 0, NO, KL_UNKNOWN, java_awt_event_KeyEvent_VK_UNDEFINED}, // undefined
|
||||
{kVK_F10, NSF10FunctionKey, NO, KL_STANDARD, java_awt_event_KeyEvent_VK_F10},
|
||||
{0x6E, 0, NO, KL_UNKNOWN, java_awt_event_KeyEvent_VK_UNDEFINED}, // undefined
|
||||
{0x6E, NSMenuFunctionKey, NO, KL_STANDARD, java_awt_event_KeyEvent_VK_CONTEXT_MENU},
|
||||
{kVK_F12, NSF12FunctionKey, NO, KL_STANDARD, java_awt_event_KeyEvent_VK_F12},
|
||||
{0x70, 0, NO, KL_UNKNOWN, java_awt_event_KeyEvent_VK_UNDEFINED}, // undefined
|
||||
{kVK_F15, NSF15FunctionKey, NO, KL_STANDARD, java_awt_event_KeyEvent_VK_F15},
|
||||
|
||||
@@ -127,6 +127,7 @@ const static int OSX_F13 = 0x69;
|
||||
const static int OSX_F16 = 0x6A;
|
||||
const static int OSX_F14 = 0x6B;
|
||||
const static int OSX_F10 = 0x6D;
|
||||
const static int OSX_ContextualMenu = 0x6E;
|
||||
const static int OSX_F12 = 0x6F;
|
||||
const static int OSX_F15 = 0x71;
|
||||
const static int OSX_Help = 0x72;
|
||||
|
||||
@@ -160,6 +160,8 @@
|
||||
[NSNumber numberWithInt : OSX_F19], [NSNumber numberWithInt : java_awt_event_KeyEvent_VK_F19],
|
||||
[NSNumber numberWithInt : OSX_F20], [NSNumber numberWithInt : java_awt_event_KeyEvent_VK_F20],
|
||||
|
||||
[NSNumber numberWithInt : OSX_ContextualMenu], [NSNumber numberWithInt : java_awt_event_KeyEvent_VK_CONTEXT_MENU],
|
||||
|
||||
// There's no VK_ key code for the section key (\u00a7), found on the Standard QWERTY (ABC) ISO layout.
|
||||
// For consistency, let's use the code returned by getExtendedKeyCodeForChar for this symbol.
|
||||
// Also see src/java.desktop/share/classes/sun/awt/ExtendedKeyCodes.java
|
||||
|
||||
@@ -105,6 +105,7 @@ public class WLComponentPeer implements ComponentPeer {
|
||||
double effectiveScale; // protected by dataLock
|
||||
private final WLSize wlSize = new WLSize();
|
||||
boolean repositionPopup = false; // protected by dataLock
|
||||
boolean resizePending = false; // protected by dataLock
|
||||
|
||||
static {
|
||||
initIDs();
|
||||
@@ -495,6 +496,7 @@ public class WLComponentPeer implements ComponentPeer {
|
||||
return repositionPopup;
|
||||
}
|
||||
}
|
||||
|
||||
private void markPopupNeedsReposition() {
|
||||
synchronized (dataLock) {
|
||||
repositionPopup = true;
|
||||
@@ -507,6 +509,24 @@ public class WLComponentPeer implements ComponentPeer {
|
||||
}
|
||||
}
|
||||
|
||||
private boolean resizePending() {
|
||||
synchronized (dataLock) {
|
||||
return resizePending;
|
||||
}
|
||||
}
|
||||
|
||||
private void markResizePending() {
|
||||
synchronized (dataLock) {
|
||||
resizePending = true;
|
||||
}
|
||||
}
|
||||
|
||||
private void resizeCompleted() {
|
||||
synchronized (dataLock) {
|
||||
resizePending = false;
|
||||
}
|
||||
}
|
||||
|
||||
public void setBounds(int newX, int newY, int newWidth, int newHeight, int op) {
|
||||
Dimension newSize = constrainSize(newWidth, newHeight);
|
||||
boolean positionChanged = (op == SET_BOUNDS || op == SET_LOCATION);
|
||||
@@ -532,7 +552,10 @@ public class WLComponentPeer implements ComponentPeer {
|
||||
}
|
||||
|
||||
if (sizeChanged) {
|
||||
setSizeTo(newSize.width, newSize.height);
|
||||
if (!isSizeBeingConfigured()) {
|
||||
wlSize.deriveFromJavaSize(newSize.width, newSize.height);
|
||||
markResizePending();
|
||||
}
|
||||
if (log.isLoggable(PlatformLogger.Level.FINE)) {
|
||||
log.fine(String.format("%s is resizing its buffer to %dx%d pixels",
|
||||
this, getBufferWidth(), getBufferHeight()));
|
||||
@@ -558,18 +581,6 @@ public class WLComponentPeer implements ComponentPeer {
|
||||
}
|
||||
}
|
||||
|
||||
private void setSizeTo(int newWidth, int newHeight) {
|
||||
if (isSizeBeingConfigured() && wlSize.hasPixelSizeSet()) {
|
||||
// Must be careful not to override the size of the Wayland surface because
|
||||
// some implementations (Weston) react badly when the size of the surface
|
||||
// mismatches the configured size. We can't always precisely derive the surface
|
||||
// size from the Java (client) size because of scaling rounding errors.
|
||||
wlSize.setJavaSize(newWidth, newHeight);
|
||||
} else {
|
||||
wlSize.deriveFromJavaSize(newWidth, newHeight);
|
||||
}
|
||||
}
|
||||
|
||||
public int getBufferWidth() {
|
||||
return wlSize.getPixelWidth();
|
||||
}
|
||||
@@ -1454,6 +1465,16 @@ public class WLComponentPeer implements ComponentPeer {
|
||||
}
|
||||
}
|
||||
|
||||
int surfaceUnitsToJavaSize(int value) {
|
||||
if (!WLGraphicsEnvironment.isDebugScaleEnabled()) {
|
||||
return value;
|
||||
} else {
|
||||
synchronized (dataLock) {
|
||||
return (int) Math.ceil(value * displayScale / effectiveScale);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a value in the Java coordinate system into the Wayland
|
||||
* surface-local coordinate system.
|
||||
@@ -1494,7 +1515,8 @@ public class WLComponentPeer implements ComponentPeer {
|
||||
}
|
||||
|
||||
boolean isWlPopup = targetIsWlPopup();
|
||||
if (isWlPopup) { // Only popups provide (relative) location
|
||||
boolean acceptNewLocation = !popupNeedsReposition();
|
||||
if (isWlPopup && acceptNewLocation) { // Only popups provide (relative) location
|
||||
int newX = surfaceUnitsToJavaUnits(newSurfaceX);
|
||||
int newY = surfaceUnitsToJavaUnits(newSurfaceY);
|
||||
|
||||
@@ -1511,8 +1533,12 @@ public class WLComponentPeer implements ComponentPeer {
|
||||
// From xdg-shell.xml: "If the width or height arguments are zero,
|
||||
// it means the client should decide its own window dimension".
|
||||
boolean clientDecidesDimension = newSurfaceWidth == 0 || newSurfaceHeight == 0;
|
||||
if (!clientDecidesDimension) {
|
||||
changeSizeToConfigured(newSurfaceWidth, newSurfaceHeight, maximized);
|
||||
boolean desiredSize =
|
||||
(wlSize.javaSize.width == surfaceUnitsToJavaSize(newSurfaceWidth)
|
||||
&& wlSize.javaSize.height == surfaceUnitsToJavaSize(newSurfaceHeight));
|
||||
boolean acceptNewSize = !resizePending() || maximized || desiredSize;
|
||||
if (!clientDecidesDimension && acceptNewSize) {
|
||||
changeSizeToConfigured(newSurfaceWidth, newSurfaceHeight);
|
||||
}
|
||||
|
||||
if (!surfaceAssigned) {
|
||||
@@ -1534,16 +1560,13 @@ public class WLComponentPeer implements ComponentPeer {
|
||||
}
|
||||
}
|
||||
|
||||
private void changeSizeToConfigured(int newSurfaceWidth, int newSurfaceHeight, boolean honorSurfaceSize) {
|
||||
private void changeSizeToConfigured(int newSurfaceWidth, int newSurfaceHeight) {
|
||||
resizeCompleted();
|
||||
wlSize.deriveFromSurfaceSize(newSurfaceWidth, newSurfaceHeight);
|
||||
int newWidth = wlSize.getJavaWidth();
|
||||
int newHeight = wlSize.getJavaHeight();
|
||||
try {
|
||||
// When 'honorSurfaceSize' is in effect, we shall not confuse the size given by the server with
|
||||
// the size set by the user. The former originates from the surface size in surface-local coordinates,
|
||||
// while the latter is set in the client (Java) units. These are not always precisely convertible
|
||||
// when the scale differs from 100%.
|
||||
setSizeIsBeingConfigured(honorSurfaceSize);
|
||||
setSizeIsBeingConfigured(true);
|
||||
performUnlocked(() -> target.setSize(newWidth, newHeight));
|
||||
} finally {
|
||||
setSizeIsBeingConfigured(false);
|
||||
@@ -1748,8 +1771,8 @@ public class WLComponentPeer implements ComponentPeer {
|
||||
|
||||
void deriveFromSurfaceSize(int width, int height) {
|
||||
synchronized (dataLock) {
|
||||
javaSize.width = surfaceUnitsToJavaUnits(width);
|
||||
javaSize.height = surfaceUnitsToJavaUnits(height);
|
||||
javaSize.width = surfaceUnitsToJavaSize(width);
|
||||
javaSize.height = surfaceUnitsToJavaSize(height);
|
||||
pixelSize.width = width * displayScale;
|
||||
pixelSize.height = height * displayScale;
|
||||
surfaceSize.width = width;
|
||||
|
||||
@@ -54,6 +54,7 @@ public enum GCCause {
|
||||
_g1_humongous_allocation ("G1 Humongous Allocation"),
|
||||
|
||||
_dcmd_gc_run ("Diagnostic Command"),
|
||||
_jbr_gc_run("JBR full GC"),
|
||||
|
||||
_z_timer ("Timer"),
|
||||
_z_warmup ("Warmup"),
|
||||
|
||||
@@ -240,7 +240,7 @@ vmTestbase/nsk/jdb/options/listconnectors/listconnectors001/listconnectors001.ja
|
||||
vmTestbase/nsk/jdi/LaunchingConnector/launch/launch001/TestDescription.java initial_run windows-all
|
||||
vmTestbase/nsk/jdi/LaunchingConnector/launch/launch003/TestDescription.java initial_run windows-all
|
||||
vmTestbase/nsk/jdi/LaunchingConnector/launchnosuspend/launchnosuspend001/TestDescription.java initial_run windows-all
|
||||
vmTestbase/nsk/jdi/MethodExitRequest/addClassFilter_rt/filter_rt001/TestDescription.java JBR-7585 macosx-all
|
||||
vmTestbase/nsk/jdi/MethodExitRequest/addClassFilter_rt/filter_rt001/TestDescription.java JBR-7585 macosx-all,linux-all
|
||||
vmTestbase/nsk/jdi/ThreadReference/stop/stop001/TestDescription.java 7034630 generic-all
|
||||
vmTestbase/nsk/jdi/ReferenceType/instances/instances002/instances002.java initial_run linux-all
|
||||
vmTestbase/nsk/jdi/Value/type/type002/type002.java JBR-7553 macosx-x64
|
||||
|
||||
40
test/jdk/java/nio/file/spi/CustomSystemClassLoader.java
Normal file
40
test/jdk/java/nio/file/spi/CustomSystemClassLoader.java
Normal file
@@ -0,0 +1,40 @@
|
||||
/*
|
||||
* Copyright (c) 2024, 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.
|
||||
*/
|
||||
|
||||
import java.nio.file.FileSystem;
|
||||
import java.nio.file.FileSystems;
|
||||
|
||||
/**
|
||||
* Use by tests in SetDefaultProvider to test startup with a custom default file system
|
||||
* provider and a custom system class loader.
|
||||
*/
|
||||
|
||||
public class CustomSystemClassLoader extends ClassLoader {
|
||||
public CustomSystemClassLoader(ClassLoader parent) {
|
||||
super(parent);
|
||||
|
||||
// use default file system
|
||||
FileSystem fs = FileSystems.getDefault();
|
||||
var path = fs.getPath("foo");
|
||||
}
|
||||
}
|
||||
@@ -26,7 +26,7 @@
|
||||
* @bug 4313887 7006126 8142968 8178380 8183320 8210112 8266345 8263940
|
||||
* @modules jdk.jartool
|
||||
* @library /test/lib
|
||||
* @build SetDefaultProvider TestProvider m/* jdk.test.lib.process.ProcessTools
|
||||
* @build SetDefaultProvider TestProvider m/* jdk.test.lib.process.ProcessTools CustomSystemClassLoader
|
||||
* @run testng/othervm SetDefaultProvider
|
||||
* @summary Runs tests with -Djava.nio.file.spi.DefaultFileSystemProvider set on
|
||||
* the command line to override the default file system provider
|
||||
@@ -37,6 +37,7 @@ import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.Arrays;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.spi.ToolProvider;
|
||||
@@ -180,6 +181,56 @@ public class SetDefaultProvider {
|
||||
assertEquals(exitValue, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test file system provider on class path in conjunction with a custom system
|
||||
* class loader that uses the file system API during its initialization.
|
||||
*/
|
||||
public void testCustomSystemClassLoader() throws Exception {
|
||||
String testClasses = System.getProperty("test.classes");
|
||||
int exitValue = exec(SET_DEFAULT_FSP,
|
||||
"-Djava.system.class.loader=CustomSystemClassLoader",
|
||||
"-cp", ofClasspath(testClasses, classes("m")),
|
||||
"p.Main");
|
||||
assertEquals(exitValue, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a class path from the given paths.
|
||||
*/
|
||||
private String ofClasspath(String... paths) {
|
||||
return String.join(File.pathSeparator, paths);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test the file system provider located in a jar with
|
||||
* -Djava.util.zip.use.nio.for.zip.file.access=true
|
||||
* that makes ZipFile use NIO to read the jar.
|
||||
*/
|
||||
public void testClassPathWithFileSystemProviderJarAndNioForZipFile() throws Exception {
|
||||
String testClasses = System.getProperty("test.classes");
|
||||
Path fspJar = Path.of("testFileSystemProvider.jar");
|
||||
Files.deleteIfExists(fspJar);
|
||||
createFileSystemProviderJar(fspJar, Path.of(testClasses));
|
||||
String jarFile = createModularJar();
|
||||
String classpath = ofClasspath(fspJar.toString(), jarFile, testClasses);
|
||||
int exitValue = exec(SET_DEFAULT_FSP, "-Djava.util.zip.use.nio.for.zip.file.access=true",
|
||||
"-cp", classpath, "p.Main");
|
||||
assertEquals(exitValue, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the directory containing the classes for the given module.
|
||||
*/
|
||||
private static String classes(String mn) {
|
||||
String mp = System.getProperty("jdk.module.path");
|
||||
return Arrays.stream(mp.split(File.pathSeparator))
|
||||
.map(e -> Path.of(e, mn))
|
||||
.filter(Files::isDirectory)
|
||||
.findAny()
|
||||
.map(Path::toString)
|
||||
.orElseThrow();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the directory containing the classes for module "m".
|
||||
*/
|
||||
|
||||
@@ -30,14 +30,18 @@ import java.io.InputStreamReader;
|
||||
/**
|
||||
* @test
|
||||
* @summary VerifyDependencies checks readability verifies that a Linux shared
|
||||
* library has no dependency on symbols from glibc version higher than 2.28
|
||||
* library has no dependency on symbols from glibc version higher than <code>expectedVersion</code>
|
||||
* @run main VerifyDependencies
|
||||
* @requires (os.family == "linux")
|
||||
*/
|
||||
|
||||
public class VerifyDependencies {
|
||||
|
||||
static final public String EXPECTED_VERSION = "2.28";
|
||||
static final public String EXPECTED_VERSION_LEGACY = "2.17";
|
||||
static final public String EXPECTED_VERSION_VULKAN = "2.28";
|
||||
|
||||
static String expectedVersion;
|
||||
|
||||
public static void verifyLibrary(String libraryPath) throws IOException {
|
||||
Process process;
|
||||
BufferedReader reader;
|
||||
@@ -52,12 +56,12 @@ public class VerifyDependencies {
|
||||
System.out.println(line);
|
||||
if (line.contains("GLIBC_")) {
|
||||
String version = extractVersion(line);
|
||||
if (compareVersions(version, EXPECTED_VERSION) > 0) {
|
||||
if (compareVersions(version, expectedVersion) > 0) {
|
||||
throw new RuntimeException(libraryPath + " has a dependency on glibc version " + version);
|
||||
}
|
||||
}
|
||||
}
|
||||
System.out.println(libraryPath + " has no dependency on glibc version higher than " + EXPECTED_VERSION);
|
||||
System.out.println(libraryPath + " has no dependency on glibc version higher than " + expectedVersion);
|
||||
}
|
||||
|
||||
private static String extractVersion(String line) {
|
||||
@@ -125,6 +129,12 @@ public class VerifyDependencies {
|
||||
|
||||
public static void main(String[] args) throws IOException {
|
||||
String javaHome = System.getProperty("java.home");
|
||||
|
||||
String vendorVersion = System.getProperty("java.vendor.version");
|
||||
expectedVersion = vendorVersion.substring(Math.max(vendorVersion.length() - 3, 0)).compareTo("-vk") == 0
|
||||
? EXPECTED_VERSION_VULKAN : EXPECTED_VERSION_LEGACY;
|
||||
System.out.println("supporting glibc version is not less than " + expectedVersion);
|
||||
|
||||
findInDirectory(javaHome + "/bin", false);
|
||||
findInDirectory(javaHome + "/lib", true);
|
||||
}
|
||||
|
||||
40
test/jdk/jb/java/nio/file/spi/ProbeContentType.java
Normal file
40
test/jdk/jb/java/nio/file/spi/ProbeContentType.java
Normal file
@@ -0,0 +1,40 @@
|
||||
/*
|
||||
* Copyright (c) 2024, JetBrains s.r.o.
|
||||
* 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
|
||||
* @summary Verifies that Files.probeContentType() does not throw
|
||||
* when used with a custom FS provider
|
||||
* @library /test/lib
|
||||
* @build TestProvider
|
||||
* @run main/othervm -Djava.nio.file.spi.DefaultFileSystemProvider=TestProvider ProbeContentType
|
||||
*/
|
||||
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
|
||||
public class ProbeContentType {
|
||||
public static void main(String[] args) throws Exception {
|
||||
System.out.println(Files.probeContentType(Path.of(".")));
|
||||
}
|
||||
}
|
||||
@@ -74,47 +74,59 @@ public class WLPopupLocation {
|
||||
SwingUtilities.invokeAndWait(WLPopupLocation::initPopup);
|
||||
pause(robot);
|
||||
|
||||
int w1 = 150, h1 = 200;
|
||||
int x1 = 100, y1 = 100;
|
||||
System.out.printf("Action: locate to (%d, %d), set size (%d, %d)\n", x1, y1, w1, h1);
|
||||
SwingUtilities.invokeAndWait(() -> {
|
||||
popup.setVisible(true);
|
||||
popup.setSize(w1, h1);
|
||||
popup.setLocation(x1, y1);
|
||||
});
|
||||
if (popup.getSize().width != w1 || popup.getSize().height != h1) {
|
||||
throw new RuntimeException(String.format("Incorrect size (%d, %d), expected (%d, %d)", popup.getSize().width, popup.getSize().height, w1, h1));
|
||||
}
|
||||
if (popup.getBounds().x != x1 || popup.getBounds().y != y1) {
|
||||
throw new RuntimeException(String.format("Wrong location (via getBounds()): (%d, %d). Expected: (%d, %d)", popup.getBounds().x, popup.getBounds().y, x1, y1));
|
||||
}
|
||||
pause(robot);
|
||||
if (popup.getSize().width != h1 || popup.getSize().height != h1) {
|
||||
throw new RuntimeException(String.format("Incorrect size (%d, %d) after robot's wait for idle, expected (%d, %d)", popup.getSize().width, popup.getSize().height, w1, h1));
|
||||
}
|
||||
if (popup.getBounds().x != x1 || popup.getBounds().y != y1) {
|
||||
throw new RuntimeException(String.format("Wrong location (via getBounds()) after robot's wait for idle: (%d, %d). Expected: (%d, %d)", popup.getBounds().x, popup.getBounds().y, x1, y1));
|
||||
}
|
||||
try {
|
||||
int w1 = 150, h1 = 200;
|
||||
int x1 = 100, y1 = 100;
|
||||
System.out.printf("Action: locate to (%d, %d), set size (%d, %d)\n", x1, y1, w1, h1);
|
||||
SwingUtilities.invokeAndWait(() -> {
|
||||
popup.setVisible(true);
|
||||
popup.setSize(2, 5);
|
||||
popup.setSize(89, 17);
|
||||
popup.setSize(11, 3);
|
||||
popup.setSize(w1, h1);
|
||||
popup.setLocation(x1, y1);
|
||||
});
|
||||
int toleranceLevel = getTolerance();
|
||||
|
||||
int x2 = 200, y2 = 200;
|
||||
System.out.printf("Action: set popup size to (%d, %d)\n", x2, y2);
|
||||
SwingUtilities.invokeAndWait(() -> {
|
||||
popup.setLocation(x2, y2);
|
||||
});
|
||||
if (popup.getSize().width != w1 || popup.getSize().height != h1) {
|
||||
throw new RuntimeException(String.format("Incorrect size (%d, %d), expected (%d, %d)", popup.getSize().width, popup.getSize().height, w1, h1));
|
||||
System.out.printf("Real bounds: %s\n", popup.getBounds());
|
||||
if (isOutsideTolerance(w1, h1, popup.getSize().width, popup.getSize().height, toleranceLevel)) {
|
||||
throw new RuntimeException(String.format("Incorrect size (%d, %d), expected (%d, %d)", popup.getSize().width, popup.getSize().height, w1, h1));
|
||||
}
|
||||
if (isOutsideTolerance(x1, y1, popup.getBounds().x, popup.getBounds().y, toleranceLevel)) {
|
||||
throw new RuntimeException(String.format("Wrong location (via getBounds()): (%d, %d). Expected: (%d, %d)", popup.getBounds().x, popup.getBounds().y, x1, y1));
|
||||
}
|
||||
pause(robot);
|
||||
System.out.printf("Real bounds after a pause: %s\n", popup.getBounds());
|
||||
if (isOutsideTolerance(w1, h1, popup.getSize().width, popup.getSize().height, toleranceLevel)) {
|
||||
throw new RuntimeException(String.format("Incorrect size (%d, %d) after robot's wait for idle, expected (%d, %d)", popup.getSize().width, popup.getSize().height, w1, h1));
|
||||
}
|
||||
if (isOutsideTolerance(x1, y1, popup.getBounds().x, popup.getBounds().y, toleranceLevel)) {
|
||||
throw new RuntimeException(String.format("Wrong location (via getBounds()) after robot's wait for idle: (%d, %d). Expected: (%d, %d)", popup.getBounds().x, popup.getBounds().y, x1, y1));
|
||||
}
|
||||
|
||||
int x2 = 200, y2 = 200;
|
||||
System.out.printf("Action: set popup location to (%d, %d)\n", x2, y2);
|
||||
SwingUtilities.invokeAndWait(() -> {
|
||||
popup.setLocation(x2, y2);
|
||||
});
|
||||
System.out.printf("Real bounds: %s\n", popup.getBounds());
|
||||
if (isOutsideTolerance(w1, h1, popup.getSize().width, popup.getSize().height, toleranceLevel)) {
|
||||
throw new RuntimeException(String.format("Incorrect size (%d, %d), expected (%d, %d)", popup.getSize().width, popup.getSize().height, w1, h1));
|
||||
}
|
||||
if (isOutsideTolerance(x2, y2, popup.getBounds().x, popup.getBounds().y, toleranceLevel)) {
|
||||
throw new RuntimeException(String.format("Wrong location (via getBounds()): (%d, %d). Expected: (%x, %d)", popup.getBounds().x, popup.getBounds().y, x2, y2));
|
||||
}
|
||||
pause(robot);
|
||||
System.out.printf("Real bounds after a pause: %s\n", popup.getBounds());
|
||||
if (isOutsideTolerance(w1, h1, popup.getSize().width, popup.getSize().height, toleranceLevel)) {
|
||||
throw new RuntimeException(String.format("Incorrect size (%d, %d) after robot's wait for idle, expected (%d, %d)", popup.getSize().width, popup.getSize().height, w1, h1));
|
||||
}
|
||||
if (isOutsideTolerance(x2, y2, popup.getBounds().x, popup.getBounds().y, toleranceLevel)) {
|
||||
throw new RuntimeException(String.format("Wrong location (via getBounds()) after robot's wait for idle: (%d, %d). Expected: (%d, %d)", popup.getBounds().x, popup.getBounds().y, x2, y2));
|
||||
}
|
||||
} finally {
|
||||
SwingUtilities.invokeAndWait(frame::dispose);
|
||||
}
|
||||
if (popup.getBounds().x != x2 || popup.getBounds().y != y2) {
|
||||
throw new RuntimeException(String.format("Wrong location (via getBounds()): (%d, %d). Expected: (%x, %d)", popup.getBounds().x, popup.getBounds().y, x2, y2));
|
||||
}
|
||||
pause(robot);
|
||||
if (popup.getSize().width != w1 || popup.getSize().height != h1) {
|
||||
throw new RuntimeException(String.format("Incorrect size (%d, %d) after robot's wait for idle, expected (%d, %d)", popup.getSize().width, popup.getSize().height, w1, h1));
|
||||
}
|
||||
if (popup.getBounds().x != x2 || popup.getBounds().y != y2) {
|
||||
throw new RuntimeException(String.format("Wrong location (via getBounds()) after robot's wait for idle: (%d, %d). Expected: (%d, %d)", popup.getBounds().x, popup.getBounds().y, x2, y2));
|
||||
}
|
||||
SwingUtilities.invokeAndWait(frame::dispose);
|
||||
}
|
||||
|
||||
private static void pause(Robot robot) {
|
||||
@@ -122,4 +134,14 @@ public class WLPopupLocation {
|
||||
robot.delay(500);
|
||||
}
|
||||
|
||||
private static int getTolerance() {
|
||||
String uiScaleString = System.getProperty("sun.java2d.uiScale");
|
||||
int tolerance = uiScaleString == null ? 0 : (int) Math.ceil(Double.parseDouble(uiScaleString));
|
||||
System.out.printf("Scale settings: debug scale: %s, tolerance level: %d\n", uiScaleString, tolerance);
|
||||
return tolerance;
|
||||
}
|
||||
|
||||
private static boolean isOutsideTolerance(int expectedX, int expectedY, int realX, int realY, int tolerance) {
|
||||
return Math.abs(realX - expectedX) > tolerance || Math.abs(realY - expectedY) > tolerance;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -68,13 +68,14 @@ public class WLPopupMinSize {
|
||||
throw new RuntimeException("Popup minimum size is not 1000x100 but " + popupMinSize);
|
||||
}
|
||||
|
||||
int tolerance = getTolerance();
|
||||
Dimension popupSize = popup.getSize();
|
||||
System.out.println("Popup size: " + popupSize);
|
||||
if (popupSize.width != 1000 || popupSize.height != 1000) {
|
||||
if (isOutsideTolerance(1000, 1000, popupSize.width, popupSize.height, tolerance)) {
|
||||
throw new RuntimeException("Popup actual size is not 1000x100 but " + popupSize);
|
||||
}
|
||||
} finally {
|
||||
frame.dispose();
|
||||
SwingUtilities.invokeAndWait(frame::dispose);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -95,4 +96,15 @@ public class WLPopupMinSize {
|
||||
// Setting the minimum size at this point must resize the popup window
|
||||
popup.setMinimumSize(new Dimension(1000, 1000));
|
||||
}
|
||||
|
||||
private static int getTolerance() {
|
||||
String uiScaleString = System.getProperty("sun.java2d.uiScale");
|
||||
int tolerance = uiScaleString == null ? 0 : (int) Math.ceil(Double.parseDouble(uiScaleString));
|
||||
System.out.printf("Scale settings: debug scale: %s, tolerance level: %d\n", uiScaleString, tolerance);
|
||||
return tolerance;
|
||||
}
|
||||
|
||||
private static boolean isOutsideTolerance(int expectedX, int expectedY, int realX, int realY, int tolerance) {
|
||||
return Math.abs(realX - expectedX) > tolerance || Math.abs(realY - expectedY) > tolerance;
|
||||
}
|
||||
}
|
||||
@@ -76,65 +76,65 @@ public class WLPopupMoves {
|
||||
pause(robot);
|
||||
|
||||
double uiScale = getUiScale();
|
||||
System.out.printf("UI scale: %.2f.\n", uiScale);
|
||||
int pixelThreshold = uiScale == 1.0 ? 0 : (int) Math.ceil(uiScale);
|
||||
System.out.printf("Pixel threshold for verifications: %d\n", pixelThreshold);
|
||||
int tolerance = getTolerance();
|
||||
|
||||
int w = 120, h = 200;
|
||||
System.out.println("Set popup to (50, 50)");
|
||||
SwingUtilities.invokeAndWait(() -> {
|
||||
popup.setBounds(50, 50, w, h);
|
||||
popup.setVisible(true);
|
||||
});
|
||||
verifyBounds("Popup position after setting to (50, 50)\n", 50, 50, w, h, pixelThreshold);
|
||||
pause(robot);
|
||||
verifyBounds("Popup position (50, 50) after robot's pause\n", 50, 50, w, h, pixelThreshold);
|
||||
try {
|
||||
int w = 120, h = 200;
|
||||
System.out.println("Set popup to (50, 50)");
|
||||
SwingUtilities.invokeAndWait(() -> {
|
||||
popup.setBounds(50, 50, w, h);
|
||||
popup.setVisible(true);
|
||||
});
|
||||
verifyBounds("Popup position after setting to (50, 50)\n", 50, 50, w, h, tolerance);
|
||||
pause(robot);
|
||||
verifyBounds("Popup position (50, 50) after robot's pause\n", 50, 50, w, h, tolerance);
|
||||
|
||||
System.out.println("Set popup to (100, 100)");
|
||||
SwingUtilities.invokeAndWait(() -> {
|
||||
popup.setBounds(100, 100, w, h);
|
||||
});
|
||||
verifyBounds("Popup position after setting to (100, 100)\n", 100, 100, w, h, pixelThreshold);
|
||||
pause(robot);
|
||||
verifyBounds("Popup position (100, 100) after robot's pause\n", 100, 100, w, h, pixelThreshold);
|
||||
System.out.println("Set popup to (100, 100)");
|
||||
SwingUtilities.invokeAndWait(() -> {
|
||||
popup.setBounds(100, 100, w, h);
|
||||
});
|
||||
verifyBounds("Popup position after setting to (100, 100)\n", 100, 100, w, h, tolerance);
|
||||
pause(robot);
|
||||
verifyBounds("Popup position (100, 100) after robot's pause\n", 100, 100, w, h, tolerance);
|
||||
|
||||
int x1 = (int) (toolkit.getScreenSize().width / (2 * uiScale));
|
||||
int y1 = (int) (toolkit.getScreenSize().height / (2 * uiScale));
|
||||
System.out.printf("Set popup to (%d, %d)\n", x1, y1);
|
||||
SwingUtilities.invokeAndWait(() -> {
|
||||
popup.setBounds(x1, y1, w, h);
|
||||
});
|
||||
verifyBounds(String.format("Popup position after setting to (%d, %d)\n", x1, y1), x1, y1, w, h, pixelThreshold);
|
||||
pause(robot);
|
||||
verifyBounds(String.format("Popup position (%d, %d) after robot's pause\n", x1, y1), x1, y1, w, h, pixelThreshold);
|
||||
|
||||
int x2 = (int) (toolkit.getScreenSize().width / uiScale - 10 - w);
|
||||
int y2 = (int) (toolkit.getScreenSize().height / uiScale - 10 - h);
|
||||
System.out.printf("Set popup to (%d, %d). (to the bottom right corner) \n", x2, y2);
|
||||
SwingUtilities.invokeAndWait(() -> {
|
||||
popup.setBounds(x2, y2, w, h);
|
||||
});
|
||||
verifyBounds(String.format("Popup position after setting to (%d, %d)\n", x2, y2), x2, y2, w, h, pixelThreshold);
|
||||
pause(robot);
|
||||
verifyBounds(String.format("Popup position (%d, %d) after robot's pause\n", x2, y2), x2, y2, w, h, pixelThreshold);
|
||||
int x1 = (int) (toolkit.getScreenSize().width / (2 * uiScale));
|
||||
int y1 = (int) (toolkit.getScreenSize().height / (2 * uiScale));
|
||||
System.out.printf("Set popup to (%d, %d)\n", x1, y1);
|
||||
SwingUtilities.invokeAndWait(() -> {
|
||||
popup.setBounds(x1, y1, w, h);
|
||||
});
|
||||
verifyBounds(String.format("Popup position after setting to (%d, %d)\n", x1, y1), x1, y1, w, h, tolerance);
|
||||
pause(robot);
|
||||
verifyBounds(String.format("Popup position (%d, %d) after robot's pause\n", x1, y1), x1, y1, w, h, tolerance);
|
||||
|
||||
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
|
||||
GraphicsDevice device = ge.getDefaultScreenDevice();
|
||||
GraphicsConfiguration gc = device.getDefaultConfiguration();
|
||||
Insets insets = toolkit.getScreenInsets(gc);
|
||||
int x3 = (int) (toolkit.getScreenSize().width / uiScale - 10 - insets.right);
|
||||
int y3 = (int) (toolkit.getScreenSize().height / uiScale - 10 - insets.bottom);
|
||||
System.out.printf("Set popup to (%d, %d). (to the bottom right corner) \n", x3, y3);
|
||||
SwingUtilities.invokeAndWait(() -> {
|
||||
popup.setBounds(x2, y2, w, h);
|
||||
});
|
||||
int x3Relocated = x3 - w;
|
||||
int y3Relocated = y3 - h;
|
||||
verifyBounds(String.format("Popup position after setting to (%d, %d)\n", x3, y3), x3Relocated, y3Relocated, w, h, pixelThreshold);
|
||||
pause(robot);
|
||||
verifyBounds(String.format("Popup position (%d, %d) after robot's pause\n", x3, y3), x3Relocated, y3Relocated, w, h, pixelThreshold);
|
||||
int x2 = (int) (toolkit.getScreenSize().width / uiScale - 10 - w);
|
||||
int y2 = (int) (toolkit.getScreenSize().height / uiScale - 10 - h);
|
||||
System.out.printf("Set popup to (%d, %d). (to the bottom right corner) \n", x2, y2);
|
||||
SwingUtilities.invokeAndWait(() -> {
|
||||
popup.setBounds(x2, y2, w, h);
|
||||
});
|
||||
verifyBounds(String.format("Popup position after setting to (%d, %d)\n", x2, y2), x2, y2, w, h, tolerance);
|
||||
pause(robot);
|
||||
verifyBounds(String.format("Popup position (%d, %d) after robot's pause\n", x2, y2), x2, y2, w, h, tolerance);
|
||||
|
||||
SwingUtilities.invokeAndWait(frame::dispose);
|
||||
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
|
||||
GraphicsDevice device = ge.getDefaultScreenDevice();
|
||||
GraphicsConfiguration gc = device.getDefaultConfiguration();
|
||||
Insets insets = toolkit.getScreenInsets(gc);
|
||||
int x3 = (int) (toolkit.getScreenSize().width / uiScale - 10 - insets.right);
|
||||
int y3 = (int) (toolkit.getScreenSize().height / uiScale - 10 - insets.bottom);
|
||||
System.out.printf("Set popup to (%d, %d). (to the bottom right corner) \n", x3, y3);
|
||||
SwingUtilities.invokeAndWait(() -> {
|
||||
popup.setBounds(x2, y2, w, h);
|
||||
});
|
||||
int x3Relocated = x3 - w;
|
||||
int y3Relocated = y3 - h;
|
||||
verifyBounds(String.format("Popup position after setting to (%d, %d)\n", x3, y3), x3Relocated, y3Relocated, w, h, tolerance);
|
||||
pause(robot);
|
||||
verifyBounds(String.format("Popup position (%d, %d) after robot's pause\n", x3, y3), x3Relocated, y3Relocated, w, h, tolerance);
|
||||
} finally {
|
||||
SwingUtilities.invokeAndWait(frame::dispose);
|
||||
}
|
||||
}
|
||||
|
||||
private static Double getUiScale() {
|
||||
@@ -168,4 +168,15 @@ public class WLPopupMoves {
|
||||
robot.waitForIdle();
|
||||
robot.delay(500);
|
||||
}
|
||||
|
||||
private static int getTolerance() {
|
||||
String uiScaleString = System.getProperty("sun.java2d.uiScale");
|
||||
int tolerance = uiScaleString == null ? 0 : (int) Math.ceil(Double.parseDouble(uiScaleString));
|
||||
System.out.printf("Scale settings: debug scale: %s, tolerance level: %d\n", uiScaleString, tolerance);
|
||||
return tolerance;
|
||||
}
|
||||
|
||||
private static boolean isOutsideTolerance(int expectedX, int expectedY, int realX, int realY, int tolerance) {
|
||||
return Math.abs(realX - expectedX) > tolerance || Math.abs(realY - expectedY) > tolerance;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -73,15 +73,18 @@ public class WLPopupNoSize {
|
||||
SwingUtilities.invokeAndWait(WLPopupNoSize::initPopup);
|
||||
pause(robot);
|
||||
|
||||
SwingUtilities.invokeAndWait(() -> popup.setVisible(true));
|
||||
boolean isVisible1 = popup.isVisible();
|
||||
pause(robot);
|
||||
boolean isVisible2 = popup.isVisible();
|
||||
try {
|
||||
SwingUtilities.invokeAndWait(() -> popup.setVisible(true));
|
||||
boolean isVisible1 = popup.isVisible();
|
||||
pause(robot);
|
||||
boolean isVisible2 = popup.isVisible();
|
||||
|
||||
if (!isVisible1 || !isVisible2) {
|
||||
throw new RuntimeException("Expected result: popup is visible");
|
||||
if (!isVisible1 || !isVisible2) {
|
||||
throw new RuntimeException("Expected result: popup is visible");
|
||||
}
|
||||
} finally {
|
||||
SwingUtilities.invokeAndWait(frame::dispose);
|
||||
}
|
||||
SwingUtilities.invokeAndWait(frame::dispose);
|
||||
}
|
||||
|
||||
private static void pause(Robot robot) {
|
||||
|
||||
@@ -105,51 +105,45 @@ public class WLPopupResize {
|
||||
SwingUtilities.invokeAndWait(WLPopupResize::showPopup);
|
||||
pause(robot);
|
||||
|
||||
double uiScale = getUiScale();
|
||||
System.out.printf("UI scale: %.2f.\n", uiScale);
|
||||
int pixelThreshold = uiScale == 1.0 ? 0 : (int) Math.ceil(uiScale);
|
||||
System.out.printf("Pixel threshold for verifications: %d\n", pixelThreshold);
|
||||
try {
|
||||
int tolerance = getTolerance();
|
||||
|
||||
int x = 10, y = 20, w = 120, h = 80;
|
||||
System.out.println("Set popup size to (120, 80)");
|
||||
SwingUtilities.invokeAndWait(() -> {
|
||||
popup.setBounds(x, y, w, h);
|
||||
});
|
||||
Rectangle bounds = popup.getBounds();
|
||||
boolean isCorrectPosition = x - pixelThreshold <= bounds.x && bounds.x <= x + pixelThreshold &&
|
||||
y - pixelThreshold <= bounds.y && bounds.y <= y + pixelThreshold;
|
||||
if (!isCorrectPosition) {
|
||||
throw new RuntimeException("Popup position has unexpectedly changed. Bounds: " + popup.getBounds());
|
||||
}
|
||||
if (popup.getBounds().width != w || popup.getBounds().height != h) {
|
||||
throw new RuntimeException("Popup size wasn't correctly changed. Bounds: " + popup.getBounds());
|
||||
}
|
||||
pause(robot);
|
||||
System.out.println("Next checks after robot's waiting for idle.");
|
||||
int x = 10, y = 20, w = 120, h = 80;
|
||||
System.out.println("Set popup size to (120, 80)");
|
||||
SwingUtilities.invokeAndWait(() -> {
|
||||
popup.setBounds(x, y, w, h);
|
||||
});
|
||||
Rectangle bounds = popup.getBounds();
|
||||
if (isOutsideTolerance(x, y, bounds.x, bounds.y, tolerance)) {
|
||||
throw new RuntimeException("Popup position has unexpectedly changed. Bounds: " + popup.getBounds());
|
||||
}
|
||||
if (isOutsideTolerance(w, h, bounds.width, bounds.height, tolerance)) {
|
||||
throw new RuntimeException("Popup size wasn't correctly changed. Bounds: " + popup.getBounds());
|
||||
}
|
||||
pause(robot);
|
||||
System.out.println("Next checks after robot's waiting for idle.");
|
||||
|
||||
isCorrectPosition = x - pixelThreshold <= bounds.x && bounds.x <= x + pixelThreshold &&
|
||||
y - pixelThreshold <= bounds.y && bounds.y <= y + pixelThreshold;
|
||||
if (!isCorrectPosition) {
|
||||
throw new RuntimeException("Popup position has unexpectedly changed. Bounds: " + popup.getBounds());
|
||||
bounds = popup.getBounds();
|
||||
if (isOutsideTolerance(x, y, bounds.x, bounds.y, tolerance)) {
|
||||
throw new RuntimeException("Popup position has unexpectedly changed. Bounds: " + popup.getBounds());
|
||||
}
|
||||
if (isOutsideTolerance(w, h, bounds.width, bounds.height, tolerance)) {
|
||||
throw new RuntimeException("Popup size wasn't correctly changed. Bounds: " + popup.getBounds());
|
||||
}
|
||||
} finally {
|
||||
SwingUtilities.invokeAndWait(frame::dispose);
|
||||
}
|
||||
if (popup.getBounds().width != w || popup.getBounds().height != h) {
|
||||
throw new RuntimeException("Popup size wasn't correctly changed. Bounds: " + popup.getBounds());
|
||||
}
|
||||
SwingUtilities.invokeAndWait(frame::dispose);
|
||||
}
|
||||
|
||||
private static Double getUiScale() {
|
||||
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
|
||||
GraphicsDevice device = ge.getDefaultScreenDevice();
|
||||
GraphicsConfiguration gc = device.getDefaultConfiguration();
|
||||
AffineTransform transform = gc.getDefaultTransform();
|
||||
double scaleX = transform.getScaleX();
|
||||
double scaleY = transform.getScaleY();
|
||||
if (scaleX != scaleY) {
|
||||
System.out.println("Skip test due to non-uniform display scale");
|
||||
System.exit(0);
|
||||
}
|
||||
return scaleX;
|
||||
private static int getTolerance() {
|
||||
String uiScaleString = System.getProperty("sun.java2d.uiScale");
|
||||
int tolerance = uiScaleString == null ? 0 : (int) Math.ceil(Double.parseDouble(uiScaleString));
|
||||
System.out.printf("Scale settings: debug scale: %s, tolerance level: %d\n", uiScaleString, tolerance);
|
||||
return tolerance;
|
||||
}
|
||||
|
||||
private static boolean isOutsideTolerance(int expectedX, int expectedY, int realX, int realY, int tolerance) {
|
||||
return Math.abs(realX - expectedX) > tolerance || Math.abs(realY - expectedY) > tolerance;
|
||||
}
|
||||
|
||||
private static void pause(Robot robot) {
|
||||
|
||||
@@ -73,57 +73,59 @@ public class WLPopupVisibility {
|
||||
SwingUtilities.invokeAndWait(WLPopupVisibility::initPopup);
|
||||
pause(robot);
|
||||
|
||||
System.out.println("Action: set the popup visible");
|
||||
SwingUtilities.invokeAndWait(() -> popup.setVisible(true));
|
||||
boolean isVisible1 = popup.isVisible();
|
||||
pause(robot);
|
||||
boolean isVisible2 = popup.isVisible();
|
||||
try {
|
||||
System.out.println("Action: set the popup visible");
|
||||
SwingUtilities.invokeAndWait(() -> popup.setVisible(true));
|
||||
boolean isVisible1 = popup.isVisible();
|
||||
pause(robot);
|
||||
boolean isVisible2 = popup.isVisible();
|
||||
|
||||
if (!isVisible1 || !isVisible2) {
|
||||
throw new RuntimeException("Expected result: popup is visible");
|
||||
}
|
||||
if (!isVisible1 || !isVisible2) {
|
||||
throw new RuntimeException("Expected result: popup is visible");
|
||||
}
|
||||
|
||||
System.out.println("Action: set the popup disabled");
|
||||
SwingUtilities.invokeAndWait(() -> popup.setEnabled(false));
|
||||
boolean isEnabled3 = popup.isEnabled();
|
||||
boolean isVisible3 = popup.isVisible();
|
||||
pause(robot);
|
||||
boolean isEnabled4 = popup.isEnabled();
|
||||
boolean isVisible4 = popup.isVisible();
|
||||
if (isEnabled3 || isEnabled4) {
|
||||
throw new RuntimeException("Expected result: popup is disabled");
|
||||
}
|
||||
if (!isVisible3 || !isVisible4) {
|
||||
throw new RuntimeException("Expected result: disabled popup remains visible");
|
||||
}
|
||||
System.out.println("Action: set the popup disabled");
|
||||
SwingUtilities.invokeAndWait(() -> popup.setEnabled(false));
|
||||
boolean isEnabled3 = popup.isEnabled();
|
||||
boolean isVisible3 = popup.isVisible();
|
||||
pause(robot);
|
||||
boolean isEnabled4 = popup.isEnabled();
|
||||
boolean isVisible4 = popup.isVisible();
|
||||
if (isEnabled3 || isEnabled4) {
|
||||
throw new RuntimeException("Expected result: popup is disabled");
|
||||
}
|
||||
if (!isVisible3 || !isVisible4) {
|
||||
throw new RuntimeException("Expected result: disabled popup remains visible");
|
||||
}
|
||||
|
||||
System.out.println("Action: set the popup invisible");
|
||||
SwingUtilities.invokeAndWait(() -> popup.setVisible(false));
|
||||
boolean isVisible5 = popup.isVisible();
|
||||
pause(robot);
|
||||
boolean isVisible6 = popup.isVisible();
|
||||
if (isVisible5 && isVisible6) {
|
||||
throw new RuntimeException("Expected result: disabled popup remains visible");
|
||||
}
|
||||
System.out.println("Action: set the popup invisible");
|
||||
SwingUtilities.invokeAndWait(() -> popup.setVisible(false));
|
||||
boolean isVisible5 = popup.isVisible();
|
||||
pause(robot);
|
||||
boolean isVisible6 = popup.isVisible();
|
||||
if (isVisible5 && isVisible6) {
|
||||
throw new RuntimeException("Expected result: disabled popup remains visible");
|
||||
}
|
||||
|
||||
System.out.println("Action: set popup enabled and visible");
|
||||
SwingUtilities.invokeAndWait(() -> {
|
||||
popup.setVisible(true);
|
||||
popup.setEnabled(true);
|
||||
});
|
||||
boolean isEnabled7 = popup.isEnabled();
|
||||
boolean isVisible7 = popup.isVisible();
|
||||
pause(robot);
|
||||
boolean isEnabled8 = popup.isEnabled();
|
||||
boolean isVisible8 = popup.isVisible();
|
||||
if (!isEnabled7 || !isEnabled8) {
|
||||
throw new RuntimeException("Expected result: popup is enabled");
|
||||
System.out.println("Action: set popup enabled and visible");
|
||||
SwingUtilities.invokeAndWait(() -> {
|
||||
popup.setVisible(true);
|
||||
popup.setEnabled(true);
|
||||
});
|
||||
boolean isEnabled7 = popup.isEnabled();
|
||||
boolean isVisible7 = popup.isVisible();
|
||||
pause(robot);
|
||||
boolean isEnabled8 = popup.isEnabled();
|
||||
boolean isVisible8 = popup.isVisible();
|
||||
if (!isEnabled7 || !isEnabled8) {
|
||||
throw new RuntimeException("Expected result: popup is enabled");
|
||||
}
|
||||
if (!isVisible7 || !isVisible8) {
|
||||
throw new RuntimeException("Expected result: popup becoming visible");
|
||||
}
|
||||
} finally {
|
||||
SwingUtilities.invokeAndWait(frame::dispose);
|
||||
}
|
||||
if (!isVisible7 || !isVisible8) {
|
||||
throw new RuntimeException("Expected result: popup becoming visible");
|
||||
}
|
||||
|
||||
SwingUtilities.invokeAndWait(frame::dispose);
|
||||
}
|
||||
|
||||
private static void pause(Robot robot) {
|
||||
|
||||
@@ -105,6 +105,9 @@ public class KeyCodesTest extends TestFixture {
|
||||
verify("", VK_F1, "com.apple.keylayout.ABC", VK_F1);
|
||||
verify("", VK_F19, "com.apple.keylayout.ABC", VK_F19);
|
||||
|
||||
// context menu key on newer Apple keyboards
|
||||
verify("", VK_CONTEXT_MENU, "com.apple.keylayout.ABC", VK_CONTEXT_MENU);
|
||||
|
||||
// Test ANSI/ISO/JIS keyboard weirdness
|
||||
verify("\u00a7", 0x01000000+0x00A7, "com.apple.keylayout.ABC", VK_SECTION);
|
||||
verify("\u00b2", 0x01000000+0x00B2, "com.apple.keylayout.French-PC", VK_SECTION);
|
||||
|
||||
@@ -55,7 +55,7 @@ java/awt/KeyboardFocusmanager/ConsumeNextMnemonicKeyTypedTest/ConsumeNextMnemoni
|
||||
java/awt/KeyboardFocusmanager/TypeAhead/ButtonActionKeyTest/ButtonActionKeyTest.java 8257529,JBR-5397,JBR-7780 windows-x64,macosx-all,linux-all
|
||||
java/awt/KeyboardFocusmanager/TypeAhead/SubMenuShowTest/SubMenuShowTest.java JBR-5397,JBR-4074 macosx-all,windows-all
|
||||
java/awt/List/ItemEventTest/ItemEventTest.java JBR-5397,JBR-5505 macosx-all,windows-all
|
||||
java/awt/Modal/ModalFocusTransferTests/FocusTransferDWFAppModalTest.java JBR-5397 macosx-all
|
||||
java/awt/Modal/ModalFocusTransferTests/FocusTransferDWFAppModalTest.java JBR-5397,JBR-8074 macosx-all,windows-x64
|
||||
java/awt/Robot/ModifierRobotKey/ModifierRobotKeyTest.java JBR-5397,JBR-5802 macosx-all,windows-all
|
||||
java/awt/Toolkit/AWTEventListenerProxyTest/AWTEventListenerProxyTest.java JBR-6948 windows-x64
|
||||
java/awt/Toolkit/LockingKeyStateTest/LockingKeyStateTest.java JBR-5397 macosx-all
|
||||
@@ -128,6 +128,7 @@ java/awt/Choice/ChoicePopupLocation/ChoicePopupLocation.java JBR-6857,JBR-5505 m
|
||||
java/awt/Choice/NonFocusablePopupMenuTest.java JBR-7961 windows-x64
|
||||
java/awt/Choice/RemoveAllShrinkTest/RemoveAllShrinkTest.java JBR-5510,8310487,JBR-6950 linux-5.18.2-arch1-1,linux-all,windows-x64
|
||||
java/awt/Choice/ResizeAutoClosesChoice/ResizeAutoClosesChoice.java JBR-5510,JBR-5905 linux-5.18.2-arch1-1,linux-all,windows-x64
|
||||
java/awt/ColorClass/AlphaColorTest.java JBR-7253 windows-x64
|
||||
java/awt/Component/NativeInLightShow/NativeInLightShow.java JBR-7715 windows-x64
|
||||
java/awt/Component/RepaintTest.java JBR-7754 windows-x64
|
||||
java/awt/datatransfer/DragUnicodeBetweenJVMTest/DragUnicodeBetweenJVMTest.java JBR-5538 windows-x64
|
||||
|
||||
@@ -122,6 +122,7 @@ java/awt/Focus/8073453/SwingFocusTransitionTest.java JBR-7339 linux-all,windows-
|
||||
java/awt/Focus/8282640/ScrollPaneFocusBugTest.java JBR-7340 linux-all
|
||||
java/awt/Focus/ChoiceFocus/ChoiceFocus.java JBR-7341 linux-all
|
||||
java/awt/KeyboardFocusmanager/TypeAhead/EnqueueWithDialogTest/EnqueueWithDialogTest.java JBR-5210,JBR-7077 windows-all,linux-all
|
||||
java/awt/MenuBar/SeparatorsNavigation/SeparatorsNavigation.java JBR-4880,JBR-8090 windows-all,linux-all
|
||||
java/awt/MenuItem/EnableTest.java NOBUG windows-all timeout
|
||||
java/awt/Mouse/EnterExitEvents/DragWindowTest.java 8253184,JBR-5710 windows-all,linux-all
|
||||
java/awt/Robot/NonEmptyErrorStream.java JBR-6275,JBR-5510 macosx-all,linux-5.18.2-arch1-1
|
||||
|
||||
@@ -20,6 +20,7 @@ java/awt/GraphicsDevice/DisplayModes/CompareToXrandrTest.java JBR-5062 linux-all
|
||||
java/awt/GraphicsDevice/DisplayModes/UnknownRefrshRateTest.java JBR-6336 macosx-all
|
||||
java/awt/GraphicsDevice/IncorrectDisplayModeExitFullscreen.java JBR-6336 macosx-all
|
||||
java/awt/datatransfer/Clipboard/GetContentsInterruptedTest.java JBR-5086 linux-5.15.0-46-generic Ubuntu 20.04
|
||||
java/awt/Robot/Delay/InterruptOfDelay.java 8265986,JBR-8148 macosx-all,linux-x64
|
||||
java/awt/Robot/MouseLocationOnScreen/MouseLocationOnScreen.java JBR-5390 macosx-all,linux-all
|
||||
java/awt/Robot/NonEmptyErrorStream.java 8340330,JBR-5442,JBR-5510 macosx-15.0.1,macosx-15.1.1,linux-5.18.2-arch1-1
|
||||
java/awt/Robot/RobotMoveMultiscreen.java JBR-5442 linux-all
|
||||
@@ -52,6 +53,7 @@ java/awt/Insets/DialogInsets.java JBR-5510 linux-all
|
||||
java/awt/LightweightComponent/LightweightEventTest/LightweightEventTest.java 8159252,JBR-5050 windows-all,macosx-all,linux-all
|
||||
java/awt/LightweightDispatcher/LWDispatcherMemoryLeakTest.java JBR-6662 windows-all
|
||||
java/awt/Menu/OpensWithNoGrab/OpensWithNoGrab.java JBR-5510 linux-all
|
||||
java/awt/MenuBar/SeparatorsNavigation/SeparatorsNavigation.java JBR-4880,JBR-8090 windows-all,linux-all
|
||||
java/awt/Mixing/AWT_Mixing/JButtonInGlassPaneOverlapping.java 8158801,JBR-5510 windows-all,linux-all
|
||||
java/awt/Mixing/AWT_Mixing/JButtonOverlapping.java 8158801,JBR-5510 windows-all,linux-all
|
||||
java/awt/Mixing/AWT_Mixing/JColorChooserOverlapping.java 8158801,JBR-5510 windows-all,linux-all
|
||||
|
||||
@@ -47,6 +47,7 @@ javax/swing/JFileChooser/4400728/JFileChooserDefaultDirectoryTest.java initial_r
|
||||
javax/swing/JFileChooser/FileViewNPETest.java initial_runs generic-all
|
||||
javax/swing/JFormattedTextField/TestSelectedTextBackgroundColor.java initial_runs generic-all
|
||||
javax/swing/JFrame/JFrameBackgroundRefreshTest.java JBR-7471 linux-all
|
||||
javax/swing/JMenu/4213634/bug4213634.java JBR-8056 linux-aarch64
|
||||
javax/swing/JMenu/TestDisabledMenuForegroundColor.java initial_runs generic-all
|
||||
javax/swing/JPasswordField/TestSelectedTextBackgroundColor.java initial_runs generic-all
|
||||
javax/swing/JRadioButton/bug4823809.java JBR-7788 linux-all
|
||||
|
||||
@@ -124,7 +124,7 @@ java/awt/event/MouseEvent/EnterAsGrabbedEvent/EnterAsGrabbedEvent.java JBR-809 w
|
||||
java/awt/event/MouseEvent/MouseButtonsAndKeyMasksTest/MouseButtonsAndKeyMasksTest.java JBR-6578 windows-all,linux-all
|
||||
java/awt/event/MouseEvent/MouseButtonsTest/MouseButtonsTest.java JBR-810 windows-all,linux-all
|
||||
java/awt/event/MouseEvent/MouseClickTest/MouseClickTest.java JBR-52 linux-all
|
||||
java/awt/event/MouseEvent/MouseEnterExitTest.java JBR-7113 linux-all
|
||||
java/awt/event/MouseEvent/MouseEnterExitTest.java JBR-7113,JBR-8147 linux-all,windows-aarch64
|
||||
java/awt/event/MouseEvent/MultipleMouseButtonsTest/MultipleMouseButtonsTest.java 8233568,JBR-810 macosx-all,windows-all,linux-all
|
||||
java/awt/event/MouseWheelEvent/InfiniteRecursion/InfiniteRecursion.java 8204200,JBR-811 windows-all,macosx-all,linux-all
|
||||
java/awt/event/MouseWheelEvent/InfiniteRecursion/InfiniteRecursion_1.java 8204200,JBR-811 windows-all,macosx-all,linux-all
|
||||
@@ -136,6 +136,7 @@ java/awt/event/MouseWheelEvent/WheelModifier/WheelModifier.java JBR-94 windows-x
|
||||
|
||||
java/awt/event/StressTest/MouseAndKeyEventStressTest.java JBR-6479 generic-all
|
||||
java/awt/FileDialog/8003399/bug8003399.java JBR-6930 windows-all
|
||||
java/awt/FileDialog/8017487/bug8017487.java JBR-8144 windows-all
|
||||
java/awt/FileDialog/FileDialogIconTest/FileDialogIconTest.java 8160558 windows-all
|
||||
java/awt/FlowLayout/PreferredLayoutSize.java JBR-6349 linux-all
|
||||
java/awt/Focus/FocusOwnerFrameOnClick/FocusOwnerFrameOnClick.java 8081489 generic-all
|
||||
@@ -160,6 +161,7 @@ java/awt/Frame/MaximizedToOppositeScreen/MaximizedToOppositeScreenBig.java JBR-5
|
||||
java/awt/Frame/RestoreToOppositeScreen/RestoreToOppositeScreen.java 8286840 linux-all
|
||||
java/awt/dnd/AcceptDropMultipleTimes/AcceptDropMultipleTimes.java JBR-4880,JBR-6683 windows-all,linux-all
|
||||
java/awt/dnd/DragTriggerEventTest.java 8320083,JBR-6548 windows-all,linux-all
|
||||
java/awt/dnd/DragOverDropTargetPerformanceTest.java JBR-8150 windows-x64
|
||||
java/awt/dnd/DropActionChangeTest.java JBR-6489 generic-all
|
||||
java/awt/dnd/DropActionChangedTest.java JBR-6757 windows-all
|
||||
java/awt/dnd/DropTargetEnterExitTest/ExtraDragEnterTest.java 8029680 generic-all
|
||||
@@ -251,6 +253,7 @@ java/awt/datatransfer/SystemSelection/SystemSelectionSwingTest.java JBR-6393 lin
|
||||
java/awt/datatransfer/UnicodeTransferTest/UnicodeTransferTest.java 8300704 linux-all
|
||||
java/awt/LightweightComponent/LightweightDragTest.java JBR-6557 windows-all
|
||||
java/awt/LightweightComponent/LightweightEventTest/LightweightEventTest.java 8159252,JBR-5050 windows-all,macosx-all
|
||||
java/awt/LightweightDispatcher/LWDispatcherMemoryLeakTest.java JBR-8146 windows-x64
|
||||
java/awt/EventDispatchThread/HandleExceptionOnEDT/HandleExceptionOnEDT.java JBR-6633 linux-all,windows-all
|
||||
java/awt/EventDispatchThread/LoopRobustness/LoopRobustness.java 8073636,JBR-4211 macosx-all,linux-all
|
||||
java/awt/EventDispatchThread/PropertyPermissionOnEDT/PropertyPermissionOnEDT.java JBR-5225 windows-all
|
||||
@@ -260,7 +263,7 @@ java/awt/FullScreen/FullscreenWindowProps/FullscreenWindowProps.java JBR-4275,JB
|
||||
java/awt/FullScreen/NoResizeEventOnDMChangeTest/NoResizeEventOnDMChangeTest.java 7188711,8253184 linux-all,windows-all
|
||||
java/awt/FullScreen/UninitializedDisplayModeChangeTest/UninitializedDisplayModeChangeTest.java 7188711,8273617,JBR-4880,8253184 macosx-all,linux-all,windows-all
|
||||
java/awt/Focus/8013611/JDK8013611.java 8175366 windows-all,macosx-all
|
||||
java/awt/Focus/6401036/InputVerifierTest2.java JBR-7537 linux-aarch64
|
||||
java/awt/Focus/6401036/InputVerifierTest2.java JBR-7537 linux-all
|
||||
java/awt/Focus/6981400/Test1.java 8029675,JBR-5510 windows-all,macosx-all,linux-5.18.2-arch1-1
|
||||
java/awt/Focus/6981400/Test3.java 8173264 generic-all
|
||||
java/awt/Focus/8000326/SetFocusTraversalKeysEnabledTest.java JBR-4997,JBR-5729 windows-all,linux-all
|
||||
@@ -552,7 +555,7 @@ java/awt/Mouse/ExtraMouseClick/ExtraMouseClick.java 8253184,JBR-5709 windows-all
|
||||
java/awt/Mouse/MouseComboBoxTest/MouseComboBoxTest.java 8253184,JBR-6752 windows-all,linux-all
|
||||
java/awt/Mouse/MouseModifiersUnitTest/ExtraButtonDrag.java 8253184,JBR-6407 windows-all,linux-all
|
||||
java/awt/Mouse/MouseModifiersUnitTest/MouseModifiersUnitTest_Standard.java 7124407,8302787 macosx-all,windows-all
|
||||
java/awt/Mouse/RemovedComponentMouseListener/RemovedComponentMouseListener.java 8157170,8253184 macosx-all,windows-all
|
||||
java/awt/Mouse/RemovedComponentMouseListener/RemovedComponentMouseListener.java 8157170,8253184,JBR-8127 macosx-all,windows-all,linux-5.15.0-1075-aws
|
||||
java/awt/MouseAdapter/MouseAdapterUnitTest/MouseAdapterUnitTest.java 8253184 windows-all
|
||||
java/awt/MouseInfo/ComponentMousePositionTest.java 8253184 windows-all
|
||||
java/awt/MouseInfo/JContainerMousePositionTest.java 8253184 windows-all
|
||||
@@ -1077,7 +1080,7 @@ javax/swing/text/html/HTMLEditorKit/5043626/bug5043626.java JBR-5210 windows-all
|
||||
javax/swing/text/html/StyleSheet/bug4476002.java JBR-7498 linux-5.18.2-arch1-1
|
||||
javax/swing/text/html/StyleSheet/bug4936917.java JBR-899,JBR-5510 windows-all,linux-5.18.2-arch1-1
|
||||
javax/swing/plaf/metal/MetalBorders/ScaledMetalBorderTest.java#id0 JBR-5799 windows-all
|
||||
javax/swing/plaf/metal/MetalBorders/ScaledMetalBorderTest.java#id1 JBR-5779 linux-all
|
||||
javax/swing/plaf/metal/MetalBorders/ScaledMetalBorderTest.java#id1 JBR-5779 linux-all,macosx-all
|
||||
javax/swing/plaf/metal/MetalGradient/8163193/ButtonGradientTest.java 8253184,JBR-5510 windows-all,linux-5.18.2-arch1-1
|
||||
javax/swing/plaf/synth/7158712/bug7158712.java JBR-125,8322653 linux-all,windows-all,macosx-all
|
||||
javax/swing/plaf/synth/SynthButtonUI/6276188/bug6276188.java 8253184,JBR-5510,JBR-803 windows-all,linux-all,macosx-all
|
||||
@@ -1087,7 +1090,7 @@ javax/swing/JInternalFrame/5066752/bug5066752.java 8253184,JBR-5510 windows-all,
|
||||
javax/swing/JInternalFrame/8160248/JInternalFrameDraggingTest.java JBR-5510,JBR-6546 linux-5.18.2-arch1-1,windows-x64
|
||||
javax/swing/JInternalFrame/8020708/bug8020708.java JBR-4879,JBR-6512 windows-all,linux-all
|
||||
javax/swing/JInternalFrame/8069348/bug8069348.java 8253184,JBR-900 windows-all,linux-all
|
||||
javax/swing/reliability/HangDuringStaticInitialization.java JBR-6958 windows-aarch64
|
||||
javax/swing/reliability/HangDuringStaticInitialization.java JBR-6958,JBR-8145 windows-aarch64,windows-x64
|
||||
javax/swing/reliability/TaskUndJFrameProperties.java JBR-6586 windows-x64
|
||||
javax/swing/ToolTipManager/Test6256140.java 8197552 windows-all
|
||||
javax/swing/text/DefaultEditorKit/4278839/bug4278839.java CODETOOLS-7901623 windows-all
|
||||
@@ -1316,7 +1319,7 @@ java/awt/Frame/MiscUndecorated/UndecoratedInitiallyIconified.java JBR-4880 windo
|
||||
java/awt/FullScreen/SetFSWindow/FSFrame.java 8253184 windows-all
|
||||
java/awt/grab/MenuDragEvents/MenuDragEvents.java JBR-4880 windows-all
|
||||
java/awt/image/mlib/MlibOpsTest.java JBR-5225 windows-all,windows-aarch64
|
||||
java/awt/MenuBar/SeparatorsNavigation/SeparatorsNavigation.java JBR-4880 windows-all
|
||||
java/awt/MenuBar/SeparatorsNavigation/SeparatorsNavigation.java JBR-4880,JBR-8090 windows-all,linux-5.18.2-arch1-1
|
||||
javax/swing/JFileChooser/8002077/bug8002077.java JBR-4880 windows-all
|
||||
javax/swing/JFileChooser/JFileChooserSetLocationTest.java 8295804 linux-all,macosx-all,windows-all
|
||||
javax/swing/JSlider/6348946/bug6348946.java 8197552,JBR-5387 windows-all,linux-all
|
||||
|
||||
@@ -88,7 +88,13 @@ java/awt/Robot/HiDPIScreenCapture/HiDPIRobotScreenCaptureTest.java
|
||||
java/awt/Window/MultiWindowApp/ChildAlwaysOnTopTest.java nobug generic-all
|
||||
javax/swing/JInternalFrame/8160248/JInternalFrameDraggingTest.java nobug generic-all
|
||||
javax/swing/JWindow/ShapedAndTranslucentWindows/ShapedTranslucentPerPixelTranslucentGradient.java nobug generic-all
|
||||
javax/swing/plaf/metal/MetalBorders/ScaledMetalBorderTest.java nobug generic-all
|
||||
javax/swing/plaf/metal/MetalBorders/ScaledMetalBorderTest.java#id0 nobug macosx-all,linux-all,windows-all
|
||||
javax/swing/plaf/metal/MetalBorders/ScaledMetalBorderTest.java#id1 nobug macosx-all,linux-all,windows-all
|
||||
javax/swing/plaf/metal/MetalBorders/ScaledMetalBorderTest.java#id2 nobug windows-all
|
||||
javax/swing/plaf/metal/MetalBorders/ScaledMetalBorderTest.java#id3 nobug windows-all
|
||||
javax/swing/plaf/metal/MetalBorders/ScaledMetalBorderTest.java#id4 nobug windows-all
|
||||
javax/swing/plaf/metal/MetalBorders/ScaledMetalBorderTest.java#id5 nobug windows-all
|
||||
javax/swing/plaf/metal/MetalBorders/ScaledMetalBorderTest.java#id6 nobug windows-all
|
||||
jb/java/awt/CustomTitleBar/ActionListenerTest.java nobug generic-all
|
||||
jb/java/awt/CustomTitleBar/ChangeTitleBarHeightTest.java nobug generic-all
|
||||
jb/java/awt/CustomTitleBar/CheckFullScreen.java nobug generic-all
|
||||
|
||||
Reference in New Issue
Block a user