Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
8198617: java/awt/Focus/6382144/EndlessLoopTest.java fails on mac
Backport-of: ce48f04
  • Loading branch information
RealCLanger committed Nov 10, 2021
1 parent 2876be0 commit 1d62284
Show file tree
Hide file tree
Showing 2 changed files with 75 additions and 64 deletions.
1 change: 0 additions & 1 deletion test/jdk/ProblemList.txt
Expand Up @@ -168,7 +168,6 @@ java/awt/EventDispatchThread/HandleExceptionOnEDT/HandleExceptionOnEDT.java 8203
java/awt/EventDispatchThread/LoopRobustness/LoopRobustness.java 8073636 macosx-all
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/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
Expand Down
138 changes: 75 additions & 63 deletions test/jdk/java/awt/Focus/6382144/EndlessLoopTest.java
@@ -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
Expand All @@ -26,7 +26,6 @@
@key headful
@bug 6382144
@summary REGRESSION: InputVerifier and JOptionPane
@author oleg.sukhodolsky: area=awt.focus
@run main EndlessLoopTest
*/

Expand Down Expand Up @@ -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()


Expand All @@ -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);
}

/*****************************************************
Expand All @@ -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
Expand Down

1 comment on commit 1d62284

@openjdk-notifier
Copy link

Choose a reason for hiding this comment

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

Please sign in to comment.