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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/feedback/ConnectivityTask.java

Issue 1215233002: [Feedback] Add support for using callbacks for ConnectivityTask (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@add-connectivity-task-enum
Patch Set: Rebased Created 5 years, 6 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 | « no previous file | chrome/android/java/src/org/chromium/chrome/browser/feedback/FeedbackCollector.java » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/android/java/src/org/chromium/chrome/browser/feedback/ConnectivityTask.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/feedback/ConnectivityTask.java b/chrome/android/java/src/org/chromium/chrome/browser/feedback/ConnectivityTask.java
index 0c037806829effc923056b2407166882cba2742c..e355f0204033e33098e328abb1b3ec995d3df1d2 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/feedback/ConnectivityTask.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/feedback/ConnectivityTask.java
@@ -16,6 +16,8 @@ import java.util.EnumMap;
import java.util.HashMap;
import java.util.Map;
+import javax.annotation.Nullable;
+
/**
* A utility class for checking if the device is currently connected to the Internet by using
* both available network stacks, and checking over both HTTP and HTTPS.
@@ -104,6 +106,16 @@ public class ConnectivityTask {
}
/**
+ * ConnectivityResult is the callback for when the result of a connectivity check is ready.
+ */
+ interface ConnectivityResult {
+ /**
+ * Called when the FeedbackData is ready.
+ */
+ void onResult(FeedbackData feedbackData);
+ }
+
+ /**
* FeedbackData contains the set of information that is to be included in a feedback report.
*/
static final class FeedbackData {
@@ -202,15 +214,28 @@ public class ConnectivityTask {
Log.v(TAG, "Got result for " + getHumanReadableString(mType) + ": result = "
+ getHumanReadableString(result));
mResult.put(mType, result);
+ if (isDone()) postCallbackResult();
+ }
+
+ private void postCallbackResult() {
+ if (mCallback == null) return;
+ ThreadUtils.postOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ mCallback.onResult(get());
+ }
+ });
}
}
private final Map<Type, Integer> mResult = new EnumMap<Type, Integer>(Type.class);
private final int mTimeoutMs;
+ private final ConnectivityResult mCallback;
private final long mStartCheckTimeMs;
- private ConnectivityTask(Profile profile, int timeoutMs) {
+ private ConnectivityTask(Profile profile, int timeoutMs, ConnectivityResult callback) {
mTimeoutMs = timeoutMs;
+ mCallback = callback;
mStartCheckTimeMs = SystemClock.elapsedRealtime();
for (Type t : Type.values()) {
SingleTypeTask task = new SingleTypeTask(t);
@@ -251,16 +276,20 @@ public class ConnectivityTask {
* Starts an asynchronous request for checking whether the device is currently connected to the
* Internet using both the Chrome and the Android system network stack.
*
- * The result can be retrieved by calling {@link #get}, and this call must happen from the main
+ * The result will be given back in the {@link ConnectivityResult} callback that is passed in,
+ * either when all results have been gathered successfully or if a timeout happened. The result
+ * can also be retrieved by calling {@link #get}, and this call must happen from the main
* thread. {@link #isDone} can be used to see if all requests have been completed. It is OK to
* get the result before {@link #isDone()} returns true.
*
* @param profile the context to do the check in.
* @param timeoutMs number of milliseconds to wait before giving up waiting for a connection.
+ * @param callback the callback for the result. May be null.
* @return a ConnectivityTask to retrieve the results.
*/
- public static ConnectivityTask create(Profile profile, int timeoutMs) {
+ public static ConnectivityTask create(
+ Profile profile, int timeoutMs, @Nullable ConnectivityResult callback) {
ThreadUtils.assertOnUiThread();
- return new ConnectivityTask(profile, timeoutMs);
+ return new ConnectivityTask(profile, timeoutMs, callback);
}
}
« no previous file with comments | « no previous file | chrome/android/java/src/org/chromium/chrome/browser/feedback/FeedbackCollector.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698