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

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

Merge "DSUService: Deduplicate InstallUserdata() and InstallScratch()" am:...

Merge "DSUService: Deduplicate InstallUserdata() and InstallScratch()" am: c2c3a3c7 am: 5f2f17fc am: 4730b8f0 am: 00056f97

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

Change-Id: I8699f3b7ef3f5bc37255c6116925a344e23ec36e
parents 1f3879ba 00056f97
Loading
Loading
Loading
Loading
+15 −45
Original line number Diff line number Diff line
@@ -320,20 +320,21 @@ class InstallationAsyncTask extends AsyncTask<String, InstallationAsyncTask.Prog
        }
    }

    private void installScratch() throws IOException {
        final long scratchSize = mDynSystem.suggestScratchSize();
    private void installWritablePartition(final String partitionName, final long partitionSize)
            throws IOException {
        Log.d(TAG, "Creating writable partition: " + partitionName + ", size: " + partitionSize);

        Thread thread = new Thread() {
            @Override
            public void run() {
                mInstallationSession =
                        mDynSystem.createPartition("scratch", scratchSize, /* readOnly= */ false);
                        mDynSystem.createPartition(
                                partitionName, partitionSize, /* readOnly= */ false);
            }
        };

        Log.d(TAG, "Creating partition: scratch, size = " + scratchSize);
        thread.start();

        Progress progress = new Progress("scratch", scratchSize, mNumInstalledPartitions++);
        Progress progress = new Progress(partitionName, partitionSize, mNumInstalledPartitions++);

        while (thread.isAlive()) {
            if (isCancelled()) {
@@ -356,53 +357,22 @@ class InstallationAsyncTask extends AsyncTask<String, InstallationAsyncTask.Prog

        if (mInstallationSession == null) {
            throw new IOException(
                    "Failed to start installation with requested size: " + scratchSize);
                    "Failed to start installation with requested size: " + partitionSize);
        }

        // Reset installation session and verify that installation completes successfully.
        mInstallationSession = null;
        if (!mDynSystem.closePartition()) {
            throw new IOException("Failed to complete partition installation: scratch");
        }
    }

    private void installUserdata() throws IOException {
        Thread thread = new Thread(() -> {
            mInstallationSession = mDynSystem.createPartition("userdata", mUserdataSize, false);
        });

        Log.d(TAG, "Creating partition: userdata, size = " + mUserdataSize);
        thread.start();

        Progress progress = new Progress("userdata", mUserdataSize, mNumInstalledPartitions++);

        while (thread.isAlive()) {
            if (isCancelled()) {
                return;
            throw new IOException("Failed to complete partition installation: " + partitionName);
        }

            final long installedSize = mDynSystem.getInstallationProgress().bytes_processed;

            if (installedSize > progress.installedSize + MIN_PROGRESS_TO_PUBLISH) {
                progress.installedSize = installedSize;
                publishProgress(progress);
    }

            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                // Ignore the error.
            }
    private void installScratch() throws IOException {
        installWritablePartition("scratch", mDynSystem.suggestScratchSize());
    }

        if (mInstallationSession == null) {
            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 installUserdata() throws IOException {
        installWritablePartition("userdata", mUserdataSize);
    }

    private void installImages() throws IOException, ImageValidationException {