summaryrefslogtreecommitdiff
path: root/sfx2/qa
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2017-01-12 22:09:27 +0100
committerMichael Stahl <mstahl@redhat.com>2017-01-12 22:11:30 +0100
commite19cdeaf7ddbcf39da47d9685d8e79e775dde7f4 (patch)
tree672e0ba1fd54058b9d590475b2b8a957c9f5084a /sfx2/qa
parent5e223be2102a171c857be8db1327f23faea0ef78 (diff)
sfx2: fix race in JunitTest UndoManager.checkBrokenScripts()
1) checkBrokenScripts(complex.sfx2.UndoManager) java.lang.NullPointerException at complex.sfx2.UndoManager.impl_clickButton(UndoManager.java:432) at complex.sfx2.UndoManager.checkBrokenScripts(UndoManager.java:188) impl_clickButton() gets the wrong accessible object and throws. The .uno:SwitchControlDesignMode is dispatched async, so make sure it's processesed before trying to click the button. See UnoControl::getAccessibleContext() "in design mode, use a fallback". This was running in "rr record --chaos". Change-Id: Iee9f25c2fff56d32e6b579b5d44ee6df9870fd8b
Diffstat (limited to 'sfx2/qa')
-rw-r--r--sfx2/qa/complex/sfx2/UndoManager.java5
1 files changed, 5 insertions, 0 deletions
diff --git a/sfx2/qa/complex/sfx2/UndoManager.java b/sfx2/qa/complex/sfx2/UndoManager.java
index ad82ca4c9db8..a8e6bcdba861 100644
--- a/sfx2/qa/complex/sfx2/UndoManager.java
+++ b/sfx2/qa/complex/sfx2/UndoManager.java
@@ -24,6 +24,7 @@ import com.sun.star.awt.Point;
import com.sun.star.awt.Size;
import com.sun.star.awt.XControl;
import com.sun.star.awt.XControlModel;
+import com.sun.star.awt.XToolkitExperimental;
import com.sun.star.beans.NamedValue;
import com.sun.star.beans.XPropertySet;
import com.sun.star.container.NoSuchElementException;
@@ -182,6 +183,10 @@ public class UndoManager
// switch the doc's view to form alive mode (so the button will actually work)
m_currentDocument.getCurrentView().dispatch( ".uno:SwitchControlDesignMode" );
+ XToolkitExperimental xToolkit = UnoRuntime.queryInterface(
+ XToolkitExperimental.class,
+ getORB().createInstance("com.sun.star.awt.Toolkit"));
+ xToolkit.processEventsToIdle();
// click the button
m_callbackCalled = false;