summaryrefslogtreecommitdiff
path: root/qadevOOo
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2012-12-07 16:21:34 +0100
committerStephan Bergmann <sbergman@redhat.com>2012-12-07 16:21:49 +0100
commit21ea372541a81972aa33cb2226dbc2ee3886e23a (patch)
treeb0dbeb688a835472fa4de9c1572271da568912b0 /qadevOOo
parenta6d6d1c24ba497ac8586857baed9d4fb155a17b1 (diff)
Use XNotifyingDispatch to avoid races
Change-Id: Ia91bd08122052f5ea206eb9e6c03524e6e3ec245
Diffstat (limited to 'qadevOOo')
-rw-r--r--qadevOOo/tests/java/mod/_sc/ScAccessiblePageHeaderArea.java47
1 files changed, 38 insertions, 9 deletions
diff --git a/qadevOOo/tests/java/mod/_sc/ScAccessiblePageHeaderArea.java b/qadevOOo/tests/java/mod/_sc/ScAccessiblePageHeaderArea.java
index e1b50192dabb..93dc2e2be935 100644
--- a/qadevOOo/tests/java/mod/_sc/ScAccessiblePageHeaderArea.java
+++ b/qadevOOo/tests/java/mod/_sc/ScAccessiblePageHeaderArea.java
@@ -36,10 +36,13 @@ import com.sun.star.accessibility.XAccessibleContext;
import com.sun.star.accessibility.XAccessibleStateSet;
import com.sun.star.awt.XWindow;
import com.sun.star.container.XIndexAccess;
+import com.sun.star.frame.DispatchResultEvent;
import com.sun.star.frame.XController;
-import com.sun.star.frame.XDispatch;
import com.sun.star.frame.XDispatchProvider;
+import com.sun.star.frame.XDispatchResultListener;
import com.sun.star.frame.XModel;
+import com.sun.star.frame.XNotifyingDispatch;
+import com.sun.star.lang.EventObject;
import com.sun.star.lang.XMultiServiceFactory;
import com.sun.star.sheet.XSpreadsheet;
import com.sun.star.sheet.XSpreadsheetDocument;
@@ -124,18 +127,44 @@ public class ScAccessiblePageHeaderArea extends TestCase {
aParseURL[0].Complete = ".uno:PrintPreview";
xParser.parseStrict(aParseURL);
URL aURL = aParseURL[0];
- XDispatch xDispatcher = xDispProv.queryDispatch(aURL, "", 0);
- if(xDispatcher != null)
- xDispatcher.dispatch( aURL, null );
+ XNotifyingDispatch xDispatcher = UnoRuntime.queryInterface(
+ XNotifyingDispatch.class, xDispProv.queryDispatch(aURL, "", 0));
+ final int[] ok = new int[] { 0 };
+ XDispatchResultListener listener = new XDispatchResultListener() {
+ public void disposing(EventObject Source) {
+ synchronized (ok) {
+ if (ok[0] == 0) {
+ ok[0] = 1;
+ }
+ ok.notifyAll();
+ }
+ }
+ public void dispatchFinished(DispatchResultEvent Result) {
+ synchronized (ok) {
+ ok[0] = 2;
+ ok.notifyAll();
+ }
+ }
+ };
+ xDispatcher.dispatchWithNotification(
+ aURL, null, listener);
+ synchronized (ok) {
+ while (ok[0] == 0) {
+ try {
+ ok.wait();
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ if (ok[0] != 2) {
+ throw new RuntimeException("missing disptachFinished");
+ }
+ }
} catch (com.sun.star.uno.Exception e) {
log.println("Couldn't change mode");
throw new StatusException(Status.failed("Couldn't change mode"));
}
- try {
- Thread.sleep(500);
- } catch (InterruptedException ex) {}
-
AccessibilityTools at = new AccessibilityTools();
XWindow xWindow = at.getCurrentContainerWindow( (XMultiServiceFactory) Param.getMSF(), aModel);
@@ -213,4 +242,4 @@ public class ScAccessiblePageHeaderArea extends TestCase {
throw new StatusException( "Couldn't create document ", e );
}
}
-} \ No newline at end of file
+}