diff options
author | Jeff Sharkey <jsharkey@android.com> | 2011-07-13 10:44:07 -0700 |
---|---|---|
committer | Jeff Sharkey <jsharkey@android.com> | 2011-07-26 17:53:27 -0700 |
commit | 34821881c159e434a1a2c8a6ba5ebfc64376791e (patch) | |
tree | a972c15dc1893d332ed511ff8829e9d38d59689a /core/java/android/content/SyncManager.java | |
parent | 19f773bc96c141227fab3af68d9fcdf9a3c087cb (diff) | |
download | frameworks_base-34821881c159e434a1a2c8a6ba5ebfc64376791e.zip frameworks_base-34821881c159e434a1a2c8a6ba5ebfc64376791e.tar.gz frameworks_base-34821881c159e434a1a2c8a6ba5ebfc64376791e.tar.bz2 |
Avoid sync when UID network is disconnected.
During maybeStartNextSyncLocked(), check the network connectivity for
the target UID, and skip when disconnected.
Bug: 4519115
Change-Id: I8adee8e04521cb878624b19e557d01869f984c4c
Diffstat (limited to 'core/java/android/content/SyncManager.java')
-rw-r--r-- | core/java/android/content/SyncManager.java | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/core/java/android/content/SyncManager.java b/core/java/android/content/SyncManager.java index 2cb8a86..5be6ec1 100644 --- a/core/java/android/content/SyncManager.java +++ b/core/java/android/content/SyncManager.java @@ -1691,12 +1691,28 @@ public class SyncManager implements OnAccountsUpdateListener { continue; } - // skip the sync if it isn't manual and auto sync or - // background data usage is disabled + final RegisteredServicesCache.ServiceInfo<SyncAdapterType> syncAdapterInfo; + syncAdapterInfo = mSyncAdapters.getServiceInfo( + SyncAdapterType.newKey(op.authority, op.account.type)); + + // only proceed if network is connected for requesting UID + final boolean uidNetworkConnected; + if (syncAdapterInfo != null) { + final NetworkInfo networkInfo = getConnectivityManager() + .getActiveNetworkInfoForUid(syncAdapterInfo.uid); + uidNetworkConnected = networkInfo != null && networkInfo.isConnected(); + } else { + uidNetworkConnected = false; + } + + // skip the sync if it isn't manual, and auto sync or + // background data usage is disabled or network is + // disconnected for the target UID. if (!op.extras.getBoolean(ContentResolver.SYNC_EXTRAS_IGNORE_SETTINGS, false) && (syncableState > 0) && (!masterSyncAutomatically || !backgroundDataUsageAllowed + || !uidNetworkConnected || !mSyncStorageEngine.getSyncAutomatically( op.account, op.authority))) { operationIterator.remove(); |