8142540: [TEST_BUG] Test sun/awt/dnd/8024061/bug8024061.java fails on ubuntu
Reviewed-by: yan, serb
--- a/jdk/test/sun/awt/dnd/8024061/bug8024061.java Wed Apr 12 09:00:32 2017 -0700
+++ b/jdk/test/sun/awt/dnd/8024061/bug8024061.java Thu Apr 13 08:04:33 2017 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2017 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
@@ -70,9 +70,14 @@
private static final DataFlavor DropObjectFlavor;
private static final int DELAY = 1000;
- private final DnDPanel panel1 = new DnDPanel(Color.yellow);
- private final DnDPanel panel2 = new DnDPanel(Color.pink);
+ static final DnDPanel panel1 = new DnDPanel(Color.yellow);
+ static final DnDPanel panel2 = new DnDPanel(Color.pink);
private final JFrame frame;
+ static Point here;
+ static Point there;
+ static Dimension d;
+
+
private static final CountDownLatch lock = new CountDownLatch(1);
private static volatile Exception dragEnterException = null;
@@ -91,7 +96,7 @@
frame = new JFrame("DnDWithRobot");
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
- Dimension d = new Dimension(100, 100);
+ d = new Dimension(100, 100);
panel1.setPreferredSize(d);
panel2.setPreferredSize(d);
@@ -126,12 +131,15 @@
final Robot robot = new Robot();
robot.setAutoDelay(10);
robot.waitForIdle();
+ robot.delay(200);
JFrame frame = dnd[0].frame;
- Point point = frame.getLocationOnScreen();
- Point here = new Point(point.x + 35, point.y + 45);
- Point there = new Point(point.x + 120, point.y + 45);
- here.x += 25;
+ SwingUtilities.invokeAndWait(() -> {
+ here = panel1.getLocationOnScreen();
+ there = panel2.getLocationOnScreen();
+ });
+ here.translate(d.width / 2, d.height / 2);
+ there.translate(d.width / 2, d.height / 2);
robot.mouseMove(here.x, here.y);
robot.mousePress(InputEvent.BUTTON1_MASK);
while (here.x < there.x) {
@@ -159,7 +167,7 @@
throw new RuntimeException("Timed out waiting for dragEnter()");
}
} finally {
- frame.dispose();
+ SwingUtilities.invokeLater(frame::dispose);
}
}
@@ -220,7 +228,7 @@
}
}
- class DnDPanel extends JPanel {
+ static class DnDPanel extends JPanel {
DropObject dropObject;
final DragSource dragSource;
final DropTarget dropTarget;