summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenedict Wong <benedictwong@google.com>2018-05-17 15:16:51 -0700
committerRyan Longair <rlongair@google.com>2018-06-12 11:26:17 -0700
commitc21d7a09d87d22ffb8710e271d20401cffe1caf7 (patch)
tree5d2dddfa4a56a694b4943f0fae767bb58b99d5c7
parent8e5c070a36fd3eb62153e68d4df6d93422c608ab (diff)
downloadandroid_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)
-rw-r--r--src/com/android/providers/downloads/DownloadThread.java2
-rw-r--r--src/com/android/providers/downloads/RealSystemFacade.java6
-rw-r--r--src/com/android/providers/downloads/SystemFacade.java2
-rw-r--r--tests/src/com/android/providers/downloads/FakeSystemFacade.java5
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;
}