Loading packages/DynamicSystemInstallationService/src/com/android/dynsystem/DynamicSystemInstallationService.java +4 −4 Original line number Diff line number Diff line Loading @@ -211,10 +211,10 @@ public class DynamicSystemInstallationService extends Service @Override public void onProgressUpdate(InstallationAsyncTask.Progress progress) { mCurrentPartitionName = progress.mPartitionName; mCurrentPartitionSize = progress.mPartitionSize; mCurrentPartitionInstalledSize = progress.mInstalledSize; mNumInstalledPartitions = progress.mNumInstalledPartitions; mCurrentPartitionName = progress.partitionName; mCurrentPartitionSize = progress.partitionSize; mCurrentPartitionInstalledSize = progress.installedSize; mNumInstalledPartitions = progress.numInstalledPartitions; postStatus(STATUS_IN_PROGRESS, CAUSE_NOT_SPECIFIED, null); } Loading packages/DynamicSystemInstallationService/src/com/android/dynsystem/InstallationAsyncTask.java +25 −39 Original line number Diff line number Diff line Loading @@ -102,20 +102,16 @@ class InstallationAsyncTask extends AsyncTask<String, InstallationAsyncTask.Prog static final int RESULT_ERROR_UNSUPPORTED_FORMAT = 5; static final int RESULT_ERROR_EXCEPTION = 6; class Progress { String mPartitionName; long mPartitionSize; long mInstalledSize; static class Progress { public final String partitionName; public final long partitionSize; public final int numInstalledPartitions; public long installedSize; int mNumInstalledPartitions; Progress(String partitionName, long partitionSize, long installedSize, int numInstalled) { mPartitionName = partitionName; mPartitionSize = partitionSize; mInstalledSize = installedSize; mNumInstalledPartitions = numInstalled; Progress(String partitionName, long partitionSize, int numInstalledPartitions) { this.partitionName = partitionName; this.partitionSize = partitionSize; this.numInstalledPartitions = numInstalledPartitions; } } Loading @@ -141,6 +137,8 @@ class InstallationAsyncTask extends AsyncTask<String, InstallationAsyncTask.Prog private boolean mIsZip; private boolean mIsCompleted; private int mNumInstalledPartitions; private InputStream mStream; private ZipFile mZipFile; Loading Loading @@ -312,18 +310,17 @@ class InstallationAsyncTask extends AsyncTask<String, InstallationAsyncTask.Prog Log.d(TAG, "Creating partition: userdata"); thread.start(); long installedSize = 0; Progress progress = new Progress("userdata", mUserdataSize, installedSize, 0); Progress progress = new Progress("userdata", mUserdataSize, mNumInstalledPartitions++); while (thread.isAlive()) { if (isCancelled()) { return; } installedSize = mDynSystem.getInstallationProgress().bytes_processed; final long installedSize = mDynSystem.getInstallationProgress().bytes_processed; if (installedSize > progress.mInstalledSize + MIN_PROGRESS_TO_PUBLISH) { progress.mInstalledSize = installedSize; if (installedSize > progress.installedSize + MIN_PROGRESS_TO_PUBLISH) { progress.installedSize = installedSize; publishProgress(progress); } Loading Loading @@ -357,7 +354,7 @@ class InstallationAsyncTask extends AsyncTask<String, InstallationAsyncTask.Prog private void installStreamingGzUpdate() throws IOException, InterruptedException, ImageValidationException { Log.d(TAG, "To install a streaming GZ update"); installImage("system", mSystemSize, new GZIPInputStream(mStream), 1); installImage("system", mSystemSize, new GZIPInputStream(mStream)); } private void installStreamingZipUpdate() Loading @@ -367,12 +364,8 @@ class InstallationAsyncTask extends AsyncTask<String, InstallationAsyncTask.Prog ZipInputStream zis = new ZipInputStream(mStream); ZipEntry zipEntry = null; int numInstalledPartitions = 1; while ((zipEntry = zis.getNextEntry()) != null) { if (installImageFromAnEntry(zipEntry, zis, numInstalledPartitions)) { numInstalledPartitions++; } installImageFromAnEntry(zipEntry, zis); if (isCancelled()) { break; Loading @@ -385,14 +378,10 @@ class InstallationAsyncTask extends AsyncTask<String, InstallationAsyncTask.Prog Log.d(TAG, "To install a local ZIP update"); Enumeration<? extends ZipEntry> entries = mZipFile.entries(); int numInstalledPartitions = 1; while (entries.hasMoreElements()) { ZipEntry entry = entries.nextElement(); if (installImageFromAnEntry( entry, mZipFile.getInputStream(entry), numInstalledPartitions)) { numInstalledPartitions++; } installImageFromAnEntry(entry, mZipFile.getInputStream(entry)); if (isCancelled()) { break; Loading @@ -400,8 +389,7 @@ class InstallationAsyncTask extends AsyncTask<String, InstallationAsyncTask.Prog } } private boolean installImageFromAnEntry( ZipEntry entry, InputStream is, int numInstalledPartitions) private boolean installImageFromAnEntry(ZipEntry entry, InputStream is) throws IOException, InterruptedException, ImageValidationException { String name = entry.getName(); Loading @@ -420,13 +408,12 @@ class InstallationAsyncTask extends AsyncTask<String, InstallationAsyncTask.Prog long uncompressedSize = entry.getSize(); installImage(partitionName, uncompressedSize, is, numInstalledPartitions); installImage(partitionName, uncompressedSize, is); return true; } private void installImage( String partitionName, long uncompressedSize, InputStream is, int numInstalledPartitions) private void installImage(String partitionName, long uncompressedSize, InputStream is) throws IOException, InterruptedException, ImageValidationException { SparseInputStream sis = new SparseInputStream(new BufferedInputStream(is)); Loading Loading @@ -473,10 +460,9 @@ class InstallationAsyncTask extends AsyncTask<String, InstallationAsyncTask.Prog mInstallationSession.setAshmem(pfd, READ_BUFFER_SIZE); long installedSize = 0; Progress progress = new Progress( partitionName, partitionSize, installedSize, numInstalledPartitions); Progress progress = new Progress(partitionName, partitionSize, mNumInstalledPartitions++); long installedSize = 0; byte[] bytes = new byte[READ_BUFFER_SIZE]; int numBytesRead; Loading @@ -493,8 +479,8 @@ class InstallationAsyncTask extends AsyncTask<String, InstallationAsyncTask.Prog installedSize += numBytesRead; if (installedSize > progress.mInstalledSize + MIN_PROGRESS_TO_PUBLISH) { progress.mInstalledSize = installedSize; if (installedSize > progress.installedSize + MIN_PROGRESS_TO_PUBLISH) { progress.installedSize = installedSize; publishProgress(progress); } } Loading Loading
packages/DynamicSystemInstallationService/src/com/android/dynsystem/DynamicSystemInstallationService.java +4 −4 Original line number Diff line number Diff line Loading @@ -211,10 +211,10 @@ public class DynamicSystemInstallationService extends Service @Override public void onProgressUpdate(InstallationAsyncTask.Progress progress) { mCurrentPartitionName = progress.mPartitionName; mCurrentPartitionSize = progress.mPartitionSize; mCurrentPartitionInstalledSize = progress.mInstalledSize; mNumInstalledPartitions = progress.mNumInstalledPartitions; mCurrentPartitionName = progress.partitionName; mCurrentPartitionSize = progress.partitionSize; mCurrentPartitionInstalledSize = progress.installedSize; mNumInstalledPartitions = progress.numInstalledPartitions; postStatus(STATUS_IN_PROGRESS, CAUSE_NOT_SPECIFIED, null); } Loading
packages/DynamicSystemInstallationService/src/com/android/dynsystem/InstallationAsyncTask.java +25 −39 Original line number Diff line number Diff line Loading @@ -102,20 +102,16 @@ class InstallationAsyncTask extends AsyncTask<String, InstallationAsyncTask.Prog static final int RESULT_ERROR_UNSUPPORTED_FORMAT = 5; static final int RESULT_ERROR_EXCEPTION = 6; class Progress { String mPartitionName; long mPartitionSize; long mInstalledSize; static class Progress { public final String partitionName; public final long partitionSize; public final int numInstalledPartitions; public long installedSize; int mNumInstalledPartitions; Progress(String partitionName, long partitionSize, long installedSize, int numInstalled) { mPartitionName = partitionName; mPartitionSize = partitionSize; mInstalledSize = installedSize; mNumInstalledPartitions = numInstalled; Progress(String partitionName, long partitionSize, int numInstalledPartitions) { this.partitionName = partitionName; this.partitionSize = partitionSize; this.numInstalledPartitions = numInstalledPartitions; } } Loading @@ -141,6 +137,8 @@ class InstallationAsyncTask extends AsyncTask<String, InstallationAsyncTask.Prog private boolean mIsZip; private boolean mIsCompleted; private int mNumInstalledPartitions; private InputStream mStream; private ZipFile mZipFile; Loading Loading @@ -312,18 +310,17 @@ class InstallationAsyncTask extends AsyncTask<String, InstallationAsyncTask.Prog Log.d(TAG, "Creating partition: userdata"); thread.start(); long installedSize = 0; Progress progress = new Progress("userdata", mUserdataSize, installedSize, 0); Progress progress = new Progress("userdata", mUserdataSize, mNumInstalledPartitions++); while (thread.isAlive()) { if (isCancelled()) { return; } installedSize = mDynSystem.getInstallationProgress().bytes_processed; final long installedSize = mDynSystem.getInstallationProgress().bytes_processed; if (installedSize > progress.mInstalledSize + MIN_PROGRESS_TO_PUBLISH) { progress.mInstalledSize = installedSize; if (installedSize > progress.installedSize + MIN_PROGRESS_TO_PUBLISH) { progress.installedSize = installedSize; publishProgress(progress); } Loading Loading @@ -357,7 +354,7 @@ class InstallationAsyncTask extends AsyncTask<String, InstallationAsyncTask.Prog private void installStreamingGzUpdate() throws IOException, InterruptedException, ImageValidationException { Log.d(TAG, "To install a streaming GZ update"); installImage("system", mSystemSize, new GZIPInputStream(mStream), 1); installImage("system", mSystemSize, new GZIPInputStream(mStream)); } private void installStreamingZipUpdate() Loading @@ -367,12 +364,8 @@ class InstallationAsyncTask extends AsyncTask<String, InstallationAsyncTask.Prog ZipInputStream zis = new ZipInputStream(mStream); ZipEntry zipEntry = null; int numInstalledPartitions = 1; while ((zipEntry = zis.getNextEntry()) != null) { if (installImageFromAnEntry(zipEntry, zis, numInstalledPartitions)) { numInstalledPartitions++; } installImageFromAnEntry(zipEntry, zis); if (isCancelled()) { break; Loading @@ -385,14 +378,10 @@ class InstallationAsyncTask extends AsyncTask<String, InstallationAsyncTask.Prog Log.d(TAG, "To install a local ZIP update"); Enumeration<? extends ZipEntry> entries = mZipFile.entries(); int numInstalledPartitions = 1; while (entries.hasMoreElements()) { ZipEntry entry = entries.nextElement(); if (installImageFromAnEntry( entry, mZipFile.getInputStream(entry), numInstalledPartitions)) { numInstalledPartitions++; } installImageFromAnEntry(entry, mZipFile.getInputStream(entry)); if (isCancelled()) { break; Loading @@ -400,8 +389,7 @@ class InstallationAsyncTask extends AsyncTask<String, InstallationAsyncTask.Prog } } private boolean installImageFromAnEntry( ZipEntry entry, InputStream is, int numInstalledPartitions) private boolean installImageFromAnEntry(ZipEntry entry, InputStream is) throws IOException, InterruptedException, ImageValidationException { String name = entry.getName(); Loading @@ -420,13 +408,12 @@ class InstallationAsyncTask extends AsyncTask<String, InstallationAsyncTask.Prog long uncompressedSize = entry.getSize(); installImage(partitionName, uncompressedSize, is, numInstalledPartitions); installImage(partitionName, uncompressedSize, is); return true; } private void installImage( String partitionName, long uncompressedSize, InputStream is, int numInstalledPartitions) private void installImage(String partitionName, long uncompressedSize, InputStream is) throws IOException, InterruptedException, ImageValidationException { SparseInputStream sis = new SparseInputStream(new BufferedInputStream(is)); Loading Loading @@ -473,10 +460,9 @@ class InstallationAsyncTask extends AsyncTask<String, InstallationAsyncTask.Prog mInstallationSession.setAshmem(pfd, READ_BUFFER_SIZE); long installedSize = 0; Progress progress = new Progress( partitionName, partitionSize, installedSize, numInstalledPartitions); Progress progress = new Progress(partitionName, partitionSize, mNumInstalledPartitions++); long installedSize = 0; byte[] bytes = new byte[READ_BUFFER_SIZE]; int numBytesRead; Loading @@ -493,8 +479,8 @@ class InstallationAsyncTask extends AsyncTask<String, InstallationAsyncTask.Prog installedSize += numBytesRead; if (installedSize > progress.mInstalledSize + MIN_PROGRESS_TO_PUBLISH) { progress.mInstalledSize = installedSize; if (installedSize > progress.installedSize + MIN_PROGRESS_TO_PUBLISH) { progress.installedSize = installedSize; publishProgress(progress); } } Loading