Index: content/public/test/android/javatests/src/org/chromium/content/browser/test/util/CallbackHelper.java |
diff --git a/content/public/test/android/javatests/src/org/chromium/content/browser/test/util/CallbackHelper.java b/content/public/test/android/javatests/src/org/chromium/content/browser/test/util/CallbackHelper.java |
index 56d6347ad4c14d549ead78e2a9d2ecc14f47bb17..95646e2dd9370ba43da7a78b6abe06c3307b3b8f 100644 |
--- a/content/public/test/android/javatests/src/org/chromium/content/browser/test/util/CallbackHelper.java |
+++ b/content/public/test/android/javatests/src/org/chromium/content/browser/test/util/CallbackHelper.java |
@@ -84,6 +84,31 @@ public class CallbackHelper { |
} |
/** |
+ * Blocks until the criteria is satisfied or throws an exception |
+ * if the specified time frame is exceeded. |
+ * @param timeout timeout value. |
+ * @param unit timeout unit. |
+ */ |
+ public void waitUntilCriteria(Criteria criteria, long timeout, TimeUnit unit) |
+ throws InterruptedException, TimeoutException { |
+ synchronized(mLock) { |
+ final long startTime = System.currentTimeMillis(); |
+ boolean isSatisfied = criteria.isSatisfied(); |
+ while (!isSatisfied && |
+ System.currentTimeMillis() - startTime < unit.toMillis(timeout)) { |
+ mLock.wait(unit.toMillis(timeout)); |
+ isSatisfied = criteria.isSatisfied(); |
+ } |
+ if (!isSatisfied) throw new TimeoutException("waitUntilCriteria timed out!"); |
+ } |
+ } |
+ |
+ public void waitUntilCriteria(Criteria criteria) |
+ throws InterruptedException, TimeoutException { |
+ waitUntilCriteria(criteria, WAIT_TIMEOUT_SECONDS, TimeUnit.SECONDS); |
+ } |
+ |
+ /** |
* Should be called when the callback associated with this helper object is called. |
*/ |
public void notifyCalled() { |