From ea245800c69d6bc10dc2680e6a242f59e9cb49b6 Mon Sep 17 00:00:00 2001 From: Vasu Nori Date: Tue, 1 Feb 2011 19:06:13 -0800 Subject: bug:3414192 if otaupdate column is set, don't check mobile download limits this allows OTA update to work without being subject to download limits on mobile networks. Change-Id: I92c60ba3ecbde615bd93778b391a5fe067dbd2fe --- src/com/android/providers/downloads/DownloadInfo.java | 6 ++++++ src/com/android/providers/downloads/DownloadProvider.java | 10 ++++++++++ 2 files changed, 16 insertions(+) (limited to 'src') diff --git a/src/com/android/providers/downloads/DownloadInfo.java b/src/com/android/providers/downloads/DownloadInfo.java index 28a38b3b..f375b3f1 100644 --- a/src/com/android/providers/downloads/DownloadInfo.java +++ b/src/com/android/providers/downloads/DownloadInfo.java @@ -90,6 +90,7 @@ public class DownloadInfo { info.mDescription = getString(Downloads.Impl.COLUMN_DESCRIPTION); info.mBypassRecommendedSizeLimit = getInt(Downloads.Impl.COLUMN_BYPASS_RECOMMENDED_SIZE_LIMIT); + info.mOtaUpdate = getInt(Constants.OTA_UPDATE) == 1; synchronized (this) { info.mControl = getInt(Downloads.Impl.COLUMN_CONTROL); @@ -212,6 +213,7 @@ public class DownloadInfo { public String mTitle; public String mDescription; public int mBypassRecommendedSizeLimit; + public boolean mOtaUpdate; public int mFuzz; @@ -410,6 +412,10 @@ public class DownloadInfo { if (networkType == ConnectivityManager.TYPE_WIFI) { return NETWORK_OK; // anything goes over wifi } + if (mOtaUpdate) { + // OTA update download can use mobile network with no size limits + return NETWORK_OK; + } Long maxBytesOverMobile = mSystemFacade.getMaxBytesOverMobile(); if (maxBytesOverMobile != null && mTotalBytes > maxBytesOverMobile) { return NETWORK_UNUSABLE_DUE_TO_SIZE; diff --git a/src/com/android/providers/downloads/DownloadProvider.java b/src/com/android/providers/downloads/DownloadProvider.java index a9952533..94b10d53 100644 --- a/src/com/android/providers/downloads/DownloadProvider.java +++ b/src/com/android/providers/downloads/DownloadProvider.java @@ -145,6 +145,9 @@ public final class DownloadProvider extends ContentProvider { private static final List downloadManagerColumnsList = Arrays.asList(DownloadManager.UNDERLYING_COLUMNS); + // TODO is there a better way to get this package name + private static final Object GSF_PACKAGE_NAME = "com.google.android.gsf"; + /** The database that lies underneath this content provider */ private SQLiteOpenHelper mOpenHelper = null; @@ -585,6 +588,13 @@ public final class DownloadProvider extends ContentProvider { copyBoolean(Downloads.Impl.COLUMN_ALLOW_ROAMING, values, filteredValues); } + // TODO: replace this hack with something cleaner + if (pckg.equals(GSF_PACKAGE_NAME) && + (getContext().checkCallingPermission(Downloads.Impl.PERMISSION_ACCESS_ADVANCED) + == PackageManager.PERMISSION_GRANTED)) { + filteredValues.put(Constants.OTA_UPDATE, Boolean.TRUE); + } + if (Constants.LOGVV) { Log.v(Constants.TAG, "initiating download with UID " + filteredValues.getAsInteger(Constants.UID)); -- cgit v1.2.3