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

Commit d27be344 authored by Tao Bao's avatar Tao Bao
Browse files

Expose an update_engine API that verifies the given payload metadata.

android.os.UpdateEngine.verifyPayloadMetadata() allows a system updater
to verify a payload can be safely applied, by using its payload metadata
(usually a few hundred KiB only or even less). This would be useful in
improving update UX, since the updater can be smarter to avoid
installing an update that would fail to apply, or to fall back from an
incremental to full payload.

Bug: 65283633
Test: Build and flash walleye on device. Trigger a call to this API.
Change-Id: I82546f6b2a8f27cfd956cc1677556e7221cce5fd
parent 9b0d4601
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -3806,6 +3806,7 @@ package android.os {
    method public void resume();
    method public void suspend();
    method public boolean unbind();
    method public boolean verifyPayloadMetadata(java.lang.String);
  }

  public static final class UpdateEngine.ErrorCodeConstants {
+18 −0
Original line number Diff line number Diff line
@@ -271,4 +271,22 @@ public class UpdateEngine {
            }
        }
    }

    /**
     * Verifies that a payload associated with the given payload metadata
     * {@code payloadMetadataFilename} can be safely applied to ths device.
     * Returns {@code true} if the update can successfully be applied and
     * returns {@code false} otherwise.
     *
     * @param payloadMetadataFilename the location of the metadata without the
     * {@code file://} prefix.
     */
    @SystemApi
    public boolean verifyPayloadMetadata(String payloadMetadataFilename) {
        try {
            return mUpdateEngine.verifyPayloadApplicable(payloadMetadataFilename);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
    }
}