Enable screenReaderMode in xtermjs if isTouchExplorationEnabled is true
Bug: 370371135
Test: enable talkback
Change-Id: Ie852445dff7ed24f14e16b94bbc602750a2752f6
diff --git a/android/TerminalApp/java/com/android/virtualization/terminal/MainActivity.java b/android/TerminalApp/java/com/android/virtualization/terminal/MainActivity.java
index 0e2a7d1..83aed67 100644
--- a/android/TerminalApp/java/com/android/virtualization/terminal/MainActivity.java
+++ b/android/TerminalApp/java/com/android/virtualization/terminal/MainActivity.java
@@ -22,6 +22,7 @@
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
+import android.view.accessibility.AccessibilityManager;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
@@ -34,8 +35,9 @@
import com.google.android.material.appbar.MaterialToolbar;
-public class MainActivity extends AppCompatActivity implements
- VmLauncherServices.VmLauncherServiceCallback {
+public class MainActivity extends AppCompatActivity
+ implements VmLauncherServices.VmLauncherServiceCallback,
+ AccessibilityManager.TouchExplorationStateChangeListener {
private static final String TAG = "VmTerminalApp";
private String mVmIpAddr;
private WebView mWebView;
@@ -63,15 +65,31 @@
return true;
}
});
+
+ getSystemService(AccessibilityManager.class).addTouchExplorationStateChangeListener(this);
}
@Override
protected void onDestroy() {
+ getSystemService(AccessibilityManager.class).removeTouchExplorationStateChangeListener(this);
VmLauncherServices.stopVmLauncherService(this);
super.onDestroy();
}
- private void gotoURL(String url) {
+ private void gotoTerminalURL() {
+ if (mVmIpAddr == null) {
+ Log.d(TAG, "ip addr is not set yet");
+ return;
+ }
+
+ boolean isTouchExplorationEnabled =
+ getSystemService(AccessibilityManager.class).isTouchExplorationEnabled();
+
+ String url =
+ "http://"
+ + mVmIpAddr
+ + ":7681/"
+ + (isTouchExplorationEnabled ? "?screenReaderMode=true" : "");
runOnUiThread(() -> mWebView.loadUrl(url));
}
@@ -94,7 +112,7 @@
public void onIpAddrAvailable(String ipAddr) {
mVmIpAddr = ipAddr;
((TextView) findViewById(R.id.ip_addr_textview)).setText(mVmIpAddr);
- gotoURL("http://" + mVmIpAddr + ":7681");
+ gotoTerminalURL();
}
@Override
@@ -122,4 +140,9 @@
}
return super.onOptionsItemSelected(item);
}
+
+ @Override
+ public void onTouchExplorationStateChanged(boolean enabled) {
+ gotoTerminalURL();
+ }
}