summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWink Saville <wink@google.com>2013-08-26 11:47:20 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2013-08-26 11:47:20 -0700
commit33283a9726a29b5a79d7885fe194d52c0ebe7450 (patch)
tree60c455e58dc014936cf0f8177ae072439b7bdf44
parentb42beeafcf8117fb4ac41dd91fc9e6113c0d6aae (diff)
parentdce52cdbf1eab8bd979bf4676973699c39f7b32e (diff)
downloadframeworks_base-33283a9726a29b5a79d7885fe194d52c0ebe7450.zip
frameworks_base-33283a9726a29b5a79d7885fe194d52c0ebe7450.tar.gz
frameworks_base-33283a9726a29b5a79d7885fe194d52c0ebe7450.tar.bz2
am dce52cdb: DO NOT MERGE: MDST is not ready until connected to DcTracker.
* commit 'dce52cdbf1eab8bd979bf4676973699c39f7b32e': DO NOT MERGE: MDST is not ready until connected to DcTracker.
-rw-r--r--core/java/android/net/MobileDataStateTracker.java7
-rw-r--r--services/java/com/android/server/ConnectivityService.java28
2 files changed, 30 insertions, 5 deletions
diff --git a/core/java/android/net/MobileDataStateTracker.java b/core/java/android/net/MobileDataStateTracker.java
index adad8de..98cccb8 100644
--- a/core/java/android/net/MobileDataStateTracker.java
+++ b/core/java/android/net/MobileDataStateTracker.java
@@ -375,6 +375,13 @@ public class MobileDataStateTracker implements NetworkStateTracker {
return (setEnableApn(mApnType, false) != PhoneConstants.APN_REQUEST_FAILED);
}
+ /**
+ * @return true if this is ready to operate
+ */
+ public boolean isReady() {
+ return mDataConnectionTrackerAc != null;
+ }
+
@Override
public void captivePortalCheckComplete() {
// not implemented
diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java
index fa016f4..0670819 100644
--- a/services/java/com/android/server/ConnectivityService.java
+++ b/services/java/com/android/server/ConnectivityService.java
@@ -3572,6 +3572,12 @@ public class ConnectivityService extends IConnectivityManager.Stub {
enabled));
}
+ private boolean isMobileDataStateTrackerReady() {
+ MobileDataStateTracker mdst =
+ (MobileDataStateTracker) mNetTrackers[ConnectivityManager.TYPE_MOBILE];
+ return (mdst != null) && (mdst.isReady());
+ }
+
@Override
public int checkMobileProvisioning(boolean sendNotification, int suggestedTimeOutMs,
final ResultReceiver resultReceiver) {
@@ -3739,14 +3745,26 @@ public class ConnectivityService extends IConnectivityManager.Stub {
}
try {
- // Enable fail fast as we'll do retries here and use a
- // hipri connection so the default connection stays active.
- log("isMobileOk: start hipri url=" + params.mUrl);
- mCs.setEnableFailFastMobileData(DctConstants.ENABLED);
-
// Continue trying to connect until time has run out
long endTime = SystemClock.elapsedRealtime() + params.mTimeOutMs;
+ if (!mCs.isMobileDataStateTrackerReady()) {
+ // Wait for MobileDataStateTracker to be ready.
+ if (DBG) log("isMobileOk: mdst is not ready");
+ while(SystemClock.elapsedRealtime() < endTime) {
+ if (mCs.isMobileDataStateTrackerReady()) {
+ // Enable fail fast as we'll do retries here and use a
+ // hipri connection so the default connection stays active.
+ if (DBG) log("isMobileOk: mdst ready, enable fail fast of mobile data");
+ mCs.setEnableFailFastMobileData(DctConstants.ENABLED);
+ break;
+ }
+ sleep(1);
+ }
+ }
+
+ log("isMobileOk: start hipri url=" + params.mUrl);
+
// First wait until we can start using hipri
Binder binder = new Binder();
while(SystemClock.elapsedRealtime() < endTime) {