summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/com/android/providers/downloads/DownloadProvider.java14
-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
5 files changed, 16 insertions, 13 deletions
diff --git a/src/com/android/providers/downloads/DownloadProvider.java b/src/com/android/providers/downloads/DownloadProvider.java
index e177da17..db7db65a 100644
--- a/src/com/android/providers/downloads/DownloadProvider.java
+++ b/src/com/android/providers/downloads/DownloadProvider.java
@@ -105,11 +105,6 @@ public final class DownloadProvider extends ContentProvider {
private static final int ALL_DOWNLOADS_ID = 4;
/** URI matcher constant for the URI of a download's request headers */
private static final int REQUEST_HEADERS_URI = 5;
- /** URI matcher constant for the public URI returned by
- * {@link DownloadManager#getUriForDownloadedFile(long)} if the given downloaded file
- * is publicly accessible.
- */
- private static final int PUBLIC_DOWNLOAD_ID = 6;
static {
sURIMatcher.addURI("downloads", "my_downloads", MY_DOWNLOADS);
sURIMatcher.addURI("downloads", "my_downloads/#", MY_DOWNLOADS_ID);
@@ -127,9 +122,6 @@ public final class DownloadProvider extends ContentProvider {
sURIMatcher.addURI("downloads",
"download/#/" + Downloads.Impl.RequestHeaders.URI_SEGMENT,
REQUEST_HEADERS_URI);
- sURIMatcher.addURI("downloads",
- Downloads.Impl.PUBLICLY_ACCESSIBLE_DOWNLOADS_URI_SEGMENT + "/#",
- PUBLIC_DOWNLOAD_ID);
}
/** Different base URIs that could be used to access an individual download */
@@ -526,8 +518,7 @@ public final class DownloadProvider extends ContentProvider {
return DOWNLOAD_LIST_TYPE;
}
case MY_DOWNLOADS_ID:
- case ALL_DOWNLOADS_ID:
- case PUBLIC_DOWNLOAD_ID: {
+ case ALL_DOWNLOADS_ID: {
// return the mimetype of this id from the database
final String id = getDownloadIdFromUri(uri);
final SQLiteDatabase db = mOpenHelper.getReadableDatabase();
@@ -1234,8 +1225,7 @@ public final class DownloadProvider extends ContentProvider {
int uriMatch) {
SqlSelection selection = new SqlSelection();
selection.appendClause(where, whereArgs);
- if (uriMatch == MY_DOWNLOADS_ID || uriMatch == ALL_DOWNLOADS_ID ||
- uriMatch == PUBLIC_DOWNLOAD_ID) {
+ if (uriMatch == MY_DOWNLOADS_ID || uriMatch == ALL_DOWNLOADS_ID) {
selection.appendClause(Downloads.Impl._ID + " = ?", getDownloadIdFromUri(uri));
}
if ((uriMatch == MY_DOWNLOADS || uriMatch == MY_DOWNLOADS_ID)
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;
}