Skip to content

Commit 11d5cd9

Browse files
author
duke
committedOct 29, 2021
Automatic merge of jdk:master into master
2 parents 65def55 + a1ec4f9 commit 11d5cd9

File tree

2 files changed

+83
-47
lines changed

2 files changed

+83
-47
lines changed
 

‎test/jdk/ProblemList.txt

-1
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,6 @@ java/awt/Focus/6981400/Test1.java 8029675 windows-all,macosx-all
197197
java/awt/Focus/6981400/Test3.java 8173264 generic-all
198198
java/awt/event/KeyEvent/ExtendedKeyCode/ExtendedKeyCodeTest.java 8169476 windows-all,macosx-all
199199
java/awt/event/KeyEvent/KeyChar/KeyCharTest.java 8169474,8224055 macosx-all,windows-all
200-
java/awt/event/MouseEvent/SpuriousExitEnter/SpuriousExitEnter_3.java 6854300 generic-all
201200
java/awt/event/KeyEvent/ExtendedModifiersTest/ExtendedModifiersTest.java 8129778 generic-all
202201
java/awt/event/KeyEvent/KeyMaskTest/KeyMaskTest.java 8129778 generic-all
203202
java/awt/event/KeyEvent/KeyTyped/CtrlASCII.java 8252713 linux-all

‎test/jdk/java/awt/event/MouseEvent/SpuriousExitEnter/SpuriousExitEnter_3.java

+83-46
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2007, 2021, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* This code is free software; you can redistribute it and/or modify it
@@ -49,44 +49,70 @@
4949
" move the pointer between B to C.",
5050
*/
5151

52-
import java.awt.*;
53-
import java.awt.event.*;
52+
import java.awt.BorderLayout;
53+
import java.awt.Button;
54+
import java.awt.Component;
55+
import java.awt.EventQueue;
56+
import java.awt.Frame;
57+
import java.awt.Point;
58+
import java.awt.Robot;
59+
import java.awt.Window;
60+
import java.awt.event.MouseAdapter;
61+
import java.awt.event.MouseEvent;
62+
import java.lang.reflect.InvocationTargetException;
63+
5464
import test.java.awt.regtesthelpers.Util;
55-
import javax.swing.*;
65+
66+
import javax.swing.JButton;
67+
import javax.swing.JFrame;
5668

