Increase timeout for Terminal on nested virt

Bug: 381779366
Bug: 383966272
Bug: 384658289
Test: watch TH
Change-Id: I419d16a81079e9260b8df50b2295adf5d81e0576
diff --git a/android/TerminalApp/Android.bp b/android/TerminalApp/Android.bp
index 4bb9703..59f18df 100644
--- a/android/TerminalApp/Android.bp
+++ b/android/TerminalApp/Android.bp
@@ -18,6 +18,7 @@
         "debian-service-grpclib-lite",
         "gson",
         "VmTerminalApp.aidl-java",
+        "MicrodroidTestHelper", // for DeviceProperties class
     ],
     jni_libs: [
         "libforwarder_host_jni",
diff --git a/android/TerminalApp/java/com/android/virtualization/terminal/MainActivity.java b/android/TerminalApp/java/com/android/virtualization/terminal/MainActivity.java
index 316c8c4..016af83 100644
--- a/android/TerminalApp/java/com/android/virtualization/terminal/MainActivity.java
+++ b/android/TerminalApp/java/com/android/virtualization/terminal/MainActivity.java
@@ -33,6 +33,7 @@
 import android.os.ConditionVariable;
 import android.os.Environment;
 import android.os.SystemClock;
+import android.os.SystemProperties;
 import android.provider.Settings;
 import android.util.Log;
 import android.view.KeyEvent;
@@ -56,6 +57,7 @@
 import androidx.annotation.NonNull;
 
 import com.android.internal.annotations.VisibleForTesting;
+import com.android.microdroid.test.common.DeviceProperties;
 
 import com.google.android.material.appbar.MaterialToolbar;
 
@@ -77,10 +79,19 @@
     static final String KEY_DISK_SIZE = "disk_size";
     private static final String VM_ADDR = "192.168.0.2";
     private static final int TTYD_PORT = 7681;
-    private static final int TERMINAL_CONNECTION_TIMEOUT_MS = 20_000;
+    private static final int TERMINAL_CONNECTION_TIMEOUT_MS;
     private static final int REQUEST_CODE_INSTALLER = 0x33;
     private static final int FONT_SIZE_DEFAULT = 13;
 
+    static {
+        DeviceProperties prop = DeviceProperties.create(SystemProperties::get);
+        if (prop.isCuttlefish() || prop.isGoldfish()) {
+            TERMINAL_CONNECTION_TIMEOUT_MS = 180_000; // 3 minutes
+        } else {
+            TERMINAL_CONNECTION_TIMEOUT_MS = 20_000; // 20 sec
+        }
+    }
+
     private ExecutorService mExecutorService;
     private InstalledImage mImage;
     private X509Certificate[] mCertificates;