Loading api/current.xml +77 −33 Original line number Diff line number Diff line Loading @@ -24605,55 +24605,55 @@ visibility="public" > </field> <field name="COLUMN_ERROR_CODE" <field name="COLUMN_ID" type="java.lang.String" transient="false" volatile="false" value=""error_code"" value=""_id"" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="COLUMN_ID" <field name="COLUMN_LAST_MODIFIED_TIMESTAMP" type="java.lang.String" transient="false" volatile="false" value=""_id"" value=""last_modified_timestamp"" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="COLUMN_LAST_MODIFIED_TIMESTAMP" <field name="COLUMN_LOCAL_URI" type="java.lang.String" transient="false" volatile="false" value=""last_modified_timestamp"" value=""local_uri"" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="COLUMN_LOCAL_URI" <field name="COLUMN_MEDIA_TYPE" type="java.lang.String" transient="false" volatile="false" value=""local_uri"" value=""media_type"" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="COLUMN_MEDIA_TYPE" <field name="COLUMN_REASON" type="java.lang.String" transient="false" volatile="false" value=""media_type"" value=""reason"" static="true" final="true" deprecated="not deprecated" Loading Loading @@ -24814,6 +24814,50 @@ visibility="public" > </field> <field name="PAUSED_QUEUED_FOR_WIFI" type="int" transient="false" volatile="false" value="3" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="PAUSED_UNKNOWN" type="int" transient="false" volatile="false" value="4" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="PAUSED_WAITING_FOR_NETWORK" type="int" transient="false" volatile="false" value="2" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="PAUSED_WAITING_TO_RETRY" type="int" transient="false" volatile="false" value="1" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="STATUS_FAILED" type="int" transient="false" Loading Loading @@ -267165,9 +267209,9 @@ deprecated="not deprecated" visibility="protected" > <parameter name="url1" type="java.net.URL"> <parameter name="a" type="java.net.URL"> </parameter> <parameter name="url2" type="java.net.URL"> <parameter name="b" type="java.net.URL"> </parameter> </method> <method name="openConnection" Loading Loading @@ -289920,7 +289964,7 @@ > <parameter name="parameterName" type="java.lang.String"> </parameter> <parameter name="x" type="java.sql.Blob"> <parameter name="blob" type="java.sql.Blob"> </parameter> <exception name="SQLException" type="java.sql.SQLException"> </exception> Loading Loading @@ -290079,7 +290123,7 @@ > <parameter name="parameterName" type="java.lang.String"> </parameter> <parameter name="x" type="java.sql.Clob"> <parameter name="clob" type="java.sql.Clob"> </parameter> <exception name="SQLException" type="java.sql.SQLException"> </exception> Loading Loading @@ -290217,7 +290261,7 @@ > <parameter name="parameterName" type="java.lang.String"> </parameter> <parameter name="value" type="java.io.Reader"> <parameter name="reader" type="java.io.Reader"> </parameter> <parameter name="length" type="long"> </parameter> Loading Loading @@ -290253,7 +290297,7 @@ > <parameter name="parameterName" type="java.lang.String"> </parameter> <parameter name="value" type="java.sql.NClob"> <parameter name="nclob" type="java.sql.NClob"> </parameter> <exception name="SQLException" type="java.sql.SQLException"> </exception> Loading Loading @@ -290306,7 +290350,7 @@ > <parameter name="parameterName" type="java.lang.String"> </parameter> <parameter name="value" type="java.lang.String"> <parameter name="string" type="java.lang.String"> </parameter> <exception name="SQLException" type="java.sql.SQLException"> </exception> Loading Loading @@ -290416,7 +290460,7 @@ > <parameter name="parameterName" type="java.lang.String"> </parameter> <parameter name="x" type="java.sql.RowId"> <parameter name="rowId" type="java.sql.RowId"> </parameter> <exception name="SQLException" type="java.sql.SQLException"> </exception> Loading @@ -290433,7 +290477,7 @@ > <parameter name="parameterName" type="java.lang.String"> </parameter> <parameter name="xmlObject" type="java.sql.SQLXML"> <parameter name="sqlXml" type="java.sql.SQLXML"> </parameter> <exception name="SQLException" type="java.sql.SQLException"> </exception> Loading Loading @@ -295569,7 +295613,7 @@ > <parameter name="parameterIndex" type="int"> </parameter> <parameter name="x" type="java.io.InputStream"> <parameter name="inputStream" type="java.io.InputStream"> </parameter> <parameter name="length" type="long"> </parameter> Loading @@ -295588,7 +295632,7 @@ > <parameter name="parameterIndex" type="int"> </parameter> <parameter name="x" type="java.io.InputStream"> <parameter name="inputStream" type="java.io.InputStream"> </parameter> <exception name="SQLException" type="java.sql.SQLException"> </exception> Loading Loading @@ -295641,7 +295685,7 @@ > <parameter name="parameterIndex" type="int"> </parameter> <parameter name="x" type="java.io.InputStream"> <parameter name="inputStream" type="java.io.InputStream"> </parameter> <parameter name="length" type="long"> </parameter> Loading @@ -295660,7 +295704,7 @@ > <parameter name="parameterIndex" type="int"> </parameter> <parameter name="x" type="java.io.InputStream"> <parameter name="inputStream" type="java.io.InputStream"> </parameter> <exception name="SQLException" type="java.sql.SQLException"> </exception> Loading Loading @@ -295993,7 +296037,7 @@ > <parameter name="parameterIndex" type="int"> </parameter> <parameter name="value" type="java.io.Reader"> <parameter name="reader" type="java.io.Reader"> </parameter> <parameter name="length" type="long"> </parameter> Loading @@ -296012,7 +296056,7 @@ > <parameter name="parameterIndex" type="int"> </parameter> <parameter name="value" type="java.io.Reader"> <parameter name="reader" type="java.io.Reader"> </parameter> <exception name="SQLException" type="java.sql.SQLException"> </exception> Loading Loading @@ -296082,7 +296126,7 @@ > <parameter name="parameterIndex" type="int"> </parameter> <parameter name="value" type="java.lang.String"> <parameter name="theString" type="java.lang.String"> </parameter> <exception name="SQLException" type="java.sql.SQLException"> </exception> Loading Loading @@ -296209,7 +296253,7 @@ > <parameter name="parameterIndex" type="int"> </parameter> <parameter name="x" type="java.sql.RowId"> <parameter name="theRowId" type="java.sql.RowId"> </parameter> <exception name="SQLException" type="java.sql.SQLException"> </exception> Loading Loading @@ -299203,7 +299247,7 @@ > <parameter name="columnIndex" type="int"> </parameter> <parameter name="x" type="java.sql.RowId"> <parameter name="value" type="java.sql.RowId"> </parameter> <exception name="SQLException" type="java.sql.SQLException"> </exception> Loading @@ -299220,7 +299264,7 @@ > <parameter name="columnLabel" type="java.lang.String"> </parameter> <parameter name="x" type="java.sql.RowId"> <parameter name="value" type="java.sql.RowId"> </parameter> <exception name="SQLException" type="java.sql.SQLException"> </exception> Loading Loading @@ -301552,7 +301596,7 @@ deprecated="not deprecated" visibility="public" > <parameter name="x" type="java.sql.NClob"> <parameter name="theNClob" type="java.sql.NClob"> </parameter> <exception name="SQLException" type="java.sql.SQLException"> </exception> Loading @@ -301567,7 +301611,7 @@ deprecated="not deprecated" visibility="public" > <parameter name="x" type="java.lang.String"> <parameter name="theString" type="java.lang.String"> </parameter> <exception name="SQLException" type="java.sql.SQLException"> </exception> Loading Loading @@ -301612,7 +301656,7 @@ deprecated="not deprecated" visibility="public" > <parameter name="x" type="java.sql.RowId"> <parameter name="theRowId" type="java.sql.RowId"> </parameter> <exception name="SQLException" type="java.sql.SQLException"> </exception> Loading @@ -301627,7 +301671,7 @@ deprecated="not deprecated" visibility="public" > <parameter name="x" type="java.sql.SQLXML"> <parameter name="theXml" type="java.sql.SQLXML"> </parameter> <exception name="SQLException" type="java.sql.SQLException"> </exception> core/java/android/app/DownloadManager.java +85 −25 Original line number Diff line number Diff line Loading @@ -100,16 +100,23 @@ public class DownloadManager { public final static String COLUMN_STATUS = "status"; /** * Indicates the type of error that occurred, when {@link #COLUMN_STATUS} is * {@link #STATUS_FAILED}. If an HTTP error occurred, this will hold the HTTP status code as * defined in RFC 2616. Otherwise, it will hold one of the ERROR_* constants. * Provides more detail on the status of the download. Its meaning depends on the value of * {@link #COLUMN_STATUS}. * * If {@link #COLUMN_STATUS} is not {@link #STATUS_FAILED}, this column's value is undefined. * When {@link #COLUMN_STATUS} is {@link #STATUS_FAILED}, this indicates the type of error that * occurred. If an HTTP error occurred, this will hold the HTTP status code as defined in RFC * 2616. Otherwise, it will hold one of the ERROR_* constants. * * When {@link #COLUMN_STATUS} is {@link #STATUS_PAUSED}, this indicates why the download is * paused. It will hold one of the PAUSED_* constants. * * If {@link #COLUMN_STATUS} is neither {@link #STATUS_FAILED} nor {@link #STATUS_PAUSED}, this * column's value is undefined. * * @see <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html#sec6.1.1">RFC 2616 * status codes</a> */ public final static String COLUMN_ERROR_CODE = "error_code"; public final static String COLUMN_REASON = "reason"; /** * Number of bytes download so far. Loading Loading @@ -156,53 +163,76 @@ public class DownloadManager { public final static int ERROR_UNKNOWN = 1000; /** * Value of {@link #COLUMN_ERROR_CODE} when a storage issue arises which doesn't fit under any * Value of {@link #COLUMN_REASON} when a storage issue arises which doesn't fit under any * other error code. Use the more specific {@link #ERROR_INSUFFICIENT_SPACE} and * {@link #ERROR_DEVICE_NOT_FOUND} when appropriate. */ public final static int ERROR_FILE_ERROR = 1001; /** * Value of {@link #COLUMN_ERROR_CODE} when an HTTP code was received that download manager * Value of {@link #COLUMN_REASON} when an HTTP code was received that download manager * can't handle. */ public final static int ERROR_UNHANDLED_HTTP_CODE = 1002; /** * Value of {@link #COLUMN_ERROR_CODE} when an error receiving or processing data occurred at * Value of {@link #COLUMN_REASON} when an error receiving or processing data occurred at * the HTTP level. */ public final static int ERROR_HTTP_DATA_ERROR = 1004; /** * Value of {@link #COLUMN_ERROR_CODE} when there were too many redirects. * Value of {@link #COLUMN_REASON} when there were too many redirects. */ public final static int ERROR_TOO_MANY_REDIRECTS = 1005; /** * Value of {@link #COLUMN_ERROR_CODE} when there was insufficient storage space. Typically, * Value of {@link #COLUMN_REASON} when there was insufficient storage space. Typically, * this is because the SD card is full. */ public final static int ERROR_INSUFFICIENT_SPACE = 1006; /** * Value of {@link #COLUMN_ERROR_CODE} when no external storage device was found. Typically, * Value of {@link #COLUMN_REASON} when no external storage device was found. Typically, * this is because the SD card is not mounted. */ public final static int ERROR_DEVICE_NOT_FOUND = 1007; /** * Value of {@link #COLUMN_ERROR_CODE} when some possibly transient error occurred but we can't * Value of {@link #COLUMN_REASON} when some possibly transient error occurred but we can't * resume the download. */ public final static int ERROR_CANNOT_RESUME = 1008; /** * Value of {@link #COLUMN_ERROR_CODE} when the requested destination file already exists (the * Value of {@link #COLUMN_REASON} when the requested destination file already exists (the * download manager will not overwrite an existing file). */ public final static int ERROR_FILE_ALREADY_EXISTS = 1009; /** * Value of {@link #COLUMN_REASON} when the download is paused because some network error * occurred and the download manager is waiting before retrying the request. */ public final static int PAUSED_WAITING_TO_RETRY = 1; /** * Value of {@link #COLUMN_REASON} when the download is waiting for network connectivity to * proceed. */ public final static int PAUSED_WAITING_FOR_NETWORK = 2; /** * Value of {@link #COLUMN_REASON} when the download exceeds a size limit for downloads over * the mobile network and the download manager is waiting for a Wi-Fi connection to proceed. */ public final static int PAUSED_QUEUED_FOR_WIFI = 3; /** * Value of {@link #COLUMN_REASON} when the download is paused for some other reason. */ public final static int PAUSED_UNKNOWN = 4; /** * Broadcast intent action sent by the download manager when a download completes. */ Loading Loading @@ -236,7 +266,7 @@ public class DownloadManager { COLUMN_TOTAL_SIZE_BYTES, COLUMN_LOCAL_URI, COLUMN_STATUS, COLUMN_ERROR_CODE, COLUMN_REASON, COLUMN_BYTES_DOWNLOADED_SO_FAR, COLUMN_LAST_MODIFIED_TIMESTAMP }; Loading @@ -258,7 +288,7 @@ public class DownloadManager { }; private static final Set<String> LONG_COLUMNS = new HashSet<String>( Arrays.asList(COLUMN_ID, COLUMN_TOTAL_SIZE_BYTES, COLUMN_STATUS, COLUMN_ERROR_CODE, Arrays.asList(COLUMN_ID, COLUMN_TOTAL_SIZE_BYTES, COLUMN_STATUS, COLUMN_REASON, COLUMN_BYTES_DOWNLOADED_SO_FAR, COLUMN_LAST_MODIFIED_TIMESTAMP)); /** Loading Loading @@ -617,8 +647,10 @@ public class DownloadManager { parts.add(statusClause("=", Downloads.STATUS_RUNNING)); } if ((mStatusFlags & STATUS_PAUSED) != 0) { parts.add(statusClause("=", Downloads.STATUS_PENDING_PAUSED)); parts.add(statusClause("=", Downloads.STATUS_RUNNING_PAUSED)); parts.add(statusClause("=", Downloads.Impl.STATUS_PAUSED_BY_APP)); parts.add(statusClause("=", Downloads.Impl.STATUS_WAITING_TO_RETRY)); parts.add(statusClause("=", Downloads.Impl.STATUS_WAITING_FOR_NETWORK)); parts.add(statusClause("=", Downloads.Impl.STATUS_QUEUED_FOR_WIFI)); } if ((mStatusFlags & STATUS_SUCCESSFUL) != 0) { parts.add(statusClause("=", Downloads.STATUS_SUCCESS)); Loading Loading @@ -914,8 +946,8 @@ public class DownloadManager { if (column.equals(COLUMN_STATUS)) { return translateStatus((int) getUnderlyingLong(Downloads.COLUMN_STATUS)); } if (column.equals(COLUMN_ERROR_CODE)) { return translateErrorCode((int) getUnderlyingLong(Downloads.COLUMN_STATUS)); if (column.equals(COLUMN_REASON)) { return getReason((int) getUnderlyingLong(Downloads.COLUMN_STATUS)); } if (column.equals(COLUMN_BYTES_DOWNLOADED_SO_FAR)) { return getUnderlyingLong(Downloads.COLUMN_CURRENT_BYTES); Loading @@ -924,10 +956,36 @@ public class DownloadManager { return getUnderlyingLong(Downloads.COLUMN_LAST_MODIFICATION); } private long translateErrorCode(int status) { if (translateStatus(status) != STATUS_FAILED) { private long getReason(int status) { switch (translateStatus(status)) { case STATUS_FAILED: return getErrorCode(status); case STATUS_PAUSED: return getPausedReason(status); default: return 0; // arbitrary value when status is not an error } } private long getPausedReason(int status) { switch (status) { case Downloads.Impl.STATUS_WAITING_TO_RETRY: return PAUSED_WAITING_TO_RETRY; case Downloads.Impl.STATUS_WAITING_FOR_NETWORK: return PAUSED_WAITING_FOR_NETWORK; case Downloads.Impl.STATUS_QUEUED_FOR_WIFI: return PAUSED_QUEUED_FOR_WIFI; default: return PAUSED_UNKNOWN; } } private long getErrorCode(int status) { if ((400 <= status && status < Downloads.Impl.MIN_ARTIFICIAL_ERROR_STATUS) || (500 <= status && status < 600)) { // HTTP status code Loading Loading @@ -973,7 +1031,7 @@ public class DownloadManager { return super.getString(super.getColumnIndex(column)); } private long translateStatus(int status) { private int translateStatus(int status) { switch (status) { case Downloads.STATUS_PENDING: return STATUS_PENDING; Loading @@ -981,8 +1039,10 @@ public class DownloadManager { case Downloads.STATUS_RUNNING: return STATUS_RUNNING; case Downloads.STATUS_PENDING_PAUSED: case Downloads.STATUS_RUNNING_PAUSED: case Downloads.Impl.STATUS_PAUSED_BY_APP: case Downloads.Impl.STATUS_WAITING_TO_RETRY: case Downloads.Impl.STATUS_WAITING_FOR_NETWORK: case Downloads.Impl.STATUS_QUEUED_FOR_WIFI: return STATUS_PAUSED; case Downloads.STATUS_SUCCESS: Loading core/java/android/provider/Downloads.java +17 −37 Original line number Diff line number Diff line Loading @@ -377,16 +377,6 @@ public final class Downloads { return (status >= 100 && status < 200); } /** * Returns whether the download is suspended. (i.e. whether the download * won't complete without some action from outside the download * manager). * @hide */ public static boolean isStatusSuspended(int status) { return (status == STATUS_PENDING_PAUSED || status == STATUS_RUNNING_PAUSED); } /** * Returns whether the status is a success (i.e. 2xx). * @hide Loading Loading @@ -434,24 +424,12 @@ public final class Downloads { */ public static final int STATUS_PENDING = 190; /** * This download hasn't stated yet and is paused * @hide */ public static final int STATUS_PENDING_PAUSED = 191; /** * This download has started * @hide */ public static final int STATUS_RUNNING = 192; /** * This download has started and is paused * @hide */ public static final int STATUS_RUNNING_PAUSED = 193; /** * This download has successfully completed. * Warning: there might be other status values that indicate success Loading Loading @@ -979,15 +957,6 @@ public final class Downloads { return (status >= 100 && status < 200); } /** * Returns whether the download is suspended. (i.e. whether the download * won't complete without some action from outside the download * manager). */ public static boolean isStatusSuspended(int status) { return (status == STATUS_PENDING_PAUSED || status == STATUS_RUNNING_PAUSED); } /** * Returns whether the status is a success (i.e. 2xx). */ Loading Loading @@ -1030,19 +999,30 @@ public final class Downloads { public static final int STATUS_PENDING = 190; /** * This download hasn't stated yet and is paused * This download has started */ public static final int STATUS_PENDING_PAUSED = 191; public static final int STATUS_RUNNING = 192; /** * This download has started * This download has been paused by the owning app. */ public static final int STATUS_RUNNING = 192; public static final int STATUS_PAUSED_BY_APP = 193; /** * This download encountered some network error and is waiting before retrying the request. */ public static final int STATUS_WAITING_TO_RETRY = 194; /** * This download is waiting for network connectivity to proceed. */ public static final int STATUS_WAITING_FOR_NETWORK = 195; /** * This download has started and is paused * This download exceeded a size limit for mobile networks and is waiting for a Wi-Fi * connection to proceed. */ public static final int STATUS_RUNNING_PAUSED = 193; public static final int STATUS_QUEUED_FOR_WIFI = 196; /** * This download has successfully completed. Loading core/tests/coretests/src/android/app/DownloadManagerIntegrationTest.java +4 −4 Original line number Diff line number Diff line Loading @@ -120,7 +120,7 @@ public class DownloadManagerIntegrationTest extends DownloadManagerBaseTest { Cursor cursor = getCursor(dlRequest); try { verifyInt(cursor, DownloadManager.COLUMN_ERROR_CODE, error); verifyInt(cursor, DownloadManager.COLUMN_REASON, error); } finally { cursor.close(); } Loading Loading @@ -183,7 +183,7 @@ public class DownloadManagerIntegrationTest extends DownloadManagerBaseTest { Cursor cursor = getCursor(dlRequest); try { verifyInt(cursor, DownloadManager.COLUMN_STATUS, DownloadManager.STATUS_FAILED); verifyInt(cursor, DownloadManager.COLUMN_ERROR_CODE, verifyInt(cursor, DownloadManager.COLUMN_REASON, DownloadManager.ERROR_CANNOT_RESUME); } finally { cursor.close(); Loading Loading @@ -269,7 +269,7 @@ public class DownloadManagerIntegrationTest extends DownloadManagerBaseTest { try { verifyInt(cursor, DownloadManager.COLUMN_STATUS, DownloadManager.STATUS_FAILED); verifyInt(cursor, DownloadManager.COLUMN_ERROR_CODE, verifyInt(cursor, DownloadManager.COLUMN_REASON, DownloadManager.ERROR_FILE_ERROR); } finally { cursor.close(); Loading Loading @@ -476,7 +476,7 @@ public class DownloadManagerIntegrationTest extends DownloadManagerBaseTest { // For the last download we should have failed b/c there is not enough space left in cache Cursor cursor = getCursor(dlRequest); try { verifyInt(cursor, DownloadManager.COLUMN_ERROR_CODE, verifyInt(cursor, DownloadManager.COLUMN_REASON, DownloadManager.ERROR_INSUFFICIENT_SPACE); } finally { cursor.close(); Loading core/tests/coretests/src/android/app/DownloadManagerStressTest.java +1 −1 Original line number Diff line number Diff line Loading @@ -145,7 +145,7 @@ public class DownloadManagerStressTest extends DownloadManagerBaseTest { cursor = getCursor(dlRequest); verifyInt(cursor, DownloadManager.COLUMN_STATUS, DownloadManager.STATUS_FAILED); verifyInt(cursor, DownloadManager.COLUMN_ERROR_CODE, verifyInt(cursor, DownloadManager.COLUMN_REASON, DownloadManager.ERROR_INSUFFICIENT_SPACE); } finally { if (cursor != null) { Loading Loading
api/current.xml +77 −33 Original line number Diff line number Diff line Loading @@ -24605,55 +24605,55 @@ visibility="public" > </field> <field name="COLUMN_ERROR_CODE" <field name="COLUMN_ID" type="java.lang.String" transient="false" volatile="false" value=""error_code"" value=""_id"" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="COLUMN_ID" <field name="COLUMN_LAST_MODIFIED_TIMESTAMP" type="java.lang.String" transient="false" volatile="false" value=""_id"" value=""last_modified_timestamp"" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="COLUMN_LAST_MODIFIED_TIMESTAMP" <field name="COLUMN_LOCAL_URI" type="java.lang.String" transient="false" volatile="false" value=""last_modified_timestamp"" value=""local_uri"" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="COLUMN_LOCAL_URI" <field name="COLUMN_MEDIA_TYPE" type="java.lang.String" transient="false" volatile="false" value=""local_uri"" value=""media_type"" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="COLUMN_MEDIA_TYPE" <field name="COLUMN_REASON" type="java.lang.String" transient="false" volatile="false" value=""media_type"" value=""reason"" static="true" final="true" deprecated="not deprecated" Loading Loading @@ -24814,6 +24814,50 @@ visibility="public" > </field> <field name="PAUSED_QUEUED_FOR_WIFI" type="int" transient="false" volatile="false" value="3" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="PAUSED_UNKNOWN" type="int" transient="false" volatile="false" value="4" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="PAUSED_WAITING_FOR_NETWORK" type="int" transient="false" volatile="false" value="2" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="PAUSED_WAITING_TO_RETRY" type="int" transient="false" volatile="false" value="1" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="STATUS_FAILED" type="int" transient="false" Loading Loading @@ -267165,9 +267209,9 @@ deprecated="not deprecated" visibility="protected" > <parameter name="url1" type="java.net.URL"> <parameter name="a" type="java.net.URL"> </parameter> <parameter name="url2" type="java.net.URL"> <parameter name="b" type="java.net.URL"> </parameter> </method> <method name="openConnection" Loading Loading @@ -289920,7 +289964,7 @@ > <parameter name="parameterName" type="java.lang.String"> </parameter> <parameter name="x" type="java.sql.Blob"> <parameter name="blob" type="java.sql.Blob"> </parameter> <exception name="SQLException" type="java.sql.SQLException"> </exception> Loading Loading @@ -290079,7 +290123,7 @@ > <parameter name="parameterName" type="java.lang.String"> </parameter> <parameter name="x" type="java.sql.Clob"> <parameter name="clob" type="java.sql.Clob"> </parameter> <exception name="SQLException" type="java.sql.SQLException"> </exception> Loading Loading @@ -290217,7 +290261,7 @@ > <parameter name="parameterName" type="java.lang.String"> </parameter> <parameter name="value" type="java.io.Reader"> <parameter name="reader" type="java.io.Reader"> </parameter> <parameter name="length" type="long"> </parameter> Loading Loading @@ -290253,7 +290297,7 @@ > <parameter name="parameterName" type="java.lang.String"> </parameter> <parameter name="value" type="java.sql.NClob"> <parameter name="nclob" type="java.sql.NClob"> </parameter> <exception name="SQLException" type="java.sql.SQLException"> </exception> Loading Loading @@ -290306,7 +290350,7 @@ > <parameter name="parameterName" type="java.lang.String"> </parameter> <parameter name="value" type="java.lang.String"> <parameter name="string" type="java.lang.String"> </parameter> <exception name="SQLException" type="java.sql.SQLException"> </exception> Loading Loading @@ -290416,7 +290460,7 @@ > <parameter name="parameterName" type="java.lang.String"> </parameter> <parameter name="x" type="java.sql.RowId"> <parameter name="rowId" type="java.sql.RowId"> </parameter> <exception name="SQLException" type="java.sql.SQLException"> </exception> Loading @@ -290433,7 +290477,7 @@ > <parameter name="parameterName" type="java.lang.String"> </parameter> <parameter name="xmlObject" type="java.sql.SQLXML"> <parameter name="sqlXml" type="java.sql.SQLXML"> </parameter> <exception name="SQLException" type="java.sql.SQLException"> </exception> Loading Loading @@ -295569,7 +295613,7 @@ > <parameter name="parameterIndex" type="int"> </parameter> <parameter name="x" type="java.io.InputStream"> <parameter name="inputStream" type="java.io.InputStream"> </parameter> <parameter name="length" type="long"> </parameter> Loading @@ -295588,7 +295632,7 @@ > <parameter name="parameterIndex" type="int"> </parameter> <parameter name="x" type="java.io.InputStream"> <parameter name="inputStream" type="java.io.InputStream"> </parameter> <exception name="SQLException" type="java.sql.SQLException"> </exception> Loading Loading @@ -295641,7 +295685,7 @@ > <parameter name="parameterIndex" type="int"> </parameter> <parameter name="x" type="java.io.InputStream"> <parameter name="inputStream" type="java.io.InputStream"> </parameter> <parameter name="length" type="long"> </parameter> Loading @@ -295660,7 +295704,7 @@ > <parameter name="parameterIndex" type="int"> </parameter> <parameter name="x" type="java.io.InputStream"> <parameter name="inputStream" type="java.io.InputStream"> </parameter> <exception name="SQLException" type="java.sql.SQLException"> </exception> Loading Loading @@ -295993,7 +296037,7 @@ > <parameter name="parameterIndex" type="int"> </parameter> <parameter name="value" type="java.io.Reader"> <parameter name="reader" type="java.io.Reader"> </parameter> <parameter name="length" type="long"> </parameter> Loading @@ -296012,7 +296056,7 @@ > <parameter name="parameterIndex" type="int"> </parameter> <parameter name="value" type="java.io.Reader"> <parameter name="reader" type="java.io.Reader"> </parameter> <exception name="SQLException" type="java.sql.SQLException"> </exception> Loading Loading @@ -296082,7 +296126,7 @@ > <parameter name="parameterIndex" type="int"> </parameter> <parameter name="value" type="java.lang.String"> <parameter name="theString" type="java.lang.String"> </parameter> <exception name="SQLException" type="java.sql.SQLException"> </exception> Loading Loading @@ -296209,7 +296253,7 @@ > <parameter name="parameterIndex" type="int"> </parameter> <parameter name="x" type="java.sql.RowId"> <parameter name="theRowId" type="java.sql.RowId"> </parameter> <exception name="SQLException" type="java.sql.SQLException"> </exception> Loading Loading @@ -299203,7 +299247,7 @@ > <parameter name="columnIndex" type="int"> </parameter> <parameter name="x" type="java.sql.RowId"> <parameter name="value" type="java.sql.RowId"> </parameter> <exception name="SQLException" type="java.sql.SQLException"> </exception> Loading @@ -299220,7 +299264,7 @@ > <parameter name="columnLabel" type="java.lang.String"> </parameter> <parameter name="x" type="java.sql.RowId"> <parameter name="value" type="java.sql.RowId"> </parameter> <exception name="SQLException" type="java.sql.SQLException"> </exception> Loading Loading @@ -301552,7 +301596,7 @@ deprecated="not deprecated" visibility="public" > <parameter name="x" type="java.sql.NClob"> <parameter name="theNClob" type="java.sql.NClob"> </parameter> <exception name="SQLException" type="java.sql.SQLException"> </exception> Loading @@ -301567,7 +301611,7 @@ deprecated="not deprecated" visibility="public" > <parameter name="x" type="java.lang.String"> <parameter name="theString" type="java.lang.String"> </parameter> <exception name="SQLException" type="java.sql.SQLException"> </exception> Loading Loading @@ -301612,7 +301656,7 @@ deprecated="not deprecated" visibility="public" > <parameter name="x" type="java.sql.RowId"> <parameter name="theRowId" type="java.sql.RowId"> </parameter> <exception name="SQLException" type="java.sql.SQLException"> </exception> Loading @@ -301627,7 +301671,7 @@ deprecated="not deprecated" visibility="public" > <parameter name="x" type="java.sql.SQLXML"> <parameter name="theXml" type="java.sql.SQLXML"> </parameter> <exception name="SQLException" type="java.sql.SQLException"> </exception>
core/java/android/app/DownloadManager.java +85 −25 Original line number Diff line number Diff line Loading @@ -100,16 +100,23 @@ public class DownloadManager { public final static String COLUMN_STATUS = "status"; /** * Indicates the type of error that occurred, when {@link #COLUMN_STATUS} is * {@link #STATUS_FAILED}. If an HTTP error occurred, this will hold the HTTP status code as * defined in RFC 2616. Otherwise, it will hold one of the ERROR_* constants. * Provides more detail on the status of the download. Its meaning depends on the value of * {@link #COLUMN_STATUS}. * * If {@link #COLUMN_STATUS} is not {@link #STATUS_FAILED}, this column's value is undefined. * When {@link #COLUMN_STATUS} is {@link #STATUS_FAILED}, this indicates the type of error that * occurred. If an HTTP error occurred, this will hold the HTTP status code as defined in RFC * 2616. Otherwise, it will hold one of the ERROR_* constants. * * When {@link #COLUMN_STATUS} is {@link #STATUS_PAUSED}, this indicates why the download is * paused. It will hold one of the PAUSED_* constants. * * If {@link #COLUMN_STATUS} is neither {@link #STATUS_FAILED} nor {@link #STATUS_PAUSED}, this * column's value is undefined. * * @see <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html#sec6.1.1">RFC 2616 * status codes</a> */ public final static String COLUMN_ERROR_CODE = "error_code"; public final static String COLUMN_REASON = "reason"; /** * Number of bytes download so far. Loading Loading @@ -156,53 +163,76 @@ public class DownloadManager { public final static int ERROR_UNKNOWN = 1000; /** * Value of {@link #COLUMN_ERROR_CODE} when a storage issue arises which doesn't fit under any * Value of {@link #COLUMN_REASON} when a storage issue arises which doesn't fit under any * other error code. Use the more specific {@link #ERROR_INSUFFICIENT_SPACE} and * {@link #ERROR_DEVICE_NOT_FOUND} when appropriate. */ public final static int ERROR_FILE_ERROR = 1001; /** * Value of {@link #COLUMN_ERROR_CODE} when an HTTP code was received that download manager * Value of {@link #COLUMN_REASON} when an HTTP code was received that download manager * can't handle. */ public final static int ERROR_UNHANDLED_HTTP_CODE = 1002; /** * Value of {@link #COLUMN_ERROR_CODE} when an error receiving or processing data occurred at * Value of {@link #COLUMN_REASON} when an error receiving or processing data occurred at * the HTTP level. */ public final static int ERROR_HTTP_DATA_ERROR = 1004; /** * Value of {@link #COLUMN_ERROR_CODE} when there were too many redirects. * Value of {@link #COLUMN_REASON} when there were too many redirects. */ public final static int ERROR_TOO_MANY_REDIRECTS = 1005; /** * Value of {@link #COLUMN_ERROR_CODE} when there was insufficient storage space. Typically, * Value of {@link #COLUMN_REASON} when there was insufficient storage space. Typically, * this is because the SD card is full. */ public final static int ERROR_INSUFFICIENT_SPACE = 1006; /** * Value of {@link #COLUMN_ERROR_CODE} when no external storage device was found. Typically, * Value of {@link #COLUMN_REASON} when no external storage device was found. Typically, * this is because the SD card is not mounted. */ public final static int ERROR_DEVICE_NOT_FOUND = 1007; /** * Value of {@link #COLUMN_ERROR_CODE} when some possibly transient error occurred but we can't * Value of {@link #COLUMN_REASON} when some possibly transient error occurred but we can't * resume the download. */ public final static int ERROR_CANNOT_RESUME = 1008; /** * Value of {@link #COLUMN_ERROR_CODE} when the requested destination file already exists (the * Value of {@link #COLUMN_REASON} when the requested destination file already exists (the * download manager will not overwrite an existing file). */ public final static int ERROR_FILE_ALREADY_EXISTS = 1009; /** * Value of {@link #COLUMN_REASON} when the download is paused because some network error * occurred and the download manager is waiting before retrying the request. */ public final static int PAUSED_WAITING_TO_RETRY = 1; /** * Value of {@link #COLUMN_REASON} when the download is waiting for network connectivity to * proceed. */ public final static int PAUSED_WAITING_FOR_NETWORK = 2; /** * Value of {@link #COLUMN_REASON} when the download exceeds a size limit for downloads over * the mobile network and the download manager is waiting for a Wi-Fi connection to proceed. */ public final static int PAUSED_QUEUED_FOR_WIFI = 3; /** * Value of {@link #COLUMN_REASON} when the download is paused for some other reason. */ public final static int PAUSED_UNKNOWN = 4; /** * Broadcast intent action sent by the download manager when a download completes. */ Loading Loading @@ -236,7 +266,7 @@ public class DownloadManager { COLUMN_TOTAL_SIZE_BYTES, COLUMN_LOCAL_URI, COLUMN_STATUS, COLUMN_ERROR_CODE, COLUMN_REASON, COLUMN_BYTES_DOWNLOADED_SO_FAR, COLUMN_LAST_MODIFIED_TIMESTAMP }; Loading @@ -258,7 +288,7 @@ public class DownloadManager { }; private static final Set<String> LONG_COLUMNS = new HashSet<String>( Arrays.asList(COLUMN_ID, COLUMN_TOTAL_SIZE_BYTES, COLUMN_STATUS, COLUMN_ERROR_CODE, Arrays.asList(COLUMN_ID, COLUMN_TOTAL_SIZE_BYTES, COLUMN_STATUS, COLUMN_REASON, COLUMN_BYTES_DOWNLOADED_SO_FAR, COLUMN_LAST_MODIFIED_TIMESTAMP)); /** Loading Loading @@ -617,8 +647,10 @@ public class DownloadManager { parts.add(statusClause("=", Downloads.STATUS_RUNNING)); } if ((mStatusFlags & STATUS_PAUSED) != 0) { parts.add(statusClause("=", Downloads.STATUS_PENDING_PAUSED)); parts.add(statusClause("=", Downloads.STATUS_RUNNING_PAUSED)); parts.add(statusClause("=", Downloads.Impl.STATUS_PAUSED_BY_APP)); parts.add(statusClause("=", Downloads.Impl.STATUS_WAITING_TO_RETRY)); parts.add(statusClause("=", Downloads.Impl.STATUS_WAITING_FOR_NETWORK)); parts.add(statusClause("=", Downloads.Impl.STATUS_QUEUED_FOR_WIFI)); } if ((mStatusFlags & STATUS_SUCCESSFUL) != 0) { parts.add(statusClause("=", Downloads.STATUS_SUCCESS)); Loading Loading @@ -914,8 +946,8 @@ public class DownloadManager { if (column.equals(COLUMN_STATUS)) { return translateStatus((int) getUnderlyingLong(Downloads.COLUMN_STATUS)); } if (column.equals(COLUMN_ERROR_CODE)) { return translateErrorCode((int) getUnderlyingLong(Downloads.COLUMN_STATUS)); if (column.equals(COLUMN_REASON)) { return getReason((int) getUnderlyingLong(Downloads.COLUMN_STATUS)); } if (column.equals(COLUMN_BYTES_DOWNLOADED_SO_FAR)) { return getUnderlyingLong(Downloads.COLUMN_CURRENT_BYTES); Loading @@ -924,10 +956,36 @@ public class DownloadManager { return getUnderlyingLong(Downloads.COLUMN_LAST_MODIFICATION); } private long translateErrorCode(int status) { if (translateStatus(status) != STATUS_FAILED) { private long getReason(int status) { switch (translateStatus(status)) { case STATUS_FAILED: return getErrorCode(status); case STATUS_PAUSED: return getPausedReason(status); default: return 0; // arbitrary value when status is not an error } } private long getPausedReason(int status) { switch (status) { case Downloads.Impl.STATUS_WAITING_TO_RETRY: return PAUSED_WAITING_TO_RETRY; case Downloads.Impl.STATUS_WAITING_FOR_NETWORK: return PAUSED_WAITING_FOR_NETWORK; case Downloads.Impl.STATUS_QUEUED_FOR_WIFI: return PAUSED_QUEUED_FOR_WIFI; default: return PAUSED_UNKNOWN; } } private long getErrorCode(int status) { if ((400 <= status && status < Downloads.Impl.MIN_ARTIFICIAL_ERROR_STATUS) || (500 <= status && status < 600)) { // HTTP status code Loading Loading @@ -973,7 +1031,7 @@ public class DownloadManager { return super.getString(super.getColumnIndex(column)); } private long translateStatus(int status) { private int translateStatus(int status) { switch (status) { case Downloads.STATUS_PENDING: return STATUS_PENDING; Loading @@ -981,8 +1039,10 @@ public class DownloadManager { case Downloads.STATUS_RUNNING: return STATUS_RUNNING; case Downloads.STATUS_PENDING_PAUSED: case Downloads.STATUS_RUNNING_PAUSED: case Downloads.Impl.STATUS_PAUSED_BY_APP: case Downloads.Impl.STATUS_WAITING_TO_RETRY: case Downloads.Impl.STATUS_WAITING_FOR_NETWORK: case Downloads.Impl.STATUS_QUEUED_FOR_WIFI: return STATUS_PAUSED; case Downloads.STATUS_SUCCESS: Loading
core/java/android/provider/Downloads.java +17 −37 Original line number Diff line number Diff line Loading @@ -377,16 +377,6 @@ public final class Downloads { return (status >= 100 && status < 200); } /** * Returns whether the download is suspended. (i.e. whether the download * won't complete without some action from outside the download * manager). * @hide */ public static boolean isStatusSuspended(int status) { return (status == STATUS_PENDING_PAUSED || status == STATUS_RUNNING_PAUSED); } /** * Returns whether the status is a success (i.e. 2xx). * @hide Loading Loading @@ -434,24 +424,12 @@ public final class Downloads { */ public static final int STATUS_PENDING = 190; /** * This download hasn't stated yet and is paused * @hide */ public static final int STATUS_PENDING_PAUSED = 191; /** * This download has started * @hide */ public static final int STATUS_RUNNING = 192; /** * This download has started and is paused * @hide */ public static final int STATUS_RUNNING_PAUSED = 193; /** * This download has successfully completed. * Warning: there might be other status values that indicate success Loading Loading @@ -979,15 +957,6 @@ public final class Downloads { return (status >= 100 && status < 200); } /** * Returns whether the download is suspended. (i.e. whether the download * won't complete without some action from outside the download * manager). */ public static boolean isStatusSuspended(int status) { return (status == STATUS_PENDING_PAUSED || status == STATUS_RUNNING_PAUSED); } /** * Returns whether the status is a success (i.e. 2xx). */ Loading Loading @@ -1030,19 +999,30 @@ public final class Downloads { public static final int STATUS_PENDING = 190; /** * This download hasn't stated yet and is paused * This download has started */ public static final int STATUS_PENDING_PAUSED = 191; public static final int STATUS_RUNNING = 192; /** * This download has started * This download has been paused by the owning app. */ public static final int STATUS_RUNNING = 192; public static final int STATUS_PAUSED_BY_APP = 193; /** * This download encountered some network error and is waiting before retrying the request. */ public static final int STATUS_WAITING_TO_RETRY = 194; /** * This download is waiting for network connectivity to proceed. */ public static final int STATUS_WAITING_FOR_NETWORK = 195; /** * This download has started and is paused * This download exceeded a size limit for mobile networks and is waiting for a Wi-Fi * connection to proceed. */ public static final int STATUS_RUNNING_PAUSED = 193; public static final int STATUS_QUEUED_FOR_WIFI = 196; /** * This download has successfully completed. Loading
core/tests/coretests/src/android/app/DownloadManagerIntegrationTest.java +4 −4 Original line number Diff line number Diff line Loading @@ -120,7 +120,7 @@ public class DownloadManagerIntegrationTest extends DownloadManagerBaseTest { Cursor cursor = getCursor(dlRequest); try { verifyInt(cursor, DownloadManager.COLUMN_ERROR_CODE, error); verifyInt(cursor, DownloadManager.COLUMN_REASON, error); } finally { cursor.close(); } Loading Loading @@ -183,7 +183,7 @@ public class DownloadManagerIntegrationTest extends DownloadManagerBaseTest { Cursor cursor = getCursor(dlRequest); try { verifyInt(cursor, DownloadManager.COLUMN_STATUS, DownloadManager.STATUS_FAILED); verifyInt(cursor, DownloadManager.COLUMN_ERROR_CODE, verifyInt(cursor, DownloadManager.COLUMN_REASON, DownloadManager.ERROR_CANNOT_RESUME); } finally { cursor.close(); Loading Loading @@ -269,7 +269,7 @@ public class DownloadManagerIntegrationTest extends DownloadManagerBaseTest { try { verifyInt(cursor, DownloadManager.COLUMN_STATUS, DownloadManager.STATUS_FAILED); verifyInt(cursor, DownloadManager.COLUMN_ERROR_CODE, verifyInt(cursor, DownloadManager.COLUMN_REASON, DownloadManager.ERROR_FILE_ERROR); } finally { cursor.close(); Loading Loading @@ -476,7 +476,7 @@ public class DownloadManagerIntegrationTest extends DownloadManagerBaseTest { // For the last download we should have failed b/c there is not enough space left in cache Cursor cursor = getCursor(dlRequest); try { verifyInt(cursor, DownloadManager.COLUMN_ERROR_CODE, verifyInt(cursor, DownloadManager.COLUMN_REASON, DownloadManager.ERROR_INSUFFICIENT_SPACE); } finally { cursor.close(); Loading
core/tests/coretests/src/android/app/DownloadManagerStressTest.java +1 −1 Original line number Diff line number Diff line Loading @@ -145,7 +145,7 @@ public class DownloadManagerStressTest extends DownloadManagerBaseTest { cursor = getCursor(dlRequest); verifyInt(cursor, DownloadManager.COLUMN_STATUS, DownloadManager.STATUS_FAILED); verifyInt(cursor, DownloadManager.COLUMN_ERROR_CODE, verifyInt(cursor, DownloadManager.COLUMN_REASON, DownloadManager.ERROR_INSUFFICIENT_SPACE); } finally { if (cursor != null) { Loading