8142540: [TEST_BUG] Test sun/awt/dnd/8024061/bug8024061.java fails on ubuntu
authorssadetsky
Thu, 13 Apr 2017 08:04:33 -0700
changeset 44763 56f74283845e
parent 44762 00573e129ce6
child 44764 678cc89dc95d
8142540: [TEST_BUG] Test sun/awt/dnd/8024061/bug8024061.java fails on ubuntu Reviewed-by: yan, serb
jdk/test/sun/awt/dnd/8024061/bug8024061.java
--- 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;