diff options
author | Yo Chiang <yochiang@google.com> | 2021-05-12 10:21:25 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2021-05-12 10:21:25 +0000 |
commit | 00056f978e6170dbe118a6d15f6d1d94acb024af (patch) | |
tree | 391e09b61a184412cb5c9c6f43590190c43817a7 /packages/DynamicSystemInstallationService | |
parent | 3ac32077e30351690ef212098c6c6ee0889e7b7d (diff) | |
parent | 4730b8f002d361d8e08ab285465fc86446602459 (diff) |
Merge "DSUService: Deduplicate InstallUserdata() and InstallScratch()" am: c2c3a3c7d4 am: 5f2f17fc4a am: 4730b8f002
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1662402
Change-Id: Id1623079f1dbf0fe8bb27d67720542fc57c872a1
Diffstat (limited to 'packages/DynamicSystemInstallationService')
-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 { |