diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2013-10-07 10:18:03 +0200 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2013-10-07 10:22:16 +0200 |
commit | b5dd2b4218f966e177d880bcc29fa5fba3bfe1c1 (patch) | |
tree | 9b56192b4b9685fd5ba707f925ff4865d383c1bc /qadevOOo | |
parent | 77df4f8943c8e7bf0a308197b032a841fe3e365a (diff) |
Also cope with intermittend DisposedExceptions
...while waiting for the .uno:PrintPreview request to be processed, see
5b5c52a3a4d048bba8c18dfb06ffca25c670d099 "Try make this more robust in slow
environments." (However, to avoid an endless loop in case DisposedExceptions
are caused by a crash of soffice.bin, cap the loop at 10 sec.)
Change-Id: I13518eea46deb68731604ef08461bad5bb5f7cdf
Diffstat (limited to 'qadevOOo')
-rw-r--r-- | qadevOOo/tests/java/mod/_sc/ScAccessiblePageHeader.java | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/qadevOOo/tests/java/mod/_sc/ScAccessiblePageHeader.java b/qadevOOo/tests/java/mod/_sc/ScAccessiblePageHeader.java index 97764dd9fd8e..f1f7b0796feb 100644 --- a/qadevOOo/tests/java/mod/_sc/ScAccessiblePageHeader.java +++ b/qadevOOo/tests/java/mod/_sc/ScAccessiblePageHeader.java @@ -39,6 +39,7 @@ import com.sun.star.frame.XController; import com.sun.star.frame.XDispatch; import com.sun.star.frame.XDispatchProvider; import com.sun.star.frame.XModel; +import com.sun.star.lang.DisposedException; import com.sun.star.lang.XMultiServiceFactory; import com.sun.star.sheet.XHeaderFooterContent; import com.sun.star.sheet.XSpreadsheet; @@ -138,22 +139,30 @@ public class ScAccessiblePageHeader extends TestCase { AccessibilityTools at = new AccessibilityTools(); XInterface oObj = null; - for (;;) { + for (int i = 0;; ++i) { try { Thread.sleep(500); } catch (InterruptedException e) { throw new RuntimeException(e); } - XWindow xWindow = AccessibilityTools.getCurrentWindow( (XMultiServiceFactory) Param.getMSF(), aModel); - XAccessible xRoot = AccessibilityTools.getAccessibleObject(xWindow); - if (xRoot != null) { - oObj = AccessibilityTools.getAccessibleObjectForRole - (xRoot, AccessibleRole.HEADER, ""); - if (oObj != null) { - log.println("ImplementationName " + utils.getImplName(oObj)); - AccessibilityTools.printAccessibleTree(log, xRoot, Param.getBool(util.PropertyName.DEBUG_IS_ACTIVE)); - break; + try { + XWindow xWindow = AccessibilityTools.getCurrentWindow( (XMultiServiceFactory) Param.getMSF(), aModel); + XAccessible xRoot = AccessibilityTools.getAccessibleObject(xWindow); + if (xRoot != null) { + oObj = AccessibilityTools.getAccessibleObjectForRole + (xRoot, AccessibleRole.HEADER, ""); + if (oObj != null) { + log.println("ImplementationName " + utils.getImplName(oObj)); + AccessibilityTools.printAccessibleTree(log, xRoot, Param.getBool(util.PropertyName.DEBUG_IS_ACTIVE)); + break; + } } + } catch (DisposedException e) { + log.println("Ignoring DisposedException"); + } + if (i == 20) { // give up after 10 sec + throw new RuntimeException( + "Couldn't get AccessibleRoot.HEADER object"); } log.println("No HEADER found yet, retrying"); } |