Skip to content
Permalink
Browse files
8198617: java/awt/Focus/6382144/EndlessLoopTest.java fails on mac
Reviewed-by: jdv, serb
  • Loading branch information
prsadhuk committed Apr 28, 2021
1 parent 0438cea commit ce48f04085817f09535647ed6fd66849916ff56e
Showing 2 changed files with 75 additions and 64 deletions.
@@ -195,7 +195,6 @@ java/awt/EventDispatchThread/LoopRobustness/LoopRobustness.java 8073636 macosx-a
java/awt/FullScreen/FullScreenInsets/FullScreenInsets.java 7019055 windows-all,linux-all
java/awt/Focus/8013611/JDK8013611.java 8175366 windows-all,macosx-all
java/awt/Focus/6378278/InputVerifierTest.java 8198616 macosx-all
java/awt/Focus/6382144/EndlessLoopTest.java 8198617 macosx-all
java/awt/Focus/6981400/Test1.java 8029675 windows-all,macosx-all
java/awt/Focus/6981400/Test3.java 8173264 generic-all
java/awt/event/KeyEvent/ExtendedKeyCode/ExtendedKeyCodeTest.java 8169476 windows-all,macosx-all
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2006, 2018, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2006, 2021, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -26,7 +26,6 @@
@key headful
@bug 6382144
@summary REGRESSION: InputVerifier and JOptionPane
@author oleg.sukhodolsky: area=awt.focus
@run main EndlessLoopTest
*/

@@ -57,81 +56,95 @@
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;

public class EndlessLoopTest
{

//*** test-writer defined static variables go here ***
static volatile int n_iv_calls;
static JFrame frame;
static JTextField t1;
static JButton button;


private static void init()
private static void init() throws Exception
{
//*** Create instructions for the user here ***

JFrame frame = new JFrame();
final JDialog dialog = new JDialog(frame, true);
JButton button = new JButton("press me");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
dialog.dispose();
}
try {
SwingUtilities.invokeAndWait(() -> {
frame = new JFrame();
final JDialog dialog = new JDialog(frame, true);
button = new JButton("press me");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
dialog.dispose();
}
});
dialog.getContentPane().add(button);
dialog.setLocationRelativeTo(null);
dialog.pack();

t1 = new JTextField();
t1.setInputVerifier(new InputVerifier() {
public boolean verify(JComponent input) {
n_iv_calls++;
if (n_iv_calls == 1) {
dialog.setVisible(true);
}
return true;
}
});
JTextField t2 = new JTextField();

frame.getContentPane().add(t1, BorderLayout.NORTH);
frame.getContentPane().add(t2, BorderLayout.SOUTH);
frame.setLocationRelativeTo(null);
frame.setSize(200, 200);
frame.setVisible(true);
});
dialog.getContentPane().add(button);
dialog.pack();

JTextField t1 = new JTextField();
t1.setInputVerifier(new InputVerifier() {
public boolean verify(JComponent input) {
n_iv_calls++;
if (n_iv_calls == 1) {
dialog.setVisible(true);
}
return true;
}
});
JTextField t2 = new JTextField();

Robot r = null;
try {
r = new Robot();
} catch (AWTException e) {
EndlessLoopTest.fail(e);
}

frame.getContentPane().add(t1, BorderLayout.NORTH);
frame.getContentPane().add(t2, BorderLayout.SOUTH);
frame.setSize(200, 200);
frame.setVisible(true);
try {
r.setAutoDelay(100);
r.waitForIdle();
r.delay(1000);

Robot r = null;
try {
r = new Robot();
} catch (AWTException e) {
EndlessLoopTest.fail(e);
}
mouseClickOnComp(r, t1);
r.waitForIdle();

try {
r.waitForIdle();

mouseClickOnComp(r, t1);
r.waitForIdle();
if (!t1.isFocusOwner()) {
throw new RuntimeException("t1 is not a focus owner");
}
n_iv_calls = 0;
r.keyPress(KeyEvent.VK_TAB);
r.keyRelease(KeyEvent.VK_TAB);
r.waitForIdle();

mouseClickOnComp(r, button);
r.waitForIdle();
} catch (Exception e) {
EndlessLoopTest.fail(e);
}

if (!t1.isFocusOwner()) {
throw new RuntimeException("t1 is not a focus owner");
if (n_iv_calls != 1) {
EndlessLoopTest.fail(new RuntimeException("InputVerifier was called " + n_iv_calls + " times"));
}
n_iv_calls = 0;
r.keyPress(KeyEvent.VK_TAB);
r.delay(10);
r.keyRelease(KeyEvent.VK_TAB);
r.waitForIdle();

mouseClickOnComp(r, button);
r.waitForIdle();
} catch (Exception e) {
EndlessLoopTest.fail(e);
}

if (n_iv_calls != 1) {
EndlessLoopTest.fail(new RuntimeException("InputVerifier was called " + n_iv_calls + " times"));
EndlessLoopTest.pass();
} finally {
SwingUtilities.invokeAndWait(() -> {
if (frame != null) {
frame.dispose();
}
});
}

EndlessLoopTest.pass();

}//End init()


@@ -140,10 +153,9 @@ static void mouseClickOnComp(Robot r, Component comp) {
loc.x += comp.getWidth() / 2;
loc.y += comp.getHeight() / 2;
r.mouseMove(loc.x, loc.y);
r.delay(10);
r.mousePress(InputEvent.BUTTON1_MASK);
r.delay(10);
r.mouseRelease(InputEvent.BUTTON1_MASK);
r.waitForIdle();
r.mousePress(InputEvent.BUTTON1_DOWN_MASK);
r.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
}

/*****************************************************
@@ -170,7 +182,7 @@ static void mouseClickOnComp(Robot r, Component comp) {
// instantiated in the same VM. Being static (and using
// static vars), it aint gonna work. Not worrying about
// it for now.
public static void main( String args[] ) throws InterruptedException
public static void main( String args[] ) throws Exception
{
mainThread = Thread.currentThread();
try

3 comments on commit ce48f04

@openjdk-notifier
Copy link

@openjdk-notifier openjdk-notifier bot commented on ce48f04 Apr 28, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@RealCLanger
Copy link
Contributor

@RealCLanger RealCLanger commented on ce48f04 Nov 4, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/backport jdk11u-dev

@openjdk
Copy link

@openjdk openjdk bot commented on ce48f04 Nov 4, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@RealCLanger Could not automatically backport ce48f040 to openjdk/jdk11u-dev due to conflicts in the following files:

  • test/jdk/ProblemList.txt

To manually resolve these conflicts run the following commands in your personal fork of openjdk/jdk11u-dev:

$ git checkout -b RealCLanger-backport-ce48f040
$ git fetch --no-tags https://git.openjdk.java.net/jdk ce48f04085817f09535647ed6fd66849916ff56e
$ git cherry-pick --no-commit ce48f04085817f09535647ed6fd66849916ff56e
$ # Resolve conflicts
$ git add files/with/resolved/conflicts
$ git commit -m 'Backport ce48f04085817f09535647ed6fd66849916ff56e'

Once you have resolved the conflicts as explained above continue with creating a pull request towards the openjdk/jdk11u-dev with the title Backport ce48f04085817f09535647ed6fd66849916ff56e.

Please sign in to comment.