diff options
author | Michael Stahl <mstahl@redhat.com> | 2017-01-12 22:09:27 +0100 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2017-01-12 22:11:30 +0100 |
commit | e19cdeaf7ddbcf39da47d9685d8e79e775dde7f4 (patch) | |
tree | 672e0ba1fd54058b9d590475b2b8a957c9f5084a /sfx2/qa/complex | |
parent | 5e223be2102a171c857be8db1327f23faea0ef78 (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/complex')
-rw-r--r-- | sfx2/qa/complex/sfx2/UndoManager.java | 5 |
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; |