# HG changeset patch # User ssadetsky # Date 1492095873 25200 # Node ID 56f74283845e596c5efb44cd1315ed784504cc7b # Parent 00573e129ce651329fe8f83ab2ce1e72fd0f4b36 8142540: [TEST_BUG] Test sun/awt/dnd/8024061/bug8024061.java fails on ubuntu Reviewed-by: yan, serb diff -r 00573e129ce6 -r 56f74283845e 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;