summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorTianjie Xu <xunchang@google.com>2021-07-27 02:19:18 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2021-07-27 02:19:18 +0000
commit7c7696cd470d907e6246346aac48bd929c1f2956 (patch)
treeb5c10ee72c703a4e92511030bcbb29e23a1aac0d /core/java
parentdbb3825a0463137ae7f55b7e43968fa5af837224 (diff)
parent4eaa49eeb615d129ea6174f20d2373d9eba84452 (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.java42
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() {