Auto-downloading of VM image

For test-automation purpose.

Bug: 375051310
Test: N/A
Change-Id: Ib7163e357a7cccc829cb8c85738b335c99e78580
diff --git a/android/TerminalApp/java/com/android/virtualization/terminal/InstallerActivity.java b/android/TerminalApp/java/com/android/virtualization/terminal/InstallerActivity.java
index 428fd91..c8f5bab 100644
--- a/android/TerminalApp/java/com/android/virtualization/terminal/InstallerActivity.java
+++ b/android/TerminalApp/java/com/android/virtualization/terminal/InstallerActivity.java
@@ -23,6 +23,7 @@
 import android.content.ServiceConnection;
 import android.os.Build;
 import android.os.Bundle;
+import android.os.ConditionVariable;
 import android.os.FileUtils;
 import android.os.IBinder;
 import android.os.RemoteException;
@@ -39,6 +40,7 @@
     private static final String TAG = "LinuxInstaller";
 
     private static final long ESTIMATED_IMG_SIZE_BYTES = FileUtils.parseSize("350MB");
+    static final String EXTRA_AUTO_DOWNLOAD = "auto_download";
 
     private ExecutorService mExecutorService;
     private CheckBox mWaitForWifiCheckbox;
@@ -48,6 +50,7 @@
     private ServiceConnection mInstallerServiceConnection;
     private InstallProgressListener mInstallProgressListener;
     private boolean mInstallRequested;
+    private ConditionVariable mInstallCompleted = new ConditionVariable();
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
@@ -72,11 +75,17 @@
                     requestInstall();
                 });
 
+        if (getIntent().getBooleanExtra(EXTRA_AUTO_DOWNLOAD, false)) {
+            Log.i(TAG, "Auto downloading");
+            requestInstall();
+        }
+
         Intent intent = new Intent(this, InstallerService.class);
         mInstallerServiceConnection = new InstallerServiceConnection(this);
         if (!bindService(intent, mInstallerServiceConnection, Context.BIND_AUTO_CREATE)) {
             handleCriticalError(new Exception("Failed to connect to installer service"));
         }
+
     }
 
     @Override
@@ -89,6 +98,10 @@
         super.onDestroy();
     }
 
+    public boolean waitForInstallCompleted(long timeoutMillis) {
+        return mInstallCompleted.block(timeoutMillis);
+    }
+
     public void handleCriticalError(Exception e) {
         if (Build.isDebuggable()) {
             Toast.makeText(
@@ -102,6 +115,9 @@
     }
 
     private void finishWithResult(int resultCode) {
+        if (resultCode == RESULT_OK) {
+            mInstallCompleted.open();
+        }
         setResult(resultCode);
         finish();
     }