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

Commit 73d5afb2 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: I1ebc08ebf05815ea17c8bbdca5cb745fa3aca40f
parents eae34dbe fbd85db8
Loading
Loading
Loading
Loading
+13 −0
Original line number Original line Diff line number Diff line
@@ -154,6 +154,19 @@ public class DynamicSystemManager {
            throw new RuntimeException(e.toString());
            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
     * Finish a previously started installation. Installations without a cooresponding
     * finishInstallation() will be cleaned up during device boot.
     * finishInstallation() will be cleaned up during device boot.
+7 −0
Original line number Original line Diff line number Diff line
@@ -38,6 +38,13 @@ interface IDynamicSystemService
     */
     */
    boolean createPartition(@utf8InCpp String name, long size, boolean readOnly);
    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
     * Finish a previously started installation. Installations without
     * a cooresponding finishInstallation() will be cleaned up during device boot.
     * a cooresponding finishInstallation() will be cleaned up during device boot.
+11 −0
Original line number Original line Diff line number Diff line
@@ -334,6 +334,11 @@ class InstallationAsyncTask extends AsyncTask<String, InstallationAsyncTask.Prog
            throw new IOException(
            throw new IOException(
                    "Failed to start installation with requested size: " + mUserdataSize);
                    "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()
    private void installImages()
@@ -503,6 +508,12 @@ class InstallationAsyncTask extends AsyncTask<String, InstallationAsyncTask.Prog
                imageValidationThrowOrWarning(new KeyRevokedException(publicKey));
                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) {
    private static String toHexString(byte[] bytes) {
+10 −0
Original line number Original line Diff line number Diff line
@@ -125,6 +125,16 @@ public class DynamicSystemService extends IDynamicSystemService.Stub {
        return true;
        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
    @Override
    public boolean finishInstallation() throws RemoteException {
    public boolean finishInstallation() throws RemoteException {
        IGsiService service = getGsiService();
        IGsiService service = getGsiService();