Otadexopt: Expose progress percentage

am: ff8ab4c9fa

Change-Id: I2c7e91842d0975505c6b2e701c087b598d08e6cc
This commit is contained in:
Andreas Gampe
2016-09-06 21:14:53 +00:00
committed by android-build-merger
3 changed files with 25 additions and 0 deletions

View File

@@ -41,6 +41,12 @@ interface IOtaDexopt {
*/ */
boolean isDone(); boolean isDone();
/**
* Return the progress (0..1) made in this session. When {@link #isDone() isDone} returns
* true, the progress value will be 1.
*/
float getProgress();
/** /**
* Optimize the next package. Note: this command is synchronous, that is, only returns after * Optimize the next package. Note: this command is synchronous, that is, only returns after
* the package has been dexopted (or dexopting failed). * the package has been dexopted (or dexopting failed).

View File

@@ -54,6 +54,7 @@ public class OtaDexoptService extends IOtaDexopt.Stub {
// TODO: Evaluate the need for WeakReferences here. // TODO: Evaluate the need for WeakReferences here.
private List<PackageParser.Package> mDexoptPackages; private List<PackageParser.Package> mDexoptPackages;
private int completeSize;
public OtaDexoptService(Context context, PackageManagerService packageManagerService) { public OtaDexoptService(Context context, PackageManagerService packageManagerService) {
this.mContext = context; this.mContext = context;
@@ -91,6 +92,7 @@ public class OtaDexoptService extends IOtaDexopt.Stub {
mDexoptPackages = PackageManagerServiceUtils.getPackagesForDexopt( mDexoptPackages = PackageManagerServiceUtils.getPackagesForDexopt(
mPackageManagerService.mPackages.values(), mPackageManagerService); mPackageManagerService.mPackages.values(), mPackageManagerService);
} }
completeSize = mDexoptPackages.size();
} }
@Override @Override
@@ -110,6 +112,14 @@ public class OtaDexoptService extends IOtaDexopt.Stub {
return mDexoptPackages.isEmpty(); return mDexoptPackages.isEmpty();
} }
@Override
public synchronized float getProgress() throws RemoteException {
if (completeSize == 0) {
return 1f;
}
return (completeSize - mDexoptPackages.size()) / ((float)completeSize);
}
@Override @Override
public synchronized void dexoptNextPackage() throws RemoteException { public synchronized void dexoptNextPackage() throws RemoteException {
if (mDexoptPackages == null) { if (mDexoptPackages == null) {

View File

@@ -46,6 +46,8 @@ class OtaDexoptShellCommand extends ShellCommand {
return runOtaDone(); return runOtaDone();
case "step": case "step":
return runOtaStep(); return runOtaStep();
case "progress":
return runOtaProgress();
default: default:
return handleDefaultCommands(cmd); return handleDefaultCommands(cmd);
} }
@@ -81,6 +83,13 @@ class OtaDexoptShellCommand extends ShellCommand {
return 0; return 0;
} }
private int runOtaProgress() throws RemoteException {
final float progress = mInterface.getProgress();
final PrintWriter pw = getOutPrintWriter();
pw.format("%.2f", progress);
return 0;
}
@Override @Override
public void onHelp() { public void onHelp() {
final PrintWriter pw = getOutPrintWriter(); final PrintWriter pw = getOutPrintWriter();