summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeff Sharkey <jsharkey@android.com>2017-07-12 10:59:43 -0600
committerJeff Sharkey <jsharkey@android.com>2017-07-14 11:45:03 -0600
commitc442fbd95ad5b3de9e58a11e431f419edb4fe978 (patch)
tree4da61878939275317c2d7192af65a830f1dba09f
parent221afa48c953769209fca5fca6e8d38e216e3c92 (diff)
downloadandroid_packages_providers_DownloadProvider-c442fbd95ad5b3de9e58a11e431f419edb4fe978.tar.gz
android_packages_providers_DownloadProvider-c442fbd95ad5b3de9e58a11e431f419edb4fe978.tar.bz2
android_packages_providers_DownloadProvider-c442fbd95ad5b3de9e58a11e431f419edb4fe978.zip
Follow removal of NetworkInfo metered flag.
The OS now completely relies on NET_CAPABILITY_NOT_METERED to avoid confusion and staleness. Bug: 63391323 Test: builds, boots, Wi-Fi policy is upgraded Exempt-From-Owner-Approval: Bug 63673347 Change-Id: Iea83e0afd8cbd2be10d85b8a35c903047716b5b9
-rw-r--r--src/com/android/providers/downloads/DownloadThread.java4
-rw-r--r--src/com/android/providers/downloads/RealSystemFacade.java7
-rw-r--r--src/com/android/providers/downloads/SystemFacade.java3
-rw-r--r--tests/src/com/android/providers/downloads/FakeSystemFacade.java9
4 files changed, 19 insertions, 4 deletions
diff --git a/src/com/android/providers/downloads/DownloadThread.java b/src/com/android/providers/downloads/DownloadThread.java
index e101c74d..b9849569 100644
--- a/src/com/android/providers/downloads/DownloadThread.java
+++ b/src/com/android/providers/downloads/DownloadThread.java
@@ -47,7 +47,6 @@ import static java.net.HttpURLConnection.HTTP_PRECON_FAILED;
import static java.net.HttpURLConnection.HTTP_SEE_OTHER;
import static java.net.HttpURLConnection.HTTP_UNAVAILABLE;
-import android.app.job.JobInfo;
import android.app.job.JobParameters;
import android.content.ContentValues;
import android.content.Context;
@@ -743,7 +742,8 @@ public class DownloadThread extends Thread {
if (info.isRoaming() && !mInfo.isRoamingAllowed()) {
throw new StopRequestException(STATUS_WAITING_FOR_NETWORK, "Network is roaming");
}
- if (info.isMetered() && !mInfo.isMeteredAllowed(mInfoDelta.mTotalBytes)) {
+ if (mSystemFacade.isNetworkMetered(mNetwork)
+ && !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 df1d245f..1c2ba581 100644
--- a/src/com/android/providers/downloads/RealSystemFacade.java
+++ b/src/com/android/providers/downloads/RealSystemFacade.java
@@ -25,6 +25,7 @@ import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.net.ConnectivityManager;
import android.net.Network;
+import android.net.NetworkCapabilities;
import android.net.NetworkInfo;
import android.security.NetworkSecurityPolicy;
import android.security.net.config.ApplicationConfig;
@@ -61,6 +62,12 @@ class RealSystemFacade implements SystemFacade {
}
@Override
+ public boolean isNetworkMetered(Network network) {
+ return !mContext.getSystemService(ConnectivityManager.class).getNetworkCapabilities(network)
+ .hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED);
+ }
+
+ @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 c34317cb..53d14041 100644
--- a/src/com/android/providers/downloads/SystemFacade.java
+++ b/src/com/android/providers/downloads/SystemFacade.java
@@ -20,6 +20,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager.NameNotFoundException;
import android.net.Network;
+import android.net.NetworkCapabilities;
import android.net.NetworkInfo;
import java.security.GeneralSecurityException;
@@ -35,6 +36,8 @@ interface SystemFacade {
public NetworkInfo getNetworkInfo(Network network, int uid, boolean ignoreBlocked);
+ public boolean isNetworkMetered(Network network);
+
/**
* @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 b6b800a2..de483c7f 100644
--- a/tests/src/com/android/providers/downloads/FakeSystemFacade.java
+++ b/tests/src/com/android/providers/downloads/FakeSystemFacade.java
@@ -1,6 +1,6 @@
package com.android.providers.downloads;
-import static org.mockito.Matchers.any;
+import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -21,6 +21,7 @@ import java.net.URLConnection;
import java.security.GeneralSecurityException;
import java.util.ArrayList;
import java.util.List;
+
import javax.net.ssl.SSLContext;
public class FakeSystemFacade implements SystemFacade {
@@ -91,12 +92,16 @@ public class FakeSystemFacade implements SystemFacade {
final NetworkInfo info = new NetworkInfo(mActiveNetworkType, 0, null, null);
info.setDetailedState(DetailedState.CONNECTED, null, null);
info.setRoaming(mIsRoaming);
- info.setMetered(mIsMetered);
return info;
}
}
@Override
+ public boolean isNetworkMetered(Network network) {
+ return mIsMetered;
+ }
+
+ @Override
public long getMaxBytesOverMobile() {
return mMaxBytesOverMobile;
}