diff options
| author | 2021-04-02 03:26:31 +0800 | |
|---|---|---|
| committer | 2021-05-12 06:58:06 +0000 | |
| commit | 677dfeae2d823cd4c8d1ba2296c9cdfe7e8ee2fa (patch) | |
| tree | 936963524800f121f2619940c1b308c82446161b | |
| parent | 0885cc3db9d26f17af942fc89b3d8f96ab27136c (diff) | |
DSUService: Deduplicate InstallUserdata() and InstallScratch()
Factor out common code and some minor polishing.
Bug: 165471299
Test: Fire a DSU installation and observe logcat
Change-Id: Ia13db74c038e49d888e69e43b59ab0ad5b078464
| -rw-r--r-- | packages/DynamicSystemInstallationService/src/com/android/dynsystem/InstallationAsyncTask.java | 60 |
1 files changed, 15 insertions, 45 deletions
diff --git a/packages/DynamicSystemInstallationService/src/com/android/dynsystem/InstallationAsyncTask.java b/packages/DynamicSystemInstallationService/src/com/android/dynsystem/InstallationAsyncTask.java index 59ea9f0150bf..f18d4269c3ef 100644 --- a/packages/DynamicSystemInstallationService/src/com/android/dynsystem/InstallationAsyncTask.java +++ b/packages/DynamicSystemInstallationService/src/com/android/dynsystem/InstallationAsyncTask.java @@ -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"); + throw new IOException("Failed to complete partition installation: " + partitionName); } } - 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; - } - - 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 { |