Commit Graph

170 Commits

Author SHA1 Message Date
Gabriele M
dd712cfdbe Don't register multiple UpdateEngine callbacks
We are loosely tied to UpdateEngine and have no way to know whether
we are bound or not without keeping track of the connection manually.
Since UpdaterService is for both A/B and legacy updates, turn
ABUpdateInstaller into a singleton to keep the code simple while
ensuring that a single callback is registered.

Change-Id: Ib4e9ad1413ba96bf5ed59cc3383741b5c9bac427
2018-04-05 16:44:51 +02:00
Gabriele M
c92f44b66e Remove duplicate INSTALLING notification
Change-Id: Ia1515aef1a24a5d54143e1423ae96f09163625bc
2018-04-05 16:44:51 +02:00
Michael Bestas
3002ccccba Automatic translation import
Change-Id: I0112a7802397907df4c937e9b5657ecfe925808b
2018-03-28 01:49:04 +03:00
Michael W
33a8169c45 Automatic translation import
Change-Id: I74de7535820ed77d0e6bd237841eaf2d8e67343a
2018-02-21 22:36:41 +00:00
meganukebmp
1db6636425 Updater: add changelog button
Add a changelog button in the menu toolbar throwing the user in
the recent changes page

Change-Id: I16609825c0662fc22b95189cbdf324a8c0b94f81
2018-02-17 17:44:24 +00:00
Michael Bestas
e71140189d Automatic translation import
Change-Id: If6b92fad59faa51810201dfb980dbac8e80deaf0
2018-02-04 04:51:21 +02:00
Gabriele M
9e3168e987 Add support for duplicate links
Support duplicate links [1] to handle better temporarily unavailable
mirrors.

[1] https://tools.ietf.org/html/rfc6249

Change-Id: If78fb4a90da68ef221294eed2c59063a14cf1f43
2018-01-23 22:36:45 +01:00
Gabriele M
cabab63dd2 Updater: Android Studio support
See README-STUDIO.txt for more info.

Change-Id: Ie673bba5618b0f00a585049cd85687a64db2b420
2018-01-18 20:32:06 +01:00
Gabriele M
f8311d0902 Updater: Set version code explicitly
In this way apks built with gradle/Android Studio will have the
same versionCode, allowing to update the one in /system.

Change-Id: I020cc623dd7c1c5085fec4e6f5978b6ee46468a2
2018-01-18 20:32:06 +01:00
Gabriele M
dab70d57ed Remove progress from notification when done
Change-Id: If49c8d0ca2270f22dcc5350379f1bb1f34f02041
2018-01-18 20:32:06 +01:00
Gabriele M
98773f70df Report installation failures
Change-Id: I5e11db1e6e338a510b3c1c7d16f8c085d874a9db
2018-01-18 20:32:06 +01:00
Gabriele M
ac36e3b8e6 Copy the updates for uncrypt using a Service
Same as change I488018d01c0baf74660362a384e53bfe5d85de2b
("Use a service to export the updates"). While at it, move the code
out of UpdaterService to better separate the code that deal with AB
updates and regular updates.

Change-Id: I2bc3e78e80f5e63c57303cbbcdc0353dbab0f67f
2018-01-18 20:32:06 +01:00
Gabriele M
05150dacbf Keep track of the installation status of AB updates
This allows to show the correct labels.

Change-Id: I52f42e042af0df2d091d786c03102cec352b3a5b
2018-01-18 20:31:18 +01:00
Gabriele M
84fd5ff2d6 Don't allow any operation if a reboot is needed
Change-Id: I175525071faa44f30b8f2bbf36da56a2e6f2dd1b
2018-01-18 20:31:18 +01:00
Gabriele M
f1508fd002 Allow to cancel ongoing installations
Change-Id: I46884b42b6e3f87fbee99a23f538cec990b3b873
2018-01-18 20:31:18 +01:00
Gabriele M
77e92907e9 Allow service restarts while installing AB updates
The update engine service is independent and once started doesn't need
our service to install updates. Therefore we can't assume that our
service will stay up as long as the installation is being performed.
If the service gets terminated while an update is being installed, we
simply lose our connection to the update engine service and stop
receiving notifications, the installation itself won't stop. Keep
track of ongoing installations using a shared preference and use a
sticky service when installing updates. The service will try to
re-connect to the update engine service and determine if the
installation is still ongoing.

