Merge "Import translations. DO NOT MERGE ANYWHERE" into main
diff --git a/android/TerminalApp/java/com/android/virtualization/terminal/InstallerService.java b/android/TerminalApp/java/com/android/virtualization/terminal/InstallerService.java
index 82df5c5..2ce0cdc 100644
--- a/android/TerminalApp/java/com/android/virtualization/terminal/InstallerService.java
+++ b/android/TerminalApp/java/com/android/virtualization/terminal/InstallerService.java
@@ -57,11 +57,10 @@
private static final String NOTIFICATION_CHANNEL_ID = "installer";
private static final int NOTIFICATION_ID = 1313; // any unique number among notifications
- // TODO(b/369740847): Replace this URL with dl.google.com
private static final String IMAGE_URL =
Arrays.asList(Build.SUPPORTED_ABIS).contains("x86_64")
- ? "https://github.com/ikicha/debian_ci/releases/download/release_x86_64/images.tar.gz"
- : "https://github.com/ikicha/debian_ci/releases/download/release_aarch64/images.tar.gz";
+ ? "https://dl.google.com/android/ferrochrome/latest/x86_64/images.tar.gz"
+ : "https://dl.google.com/android/ferrochrome/latest/aarch64/images.tar.gz";
private static final String SELINUX_FILE_CONTEXT =
"u:object_r:virtualizationservice_data_file:";
diff --git a/android/forwarder_host/src/forwarder_host.rs b/android/forwarder_host/src/forwarder_host.rs
index 78f3555..26bae89 100644
--- a/android/forwarder_host/src/forwarder_host.rs
+++ b/android/forwarder_host/src/forwarder_host.rs
@@ -24,7 +24,7 @@
use std::net::{Ipv4Addr, Ipv6Addr, TcpListener};
use std::os::unix::io::AsRawFd;
use std::result;
-use std::sync::{Arc, Mutex};
+use std::sync::{Arc, LazyLock, Mutex};
use std::time::Duration;
use forwarder::forwarder::ForwarderSession;
@@ -42,6 +42,9 @@
const VMADDR_PORT_ANY: u32 = u32::MAX;
+static SHUTDOWN_EVT: LazyLock<EventFd> =
+ LazyLock::new(|| EventFd::new().expect("Could not create shutdown eventfd"));
+
#[remain::sorted]
#[derive(Debug)]
enum Error {
@@ -111,6 +114,7 @@
/// Implements PollToken for chunneld's main poll loop.
#[derive(Clone, Copy, PollToken)]
enum Token {
+ Shutdown,
UpdatePorts,
Ipv4Listener(u16),
Ipv6Listener(u16),
@@ -290,12 +294,16 @@
fn run(&mut self) -> Result<()> {
let poll_ctx: PollContext<Token> = PollContext::new().map_err(Error::PollContextNew)?;
poll_ctx.add(&self.update_evt, Token::UpdatePorts).map_err(Error::PollContextAdd)?;
+ poll_ctx.add(&*SHUTDOWN_EVT, Token::Shutdown).map_err(Error::PollContextAdd)?;
loop {
let events = poll_ctx.wait().map_err(Error::PollWait)?;
for event in events.iter_readable() {
match event.token() {
+ Token::Shutdown => {
+ return Ok(());
+ }
Token::UpdatePorts => {
if let Err(e) = self.process_update_queue(&poll_ctx) {
error!("error updating listening ports: {}", e);
@@ -425,3 +433,12 @@
}
}
}
+
+/// JNI function for terminating forwarder_host.
+#[no_mangle]
+pub extern "C" fn Java_com_android_virtualization_vmlauncher_DebianServiceImpl_terminateForwarderHost(
+ _env: JNIEnv,
+ _class: JObject,
+) {
+ SHUTDOWN_EVT.write(1).expect("Failed to write shutdown event FD");
+}
diff --git a/libs/vm_launcher_lib/java/com/android/virtualization/vmlauncher/DebianServiceImpl.java b/libs/vm_launcher_lib/java/com/android/virtualization/vmlauncher/DebianServiceImpl.java
index dcc8152..61679f2 100644
--- a/libs/vm_launcher_lib/java/com/android/virtualization/vmlauncher/DebianServiceImpl.java
+++ b/libs/vm_launcher_lib/java/com/android/virtualization/vmlauncher/DebianServiceImpl.java
@@ -28,7 +28,7 @@
import io.grpc.stub.StreamObserver;
-class DebianServiceImpl extends DebianServiceGrpc.DebianServiceImplBase {
+final class DebianServiceImpl extends DebianServiceGrpc.DebianServiceImplBase {
public static final String TAG = "DebianService";
private final DebianServiceCallback mCallback;
@@ -79,6 +79,8 @@
private static native void runForwarderHost(int cid, ForwarderHostCallback callback);
+ public static native void terminateForwarderHost();
+
protected interface DebianServiceCallback {
void onIpAddressAvailable(String ipAddr);
}
diff --git a/libs/vm_launcher_lib/java/com/android/virtualization/vmlauncher/VmLauncherService.java b/libs/vm_launcher_lib/java/com/android/virtualization/vmlauncher/VmLauncherService.java
index b9ad4fb..2bd85e1 100644
--- a/libs/vm_launcher_lib/java/com/android/virtualization/vmlauncher/VmLauncherService.java
+++ b/libs/vm_launcher_lib/java/com/android/virtualization/vmlauncher/VmLauncherService.java
@@ -200,6 +200,7 @@
private void stopDebianServer() {
if (mServer != null) {
+ DebianServiceImpl.terminateForwarderHost();
mServer.shutdown();
}
}
diff --git a/tests/Terminal/TerminalAppTests-downloader.sh b/tests/Terminal/TerminalAppTests-downloader.sh
index 015caad..37be591 100644
--- a/tests/Terminal/TerminalAppTests-downloader.sh
+++ b/tests/Terminal/TerminalAppTests-downloader.sh
@@ -22,9 +22,9 @@
# Identify file to download
arch=$(adb -s ${serial} shell getprop ro.bionic.arch)
if [ ${arch} == "arm64" ]; then
- src=https://github.com/ikicha/debian_ci/releases/download/release_aarch64/images.tar.gz
+ src=https://dl.google.com/android/ferrochrome/latest/aarch64/images.tar.gz
else
- src=https://github.com/ikicha/debian_ci/releases/download/release_x86_64/images.tar.gz
+ src=https://dl.google.com/android/ferrochrome/latest/x86_64/images.tar.gz
fi
# Download