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
This commit is contained in:
Tao Bao
2018-01-10 11:40:19 -08:00
parent 9b0d4601a1
commit d27be3444f
2 changed files with 19 additions and 0 deletions

View File

@@ -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 {

View File

@@ -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();
}
}
}