Compare commits

..

10 Commits

Author SHA1 Message Date
Nikita Gubarkov
49bed44184 JBR-9486 Vulkan: Handle VK_ERROR_OUT_OF_DATE_KHR 2025-10-16 20:32:31 +02:00
Vitaly Provodin
a270d9e6a3 clean up fixed issues from exclude lists, start 2026.1 2025-10-16 14:48:45 +04:00
Vitaly Provodin
11e3c06ba0 update exclude list on results of 25.165.38 test runs 2025-10-16 06:50:07 +04:00
Nikita Gubarkov
95c6f7c37f JBR-9481 Vulkan: OOM-safe BLIT 2025-10-15 18:44:53 +02:00
Nikita Provotorov
c4f2b64d19 JBR-5672: Wayland: support input methods.
Providing support of the "text-input-unstable-v3" protocol, except its surrounding text API (zwp_text_input_v3::set_surrounding_text + zwp_text_input_v3::delete_surrounding_text).
A new system property "sun.awt.wl.im.enabled"[=true|false] is introduced to enable/disable all the integrations with Wayland's native input methods. Set to 'true' by default.

(cherry picked from commit 1c37490f00)
2025-10-15 03:43:41 +02:00
Nikita Provotorov
9a6415585d fixup! JBR-6376: implement detecting of OS theme on linux
Adding the D-Bus libs as a dependency: it's required for src/java.desktop/linux/native/libawt/awt/dbus_interface.h

(cherry picked from commit 3fb240f4aa)
2025-10-14 20:53:18 +02:00
Nikita Gubarkov
51d7cd2afb JBR-9477 JBR API: Update local artifact group 2025-10-14 12:40:21 +02:00
bourgesl
3c66bdc1e9 JBR-9375 macOS: Right-click context menu shows blurry animation when opening
Disable NSWindow animationBehavior (=NSWindowAnimationBehaviorNone) by default except if the system property 'apple.awt.window.animation' = true
+ Fixed J2dRlsTraceLn
2025-10-14 08:16:47 +02:00
Nikita Gubarkov
e65cb43ba1 JBR-9438 Vulkan: JBR API for accessing configuration info 2025-10-13 16:52:02 +02:00
Nikita Tsarev
7c84fbe810 JBR-8353: Fix wrong order of java/wayland object destruction in DataOffer/DataSource [WLToolkit] 2025-10-10 14:29:00 +02:00
39 changed files with 4258 additions and 396 deletions

2
.github/README.md vendored
View File

@@ -161,7 +161,7 @@ Install the necessary tools, libraries, and headers with:
```
$ sudo apt-get install autoconf make build-essential libx11-dev libxext-dev libxrender-dev libxtst-dev \
libxt-dev libxrandr-dev libcups2-dev libfontconfig1-dev libasound2-dev libspeechd-dev libwayland-dev \
wayland-protocols libxkbcommon-x11-0
wayland-protocols libxkbcommon-x11-0 libdbus-1-dev
```
Get Java 23 (for instance, [Azul Zulu Builds of OpenJDK 23](https://www.azul.com/downloads/?version=java-23&os=linux&package=jdk#zulu)).

View File

@@ -40,13 +40,13 @@ else ifeq ($(call isBuildOsEnv, windows.wsl1 windows.wsl2), true)
else
M2_REPO := $(HOME)/.m2/repository
endif
M2_ARTIFACT := $(M2_REPO)/com/jetbrains/jbr-api/SNAPSHOT
M2_ARTIFACT := $(M2_REPO)/org/jetbrains/runtime/jbr-api/SNAPSHOT
M2_POM_CONTENT := \
<?xml version="1.0" encoding="UTF-8"?> \
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" \
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> \
<modelVersion>4.0.0</modelVersion> \
<groupId>com.jetbrains</groupId> \
<groupId>org.jetbrains.runtime</groupId> \
<artifactId>jbr-api</artifactId> \
<version>SNAPSHOT</version> \
</project> \
@@ -65,7 +65,8 @@ jbr-api:
$(MKDIR) -p $(M2_ARTIFACT); \
$(ECHO) '$(M2_POM_CONTENT)' > $(M2_ARTIFACT)/$(ARTIFACT_NAME).pom; \
$(CP) "$(JBR_API_DIR)/out/$(ARTIFACT_NAME).jar" "$(M2_ARTIFACT)"; \
$(ECHO) "Installed into local Maven repository as com.jetbrains:jbr-api:SNAPSHOT"; \
$(ECHO) "Installed into local Maven repository as org.jetbrains.runtime:jbr-api:SNAPSHOT"; \
cd "$(M2_ARTIFACT)" && sha256sum --binary "$(ARTIFACT_NAME).jar"; \
else \
$(ECHO) "No Maven repository found at $(M2_REPO) - skipping local installation"; \
fi

View File

@@ -36,6 +36,7 @@ WAYLAND_BASIC_PROTOCOL_FILES := \
$(WAYLAND_PROTOCOLS_ROOT)/unstable/primary-selection/primary-selection-unstable-v1.xml \
$(WAYLAND_PROTOCOLS_ROOT)/unstable/xdg-output/xdg-output-unstable-v1.xml \
$(WAYLAND_PROTOCOLS_ROOT)/unstable/relative-pointer/relative-pointer-unstable-v1.xml \
$(WAYLAND_PROTOCOLS_ROOT)/unstable/text-input/text-input-unstable-v3.xml \
$(GTK_SHELL1_PROTOCOL_PATH) \
#

View File

@@ -75,6 +75,19 @@ BOOL isColorMatchingEnabled() {
return (BOOL)colorMatchingEnabled;
}
BOOL isWindowAnimationEnabled() {
static int windowAnimationEnabled = -1;
if (windowAnimationEnabled == -1) {
JNIEnv *env = [ThreadUtilities getJNIEnvUncached];
if (env == NULL) return NO;
NSString* windowAnimationEnabledProp = [PropertiesUtilities javaSystemPropertyForKey:@"apple.awt.window.animation"
withEnv:env];
windowAnimationEnabled = [@"true" isCaseInsensitiveLike:windowAnimationEnabledProp] ? YES : NO;
J2dRlsTraceLn(J2D_TRACE_INFO, "AWTWindow_windowAnimationEnabled: %d", windowAnimationEnabled);
}
return (BOOL)windowAnimationEnabled;
}
@interface NSTitlebarAccessoryViewController (Private)
- (void)_setHidden:(BOOL)h animated:(BOOL)a;
@end
@@ -605,6 +618,10 @@ AWT_ASSERT_APPKIT_THREAD;
if (self.nsWindow == nil) return nil; // no hope either
[self.nsWindow release]; // the property retains the object already
if (!isWindowAnimationEnabled()
&& (self.nsWindow.animationBehavior != NSWindowAnimationBehaviorNone)) {
self.nsWindow.animationBehavior = NSWindowAnimationBehaviorNone;
}
if (isColorMatchingEnabled()) {
// Supported by both OpenGL & Metal pipelines
// Tell the system we have an sRGB backing store
@@ -3008,8 +3025,6 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetRoundedCor
NSWindow *w = (NSWindow *)jlong_to_ptr(windowPtr);
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
w.hasShadow = YES;
w.contentView.wantsLayer = YES;
w.contentView.layer.cornerRadius = radius;
w.contentView.layer.masksToBounds = YES;
w.contentView.layer.opaque = NO;
@@ -3024,11 +3039,11 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetRoundedCor
w.contentView.layer.borderWidth = borderWidth;
w.contentView.layer.borderColor = color.CGColor;
}
w.contentView.wantsLayer = YES;
w.backgroundColor = NSColor.clearColor;
w.opaque = NO;
// remove corner radius animation
[w.contentView.layer removeAllAnimations];
w.hasShadow = YES;
[w invalidateShadow];
}];

View File

