diff options
author | Benedict Wong <benedictwong@google.com> | 2018-05-17 15:16:51 -0700 |
---|---|---|
committer | Ryan Longair <rlongair@google.com> | 2018-06-12 11:26:17 -0700 |
commit | c21d7a09d87d22ffb8710e271d20401cffe1caf7 (patch) | |
tree | 5d2dddfa4a56a694b4943f0fae767bb58b99d5c7 | |
parent | 8e5c070a36fd3eb62153e68d4df6d93422c608ab (diff) | |
download | android_packages_providers_DownloadProvider-c21d7a09d87d22ffb8710e271d20401cffe1caf7.tar.gz android_packages_providers_DownloadProvider-c21d7a09d87d22ffb8710e271d20401cffe1caf7.tar.bz2 android_packages_providers_DownloadProvider-c21d7a09d87d22ffb8710e271d20401cffe1caf7.zip |
DO NOT MERGE: Update DownloadProvider for correct meteredness
This patch updates DownloadProvider to use the fixed meteredness hidden
APIs for OC-MR1. This corrects a bug where DownloadProvider would fail
to allow downloads to proceed when VPNs are connected, but the
underlying networks are metered.
Bug: 78644887
Test: Flashed on Walleye and tested.
Change-Id: I13c1bd6d7ab26489923329bc7985060228e9bb29
(cherry picked from commit b627002ea9dc2511bad6ea5e68f4248f36c4a3eb)
4 files changed, 14 insertions, 1 deletions
diff --git a/src/com/android/providers/downloads/DownloadThread.java b/src/com/android/providers/downloads/DownloadThread.java index 9c920053..d3ec568c 100644 --- a/src/com/android/providers/downloads/DownloadThread.java +++ b/src/com/android/providers/downloads/DownloadThread.java @@ -725,7 +725,7 @@ public class DownloadThread extends Thread { if (info.isRoaming() && !mInfo.isRoamingAllowed()) { throw new StopRequestException(STATUS_WAITING_FOR_NETWORK, "Network is roaming"); } - if (mSystemFacade.isNetworkMetered(mNetwork) + if (mSystemFacade.isActiveNetworkMeteredForUid(mInfo.mUid) && !mInfo.isMeteredAllowed(mInfoDelta.mTotalBytes)) { throw new StopRequestException(STATUS_WAITING_FOR_NETWORK, "Network is metered"); } diff --git a/src/com/android/providers/downloads/RealSystemFacade.java b/src/com/android/providers/downloads/RealSystemFacade.java index 1c2ba581..2d9b3a30 100644 --- a/src/com/android/providers/downloads/RealSystemFacade.java +++ b/src/com/android/providers/downloads/RealSystemFacade.java @@ -68,6 +68,12 @@ class RealSystemFacade implements SystemFacade { } @Override + public boolean isActiveNetworkMeteredForUid(int uid) { + return mContext.getSystemService(ConnectivityManager.class) + .isActiveNetworkMeteredForUid(uid); + } + + @Override public long getMaxBytesOverMobile() { final Long value = DownloadManager.getMaxBytesOverMobile(mContext); return (value == null) ? Long.MAX_VALUE : value; diff --git a/src/com/android/providers/downloads/SystemFacade.java b/src/com/android/providers/downloads/SystemFacade.java index 53d14041..dec0cb28 100644 --- a/src/com/android/providers/downloads/SystemFacade.java +++ b/src/com/android/providers/downloads/SystemFacade.java @@ -38,6 +38,8 @@ interface SystemFacade { public boolean isNetworkMetered(Network network); + public boolean isActiveNetworkMeteredForUid(int uid); + /** * @return maximum size, in bytes, of downloads that may go over a mobile connection; or null if * there's no limit diff --git a/tests/src/com/android/providers/downloads/FakeSystemFacade.java b/tests/src/com/android/providers/downloads/FakeSystemFacade.java index de483c7f..aa7b8af4 100644 --- a/tests/src/com/android/providers/downloads/FakeSystemFacade.java +++ b/tests/src/com/android/providers/downloads/FakeSystemFacade.java @@ -102,6 +102,11 @@ public class FakeSystemFacade implements SystemFacade { } @Override + public boolean isActiveNetworkMeteredForUid(int uid) { + return mIsMetered; + } + + @Override public long getMaxBytesOverMobile() { return mMaxBytesOverMobile; } |