Change-Id: Id2fc11cab51610d04bf41a0927824bb8c0c94d71
2018-01-18 20:31:18 +01:00
Gabriele M
45e9125dc9 Wait for the UPDATED_NEED_REBOOT status
Consider an update as installed only when update engine reports that
the device needs to be rebooted. This change also move the entire
logic in onStatusUpdate(), which reports all we need to properly
track the progress of the installation.

Change-Id: Ic8db00cccdd19fd62ba4dee31fd1dccc9037193d
2018-01-18 20:31:18 +01:00
Gabriele M
410160bf9a Show progress when installing AB updates
Change-Id: If8cd2e2da1f15a4af415aa35ccf61052c318333f
2018-01-18 20:31:18 +01:00
Gabriele M
ea43b93655 Use a service to export the updates
AsyncTasks are not suitable for long lasting operations and can easily
cause memory leaks. The use of ProgressDialogs is also discouraged, so
move to a foreground service to export the updates.

Change-Id: I488018d01c0baf74660362a384e53bfe5d85de2b
2018-01-18 20:31:18 +01:00
Gabriele M
b793cfe101 Stop service when pausing downloads
Change-Id: Ibb77c7f0d4309874fcfa591d12b5e6ce4a6d6abc
2018-01-18 20:31:18 +01:00
Gabriele M
8ff6f57e7b Use the right preference for the auto-delete option
Change-Id: Iac7e838e8ecf1e5ed27bb0c9587442aa2ec8ffec
2018-01-18 19:27:09 +00:00
Michael W
7a784b3956 Automatic translation import
Change-Id: Ide413ca5ae8afacf41a05619d8c68d0ded19a406
2018-01-13 12:59:25 +01:00
Abhisek Devkota
60841c0a3d Automatic translation import
Change-Id: I5262d8391cadd4e8bf15c7a17bbcf54e32de6f40
2017-12-16 11:34:12 -08:00
Abhisek Devkota
d282c7d142 Automatic translation import
Change-Id: I74a5095c628bfbb709cc4fdb5703ed5a794a751f
2017-12-11 21:56:54 -08:00
Gabriele M
7be5b7c057 Don't stop service while installing AB updates
Change-Id: I2e5eaffa2b64ce8d387958b070a23f393f827c5e
2017-11-12 20:14:18 +01:00
Gabriele M
8c9976d622 Show delete button for old updates
Old updates can't be installed if the current build is newer, so show
a delete button instead.

Change-Id: Ib34aad31d93e87a1009c23f86686fc4a008129e7
2017-11-12 16:10:17 +01:00
Gabriele M
9dc1349c1a Implement DownloadClient using HttpURLConnection
The version of OkHttp used in AOSP doesn't handle dynamic table size
updates [1] properly [2]. Instead of fixing OkHttp or importing a
prebuilt updated version, implement a new download client only using
HttpURLConnection, which seems to work properly.

[1] https://tools.ietf.org/html/rfc7541#section-6.3
[2] https://trac.nginx.org/nginx/ticket/1397

Change-Id: I3eedf7326f2017812c4a12d41f9ea028d255f7a8
2017-11-12 16:10:17 +01:00
Abhisek Devkota
7aa3a999d8 Automatic translation import
Change-Id: I139708300601c694863783cb23cf7c2ce49150f3
2017-10-21 11:11:30 -07:00
Paul Keith
c05521baba Updater: Allow specifying a new device name
* To allow transitions from e.g. variant->unified build
* Example process, using klteusc->klte as the example:
 - Set ro.updater.next_device to klte in klteusc's tree
 - Wait for build to roll out with ro.updater.next_device
 - Pull klteusc from build roster

Change-Id: I3c70d54de3f9e036cd8700edc4ee0b11093740d2
2017-10-12 20:12:49 +02:00
Abhisek Devkota
a891ac9709 Automatic translation import
Change-Id: I15611e4ff76d2364d8be1c1873dc40796e17a7f1
2017-09-19 00:29:02 -07:00
Gabriele M
6f3dfda1b0 Improve the automatic updates checks
The builds for each device are released more or less at the same
time of the day, so check when the last build was released and
schedule the next check accordingly. Also, allow multiple automatic
updates check in the same day. There's no need to limit the number
of checks since they are not frequent and this can affect negatively
the effectiveness of the new algorithm. In addition to that, remove
any pending oneshot alarm in case a subsequent check succeeds and
log every new alarm.

Change-Id: I4668f2e342e51d3578992eec6d8c270065d9aa21
2017-08-31 22:36:23 +02:00
Gabriele M
5c09d5c5f1 Minor code refactoring
Use a separate function to process the new json to increase the
readability of the code.

