summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Remove content flags to indicate */* support.Jeff Sharkey2013-09-021-3/+1
| | | | | Bug: 10597317 Change-Id: Ia32f4ec34847680135c300dfe8fe73694da4c57a
* New recent documents behavior.Jeff Sharkey2013-09-021-1/+23
| | | | | Bug: 10593596 Change-Id: I708d2396266d083a494e57eab2637471e54e1cdc
* Follow refactoring of DocumentsContract.Jeff Sharkey2013-08-311-34/+44
| | | | | Bug: 10567557 Change-Id: If03f352f865073b0e332a6a1c40cc34d83425b62
* Follow stronger DocumentsProvider contract.Jeff Sharkey2013-08-283-201/+99
| | | | | | | | Provides same functionality, but follows updated DocumentsProvider contract in framework. Bug: 10497206 Change-Id: Ie1f6180047ff7bad289679a14f3368238d47b1d6
* Trampoline APK installation to use raw file.Jeff Sharkey2013-08-192-1/+42
| | | | | | | | | PackageInstaller requires raw file:// Uris, and refuses to accept content:// Uris, so create a trampoline that uses the raw file and also splices in referrer extras. Bug: 10391254 Change-Id: I12a06862069479de5dee140d0065479ce79eb494
* Clear identity when deleting downloads.Jeff Sharkey2013-08-181-1/+6
| | | | | Bug: 10329983 Change-Id: Iff3db6e5210ae9f33ec13af91561475b269dcc40
* Support custom documents query projections.Jeff Sharkey2013-08-172-66/+55
| | | | | | | | | Uses new MatrixCursor.RowBuilder.offer() to support custom projections. Also query MIME types directly so they're always consistent. Bug: 10329983 Change-Id: I724b26e008f6ffb85940e009a916b969ead42fcd
* Delegate to documents UI; improve contents.Jeff Sharkey2013-08-152-46/+78
| | | | | | | | | When Downloads app is launched, delegate to new documents management UI. Use DownloadManager public API to match the contents of the existing Downloads UI. Bug: 10329983 Change-Id: Iaa1a1dc013cfe3b17d31ecc764d4c4cc13f62258
* First pass at Downloads storage provider.Jeff Sharkey2013-08-071-0/+302
| | | | | | | Offers a view of Downloads through the lens of DocumentsContract for surfacing in new storage UI. Change-Id: I4373c2498b4b82bfee2300a00f8d0bb734bf574c
* Count download WakeLocks against requesting app.Jeff Sharkey2013-06-061-0/+2
| | | | | | | This matches how network usage is already counted against the app making the request. Change-Id: I6a862e096f2f99441925a101268235615000355a
* Increment operation counts to track downloads.Jeff Sharkey2013-05-101-2/+7
| | | | | Bug: 8850035 Change-Id: If506ea21f0c823f9da4b7ae14d611fdbfbac8042
* Completed downloads should clear when touched.Jeff Sharkey2013-04-281-0/+1
| | | | | Bug: 8744610 Change-Id: I135a3acbc819fd725f00ba57461e21db1fe24850
* Merge "Restore the appropriate SELinux context to the downloads dir." into ↵Geremy Condra2013-04-051-2/+7
|\ | | | | | | jb-mr2-dev
| * Restore the appropriate SELinux context to the downloads dir.Geremy Condra2013-04-051-2/+7
| | | | | | | | Change-Id: I4839fd07abdd1c6b866f1d94dc36567df047e30c
* | Fix download notification click behaviour.Danny Baumann2013-04-051-5/+7
|/ | | | | | | | | PendingIntent.getBroadcast() doesn't update the intent extras if not explicitly given something to distinguish the intents. This caused the notification on-click to do nothing on everything but the first download. Change-Id: I29544ae5b04f8304cbbe720066a26ff90e422107
* New PendingIntents when extras change.Jeff Sharkey2013-03-261-2/+4
| | | | | | | Otherwise notifications end up launching with stale download IDs. Bug: 8417220 Change-Id: Ie72a2f4ac7b72213678ac6001af45709034492dd
* Unregister observer when tearing down service.Jeff Sharkey2013-03-263-5/+7
| | | | | | | Also reduce and adjust some logging. Bug: 8470658 Change-Id: Ia1f1cbd315ded04edd2113506e5c5a1db5ec85b4
* Revert "Avoid sending messages after HandlerThread.quit()."Fabrice Di Meglio2013-03-261-12/+6
| | | | | | This reverts commit 97d507d95f9885ceb12f2ce2483361b5ed265f9f Change-Id: I20374301561b3a1c79c2d986292af50049de2aac
* Avoid sending messages after HandlerThread.quit().Jeff Sharkey2013-03-251-6/+12
| | | | | Bug: 8470658 Change-Id: I4cfd6a01c2c2d845a72d3f58c29eec8b44176537
* Reduce logging, dump stacks before wtf().Jeff Sharkey2013-03-253-6/+44
| | | | | | | | | Most wtf() are looking like network timeouts, not threading bugs, so disable verbose debugging and add more targeted thread logging before calling wtf(). Bug: 8233041 Change-Id: I8e276bffd7880cfe13b65e7e81f5507cab627692
* Merge "Increase timeout for domains with many DNS entries." into jb-mr2-devJeff Sharkey2013-03-211-2/+2
|\
| * Increase timeout for domains with many DNS entries.Jeff Sharkey2013-03-201-2/+2
| | | | | | | | | | Bug: 8233041 Change-Id: Ifb70273474c391ef687ba018d9ef809a359c7149
* | Defeat transparent Accept-Encoding: gzip.Jeff Sharkey2013-03-181-0/+4
|/ | | | | | | | Transparent gzip encoding doesn't allow us to easily resume partial requests, so defeat it for now. Bug: 8409417 Change-Id: I1172709c09d1153fff1ba8df072a9bef896e244d
* Fix race conditions around filename claiming.Jeff Sharkey2013-03-011-10/+20
| | | | | | | | | | | | | When multiple downloads are running in parallel, they can end up claiming the same filename and clobber over each other. This change introduces locking around filename generation, and touches the claimed filename so other threads fail the File.exists() check and keep looking. Tests to verify. Bug: 8255596 Change-Id: Ie75ed047c199cf679832c75159056ca036eac18d
* Adjust timeouts to reduce false-positive bugs.Jeff Sharkey2013-02-262-4/+4
| | | | | | | | | Otherwise we end up triggering MSG_FINAL_UPDATE while still waiting for socket timeouts. Using 20 seconds for timeout is more sane, and matches Volley. Bug: 8233041 Change-Id: Ia7220033a5942c46ca1d79a88e2b3f530cb3edac
* Ack, we actually need to UpdateThread.quit().Jeff Sharkey2013-02-201-8/+6
| | | | | | | | | Otherwise they end up leaking. There is a race around UpdateThread continuing to process messages before onDestroy() has been invoked, so explicitly UpdateThread.quit() in both places. Bug: 8233041 Change-Id: I73f1b70aedace19e23a61a3dddf4986d82f2c7d6
* Only use single UpdateThread.Jeff Sharkey2013-02-201-4/+5
| | | | | | | | Since DownloadService starts and stops frequently, recycle a single UpdateThread across invocations. Bug: 8233041 Change-Id: I07756fb6bfdbad811cbd58e628fdfdbf63d71bf8
* Only report speeds from full samples windows.Jeff Sharkey2013-02-192-2/+6
| | | | | | | | | | | Wait until we've passed a full sample window (500ms) before reporting an estimated speed. This avoid showing skewed times like "900 hours remaining." Also remember to clean up the UpdateThread. Bug: 8176417 Change-Id: I851e0abcbb443114abe9c22f4650fee7a9bc3aaa
* Retries shouldn't backoff when network changes.Jeff Sharkey2013-02-193-26/+22
| | | | | | | When a download fails due to a network change, treat it as waiting for network, instead of subjecting it to full retry backoff. Change-Id: Ifdae62fd7c2baad7422f68e09da94740b5f513d0
* Update database before sending broadcast.Jeff Sharkey2013-02-141-1/+1
| | | | | | | | This was moved to to solve a race condition around service shutdown, but ended up causing another race with remote apps. Bug: 8200919 Change-Id: Ief470e9454e9be8ec43ca3ec11e3b3440fa5852d
* Redesign of DownloadManager update loop.Jeff Sharkey2013-02-124-371/+401
| | | | | | | | | | | | | | | | | | Previously, the service lifecycle was managed through a large for() loop which was extremely tricky to reason about. This resulted in several race conditions that could leave the service running indefinitely, or terminate it early before tasks had finished. This change redesigns the update loop to be event driven based on database updates, and to collapse mutiple pending update passes. It is much easier to reason about service termination conditions, and it correctly uses startId to handle races during command delivery. Also moves scanner into isolated class, and switches to using public API instead of binding to private interface. Bug: 7638470, 7455406, 7162341 Change-Id: I380e77f5432223b2acb4e819e37f29f98ee4782b
* Active notifications only for running downloads.Jeff Sharkey2013-02-071-1/+2
| | | | | Bug: 8145142 Change-Id: I9119796f809aa967f7ec6bb2a3d2b815e86eaf1b
* Dump recent downloads from provider.Jeff Sharkey2013-01-301-1/+41
| | | | | | | | | The lifetime of DownloadService can be limited, and it's often missing from bugreports. The provider has a much longer lifetime, so have it dump raw data about recent downloads. Bug: 7350685 Change-Id: I55c9d602d77014ea27820936f1cf5c8ad24f286a
* Tests for max retries/redirects, ETag switches.Jeff Sharkey2013-01-292-12/+11
| | | | | | | | | | Verify that servers responding with many retries or redirects result in failed download, instead of spinning out of control. Test to verify that changed ETag results in download failing. Also fix handling of HTTP 301 to update Uri in database. Change-Id: Iff2948d79961a245b7900117d107edaa356618c9
* Cleaner thread management, less global state.Jeff Sharkey2013-01-285-149/+101
| | | | | | | | | | | | Switch to using a ThreadPoolExecutor for handling downloads, which gives us parallelism logic that is easier to reason about. Also open the door to eventually waiting until the executor is drained to stopSelf(). Removes DownloadHandler singleton, and gives explicit path for publishing active download speeds to notifications. Change-Id: I1836e7742bb8a84861d1ca6bd1e59b2040bd12f8
* Better handling of retryable errors.Jeff Sharkey2013-01-174-58/+59
| | | | | | | | Now the final errors are always thrown, and the outer code decides how to handle them as retries. Also clean up method signatures. Bug: 8022478 Change-Id: I4e7e43be793294ab837370df521e7c381e0bb6c3
* Move network state to enums for type safety.Jeff Sharkey2013-01-122-91/+68
| | | | Change-Id: Ib8ea24fc58a866f8a5626cdd20e5891eb0a2bbeb
* Only add one User-Agent header.Jeff Sharkey2013-01-102-10/+16
| | | | | | | Also include more details when reporting HTTP error codes. Bug: 7966393 Change-Id: I251b1ec7c827693817391b6e9fb8b0cab995395e
* Simplify download flow control, handle redirects.Jeff Sharkey2013-01-094-101/+153
| | | | | | | | | | Move redirection handling into a single loop, and handle each HTTP response code inline to make flow control easier to reason about. Fix race condition in tests by waiting for first status update. Bug: 7887226 Change-Id: Id4bfd182941baad4cd0bb702376c4beeb7275bb2
* Clean up DownloadManager threading tests.Jeff Sharkey2013-01-086-40/+8
| | | | | | | | | | | Change runUntilStatus() methods to polling with timeout instead of requiring internal knowledge about threading. Fix notification tests, and move opening of InputStream until after handling headers to avoid FNFE. Always reset facade to defaults before each test. Change-Id: I6b2d6cfc4e685d2090c1133b1b2e89ae12760f8b
* Remove singleton StorageManager.Jeff Sharkey2013-01-054-27/+19
| | | | | | | Now DownloadService creates and owns the lifecycle of its own StorageManager instance. Change-Id: I8f6bedc02f1dbe610a8e6a25d55383a12716d344
* Fold InnerState into State.Jeff Sharkey2012-12-201-47/+46
| | | | | | | It was cluttering up method signatures, and can easily be reset before starting each download pass. Change-Id: I7dee9d2160c3b5f737e7db86baa826d5d0b04b2d
* Always append to files, handle end of stream.Jeff Sharkey2012-12-171-30/+34
| | | | | | | | | | | | Fix bug where resumed downloads wouldn't open in append mode. Handle end of stream exceptions from URLConnection as special-case for now to keep tests passing. Move stream creation outside of DrmOutputStream, and always fsync() before closing files. Treat HTTP header errors as retryable. Add explicit state checks to redirection tests. Change-Id: I19d007284f6bfbffaac93859fe47cd98b79a59c4
* Merge "Cleaner I/O."Jeff Sharkey2012-12-135-351/+86
|\
| * Cleaner I/O.Jeff Sharkey2012-12-135-351/+86
| | | | | | | | | | | | | | | | | | | | | | | | This cleans up writing of downloaded data by always writing through OutputStream interface, which applies DRM if needed. Hands I/O streams along with method calls to give clearer chain of ownership. Only retry writes once after verifying free space. Remove checkCanHandleDownload() check, since most downloads are now using public API. Release DrmManagerClient sessions when finished. Change-Id: I49e479089a8218690b556d31ec65a030930ad368
* | am 195b46b8: am b0bb182a: Cancel stale notifications when starting.Jeff Sharkey2012-12-132-0/+5
|\ \ | |/ |/| | | | | * commit '195b46b8a59eb522fc91ac6f498f359a337d3f3e': Cancel stale notifications when starting.
| * Cancel stale notifications when starting.Jeff Sharkey2012-12-132-0/+5
| | | | | | | | | | Bug: 7693834 Change-Id: I5e212be321cccae0f7c76f80049c4e09f0867694
* | Move DownloadManager to HttpURLConnection.Jeff Sharkey2012-12-122-265/+116
|/ | | | | | | | | | Apache HttpClient is in maintenance mode, and doesn't have support for features like Server Name Indication (SNI). This change moves DownloadManager to use HttpURLConnection internally. It also moves redirection handling into HttpURLConnection. Bug: 7070597 Change-Id: Ie80093eeeecd14f94e1c8b7597ff3f8f5d220691
* Improve download remaining time calculation.Jeff Sharkey2012-11-283-26/+14
| | | | | | | | | | | Calculate remaining time in DownloadNotifier so we always use the most recent progress data, which avoids showing stale times. Weight speed calculation to prefer historical data so remaining time is smoother on bumpy network connections. Bug: 7631948 Change-Id: I497be0899e65086356745340b19d3987c6185bdd
* Update extras for in-progress download.Jeff Sharkey2012-11-272-1/+3
| | | | | | | | Follow move to EXTRA_NOTIFICATION_CLICK_DOWNLOAD_IDS extras, which was missing during refactoring. Bug: 7617373 Change-Id: I26203a2bc6fc0e211a1aa602c0de018332d76f60