Merge "Add a system API UpdateEngine to switch the slot back and forth"

This commit is contained in:
Tianjie Xu
2021-07-27 02:03:10 +00:00
committed by Gerrit Code Review
2 changed files with 40 additions and 4 deletions

View File

@@ -7273,8 +7273,10 @@ package android.os {
method public boolean bind(android.os.UpdateEngineCallback);
method public void cancel();
method @WorkerThread public int cleanupAppliedPayload();
method public void resetShouldSwitchSlotOnReboot();
method public void resetStatus();
method public void resume();
method public void setShouldSwitchSlotOnReboot(@NonNull String);
method public void suspend();
method public boolean unbind();
method public boolean verifyPayloadMetadata(String);

View File

@@ -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.
*/
@@ -424,6 +425,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.
*/