Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1820)

Unified Diff: content/public/android/javatests/src/org/chromium/content/browser/CriteriaHelper.java

Issue 10913074: Add WebView implementation for CookieManager. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Rebased Created 8 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/public/android/javatests/src/org/chromium/content/browser/Criteria.java ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/public/android/javatests/src/org/chromium/content/browser/CriteriaHelper.java
diff --git a/content/public/android/javatests/src/org/chromium/content/browser/CriteriaHelper.java b/content/public/android/javatests/src/org/chromium/content/browser/CriteriaHelper.java
new file mode 100644
index 0000000000000000000000000000000000000000..9655361f573aa02b6b796de25fa7c8d91bcbf7d6
--- /dev/null
+++ b/content/public/android/javatests/src/org/chromium/content/browser/CriteriaHelper.java
@@ -0,0 +1,71 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.content.browser.test;
+
+/**
+ * Helper methods for creating and managing criteria.
+ *
+ * <p>
+ * If possible, use callbacks or testing delegates instead of criteria as they
+ * do not introduce any polling delays. Should only use Criteria if no suitable
+ * other approach exists.
+ */
+public class CriteriaHelper {
+
+ /** The default maximum time to wait for a criteria to become valid. */
+ public static final long DEFAULT_MAX_TIME_TO_POLL = 3000;
+ /** The default polling interval to wait between checking for a satisfied criteria. */
+ public static final long DEFAULT_POLLING_INTERVAL = 50;
+
+ /**
+ * Checks whether the given Criteria is satisfied at a given interval, until either
+ * the criteria is satisfied, or the specified maxTimeoutMs number of ms has elapsed.
+ * @param criteria The Criteria that will be checked.
+ * @param maxTimeoutMs The maximum number of ms that this check will be performed for
+ * before timeout.
+ * @param checkIntervalMs The number of ms between checks.
+ * @return true iff checking has ended with the criteria being satisfied.
+ * @throws InterruptedException
+ */
+ public static boolean pollForCriteria(Criteria criteria, long maxTimeoutMs,
+ long checkIntervalMs) throws InterruptedException {
+ boolean isSatisfied = criteria.isSatisfied();
+ long startTime = System.currentTimeMillis();
+ while (!isSatisfied && System.currentTimeMillis() - startTime < maxTimeoutMs) {
+ Thread.sleep(checkIntervalMs);
+ isSatisfied = criteria.isSatisfied();
+ }
+ return isSatisfied;
+ }
+
+ /**
+ * Checks whether the given Criteria is satisfied polling at a default interval.
+ *
+ * @param criteria The Criteria that will be checked.
+ * @return iff checking has ended with the criteria being satisfied.
+ * @throws InterruptedException
+ * @see #pollForCriteria(Criteria, long, long)
+ */
+ public static boolean pollForCriteria(Criteria criteria) throws InterruptedException {
+ return pollForCriteria(criteria, DEFAULT_MAX_TIME_TO_POLL, DEFAULT_POLLING_INTERVAL);
+ }
+
+ /**
+ * Performs the runnable action, then checks whether the given criteria are satisfied
+ * until the specified timeout, using the pollForCriteria method. If not, then the runnable
+ * action is performed again, to a maximum of maxAttempts tries.
+ */
+ public static boolean runUntilCriteria(Runnable runnable, Criteria criteria,
+ int maxAttempts, long maxTimeoutMs, long checkIntervalMs) throws InterruptedException {
+ int count = 0;
+ boolean success = false;
+ while (count < maxAttempts && !success) {
+ count++;
+ runnable.run();
+ success = pollForCriteria(criteria, maxTimeoutMs, checkIntervalMs);
+ }
+ return success;
+ }
+}
« no previous file with comments | « content/public/android/javatests/src/org/chromium/content/browser/Criteria.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698