5769
public class SpuriousExitEnter_3 {
58-
static JFrame frame = new JFrame("SpuriousExitEnter_3_LW");
59-
static JButton jbutton = new JButton("jbutton");
60-
static Frame frame1 = new Frame("SpuriousExitEnter_3_HW");
61-
static Button button1 = new Button("button");
62-
63-
static EnterExitAdapter frameAdapter;
64-
static EnterExitAdapter buttonAdapter;
65-
static Robot r = Util.createRobot();
66-
67-
public static void testCase(Window w, Component comp) {
68-
frameAdapter = new EnterExitAdapter(w);
69-
buttonAdapter = new EnterExitAdapter(comp);
70-
71-
w.addMouseListener(frameAdapter);
72-
comp.addMouseListener(buttonAdapter);
73-
74-
w.setSize(200, 200);
75-
w.add(comp, BorderLayout.NORTH);
76-
w.setLocationRelativeTo(null);
77-
w.setVisible(true);
78-
79-
Point centerA = new Point(comp.getLocationOnScreen().x + comp.getWidth() / 2,
80-
comp.getLocationOnScreen().y + comp.getHeight() / 2);
81-
Point centerB = new Point(w.getLocationOnScreen().x + w.getWidth() / 2,
82-
w.getLocationOnScreen().y + w.getHeight() / 2);
83-
//for moving from A outside: don't cross the A area. Move straight to the right.
84-
Point centerC_1 = new Point(w.getLocationOnScreen().x + w.getWidth() + 20, //go right off the border
85-
comp.getLocationOnScreen().y + comp.getHeight() / 2); //don't cross the A area!
86-
87-
//for moving from B outside: don't cross the B area. Move straight to the bottom.
88-
Point centerC_2 = new Point(w.getLocationOnScreen().x + w.getWidth() / 2,
89-
w.getLocationOnScreen().y + w.getHeight() + 20); //go below the bottom border
70+
static JFrame frame;
71+
static JButton jbutton;
72+
73+
static Frame frame1;
74+
static Button button1;
75+
76+
static final Robot r = Util.createRobot();
77+
78+
static volatile EnterExitAdapter frameAdapter;
79+
static volatile EnterExitAdapter buttonAdapter;
80+
static volatile Point centerA;
81+
static volatile Point centerB;
82+
static volatile Point centerC_1 ;
83+
static volatile Point centerC_2;
84+
85+
public static void testCase(Window w, Component comp) throws InterruptedException, InvocationTargetException {
86+
EventQueue.invokeAndWait(()-> {
87+
frameAdapter = new EnterExitAdapter(w);
88+
buttonAdapter = new EnterExitAdapter(comp);
89+
90+
w.addMouseListener(frameAdapter);
91+
comp.addMouseListener(buttonAdapter);
92+
93+
w.setSize(200, 200);
94+
w.add(comp, BorderLayout.NORTH);
95+
w.setLocationRelativeTo(null);
96+
w.setVisible(true);
97+
});
98+
99+
r.waitForIdle();
100+
r.delay(1000);
101+
102+
EventQueue.invokeAndWait(()-> {
103+
centerA = new Point(comp.getLocationOnScreen().x + comp.getWidth() / 2,
104+
comp.getLocationOnScreen().y + comp.getHeight() / 2);
105+
centerB = new Point(w.getLocationOnScreen().x + w.getWidth() / 2,
106+
w.getLocationOnScreen().y + w.getHeight() / 2);
107+
//for moving from A outside: don't cross the A area. Move straight to the right.
108+
centerC_1 = new Point(w.getLocationOnScreen().x + w.getWidth() + 20, //go right off the border
109+
comp.getLocationOnScreen().y + comp.getHeight() / 2); //don't cross the A area!
110+
111+
//for moving from B outside: don't cross the B area. Move straight to the bottom.
112+
centerC_2 = new Point(w.getLocationOnScreen().x + w.getWidth() / 2,
113+
w.getLocationOnScreen().y + w.getHeight() + 20); //go below the bottom border
114+
});
115+
90116
//A and B areas
91117
Util.pointOnComp(comp, r);
92118
Util.waitForIdle(r);
@@ -118,12 +144,23 @@ public static void testCase(Window w, Component comp) {
118144
Util.waitForIdle(r);
119145
}
120146

121-
public static void main(String []s)
122-
{
123-
//LW case:
124-
testCase(frame, jbutton);
125-
//HW case
126-
testCase(frame1, button1);
147+
148+
public static void main(String []s) throws InterruptedException, InvocationTargetException {
149+
EventQueue.invokeAndWait(() -> {
150+
frame = new JFrame("SpuriousExitEnter_3_LW");
151+
jbutton = new JButton("jbutton");
152+
153+
frame1 = new Frame("SpuriousExitEnter_3_HW");
154+
button1 = new Button("button");
155+
});
156+
157+
try {
158+
testCase(frame, jbutton); //LW case
159+
testCase(frame1, button1); //HW case
160+
} finally {
161+
EventQueue.invokeLater(frame::dispose);
162+
EventQueue.invokeLater(frame1::dispose);
163+
}
127164
}
128165

129166
private static void moveBetween(Robot r, Point first, Point second) {
@@ -150,9 +187,9 @@ private static void checkEvents(EnterExitAdapter adapter, int entered, int exite
150187

151188

152189
class EnterExitAdapter extends MouseAdapter {
153-
private Component target;
154-
private int enteredEventCount = 0;
155-
private int exitedEventCount = 0;
190+
private final Component target;
191+
private volatile int enteredEventCount = 0;
192+
private volatile int exitedEventCount = 0;
156193

157194
public EnterExitAdapter(Component target) {
158195
this.target = target;
@@ -170,7 +207,7 @@ public int getExitedEventCount(){
170207
}
171208

172209
public void zeroCounters(){
173-
System.out.println("Zeroeing on " +target.getClass().getName());
210+
System.out.println("Zeroing on " +target.getClass().getName());
174211
enteredEventCount = 0;
175212
exitedEventCount = 0;
176213
}

0 commit comments

Comments
 (0)
Failed to load comments.