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

Commit 3ad013e3 authored by Yo Chiang's avatar Yo Chiang Committed by Automerger Merge Worker
Browse files

Merge "Check error status after installing each DSU partition" am: fbd85db8

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1404669

Change-Id: Ic56f944caf6b9c388f5275d098548a072698fbad
parents eae34dbe fbd85db8
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -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.
+7 −0
Original line number Diff line number Diff line
@@ -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.
+11 −0
Original line number Diff line number Diff line
@@ -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) {
+10 −0
Original line number Diff line number Diff line
@@ -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();