Change-Id: If508563fd9ccb2a6b0edb40a3cfe2a0081cb97f4
2017-08-31 17:29:49 +02:00
Gabriele M
c50871c0dc Allow to keep incompatible updates when parsing jsons
The condition was wrong and incompatible updates were always
discarded regardless of the flag passed.

Change-Id: Iefc2d64b841921eb77a9f73cf374b63b477d2588
2017-08-31 17:29:48 +02:00
Gabriele M
17f35382d7 Show alert dialog for major upgrades
Major upgrades are not possible with Updater and they are already
blocked. This commit adds a dialog with a link to a webpage that
explains how to upgrade manually.

Based on: d5d343d627

Change-Id: Ifb23e0a4db1060fc696d13e6694f3e849af70e2d
2017-08-25 18:13:46 +00:00
Gabriele M
88b6fd84bb Show the actual version of the update
We were showing the version of the currently installed build for
all the updates.

Change-Id: I76150ff248d6c6a106571c2ba4d26ae57847aed3
2017-08-25 20:05:56 +02:00
Mustafa Karatas
2327e83c51 Fix No updates found for users with Turkish Locale
There is a problem with Java's toLowerCase() method which returns
"LATIN SMALL LETTER DOTLESS I" for "I" character. This breaks update check
because Utils.getInstalledBuildType() returns "nıghtly (notice dottles small
i)" instead of "nightly".

This change forces toLowerCase() to use ROOT locale which is recommended in
javadocs

There is a note for Turkish locale on javadocs:
http://devdocs.io/openjdk~8/java/lang/string#toLowerCase--

Change-Id: Ifada815202588d67643136846de08f94cefb46a5
Signed-off-by: Mustafa Karatas <mstfkaratas@gmail.com>
2017-08-20 14:21:38 +02:00
Gabriele M
87202371de Don't change status when cancelled downloads fail
It takes a bit of time to actually pause (i.e. cancel) a download. If
we change the update status once the download is actually cancelled,
we might override any status change that happened between the user
request and its completion. For example, the following can happen when
the user deletes an ongoing downloads:

 - pauseDownload(): DOWNLOADING -> PAUSED
 - deleteUpdate(): PAUSED -> DELETED
 - onFailure(): DELETED -> PAUSED

Don't change the status of cancelled downloads from the onFailure()
callback not to have an incorrect final status.

Change-Id: Iee90482d82df984672c59d7c508ad834fa08061f
2017-08-18 14:31:54 +02:00
Luca Stefani
4c5dd9c391 Disable clip to padding
* Allow the last item shadow to be seen

Change-Id: If24b0db3feb75a4468b6dddde62b4c79917552c8
2017-08-14 22:47:03 +02:00
Luca Stefani
a0cd205b1d Don't add margins in update items
Change-Id: I71a22a4bd0a15e70a045cef1c49f67ff5625dbd6
2017-08-14 22:47:02 +02:00
Luca Stefani
8217a4aac6 Exclude updater from recents
Change-Id: Iae2737aa5890aa00da79c5b04dd253273aa9fabc
2017-08-14 22:47:01 +02:00
Gabriele M
7c25e7aef9 Show message if there are no updates 2017-08-09 17:18:15 +02:00
Gabriele M
ca5b75ebd1 Don't use lower case device names when requesting the updates list
URLs are case sensitive, the server expects the same exact value
stored in the system property, so don't change it.
2017-08-08 19:08:37 +02:00
Gabriele M
ea3ac38e25 Dismiss some notifications when clicked 2017-08-08 10:32:48 +02:00
Gabriele M
acd7387d23 Warn user about downloading update package via mobile data
Based on: 8928492535
2017-08-08 10:32:48 +02:00
Gabriele M
cdc4849767 Remove duplicate icon
ic_tab_install is basically the same as ic_system_update. The only
difference is the color, but that doesn't really matter.
2017-08-07 16:43:34 +02:00
Gabriele M
415e62df5d Add permission to show system alert dialogs
While at it, sort the permissions and fix their coding style.
2017-07-26 11:57:33 +02:00
Gabriele M
13f3849b96 Actually check if an OTA is encrypted 2017-07-26 11:57:32 +02:00
Gabriele M
d854c6377b Restore the status of the checkboxes when creating the menu 2017-07-22 20:39:52 +02:00
Gabriele M
758521bb53 Allow to delete updates currently in download 2017-07-22 20:38:20 +02:00
Gabriele M
8768daddf0 Add option to delete updates when installed
This is mostly useful on encrypted devices since it allows to not
copy the update before installing it.
2017-07-22 20:38:20 +02:00