Merge "Proper handling of unrecoverable status." into rvc-dev

This commit is contained in:
TreeHugger Robot
2020-04-27 15:57:56 +00:00
committed by Android (Google) Code Review

View File

@@ -1488,6 +1488,10 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
}
private void onDataLoaderUnrecoverable() {
if (TextUtils.isEmpty(mPackageName)) {
// The package has not been installed.
return;
}
final PackageManagerService packageManagerService = mPm;
final String packageName = mPackageName;
mHandler.post(() -> {
@@ -2610,12 +2614,14 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
case IDataLoaderStatusListener.DATA_LOADER_STOPPED:
case IDataLoaderStatusListener.DATA_LOADER_DESTROYED:
return;
case IDataLoaderStatusListener.DATA_LOADER_UNRECOVERABLE:
onDataLoaderUnrecoverable();
return;
}
if (mDestroyed || mDataLoaderFinished) {
switch (status) {
case IDataLoaderStatusListener.DATA_LOADER_UNRECOVERABLE:
onDataLoaderUnrecoverable();
return;
}
return;
}
@@ -2678,6 +2684,12 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
}
break;
}
case IDataLoaderStatusListener.DATA_LOADER_UNRECOVERABLE:
mDataLoaderFinished = true;
onSessionVerificationFailure(
new PackageManagerException(INSTALL_FAILED_MEDIA_UNAVAILABLE,
"DataLoader reported unrecoverable failure."));
return;
}
} catch (RemoteException e) {
// In case of streaming failure we don't want to fail or commit the session.