summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJeff Sharkey <jsharkey@android.com>2017-10-24 16:54:54 -0600
committerJeff Sharkey <jsharkey@android.com>2017-10-25 11:25:38 -0600
commitd52fa66c75da2055bbe1b92b2e31b0342251002f (patch)
tree5c6f984119cba3d630b67e897f258e97d1309a8d /src
parent5872a1d7e2f6298f5bd3f411dc3c1d283fbd7508 (diff)
downloadandroid_packages_providers_DownloadProvider-d52fa66c75da2055bbe1b92b2e31b0342251002f.tar.gz
android_packages_providers_DownloadProvider-d52fa66c75da2055bbe1b92b2e31b0342251002f.tar.bz2
android_packages_providers_DownloadProvider-d52fa66c75da2055bbe1b92b2e31b0342251002f.zip
Use explicit Network from JobParameters.
On devices with multiple active networks, or rapidly switching between networks, we need an API to tell jobs explicitly which network to use. (For example, the default route could meet all job criteria, but we could have changed the default network by the time we spun up the JobService.) Test: verified via DownloadManager Bug: 64133169 Change-Id: I9c131818d7199f79e147893d85c281473d00bee9
Diffstat (limited to 'src')
-rw-r--r--src/com/android/providers/downloads/DownloadThread.java2
-rw-r--r--src/com/android/providers/downloads/RealSystemFacade.java10
-rw-r--r--src/com/android/providers/downloads/SystemFacade.java5
3 files changed, 9 insertions, 8 deletions
diff --git a/src/com/android/providers/downloads/DownloadThread.java b/src/com/android/providers/downloads/DownloadThread.java
index 1476f4a0..984d2fcd 100644
--- a/src/com/android/providers/downloads/DownloadThread.java
+++ b/src/com/android/providers/downloads/DownloadThread.java
@@ -285,7 +285,7 @@ public class DownloadThread extends Thread {
// Use the caller's default network to make this connection, since
// they might be subject to restrictions that we shouldn't let them
// circumvent
- mNetwork = mSystemFacade.getActiveNetwork(mInfo.mUid, mIgnoreBlocked);
+ mNetwork = mSystemFacade.getNetwork(mParams);
if (mNetwork == null) {
throw new StopRequestException(STATUS_WAITING_FOR_NETWORK,
"No network associated with requesting UID");
diff --git a/src/com/android/providers/downloads/RealSystemFacade.java b/src/com/android/providers/downloads/RealSystemFacade.java
index 1c2ba581..7bcdb795 100644
--- a/src/com/android/providers/downloads/RealSystemFacade.java
+++ b/src/com/android/providers/downloads/RealSystemFacade.java
@@ -17,6 +17,7 @@
package com.android.providers.downloads;
import android.app.DownloadManager;
+import android.app.job.JobParameters;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
@@ -30,13 +31,13 @@ import android.net.NetworkInfo;
import android.security.NetworkSecurityPolicy;
import android.security.net.config.ApplicationConfig;
+import com.android.internal.util.ArrayUtils;
+
import java.security.GeneralSecurityException;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
-import com.android.internal.util.ArrayUtils;
-
class RealSystemFacade implements SystemFacade {
private Context mContext;
@@ -50,9 +51,8 @@ class RealSystemFacade implements SystemFacade {
}
@Override
- public Network getActiveNetwork(int uid, boolean ignoreBlocked) {
- return mContext.getSystemService(ConnectivityManager.class)
- .getActiveNetworkForUid(uid, ignoreBlocked);
+ public Network getNetwork(JobParameters params) {
+ return params.getNetwork();
}
@Override
diff --git a/src/com/android/providers/downloads/SystemFacade.java b/src/com/android/providers/downloads/SystemFacade.java
index 53d14041..8be25c21 100644
--- a/src/com/android/providers/downloads/SystemFacade.java
+++ b/src/com/android/providers/downloads/SystemFacade.java
@@ -16,14 +16,15 @@
package com.android.providers.downloads;
+import android.app.job.JobParameters;
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;
+
import javax.net.ssl.SSLContext;
interface SystemFacade {
@@ -32,7 +33,7 @@ interface SystemFacade {
*/
public long currentTimeMillis();
- public Network getActiveNetwork(int uid, boolean ignoreBlocked);
+ public Network getNetwork(JobParameters params);
public NetworkInfo getNetworkInfo(Network network, int uid, boolean ignoreBlocked);