Merge "Check error status after installing each DSU partition"
This commit is contained in:
@@ -154,6 +154,19 @@ public class DynamicSystemManager {
|
||||
throw new RuntimeException(e.toString());
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Complete the current partition installation.
|
||||
*
|
||||
* @return true if the partition installation completes without error.
|
||||
*/
|
||||
@RequiresPermission(android.Manifest.permission.MANAGE_DYNAMIC_SYSTEM)
|
||||
public boolean closePartition() {
|
||||
try {
|
||||
return mService.closePartition();
|
||||
} catch (RemoteException e) {
|
||||
throw new RuntimeException(e.toString());
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Finish a previously started installation. Installations without a cooresponding
|
||||
* finishInstallation() will be cleaned up during device boot.
|
||||
|
||||
@@ -38,6 +38,13 @@ interface IDynamicSystemService
|
||||
*/
|
||||
boolean createPartition(@utf8InCpp String name, long size, boolean readOnly);
|
||||
|
||||
/**
|
||||
* Complete the current partition installation.
|
||||
*
|
||||
* @return true if the partition installation completes without error.
|
||||
*/
|
||||
boolean closePartition();
|
||||
|
||||
/**
|
||||
* Finish a previously started installation. Installations without
|
||||
* a cooresponding finishInstallation() will be cleaned up during device boot.
|
||||
|
||||
@@ -334,6 +334,11 @@ class InstallationAsyncTask extends AsyncTask<String, InstallationAsyncTask.Prog
|
||||
throw new IOException(
|
||||
"Failed to start installation with requested size: " + mUserdataSize);
|
||||
}
|
||||
// Reset installation session and verify that installation completes successfully.
|
||||
mInstallationSession = null;
|
||||
if (!mDynSystem.closePartition()) {
|
||||
throw new IOException("Failed to complete partition installation: userdata");
|
||||
}
|
||||
}
|
||||
|
||||
private void installImages()
|
||||
@@ -503,6 +508,12 @@ class InstallationAsyncTask extends AsyncTask<String, InstallationAsyncTask.Prog
|
||||
imageValidationThrowOrWarning(new KeyRevokedException(publicKey));
|
||||
}
|
||||
}
|
||||
|
||||
// Reset installation session and verify that installation completes successfully.
|
||||
mInstallationSession = null;
|
||||
if (!mDynSystem.closePartition()) {
|
||||
throw new IOException("Failed to complete partition installation: " + partitionName);
|
||||
}
|
||||
}
|
||||
|
||||
private static String toHexString(byte[] bytes) {
|
||||
|
||||
@@ -125,6 +125,16 @@ public class DynamicSystemService extends IDynamicSystemService.Stub {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean closePartition() throws RemoteException {
|
||||
IGsiService service = getGsiService();
|
||||
if (service.closePartition() != 0) {
|
||||
Slog.i(TAG, "Partition installation completes with error");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean finishInstallation() throws RemoteException {
|
||||
IGsiService service = getGsiService();
|
||||
|
||||
Reference in New Issue
Block a user