diff options
| author | Tianjie Xu <xunchang@google.com> | 2021-07-27 02:19:18 +0000 |
|---|---|---|
| committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2021-07-27 02:19:18 +0000 |
| commit | 7c7696cd470d907e6246346aac48bd929c1f2956 (patch) | |
| tree | b5c10ee72c703a4e92511030bcbb29e23a1aac0d /core/java | |
| parent | dbb3825a0463137ae7f55b7e43968fa5af837224 (diff) | |
| parent | 4eaa49eeb615d129ea6174f20d2373d9eba84452 (diff) | |
Merge "Add a system API UpdateEngine to switch the slot back and forth" am: 4eaa49eeb6
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1698090
Change-Id: I60bdebcc482028135dd05979bb50cba5ca656f13
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/android/os/UpdateEngine.java | 42 |
1 files changed, 38 insertions, 4 deletions
diff --git a/core/java/android/os/UpdateEngine.java b/core/java/android/os/UpdateEngine.java index 5a48242f26ea..3e01c53f0469 100644 --- a/core/java/android/os/UpdateEngine.java +++ b/core/java/android/os/UpdateEngine.java @@ -409,10 +409,11 @@ public class UpdateEngine { /** * Resets the bootable flag on the non-current partition and all internal - * update_engine state. This can be used after an unwanted payload has been - * successfully applied and the device has not yet been rebooted to signal - * that we no longer want to boot into that updated system. After this call - * completes, update_engine will no longer report + * update_engine state. Note this call will clear the entire update + * progress. So a subsequent {@link #applyPayload} will apply the update + * from scratch. + * + * <p>After this call completes, update_engine will no longer report * {@code UPDATED_NEED_REBOOT}, so your callback can remove any outstanding * notification that rebooting into the new system is possible. */ @@ -425,6 +426,39 @@ public class UpdateEngine { } /** + * Sets the A/B slot switch for the next boot after applying an ota update. If + * {@link #applyPayload} hasn't switched the slot, the updater APP can call + * this API to switch the slot and apply the update on next boot. + * + * @param payloadMetadataFilename the location of the metadata without the + * {@code file://} prefix. + */ + public void setShouldSwitchSlotOnReboot(@NonNull String payloadMetadataFilename) { + try { + mUpdateEngine.setShouldSwitchSlotOnReboot(payloadMetadataFilename); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + + /** + * Resets the boot slot to the source/current slot, without cancelling the + * update progress. This can be called after the update is installed, and to + * prevent the device from accidentally taking the update when it reboots. + * + * This is useful when users don't want to take the update immediately; or + * the updater determines some condition hasn't met, e.g. insufficient space + * for boot. + */ + public void resetShouldSwitchSlotOnReboot() { + try { + mUpdateEngine.resetShouldSwitchSlotOnReboot(); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + + /** * Unbinds the last bound callback function. */ public boolean unbind() { |