@@ -129,6 +129,7 @@ BOOL MTLLayer_isExtraRedrawEnabled() {
[NSNull null], @"anchorPoint",
[NSNull null], @"bounds",
[NSNull null], @"contents",
[NSNull null], @"cornerRadius",
[NSNull null], @"contentsScale",
[NSNull null], @"onOrderIn",
[NSNull null], @"onOrderOut",

View File

@@ -63,6 +63,7 @@ AWT_ASSERT_APPKIT_THREAD;
[NSNull null], @"anchorPoint",
[NSNull null], @"bounds",
[NSNull null], @"contents",
[NSNull null], @"cornerRadius",
[NSNull null], @"contentsScale",
[NSNull null], @"onOrderIn",
[NSNull null], @"onOrderOut",

View File

@@ -0,0 +1,68 @@
/*
* Copyright 2025 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. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* 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.
*/
package com.jetbrains.desktop;
import com.jetbrains.exported.JBRApi;
import sun.java2d.vulkan.VKEnv;
import sun.java2d.vulkan.VKGPU;
@JBRApi.Service
@JBRApi.Provides("Vulkan")
public class Vulkan {
Vulkan() {
if (!VKEnv.isVulkanEnabled()) throw new JBRApi.ServiceNotAvailableException("Vulkan is not enabled");
}
boolean isPresentationEnabled() {
return VKEnv.isPresentationEnabled();
}
Device[] getDevices() {
return VKEnv.getDevices().map(Device::new).toArray(Device[]::new);
}
@JBRApi.Provides("Vulkan.Device")
static class Device {
private final VKGPU device;
Device(VKGPU device) {
this.device = device;
}
String getName() {
return device.getName();
}
String getTypeString() {
return device.getType().toString();
}
int getCapabilities() {
return device.getCaps();
}
}
}

View File

@@ -63,7 +63,7 @@
#define TRACE_USE_API 0
#define TRACE_REUSE 0
#define INIT_TEST 1
#define INIT_TEST 0
#define INIT_TEST_STEP 1
#define INIT_TEST_MAX 1024

View File

@@ -154,7 +154,7 @@ void VKBlitLoops_Blit(JNIEnv *env, SurfaceDataOps* src, jshort srctype, jint fil
}
if (srcInfo.bounds.x2 > srcInfo.bounds.x1 && srcInfo.bounds.y2 > srcInfo.bounds.y1) {
src->GetRasInfo(env, src, &srcInfo);
if (srcInfo.rasBase) {
while (srcInfo.rasBase) {
if (srcInfo.bounds.x1 != sx1) dx1 += (srcInfo.bounds.x1 - sx1) * (dx2 - dx1) / (sx2 - sx1);
if (srcInfo.bounds.y1 != sy1) dy1 += (srcInfo.bounds.y1 - sy1) * (dy2 - dy1) / (sy2 - sy1);
if (srcInfo.bounds.x2 != sx2) dx2 += (srcInfo.bounds.x2 - sx2) * (dx2 - dx1) / (sx2 - sx1);
@@ -165,13 +165,17 @@ void VKBlitLoops_Blit(JNIEnv *env, SurfaceDataOps* src, jshort srctype, jint fil
// Need to validate render pass early, as image may not yet be configured.
AlphaType alphaType = getSrcAlphaType(srctype);
if (!VKRenderer_Validate(SHADER_BLIT, NO_SHADER_VARIANT, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP, alphaType)) return;
if (!VKRenderer_Validate(SHADER_BLIT, NO_SHADER_VARIANT, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP, alphaType)) break;
VKDevice* device = context->surface->device;
BlitSrcType type = decodeSrcType(device, srctype);
VKTexturePoolHandle* imageHandle =
VKTexturePool_GetTexture(VKRenderer_GetTexturePool(device->renderer), sw, sh, type.format);
VKImage* image = VKTexturePoolHandle_GetTexture(imageHandle);
if (!image) {
J2dRlsTraceLn(J2D_TRACE_ERROR, "VKBlitLoops_Blit: could not get texture from the pool");
break;
}
VkDeviceSize dataSize = sh * sw * srcInfo.pixelStride;
VKBuffer buffer;
@@ -232,7 +236,9 @@ void VKBlitLoops_Blit(JNIEnv *env, SurfaceDataOps* src, jshort srctype, jint fil
VKRenderer_ExecOnCleanup(context->surface, VKBlitLoops_DisposeTexture, imageHandle);
VKRenderer_ExecOnCleanup(context->surface, VKBlitLoops_DisposeBuffer, buffer.handle);
VKRenderer_ExecOnCleanup(context->surface, VKBlitLoops_DisposeMemory, page);
} else {
break;
}
if (!srcInfo.rasBase) {
J2dRlsTraceLn(J2D_TRACE_ERROR, "VKBlitLoops_Blit: could not get raster info");
}
SurfaceData_InvokeRelease(env, src, &srcInfo);

View File

@@ -976,9 +976,12 @@ void VKRenderer_FlushSurface(VKSDOps* surface) {
uint32_t imageIndex;
VkResult acquireImageResult = device->vkAcquireNextImageKHR(device->handle, win->swapchain, UINT64_MAX,
acquireSemaphore, VK_NULL_HANDLE, &imageIndex);
if (acquireImageResult != VK_SUCCESS) {
// TODO possible suboptimal conditions
VK_IF_ERROR(acquireImageResult) {}
if (acquireImageResult != VK_SUCCESS && acquireImageResult != VK_SUBOPTIMAL_KHR) {
VK_IF_ERROR(acquireImageResult) {
// Failed, try again later.
surface->renderPass->pendingFlush = VK_TRUE;
return;
}
}
// Insert barriers to prepare both main (src) and swapchain (dst) images for blit.

View File

@@ -268,7 +268,7 @@ public class WLComponentPeer implements ComponentPeer, WLSurfaceSizeListener {
return false;
}
private static Window getToplevelFor(Component component) {
public static Window getToplevelFor(Component component) {
Container container = component instanceof Container c ? c : component.getParent();
for (Container p = container; p != null; p = p.getParent()) {
if (p instanceof Window window && !isWlPopup(window)) {
@@ -285,7 +285,7 @@ public class WLComponentPeer implements ComponentPeer, WLSurfaceSizeListener {
: c.getParent();
}
static Point getRelativeLocation(Component c, Window toplevel) {
public static Point getRelativeLocation(Component c, Window toplevel) {
Objects.requireNonNull(c);
if (toplevel == null) {
@@ -1590,7 +1590,7 @@ public class WLComponentPeer implements ComponentPeer, WLSurfaceSizeListener {
* Converts a value in the Java coordinate system into the Wayland
* surface-local coordinate system.
*/
int javaUnitsToSurfaceUnits(int value) {
public final int javaUnitsToSurfaceUnits(int value) {
if (!WLGraphicsEnvironment.isDebugScaleEnabled()) {
return value;
} else {
@@ -1600,7 +1600,7 @@ public class WLComponentPeer implements ComponentPeer, WLSurfaceSizeListener {
}
}
int javaUnitsToSurfaceSize(int value) {
public final int javaUnitsToSurfaceSize(int value) {
if (!WLGraphicsEnvironment.isDebugScaleEnabled()) {
return value;
} else {

View File

@@ -35,6 +35,7 @@ import sun.awt.PeerEvent;
import sun.awt.SunToolkit;
import sun.awt.UNIXToolkit;
import sun.awt.datatransfer.DataTransferer;
import sun.awt.wl.im.WLInputMethodMetaDescriptor;
import sun.java2d.vulkan.VKEnv;
import sun.java2d.vulkan.VKRenderQueue;
import sun.util.logging.PlatformLogger;
@@ -777,13 +778,27 @@ public class WLToolkit extends UNIXToolkit implements Runnable {
return 16777216; // 24 bits per pixel, 8 bits per channel
}
/**
* {@link java.awt.event.InputMethodEvent#getText()} can contain attributes which provide AWT/Swing with additional useful information
* (e.g. a language of the text).
*
* One kind of the possible attributes is {@link InputMethodHighlight}. It informs AWT/Swing that some parts of
* the text are in different states of the text composing process, hence they should look differently from the others.
* However, it doesn't tell how exactly they should look; this choice is left to Toolkit's implementations,
* or more precisely implementations of this method.
*
* @param highlight a state of a part of InputMethodEvent's text
*
* @return a collection of {@link TextAttribute}s (with their corresponding values as documented) informing how exactly
* such text should look or {@code null} if a mapping can't be provided.
*
* @see Toolkit#mapInputMethodHighlight(InputMethodHighlight)
*/
@Override
public Map<TextAttribute, ?> mapInputMethodHighlight( InputMethodHighlight highlight) {
if (log.isLoggable(PlatformLogger.Level.FINE)) {
log.fine("Not implemented: WLToolkit.mapInputMethodHighlight()");
}
return null;
public Map<TextAttribute, ?> mapInputMethodHighlight(InputMethodHighlight highlight) {
return WLInputMethodMetaDescriptor.mapInputMethodHighlight(highlight);
}
@Override
public boolean getLockingKeyState(int key) {
return switch (key) {
@@ -843,10 +858,7 @@ public class WLToolkit extends UNIXToolkit implements Runnable {
*/
@Override
public InputMethodDescriptor getInputMethodAdapterDescriptor() {
if (log.isLoggable(PlatformLogger.Level.FINE)) {
log.fine("Not implemented: WLToolkit.getInputMethodAdapterDescriptor()");
}
return null;
return WLInputMethodMetaDescriptor.getInstanceIfAvailableOnPlatform();
}
/**
@@ -855,9 +867,6 @@ public class WLToolkit extends UNIXToolkit implements Runnable {
*/
@Override
public boolean enableInputMethodsForTextComponent() {
if (log.isLoggable(PlatformLogger.Level.FINE)) {
log.fine("Not implemented: WLToolkit.enableInputMethodsForTextComponent()");
}
return true;
}

View File

@@ -0,0 +1,214 @@
/*
* Copyright 2025 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. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* 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.
*/
package sun.awt.wl.im;
import sun.awt.wl.im.text_input_unstable_v3.WLInputMethodDescriptorZwpTextInputV3;
import sun.util.logging.PlatformLogger;
import java.awt.AWTException;
import java.awt.Image;
import java.awt.font.TextAttribute;
import java.awt.im.InputMethodHighlight;
import java.awt.im.spi.InputMethod;
import java.awt.im.spi.InputMethodDescriptor;
import java.util.Arrays;
import java.util.Locale;
import java.util.Map;
import java.util.Objects;
/**
* Since Wayland compositors may support multiple IM protocols,
* this class is responsible for choosing one specific among them,
* and the corresponding "real" implementation of {@code InputMethodDescriptor} from a subpackage.
*/
public final class WLInputMethodMetaDescriptor implements InputMethodDescriptor {
// NB: the class loading routine has to be as fast and not demanding on resources as possible.
// Also, it has to succeed in any practically possible situation.
// E.g. if the Wayland compositor doesn't support any known IM protocol,
// it mustn't prevent this class from being loaded successfully.
// Ideally, nothing additional should happen at the loading time.
//
// This class is directly used by WLToolkit to find and instantiate an InputMethod implementation.
// See java.text.MessageFormat for the formatting syntax
private static final PlatformLogger log = PlatformLogger.getLogger("sun.awt.wl.im.WLInputMethodMetaDescriptor");
/** @see sun.awt.wl.WLToolkit#mapInputMethodHighlight(InputMethodHighlight) */
public static Map<TextAttribute, ?> mapInputMethodHighlight(final InputMethodHighlight highlight) {
// NB: The implementation is supposed to produce results exactly equal to XToolkit's implementation
// for better visual consistency.
if (highlight == null)
return null;
switch (highlight.getState()) {
case InputMethodHighlight.RAW_TEXT -> {
if (highlight.isSelected())
return imHighlightMapSelectedRawText;
else
return imHighlightMapUnselectedRawText;
}
case InputMethodHighlight.CONVERTED_TEXT -> {
if (highlight.isSelected())
return imHighlightMapSelectedConvertedText;
else
return imHighlightMapUnselectedConvertedText;
}
}
return null;
}
public static WLInputMethodMetaDescriptor getInstanceIfAvailableOnPlatform() {
final WLInputMethodMetaDescriptor result;
if (!ENABLE_NATIVE_IM_SUPPORT) {
result = null;
} else {
// For now there's only 1 possible implementation of IM,
// but if/when there are more, this method will have to choose one of them.
// It'll be good if the preferable engine can be chosen via a system property.
final InputMethodDescriptor realImDescriptor = WLInputMethodDescriptorZwpTextInputV3.getInstanceIfAvailableOnPlatform();
if (realImDescriptor != null) {
result = new WLInputMethodMetaDescriptor(realImDescriptor);
} else {
result = null;
}
}
if (log.isLoggable(PlatformLogger.Level.FINE)) {
log.fine("getInstanceIfAvailableOnPlatform(): result={0}, ENABLE_NATIVE_IM_SUPPORT={1}.", result, ENABLE_NATIVE_IM_SUPPORT);
}
return result;
}
/* java.awt.im.spi.InputMethodDescriptor methods section */
@Override
public Locale[] getAvailableLocales() throws AWTException {
final Locale[] result = realImDescriptor.getAvailableLocales();
if (log.isLoggable(PlatformLogger.Level.FINE)) {
log.fine("getAvailableLocales(): result={0}, this={1}.", Arrays.toString(result), this);
}
return result;
}
@Override
public boolean hasDynamicLocaleList() {
final boolean result = realImDescriptor.hasDynamicLocaleList();
if (log.isLoggable(PlatformLogger.Level.FINE)) {
log.fine("hasDynamicLocaleList(): result={0}, this={1}.", result, this);
}
return result;
}
@Override
public String getInputMethodDisplayName(Locale inputLocale, Locale displayLanguage) {
return realImDescriptor.getInputMethodDisplayName(inputLocale, displayLanguage);
}
@Override
public Image getInputMethodIcon(Locale inputLocale) {
return realImDescriptor.getInputMethodIcon(inputLocale);
}
@Override
public InputMethod createInputMethod() throws Exception {
final InputMethod result = realImDescriptor.createInputMethod();
if (log.isLoggable(PlatformLogger.Level.FINE)) {
log.fine("createInputMethod(): result={0}, this={1}.", result, this);
}
return result;
}
/* java.lang.Object methods section */
@Override
public String toString() {
return String.format("WLInputMethodMetaDescriptor@%d[realImDescriptor=%s]", System.identityHashCode(this), realImDescriptor);
}
/* Implementation details section */
/**
* The values are copied from XToolkit's implementation for better visual consistency with AWT on X11.
*
* @see #mapInputMethodHighlight(InputMethodHighlight)
* @see sun.awt.X11InputMethodBase
*/
private final static Map<TextAttribute, ?> imHighlightMapUnselectedRawText = Map.of(
TextAttribute.WEIGHT, TextAttribute.WEIGHT_BOLD
);
private final static Map<TextAttribute, ?> imHighlightMapUnselectedConvertedText = Map.of(
TextAttribute.INPUT_METHOD_UNDERLINE, TextAttribute.UNDERLINE_LOW_ONE_PIXEL
);
private final static Map<TextAttribute, ?> imHighlightMapSelectedRawText = Map.of(
TextAttribute.SWAP_COLORS, TextAttribute.SWAP_COLORS_ON
);
private final static Map<TextAttribute, ?> imHighlightMapSelectedConvertedText = Map.of(
TextAttribute.SWAP_COLORS, TextAttribute.SWAP_COLORS_ON
);
/**
* This flag allows disabling ALL integrations with native IMs. The idea is to allow users to disable
* unnecessary for them functionality if they face any problems because of it.
* Therefore, if it's {@code false}, the Toolkit code shouldn't use (directly or indirectly)
* any of Wayland's input methods-related APIs (e.g. the "text-input" protocol).
*/
private final static boolean ENABLE_NATIVE_IM_SUPPORT;
static {
boolean enableNativeImSupportInitializer = true;
try {
enableNativeImSupportInitializer = Boolean.parseBoolean(System.getProperty("sun.awt.wl.im.enabled", "true"));
} catch (Exception err) {
log.severe("Failed to read the value of the system property \"sun.awt.wl.im.enabled\". Assuming the default value(=true).", err);
}
ENABLE_NATIVE_IM_SUPPORT = enableNativeImSupportInitializer;
}
private final InputMethodDescriptor realImDescriptor;
private WLInputMethodMetaDescriptor(InputMethodDescriptor realImDescriptor) {
this.realImDescriptor = Objects.requireNonNull(realImDescriptor, "realImDescriptor");
}
}

View File

@@ -0,0 +1,40 @@
/*
* Copyright 2025 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. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* 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.
*/
package sun.awt.wl.im.text_input_unstable_v3;
/** Reason for the change of surrounding text or cursor position */
enum ChangeCause {
/** input method caused the change */
INPUT_METHOD(0),
/** something else than the input method caused the change */
OTHER (1);
public final int intValue;
ChangeCause(int intValue) {
this.intValue = intValue;
}
}

View File

@@ -0,0 +1,371 @@
/*
* Copyright 2025 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. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* 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.
*/
package sun.awt.wl.im.text_input_unstable_v3;
import sun.util.logging.PlatformLogger;
import javax.swing.event.CaretEvent;
import javax.swing.event.CaretListener;
import javax.swing.text.JTextComponent;
import java.awt.AWTEvent;
import java.awt.Component;
import java.awt.EventQueue;
import java.awt.Rectangle;
import java.awt.TextComponent;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.TextEvent;
import java.awt.event.TextListener;
import java.lang.ref.WeakReference;
import java.util.Objects;
/**
* This class is intended to track all the cases when a new {@code zwp_text_input_v3::set_cursor_rectangle} request
* may have to be issued. Here are the examples of such cases:
* <ul>
* <li>The caret position has changed ;
* <li>The component has been moved/resized ;
* <li>The component's window has been moved/resized ;
* <li>The component's text has been changed ;
* </ul>
*/
class ClientComponentCaretPositionTracker implements ComponentListener, CaretListener, TextListener
{
// See java.text.MessageFormat for the formatting syntax
private static final PlatformLogger log = PlatformLogger.getLogger("sun.awt.wl.im.text_input_unstable_v3.ClientComponentCaretPositionTracker");
public ClientComponentCaretPositionTracker(WLInputMethodZwpTextInputV3 im) {
this.im = new WeakReference<>(Objects.requireNonNull(im, "im"));
}
public void startTracking(final Component component) {
assert(EventQueue.isDispatchThread());
if (log.isLoggable(PlatformLogger.Level.FINER)) {
log.finer(
String.format("startTracking(component=%s): im=%s, this=%s.", component, getOwnerIm(), this),
new Throwable("Stacktrace")
);
}
stopTrackingCurrentComponent();
if (component == null) {
return;
}
trackedComponent = new WeakReference<>(component);
lastKnownClientWindowBounds = null;
try {
// Moving and changing the size causes a possible change of caret position
component.addComponentListener(this);
if (component instanceof JTextComponent jtc) {
jtc.addCaretListener(this);
isCaretListenerInstalled = true;
} else if (component instanceof TextComponent tc) {
tc.addTextListener(this);
isTextListenerInstalled = true;
}
if (log.isLoggable(PlatformLogger.Level.FINEST)) {
log.finest("startTracking(...): updated this={0}.", this);
}
} catch (Exception err) {
stopTrackingCurrentComponent();
throw err;
}
}
public void stopTrackingCurrentComponent() {
assert(EventQueue.isDispatchThread());
if (log.isLoggable(PlatformLogger.Level.FINER)) {
log.finer(String.format("stopTrackingCurrentComponent(): this=%s.", this), new Throwable("Stacktrace"));
}
final Component trackedComponentStrong = getTrackedComponentIfTracking();
if (trackedComponentStrong == null) {
return;
}
if (isTextListenerInstalled) {
isTextListenerInstalled = false;
try {
((TextComponent)trackedComponentStrong).removeTextListener(this);
} catch (Exception err) {
if (log.isLoggable(PlatformLogger.Level.WARNING)) {
log.warning(String.format("stopTrackingCurrentComponent(): exception occurred while removing the text listener from %s.", trackedComponentStrong), err);
}
}
}
if (isCaretListenerInstalled) {
isCaretListenerInstalled = false;
try {
((JTextComponent)trackedComponentStrong).removeCaretListener(this);
} catch (Exception err) {
if (log.isLoggable(PlatformLogger.Level.WARNING)) {
log.warning(String.format("stopTrackingCurrentComponent(): exception occurred while removing the caret listener from %s.", trackedComponentStrong), err);
}
}
}
try {
trackedComponentStrong.removeComponentListener(this);
} catch (Exception err) {
if (log.isLoggable(PlatformLogger.Level.WARNING)) {
log.warning(String.format("stopTrackingCurrentComponent(): exception occurred while removing the component listener from %s.", trackedComponentStrong), err);
}
}
lastKnownClientWindowBounds = null;
updatesAreDeferred = false;
if (trackedComponent != null) {
trackedComponent.clear();
trackedComponent = null;
}
}
public Component getTrackedComponentIfTracking() {
assert(EventQueue.isDispatchThread());
final Component trackedComponentStrong;
if (trackedComponent == null) {
trackedComponentStrong = null;
} else {
trackedComponentStrong = trackedComponent.get();
}
if (trackedComponentStrong == null) {
isTextListenerInstalled = false;
isCaretListenerInstalled = false;
lastKnownClientWindowBounds = null;
updatesAreDeferred = false;
if (trackedComponent != null) {
trackedComponent.clear();
trackedComponent = null;
}
}
return trackedComponentStrong;
}
public void deferUpdates() {
assert(EventQueue.isDispatchThread());
if (log.isLoggable(PlatformLogger.Level.FINER)) {
log.finer(String.format("deferUpdates(): this=%s.", this), new Throwable("Stacktrace"));
}
updatesAreDeferred = true;
}
public void resumeUpdates(final boolean discardDeferredUpdates) {
assert(EventQueue.isDispatchThread());
if (log.isLoggable(PlatformLogger.Level.FINER)) {
log.finer(String.format("resumeUpdates(%b): this=%s.", discardDeferredUpdates, this), new Throwable("Stacktrace"));
}
if (getTrackedComponentIfTracking() == null) return;
updatesAreDeferred = false;
hasDeferredUpdates = hasDeferredUpdates && !discardDeferredUpdates;
if (hasDeferredUpdates) {
updateNotify();
}
}
public boolean areUpdatesDeferred() {
assert(EventQueue.isDispatchThread());
return updatesAreDeferred;
}
/* Listening callbacks */
/** This method is intended to be called from the owning IM's {@link java.awt.im.spi.InputMethod#dispatchEvent(AWTEvent)}. */
public void onIMDispatchEvent(AWTEvent event) {
assert(EventQueue.isDispatchThread());
if (log.isLoggable(PlatformLogger.Level.FINER)) {
log.finer("onIMDispatchEvent(event={0}): this={1}.", event, this);
}
final int eventId = event.getID();
if (eventId >= MouseEvent.MOUSE_FIRST && eventId <= MouseEvent.MOUSE_LAST) {
// MouseEvent or MouseWheelEvent
if (!isCaretListenerInstalled || eventId == MouseEvent.MOUSE_WHEEL) {
// We expect no mouse events except MouseWheelEvent can change the physical position of the caret
// without changing its logical position inside the document. The logical position is handled by caretUpdate.
// The event hasn't been handled by the component yet, so the caret position couldn't have been changed yet.
// Hence, we have to postpone the updating request.
EventQueue.invokeLater(this::updateNotify);
}
}
if (eventId >= KeyEvent.KEY_FIRST && eventId <= KeyEvent.KEY_LAST) {
if ( !isCaretListenerInstalled && (!isTextListenerInstalled || eventId != KeyEvent.KEY_TYPED) ) {
EventQueue.invokeLater(this::updateNotify);
}
}
}
/** This method is intended to be called from the owning IM's {@link java.awt.im.spi.InputMethod#notifyClientWindowChange(Rectangle)}. */
public void onIMNotifyClientWindowChange(Rectangle location) {
assert(EventQueue.isDispatchThread());
if (log.isLoggable(PlatformLogger.Level.FINER)) {
log.finer("onIMNotifyClientWindowChange(location={0}): this={1}.", location, this);
}
if (location != null) {
// null means the window has become iconified or invisible, so no need to try to update the caret position.
lastKnownClientWindowBounds = location;
updateNotify();
}
}
// ComponentListener
@Override
public void componentHidden(ComponentEvent e) {}
@Override
public void componentMoved(ComponentEvent e) {
updateNotify();
}
@Override
public void componentResized(ComponentEvent e) {
updateNotify();
}
@Override
public void componentShown(ComponentEvent e) {
updateNotify();
}
// CaretListener
@Override
public void caretUpdate(CaretEvent e) {
updateNotify();
}
// TextListener
@Override
public void textValueChanged(TextEvent e) {
updateNotify();
}
/* java.lang.Object methods section */
@Override
public String toString() {
final StringBuilder sb = new StringBuilder(1024);
sb.append("ClientComponentCaretPositionTracker@").append(System.identityHashCode(this));
sb.append('{');
sb.append("isCaretListenerInstalled=").append(isCaretListenerInstalled);
sb.append(", isTextListenerInstalled=").append(isTextListenerInstalled);
sb.append(", lastKnownClientWindowBounds=").append(lastKnownClientWindowBounds);
sb.append(", updatesAreDeferred=").append(updatesAreDeferred);
sb.append(", hasDeferredUpdates=").append(hasDeferredUpdates);
sb.append(", trackedComponent=").append(trackedComponent == null ? "null" : trackedComponent.get());
sb.append('}');
return sb.toString();
}
/* Implementation details */
private final WeakReference<WLInputMethodZwpTextInputV3> im;
private WeakReference<Component> trackedComponent = null;
private boolean isCaretListenerInstalled = false;
private boolean isTextListenerInstalled = false;
private Rectangle lastKnownClientWindowBounds = null;
private boolean updatesAreDeferred = false;
private boolean hasDeferredUpdates = false;
private WLInputMethodZwpTextInputV3 getOwnerIm() {
assert(EventQueue.isDispatchThread());
final WLInputMethodZwpTextInputV3 thisImStrong;
if (this.im == null) {
thisImStrong = null;
} else {
thisImStrong = this.im.get();
}
if (thisImStrong == null) {
stopTrackingCurrentComponent();
}
return thisImStrong;
}
private void updateNotify() {
if (log.isLoggable(PlatformLogger.Level.FINEST)) {
log.finest(String.format("updateNotify(): this=%s.", this), new Throwable("Stacktrace"));
}
if (getTrackedComponentIfTracking() == null) return;
if (updatesAreDeferred) {
hasDeferredUpdates = true;
return;
}
hasDeferredUpdates = false;
final var imToNotify = getOwnerIm();
if (imToNotify != null) {
imToNotify.wlUpdateCursorRectangle(false);
}
}
}

View File

@@ -0,0 +1,58 @@
/*
* Copyright 2025 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. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* 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.
*/
package sun.awt.wl.im.text_input_unstable_v3;
/** Content hint is a bitmask to allow to modify the behavior of the text input */
enum ContentHint {
/** no special behavior */
NONE (0x0),
/** suggest word completions */
COMPLETION (0x1),
/** suggest word corrections */
SPELLCHECK (0x2),
/** switch to uppercase letters at the start of a sentence */
AUTO_CAPITALIZATION(0x4),
/** prefer lowercase letters */
LOWERCASE (0x8),
/** prefer uppercase letters */
UPPERCASE (0x10),
/** prefer casing for titles and headings (can be language dependent) */
TITLECASE (0x20),
/** characters should be hidden */
HIDDEN_TEXT (0x40),
/** typed text should not be stored */
SENSITIVE_DATA (0x80),
/** just Latin characters should be entered */
LATIN (0x100),
/** the text input is multiline */
MULTILINE (0x200);
public final int intMask;
ContentHint(int intMask) {
this.intMask = intMask;
}
}

View File

@@ -0,0 +1,67 @@
/*
* Copyright 2025 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. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* 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.
*/
package sun.awt.wl.im.text_input_unstable_v3;
/**
* The content purpose allows to specify the primary purpose of a text input.
* This allows an input method to show special purpose input panels with extra characters or to disallow some characters.
*/
enum ContentPurpose {
/** default input, allowing all characters */
NORMAL (0),
/** allow only alphabetic characters */
ALPHA (1),
/** allow only digits */
DIGITS (2),
/** input a number (including decimal separator and sign) */
NUMBER (3),
/** input a phone number */
PHONE (4),
/** input an URL */
URL (5),
/** input an email address */
EMAIL (6),
/** input a name of a person */
NAME (7),
/** input a password (combine with sensitive_data hint) */
PASSWORD(8),
/** input is a numeric password (combine with sensitive_data hint) */
PIN (9),
/** input a date */
DATE (10),
/** input a time */
TIME (11),
/** input a date and time */
DATETIME(12),
/** input for a terminal */
TERMINAL(13);
public final int intValue;
ContentPurpose(int intValue) {
this.intValue = intValue;
}
}

View File

@@ -0,0 +1,131 @@
/*
* Copyright 2025 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. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* 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.
*/
package sun.awt.wl.im.text_input_unstable_v3;
import java.util.Arrays;
import java.util.Objects;
/**
* This class accumulates changes received as
* {@code zwp_text_input_v3::preedit_string}, {@code zwp_text_input_v3::commit_string} events until
* a {@code zwp_text_input_v3::done} event is received.
*/
final class IncomingChanges
{
public IncomingChanges updatePreeditString(byte[] newPreeditStringUtf8, int newPreeditStringCursorBeginUtf8Byte, int newPreeditStringCursorEndUtf8Byte) {
this.doUpdatePreeditString = true;
this.newPreeditStringUtf8 = newPreeditStringUtf8;
this.newPreeditStringCursorBeginUtf8Byte = newPreeditStringCursorBeginUtf8Byte;
this.newPreeditStringCursorEndUtf8Byte = newPreeditStringCursorEndUtf8Byte;
this.cachedResultPreeditString = null;
return this;
}
/**
* @return {@code null} if there are no changes in the preedit string
* (i.e. {@link #updatePreeditString(byte[], int, int)} hasn't been called);
* an instance of JavaPreeditString otherwise.
* @see JavaPreeditString
*/
public JavaPreeditString getPreeditString() {
if (cachedResultPreeditString != null) {
return cachedResultPreeditString;
}
cachedResultPreeditString = doUpdatePreeditString
? JavaPreeditString.fromWaylandPreeditString(newPreeditStringUtf8, newPreeditStringCursorBeginUtf8Byte, newPreeditStringCursorEndUtf8Byte)
: null;
return cachedResultPreeditString;
}
public IncomingChanges updateCommitString(byte[] newCommitStringUtf8) {
this.doUpdateCommitString = true;
this.newCommitStringUtf8 = newCommitStringUtf8;
this.cachedResultCommitString = null;
return this;
}
/**
* @return {@code null} if there are no changes in the commit string
* (i.e. {@link #updateCommitString(byte[])} hasn't been called);
* an instance of JavaCommitString otherwise.
* @see JavaCommitString
*/
public JavaCommitString getCommitString() {
if (cachedResultCommitString != null) {
return cachedResultCommitString;
}
cachedResultCommitString = doUpdateCommitString
? JavaCommitString.fromWaylandCommitString(newCommitStringUtf8)
: null;
return cachedResultCommitString;
}
@Override
public boolean equals(Object o) {
if (o == null || getClass() != o.getClass()) return false;
IncomingChanges that = (IncomingChanges) o;
return doUpdatePreeditString == that.doUpdatePreeditString &&
newPreeditStringCursorBeginUtf8Byte == that.newPreeditStringCursorBeginUtf8Byte &&
newPreeditStringCursorEndUtf8Byte == that.newPreeditStringCursorEndUtf8Byte &&
doUpdateCommitString == that.doUpdateCommitString &&
Arrays.equals(newPreeditStringUtf8, that.newPreeditStringUtf8) &&
Arrays.equals(newCommitStringUtf8, that.newCommitStringUtf8);
}
@Override
public int hashCode() {
return Objects.hash(
doUpdatePreeditString,
Arrays.hashCode(newPreeditStringUtf8),
newPreeditStringCursorBeginUtf8Byte,
newPreeditStringCursorEndUtf8Byte,
doUpdateCommitString,
Arrays.hashCode(newCommitStringUtf8)
);
}
// zwp_text_input_v3::preedit_string
private boolean doUpdatePreeditString = false;
private byte[] newPreeditStringUtf8 = null;
private int newPreeditStringCursorBeginUtf8Byte = 0;
private int newPreeditStringCursorEndUtf8Byte = 0;
private JavaPreeditString cachedResultPreeditString = null;
// zwp_text_input_v3::commit_string
private boolean doUpdateCommitString = false;
private byte[] newCommitStringUtf8 = null;
private JavaCommitString cachedResultCommitString = null;
}

View File

@@ -0,0 +1,199 @@
/*
* Copyright 2025 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. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* 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.
*/
package sun.awt.wl.im.text_input_unstable_v3;
import java.awt.Rectangle;
import java.util.Objects;
/**
* This class encapsulates the entire state of an input context represented by an instance of {@code zwp_text_input_v3}.
*
* @see StateOfEnabled
*/
final class InputContextState {
/** pointer to a native context {@code zwp_text_input_v3} */
public final long nativeContextPtr;
public InputContextState(long nativeContextPtr) {
assert(nativeContextPtr != 0);
this.nativeContextPtr = nativeContextPtr;
}
/** @return 0 if the input context hasn't entered a surface yet. Otherwise, the native pointer to the surface. */
public long getCurrentWlSurfacePtr() {
return currentWlSurfacePtr;
}
public void setCurrentWlSurfacePtr(long currentWlSurfacePtr) {
this.currentWlSurfacePtr = currentWlSurfacePtr;
}
/**
* Notifies the InputContext that a set of changes has been sent and committed to the compositor
* via a {@code zwp_text_input_v3::commit} request. The InputContext reacts by incrementing its commit counter.
*
* @param changes represents the set of changes that have been sent and followed by a 'commit' request.
* Must not be {@code null} (but can be empty, which means only the 'commit' request has been issued).
*
* @return a new instance of {@link OutgoingBeingCommittedChanges} consisting of
* the passed changes and the new value of the commit counter.
*
* @throws NullPointerException if {@code changes} is {@code null}.
*
* @see OutgoingChanges
*/
public OutgoingBeingCommittedChanges syncWithCommittedOutgoingChanges(final OutgoingChanges changes) {
Objects.requireNonNull(changes, "changes");
// zwp_text_input_v3::done natively uses uint32_t for the serial,
// so it can't get greater than 0xFFFFFFFF.
this.commitCounter = (this.commitCounter + 1) % 0x100000000L;
return new OutgoingBeingCommittedChanges(changes, this.commitCounter);
}
public long getCommitCounter() {
return commitCounter;
}
/**
* This class represents the extended state of an {@code InputContextState} that only exists when the context
* is enabled.
*
* @param textChangeCause the property set via a {@code zwp_text_input_v3::set_text_change_cause} request. Must not be {@code null}.
* @param contentHint the property set via a {@code zwp_text_input_v3::set_content_type} request.
* @param contentPurpose the property set via a {@code zwp_text_input_v3::set_content_type} request. Must not be {@code null}.
* @param cursorRectangle the property set via a {@code zwp_text_input_v3::set_cursor_rectangle} request.
* {@code null} means "the text input does not support describing the cursor area".
*/
public record StateOfEnabled(
// zwp_text_input_v3::set_text_change_cause
ChangeCause textChangeCause,
// zwp_text_input_v3::set_content_type.hint
int contentHint,
// zwp_text_input_v3::set_content_type.purpose
ContentPurpose contentPurpose,
// zwp_text_input_v3::set_cursor_rectangle
Rectangle cursorRectangle
) {
public StateOfEnabled {
Objects.requireNonNull(textChangeCause, "textChangeCause");
Objects.requireNonNull(contentPurpose, "contentPurpose");
}
}
public StateOfEnabled getCurrentStateOfEnabled() {
return stateOfEnabled;
}
public boolean isEnabled() {
return getCurrentStateOfEnabled() != null;
}
/**
* NB: if you want to call setEnabledState(null), consider using {@code wlHandleContextGotDisabled()} of
* the owning {@link WLInputMethodZwpTextInputV3}.
*
* @param newState {@code null} to mark the InputContext as disabled,
* otherwise the InputContext will be marked as enabled and having the state as
* specified in the parameter.
*/
public void setEnabledState(StateOfEnabled newState) {
this.stateOfEnabled = newState;
}
public void syncWithAppliedIncomingChanges(final JavaPreeditString appliedPreeditString, final JavaCommitString appliedCommitString, final long doneSerial) {
this.latestAppliedPreeditString = Objects.requireNonNull(appliedPreeditString, "appliedPreeditString");
this.latestAppliedCommitString = Objects.requireNonNull(appliedCommitString, "appliedCommitString");
this.latestDoneSerial = doneSerial;
}
public JavaPreeditString getLatestAppliedPreeditString() {
return latestAppliedPreeditString;
}
public JavaCommitString getLatestAppliedCommitString() {
return latestAppliedCommitString;
}
public long getLatestDoneSerial() {
return latestDoneSerial;
}
@Override
public String toString() {
final StringBuilder sb = new StringBuilder(512);
sb.append("InputContextState@").append(System.identityHashCode(this));
sb.append('{');
sb.append("nativeContextPtr=0x").append(Long.toHexString(nativeContextPtr));
sb.append(", currentWlSurfacePtr=0x").append(Long.toHexString(currentWlSurfacePtr));
sb.append(", commitCounter=").append(commitCounter);
sb.append(", latestDoneSerial=").append(latestDoneSerial);
sb.append(", stateOfEnabled=").append(stateOfEnabled);
sb.append(", latestAppliedPreeditString=").append(latestAppliedPreeditString);
sb.append(", latestAppliedCommitString=").append(latestAppliedCommitString);
sb.append('}');
return sb.toString();
}
// zwp_text_input_v3::enter.surface / zwp_text_input_v3::leave.surface
private long currentWlSurfacePtr = 0;
// zwp_text_input_v3::commit
/**
* How many times changes to this context have been committed (through {@code zwp_text_input_v3::commit}).
* Essentially, it means the most actual version of the context's state.
*/
private long commitCounter = 0;
// zwp_text_input_v3::done.serial
/**
* The {@code serial} parameter of the latest {@code zwp_text_input_v3::done} event received.
* Essentially, it means the latest version of the context's state known/confirmed by the compositor.
*/
private long latestDoneSerial = 0;
/** {@code null} if the InputContextState is disabled. */
private StateOfEnabled stateOfEnabled = null;
/**
* The latest preedit string applied as a result of the latest {@code zwp_text_input_v3::done} event received.
* Must never be {@code null} ; if a {@code zwp_text_input_v3::done} event wasn't preceded by a
* {@code zwp_text_input_v3::preedit_string} event, the field should be set to {@link PropertiesInitials#PREEDIT_STRING}.
*/
private JavaPreeditString latestAppliedPreeditString = PropertiesInitials.PREEDIT_STRING;
/**
* The latest commit string applied as a result of the latest {@code zwp_text_input_v3::done} event received.
* Must never be {@code null} ; if a {@code zwp_text_input_v3::done} event wasn't preceded by a
* {@code zwp_text_input_v3::commit_string} event, the field should be set to {@link PropertiesInitials#COMMIT_STRING}.
*/
private JavaCommitString latestAppliedCommitString = PropertiesInitials.COMMIT_STRING;
}

View File

@@ -0,0 +1,41 @@
/*
* Copyright 2025 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. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* 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.
*/
package sun.awt.wl.im.text_input_unstable_v3;
import java.util.Objects;
record JavaCommitString(String text) {
public JavaCommitString {
Objects.requireNonNull(text, "text");
}
public static final JavaCommitString EMPTY = new JavaCommitString("");
/** Never returns {@code null}. */
public static JavaCommitString fromWaylandCommitString(byte[] utf8Bytes) {
return new JavaCommitString(Utilities.utf8BytesToJavaString(utf8Bytes));
}
}

View File

@@ -0,0 +1,105 @@
/*
* Copyright 2025 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. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* 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.
*/
package sun.awt.wl.im.text_input_unstable_v3;
import java.util.Objects;
/**
* This class represents the result of a conversion of a UTF-8 preedit string received in a
* {@code zwp_text_input_v3::preedit_string} event to a Java UTF-16 string.
* If {@link #cursorBeginCodeUnit} and/or {@link #cursorEndCodeUnit} point at UTF-16 surrogate pairs,
* they're guaranteed to point at the very beginning of them as long as {@link #fromWaylandPreeditString} is
* used to perform the conversion.
* <p>
* {@link #fromWaylandPreeditString} never returns {@code null}.
* <p>
* See the specification of {@code zwp_text_input_v3::preedit_string} event for more info about
* cursor_begin, cursor_end values.
*
* @param text The preedit text string. Mustn't be {@code null} (use an empty string instead).
* @param cursorBeginCodeUnit UTF-16 equivalent of {@code preedit_string.cursor_begin}.
* @param cursorEndCodeUnit UTF-16 equivalent of {@code preedit_string.cursor_end}.
* It's not explicitly stated in the protocol specification, but it seems to be a valid
* situation when cursor_end < cursor_begin, which means
* the highlight extends to the right from the caret
* (e.g., when the text gets selected with Shift + Left Arrow).
*/
record JavaPreeditString(String text, int cursorBeginCodeUnit, int cursorEndCodeUnit) {
public JavaPreeditString {
Objects.requireNonNull(text, "text");
}
public static final JavaPreeditString EMPTY = new JavaPreeditString("", 0, 0);
public static final JavaPreeditString EMPTY_NO_CARET = new JavaPreeditString("", -1, -1);
public static JavaPreeditString fromWaylandPreeditString(
final byte[] utf8Bytes,
final int cursorBeginUtf8Byte,
final int cursorEndUtf8Byte
) {
// Java's UTF-8 -> UTF-16 conversion doesn't like trailing NUL codepoints, so let's trim them
final int utf8BytesWithoutNulLength = Utilities.getLengthOfUtf8BytesWithoutTrailingNULs(utf8Bytes);
// cursorBeginUtf8Byte, cursorEndUtf8Byte normalized relatively to the valid values range.
final int fixedCursorBeginUtf8Byte;
final int fixedCursorEndUtf8Byte;
if (cursorBeginUtf8Byte < 0 || cursorEndUtf8Byte < 0) {
fixedCursorBeginUtf8Byte = fixedCursorEndUtf8Byte = -1;
} else {
// 0 <= cursorBeginUtf8Byte <= fixedCursorBeginUtf8Byte <= utf8BytesWithoutNulLength
fixedCursorBeginUtf8Byte = Math.min(cursorBeginUtf8Byte, utf8BytesWithoutNulLength);
// 0 <= cursorEndUtf8Byte <= fixedCursorEndUtf8Byte <= utf8BytesWithoutNulLength
fixedCursorEndUtf8Byte = Math.min(cursorEndUtf8Byte, utf8BytesWithoutNulLength);
}
final var resultText = Utilities.utf8BytesToJavaString(utf8Bytes, 0, utf8BytesWithoutNulLength);
if (fixedCursorBeginUtf8Byte < 0 || fixedCursorEndUtf8Byte < 0) {
return new JavaPreeditString(resultText, -1, -1);
}
if (resultText == null) {
assert(fixedCursorBeginUtf8Byte == 0);
assert(fixedCursorEndUtf8Byte == 0);
return JavaPreeditString.EMPTY;
}
final String javaPrefixBeforeCursorBegin = (fixedCursorBeginUtf8Byte == 0)
? ""
: Utilities.utf8BytesToJavaString(utf8Bytes, 0, fixedCursorBeginUtf8Byte);
final String javaPrefixBeforeCursorEnd = (fixedCursorEndUtf8Byte == 0)
? ""
: Utilities.utf8BytesToJavaString(utf8Bytes, 0, fixedCursorEndUtf8Byte);
return new JavaPreeditString(
resultText,
javaPrefixBeforeCursorBegin.length(),
javaPrefixBeforeCursorEnd.length()
);
}
}

View File

@@ -0,0 +1,46 @@
/*
* Copyright 2025 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. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* 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.
*/
package sun.awt.wl.im.text_input_unstable_v3;
import java.util.Objects;
/**
* This class is intended to keep changes after they get committed and until they actually get applied.
*
* @param changeSet changes that have been sent and committed to the compositor,
* but not yet confirmed by it (via a {@code zwp_text_input_v3::done} event).
* Must not be {@code null}.
* @param commitCounter the number of times a {@code zwp_text_input_v3::commit} request has been issued to
* the corresponding {@link InputContextState}.
*
* @see OutgoingChanges
*/
record OutgoingBeingCommittedChanges(OutgoingChanges changeSet, long commitCounter) {
public OutgoingBeingCommittedChanges {
Objects.requireNonNull(changeSet, "changeSet");
}
}

View File

@@ -0,0 +1,166 @@
/*
* Copyright 2025 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. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* 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.
*/
package sun.awt.wl.im.text_input_unstable_v3;
import java.awt.Rectangle;
import java.util.Objects;
/**
* This class is intended to accumulate changes for an {@link InputContextState} until
* they're sent via the set of requests
* {@code zwp_text_input_v3::enable}, {@code zwp_text_input_v3::disable}, {@code zwp_text_input_v3::set_*}
* and commited via {@code zwp_text_input_v3::commit}.
* <p>
* The reason of having to accumulate changes instead of applying them as soon as they appear is the following
* part of the {@code zpw_text_input_v3::done(serial)} event specification:
* {@code
* When the client receives a done event with a serial different than the number of past commit requests,
* it must proceed with evaluating and applying the changes as normal, except it should not change the
* current state of the zwp_text_input_v3 object. All pending state requests [...]
* on the zwp_text_input_v3 object should be sent and committed after receiving a
* zwp_text_input_v3.done event with a matching serial.
* }
*<p>
* All the properties this class includes are nullable where {@code null} means absence of this property change.
* In other words, if a property is null, the corresponding {@code zwp_text_input_v3::set_...} shouldn't be
* called when processing this instance of OutgoingChanges.
* <p>
* The modifier methods return {@code this} for method chaining.
*/
final class OutgoingChanges
{
// zwp_text_input_v3::enable / zwp_text_input_v3::disable
private Boolean newEnabled = null;
// zwp_text_input_v3::set_text_change_cause
private ChangeCause newTextChangeCause = null;
// zwp_text_input_v3::set_content_type
private Integer newContentTypeHint = null;
private ContentPurpose newContentTypePurpose = null;
// zwp_text_input_v3::set_cursor_rectangle
private Rectangle newCursorRectangle = null;
@Override
public String toString() {
final StringBuilder sb = new StringBuilder(256);
sb.append("OutgoingChanges@").append(System.identityHashCode(this));
sb.append('[');
sb.append("newEnabled=").append(newEnabled);
sb.append(", newTextChangeCause=").append(newTextChangeCause);
sb.append(", newContentTypeHint=").append(newContentTypeHint);
sb.append(", newContentTypePurpose=").append(newContentTypePurpose);
sb.append(", newCursorRectangle=").append(newCursorRectangle);
sb.append(']');
return sb.toString();
}
public OutgoingChanges setEnabledState(Boolean newEnabled) {
this.newEnabled = newEnabled;
return this;
}
public Boolean getEnabledState() { return newEnabled; }
public OutgoingChanges setTextChangeCause(ChangeCause newTextChangeCause) {
this.newTextChangeCause = newTextChangeCause;
return this;
}
public ChangeCause getTextChangeCause() { return newTextChangeCause; }
/**
* Both parameters have to be {@code null} or not null simultaneously.
*
* @throws NullPointerException if one of the parameters is {@code null} while the other one is not.
*/
public OutgoingChanges setContentType(Integer newContentTypeHint, ContentPurpose newContentTypePurpose) {
if (newContentTypeHint == null && newContentTypePurpose == null) {
this.newContentTypeHint = null;
this.newContentTypePurpose = null;
} else {
final var contentHintAllMask =
ContentHint.NONE.intMask |
ContentHint.COMPLETION.intMask |
ContentHint.SPELLCHECK.intMask |
ContentHint.AUTO_CAPITALIZATION.intMask |
ContentHint.LOWERCASE.intMask |
ContentHint.UPPERCASE.intMask |
ContentHint.TITLECASE.intMask |
ContentHint.HIDDEN_TEXT.intMask |
ContentHint.SENSITIVE_DATA.intMask |
ContentHint.LATIN.intMask |
ContentHint.MULTILINE.intMask;
if ( (Objects.requireNonNull(newContentTypeHint, "newContentTypeHint") & ~contentHintAllMask) != 0 ) {
throw new IllegalArgumentException(String.format("newContentTypeHint=%d has invalid bits set", newContentTypeHint));
}
this.newContentTypeHint = newContentTypeHint;
this.newContentTypePurpose = Objects.requireNonNull(newContentTypePurpose, "newContentTypePurpose");
}
return this;
}
public Integer getContentTypeHint() { return newContentTypeHint; }
public ContentPurpose getContentTypePurpose() { return newContentTypePurpose; }
public OutgoingChanges setCursorRectangle(Rectangle newCursorRectangle) {
this.newCursorRectangle = newCursorRectangle;
return this;
}
public Rectangle getCursorRectangle() { return newCursorRectangle; }
public OutgoingChanges appendChangesFrom(OutgoingChanges src) {
if (src == null) return this;
if (getTextChangeCause() == null) {
setTextChangeCause(src.getTextChangeCause());
}
if (getContentTypeHint() == null) {
setContentType(src.getContentTypeHint(), src.getContentTypePurpose());
}
if (getCursorRectangle() == null) {
setCursorRectangle(src.getCursorRectangle());
}
return this;
}
public boolean isEmpty() {
return (getEnabledState() == null && getTextChangeCause() == null && getContentTypeHint() == null && getCursorRectangle() == null);
}
}

View File

@@ -0,0 +1,50 @@
/*
* Copyright 2025 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. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* 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.
*/
package sun.awt.wl.im.text_input_unstable_v3;
import java.awt.Rectangle;
interface PropertiesInitials {
/** {@code zwp_text_input_v3::set_text_change_cause} */
ChangeCause TEXT_CHANGE_CAUSE = ChangeCause.INPUT_METHOD;
/** {@code zwp_text_input_v3::set_content_type} (hint) */
int CONTENT_HINT = ContentHint.NONE.intMask;
/** {@code zwp_text_input_v3::set_content_type} (purpose) */
ContentPurpose CONTENT_PURPOSE = ContentPurpose.NORMAL;
/**
* {@code zwp_text_input_v3::set_cursor_rectangle}.
* <p>
* The initial values describing a cursor rectangle are empty.
* That means the text input does not support describing the cursor area.
* If the empty values get applied, subsequent attempts to change them may have no effect.
*/
Rectangle CURSOR_RECTANGLE = null;
/** {@code zwp_text_input_v3::preedit_string} */
JavaPreeditString PREEDIT_STRING = new JavaPreeditString("", 0, 0);
/** {@code zwp_text_input_v3::commit_string} */
JavaCommitString COMMIT_STRING = new JavaCommitString("");
}

View File

@@ -0,0 +1,59 @@
/*
* Copyright 2025 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. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* 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.
*/
package sun.awt.wl.im.text_input_unstable_v3;
import java.nio.charset.StandardCharsets;
interface Utilities {
static int getLengthOfUtf8BytesWithoutTrailingNULs(final byte[] utf8Bytes) {
int lastNonNulIndex = (utf8Bytes == null) ? -1 : utf8Bytes.length - 1;
for (; lastNonNulIndex >= 0; --lastNonNulIndex) {
if (utf8Bytes[lastNonNulIndex] != 0) {
break;
}
}
return (lastNonNulIndex < 0) ? 0 : lastNonNulIndex + 1;
}
static String utf8BytesToJavaString(final byte[] utf8Bytes) {
if (utf8Bytes == null) {
return "";
}
return utf8BytesToJavaString(
utf8Bytes,
0,
// Java's UTF-8 -> UTF-16 conversion doesn't like trailing NUL codepoints, so let's trim them
getLengthOfUtf8BytesWithoutTrailingNULs(utf8Bytes)
);
}
static String utf8BytesToJavaString(final byte[] utf8Bytes, final int offset, final int length) {
return utf8Bytes == null ? "" : new String(utf8Bytes, offset, length, StandardCharsets.UTF_8);
}
}

View File

@@ -0,0 +1,203 @@
/*
* Copyright 2025 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. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* 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.
*/
package sun.awt.wl.im.text_input_unstable_v3;
import sun.awt.wl.WLToolkit;
import sun.util.logging.PlatformLogger;
import java.awt.AWTException;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.im.spi.InputMethod;
import java.awt.im.spi.InputMethodDescriptor;
import java.util.Locale;
public final class WLInputMethodDescriptorZwpTextInputV3 implements InputMethodDescriptor {
// See java.text.MessageFormat for the formatting syntax
private static final PlatformLogger log = PlatformLogger.getLogger("sun.awt.wl.im.text_input_unstable_v3.WLInputMethodDescriptorZwpTextInputV3");
public static boolean isAvailableOnPlatform() {
return initAndGetIsAvailableOnPlatform();
}
public static WLInputMethodDescriptorZwpTextInputV3 getInstanceIfAvailableOnPlatform() {
if (!isAvailableOnPlatform()) {
return null;
}
return new WLInputMethodDescriptorZwpTextInputV3();
}
/* java.awt.im.spi.InputMethodDescriptor methods section */
@Override
public Locale[] getAvailableLocales() throws AWTException {
ensureIsAvailableOnPlatform();
return getAvailableLocalesInternal();
}
@Override
public boolean hasDynamicLocaleList() {
// Since the return value of {@link #getAvailableLocales()} doesn't currently change over time,
// it doesn't make sense to return true here.
return false;
}
@Override
public String getInputMethodDisplayName(Locale inputLocale, Locale displayLanguage) {
assert isAvailableOnPlatform();
// This is how it's implemented in all other Toolkits.
//
// We ignore the input locale.
// When displaying for the default locale, rely on the localized AWT properties;
// for any other locale, fall back to English.
String name = "System Input Methods";
if (Locale.getDefault().equals(displayLanguage)) {
name = Toolkit.getProperty("AWT.HostInputMethodDisplayName", name);
}
return name;
}
@Override
public Image getInputMethodIcon(Locale inputLocale) {
return null;
}
@Override
public InputMethod createInputMethod() throws Exception {
// NB: we should avoid returning null from this method because the calling code isn't really ready to get null
ensureIsAvailableOnPlatform();
final var result = new WLInputMethodZwpTextInputV3();
if (log.isLoggable(PlatformLogger.Level.FINE)) {
log.fine("createInputMethod(): result={0}.", result);
}
return result;
}
/* java.lang.Object methods section */
@Override
public String toString() {
return String.format("WLInputMethodDescriptorZwpTextInputV3@%d", System.identityHashCode(this));
}
/* Implementation details section */
/** Used as the return value for {@link #getAvailableLocales()}. */
private volatile static Locale toolkitStartupLocale = null;
private volatile static Boolean isAvailableOnPlatform = null;
static Locale[] getAvailableLocalesInternal() {
// This is how it's implemented in XToolkit.
//
// A better implementation would be obtaining all currently installed and enabled input sources
// (like on GNOME Settings -> Keyboard -> Input Sources) and mapping them to locales.
// However, there seem no universal Wayland API for that, so it seems can't be implemented reliably.
//
// So leaving as is at the moment.
//
// TODO: research how to implement this better along with {@link #hasDynamicLocaleList}
return new Locale[]{ (Locale)initAndGetToolkitStartupLocale().clone() };
}
private static Locale initAndGetToolkitStartupLocale() {
if (toolkitStartupLocale == null) {
synchronized (WLInputMethodDescriptorZwpTextInputV3.class) {
if (toolkitStartupLocale == null) {
toolkitStartupLocale = WLToolkit.getStartupLocale();
}
}
}
if (log.isLoggable(PlatformLogger.Level.CONFIG)) {
log.config("initAndGetToolkitStartupLocale(): toolkitStartupLocale={0}.", toolkitStartupLocale);
}
return toolkitStartupLocale;
}
private static boolean initAndGetIsAvailableOnPlatform() {
if (isAvailableOnPlatform == null) {
synchronized (WLInputMethodDescriptorZwpTextInputV3.class) {
try {
if (isAvailableOnPlatform == null) {
isAvailableOnPlatform = checkIfAvailableOnPlatform();
}
} catch (Exception err) {
if (log.isLoggable(PlatformLogger.Level.WARNING)) {
log.warning("Failed to check whether the IM protocol is supported on the system", err);
}
isAvailableOnPlatform = false;
}
}
}
if (log.isLoggable(PlatformLogger.Level.CONFIG)) {
log.config("initAndGetIsAvailableOnPlatform(): isAvailableOnPlatform={0}.", isAvailableOnPlatform);
}
return isAvailableOnPlatform;
}
private static void ensureIsAvailableOnPlatform() throws AWTException {
if (!isAvailableOnPlatform()) {
throw new AWTException("sun.awt.wl.im.text_input_unstable_v3.WLInputMethodZwpTextInputV3 is not supported on this system");
}
}
private WLInputMethodDescriptorZwpTextInputV3() {
assert isAvailableOnPlatform();
initAndGetToolkitStartupLocale();
}
/* JNI downcalls section */
/**
* This method checks if {@link WLInputMethodZwpTextInputV3} can function on this system.
* Basically, it means the Wayland compositor supports a minimal sufficient subset of the required protocols
* (currently the set only includes the "text-input-unstable-v3" protocol).
*
* @return true if {@link WLInputMethodZwpTextInputV3} can function on this system, false otherwise.
* @see <a href="https://wayland.app/protocols/text-input-unstable-v3">text-input-unstable-v3</a>
*/
private static native boolean checkIfAvailableOnPlatform();
}

View File

@@ -34,7 +34,6 @@
#include "sun_awt_wl_WLDataOffer.h"
#include "wayland-client-protocol.h"
// Types
enum DataTransferProtocol
@@ -271,9 +270,6 @@ DataSource_setDnDActions(const struct DataSource *source, uint32_t actions);
static struct DataOffer *
DataOffer_create(struct DataDevice *dataDevice, enum DataTransferProtocol protocol, void *waylandObject);
static void
DataOffer_destroy(struct DataOffer *offer);
static void
DataOffer_receive(struct DataOffer *offer, const char *mime, int fd);
@@ -334,7 +330,7 @@ DataOffer_create(struct DataDevice *dataDevice, enum DataTransferProtocol protoc
return NULL;
}
// Cleared in DataOffer_destroy
// Cleared in DataOffer.destroy()
jobject globalRef = (*env)->NewGlobalRef(env, obj);
EXCEPTION_CLEAR(env);
@@ -362,29 +358,6 @@ DataOffer_create(struct DataDevice *dataDevice, enum DataTransferProtocol protoc
return offer;
}
static void
DataOffer_destroy(struct DataOffer *offer)
{
if (offer == NULL) {
return;
}
if (offer->javaObject != NULL) {
JNIEnv *env = getEnv();
assert(env != NULL);
(*env)->DeleteGlobalRef(env, offer->javaObject);
offer->javaObject = NULL;
}
if (offer->protocol == DATA_TRANSFER_PROTOCOL_WAYLAND) {
wl_data_offer_destroy(offer->wlDataOffer);
} else if (offer->protocol == DATA_TRANSFER_PROTOCOL_PRIMARY_SELECTION) {
zwp_primary_selection_offer_v1_destroy(offer->zwpPrimarySelectionOffer);
}
free(offer);
}
static void
DataOffer_receive(struct DataOffer *offer, const char *mime, int fd)
{
@@ -1053,11 +1026,6 @@ Java_sun_awt_wl_WLDataSource_destroyImpl(JNIEnv *env, jclass clazz, jlong native
return;
}
if (source->javaObject != NULL) {
(*env)->DeleteGlobalRef(env, source->javaObject);
source->javaObject = NULL;
}
if (source->protocol == DATA_TRANSFER_PROTOCOL_WAYLAND) {
wl_data_source_destroy(source->wlDataSource);
} else if (source->protocol == DATA_TRANSFER_PROTOCOL_PRIMARY_SELECTION) {
@@ -1072,6 +1040,11 @@ Java_sun_awt_wl_WLDataSource_destroyImpl(JNIEnv *env, jclass clazz, jlong native
wl_surface_destroy(source->dragIcon);
}
if (source->javaObject != NULL) {
(*env)->DeleteGlobalRef(env, source->javaObject);
source->javaObject = NULL;
}
free(source);
}
@@ -1152,8 +1125,25 @@ JNIEXPORT void JNICALL Java_sun_awt_wl_WLDataSource_setDnDIconImpl
JNIEXPORT void JNICALL
Java_sun_awt_wl_WLDataOffer_destroyImpl(JNIEnv *env, jclass clazz, jlong nativePtr)
{
assert(env != NULL);
struct DataOffer *offer = jlong_to_ptr(nativePtr);
DataOffer_destroy(offer);
if (offer == NULL) {
return;
}
if (offer->protocol == DATA_TRANSFER_PROTOCOL_WAYLAND) {
wl_data_offer_destroy(offer->wlDataOffer);
} else if (offer->protocol == DATA_TRANSFER_PROTOCOL_PRIMARY_SELECTION) {
zwp_primary_selection_offer_v1_destroy(offer->zwpPrimarySelectionOffer);
}
if (offer->javaObject != NULL) {
(*env)->DeleteGlobalRef(env, offer->javaObject);
offer->javaObject = NULL;
}
free(offer);
}
JNIEXPORT void JNICALL

View File

@@ -90,6 +90,8 @@ struct wl_data_device_manager *wl_ddm = NULL;
struct zwp_primary_selection_device_manager_v1 *zwp_selection_dm = NULL; // optional, check for NULL before use
struct zxdg_output_manager_v1 *zxdg_output_manager_v1 = NULL; // optional, check for NULL before use
struct zwp_text_input_manager_v3 *zwp_text_input_manager = NULL; // optional, check for NULL before use
static uint32_t num_of_outstanding_sync = 0;
// This group of definitions corresponds to declarations from awt.h
@@ -621,6 +623,14 @@ registry_global(void *data, struct wl_registry *wl_registry,
WLOutputXdgOutputManagerBecameAvailable();
process_new_listener_before_end_of_init();
}
} else if (strcmp(interface, zwp_text_input_manager_v3_interface.name) == 0) {
// If the requested version is higher than the provided one by the compositor,
// the event loop may shut down as soon as it gets launched (wl_display_dispatch will return -1),
// so let's protect from this since the component being obtained is not vital for work.
const uint32_t versionToBind = 1;
if (versionToBind <= version) {
zwp_text_input_manager = wl_registry_bind(wl_registry, name, &zwp_text_input_manager_v3_interface, versionToBind);
}
}
#ifdef WAKEFIELD_ROBOT

View File

@@ -31,7 +31,7 @@
#include "primary-selection-unstable-v1.h"
#include "viewporter.h"
#include "relative-pointer-unstable-v1.h"
#include "text-input-unstable-v3.h"
#include "jvm_md.h"
#include "jni_util.h"
@@ -69,6 +69,8 @@ extern struct wl_data_device_manager *wl_ddm;
extern struct zwp_primary_selection_device_manager_v1 *zwp_selection_dm; // optional, check for NULL before use
extern struct zxdg_output_manager_v1 *zxdg_output_manager_v1; // optional, check for NULL before use
extern struct zwp_relative_pointer_manager_v1* relative_pointer_manager;
extern struct zwp_text_input_manager_v3 *zwp_text_input_manager; // optional, check for NULL before use
JNIEnv *getEnv();
int wlFlushToServer(JNIEnv* env);

View File

@@ -0,0 +1,687 @@
/*
* Copyright 2025 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. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* 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.
*/
#include "sun_awt_wl_im_text_input_unstable_v3_WLInputMethodDescriptorZwpTextInputV3.h"
#include "sun_awt_wl_im_text_input_unstable_v3_WLInputMethodZwpTextInputV3.h"
#include "WLToolkit.h" // wl_seat, zwp_text_input_*, uint[...]_t, int[...]_t
#include "JNIUtilities.h"
#include <stdbool.h> // bool, true, false
#include <string.h> // memset, strlen
#include <stdlib.h> // malloc, free
#include <assert.h> // assert
static bool checkIfTheImplementationIsAvailable() {
return (zwp_text_input_manager == NULL) ? false : true;
}
static struct {
jclass wlInputMethodClass;
/// `sun.awt.wl.im.text_input_unstable_v3.WLInputMethodZwpTextInputV3#zwp_text_input_v3_onEnter`
jmethodID mID_tiOnEnter;
/// `sun.awt.wl.im.text_input_unstable_v3.WLInputMethodZwpTextInputV3#zwp_text_input_v3_onLeave`
jmethodID mID_tiOnLeave;
/// `sun.awt.wl.im.text_input_unstable_v3.WLInputMethodZwpTextInputV3#zwp_text_input_v3_onPreeditString`
jmethodID mID_tiOnPreeditString;
/// `sun.awt.wl.im.text_input_unstable_v3.WLInputMethodZwpTextInputV3#zwp_text_input_v3_onCommitString`
jmethodID mID_tiOnCommitString;
/// `sun.awt.wl.im.text_input_unstable_v3.WLInputMethodZwpTextInputV3#zwp_text_input_v3_onDeleteSurroundingText`
jmethodID mID_tiOnDeleteSurroundingText;
/// `sun.awt.wl.im.text_input_unstable_v3.WLInputMethodZwpTextInputV3#zwp_text_input_v3_onDone`
jmethodID mID_tiOnDone;
} jniIDs = {0};
// ================================================= IMContext section ================================================
static void IMContext_zwp_text_input_v3_onEnter(void*, struct zwp_text_input_v3*, struct wl_surface*);
static void IMContext_zwp_text_input_v3_onLeave(void*, struct zwp_text_input_v3*, struct wl_surface*);
static void IMContext_zwp_text_input_v3_onPreeditString(void*, struct zwp_text_input_v3*, const char*, int32_t, int32_t);
static void IMContext_zwp_text_input_v3_onCommitString(void*, struct zwp_text_input_v3*, const char*);
static void IMContext_zwp_text_input_v3_onDeleteSurroundingText(void*, struct zwp_text_input_v3*, uint32_t, uint32_t);
static void IMContext_zwp_text_input_v3_onDone(void*, struct zwp_text_input_v3*, uint32_t);
static const struct zwp_text_input_v3_listener IMContext_zwp_text_input_v3_listener = {
.enter = &IMContext_zwp_text_input_v3_onEnter,
.leave = &IMContext_zwp_text_input_v3_onLeave,
.preedit_string = &IMContext_zwp_text_input_v3_onPreeditString,
.commit_string = &IMContext_zwp_text_input_v3_onCommitString,
.delete_surrounding_text = &IMContext_zwp_text_input_v3_onDeleteSurroundingText,
.done = &IMContext_zwp_text_input_v3_onDone,
};
/**
* The native-side counterpart of `sun.awt.wl.im.text_input_unstable_v3.WLInputMethodZwpTextInputV3`.
* On Java side these contexts are created and destroyed through
* `WLInputMethod#createNativeContext` and `WLInputMethod#destroyNativeContext` respectively.
*
* `IMContext` and `WLInputMethodZwpTextInputV3` are related in a 1:1 ratio - an instance of `WLInputMethodZwpTextInputV3` holds no more than 1
* instance of `IMContext` and an instance of `IMContext` only belongs to 1 instance of `WLInputMethodZwpTextInputV3`.
*/
struct IMContext {
/// A global reference to the instance of `sun.awt.wl.im.text_input_unstable_v3.WLInputMethodZwpTextInputV3` owning this instance of `IMContext`.
jobject wlInputMethodOwner;
/// Represents an input context for the entire `text-input-unstable-v3` protocol.
struct zwp_text_input_v3 *textInput;
};
/**
* Creates and fully initializes an instance of `struct IMContext`.
*
* @param wlInputMethodOwnerRefToCopy a reference to the owning instance of `sun.awt.wl.im.text_input_unstable_v3.WLInputMethodZwpTextInputV3`.
* NB: the reference will be copied via `NewGlobalRef` and no longer used.
* @return `null` if it has failed to create or completely initialize a new instance.
* In this case a corresponding exception of class `java.awt.AWTException` or of an unchecked exception class
* will be raised in @p env
*/
static struct IMContext* IMContext_Create(JNIEnv * const env, jobject wlInputMethodOwnerRefToCopy) {
struct wl_seat * const wlSeat = wl_seat;
struct zwp_text_input_manager_v3 * const textInputManager = zwp_text_input_manager;
struct IMContext *result = NULL;
jobject wlInputMethodOwner = NULL;
struct zwp_text_input_v3 *textInput = NULL;
if (wlSeat == NULL) {
JNU_ThrowByName(env, "java/awt/AWTException", "IMContext_Create: no wl_seat is available");
goto failure;
}
if (textInputManager == NULL) {
JNU_ThrowNullPointerException(env, "IMContext_Create: textInputManager is NULL");
goto failure;
}
wlInputMethodOwner = (*env)->NewGlobalRef(env, wlInputMethodOwnerRefToCopy);
if (wlInputMethodOwner == NULL) {
if ((*env)->ExceptionCheck(env) == JNI_FALSE) {
JNU_ThrowOutOfMemoryError(env, "IMContext_Create: NewGlobalRef(wlInputMethodOwnerRefToCopy) failed");
}
goto failure;
}
wlInputMethodOwnerRefToCopy = NULL; // To avoid misusages
result = malloc(sizeof(struct IMContext));
if (result == NULL) {
JNU_ThrowOutOfMemoryError(env, "IMContext_Create: malloc(sizeof(struct IMContext)) failed");
goto failure;
}
textInput = zwp_text_input_manager_v3_get_text_input(textInputManager, wlSeat);
if (textInput == NULL) {
JNU_ThrowByName(env, "java/awt/AWTException", "IMContext_Create: failed to obtain a new instance of zwp_text_input_v3");
goto failure;
}
// WLToolkit dispatches (almost) all native Wayland events on EDT, not on its thread.
// If it didn't, the callbacks being set here might be called even before this function finishes, hence even before
// the constructor of `sun.awt.wl.im.text_input_unstable_v3.WLInputMethodZwpTextInputV3` finishes (because the constructor gets called on the
// EDT rather than on the toolkit thread).
// In that case we would have to take it into account while implementing the callbacks and
// `WLInputMethodZwpTextInputV3` class in general.
zwp_text_input_v3_add_listener(textInput, &IMContext_zwp_text_input_v3_listener, result);
(void)memset(result, 0, sizeof(struct IMContext));
result->wlInputMethodOwner = wlInputMethodOwner;
result->textInput = textInput;
return result;
failure:
if (textInput != NULL) {
zwp_text_input_v3_destroy(textInput);
textInput = NULL;
}
if (result != NULL) {
free(result);
result = NULL;
}
if (wlInputMethodOwner != NULL) {
(*env)->DeleteGlobalRef(env, wlInputMethodOwner);
wlInputMethodOwner = NULL;
}
return NULL;
}
/// Destroys the context previously created by IMContext_Create
static void IMContext_Destroy(JNIEnv * const env, struct IMContext * const imContext) {
assert(env != NULL);
assert(imContext != NULL);
if (imContext->textInput != NULL) {
zwp_text_input_v3_destroy(imContext->textInput);
imContext->textInput = NULL;
}
if (imContext->wlInputMethodOwner != NULL) {
(*env)->DeleteGlobalRef(env, imContext->wlInputMethodOwner);
imContext->wlInputMethodOwner = NULL;
}
free(imContext);
}
// The IMContext_zwp_text_input_v3_on* callbacks are supposed to be as a thin bridge to
// `WLInputMethodZwpTextInputV3`'s JNI upcalls as possible in terms of contained logic.
// Generally they should only invoke the corresponding upcalls with the received parameters.
//
// Exceptions after making JNI upcalls to WLInputMethodZwpTextInputV3 are checked (via JNU_CHECK_EXCEPTION),
// but not suppressed on a purpose: all the corresponding Java methods already handles any java.lang.Exception.
// So if an exception leaves any of those methods, it's something really strange and it's better to let WLToolkit
// get to know about it rather than log and try to continue the normal path.
// The checks are just made to suppress -Xcheck:jni warnings.
static void IMContext_zwp_text_input_v3_onEnter(
void * const ctx,
struct zwp_text_input_v3 * const textInput,
struct wl_surface * const surface
) {
const struct IMContext * const imContext = ctx;
JNIEnv *env = NULL;
if (imContext == NULL) {
return;
}
env = getEnv();
if (env == NULL) {
return;
}
(*env)->CallVoidMethod(env, imContext->wlInputMethodOwner, jniIDs.mID_tiOnEnter, ptr_to_jlong(surface));
JNU_CHECK_EXCEPTION(env);
}
static void IMContext_zwp_text_input_v3_onLeave(
void * const ctx,
struct zwp_text_input_v3 * const textInput,
struct wl_surface * const surface
) {
const struct IMContext * const imContext = ctx;
JNIEnv *env = NULL;
if (imContext == NULL) {
return;
}
env = getEnv();
if (env == NULL) {
return;
}
(*env)->CallVoidMethod(env, imContext->wlInputMethodOwner, jniIDs.mID_tiOnLeave, ptr_to_jlong(surface));
JNU_CHECK_EXCEPTION(env);
}
/**
* Converts a UTF-8 string to a Java byte array, throwing an OutOfMemoryError if the allocation fails. Another kind
* of exceptions may also appear, according to the implementation of 'NewByteArray' and 'SetByteArrayRegion'.
* Regardless of the returned value, always check 'env->ExceptionCheck()' after each call of this function.
*
* @param utf8Str UTF-8 string to convert.
* @param utf8StrSizeInBytes size of the UTF-8 string in bytes, or a negative value to ask the function to
* calculate it manually.
* @param env JNI environment. Mustn't be NULL.
* @param oomMessage message to use in the OutOfMemoryError exception if it appears. Mustn't be NULL.
*
* @return a local JNI reference to a Java byte array or NULL if 'utf8Str' is NULL,
* an exception occurred,
* or 'NewByteArray' returned NULL for some other reason.
*/
static jbyteArray utf8StrToJByteArrayOrThrowOOM(
const char * const utf8Str,
ssize_t utf8StrSizeInBytes,
JNIEnv * const env,
const char * const oomMessage
) {
jbyteArray result = NULL;
assert(env != NULL);
assert(oomMessage != NULL);
if (utf8Str == NULL) {
return NULL;
}
if (utf8StrSizeInBytes < 0) {
// Let's believe there's a trailing NUL codepoint (otherwise we can't calculate the string's size), and
// there are no NUL codepoints in the middle, though it's possible in general for UTF-8.
utf8StrSizeInBytes = (ssize_t)(strlen(utf8Str) + 1);
}
result = (*env)->NewByteArray(env, (jsize)utf8StrSizeInBytes);
if (result == NULL) {
if ((*env)->ExceptionCheck(env) == JNI_FALSE) {
JNU_ThrowOutOfMemoryError(env, oomMessage);
}
} else {
(*env)->SetByteArrayRegion(
env,
result,
0,
(jsize)utf8StrSizeInBytes,
(const jbyte*)utf8Str
);
}
return result;
}
static void IMContext_zwp_text_input_v3_onPreeditString(
void * const ctx,
struct zwp_text_input_v3 * const textInput,
const char * const preeditStringUtf8,
const int32_t cursorBeginUtf8Byte,
const int32_t cursorEndUtf8Byte
) {
const struct IMContext * const imContext = ctx;
JNIEnv *env = NULL;
jbyteArray preeditStringUtf8Bytes = NULL;
if (imContext == NULL) {
return;
}
env = getEnv();
if (env == NULL) {
return;
}
// may still be NULL
preeditStringUtf8Bytes = utf8StrToJByteArrayOrThrowOOM(
preeditStringUtf8,
// the zwp_text_input_v3::preedit_string event doesn't provide the length or size of the string separately,
// asking the function to manually calculate it.
-1,
env,
"IMContext_zwp_text_input_v3_onPreeditString: failed to allocate a new Java byte array"
);
if ((*env)->ExceptionCheck(env) == JNI_TRUE) {
return;
}
(*env)->CallVoidMethod(
env,
imContext->wlInputMethodOwner,
jniIDs.mID_tiOnPreeditString,
preeditStringUtf8Bytes,
(jint)cursorBeginUtf8Byte,
(jint)cursorEndUtf8Byte
);
JNU_CHECK_EXCEPTION(env);
}
static void IMContext_zwp_text_input_v3_onCommitString(
void * const ctx,
struct zwp_text_input_v3 * const textInput,
const char * const commitStringUtf8
) {
const struct IMContext * const imContext = ctx;
JNIEnv *env = NULL;
jbyteArray commitStringUtf8Bytes = NULL;
if (imContext == NULL) {
return;
}
env = getEnv();
if (env == NULL) {
return;
}
// may still be NULL
commitStringUtf8Bytes = utf8StrToJByteArrayOrThrowOOM(
commitStringUtf8,
// the zwp_text_input_v3::commit_string event doesn't provide the length or size of the string separately,
// asking the function to manually calculate it.
-1,
env,
"IMContext_zwp_text_input_v3_onCommitString: failed to allocate a new Java byte array"
);
if ((*env)->ExceptionCheck(env) == JNI_TRUE) {
return;
}
(*env)->CallVoidMethod(env, imContext->wlInputMethodOwner, jniIDs.mID_tiOnCommitString, commitStringUtf8Bytes);
JNU_CHECK_EXCEPTION(env);
}
static void IMContext_zwp_text_input_v3_onDeleteSurroundingText(
void * const ctx,
struct zwp_text_input_v3 * const textInput,
const uint32_t numberOfUtf8BytesBeforeToDelete,
const uint32_t numberOfUtf8BytesAfterToDelete
) {
const struct IMContext * const imContext = ctx;
JNIEnv *env = NULL;
if (imContext == NULL) {
return;
}
env = getEnv();
if (env == NULL) {
return;
}
if ((*env)->ExceptionCheck(env) == JNI_TRUE) {
return;
}
(*env)->CallVoidMethod(
env,
imContext->wlInputMethodOwner,
jniIDs.mID_tiOnDeleteSurroundingText,
(jlong)numberOfUtf8BytesBeforeToDelete,
(jlong)numberOfUtf8BytesAfterToDelete
);
JNU_CHECK_EXCEPTION(env);
}
static void IMContext_zwp_text_input_v3_onDone(
void *const ctx,
struct zwp_text_input_v3 * const textInput,
const uint32_t serial
) {
const struct IMContext * const imContext = ctx;
JNIEnv *env = NULL;
if (imContext == NULL) {
return;
}
env = getEnv();
if (env == NULL) {
return;
}
(*env)->CallVoidMethod(env, imContext->wlInputMethodOwner, jniIDs.mID_tiOnDone, (jlong)serial);
JNU_CHECK_EXCEPTION(env);
}
// ============================================= END of IMContext section =============================================
// =============================================== JNI downcalls section ==============================================
JNIEXPORT jboolean JNICALL
Java_sun_awt_wl_im_text_1input_1unstable_1v3_WLInputMethodDescriptorZwpTextInputV3_checkIfAvailableOnPlatform(JNIEnv * const env, const jclass clazz) {
return checkIfTheImplementationIsAvailable() ? JNI_TRUE : JNI_FALSE;
}
JNIEXPORT void JNICALL
Java_sun_awt_wl_im_text_1input_1unstable_1v3_WLInputMethodZwpTextInputV3_initIDs(JNIEnv * const env, const jclass clazz) {
CHECK_NULL_THROW_OOME(
env,
jniIDs.wlInputMethodClass = (*env)->NewGlobalRef(env, clazz),
"Allocation of a global reference to sun.awt.wl.im.text_input_unstable_v3.WLInputMethodZwpTextInputV3 class failed"
);
jniIDs.mID_tiOnEnter =
(*env)->GetMethodID(env, jniIDs.wlInputMethodClass, "zwp_text_input_v3_onEnter", "(J)V");
if (jniIDs.mID_tiOnEnter == NULL) {
// DeleteGlobalRef is one of the few JNI functions that are safe to call while there's a pending exception
(*env)->DeleteGlobalRef(env, jniIDs.wlInputMethodClass);
(void)memset(&jniIDs, 0, sizeof(jniIDs));
return;
}
jniIDs.mID_tiOnLeave =
(*env)->GetMethodID(env, jniIDs.wlInputMethodClass, "zwp_text_input_v3_onLeave", "(J)V");
if (jniIDs.mID_tiOnLeave == NULL) {
(*env)->DeleteGlobalRef(env, jniIDs.wlInputMethodClass);
(void)memset(&jniIDs, 0, sizeof(jniIDs));
return;
}
jniIDs.mID_tiOnPreeditString =
(*env)->GetMethodID(env, jniIDs.wlInputMethodClass, "zwp_text_input_v3_onPreeditString", "([BII)V");
if (jniIDs.mID_tiOnPreeditString == NULL) {
(*env)->DeleteGlobalRef(env, jniIDs.wlInputMethodClass);
(void)memset(&jniIDs, 0, sizeof(jniIDs));
return;
}
jniIDs.mID_tiOnCommitString =
(*env)->GetMethodID(env, jniIDs.wlInputMethodClass, "zwp_text_input_v3_onCommitString", "([B)V");
if (jniIDs.mID_tiOnCommitString == NULL) {
(*env)->DeleteGlobalRef(env, jniIDs.wlInputMethodClass);
(void)memset(&jniIDs, 0, sizeof(jniIDs));
return;
}
jniIDs.mID_tiOnDeleteSurroundingText =
(*env)->GetMethodID(env, jniIDs.wlInputMethodClass, "zwp_text_input_v3_onDeleteSurroundingText", "(JJ)V");
if (jniIDs.mID_tiOnDeleteSurroundingText == NULL) {
(*env)->DeleteGlobalRef(env, jniIDs.wlInputMethodClass);
(void)memset(&jniIDs, 0, sizeof(jniIDs));
return;
}
jniIDs.mID_tiOnDone =
(*env)->GetMethodID(env, jniIDs.wlInputMethodClass, "zwp_text_input_v3_onDone", "(J)V");
if (jniIDs.mID_tiOnDone == NULL) {
(*env)->DeleteGlobalRef(env, jniIDs.wlInputMethodClass);
(void)memset(&jniIDs, 0, sizeof(jniIDs));
return;
}
}
JNIEXPORT jlong JNICALL
Java_sun_awt_wl_im_text_1input_1unstable_1v3_WLInputMethodZwpTextInputV3_createNativeContext(JNIEnv * const env, const jobject self) {
struct IMContext *result = NULL;
if (!checkIfTheImplementationIsAvailable()) {
JNU_ThrowByName(env, "java/awt/AWTException", "sun.awt.wl.im.text_input_unstable_v3.WLInputMethodZwpTextInputV3 is not supported on this system");
return 0;
}
result = IMContext_Create(env, self);
return ptr_to_jlong(result);
}
JNIEXPORT void JNICALL
Java_sun_awt_wl_im_text_1input_1unstable_1v3_WLInputMethodZwpTextInputV3_disposeNativeContext(
JNIEnv * const env,
const jclass clazz,
const jlong contextPtr
) {
struct IMContext *imContext = jlong_to_ptr(contextPtr);
if (imContext == NULL) {
JNU_ThrowNullPointerException(env, "contextPtr");
return;
}
IMContext_Destroy(env, imContext);
imContext = NULL;
}
JNIEXPORT void JNICALL
Java_sun_awt_wl_im_text_1input_1unstable_1v3_WLInputMethodZwpTextInputV3_zwp_1text_1input_1v3_1enable(
JNIEnv * const env,
const jobject self,
const jlong contextPtr
) {
const struct IMContext * const imContext = jlong_to_ptr(contextPtr);
struct zwp_text_input_v3 *textInput = NULL;
if (imContext == NULL) {
JNU_ThrowNullPointerException(env, "contextPtr");
return;
}
textInput = imContext->textInput;
if (textInput == NULL) {
JNU_ThrowByName(env, "java/lang/IllegalStateException", "textInput == NULL");
return;
}
zwp_text_input_v3_enable(textInput);
}
JNIEXPORT void JNICALL
Java_sun_awt_wl_im_text_1input_1unstable_1v3_WLInputMethodZwpTextInputV3_zwp_1text_1input_1v3_1disable(
JNIEnv * const env,
const jobject self,
const jlong contextPtr
) {
const struct IMContext * const imContext = jlong_to_ptr(contextPtr);
struct zwp_text_input_v3 *textInput = NULL;
if (imContext == NULL) {
JNU_ThrowNullPointerException(env, "contextPtr");
return;
}
textInput = imContext->textInput;
if (textInput == NULL) {
JNU_ThrowByName(env, "java/lang/IllegalStateException", "textInput == NULL");
return;
}
zwp_text_input_v3_disable(textInput);
}
JNIEXPORT void JNICALL
Java_sun_awt_wl_im_text_1input_1unstable_1v3_WLInputMethodZwpTextInputV3_zwp_1text_1input_1v3_1set_1cursor_1rectangle(
JNIEnv * const env,
const jobject self,
const jlong contextPtr,
const jint surfaceLocalX,
const jint surfaceLocalY,
const jint width,
const jint height
) {
const struct IMContext * const imContext = jlong_to_ptr(contextPtr);
struct zwp_text_input_v3 *textInput = NULL;
if (imContext == NULL) {
JNU_ThrowNullPointerException(env, "contextPtr");
return;
}
textInput = imContext->textInput;
if (textInput == NULL) {
JNU_ThrowByName(env, "java/lang/IllegalStateException", "textInput == NULL");
return;
}
zwp_text_input_v3_set_cursor_rectangle(
textInput,
(int32_t)surfaceLocalX,
(int32_t)surfaceLocalY,
(int32_t)width,
(int32_t)height
);
}
JNIEXPORT void JNICALL
Java_sun_awt_wl_im_text_1input_1unstable_1v3_WLInputMethodZwpTextInputV3_zwp_1text_1input_1v3_1set_1content_1type(
JNIEnv * const env,
const jobject self,
const jlong contextPtr,
const jint hint,
const jint purpose
) {
const struct IMContext * const imContext = jlong_to_ptr(contextPtr);
struct zwp_text_input_v3 *textInput = NULL;
if (imContext == NULL) {
JNU_ThrowNullPointerException(env, "contextPtr");
return;
}
textInput = imContext->textInput;
if (textInput == NULL) {
JNU_ThrowByName(env, "java/lang/IllegalStateException", "textInput == NULL");
return;
}
zwp_text_input_v3_set_content_type(textInput, (uint32_t)hint, (uint32_t)purpose);
}
JNIEXPORT void JNICALL
Java_sun_awt_wl_im_text_1input_1unstable_1v3_WLInputMethodZwpTextInputV3_zwp_1text_1input_1v3_1set_1text_1change_1cause(
JNIEnv * const env,
const jobject self,
const jlong contextPtr,
const jint changeCause
) {
const struct IMContext * const imContext = jlong_to_ptr(contextPtr);
struct zwp_text_input_v3 *textInput = NULL;
if (imContext == NULL) {
JNU_ThrowNullPointerException(env, "contextPtr");
return;
}
textInput = imContext->textInput;
if (textInput == NULL) {
JNU_ThrowByName(env, "java/lang/IllegalStateException", "textInput == NULL");
return;
}
zwp_text_input_v3_set_text_change_cause(textInput, (uint32_t)changeCause);
}
JNIEXPORT void JNICALL
Java_sun_awt_wl_im_text_1input_1unstable_1v3_WLInputMethodZwpTextInputV3_zwp_1text_1input_1v3_1commit(
JNIEnv * const env,
const jobject self,
const jlong contextPtr
) {
const struct IMContext * const imContext = jlong_to_ptr(contextPtr);
struct zwp_text_input_v3 *textInput = NULL;
if (imContext == NULL) {
JNU_ThrowNullPointerException(env, "contextPtr");
return;
}
textInput = imContext->textInput;
if (textInput == NULL) {
JNU_ThrowByName(env, "java/lang/IllegalStateException", "textInput == NULL");
return;
}
zwp_text_input_v3_commit(textInput);
}
// =========================================== END of JNI downcalls section ===========================================

View File

@@ -95,7 +95,6 @@ compiler/cpuflags/TestAESIntrinsicsOnSupportedConfig.java 8190680 generic-all
compiler/runtime/Test8168712.java 8211769,8211771 generic-ppc64,generic-ppc64le,linux-s390x
compiler/linkage/TestLinkageErrorInGenerateOopMap.java JBR-8524 windows-aarch64
compiler/loopopts/TestUnreachableInnerLoop.java 8288981 linux-s390x
compiler/rtm/locking/TestRTMAbortRatio.java 8183263 generic-x64,generic-i586
compiler/rtm/locking/TestRTMAbortThreshold.java 8183263 generic-x64,generic-i586
@@ -116,7 +115,6 @@ compiler/c2/irTests/TestDuplicateBackedge.java 8318904 generic-all
compiler/codecache/jmx/PoolsIndependenceTest.java 8264632 macosx-all
compiler/vectorapi/reshape/TestVectorReinterpret.java 8320897 aix-ppc64,linux-ppc64le
compiler/vectorapi/VectorLogicalOpIdentityTest.java 8302459 linux-x64,windows-x64
compiler/vectorapi/VectorRebracket128Test.java 8330538 generic-all
compiler/jvmci/TestUncaughtErrorInCompileMethod.java 8309073 generic-all
@@ -152,12 +150,6 @@ gc/TestAllocHumongousFragment.java#aggressive 8298781 generic-all
gc/TestAllocHumongousFragment.java#iu-aggressive 8298781 generic-all
gc/TestAllocHumongousFragment.java#g1 8298781 generic-all
gc/TestAllocHumongousFragment.java#static 8298781 generic-all
gc/TestAlwaysPreTouchBehavior.java#ParallelCollector 8334513 generic-all
gc/TestAlwaysPreTouchBehavior.java#SerialCollector 8334513 generic-all
gc/TestAlwaysPreTouchBehavior.java#Shenandoah 8334513 generic-all
gc/TestAlwaysPreTouchBehavior.java#G1 8334513 generic-all
gc/TestAlwaysPreTouchBehavior.java#Z 8334513 generic-all
gc/TestAlwaysPreTouchBehavior.java#Epsilon 8334513 generic-all
gc/stress/gclocker/TestExcessGCLockerCollections.java 8229120 generic-all
gc/shenandoah/oom/TestAllocOutOfMemory.java#large 8344312 linux-ppc64le
gc/shenandoah/TestEvilSyncBug.java#generational 8345501 generic-all
@@ -172,7 +164,6 @@ runtime/jni/terminatedThread/TestTerminatedThread.java 8317789 aix-ppc64
runtime/cds/CheckDefaultArchiveFile.java JBR-4227 generic-all
runtime/cds/SharedBaseAddress.java#id2 JBR-9078 windows-aarch64
runtime/cds/SharedBaseAddress.java#id3 JBR-9078 windows-aarch64
runtime/handshake/HandshakeSuspendExitTest.java 8318631 generic-all
runtime/modules/ClassLoaderNoUnnamedModuleTest.java JBR-8516 windows-aarch64
runtime/Monitor/SyncOnValueBasedClassTest.java 8340995,JBR-8517 linux-s390x,windows-aarch64
runtime/os/TestTracePageSizes.java#no-options 8267460 linux-aarch64
@@ -182,7 +173,7 @@ runtime/os/TestTracePageSizes.java#G1 8267460 linux-aarch64
runtime/os/TestTracePageSizes.java#Parallel 8267460 linux-aarch64
runtime/os/TestTracePageSizes.java#Serial 8267460 linux-aarch64
runtime/os/windows/TestAvailableProcessors.java JBR-8182 windows-all
runtime/ErrorHandling/CreateCoredumpOnCrash.java 8267433,JBR-7917,JBR-8528 macosx-x64,macosx-all,windows-aarch64
runtime/ErrorHandling/CreateCoredumpOnCrash.java JBR-7917,JBR-8528 macosx-all,windows-aarch64
runtime/Safepoint/TestAbortOnVMOperationTimeout.java JBR-8524 windows-aarch64
runtime/Safepoint/TestAbortVMOnSafepointTimeout.java JBR-8524 windows-aarch64
runtime/StackGuardPages/TestStackGuardPages.java 8303612 linux-all 8293452
@@ -191,7 +182,6 @@ runtime/stringtable/StringTableCorruptionTest.java JBR-8524 windows-aarch64
runtime/ErrorHandling/MachCodeFramesInErrorFile.java 8313315,JBR-6289 linux-ppc64le,windows-aarch64
runtime/ErrorHandling/TestAbortVmOnException.java JBR-8514 windows-aarch64
runtime/ErrorHandling/UncaughtNativeExceptionTest.java JBR-8515 windows-aarch64
runtime/NMT/CheckForProperDetailStackTrace.java 8347002 linux-all
runtime/NMT/MallocLimitTest.java#compiler-limit-fatal JBR-8524 windows-aarch64
runtime/NMT/MallocLimitTest.java#global-limit-fatal JBR-8524 windows-aarch64
runtime/NMT/MallocLimitTest.java#multi-limit JBR-8524 windows-aarch64
@@ -230,8 +220,6 @@ runtime/cds/TestDefaultArchiveLoading.java#coops_nocoh JBR-6616 windows-aarch64
runtime/cds/TestDefaultArchiveLoading.java#nocoops_nocoh JBR-6616 windows-aarch64
runtime/cds/appcds/methodHandles/MethodHandlesSpreadArgumentsTest.java initial_run generic-all
sources/TestNoNULL.java JBR-8419 generic-all
#############################################################################
# :hotspot_serviceability

View File

@@ -19,7 +19,7 @@ java/awt/Mouse/MouseEnterExitTest.java JBR-8096 windows-x64
java/awt/Paint/PaintNativeOnUpdate.java JBR-5397,JBR-7415 macosx-all,windows-x64
java/awt/PopupMenu/PopupMenuLocation.java JBR-5397,JBR-7375 macosx-all,windows-x64
java/awt/Robot/CheckCommonColors/CheckCommonColors.java JBR-5397,JBR-6092 macosx-all,windows-x64
java/awt/Robot/NonEmptyErrorStream.java JBR-5510,JBR-7375 linux-5.18.2-arch1-1,windows-x64
java/awt/Robot/NonEmptyErrorStream.java JBR-7375 windows-x64
java/awt/Robot/RobotWheelTest/RobotWheelTest.java JBR-5397,JBR-7377 macosx-all,windows-x64
java/awt/Scrollbar/ScrollbarMouseWheelTest/ScrollbarMouseWheelTest.java JBR-5397,JBR-7531 macosx-all,windows-x64
java/awt/ScrollPane/ScrollPaneLimitation.java JBR-8579 windows-x64
@@ -38,7 +38,7 @@ javax/accessibility/JFileChooserAccessibleDescriptionTest.java JBR-5397,JBR-7379
javax/accessibility/SlowPanelIteration/SlowPanelIteration.java JBR-870,JBR-5397 windows-x64,linux-x64,macosx-all
javax/swing/event/FocusEventCauseTest.java JBR-7381 windows-x64
javax/swing/JButton/4796987/bug4796987.java JBR-9345 windows-x64
javax/swing/JButton/8151303/PressedIconTest.java JBR-5210,JBR-5510,JBR-5397 windows-all,linux-all,macosx-all
javax/swing/JButton/8151303/PressedIconTest.java JBR-5210,JBR-5397 windows-all,macosx-all
javax/swing/JComboBox/4743225/bug4743225.java JBR-5210,JBR-5397 windows-all,macosx-all
javax/swing/JComboBox/6559152/bug6559152.java JBR-5397,JBR-7382 macosx-all,windows-x64
javax/swing/JComboBox/8041909/ActionListenerExceptionTest.java JBR-5210 windows-all
@@ -53,7 +53,7 @@ javax/swing/JInternalFrame/Test6505027.java nobug macosx-all,linux-all,w
javax/swing/JMenuBar/MenuBarRTLBug.java JBR-7385 windows-x64
javax/swing/JPopupMenu/4634626/bug4634626.java nobug macosx-all,linux-all,windows-all
javax/swing/JPopupMenu/4966112/bug4966112.java nobug macosx-all,linux-all,windows-all
javax/swing/JPopupMenu/6415145/bug6415145.java 8197552,JBR-5397 macosx-all,windows-all
javax/swing/JPopupMenu/6415145/bug6415145.java JBR-5397 macosx-all
javax/swing/JSplitPane/4615365/JSplitPaneDividerLocationTest.java JBR-5397,JBR-5505 macosx-all,windows-all
javax/swing/JTree/4518432/JTreeNodeCopyPasteTest.java JBR-5397,JBR-8939 macosx-all,windows-x64
javax/swing/text/StyledEditorKit/4506788/bug4506788.java JBR-7386 windows-x64
@@ -96,16 +96,16 @@ javax/swing/JFileChooser/4524490/bug4524490.java JBR-5397,JBR-5846 macosx-all,wi
javax/swing/JFileChooser/6520101/bug6520101.java JBR-5397,JBR-7413 macosx-all,windows-x64
javax/swing/JFileChooser/8002077/bug8002077.java JBR-4880,JBR-5397 windows-all,macosx-all
javax/swing/JLabel/4138746/JLabelMnemonicsTest.java JBR-4949,JBR-5397 linux-all,windows-all,macosx-all
javax/swing/JLabel/6596966/bug6596966.java 8197552,JBR-5397 windows-all,macosx-all
javax/swing/JLabel/6596966/bug6596966.java JBR-5397 macosx-all
javax/swing/JList/4618767/JListSelectedElementTest.java JBR-4955,JBR-5397 windows-all,macosx-all
javax/swing/JList/6462008/bug6462008.java JBR-5397,JBR-6773 macosx-all,windows-all
javax/swing/JMenu/4213634/bug4213634.java 8197552,JBR-5397 windows-all,macosx-all
javax/swing/JMenu/4515762/bug4515762.java 8197552,JBR-5397 windows-all,macosx-all
javax/swing/JMenu/4213634/bug4213634.java JBR-5397 macosx-all
javax/swing/JMenu/4515762/bug4515762.java JBR-5397 macosx-all
javax/swing/JMenu/4692443/bug4692443.java JBR-5397,JBR-6093 macosx-all,windows-all
javax/swing/JMenu/6470128/bug6470128.java 8253184,JBR-6307,JBR-5397 windows-all,linux-all,macosx-all
javax/swing/JMenuBar/4750590/bug4750590.java JBR-5397,JBR-6094 macosx-all,windows-all
javax/swing/JMenuItem/4171437/bug4171437.java JBR-5397,JBR-6112 macosx-all,windows-all
javax/swing/JMenuItem/6249972/bug6249972.java 8197552,JBR-5397 windows-all,macosx-all
javax/swing/JMenuItem/6249972/bug6249972.java JBR-5397 macosx-all
javax/swing/JMenuItem/JMenuItemSetAcceleratorTest.java JBR-5397 macosx-all
javax/swing/JPopupMenu/4458079/bug4458079.java JBR-5397 macosx-all
javax/swing/JPopupMenu/4634626/bug4634626.java 8253184,JBR-5397 windows-all,macosx-all
@@ -126,7 +126,7 @@ javax/swing/plaf/basic/BasicRootPaneUI/HiddenDefaultButtonTest.java JBR-7310 win
javax/swing/plaf/synth/7158712/bug7158712.java JBR-125,8322653,JBR-5397 linux-all,windows-all,macosx-all
javax/swing/Popup/TaskbarPositionTest.java 8310689,JBR-5397 windows-all,macosx-all
javax/swing/text/CSSBorder/6796710/bug6796710.java JBR-5397,JBR-6465 macosx-all,windows-all,linux-aarch64
sanity/client/SwingSet/src/EditorPaneDemoTest.java JBR-5397,8212240,JBR-5510,JBR-6285,8253184 macosx-all,linux-all,windows-all
sanity/client/SwingSet/src/EditorPaneDemoTest.java JBR-5397,8212240,JBR-6285,8253184 macosx-all,linux-all,windows-all
sanity/client/SwingSet/src/ToolTipDemoTest.java JBR-5397 macosx-all
sun/java2d/DirectX/OnScreenRenderingResizeTest/OnScreenRenderingResizeTest.java JBR-5397 macosx-all
sun/java2d/GdiRendering/ClipShapeRendering.java JBR-5397 macosx-all
@@ -149,7 +149,7 @@ javax/swing/JComboBox/8182031/ComboPopupTest.java 8253184,JBR-5397 windows-all,m
javax/swing/JComboBox/JComboBoxPopupMenuEventTest.java JBR-5397 macosx-all
javax/swing/JComboBox/JComboBoxScrollFocusTest.java JBR-9094 windows-x64
javax/swing/JComboBox/JComboBoxWithTitledBorderTest.java JBR-5397 macosx-all
javax/swing/JEditorPane/8195095/ImageViewTest.java 8253184,JBR-5510,JBR-6283,JBR-5397 windows-all,linux-5.18.2-arch1-1,macosx-all
javax/swing/JEditorPane/8195095/ImageViewTest.java 8253184,JBR-6283,JBR-5397 windows-all,macosx-all
javax/swing/JSpinner/4670051/DateFieldUnderCursorTest.java JBR-5397 macosx-all
# Windows (ZoomText, NVDA, or JAWS is enabled during testing)
@@ -159,8 +159,8 @@ java/awt/Choice/ChoiceFreezeTest.java JBR-6952 windows-x64
java/awt/Choice/ChoiceMouseEventOutbounds.java TBD windows-x64
java/awt/Choice/ChoicePopupLocation/ChoicePopupLocation.java JBR-6857,JBR-5505 macosx-all,windows-all
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/Choice/RemoveAllShrinkTest/RemoveAllShrinkTest.java 8310487,JBR-6950 linux-all,windows-x64
java/awt/Choice/ResizeAutoClosesChoice/ResizeAutoClosesChoice.java JBR-5905 linux-all,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
@@ -184,8 +184,8 @@ java/awt/im/memoryleak/InputContextMemoryLeakTest.java JBR-5505 windows-all
java/awt/LightweightComponent/MultipleAddNotifyTest/MultipleAddNotifyTest.java JBR-9252 windows-all
java/awt/LightweightDispatcher/LWDispatcherMemoryLeakTest.java JBR-5505 windows-all
java/awt/List/ItemEventTest/ItemEventTest.java JBR-5711,JBR-5505 windows-all,linux-all
java/awt/Mixing/AWT_Mixing/JComboBoxOverlapping.java 8049405,JBR-5510,JBR-5505 macosx-all,linux-5.18.2-arch1-1,windows-all
java/awt/Mixing/AWT_Mixing/JGlassPaneMoveOverlapping.java JBR-5510,JBR-5505 linux-5.18.2-arch1-1,windows-all
java/awt/Mixing/AWT_Mixing/JComboBoxOverlapping.java 8049405,JBR-5505 macosx-all,windows-all
java/awt/Mixing/AWT_Mixing/JGlassPaneMoveOverlapping.java JBR-5505 windows-all
java/awt/Mixing/MixingOnDialog.java JBR-5505 windows-all
java/awt/Mixing/MixingOnShrinkingHWButton.java JBR-5505 windows-all
java/awt/Mixing/OpaqueTest.java JBR-5707,JBR-5505 linux-all,windows-all

View File

@@ -119,7 +119,7 @@ java/awt/GridBagLayout/ComponentShortage.java 8355280,JBR-9347 windows-all,linux
java/awt/KeyboardFocusmanager/TypeAhead/EnqueueWithDialogTest/EnqueueWithDialogTest.java JBR-7077 linux-all,windows-all
java/awt/MenuItem/EnableTest.java JBR-8543 windows-all timeout
java/awt/Modal/MultipleDialogs/MixOfModalAndNonModalDialogs.java JBR-9317 linux-6.16.7-100.fc41.x86_64,linux-6.16.7-200.fc42.x86_64
java/awt/Robot/NonEmptyErrorStream.java 8340330,JBR-5510,JBR-6275,JBR-8299,JBR-9259 macosx-15.3,macosx-15.3.1,macosx-15.3.2,macosx-15.4,macosx-15.4.1,macosx-15.5,macosx-15.6,macosx-15.7,macosx-15.7.1,macosx-all,linux-5.18.2-arch1-1,linux-aarch64,linux-6.15.8-100.fc41.x86_64,linux-6.16.7-100.fc41.x86_64
java/awt/Robot/NonEmptyErrorStream.java JBR-6275,JBR-8299,JBR-9259 macosx-all,linux-aarch64,linux-6.15.8-100.fc41.x86_64,linux-6.16.7-100.fc41.x86_64
javax/swing/border/TestTitledBorderLeak.java JBR-9272 macosx-14.8
javax/swing/JButton/TestMnemonicAction.java JBR-6508 windows-all,linux-all,macosx-all
@@ -127,7 +127,7 @@ javax/swing/JComboBox/8072767/bug8072767.java JBR-5540 windows-all,macosx-all
javax/swing/JWindow/ShapedAndTranslucentWindows/PerPixelTranslucentCanvas.java JBR-7404 macosx-all
javax/swing/JWindow/ShapedAndTranslucentWindows/PerPixelTranslucentGradient.java JBR-9446 macosx-all
javax/swing/plaf/synth/7158712/bug7158712.java 8322653,JBR-9061 macosx-all,linux-6.8.0-1033-aws,linux-6.8.0-1036-aws,linux-6.8.0-1039-aws
javax/swing/UI/UnninstallUIMemoryLeaks/UnninstallUIMemoryLeaks.java JBR-5952,8340330,JBR-6274 windows-all,macosx-15.3,macosx-15.3.1,macosx-15.3.2,macosx-15.4,macosx-15.4.1,macosx-15.5,macosx-all
javax/swing/UI/UnninstallUIMemoryLeaks/UnninstallUIMemoryLeaks.java JBR-5952,JBR-6274 windows-all,macosx-all
jb/build/ResolveSymbolsTest/ResolveSymbolsRealEnv.java JBR-8544 linux-all
jb/java/awt/Window/UndecoratedDialogInTransientsChain.java JBR-8710 windows-aarch64

View File

@@ -22,12 +22,12 @@ java/awt/Multiscreen/LocationRelativeToTest/LocationRelativeToTest.java 8253184,
java/awt/Multiscreen/MultiScreenLocationTest/MultiScreenLocationTest.java JBR-5442,JBR-6058 linux-all,windows-all
java/awt/Multiscreen/WindowGCChangeTest/WindowGCChangeTest.java JBR-5531,JBR-5442 macosx-all,linux-all
java/awt/Multiscreen/UpdateGCTest/UpdateGCTest.java JBR-5442 linux-all
java/awt/PopupMenu/PopupMenuLocation.java 8259913,8315878,JBR-7035,JBR-5442,JBR-7079 windows-all,macosx-aarch64,macosx-all,linux-all,linux-x64
java/awt/Robot/CheckCommonColors/CheckCommonColors.java 8253184,JBR-5510,JBR-5442,JBR-6092 windows-all,linux-all,macosx-aarch64
java/awt/PopupMenu/PopupMenuLocation.java 8259913,JBR-7035,JBR-5442,JBR-7079 windows-all,macosx-all,linux-all,linux-x64
java/awt/Robot/CheckCommonColors/CheckCommonColors.java 8253184,JBR-5442,JBR-6092 windows-all,linux-all,macosx-aarch64
java/awt/Robot/HiDPIScreenCapture/ScreenCaptureTest.java 8253184,JBR-5442 windows-all,linux-all
java/awt/Robot/InfiniteLoopException.java 8342638,JBR-8830 windows-x64,windows-all,linux-all
java/awt/Robot/MouseLocationOnScreen/MouseLocationOnScreen.java JBR-5390 macosx-all,linux-all
java/awt/Robot/NonEmptyErrorStream.java JBR-5442,8340330,JBR-5510,JBR-8299 linux-all,macosx-15.3,macosx-15.3.1,macosx-15.3.2,macosx-15.4,macosx-15.4.1,macosx-15.5,macosx-15.6,macosx-15.7,macosx-15.7.1,linux-5.18.2-arch1-1,linux-aarch64
java/awt/Robot/NonEmptyErrorStream.java JBR-5442,JBR-8299 linux-all,,linux-aarch64
java/awt/Robot/RobotMoveMultiscreen.java JBR-5442 linux-all
java/awt/Toolkit/AWTEventListenerProxyTest/AWTEventListenerProxyTest.java JBR-6065 windows-all
java/awt/Window/SlowMotion/SlowMotion.java JBR-5442 linux-all

View File

@@ -146,7 +146,7 @@ java/awt/Focus/VetoableChangeListenerLoopTest.java JBR-5785 linux-all
java/awt/Frame/7024749/bug7024749.java JBR-5210 windows-all
java/awt/Frame/8158918/SetExtendedState.java JBR-6408 linux-all
java/awt/Frame/DisposeParentGC/DisposeParentGC.java JBR-7300 linux-all
java/awt/Frame/DisposeTest.java JBR-7937,JBR-7938,JBR-8718 macosx-aarch64,windows-x64,linux-5.18.2-arch1-1
java/awt/Frame/DisposeTest.java JBR-7937,JBR-7938 macosx-aarch64,windows-x64
java/awt/Frame/MaximizedUndecorated/MaximizedUndecorated.java 8022302 generic-all
java/awt/Frame/MaximizeUndecoratedTest.java JBR-8064 linux-all
java/awt/Frame/MaximizedToIconified/MaximizedToIconified.java JBR-7509 macosx-all
@@ -204,8 +204,8 @@ java/awt/Focus/FocusPolicyTest.java 7160904 linux-all
java/awt/EventQueue/6980209/bug6980209.java 8198615 macosx-all
java/awt/Frame/SetMinimumSizeTest/SetMinimumSizeTest2.java JBR-5210 windows-all
java/awt/Frame/ShapeNotSetSometimes/ShapeNotSetSometimes.java JBR-5210,JBR-6126 windows-all,linux-5.18.2-arch1-1,macosx-all
java/awt/grab/EmbeddedFrameTest1/EmbeddedFrameTest1.java 7080150,JBR-4880,8253184,JBR-5510 macosx-all,windows-all,linux-5.18.2-arch1-1
java/awt/grab/GrabOnUnfocusableToplevel/GrabOnUnfocusableToplevel.java 8169109,JBR-4880 linux-all,windows-all
java/awt/grab/EmbeddedFrameTest1/EmbeddedFrameTest1.java 7080150,JBR-4880,8253184 macosx-all,windows-all
java/awt/grab/GrabOnUnfocusableToplevel/GrabOnUnfocusableToplevel.java JBR-4880 windows-all
java/awt/event/InputEvent/EventWhenTest/EventWhenTest.java 8168646 generic-all
java/awt/MenuShortcut/FunctionKeyShortcut.java JBR-9207 linux-6.15.8-100.fc41.x86_64,linux-6.16.7-100.fc41.x86_64,linux-6.16.7-200.fc42.x86_64
java/awt/Mixing/AWT_Mixing/HierarchyBoundsListenerMixingTest.java 8049405,8253184 generic-all
@@ -214,39 +214,39 @@ java/awt/Mixing/AWT_Mixing/OpaqueOverlapping.java 8294264 windows-x64
java/awt/Mixing/AWT_Mixing/OpaqueOverlappingChoice.java 8048171 generic-all
java/awt/Mixing/AWT_Mixing/JMenuBarOverlapping.java 8159451 linux-all,windows-all,macosx-all
java/awt/Mixing/AWT_Mixing/JSplitPaneOverlapping.java 6986109 generic-all
java/awt/Mixing/AWT_Mixing/JInternalFrameMoveOverlapping.java 6986109,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/Mixing/AWT_Mixing/JInternalFrameMoveOverlapping.java 6986109, windows-all
java/awt/Mixing/AWT_Mixing/MixingPanelsResizing.java 8049405 generic-all
java/awt/Mixing/AWT_Mixing/JComboBoxOverlapping.java 8049405,JBR-5510 macosx-all,linux-5.18.2-arch1-1
java/awt/Mixing/AWT_Mixing/JPopupMenuOverlapping.java JBR-5210,8049405,JBR-5510 windows-all,macosx-all,linux-5.18.2-arch1-1
java/awt/Mixing/AWT_Mixing/JButtonInGlassPaneOverlapping.java 8158801,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/Mixing/AWT_Mixing/JButtonOverlapping.java 8158801,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/Mixing/AWT_Mixing/JColorChooserOverlapping.java 8158801,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/Mixing/AWT_Mixing/JEditorPaneInGlassPaneOverlapping.java 8158801,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/Mixing/AWT_Mixing/JEditorPaneOverlapping.java 8158801,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/Mixing/AWT_Mixing/JLabelInGlassPaneOverlapping.java 8158801,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/Mixing/AWT_Mixing/JLabelOverlapping.java 8158801,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/Mixing/AWT_Mixing/JListInGlassPaneOverlapping.java 8158801,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/Mixing/AWT_Mixing/JListOverlapping.java 8158801,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/Mixing/AWT_Mixing/JPanelInGlassPaneOverlapping.java 8158801,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/Mixing/AWT_Mixing/JPanelOverlapping.java 8158801,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/Mixing/AWT_Mixing/JProgressBarInGlassPaneOverlapping.java 8158801,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/Mixing/AWT_Mixing/JProgressBarOverlapping.java 8158801,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/Mixing/AWT_Mixing/JScrollBarInGlassPaneOverlapping.java 8158801,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/Mixing/AWT_Mixing/JScrollBarOverlapping.java 8158801,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/Mixing/AWT_Mixing/JScrollPaneOverlapping.java JBR-5210,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/Mixing/AWT_Mixing/JSliderInGlassPaneOverlapping.java 8158801,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/Mixing/AWT_Mixing/JSliderOverlapping.java 8158801,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/Mixing/AWT_Mixing/JSpinnerInGlassPaneOverlapping.java 8158801,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/Mixing/AWT_Mixing/JSpinnerOverlapping.java 8158801,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/Mixing/AWT_Mixing/JTableInGlassPaneOverlapping.java 8158801,JBR-5510,JBR-8311 windows-all,linux-5.18.2-arch1-1,linux-all
java/awt/Mixing/AWT_Mixing/JTableOverlapping.java 8158801,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/Mixing/AWT_Mixing/JTextAreaInGlassPaneOverlapping.java 8158801,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/Mixing/AWT_Mixing/JTextAreaOverlapping.java 8158801,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/Mixing/AWT_Mixing/JTextFieldInGlassPaneOverlapping.java 8158801,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/Mixing/AWT_Mixing/JTextFieldOverlapping.java 8158801,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/Mixing/AWT_Mixing/JToggleButtonInGlassPaneOverlapping.java 8158801,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/Mixing/AWT_Mixing/JToggleButtonOverlapping.java 8158801,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/Mixing/AWT_Mixing/ViewportOverlapping.java 8253184,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/Mixing/AWT_Mixing/JComboBoxOverlapping.java 8049405 macosx-all
java/awt/Mixing/AWT_Mixing/JPopupMenuOverlapping.java JBR-5210,8049405 windows-all,macosx-all
java/awt/Mixing/AWT_Mixing/JButtonInGlassPaneOverlapping.java 8158801 windows-all
java/awt/Mixing/AWT_Mixing/JButtonOverlapping.java 8158801 windows-all
java/awt/Mixing/AWT_Mixing/JColorChooserOverlapping.java 8158801 windows-all
java/awt/Mixing/AWT_Mixing/JEditorPaneInGlassPaneOverlapping.java 8158801 windows-all
java/awt/Mixing/AWT_Mixing/JEditorPaneOverlapping.java 8158801 windows-all
java/awt/Mixing/AWT_Mixing/JLabelInGlassPaneOverlapping.java 8158801 windows-all
java/awt/Mixing/AWT_Mixing/JLabelOverlapping.java 8158801 windows-all
java/awt/Mixing/AWT_Mixing/JListInGlassPaneOverlapping.java 8158801 windows-all
java/awt/Mixing/AWT_Mixing/JListOverlapping.java 8158801 windows-all
java/awt/Mixing/AWT_Mixing/JPanelInGlassPaneOverlapping.java 8158801 windows-all
java/awt/Mixing/AWT_Mixing/JPanelOverlapping.java 8158801 windows-all
java/awt/Mixing/AWT_Mixing/JProgressBarInGlassPaneOverlapping.java 8158801 windows-all
java/awt/Mixing/AWT_Mixing/JProgressBarOverlapping.java 8158801 windows-all
java/awt/Mixing/AWT_Mixing/JScrollBarInGlassPaneOverlapping.java 8158801 windows-all
java/awt/Mixing/AWT_Mixing/JScrollBarOverlapping.java 8158801 windows-all
java/awt/Mixing/AWT_Mixing/JScrollPaneOverlapping.java JBR-5210 windows-all
java/awt/Mixing/AWT_Mixing/JSliderInGlassPaneOverlapping.java 8158801 windows-all
java/awt/Mixing/AWT_Mixing/JSliderOverlapping.java 8158801 windows-all
java/awt/Mixing/AWT_Mixing/JSpinnerInGlassPaneOverlapping.java 8158801 windows-all
java/awt/Mixing/AWT_Mixing/JSpinnerOverlapping.java 8158801 windows-all
java/awt/Mixing/AWT_Mixing/JTableInGlassPaneOverlapping.java 8158801,JBR-8311 windows-all,linux-all
java/awt/Mixing/AWT_Mixing/JTableOverlapping.java 8158801 windows-all
java/awt/Mixing/AWT_Mixing/JTextAreaInGlassPaneOverlapping.java 8158801 windows-all
java/awt/Mixing/AWT_Mixing/JTextAreaOverlapping.java 8158801 windows-all
java/awt/Mixing/AWT_Mixing/JTextFieldInGlassPaneOverlapping.java 8158801 windows-all
java/awt/Mixing/AWT_Mixing/JTextFieldOverlapping.java 8158801 windows-all
java/awt/Mixing/AWT_Mixing/JToggleButtonInGlassPaneOverlapping.java 8158801 windows-all
java/awt/Mixing/AWT_Mixing/JToggleButtonOverlapping.java 8158801 windows-all
java/awt/Mixing/AWT_Mixing/ViewportOverlapping.java 8253184 windows-all
java/awt/Mixing/HWDisappear.java 8253184 windows-all
java/awt/Mixing/MixingInHwPanel.java 8253184 windows-all
java/awt/Mixing/NonOpaqueInternalFrame.java 7124549 macosx-all
@@ -275,12 +275,12 @@ java/awt/EventDispatchThread/LoopRobustness/LoopRobustness.java 8073636,JBR-4211
java/awt/EventDispatchThread/PropertyPermissionOnEDT/PropertyPermissionOnEDT.java JBR-5225 windows-all
java/awt/FullScreen/AltTabCrashTest/AltTabCrashTest.java JBR-4905 windows-all,linux-all
java/awt/FullScreen/FullScreenInsets/FullScreenInsets.java 8266245 generic-all
java/awt/FullScreen/FullscreenWindowProps/FullscreenWindowProps.java JBR-4275,JBR-4880,JBR-8278 linux-all,windows-all,macosx-all
java/awt/FullScreen/NoResizeEventOnDMChangeTest/NoResizeEventOnDMChangeTest.java 7188711,8253184,JBR-8278 linux-all,windows-all,macosx-all
java/awt/FullScreen/UninitializedDisplayModeChangeTest/UninitializedDisplayModeChangeTest.java 7188711,8273617,JBR-4880,8253184 macosx-all,linux-all,windows-all
java/awt/FullScreen/FullscreenWindowProps/FullscreenWindowProps.java JBR-4275,JBR-4880 linux-all,windows-all
java/awt/FullScreen/NoResizeEventOnDMChangeTest/NoResizeEventOnDMChangeTest.java 8253184 windows-all
java/awt/FullScreen/UninitializedDisplayModeChangeTest/UninitializedDisplayModeChangeTest.java 8273617,JBR-4880,8253184 macosx-all,windows-all
java/awt/Focus/8013611/JDK8013611.java 8175366 windows-all,macosx-all
java/awt/Focus/6378278/InputVerifierTest.java JBR-5799 windows-all
java/awt/Focus/6981400/Test1.java 8029675,JBR-5510 windows-all,macosx-all,linux-5.18.2-arch1-1
java/awt/Focus/6981400/Test1.java 8029675 windows-all,macosx-all
java/awt/Focus/6981400/Test3.java 8173264 generic-all
java/awt/Focus/8000326/SetFocusTraversalKeysEnabledTest.java JBR-4997,JBR-5729 windows-all,linux-all
java/awt/Focus/8073453/AWTFocusTransitionTest.java JBR-5210,8298247 windows-all,linux-all
@@ -334,7 +334,7 @@ java/awt/Window/8027025/Test8027025.java 8253184 windows-all
java/awt/Window/8159168/SetShapeTest.java 8253184 windows-all
java/awt/Window/HandleWindowDestroyTest/HandleWindowDestroyTest.java JBR-6540 macosx-x64
java/awt/Window/SetWindowLocationByPlatformTest/SetWindowLocationByPlatformTest.java 8253184,JBR-5728 windows-all,linux-all
java/awt/Window/ShapedAndTranslucentWindows/SetShape.java 8253184,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/Window/ShapedAndTranslucentWindows/SetShape.java 8253184 windows-all
java/awt/Window/ShapedAndTranslucentWindows/SetShapeAndClick.java 8197936,8253184 macosx-all,windows-all
java/awt/Window/ShapedAndTranslucentWindows/SetShapeDynamicallyAndClick.java 8013450,8253184 macosx-all,windows-all
java/awt/Window/ShapedAndTranslucentWindows/ShapedTranslucentWindowClick.java 8013450,8253184 macosx-all,windows-all
@@ -342,7 +342,7 @@ java/awt/Window/ShapedAndTranslucentWindows/TranslucentChoice.java 8253184 windo
java/awt/Window/ShapedAndTranslucentWindows/TranslucentWindowClick.java 8253184 windows-all
java/awt/Window/setLocRelativeTo/SetLocationRelativeToTest.java 8253184 windows-all
java/awt/Window/MultiWindowApp/ChildAlwaysOnTopTest.java JBR-9192 linux-6.15.8-100.fc41.x86_64,linux-6.16.7-100.fc41.x86_64,linux-6.16.7-200.fc42.x86_64
java/awt/Window/MultiWindowApp/MultiWindowAppTest.java 8253184,JBR-5510,JBR-6463 windows-all,linux-all
java/awt/Window/MultiWindowApp/MultiWindowAppTest.java 8253184,JBR-6463 windows-all,linux-all
java/awt/Window/ShapedAndTranslucentWindows/FocusAWTTest.java 8222328 windows-all,linux-all,macosx-all
java/awt/Window/ShapedAndTranslucentWindows/Shaped.java 8222328 windows-all,linux-all,macosx-all
java/awt/Window/ShapedAndTranslucentWindows/ShapedByAPI.java 8222328 windows-all,linux-all,macosx-all
@@ -356,12 +356,10 @@ java/awt/Window/Grab/GrabTest.java 8253184 windows-all
java/awt/Window/GrabSequence/GrabSequence.java 6848409 macosx-all,linux-all
java/awt/Window/LocationAtScreenCorner/LocationAtScreenCorner.java 8203371 linux-all
java/awt/FontClass/FontAccess.java JBR-5225 windows-all
java/awt/font/FontScaling/StretchedFontTest.java JBR-6225 macosx-all
java/awt/font/GlyphVector/LayoutCompatTest.java JBR-8437 linux-aarch64
java/awt/font/JNICheck/JNICheck.sh JBR-5011 linux-all
java/awt/font/TextLayout/ArabicDiacriticTest.java JBR-6760 linux-i386
java/awt/font/TextLayout/DecorationBoundsTest.java JBR-6760 linux-i386
java/awt/font/TextLayout/FormatCharAdvanceTest.java JBR-8289 macosx-all
java/awt/font/TextLayout/FontLayoutStressTest.java JBR-6760 linux-i386
java/awt/font/TextLayout/HitTest.java JBR-6760 linux-i386
java/awt/font/TextLayout/MissingCodePointLayoutTest.java JBR-6760 linux-i386
@@ -376,28 +374,24 @@ java/awt/font/TextLayout/VisibleAdvance.java JBR-6760 linux-i386
java/awt/image/BufferedImage/ICMColorDataTest/ICMColorDataTest.java 8233028 generic-all
java/awt/image/DrawImage/IncorrectAlphaSurface2SW.java 8056077 linux-all
java/awt/image/multiresolution/Corrupted2XImageTest.java 8264053 macosx-all
java/awt/image/multiresolution/MenuMultiresolutionIconTest.java JBR-4880,8253184,JBR-5510,JBR-6833 windows-all,linux-5.18.2-arch1-1,macosx-all
java/awt/image/multiresolution/MenuMultiresolutionIconTest.java JBR-4880,8253184,JBR-6833 windows-all,macosx-all
java/awt/image/multiresolution/MultiresolutionIconTest.java 8252812 windows-all,linux-all
java/awt/image/multiresolution/MultiResolutionJOptionPaneIconTest.java 8253184,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/image/multiresolution/MultiResolutionJOptionPaneIconTest.java 8253184 windows-all
java/awt/print/Headless/HeadlessPrinterJob.java 8196088 windows-all
sun/awt/datatransfer/SuplementaryCharactersTransferTest.java 8011371 generic-all
sun/awt/font/TestArabicHebrew.java JBR-8826,JBR-9210 linux-6.15.8-100.fc41.x86_64,linux-6.16.7-100.fc41.x86_64,linux-6.16.7-200.fc42.x86_64
sun/awt/font/TestDevTransform.java JBR-7882 linux-all,windows-all
sun/awt/shell/ShellFolderMemoryLeak.java 8197794 windows-all
sun/awt/windows/TestPen.java JBR-8718 linux-5.18.2-arch1-1
sun/java2d/DirectX/OnScreenRenderingResizeTest/OnScreenRenderingResizeTest.java 8301177 generic-all
sun/java2d/DirectX/OpaqueImageToSurfaceBlitTest/OpaqueImageToSurfaceBlitTest.java JBR-5393 windows-aarch64
sun/java2d/DirectX/OverriddenInsetsTest/OverriddenInsetsTest.java 8196102 generic-all
sun/java2d/DirectX/RenderingToCachedGraphicsTest/RenderingToCachedGraphicsTest.java 8196180,8252812 windows-all,macosx-all,linux-all
sun/java2d/GdiRendering/GdiBlitOffscreenTest.java JBR-8718 linux-5.18.2-arch1-1
sun/java2d/loops/XORClearRect.java JBR-8718 linux-5.18.2-arch1-1
java/awt/Graphics/GDIResourceExhaustionTest.java JBR-8719 linux-5.18.2-arch1-1
java/awt/Graphics/NativeWin32Clear.java JBR-8689 linux-aarch64,linux-5.18.2-arch1-1
java/awt/Graphics/XORPaint.java#id1 JBR-8642 macosx-aarch64
java/awt/Graphics/XORPaint.java#id2 JBR-9348 linux-6.15.8-100.fc41.x86_64,linux-6.16.7-100.fc41.x86_64,linux-6.16.7-200.fc42.x86_64
java/awt/Graphics2D/CopyAreaOOB.java JBR-5354,JBR-9206 macosx-all,windows-all,linux-6.15.8-100.fc41.x86_64,linux-6.16.7-100.fc41.x86_64,linux-6.16.7-200.fc42.x86_64
java/awt/Graphics2D/DrawString/DisposerTest.java JBR-5010,JBR-5510 linux-aarch64,linux-5.18.2-arch1-1
java/awt/Graphics2D/DrawString/DisposerTest.java JBR-5010 linux-aarch64
java/awt/Graphics2D/DrawString/DrawRotatedStringUsingRotatedFont.java 8266283 generic-all
sun/java2d/SunGraphics2D/DrawImageBilinear.java 8297175 linux-all
sun/java2d/SunGraphics2D/EmptyClipRenderingTest.java 8144029 macosx-all,linux-all,windows-all
@@ -420,13 +414,12 @@ java/awt/print/PrinterJob/GlyphPositions.java 7003378 generic-all
java/awt/Checkbox/CheckboxCheckerScalingTest.java JBR-8023 linux-all
java/awt/Choice/ChoiceLocationTest/ChoiceLocationTest.java JBR-5799 windows-all
java/awt/Choice/ChoiceFocusLostTest.java JBR-5799 windows-x64
java/awt/Choice/ChoiceMouseWheelTest/ChoiceMouseWheelTest.java 6849371,JBR-5210 macosx-all,linux-all,windows-all
java/awt/Choice/ChoiceMouseWheelTest/ChoiceMouseWheelTest.java JBR-5210 windows-all
java/awt/Choice/ChoicePopupLocation/ChoicePopupLocation.java JBR-6857 macosx-all
java/awt/Choice/NonFocusablePopupMenuTest.java JBR-7785 linux-5.18.2-arch1-1
java/awt/Component/ComponentLeakTest/ComponentLeakTest.java JBR-7911 windows-all
java/awt/Component/F10TopToplevel/F10TopToplevel.java JBR-5687 linux-all
java/awt/Component/GetScreenLocTest/GetScreenLocTest.java 4753654 generic-all
java/awt/Component/RepaintTest.java JBR-5510 linux-5.18.2-arch1-1
java/awt/Component/SetComponentsBounds/SetComponentsBounds.java JBR-4275 linux-all
java/awt/Component/SetEnabledPerformance/SetEnabledPerformance.java 8165863 macosx-all
java/awt/Clipboard/PasteNullToTextComponentsTest.java 8234140 macosx-all,windows-all
@@ -445,7 +438,7 @@ java/awt/Frame/MiscUndecorated/FrameCloseTest.java JBR-5210 windows-all
java/awt/Frame/MiscUndecorated/RepaintTest.java 8266244,JBR-5786 macosx-aarch64,generic-all
java/awt/Robot/HiDPIMouseClick/HiDPIRobotMouseClick.java 8253184 windows-all
java/awt/Robot/InfiniteLoopException.java 8342638 windows-all,linux-all
java/awt/Robot/NonEmptyErrorStream.java 8340330,JBR-5510,JBR-8299,JBR-9259 macosx-15.3,macosx-15.3.1,macosx-15.3.2,macosx-15.4,macosx-15.4.1,macosx-15.5,macosx-15.6,macosx-15.7,macosx-15.7.1,linux-5.18.2-arch1-1,linux-aarch64,linux-6.15.8-100.fc41.x86_64,linux-6.16.7-100.fc41.x86_64
java/awt/Robot/NonEmptyErrorStream.java JBR-8299,JBR-9259 linux-aarch64,linux-6.15.8-100.fc41.x86_64,linux-6.16.7-100.fc41.x86_64
java/awt/Robot/RobotExtraButton/RobotExtraButton.java JBR-6554 linux-all
java/awt/Modal/FileDialog/FileDialogAppModal1Test.java 7186009,8253184 macosx-all,windows-all
java/awt/Modal/FileDialog/FileDialogAppModal2Test.java 7186009,8253184 macosx-all,windows-all
@@ -538,7 +531,7 @@ java/awt/Modal/ModalBlockingTests/UnblockedDialogModelessTest.java 8198665,82531
java/awt/Modal/ModalBlockingTests/UnblockedDialogNonModalTest.java 8198665,8253184 macosx-all,windows-all
java/awt/Modal/ModalBlockingTests/UnblockedDialogSetModalTest.java 8198665,8253184 macosx-all,windows-all
java/awt/Modal/ModalBlockingTests/UnblockedDialogToolkitModalTest.java 8198665,8253184 macosx-all,windows-all
java/awt/Modal/ModalDialogOrderingTest/ModalDialogOrderingTest.java 8066259,8253184,JBR-5510 macosx-all,windows-all,linux-5.18.2-arch1-1
java/awt/Modal/ModalDialogOrderingTest/ModalDialogOrderingTest.java 8066259,8253184 macosx-all,windows-all
java/awt/Modal/ModalExclusionTests/ApplicationExcludeFrameFileTest.java 8047179,8253184 linux-all,macosx-all,windows-all
java/awt/Modal/ModalExclusionTests/ApplicationExcludeDialogFileTest.java 8047179,8253184 linux-all,macosx-all,windows-all
java/awt/Modal/ModalExclusionTests/ApplicationExcludeDialogPageSetupTest.java 8196431,8253184 linux-all,macosx-all,windows-all
@@ -594,7 +587,7 @@ java/awt/Modal/MultipleDialogs/MixOfModalAndNonModalDialogs.java JBR-9317 linux-
java/awt/Modal/MultipleDialogs/MultipleDialogs1Test.java 8198665,8253184 macosx-all,windows-all
java/awt/Modal/MultipleDialogs/MultipleDialogs2Test.java 8198665,8253184 macosx-all,windows-all
java/awt/Modal/MultipleDialogs/MultipleDialogs3Test.java 8198665,8253184 macosx-all,windows-all,linux-all
java/awt/Modal/MultipleDialogs/MultipleDialogs4Test.java 8198665,8253184,JBR-5510 macosx-all,windows-all,linux-5.18.2-arch1-1
java/awt/Modal/MultipleDialogs/MultipleDialogs4Test.java 8198665,8253184 macosx-all,windows-all
java/awt/Modal/MultipleDialogs/MultipleDialogs5Test.java 8198665,8253184 macosx-all,windows-all
java/awt/Mouse/EnterExitEvents/DragWindowOutOfFrameTest.java 8177326,8253184,JBR-6305 macosx-all,windows-all,linux-x64
java/awt/Mouse/EnterExitEvents/DragWindowTest.java 8253184 windows-all
@@ -628,8 +621,8 @@ java/awt/Modal/ToFront/FrameToFrontModal2Test.java 8253184 windows-all
java/awt/Modal/ToFront/FrameToFrontModal3Test.java 8253184 windows-all
java/awt/Modal/ToFront/FrameToFrontModal4Test.java 8253184 windows-all
java/awt/Modal/ToFront/FrameToFrontModal5Test.java 8253184 windows-all
java/awt/Modal/ToFront/FrameToFrontModeless1Test.java 8253184,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/Modal/ToFront/FrameToFrontNonModalTest.java 8253184,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/Modal/ToFront/FrameToFrontModeless1Test.java 8253184 windows-all
java/awt/Modal/ToFront/FrameToFrontNonModalTest.java 8253184 windows-all
java/awt/Modal/ToFront/FrameToFrontTKModal1Test.java 8253184 windows-all
java/awt/Modal/ToFront/FrameToFrontTKModal2Test.java 8253184 windows-all
java/awt/Modal/ToFront/FrameToFrontTKModal3Test.java 8253184 windows-all
@@ -678,24 +671,24 @@ java/awt/Modal/OnTop/OnTopAppModal3Test.java 8253184 windows-all
java/awt/Modal/OnTop/OnTopAppModal4Test.java 8253184 windows-all
java/awt/Modal/OnTop/OnTopAppModal5Test.java 8253184 windows-all
java/awt/Modal/OnTop/OnTopAppModal6Test.java 8253184 windows-all
java/awt/Modal/OnTop/OnTopDocModal1Test.java 8253184,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/Modal/OnTop/OnTopDocModal2Test.java 8253184,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/Modal/OnTop/OnTopDocModal3Test.java 8253184,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/Modal/OnTop/OnTopDocModal4Test.java 8253184,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/Modal/OnTop/OnTopDocModal5Test.java 8253184,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/Modal/OnTop/OnTopDocModal6Test.java 8253184,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/Modal/OnTop/OnTopDocModal1Test.java 8253184 windows-all
java/awt/Modal/OnTop/OnTopDocModal2Test.java 8253184 windows-all
java/awt/Modal/OnTop/OnTopDocModal3Test.java 8253184 windows-all
java/awt/Modal/OnTop/OnTopDocModal4Test.java 8253184 windows-all
java/awt/Modal/OnTop/OnTopDocModal5Test.java 8253184 windows-all
java/awt/Modal/OnTop/OnTopDocModal6Test.java 8253184 windows-all
java/awt/Modal/OnTop/OnTopModal1Test.java 8253184 windows-all
java/awt/Modal/OnTop/OnTopModal2Test.java 8253184 windows-all
java/awt/Modal/OnTop/OnTopModal3Test.java 8253184 windows-all
java/awt/Modal/OnTop/OnTopModal4Test.java 8253184 windows-all
java/awt/Modal/OnTop/OnTopModal5Test.java 8253184 windows-all
java/awt/Modal/OnTop/OnTopModal6Test.java 8253184 windows-all
java/awt/Modal/OnTop/OnTopModeless1Test.java 8253184,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/Modal/OnTop/OnTopModeless2Test.java 8253184,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/Modal/OnTop/OnTopModeless3Test.java 8253184,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/Modal/OnTop/OnTopModeless4Test.java 8253184,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/Modal/OnTop/OnTopModeless5Test.java 8253184,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/Modal/OnTop/OnTopModeless6Test.java 8253184,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/Modal/OnTop/OnTopModeless1Test.java 8253184 windows-all
java/awt/Modal/OnTop/OnTopModeless2Test.java 8253184 windows-all
java/awt/Modal/OnTop/OnTopModeless3Test.java 8253184 windows-all
java/awt/Modal/OnTop/OnTopModeless4Test.java 8253184 windows-all
java/awt/Modal/OnTop/OnTopModeless5Test.java 8253184 windows-all
java/awt/Modal/OnTop/OnTopModeless6Test.java 8253184 windows-all
java/awt/Modal/OnTop/OnTopTKModal1Test.java 8253184 windows-all
java/awt/Modal/OnTop/OnTopTKModal2Test.java 8253184 windows-all
java/awt/Modal/OnTop/OnTopTKModal3Test.java 8253184 windows-all
@@ -737,7 +730,6 @@ java/awt/Modal/ModalFocusTransferTests/FocusTransferDialogsDocModalTest.java 816
java/awt/Frame/DecoratedFrameInsets/DecoratedFrameInsetsTest.java JBR-5205,JBR-9204 linux-5.4.0-1103-aws,linux-6.15.8-100.fc41.x86_64,linux-6.16.7-100.fc41.x86_64,linux-6.16.7-200.fc42.x86_64
java/awt/Frame/DynamicLayout/DynamicLayout.java JBR-9205 linux-6.15.8-100.fc41.x86_64,linux-6.16.7-100.fc41.x86_64,linux-6.16.7-200.fc42.x86_64
java/awt/GraphicsDevice/CheckDisplayModes.java JBR-8183 macosx-x64
java/awt/GraphicsDevice/DisplayModes/CycleDMImage.java 7099223,8274106 macosx-all,linux-all,windows-all
java/awt/GraphicsDevice/DisplayModes/ExtraAllocationTest.java JBR-6384 macosx-all
java/awt/keyboard/AllKeyCode/AllKeyCode.java 8242930 macosx-all
@@ -759,7 +751,7 @@ java/awt/TrayIcon/RightClickWhenBalloonDisplayed/RightClickWhenBalloonDisplayed.
java/awt/Paint/bug8024864.java JBR-6544 generic-all
java/awt/Paint/ComponentIsNotDrawnAfterRemoveAddTest/ComponentIsNotDrawnAfterRemoveAddTest.java 8253184,JBR-6844 windows-all,linux-5.18.2-arch1-1
java/awt/Paint/ListRepaint.java JBR-5060 linux-all
java/awt/Paint/PaintNativeOnUpdate.java 8253184,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/Paint/PaintNativeOnUpdate.java 8253184 windows-all
java/awt/PopupMenu/PopupMenuLocation.java 8238720,JBR-7035,JBR-9251 windows-all,macosx-all,linux-6.15.8-100.fc41.x86_64,linux-6.16.7-100.fc41.x86_64,linux-6.16.7-200.fc42.x86_64
java/awt/GridBagLayout/ComponentShortage.java 8355280 windows-all,linux-all
java/awt/GridBagLayout/GridBagLayoutIpadXYTest/GridBagLayoutIpadXYTest.java 8253184 windows-all
@@ -775,10 +767,9 @@ java/awt/Window/MainKeyWindowTest/TestMainKeyWindow.java 8265985 macosx-all
java/awt/security/WarningWindowDisposeTest/WarningWindowDisposeCrashTest.java JBR-5225 windows-all
java/awt/Robot/Delay/InterruptOfDelay.java 8265986 macosx-all
java/awt/MenuBar/TestNoScreenMenuBar.java 8265987 macosx-all
java/awt/Robot/ScreenCaptureRobotTest.java#id1 JBR-8720 linux-5.18.2-arch1-1
java/awt/Dialog/DialogAboveFrame/DialogAboveFrameTest.java JBR-5210,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/Dialog/MakeWindowAlwaysOnTop/MakeWindowAlwaysOnTop.java 8266243,JBR-5510,JBR-6632 macosx-all,linux-all
java/awt/Dialog/DialogAboveFrame/DialogAboveFrameTest.java JBR-5210 windows-all
java/awt/Dialog/MakeWindowAlwaysOnTop/MakeWindowAlwaysOnTop.java 8266243,JBR-6632 macosx-all,linux-all
java/awt/Dialog/ModalDialogPermission/ModalDialogPermission.java JBR-5225 windows-all
java/awt/Dialog/SiblingChildOrder/SiblingChildOrderTest.java JBR-5082 linux-all
java/awt/Window/GetScreenLocation/GetScreenLocationTest.java 8225787,8253184 linux-all,windows-all
@@ -836,7 +827,6 @@ javax/management/monitor/DerivedGaugeMonitorTest.java 8042211 generic-al
java/io/Console/CharsetTest.java JBR-8938 macosx-all
java/io/File/DeleteReadOnly.java JBR-8903 windows-all
java/io/File/EmptyPath.java JBR-8538 generic-all
java/io/File/WinTrailingSpace.java JBR-8978 windows-all
java/io/pathNames/GeneralWin32.java 8180264 windows-all
java/io/Serializable/font/FontSerialization.java JBR-8452 macosx-all,windows-all
@@ -1033,17 +1023,16 @@ javax/script/ScriptEngineOrder.sh JBR-8506 windows-all
javax/swing/plaf/basic/BasicComboPopup/JComboBoxPopupLocation/JComboBoxPopupLocation.java 8194945 macosx-all
javax/swing/plaf/basic/BasicDirectoryModel/LoaderThreadCount.java 8333880 windows-all
javax/swing/plaf/basic/BasicHTML/4251579/bug4251579.java 8253184,JBR-5510 windows-all,linux-5.18.2-arch1-1
javax/swing/plaf/basic/BasicHTML/4251579/bug4251579.java 8253184 windows-all
javax/swing/plaf/basic/BasicMenuUI/4983388/bug4983388.java 8253184 windows-all
javax/swing/plaf/basic/BasicRootPaneUI/HiddenDefaultButtonTest.java JBR-8795 linux-aarch64
javax/swing/plaf/basic/BasicTableHeaderUI/6394566/bug6394566.java JBR-5846 windows-all
javax/swing/plaf/basic/BasicTextUI/8001470/bug8001470.java 8233177 linux-all,windows-all
javax/swing/plaf/basic/BasicTreeUI/8023474/bug8023474.java 8253184 linux-all,windows-all
javax/swing/plaf/nimbus/8041642/bug8041642.java 8253184,JBR-5510 windows-all,linux-5.18.2-arch1-1
javax/swing/plaf/nimbus/8057791/bug8057791.java 8253184,JBR-5510,JBR-8300 windows-all,linux-5.18.2-arch1-1,macosx-all
javax/swing/plaf/nimbus/TestNimbusBGColor.java JBR-6464,JBR-5510 windows-all,linux-5.18.2-arch1-1
javax/swing/plaf/nimbus/8041642/bug8041642.java 8253184 windows-all
javax/swing/plaf/nimbus/8057791/bug8057791.java 8253184,JBR-8300 windows-all,macosx-all
javax/swing/plaf/nimbus/TestNimbusBGColor.java JBR-6464 windows-all,
javax/swing/plaf/nimbus/TestNimbusOverride.java 8253184,JBR-5829 windows-all,linux-all
javax/swing/plaf/nimbus/TestNimbusTabbedPaneIconPosition.java JBR-8718 linux-5.18.2-arch1-1
javax/swing/plaf/windows/6921687/bug6921687.java 8253184 windows-all
javax/swing/plaf/windows/WindowsRootPaneUI/WrongAltProcessing/WrongAltProcessing.java JBR-4372 windows-all
@@ -1055,7 +1044,7 @@ javax/swing/dnd/8139050/NativeErrorsInTableDnD.java 8202765,JBR-5210 macosx-all
javax/swing/GraphicsConfigNotifier/StalePreferredSize.java JBR-5210,JBR-9273 windows-all,linux-6.16.7-100.fc41.x86_64,linux-6.16.7-200.fc42.x86_64
javax/swing/JButton/4368790/bug4368790.java JBR-5210 windows-all
javax/swing/JButton/4659800/SpaceKeyActivatesButton.java JBR-4949 linux-all,windows-all
javax/swing/JButton/8151303/PressedIconTest.java JBR-5210,JBR-5510 windows-all,linux-5.18.2-arch1-1
javax/swing/JButton/8151303/PressedIconTest.java JBR-5210 windows-all
javax/swing/JButton/bug4323121.java JBR-8924 windows-all
javax/swing/JButton/bug4490179.java JBR-8925 windows-all
javax/swing/JButton/bug4234034.java JBR-8997 windows-x64
@@ -1068,7 +1057,7 @@ javax/swing/JColorChooser/Test6827032.java JBR-5210 windows-all
javax/swing/JComboBox/4231298/JComboBoxPrototypeDisplayValueTest.java JBR-6777 linux-all
javax/swing/JComboBox/4743225/bug4743225.java JBR-5210 windows-all
javax/swing/JComboBox/6236162/bug6236162.java JBR-5210 windows-all
javax/swing/JComboBox/6406264/bug6406264.java JBR-5210,JBR-5510 windows-all,linux-5.18.2-arch1-1
javax/swing/JComboBox/6406264/bug6406264.java JBR-5210 windows-all
javax/swing/JComboBox/6607130/bug6607130.java JBR-5799 windows-x64
javax/swing/JComboBox/bug4248128.java JBR-8669 windows-all
javax/swing/JComboBox/bug4459267.java JBR-8656 windows-x64
@@ -1082,17 +1071,16 @@ javax/swing/JComboBox/ConsumedKeyTest/ConsumedKeyTest.java JBR-5210 windows-all
javax/swing/JComboBox/EditableComboBoxPopupPos.java JBR-8793 windows-all
javax/swing/JComboBox/TestComboBoxComponentRendering.java JBR-8270 linux-all
javax/swing/JComponent/6683775/bug6683775.java 8172337 generic-all
javax/swing/JDialog/Transparency/TransparencyTest.java 8253184,JBR-5510 windows-all,linux-5.18.2-arch1-1
javax/swing/JDialog/Transparency/TransparencyTest.java 8253184 windows-all
javax/swing/JFrame/MaximizeWindowTest.java 8321289,JBR-8292 linux-all
javax/swing/JFrame/NSTexturedJFrame/NSTexturedJFrame.java JBR-8837 macosx-all
javax/swing/JLabel/4138746/JLabelMnemonicsTest.java JBR-4949 linux-all,windows-all
javax/swing/JLabel/6596966/bug6596966.java 8197552,JBR-9195 windows-all,linux-6.15.8-100.fc41.x86_64,linux-6.16.7-100.fc41.x86_64,linux-6.16.7-200.fc42.x86_64
javax/swing/JLabel/6596966/bug6596966.java JBR-9195 linux-6.15.8-100.fc41.x86_64,linux-6.16.7-100.fc41.x86_64,linux-6.16.7-200.fc42.x86_64
javax/swing/JLabel/7004134/bug7004134.java JBR-5437 linux-all
javax/swing/JLabel/bug4822331.java JBR-7422 windows-all
javax/swing/JList/6462008/bug6462008.java JBR-8063 windows-all
javax/swing/JList/bug4251306.java JBR-8648 windows-all
javax/swing/JMenu/4213634/bug4213634.java 8197552,JBR-8056 windows-all
javax/swing/JMenu/4515762/bug4515762.java 8197552 windows-all
javax/swing/JMenu/4213634/bug4213634.java JBR-8056 windows-all
javax/swing/JMenu/4692443/bug4692443.java JBR-6093 windows-all
javax/swing/JMenu/6470128/bug6470128.java 8253184,JBR-6307 windows-all,linux-all
javax/swing/JMenu/6538132/bug6538132.java JBR-894 windows-all
@@ -1100,46 +1088,41 @@ javax/swing/JMenu/8072900/WrongSelectionOnMouseOver.java JBR-5799,JBR-6306 windo
javax/swing/JMenu/bug4140643.java JBR-8489 windows-all
javax/swing/JMenu/PopupReferenceMemoryLeak.java JBR-5890,JBR-6056 windows-aarch64,windows-x64
javax/swing/JMenuBar/TestMenuMnemonic.java JBR-7301 windows-all
javax/swing/JMenuBar/TestMenuMnemonicLinuxAndMac.java JBR-7927,JBR-8718бОИК-9416 linux-5.15.0-1080-aws,linux-5.15.0-1083-aws,linux-5.15.0-1084-aws,linux-5.18.2-arch1-1,linux-6.16.7-100.fc41.x86_64,linux-6.16.7-200.fc42.x86_64
javax/swing/JMenuBar/4750590/bug4750590.java 8197552,JBR-6094 windows-all,windows-x64
javax/swing/JMenuItem/4171437/bug4171437.java 8197552,JBR-6112 windows-all,windows-x64
javax/swing/JMenuBar/TestMenuMnemonicLinuxAndMac.java JBR-7927,JBR-9416 linux-5.15.0-1080-aws,linux-5.15.0-1083-aws,linux-5.15.0-1084-aws,linux-6.16.7-100.fc41.x86_64,linux-6.16.7-200.fc42.x86_64
javax/swing/JMenuBar/4750590/bug4750590.java JBR-6094 windows-x64
javax/swing/JMenuItem/4171437/bug4171437.java JBR-6112 windows-x64
javax/swing/JMenuItem/4654927/bug4654927.java JBR-164,JBR-4337 windows-all,linux-all
javax/swing/JMenuItem/6209975/bug6209975.java 8253184 windows-all
javax/swing/JMenuItem/8158566/CloseOnMouseClickPropertyTest.java JBR-5510,JBR-5545 linux-all,windows-all
javax/swing/JMenuItem/8158566/CloseOnMouseClickPropertyTest.java JBR-5545 linux-all,windows-all
javax/swing/JMenuItem/bug4839464.java JBR-5911 windows-all
javax/swing/JMenuItem/6249972/bug6249972.java 8197552 windows-all
javax/swing/JOptionPane/7138665/bug7138665.java JBR-5799,JBR-8171 windows-all,linux-all
javax/swing/JPasswordField/TestDisabledPasswordFieldForegroundColor.java JBR-8718 linux-5.18.2-arch1-1
javax/swing/JPopupMenu/4966112/bug4966112.java 8253184,JBR-7946 windows-all,linux-aarch64
javax/swing/JPopupMenu/6415145/bug6415145.java 8197552,JBR-7946 windows-all,linux-aarch64
javax/swing/JPopupMenu/6415145/bug6415145.java JBR-7946 linux-aarch64
javax/swing/JPopupMenu/6495920/bug6495920.java JBR-6928 linux-all
javax/swing/JPopupMenu/6515446/bug6515446.java 8197552,JBR-6531 windows-all,linux-all
javax/swing/JPopupMenu/6515446/bug6515446.java JBR-6531 linux-all
javax/swing/JPopupMenu/6544309/bug6544309.java JBR-6532 windows-all,linux-all
javax/swing/JPopupMenu/8173739/TestPopupMenu.java JBR-6959 linux-aarch64
javax/swing/JPopupMenu/SetInvokerJPopupMenuTest.java JBR-6021 linux-all
javax/swing/JRadioButton/4314194/bug4314194.java JBR-8718 linux-5.18.2-arch1-1
javax/swing/JRadioButton/8033699/bug8033699.java 8197552 windows-all
javax/swing/JRadioButton/8075609/bug8075609.java 8197552,8266085,JBR-5510 windows-all,linux-5.18.2-arch1-1
javax/swing/JRadioButton/ButtonGroupFocus/ButtonGroupFocusTest.java 8197552,8266085 windows-all
javax/swing/JRadioButton/8075609/bug8075609.java 8266085 windows-all
javax/swing/JRadioButton/ButtonGroupFocus/ButtonGroupFocusTest.java 8266085 windows-all
javax/swing/JRadioButton/FocusTraversal/FocusTraversal.java 8266085 windows-all
javax/swing/JWindow/ShapedAndTranslucentWindows/ShapedTranslucentPerPixelTranslucentGradient.java 8233582,JBR-6481 linux-all,windows-all,macosx-all
javax/swing/JWindow/ShapedAndTranslucentWindows/ShapedPerPixelTranslucentGradient.java 8233582,JBR-6360 linux-all,windows-all,macosx-all
javax/swing/JWindow/ShapedAndTranslucentWindows/PerPixelTranslucentCanvas.java 8253184,JBR-5510 windows-all,linux-5.18.2-arch1-1
javax/swing/JWindow/ShapedAndTranslucentWindows/PerPixelTranslucentSwing.java 8194128,8253184,JBR-5510,JBR-6515 macosx-all,windows-all,linux-5.18.2-arch1-1,linux-all
javax/swing/JWindow/ShapedAndTranslucentWindows/PerPixelTranslucentCanvas.java 8253184 windows-all
javax/swing/JWindow/ShapedAndTranslucentWindows/PerPixelTranslucentSwing.java 8194128,8253184,JBR-6515 macosx-all,windows-all,linux-all
javax/swing/JWindow/ShapedAndTranslucentWindows/SetShapeAndClickSwing.java 8013450,8253184 macosx-all,windows-all
javax/swing/JWindow/ShapedAndTranslucentWindows/TranslucentJComboBox.java 8024627,8253184 macosx-all,windows-all
javax/swing/JWindow/ShapedAndTranslucentWindows/TranslucentPerPixelTranslucentGradient.java JBR-8327 macosx-15.3,macosx-15.3.1,macosx-15.3.2,macosx-15.4,macosx-15.5,macosx-15.6,macosx-15.6.1,macosx-15.7,macosx-15.7
javax/swing/JWindow/ShapedAndTranslucentWindows/TranslucentWindowClickSwing.java 8253184 windows-all
javax/swing/LookAndFeel/8145547/DemandGTK3.sh JBR-5510,JBR-9202 linux-5.18.2-arch1-1,linux-6.15.8-100.fc41.x86_64,linux-6.16.7-100.fc41.x86_64
javax/swing/LookAndFeel/8145547/DemandGTK3.sh JBR-9202 linux-6.15.8-100.fc41.x86_64,linux-6.16.7-100.fc41.x86_64
# The next test below is an intermittent failure
javax/swing/JTree/DnD/LastNodeLowerHalfDrop.java 8159131 linux-all
javax/swing/JTree/4330357/bug4330357.java 8253184,JBR-6466 windows-all,linux-all
javax/swing/JTree/4633594/JTreeFocusTest.java 7105441,JBR-5210 macosx-all,windows-all
javax/swing/JTree/4908142/bug4908142.java 8197552,JBR-5846,JBR-151 windows-all
javax/swing/JTree/4908142/bug4908142.java JBR-5846,JBR-151 windows-all
javax/swing/JTree/6578666/bug6578666.java JBR-8103 windows-all
javax/swing/AbstractButton/6711682/bug6711682.java 8060765 windows-all,macosx-all,linux-5.15.0-39-generic,linux-5.15.0-33-generic,linux-5.19.0-1025-aws
javax/swing/AbstractButton/bug4133768.java JBR-8718 linux-5.18.2-arch1-1
javax/swing/AbstractButton/bug6298940.java JBR-8307,JBR-8718 windows-all,linux-5.18.2-arch1-1
javax/swing/AbstractButton/bug6298940.java JBR-8307 windows-all
javax/swing/Action/8133039/bug8133039.java JBR-5210 windows-all
javax/swing/ButtonGroup/TestButtonGroupFocusTraversal.java JBR-5210,JBR-8268 windows-all,linux-all
javax/swing/event/RightAltKeyTest.java JBR-5210 windows-all
@@ -1158,26 +1141,21 @@ javax/swing/JFileChooser/6396844/TwentyThousandTest.java 8198003 generic-all
javax/swing/JFileChooser/8194044/FileSystemRootTest.java 8305413,8327236 windows-aarch64,windows-all
javax/swing/JFormattedTextField/bug4863121.java JBR-7424 windows-all
javax/swing/JFrame/8016356/bug8016356.java JBR-108 windows-all
javax/swing/JFrame/8175301/ScaledFrameBackgroundTest.java 8274106,JBR-5510 macosx-aarch64,linux-5.18.2-arch1-1
javax/swing/JFrame/8175301/ScaledFrameBackgroundTest.java 8274106 macosx-aarch64
javax/swing/JPopupMenu/6800513/bug6800513.java 7184956,JBR-6533 macosx-all,linux-all,windows-all
javax/swing/JSlider/bug4382876.java JBR-8666 linux-6.14.0-1010-aws,linux-6.14.0-1012-aws,linux-6.14.0-1014-aws,linux-6.16.7-100.fc41.x86_64
javax/swing/JScrollBar/4708809/bug4708809.java 8169957 windows-x64
javax/swing/JScrollPane/HorizontalMouseWheelOnShiftPressed/HorizontalMouseWheelOnShiftPressed.java 8197552 windows-all
javax/swing/JSplitPane/4885629/bug4885629.java JBR-5510 linux-5.18.2-arch1-1
javax/swing/JTabbedPane/4361477/bug4361477.java JBR-5932 linux-all
javax/swing/JTabbedPane/4624207/bug4624207.java 8064922,8197552,JBR-6235 macosx-all,windows-all,linux-all 8064922:macosx-all, 8197552:windows-all
javax/swing/JTabbedPane/TestBackgroundScrollPolicy.java 8253184,JBR-8498,JBR-8718 windows-all,macosx-15.3,macosx-15.3.1,macosx-15.3.2,macosx-15.4,macosx-15.4.1,macosx-15.5,macosx-15.6,macosx-15.7,macosx-15.7.1,linux-5.18.2-arch1-1
javax/swing/JTabbedPane/TestJTabbedPaneBackgroundColor.java JBR-8718,JBR-8493 linux-5.18.2-arch1-1,macosx-15.4.1,macosx-15.5,macosx-15.6,macosx-15.7,macosx-15.7.1
javax/swing/JTabbedPane/4624207/bug4624207.java 8064922,JBR-6235 macosx-all,linux-all 8064922:macosx-all
javax/swing/JTabbedPane/TestBackgroundScrollPolicy.java 8253184,JBR-8498 windows-all,macosx-15.3,macosx-15.3.1,macosx-15.3.2,macosx-15.4,macosx-15.4.1,macosx-15.5,macosx-15.6,macosx-15.7,macosx-15.7.1
javax/swing/JTabbedPane/TestJTabbedPaneBackgroundColor.java JBR-8493 macosx-15.4.1,macosx-15.5,macosx-15.6,macosx-15.7,macosx-15.7.1
javax/swing/JToggleButton/TestSelectedKey.java JBR-5846 windows-all
javax/swing/JToolBar/4529206/bug4529206.java JBR-5387 linux-all
javax/swing/JToolTip/6219960/bug6219960.java 8253184 windows-all
javax/swing/JToolTip/TestTooltipBackgroundColor.java JBR-5510,JBR-9201 linux-5.18.2-arch1-1,linux-6.15.8-100.fc41.x86_64,linux-6.16.7-100.fc41.x86_64,linux-6.16.7-200.fc42.x86_64
javax/swing/SwingGraphics/TranslateTest.java JBR-8718 linux-5.18.2-arch1-1
javax/swing/JToolTip/TestTooltipBackgroundColor.java JBR-9201 linux-6.15.8-100.fc41.x86_64,linux-6.16.7-100.fc41.x86_64,linux-6.16.7-200.fc42.x86_64
javax/swing/SwingUtilities/TestBadBreak/TestBadBreak.java 8160720 generic-all
javax/swing/text/AbstractDocument/8190763/TestCCEOnEditEvent.java JBR-5799,JBR-8290 windows-all,linux-all
javax/swing/text/DefaultCaret/HidingSelection/HidingSelectionTest.java JBR-5510 linux-5.18.2-arch1-1
javax/swing/text/TableView/TableViewLayoutTest.java 8194936,JBR-4316,JBR-5510 linux-5.18.2-arch1-1,linux-all
javax/swing/ToolTipManager/Test6256140.java 8197552 windows-all
javax/swing/text/TableView/TableViewLayoutTest.java 8194936,JBR-4316 linux-all
javax/swing/JFileChooser/6798062/bug6798062.java 8146446 windows-all
javax/swing/JComboBox/4515752/DefaultButtonTest.java JBR-5799 windows-all
javax/swing/JComboBox/4523758/bug4523758.java 8253184 windows-all
@@ -1198,41 +1176,39 @@ javax/swing/JPopupMenu/4760494/bug4760494.java 8253184 windows-all
javax/swing/JPopupMenu/4870644/bug4870644.java 8194130 macosx-all,linux-all
javax/swing/ProgressMonitor/ProgressMonitorEscapeKeyPress.java JBR-5210 windows-all
javax/swing/JEditorPane/6917744/bug6917744.java 8213124 macosx-all
javax/swing/JEditorPane/8195095/ImageViewTest.java 8253184,JBR-5510,JBR-6283 windows-all,linux-5.18.2-arch1-1,macosx-all
javax/swing/JEditorPane/8195095/ImageViewTest.java 8253184,JBR-6283 windows-all,macosx-all
javax/swing/JRootPane/4670486/bug4670486.java JBR-6631 windows-all
javax/swing/JRootPane/DefaultButtonTest.java JBR-5739 windows-all,linux-all
javax/swing/text/html/HTMLEditorKit/5043626/bug5043626.java JBR-5210 windows-all
javax/swing/text/html/StyleSheet/bug4476002.java JBR-8718 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/text/html/StyleSheet/bug4936917.java JBR-899 windows-all
javax/swing/plaf/metal/MetalBorders/ScaledMetalBorderTest.java#id0 JBR-5799 windows-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/SynthButtonUI/6276188/bug6276188.java 8253184,JBR-5510,JBR-803 windows-all,linux-5.18.2-arch1-1,linux-all,macosx-all
javax/swing/plaf/metal/MetalGradient/8163193/ButtonGradientTest.java 8253184 windows-all
javax/swing/plaf/synth/SynthButtonUI/6276188/bug6276188.java 8253184,JBR-803 windows-all,linux-all,macosx-all
javax/swing/plaf/synth/7158712/bug7158712.java 8322653 macosx-all
javax/swing/plaf/synth/SynthScrollbarThumbPainter/SynthScrollbarThumbPainterTest.java 8253184 windows-all
javax/swing/plaf/synth/Test6660049.java JBR-8397 windows-x64
javax/swing/JInternalFrame/5066752/bug5066752.java 8253184,JBR-5510 windows-all,linux-5.18.2-arch1-1
javax/swing/JInternalFrame/8160248/JInternalFrameDraggingTest.java JBR-5510,JBR-6546 linux-5.18.2-arch1-1,windows-x64
javax/swing/JInternalFrame/5066752/bug5066752.java 8253184 windows-all
javax/swing/JInternalFrame/8160248/JInternalFrameDraggingTest.java JBR-6546 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,JBR-8718 macosx-aarch64,windows-all,linux-5.18.2-arch1-1
javax/swing/JInternalFrame/8069348/bug8069348.java 8253184,JBR-900 macosx-aarch64,windows-all
javax/swing/text/DefaultEditorKit/4278839/bug4278839.java CODETOOLS-7901623 windows-all
javax/swing/text/GlyphPainter2/6427244/bug6427244.java JBR-896,JBR-6760 windows-all,linux-i386
javax/swing/text/JTextComponent/5074573/bug5074573.java CODETOOLS-7901623,JBR-5386 windows-all,linux-all
javax/swing/text/JTextComponent/6361367/bug6361367.java JBR-521,JBR-6687 windows-all,linux-5.18.2-arch1-1
javax/swing/text/JTextComponent/6361367/bug6361367.java JBR-521 windows-all
javax/swing/text/View/8014863/bug8014863.java JBR-5541 windows-all,linux-all
javax/swing/text/View/8048110/bug8048110.java JBR-9256,JBR-9207 windows-all,linux-6.16.7-100.fc41.x86_64
javax/swing/text/View/8156217/FPMethodCalledTest.java JBR-5542 linux-all
javax/swing/UI/UnninstallUIMemoryLeaks/UnninstallUIMemoryLeaks.java JBR-5952,8340330 windows-all,macosx-15.3,macosx-15.3.1,macosx-15.3.2,macosx-15.4,macosx-15.4.1,macosx-15.5,macosx-15.6,macosx-15.7,macosx-15.7.1
java/awt/Robot/CheckCommonColors/CheckCommonColors.java 8253184,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/Robot/HiDPIScreenCapture/HiDPIRobotScreenCaptureTest.java 8253184,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/Robot/HiDPIScreenCapture/ScreenCaptureTest.java 8253184,JBR-5510 windows-all,linux-5.18.2-arch1-1
javax/swing/UI/UnninstallUIMemoryLeaks/UnninstallUIMemoryLeaks.java JBR-5952 windows-all
java/awt/Robot/CheckCommonColors/CheckCommonColors.java 8253184 windows-all
java/awt/Robot/HiDPIScreenCapture/HiDPIRobotScreenCaptureTest.java 8253184 windows-all
java/awt/Robot/HiDPIScreenCapture/ScreenCaptureTest.java 8253184 windows-all
java/awt/Robot/ModifierRobotKey/ModifierRobotKeyTest.java JBR-5802 windows-all
java/awt/Robot/MouseLocationOnScreen/MouseLocationOnScreen.java JBR-9209 linux-6.15.8-100.fc41.x86_64,linux-6.16.7-100.fc41.x86_64,linux-6.16.7-200.fc42.x86_64
java/awt/ColorClass/AlphaColorTest.java JBR-5510 linux-5.18.2-arch1-1
sanity/client/SwingSet/src/ToolTipDemoTest.java 8293001 linux-all
sanity/client/SwingSet/src/ButtonDemoScreenshotTest.java 8265770,8273312,JBR-5510 windows-all,macosx-all,linux-5.18.2-arch1-1
sanity/client/SwingSet/src/ColorChooserDemoTest.java JBR-5510,JBR-8933 linux-5.18.2-arch1-1,windows-aarch64,windows-10.0
sanity/client/SwingSet/src/ButtonDemoScreenshotTest.java 8265770,8273312 windows-all,macosx-all
sanity/client/SwingSet/src/ColorChooserDemoTest.java JBR-8933 windows-aarch64,windows-10.0
sanity/client/SwingSet/src/DialogDemoTest.java 8253184 windows-all
sanity/client/SwingSet/src/FileChooserDemoTest.java JBR-8397 windows-all
sanity/client/SwingSet/src/FrameDemoTest.java 8253184 windows-all
@@ -1261,7 +1237,6 @@ java/text/Format/NumberFormat/Bug4944439.java JBR-8458 macosx-all
tools/jimage/VerifyJimage.java JBR-8453,JBR-8540 macosx-all,generic-all
tools/jlink/JLink20000Packages.java JBR-8702 windows-all
tools/jlink/JLinkReproducible3Test.java 8253688 linux-aarch64
tools/jlink/plugins/SystemModuleDescriptors/SystemModulesTest.java JBR-4137 generic-all
tools/jlink/plugins/VendorInfoPluginsTest.java JBR-8783 windows-aarch64
tools/jpackage/share/AddLauncherTest.java#id1 JBR-8701 windows-all
@@ -1276,7 +1251,6 @@ tools/launcher/VersionCheck.java JBR-2053 windows-all
# jdk_jdi
com/sun/jdi/FinalizerTest.java 8343606 generic-all
com/sun/jdi/RepStep.java 8043571 generic-all
com/sun/jdi/InvokeHangTest.java 8218463 linux-all
com/sun/jdi/SetLocalWhileThreadInNative.java JBR-8537 generic-all
@@ -1309,10 +1283,6 @@ sun/tools/jstat/jstatLineCounts4.sh 8268211 linux-aa
# jdk_other
jdk/incubator/vector/Double256VectorTests.java JBR-8703 linux-aarch64
jdk/incubator/vector/DoubleMaxVectorTests.java JBR-8703 linux-aarch64
jdk/incubator/vector/Float256VectorTests.java JBR-8703 linux-aarch64
jdk/incubator/vector/FloatMaxVectorTests.java JBR-8703 linux-aarch64
jdk/incubator/vector/ShortMaxVectorTests.java 8306592 generic-i586
jdk/incubator/vector/LoadJsvmlTest.java 8305390 windows-x64
@@ -1321,7 +1291,6 @@ jdk/incubator/vector/LoadJsvmlTest.java 8305390 windows-
# jdk_jfr
jdk/jfr/event/compiler/TestCodeSweeper.java 8338127 generic-all
jdk/jfr/event/io/TestFileReadOnly.java JBR-8539 macosx-all
jdk/jfr/event/io/TestIOTopFrame.java 8362556 generic-all
jdk/jfr/event/oldobject/TestShenandoah.java 8342951 generic-all
jdk/jfr/event/runtime/TestDumpReason.java JBR-8780 windows-aarch64
@@ -1455,7 +1424,6 @@ jb/java/awt/Font/Font467.java
jb/java/awt/image/BufferedFontRenderingTest.java JBR-6493 generic-all
jb/java/awt/keyboard/AltGrMustGenerateAltGrModifierTest4207.java JBR-4207 windows-all
jb/java/awt/Toolkit/AWTThreadingTest.java JBR-4350 macosx-all
jb/java/awt/Toolkit/DetectingOSThemeTest.java JBR-9228 linux-6.15.8-100.fc41.x86_64,linux-6.16.7-100.fc41.x86_64
jb/java/awt/Toolkit/LWCToolkitInvokeAndWaitTest.java JBR-4896,JBR-5163 macosx-all,
java/awt/Dialog/NonResizableDialogSysMenuResize/NonResizableDialogSysMenuResize.java JBR-4250 windows-all
@@ -1472,20 +1440,18 @@ java/awt/event/KeyEvent/KeyPressedModifiers.java JBR-8647 windows-all
java/awt/Frame/LayoutOnMaximizeTest/LayoutOnMaximizeTest.java JBR-4880 windows-all
java/awt/Frame/MiscUndecorated/UndecoratedInitiallyIconified.java JBR-4880 windows-all
java/awt/FullScreen/SetFSWindow/FSFrame.java 8253184 windows-all
java/awt/FullScreen/SetFullScreenTest.java JBR-8214 linux-5.18.2-arch1-1
java/awt/grab/MenuDragEvents/MenuDragEvents.java JBR-4880 windows-all
java/awt/image/mlib/MlibOpsTest.java JBR-5225 windows-all
java/awt/MenuBar/SeparatorsNavigation/SeparatorsNavigation.java JBR-4880 windows-all
javax/swing/JFileChooser/8002077/bug8002077.java JBR-4880 windows-all
javax/swing/JFileChooser/8013442/Test8013442.java JBR-8397 windows-all
javax/swing/JSlider/6348946/bug6348946.java 8197552,JBR-5387 windows-all,linux-all
javax/swing/JSlider/6348946/bug6348946.java JBR-5387 windows-all,linux-all
javax/swing/JSpinner/4973721/bug4973721.java JBR-4880 windows-all
javax/swing/JSpinner/5012888/bug5012888.java JBR-4880,8169958 windows-all,linux-all
javax/swing/JSpinner/8223788/JSpinnerButtonFocusTest.java JBR-5210 windows-all
javax/swing/JSpinner/JSpinnerFocusTest.java JBR-5288 windows-all
javax/swing/JSpinner/SpinnerTest.java JBR-4880 windows-all
javax/swing/JSpinner/TestJSpinnerFocusLost.java JBR-5210 windows-all
javax/swing/JTable/7068740/bug7068740.java 8197552 windows-all
javax/swing/JTable/7124218/SelectEditTableCell.java JBR-6679 windows-all
javax/swing/JTable/8236907/LastVisibleRow.java JBR-6066 macosx-aarch64
javax/swing/JTable/BugCellEditorListener.java JBR-6678 windows-all
@@ -1494,10 +1460,6 @@ javax/swing/text/AbstractDocument/6968363/Test6968363.java JBR-4880,JBR-6760 win
javax/swing/text/FlowView/LayoutTest.java JBR-4880 windows-all
javax/swing/text/html/7189299/bug7189299.java JBR-4880 windows-all
jb/java/awt/wayland/ImageTransformTest.java JBR-8825 linux-5.18.2-arch1-1
jb/java/awt/wayland/RobotGetOOBPixelsTest.java JBR-8029 linux-all
jb/java/awt/wayland/RobotGetPixelTest.java JBR-8029 linux-all
jb/java/awt/wayland/RobotGetPixelsTest.java JBR-8029 linux-all
jb/java/awt/wayland/VulkanBlitTest.java JBR-8394 linux-5.18.2-arch1-1,linux-5.15.0-1081-aws,linux-5.15.0-1083-aws,linux-5.15.0-1084-aws
jb/java/awt/wayland/VulkanCompositeTest.java JBR-8394 linux-5.18.2-arch1-1,linux-5.15.0-1081-aws,linux-5.15.0-1083-aws,linux-5.15.0-1084-aws
jb/java/awt/wayland/VulkanGCCompatibilityTest.java JBR-8394 linux-5.18.2-arch1-1
@@ -1527,7 +1489,6 @@ jb/javax/swing/JDialog/JDialog1054.java JBR-5004 macosx-all
jb/javax/swing/JEditorPane/ZeroMargin.java JBR-2256 generic-all
jb/javax/swing/JPopupMenu/JPopupMenuOutOfWindowTest.java JBR-6682 windows-all,linux-all
jb/java/awt/Window/FullScreenTwoFrames.java JBR-8276 macosx-all
jb/java/awt/Window/ModalDialogAndPopup.java JBR-4984 macosx-all
jb/java/jcef/MouseEventTest.java JBR-4908 linux-all
@@ -1536,51 +1497,29 @@ jb/java/lang/System/SetEnv394.java JBR-2988 generic-aarch64
jb/build/CDSArchivesTest.sh JBR-6616 windows-aarch64
jb/build/ResolveSymbolsTest/ResolveSymbolsTestMinEnv.java JBR-7910 linux-all
java/awt/Choice/RemoveAllShrinkTest/RemoveAllShrinkTest.java JBR-5510,8310487 linux-5.18.2-arch1-1,linux-all
java/awt/Choice/ResizeAutoClosesChoice/ResizeAutoClosesChoice.java JBR-5510,JBR-5905 linux-5.18.2-arch1-1,linux-all
java/awt/Choice/RemoveAllShrinkTest/RemoveAllShrinkTest.java 8310487 linux-all
java/awt/Choice/ResizeAutoClosesChoice/ResizeAutoClosesChoice.java JBR-5905 linux-all
java/awt/Choice/SelectNewItemTest/SelectNewItemTest.java 8315733 macosx-all
java/awt/Frame/InvisibleOwner/InvisibleOwner.java JBR-5510 linux-5.18.2-arch1-1
java/awt/Mixing/AWT_Mixing/JGlassPaneInternalFrameOverlapping.java JBR-5510 linux-5.18.2-arch1-1
java/awt/Mixing/AWT_Mixing/JGlassPaneMoveOverlapping.java JBR-5510 linux-5.18.2-arch1-1
java/awt/Mixing/AWT_Mixing/JInternalFrameOverlapping.java JBR-5510 linux-5.18.2-arch1-1
java/awt/Mixing/LWComboBox.java JBR-7595 linux-6.15.8-100.fc41.x86_64,linux-6.16.7-100.fc41.x86_64
java/awt/Mixing/LWPopupMenu.java JBR-824 generic-all
java/awt/Mixing/OpaqueTest.java JBR-5707 linux-all
java/awt/Mixing/OverlappingButtons.java JBR-5707 linux-all
java/awt/Window/BackgroundIsNotUpdated/BackgroundIsNotUpdated.java JBR-5510 linux-5.18.2-arch1-1
java/awt/Window/TranslucentJAppletTest/TranslucentJAppletTest.java JBR-5510 linux-5.18.2-arch1-1
javax/swing/JComponent/7154030/bug7154030.java JBR-5510 linux-5.18.2-arch1-1
javax/swing/JEditorPane/TestBrowserBGColor.java JBR-5510 linux-5.18.2-arch1-1
javax/swing/JRadioButton/8041561/bug8041561.java JBR-5510 linux-5.18.2-arch1-1
javax/swing/JSplitPane/4820080/JSplitPaneDragColorTest.java JBR-5510 linux-5.18.2-arch1-1
javax/swing/Popup/TaskbarPositionTest.java 8310689 windows-all,macosx-all
javax/swing/PopupFactory/6276087/NonOpaquePopupMenuTest.java 8298124,JBR-5949 macosx-all,linux-all,windows-all
javax/swing/plaf/nimbus/8041642/ScrollBarThumbVisibleTest.java JBR-6485 linux-all,windows-all
javax/swing/text/CSSBorder/6796710/bug6796710.java JBR-6465 windows-all
javax/swing/text/html/CSS/4530474/bug4530474.java JBR-5510,JBR-5951 linux-5.18.2-arch1-1,windows-x64
jb/java/awt/CustomTitleBar/ActionListenerTest.java JBR-5819 macosx-all,windows-all
javax/swing/text/html/CSS/4530474/bug4530474.java JBR-5951 windows-x64
jb/java/awt/CustomTitleBar/FrameNativeControlsTest.java JBR-5345 windows-all
jb/java/awt/CustomTitleBar/JDialogNativeControlsTest.java JBR-5345 windows-x64
jb/java/awt/CustomTitleBar/HitTestClientArea.java JBR-6675 windows-all
jb/java/awt/CustomTitleBar/HitTestNonClientArea.java JBR-5465,JBR-5550 windows-all
jb/java/awt/CustomTitleBar/MaximizeWindowTest.java JBR-5465,JBR-5550 windows-all
jb/java/awt/CustomTitleBar/MaximizedWindowFocusTest.java JBR-5828 windows-all
jb/java/awt/CustomTitleBar/MinimizingWindowTest.java JBR-5345 windows-all
jb/java/awt/CustomTitleBar/MouseEventsOnClientArea.java JBR-6914 windows-all
jb/java/awt/CustomTitleBar/NativeControlsVisibilityTest.java JBR-5345,JBR-6835 windows-all,macosx-all
jb/java/awt/CustomTitleBar/WindowsControlWidthTest.java JBR-5345 windows-all
jb/java/awt/CustomTitleBar/WindowResizeTest.java JBR-5592 windows-all
sanity/client/SwingSet/src/EditorPaneDemoTest.java JBR-5510 linux-5.18.2-arch1-1
sun/java2d/GdiRendering/ClipShapeRendering.java JBR-5510 linux-5.18.2-arch1-1
sun/java2d/GdiRendering/InsetClipping.java 7124403,JBR-6513 windows-all,macosx-all,linux-all
java/awt/Choice/PopdownGeneratesMouseEvents/PopdownGeneratesMouseEvents.java JBR-5510 linux-5.18.2-arch1-1
java/awt/Insets/DialogInsets.java JBR-5510 linux-5.18.2-arch1-1
java/awt/Menu/OpensWithNoGrab/OpensWithNoGrab.java JBR-5510 linux-5.18.2-arch1-1
javax/swing/JFormattedTextField/TestSelectedTextBackgroundColor.java JBR-5510 linux-5.18.2-arch1-1
javax/swing/JMenu/JMenuSelectedColorTest.java JBR-5510 linux-5.18.2-arch1-1
javax/swing/JSpinner/4670051/DateFieldUnderCursorTest.java JBR-6684 generic-all
javax/swing/JSpinner/4788637/bug4788637.java JBR-5510 linux-5.18.2-arch1-1
jb/java/awt/Focus/BrokenTraversalAWT.java JBR-5799 windows-all
jb/java/awt/Focus/ComplexFocusSequence.java JBR-6728 linux-all,windows-x64
@@ -1591,21 +1530,9 @@ jb/java/awt/Focus/PopupIncomingFocusTest.java JBR-5799 windows-all
jb/java/awt/Focus/TitleBarClickTest.java JBR-6394 linux-5.18.2-arch1-1
com/sun/java/swing/plaf/gtk/bug6492108.java JBR-8021 linux-all
com/sun/java/swing/plaf/gtk/TestBackSpaceAction.java JBR-8791 linux-all
com/sun/java/swing/plaf/gtk/TestFileChooserSingleDirectorySelection.java JBR-5510 linux-5.18.2-arch1-1
java/awt/Choice/ChoiceGeneratesItemEvents.java JBR-5510 linux-5.18.2-arch1-1
java/awt/Choice/ChoiceStaysOpenedOnTAB.java JBR-5510 linux-5.18.2-arch1-1
java/awt/Robot/HiDPIScreenCapture/ScreenCaptureGtkTest.java JBR-5510 linux-5.18.2-arch1-1
java/awt/Toolkit/DesktopProperties/rfe4758438.java JBR-5510 linux-5.18.2-arch1-1
com/sun/java/swing/plaf/gtk/TestBackSpaceAction.java JBR-8570 linux-all
java/awt/Toolkit/LockingKeyStateTest/LockingKeyStateTest.java JBR-5765 macosx-all
javax/swing/JMenu/TestDisabledMenuForegroundColor.java JBR-5510 linux-5.18.2-arch1-1
javax/swing/JPasswordField/TestSelectedTextBackgroundColor.java JBR-5510 linux-5.18.2-arch1-1
javax/swing/JProgressBar/TestJProgressBarHighlightColor.java JBR-5510,JBR-9199 linux-5.18.2-arch1-1,linux-6.15.8-100.fc41.x86_64,linux-6.16.7-100.fc41.x86_64,linux-6.16.7-200.fc42.x86_64
javax/swing/JSlider/TestJSliderRendering.java JBR-5510 linux-5.18.2-arch1-1
javax/swing/JSpinner/TestSelectedTextBackgroundColor.java JBR-5510 linux-5.18.2-arch1-1
javax/swing/JTextPane/TestJTextPaneBackgroundColor.java JBR-5510 linux-5.18.2-arch1-1
javax/swing/JTree/TestTreeBackgroundColor.java JBR-5510 linux-5.18.2-arch1-1
sun/java2d/ClassCastExceptionForInvalidSurface.java JBR-5510 linux-5.18.2-arch1-1
javax/swing/JProgressBar/TestJProgressBarHighlightColor.java JBR-9199 linux-6.15.8-100.fc41.x86_64,linux-6.16.7-100.fc41.x86_64,linux-6.16.7-200.fc42.x86_64
java/awt/font/DoubleAntialiasTest.java JBR-6760 linux-i386
java/awt/Paint/RepaintOnAWTShutdown.java JBR-6760 linux-i386

View File

@@ -32,7 +32,7 @@ java/awt/Frame/SetMaximizedBounds/SetMaximizedBounds.java JBR-6090 windows-all
java/awt/Frame/WindowDragTest/WindowDragTest.java JBR-6090 windows-all
java/awt/Focus/NonFocusableBlockedOwnerTest/NonFocusableBlockedOwnerTest.java 7124275,JBR-5799 macosx-all,windows-all
java/awt/Focus/NonFocusableWindowTest/NonfocusableOwnerTest.java JBR-7299,JBR-8728 linux-all,windows-all
java/awt/grab/EmbeddedFrameTest1/EmbeddedFrameTest1.java 7080150,JBR-4880,8253184,JBR-5510,JBR-8725 macosx-all,windows-all,linux-5.18.2-arch1-1,linux-6.8.0-all
java/awt/grab/EmbeddedFrameTest1/EmbeddedFrameTest1.java 7080150,JBR-4880,8253184,JBR-8725 macosx-all,windows-all,linux-6.8.0-all
java/awt/Graphics/LineClipTest.java JBR-9386 linux-6.16.7-100.fc41.x86_64,linux-6.16.7-200.fc42.x86_64
java/awt/Graphics/NativeWin32Clear.java JBR-8730 windows-all
java/awt/GridLayout/ChangeGridSize/ChangeGridSize.java 8238720,8322653,JBR-5071 windows-all,macosx-all,linux-all
@@ -45,9 +45,9 @@ java/awt/List/TriggerActionEventTest.java JBR-6234 windows-all
java/awt/MenuItem/SetLabelTest.java JBR-8731 windows-all
java/awt/MenuShortcut/ActionCommandTest.java JBR-8822 windows-10.0
java/awt/MenuShortcut/FunctionKeyShortcut.java JBR-8732,JBR-9207 windows-all,linux-6.16.7-100.fc41.x86_64,linux-6.16.7-200.fc42.x86_64
java/awt/Mixing/AWT_Mixing/JComboBoxOverlapping.java 8049405,JBR-5510,JBR-6134 macosx-all,linux-5.18.2-arch1-1,windows-all
java/awt/Mixing/AWT_Mixing/JGlassPaneInternalFrameOverlapping.java JBR-5510,JBR-6234 linux-5.18.2-arch1-1,windows-all
java/awt/Mixing/AWT_Mixing/JGlassPaneMoveOverlapping.java JBR-5510,JBR-6134 linux-5.18.2-arch1-1,windows-all
java/awt/Mixing/AWT_Mixing/JComboBoxOverlapping.java 8049405,JBR-6134 macosx-all,windows-all
java/awt/Mixing/AWT_Mixing/JGlassPaneInternalFrameOverlapping.java JBR-6234 windows-all
java/awt/Mixing/AWT_Mixing/JGlassPaneMoveOverlapping.java JBR-6134 windows-all
java/awt/Mixing/MixingOnDialog.java JBR-6134 windows-all
java/awt/Modal/BlockedMouseInputTest2.java JBR-6090 windows-all
java/awt/Mouse/MouseEnterExitTest.java JBR-8096 linux-all,windows-all

View File

@@ -1,114 +1,15 @@
java/awt/Clipboard/CopyAnimatedGIFTest.java JBR-9100 linux-all
java/awt/Component/GetScreenLocTest/ComponentGetLocationOnScreenNPETest.java JBR-9100 linux-all
java/awt/Component/Revalidate/Revalidate.java JBR-9100 linux-all
java/awt/event/ComponentEvent/ComponentResizedTest.java JBR-9100 linux-all
java/awt/event/MouseEvent/MenuDragMouseEventAbsoluteCoordsTest/MenuDragMouseEventAbsoluteCoordsTest.java JBR-9100 linux-all
java/awt/event/MouseEvent/MouseEventAbsoluteCoordsTest.java JBR-9100 linux-all
java/awt/event/MouseEvent/MouseWheelEventAbsoluteCoordsTest/MouseWheelEventAbsoluteCoordsTest.java JBR-9100 linux-all
java/awt/event/OtherEvents/UndecoratedShrink.java JBR-9100 linux-all
java/awt/EventDispatchThread/PreserveDispathThread/PreserveDispatchThread.java JBR-9100 linux-all
java/awt/FileDialog/ExceptionAfterSetDirectory.java JBR-9100 linux-all
java/awt/font/GlyphVector/LayoutCompatTest.java JBR-8262 linux-all
java/awt/font/Rotate/RotateTest3.java JBR-9100 linux-all
java/awt/FullScreen/SetFSWindow/FSFrame.java JBR-9100 linux-all
java/awt/Graphics2D/ScaledTransform/ScaledTransform.java JBR-9100 linux-all
java/awt/Insets/DialogInsets.java JBR-9100 linux-all
java/awt/Multiscreen/LocationRelativeToTest/LocationRelativeToTest.java JBR-9100 linux-all
java/awt/Multiscreen/MultiScreenCheckScreenIDTest.java JBR-8263 linux-x64
java/awt/Multiscreen/UpdateGCTest/UpdateGCTest.java.UpdateGCTest
java/awt/Toolkit/SunDisplayChangerLeakTest/SunDisplayChangerLeakTest.java JBR-9100 linux-all
java/awt/Toolkit/ToolkitPropertyTest/ToolkitPropertyTest_Disable.java JBR-9100 linux-all
javax/swing/AbstractButton/bug4147740.java JBR-9100 linux-all
javax/swing/AbstractButton/bug4246045.java JBR-9100 linux-all
javax/swing/border/Test6981576.java JBR-9100 linux-all
java/awt/image/DrawImage/BlitRotateClippedArea.java JBR-9026 linux-all
java/awt/image/DrawImage/EABlitTest.java JBR-9027 linux-all
javax/swing/GraphicsConfigNotifier/StalePreferredSize.java JBR-9031 linux-all
javax/swing/GraphicsConfigNotifier/TestMultiScreenGConfigNotify.java JBR-8266 linux-x64
javax/swing/GroupLayout/8079640/bug8079640.java JBR-9100 linux-all
javax/swing/JButton/JButtonPaintNPE/JButtonPaintNPE.java JBR-9100 linux-all
javax/swing/JButton/SwingButtonResizeTestWithOpenGL.java#id0 JBR-7928,JBR-9341 linux-6.8.0-1036-aws,linux-6.8.0-1039-aws,linux-6.14.9-arch1-1
javax/swing/JButton/SwingButtonResizeTestWithOpenGL.java#id2 JBR-7928 linux-6.8.0-1036-aws,linux-6.8.0-1039-aws
javax/swing/JColorChooser/Test4177735.java JBR-9100 linux-all
javax/swing/JComboBox/8019180/Test8019180.java JBR-9100 linux-all
javax/swing/JComboBox/bug4276920.java JBR-9100 linux-all
javax/swing/JComboBox/ShowPopupAfterHidePopupTest/ShowPopupAfterHidePopupTest.java JBR-9100 linux-all
javax/swing/JComboBox/TestComboBoxHeight.java JBR-9100 linux-all
javax/swing/JComponent/4337267/bug4337267.java JBR-9100 linux-all
javax/swing/JComponent/bug4962718.java JBR-9100 linux-all
javax/swing/JComponent/bug4979794.java JBR-9100 linux-all
javax/swing/JEditorPane/4492274/bug4492274.java JBR-9100 linux-all
javax/swing/JEditorPane/JEditorPaneFontFallback.java JBR-8305 linux-all
javax/swing/JFileChooser/6489130/bug6489130.java JBR-9100 linux-all
javax/swing/JFileChooser/DeserializedJFileChooser/DeserializedJFileChooserTest.java JBR-9100 linux-all
javax/swing/JFileChooser/FileSizeCheck.java JBR-9100 linux-all
javax/swing/JFileChooser/FileViewNPETest.java JBR-9100 linux-all
javax/swing/JFormattedTextField/bug4741926.java JBR-9321 linux-6.14.9-arch1-1
javax/swing/JFormattedTextField/TestSelectedTextBackgroundColor.java JBR-9100 linux-all
javax/swing/JFrame/AlwaysOnTop/AlwaysOnTopImeTest.java JBR-9100 linux-all
javax/swing/JFrame/HangNonVolatileBuffer/HangNonVolatileBuffer.java JBR-9100 linux-all
javax/swing/JInternalFrame/6647340/bug6647340.java JBR-9100 linux-all
javax/swing/JInternalFrame/InternalFrameIsNotCollectedTest.java JBR-9100 linux-all
javax/swing/JLayer/6824395/bug6824395.java JBR-9100 linux-all
javax/swing/JLayer/8041982/bug8041982.java JBR-9100 linux-all
javax/swing/JMenu/8178430/LabelDotTest.java JBR-9100 linux-all
javax/swing/JPanel/bug4907772.java JBR-9100 linux-all
javax/swing/JPasswordField/TestSelectedTextBackgroundColor.java JBR-9277 linux-6.14.9-arch1-1
javax/swing/JProgressBar/8161664/ProgressBarMemoryLeakTest.java JBR-9100 linux-all
javax/swing/JProgressBar/TestJProgressBarHighlightColor.java JBR-9100 linux-all
javax/swing/JScrollPane/bug8044371.java JBR-9100 linux-all
javax/swing/JScrollPane/Test6526631.java JBR-9100 linux-all
javax/swing/JSlider/TestJSliderRendering.java JBR-9100 linux-all
javax/swing/JSpinner/8008657/bug8008657.java JBR-9100 linux-all
javax/swing/JSpinner/bug4656590.java JBR-9100 linux-all
javax/swing/JSpinner/bug4680204.java JBR-9100 linux-all
javax/swing/JSpinner/TestSelectedTextBackgroundColor.java JBR-9277 linux-6.14.9-arch1-1
javax/swing/JSplitPane/4816114/bug4816114.java JBR-9100 linux-all
javax/swing/JSplitPane/JSplitPaneTestNegDivSize.java JBR-9100 linux-all
javax/swing/JTabbedPane/7170310/bug7170310.java JBR-9100 linux-all
javax/swing/JTabbedPane/8017284/bug8017284.java JBR-9100 linux-all
javax/swing/JTabbedPane/8134116/Bug8134116.java JBR-9100 linux-all
javax/swing/JTabbedPane/8137169/ScrollableTabbedPaneTest.java JBR-9100 linux-all
javax/swing/JTabbedPane/GetComponentAtTest.java JBR-9100 linux-all
javax/swing/JTabbedPane/TabbedPaneNPECheck.java JBR-9100 linux-all
javax/swing/JTabbedPane/TestNPEStateChgListener.java JBR-9100 linux-all
javax/swing/JTable/4170447/bug4170447.java JBR-9100 linux-all
javax/swing/JTable/8032874/bug8032874.java JBR-9100 linux-all
javax/swing/JTable/bug4159300.java JBR-9100 linux-all
javax/swing/JTextArea/JTextAreaOrientationTest.java JBR-9100 linux-all
javax/swing/JTextArea/JTextAreaWordWrapTest.java JBR-9100 linux-all
javax/swing/JTextArea/TextViewOOM/TextViewOOM.java JBR-9100 linux-all
javax/swing/JTextPane/JTextPaneDocumentAlignment.java JBR-9100 linux-all
javax/swing/JTextPane/JTextPaneDocumentWrapping.java JBR-9100 linux-all
javax/swing/JTextPane/TestJTextPaneBackgroundColor.java JBR-9100 linux-all
javax/swing/JTree/8041705/DefaultTreeCellRendererBorderTest.java JBR-9100 linux-all
javax/swing/JViewport/7107099/bug7107099.java JBR-9100 linux-all
javax/swing/InputVerifier/VerifyTarget/VerifyTargetTest.java JBR-9320 linux-6.14.9-arch1-1
javax/swing/LookAndFeel/8145547/DemandGTK.java JBR-9100 linux-all
javax/swing/LookAndFeel/8145547/DemandGTK3.sh JBR-9100 linux-all
javax/swing/plaf/basic/6866751/bug6866751.java JBR-9100 linux-all
javax/swing/plaf/nimbus/Test6919629.java JBR-9100 linux-all
javax/swing/reliability/TaskZoomJFrameRepaint.java JBR-9100 linux-all
javax/swing/RepaintManager/DisplayListenerLeak/DisplayListenerLeak.java JBR-9100 linux-all
javax/swing/Security/6657138/ComponentTest.java JBR-9100 linux-all
javax/swing/SpringLayout/bug4756178.java JBR-9100 linux-all
javax/swing/SpringLayout/bug4803649.java JBR-9100 linux-all
javax/swing/system/6799345/TestShutdown.java JBR-9100 linux-all
javax/swing/text/CompositeView/bug4398059.java JBR-9100 linux-all
javax/swing/text/DefaultStyledDocument/DocNegLenCharAttrTest.java JBR-9100 linux-all
javax/swing/text/html/7189299/bug7189299.java JBR-9100 linux-all
javax/swing/text/html/HTMLDocument/8058120/bug8058120.java JBR-9100 linux-all
javax/swing/text/html/HTMLEditorKit/4242228/bug4242228.java JBR-9100 linux-all
javax/swing/text/html/ImageView/bug4329185.java JBR-9100 linux-all
javax/swing/text/html/InlineView/bug4623342.java JBR-9100 linux-all
javax/swing/text/html/parser/Parser/7165725/bug7165725.java JBR-9100 linux-all
javax/swing/text/html/StyleSheet/bug4476002.java JBR-9100 linux-all
javax/swing/text/html/TableView/bug4412522.java JBR-9100 linux-all
javax/swing/text/html/TableView/bug4690812.java JBR-9100 linux-all
javax/swing/text/html/TableView/bug4813831.java JBR-9100 linux-all
javax/swing/text/NavigationFilter/6735293/bug6735293.java JBR-9100 linux-all
javax/swing/text/rtf/RTFWriteParagraphAlignTest.java JBR-9100 linux-all
javax/swing/text/View/8048110/bug8048110.java JBR-9100 linux-all
javax/swing/tree/DefaultTreeCellEditor/bug4480602.java JBR-9100 linux-all
javax/swing/tree/FixedHeightLayoutCache/bug4745001.java JBR-9100 linux-all

View File

@@ -1,7 +1,6 @@
java/awt/font/GlyphVector/LayoutCompatTest.java JBR-8262 linux-all
java/awt/MenuShortcut/FunctionKeyShortcut.java JBR-7932 linux-all
java/awt/Multiscreen/MultiScreenCheckScreenIDTest.java JBR-8263 linux-x64
java/awt/Multiscreen/UpdateGCTest/UpdateGCTest.java JBR-8264 linux-x64
javax/swing/JComponent/6989617/bug6989617.java JBR-8796 linux-6.14.0-1010-aws,linux-6.14.0-1012-aws,linux-6.14.0-1014-aws
javax/swing/JDesktopPane/TestDesktopManagerNPE.java JBR-8449 linux-x64
@@ -12,16 +11,7 @@ javax/swing/JButton/SwingButtonResizeTestWithOpenGL.java#id2 JBR-7928,JBR-9341 l
javax/swing/JEditorPane/JEditorPaneFontFallback.java JBR-8305 linux-all
javax/swing/JFormattedTextField/bug4741926.java JBR-7530,JBR-9321 linux-all,linux-6.14.9-arch1-1
javax/swing/JFormattedTextField/TestSelectedTextBackgroundColor.java JBR-8790 linux-all
javax/swing/JInternalFrame/bug5009724.java JBR-7087 linux-all
javax/swing/JMenu/JMenuSelectedColorTest.java JBR-8551 linux-all
javax/swing/JPasswordField/TestSelectedTextBackgroundColor.java JBR-9277 linux-6.14.9-arch1-1
javax/swing/JPopupMenu/7156657/bug7156657.java JBR-8210 linux-all
javax/swing/JSlider/TestJSliderRendering.java JBR-8551 linux-all
javax/swing/JSpinner/TestSelectedTextBackgroundColor.java JBR-9277 linux-6.14.9-arch1-1
javax/swing/JToolTip/TestTooltipBackgroundColor.java JBR-8551 linux-all
javax/swing/LookAndFeel/8145547/DemandGTK3.sh JBR-8274 linux-all
javax/swing/text/html/CSS/bug8234913.java JBR-8306 linux-all
javax/swing/UI/UnninstallUIMemoryLeaks/UnninstallUIMemoryLeaks.java JBR-8304 linux-all
jb/java/awt/wayland/VulkanMaskFillTest.java JBR-8446 linux-6.8.0-1017-raspi
jb/javax/swing/wayland/WLPopupMoves.java JBR-8296 linux-all