Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4eaa49ee authored by Tianjie Xu's avatar Tianjie Xu Committed by Gerrit Code Review
Browse files

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

parents 103308ad fdf7b58a
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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);
+38 −4
Original line number Diff line number Diff line
@@ -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.
     */