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

Commit c7b99da1 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

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

parents f0298c46 03a2c383
Loading
Loading
Loading
Loading
+15 −3
Original line number Diff line number Diff line
@@ -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;
                }

                if (mDestroyed || mDataLoaderFinished) {
                    switch (status) {
                        case IDataLoaderStatusListener.DATA_LOADER_UNRECOVERABLE:
                            onDataLoaderUnrecoverable();
                            return;
                    }

                if (mDestroyed || mDataLoaderFinished) {
                    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.