diff options
8 files changed, 78 insertions, 46 deletions
diff --git a/make/scripts/java-win64-dbg.bat b/make/scripts/java-win64-dbg.bat index 5686224d5..db23423a3 100755 --- a/make/scripts/java-win64-dbg.bat +++ b/make/scripts/java-win64-dbg.bat @@ -22,8 +22,8 @@ REM set D_ARGS="-Djogl.debug=all" "-Dnativewindow.debug=all" REM set D_ARGS="-Djogl.debug=all"
REM set D_ARGS="-Djogl.debug.GLCanvas" "-Djogl.debug.Animator" "-Djogl.debug.GLContext" "-Djogl.debug.GLContext.TraceSwitch" "-Djogl.debug.DebugGL" "-Djogl.debug.TraceGL"
REM set D_ARGS="-Djogl.debug.GLCanvas" "-Djogl.debug.Animator" "-Djogl.debug.GLContext" "-Djogl.debug.GLContext.TraceSwitch" "-Djogl.windows.useWGLVersionOf5WGLGDIFuncSet"
-set D_ARGS="-Djogl.debug.GLCanvas" "-Djogl.debug.Animator" "-Djogl.debug.GLContext" "-Djogl.debug.GLContext.TraceSwitch"
-REM set D_ARGS="-Dnewt.debug.Window"
+REM set D_ARGS="-Djogl.debug.GLCanvas" "-Djogl.debug.Animator" "-Djogl.debug.GLContext" "-Djogl.debug.GLContext.TraceSwitch"
+set D_ARGS="-Dnewt.debug.Window"
REM set D_ARGS="-Djogl.debug.GLDebugMessageHandler" "-Djogl.debug.DebugGL" "-Djogl.debug.TraceGL"
REM set D_ARGS="-Djogl.debug.DebugGL" "-Djogl.debug.GLDebugMessageHandler" "-Djogl.debug.GLSLCode"
REM set D_ARGS="-Djogl.debug.GraphicsConfiguration" "-Djogl.debug.CapabilitiesChooser"
diff --git a/make/scripts/tests-x64.bat b/make/scripts/tests-x64.bat index 7b4e9ea2e..2cd9ec9e9 100755 --- a/make/scripts/tests-x64.bat +++ b/make/scripts/tests-x64.bat @@ -15,7 +15,7 @@ REM scripts\java-win64-dbg.bat com.jogamp.opengl.test.junit.jogl.demos.gl2.newt. REM scripts\java-win64-dbg.bat com.jogamp.opengl.test.junit.jogl.demos.es1.newt.TestGearsES1NEWT %* REM scripts\java-win64.bat com.jogamp.opengl.test.junit.jogl.demos.es2.newt.TestGearsES2NEWT %* REM scripts\java-win64.bat com.jogamp.opengl.test.junit.jogl.demos.es2.newt.TestGearsES2NEWT -vsync -time 4000 -x 10 -y 10 -width 100 -height 100 -screen 0 -scripts\java-win64.bat com.jogamp.opengl.test.junit.jogl.demos.es2.newt.TestGearsES2NEWT -vsync -time 40000 -width 100 -height 100 -screen 0 %* +REM scripts\java-win64.bat com.jogamp.opengl.test.junit.jogl.demos.es2.newt.TestGearsES2NEWT -vsync -time 40000 -width 100 -height 100 -screen 0 %* REM scripts\java-win64-dbg.bat com.jogamp.opengl.test.junit.jogl.awt.TestAWTCardLayoutAnimatorStartStopBug532 %* REM scripts\java-win64-dbg.bat com.jogamp.opengl.test.junit.jogl.demos.gl2.awt.TestGearsAWT -time 5000 REM scripts\java-win64-dbg.bat com.jogamp.opengl.test.junit.jogl.demos.gl2.awt.TestGearsGLJPanelAWT -time 5000 @@ -34,10 +34,10 @@ REM scripts\java-win64-dbg.bat com.jogamp.opengl.test.junit.newt.TestWindows01NE REM scripts\java-win64-dbg.bat com.jogamp.opengl.test.junit.newt.TestGLWindows01NEWT REM scripts\java-win64-dbg.bat com.jogamp.opengl.test.junit.newt.TestGLWindows02NEWTAnimated REM scripts\java-win64-dbg.bat com.jogamp.opengl.test.junit.newt.parenting.TestParenting01NEWT -REM scripts\java-win64.bat com.jogamp.opengl.test.junit.newt.TestFocus01SwingAWTRobot %* +scripts\java-win64-dbg.bat com.jogamp.opengl.test.junit.newt.TestFocus01SwingAWTRobot %* REM scripts\java-win64-dbg.bat com.jogamp.opengl.test.junit.newt.TestFocus02SwingAWTRobot %* REM scripts\java-win64-dbg.bat com.jogamp.opengl.test.junit.nativewindow.TestRecursiveToolkitLockCORE -REM scripts\java-win64-dbg.bat com.jogamp.opengl.test.junit.newt.parenting.TestParenting03AWT -time 100000 +REM scripts\java-win64-dbg.bat com.jogamp.opengl.test.junit.newt.parenting.TestParenting03AWT %* REM scripts\java-win64-dbg.bat com.jogamp.opengl.test.junit.newt.parenting.TestParentingFocusTraversal01AWT %* REM scripts\java-win64-dbg.bat com.jogamp.opengl.test.junit.newt.parenting.TestParentingOffscreenLayer01AWT %* REM scripts\java-win64-dbg.bat com.jogamp.opengl.test.junit.newt.parenting.TestParenting03bAWT -time 100000 diff --git a/make/scripts/tests.sh b/make/scripts/tests.sh index 2bf3342fd..fd856d710 100755 --- a/make/scripts/tests.sh +++ b/make/scripts/tests.sh @@ -87,6 +87,7 @@ function jrun() { #D_ARGS="-Dnewt.debug.Window -Djogl.debug.Animator -Dnewt.debug.Screen" #D_ARGS="-Dnewt.debug.Window -Dnewt.debug.Window.KeyEvent" #D_ARGS="-Dnewt.debug.Window -Dnativewindow.debug=all" + D_ARGS="-Dnewt.debug.Window" #D_ARGS="-Xprof" #D_ARGS="-Djogl.debug.Animator" #D_ARGS="-Dnativewindow.debug=all" @@ -193,7 +194,7 @@ function testswt() { #testnoawt com.jogamp.opengl.test.junit.jogl.demos.gl2.newt.TestGearsNEWT $* #testnoawt com.jogamp.opengl.test.junit.jogl.demos.es1.newt.TestGearsES1NEWT $* #testawt com.jogamp.opengl.test.junit.jogl.demos.es2.newt.TestGearsES2NEWT $* -testnoawt com.jogamp.opengl.test.junit.jogl.demos.es2.newt.TestGearsES2NEWT $* +#testnoawt com.jogamp.opengl.test.junit.jogl.demos.es2.newt.TestGearsES2NEWT $* #testnoawt com.jogamp.opengl.test.junit.jogl.demos.es1.newt.TestRedSquareES1NEWT $* #testnoawt com.jogamp.opengl.test.junit.jogl.demos.es2.newt.TestRedSquareES2NEWT $* #testnoawt com.jogamp.opengl.test.junit.newt.TestWindows01NEWT $* @@ -254,7 +255,7 @@ testnoawt com.jogamp.opengl.test.junit.jogl.demos.es2.newt.TestGearsES2NEWT $* #testawt com.jogamp.opengl.test.junit.jogl.demos.gl2.newt.TestGearsNewtAWTWrapper #testawt com.jogamp.opengl.test.junit.newt.TestEventSourceNotAWTBug #testawt com.jogamp.opengl.test.junit.newt.TestFocus01SwingAWTRobot $* -#testawt com.jogamp.opengl.test.junit.newt.TestFocus02SwingAWTRobot $* +testawt com.jogamp.opengl.test.junit.newt.TestFocus02SwingAWTRobot $* #testawt com.jogamp.opengl.test.junit.newt.TestListenerCom01AWT #testawt com.jogamp.opengl.test.junit.newt.parenting.TestParenting01aAWT $* #testawt com.jogamp.opengl.test.junit.newt.parenting.TestParenting01bAWT $* diff --git a/src/test/com/jogamp/opengl/test/junit/jogl/newt/TestSwingAWTRobotUsageBeforeJOGLInitBug411.java b/src/test/com/jogamp/opengl/test/junit/jogl/newt/TestSwingAWTRobotUsageBeforeJOGLInitBug411.java index 213d3ad05..bacf54506 100644 --- a/src/test/com/jogamp/opengl/test/junit/jogl/newt/TestSwingAWTRobotUsageBeforeJOGLInitBug411.java +++ b/src/test/com/jogamp/opengl/test/junit/jogl/newt/TestSwingAWTRobotUsageBeforeJOGLInitBug411.java @@ -157,7 +157,9 @@ public class TestSwingAWTRobotUsageBeforeJOGLInitBug411 extends UITestCase { robot = new Robot(); robot.setAutoWaitForIdle(true); - AWTRobotUtil.toFront(robot, frame); + Assert.assertEquals(true, AWTRobotUtil.waitForVisible(frame, true)); + AWTRobotUtil.clearAWTFocus(robot); + AWTRobotUtil.toFrontAndRequestFocus(robot, frame); AWTRobotUtil.requestFocus(robot, button); System.err.println("TestSwingAWTRobotUsageBeforeJOGLInitBug411.setup(): Before JOGL init"); @@ -195,7 +197,7 @@ public class TestSwingAWTRobotUsageBeforeJOGLInitBug411 extends UITestCase { } }); - AWTRobotUtil.toFront(robot, frame); + AWTRobotUtil.toFrontAndRequestFocus(robot, frame); drawable.addGLEventListener(new GearsES2()); @@ -214,6 +216,7 @@ public class TestSwingAWTRobotUsageBeforeJOGLInitBug411 extends UITestCase { drawable.addGLEventListener(new SwingGLAction()); Point p0 = canvas.getLocationOnScreen(); + p0.translate(10,10); robot.mouseMove( (int) ( p0.getX() + .5 ) , (int) ( p0.getY() + .5 ) ); robot.mousePress(InputEvent.BUTTON1_MASK); diff --git a/src/test/com/jogamp/opengl/test/junit/newt/TestFocus01SwingAWTRobot.java b/src/test/com/jogamp/opengl/test/junit/newt/TestFocus01SwingAWTRobot.java index fe7fef09f..bb67e77ea 100644 --- a/src/test/com/jogamp/opengl/test/junit/newt/TestFocus01SwingAWTRobot.java +++ b/src/test/com/jogamp/opengl/test/junit/newt/TestFocus01SwingAWTRobot.java @@ -35,7 +35,6 @@ import org.junit.Assume; import java.awt.AWTException; import java.awt.BorderLayout; import java.awt.Button; -import java.awt.Color; import java.awt.Robot; import java.lang.reflect.InvocationTargetException; @@ -132,7 +131,10 @@ public class TestFocus01SwingAWTRobot extends UITestCase { public void run() { frame1.setVisible(true); } } ); - Assert.assertTrue(AWTRobotUtil.toFront(robot, frame1)); + Assert.assertEquals(true, AWTRobotUtil.waitForVisible(frame1, true)); + Assert.assertEquals(true, AWTRobotUtil.waitForRealized(glWindow1, true)); + AWTRobotUtil.clearAWTFocus(robot); + Assert.assertTrue(AWTRobotUtil.toFrontAndRequestFocus(robot, frame1)); Thread.sleep(durationPerTest); // manual testing @@ -145,7 +147,6 @@ public class TestFocus01SwingAWTRobot extends UITestCase { // Continuous animation .. Animator animator = new Animator(glWindow1); animator.start(); - AWTRobotUtil.assertRequestFocusAndWait(robot, frame1, frame1, frame1FA, null); // Button Focus Thread.sleep(100); // allow event sync @@ -153,9 +154,6 @@ public class TestFocus01SwingAWTRobot extends UITestCase { System.err.println("FOCUS AWT Button request"); EventCountAdapterUtil.reset(eventCountAdapters); AWTRobotUtil.assertRequestFocusAndWait(robot, button, button, buttonFA, frame1FA); - Assert.assertEquals(true, buttonFA.focusGained()); - Assert.assertEquals(false, frame1FA.focusGained()); - Assert.assertEquals(true, frame1FA.focusLost()); Assert.assertEquals(false, glWindow1FA.focusGained()); Assert.assertEquals(false, newtCanvasAWTFA.focusGained()); System.err.println("FOCUS AWT Button sync"); @@ -166,9 +164,6 @@ public class TestFocus01SwingAWTRobot extends UITestCase { System.err.println("FOCUS NEWT Canvas/GLWindow request"); EventCountAdapterUtil.reset(eventCountAdapters); AWTRobotUtil.assertRequestFocusAndWait(robot, newtCanvasAWT, newtCanvasAWT.getNEWTChild(), glWindow1FA, buttonFA); - Assert.assertEquals(true, glWindow1FA.focusGained()); - Assert.assertEquals(false, buttonFA.focusGained()); - Assert.assertEquals(true, buttonFA.focusLost()); Assert.assertEquals(false, newtCanvasAWTFA.focusGained()); System.err.println("FOCUS NEWT Canvas/GLWindow sync"); AWTRobotUtil.assertKeyType(robot, java.awt.event.KeyEvent.VK_A, 2, glWindow1, glWindow1KA); diff --git a/src/test/com/jogamp/opengl/test/junit/newt/TestFocus02SwingAWTRobot.java b/src/test/com/jogamp/opengl/test/junit/newt/TestFocus02SwingAWTRobot.java index b9eb748b7..a0efa53ad 100644 --- a/src/test/com/jogamp/opengl/test/junit/newt/TestFocus02SwingAWTRobot.java +++ b/src/test/com/jogamp/opengl/test/junit/newt/TestFocus02SwingAWTRobot.java @@ -156,7 +156,10 @@ public class TestFocus02SwingAWTRobot extends UITestCase { public void run() { jFrame1.setVisible(true); } } ); - Assert.assertTrue(AWTRobotUtil.toFront(robot, jFrame1)); + Assert.assertEquals(true, AWTRobotUtil.waitForVisible(jFrame1, true)); + Assert.assertEquals(true, AWTRobotUtil.waitForRealized(glWindow1, true)); + AWTRobotUtil.clearAWTFocus(robot); + Assert.assertTrue(AWTRobotUtil.toFrontAndRequestFocus(robot, jFrame1)); int wait=0; while(wait<awtWaitTimeout/10 && glWindow1.getTotalFPSFrames()<1) { Thread.sleep(awtWaitTimeout/100); wait++; } @@ -167,7 +170,6 @@ public class TestFocus02SwingAWTRobot extends UITestCase { // Continuous animation .. Animator animator1 = new Animator(glWindow1); animator1.start(); - AWTRobotUtil.assertRequestFocusAndWait(robot, jFrame1, jFrame1, jFrame1FA, null); Thread.sleep(durationPerTest); // manual testing @@ -176,13 +178,9 @@ public class TestFocus02SwingAWTRobot extends UITestCase { System.err.println("FOCUS AWT Button Outer request"); EventCountAdapterUtil.reset(eventCountAdapters); AWTRobotUtil.assertRequestFocusAndWait(robot, buttonNorthOuter, buttonNorthOuter, buttonNorthOuterFA, jFrame1FA); - Assert.assertEquals(true, buttonNorthOuterFA.focusGained()); - Assert.assertEquals(false, jFrame1FA.focusGained()); - Assert.assertEquals(true, jFrame1FA.focusLost()); Assert.assertEquals(false, glWindow1FA.focusGained()); Assert.assertEquals(false, newtCanvasAWTFA.focusGained()); Assert.assertEquals(false, buttonNorthInnerFA.focusGained()); - Assert.assertEquals(false, jFrame1FA.focusGained()); System.err.println("FOCUS AWT Button Outer sync"); AWTRobotUtil.assertKeyType(robot, java.awt.event.KeyEvent.VK_A, 2, buttonNorthOuter, buttonNorthOuterKA); AWTRobotUtil.assertMouseClick(robot, java.awt.event.InputEvent.BUTTON1_MASK, 1, @@ -195,12 +193,8 @@ public class TestFocus02SwingAWTRobot extends UITestCase { System.err.println("FOCUS NEWT Canvas/GLWindow request"); EventCountAdapterUtil.reset(eventCountAdapters); AWTRobotUtil.assertRequestFocusAndWait(robot, newtCanvasAWT, newtCanvasAWT.getNEWTChild(), glWindow1FA, buttonNorthOuterFA); - Assert.assertEquals(true, glWindow1FA.focusGained()); - Assert.assertEquals(false, buttonNorthOuterFA.focusGained()); - Assert.assertEquals(true, buttonNorthOuterFA.focusLost()); Assert.assertEquals(false, newtCanvasAWTFA.focusGained()); Assert.assertEquals(false, buttonNorthInnerFA.focusGained()); - Assert.assertEquals(false, buttonNorthOuterFA.focusGained()); Assert.assertEquals(false, jFrame1FA.focusGained()); System.err.println("FOCUS NEWT Canvas/GLWindow sync"); AWTRobotUtil.assertKeyType(robot, java.awt.event.KeyEvent.VK_A, 2, glWindow1, glWindow1KA); @@ -216,9 +210,6 @@ public class TestFocus02SwingAWTRobot extends UITestCase { System.err.println("FOCUS AWT Button request"); EventCountAdapterUtil.reset(eventCountAdapters); AWTRobotUtil.assertRequestFocusAndWait(robot, buttonNorthInner, buttonNorthInner, buttonNorthInnerFA, glWindow1FA); - Assert.assertEquals(true, buttonNorthInnerFA.focusGained()); - Assert.assertEquals(false, glWindow1FA.focusGained()); - Assert.assertEquals(true, glWindow1FA.focusLost()); Assert.assertEquals(false, newtCanvasAWTFA.focusGained()); Assert.assertEquals(false, buttonNorthOuterFA.focusGained()); Assert.assertEquals(false, jFrame1FA.focusGained()); @@ -235,9 +226,6 @@ public class TestFocus02SwingAWTRobot extends UITestCase { EventCountAdapterUtil.reset(eventCountAdapters); AWTRobotUtil.assertRequestFocusAndWait(robot, newtCanvasAWT, newtCanvasAWT.getNEWTChild(), glWindow1FA, buttonNorthInnerFA); Assert.assertTrue(AWTRobotUtil.waitForFocusCount(false, newtCanvasAWTFA)); - Assert.assertEquals(true, glWindow1FA.focusGained()); - Assert.assertEquals(false, buttonNorthInnerFA.focusGained()); - Assert.assertEquals(true, buttonNorthInnerFA.focusLost()); Assert.assertEquals(false, newtCanvasAWTFA.focusGained()); Assert.assertEquals(false, buttonNorthOuterFA.focusGained()); Assert.assertEquals(false, jFrame1FA.focusGained()); diff --git a/src/test/com/jogamp/opengl/test/junit/newt/parenting/TestParentingFocusTraversal01AWT.java b/src/test/com/jogamp/opengl/test/junit/newt/parenting/TestParentingFocusTraversal01AWT.java index b23c17022..7444b438e 100644 --- a/src/test/com/jogamp/opengl/test/junit/newt/parenting/TestParentingFocusTraversal01AWT.java +++ b/src/test/com/jogamp/opengl/test/junit/newt/parenting/TestParentingFocusTraversal01AWT.java @@ -191,7 +191,9 @@ public class TestParentingFocusTraversal01AWT extends UITestCase { }}); Assert.assertEquals(true, AWTRobotUtil.waitForVisible(glWindow1, true)); Assert.assertEquals(newtCanvasAWT1.getNativeWindow(),glWindow1.getParent()); - + AWTRobotUtil.clearAWTFocus(robot); + Assert.assertTrue(AWTRobotUtil.toFrontAndRequestFocus(robot, frame1)); + Assert.assertEquals(true, animator1.isAnimating()); Assert.assertEquals(false, animator1.isPaused()); Assert.assertNotNull(animator1.getThread()); @@ -203,7 +205,6 @@ public class TestParentingFocusTraversal01AWT extends UITestCase { // initial focus on bWest // AWTRobotUtil.assertRequestFocusAndWait(robot, cWest, cWest, bWestFA, null); - Assert.assertEquals(true, bWestFA.focusGained()); Thread.sleep(durationPerTest/numFocus); // diff --git a/src/test/com/jogamp/opengl/test/junit/util/AWTRobotUtil.java b/src/test/com/jogamp/opengl/test/junit/util/AWTRobotUtil.java index a27bdd7a2..b626ed282 100644 --- a/src/test/com/jogamp/opengl/test/junit/util/AWTRobotUtil.java +++ b/src/test/com/jogamp/opengl/test/junit/util/AWTRobotUtil.java @@ -37,6 +37,7 @@ import java.awt.KeyboardFocusManager; import java.awt.Robot; import java.awt.Toolkit; +import javax.media.nativewindow.NativeWindow; import javax.media.opengl.awt.GLCanvas; import org.junit.Assert; @@ -52,6 +53,20 @@ public class AWTRobotUtil { public static final int TIME_SLICE = TIME_OUT / POLL_DIVIDER ; public static Integer AWT_CLICK_TO = null; + public static void clearAWTFocus(Robot robot) throws InterruptedException, InvocationTargetException, AWTException { + if(null == robot) { + robot = new Robot(); + robot.setAutoWaitForIdle(true); + } + javax.swing.SwingUtilities.invokeAndWait(new Runnable() { + public void run() { + System.err.println("******** clearAWTFocus.0"); + KeyboardFocusManager.getCurrentKeyboardFocusManager().clearGlobalFocusOwner(); + }}); + robot.delay(ROBOT_DELAY); + System.err.println("******** clearAWTFocus.X"); + } + public static java.awt.Point getCenterLocation(Object obj, boolean onTitleBarIfWindow) throws InterruptedException, InvocationTargetException { Component comp = null; @@ -99,9 +114,10 @@ public class AWTRobotUtil { * * @return True if the Window became the global focused Window within TIME_OUT */ - public static boolean toFront(Robot robot, final java.awt.Window window) + public static boolean toFrontAndRequestFocus(Robot robot, final java.awt.Window window) throws AWTException, InterruptedException, InvocationTargetException { + // just for event tracing .. AWTWindowFocusAdapter winFA = new AWTWindowFocusAdapter("window"); window.addWindowFocusListener(winFA); @@ -110,7 +126,7 @@ public class AWTRobotUtil { robot.setAutoWaitForIdle(true); } java.awt.Point p0 = getCenterLocation(window, false); - System.err.println("robot pos: "+p0); + System.err.println("toFront: robot pos: "+p0); robot.mouseMove( (int) p0.getX(), (int) p0.getY() ); robot.delay(ROBOT_DELAY); @@ -123,11 +139,18 @@ public class AWTRobotUtil { robot.delay(ROBOT_DELAY); int wait; - for (wait=0; wait<POLL_DIVIDER && !winFA.focusGained(); wait++) { + for (wait=0; wait<POLL_DIVIDER && !window.hasFocus(); wait++) { Thread.sleep(TIME_SLICE); } + final boolean success = wait<POLL_DIVIDER; window.removeWindowFocusListener(winFA); - return wait<POLL_DIVIDER; + if(!success) { + System.err.println("*** AWTRobotUtil.toFrontAndRequestFocus() UI failure"); + System.err.println("*** window: "+window); + System.err.println("*** window.hasFocus(): "+window.hasFocus()); + Thread.dumpStack(); + } + return success; } /** @@ -143,7 +166,7 @@ public class AWTRobotUtil { } java.awt.Point p0 = getCenterLocation(obj, onTitleBarIfWindow); - System.err.println("robot pos: "+p0); + System.err.println("centerMouse: robot pos: "+p0+", onTitleBarIfWindow: "+onTitleBarIfWindow); robot.mouseMove( (int) p0.getX(), (int) p0.getY() ); robot.delay(ROBOT_DELAY); @@ -190,9 +213,11 @@ public class AWTRobotUtil { javax.swing.SwingUtilities.invokeAndWait(new Runnable() { public void run() { comp.requestFocus(); + System.err.println("requestFocus: AWT Component"); }}); } else { win.requestFocus(); + System.err.println("requestFocus: NEWT Component"); } } else { final int mouseButton = java.awt.event.InputEvent.BUTTON1_MASK; @@ -201,7 +226,9 @@ public class AWTRobotUtil { robot.waitForIdle(); robot.mousePress(mouseButton); robot.mouseRelease(mouseButton); - robot.delay( getClickTimeout(obj) + 1 ); + final int d = getClickTimeout(obj) + 1; + robot.delay( d ); + System.err.println("requestFocus: click, d: "+d+" ms"); } } @@ -275,10 +302,27 @@ public class AWTRobotUtil { hasFocus = waitForFocus(waitForFocus, gain, lost); } if(!hasFocus) { - System.err.println("requestFocus: "+requestFocus); - System.err.println("waitForFocus: "+waitForFocus); - System.err.println("gain: "+gain); - System.err.println("lost: "+lost); + System.err.print("*** AWTRobotUtil.assertRequestFocusAndWait() "); + if(gain.focusGained() && !lost.focusLost()) { + // be error tolerant here, some impl. may lack focus-lost events (OS X) + System.err.println("minor UI failure"); + hasFocus = true; + } else { + System.err.println("major UI failure"); + } + if(requestFocus instanceof Component) { + System.err.println("*** requestFocus.hasFocus() - AWT: "+((Component)requestFocus).hasFocus()); + } else if(requestFocus instanceof NativeWindow) { + System.err.println("*** requestFocus.hasFocus() - NW: "+((NativeWindow)requestFocus).hasFocus()); + } + if(waitForFocus instanceof Component) { + System.err.println("*** waitForFocus.hasFocus() - AWT: "+((Component)waitForFocus).hasFocus()); + } else if(waitForFocus instanceof NativeWindow) { + System.err.println("*** waitForFocus.hasFocus() - NW: "+((NativeWindow)waitForFocus).hasFocus()); + } + System.err.println("*** gain: "+gain); + System.err.println("*** lost: "+lost); + Thread.dumpStack(); } Assert.assertTrue("Did not gain focus", hasFocus); } |