From 8b1107d24eba0a55fa9e89094e4307cac4fdd74c Mon Sep 17 00:00:00 2001 From: Robin Lee Date: Fri, 24 Jul 2020 02:06:11 +0200 Subject: [PATCH] Keyboard navigation for CompanionDeviceTestActivity Problem: 1) Open CTS Verifier > Companion Device Test > Go 2) Click some items 3) Find that they can't open and so the test is failed. Root cause: - Pressing the view triggers the OnItemClickListener instead of the OnClickListener because the container is an AdapterView and that is how AdapterView handles keyboard input. Solution: - Add a ListView setOnItemClickListener function to handle the keyboard actions. Remove the original touch listener because this is not needed any more. Test: make dist Test: manual (go through CTS Verifier) Bug: 161863859 Test: manualTests#com.android.cts.verifier.companion.CompanionDeviceTestActivity Change-Id: Idf8867afae35f243c44ee726e444febb3209d357 --- .../companiondevicemanager/DeviceChooserActivity.java | 11 ++++++++++- .../DeviceDiscoveryService.java | 4 ---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/DeviceChooserActivity.java b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/DeviceChooserActivity.java index 16ef59f201f17..02f4457bffdb9 100644 --- a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/DeviceChooserActivity.java +++ b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/DeviceChooserActivity.java @@ -29,6 +29,7 @@ import android.text.Html; import android.util.Log; import android.view.Gravity; import android.view.View; +import android.widget.AdapterView; import android.widget.ListView; import android.widget.ProgressBar; import android.widget.TextView; @@ -75,6 +76,14 @@ public class DeviceChooserActivity extends Activity { mDeviceListView = findViewById(R.id.device_list); final DeviceDiscoveryService.DevicesAdapter adapter = getService().mDevicesAdapter; mDeviceListView.setAdapter(adapter); + mDeviceListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int pos, long l) { + getService().mSelectedDevice = + (DeviceFilterPair) adapterView.getItemAtPosition(pos); + adapter.notifyDataSetChanged(); + } + }); adapter.registerDataSetObserver(new DataSetObserver() { @Override public void onChanged() { @@ -157,4 +166,4 @@ public class DeviceChooserActivity extends Activity { new Intent().putExtra(CompanionDeviceManager.EXTRA_DEVICE, selectedDevice.device)); finish(); } -} \ No newline at end of file +} diff --git a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/DeviceDiscoveryService.java b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/DeviceDiscoveryService.java index 7aa997e393075..bcaee367b03cb 100644 --- a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/DeviceDiscoveryService.java +++ b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/DeviceDiscoveryService.java @@ -349,10 +349,6 @@ public class DeviceDiscoveryService extends Service { ? WIFI_ICON : BLUETOOTH_ICON, null, null, null); - textView.setOnClickListener((view) -> { - mSelectedDevice = device; - notifyDataSetChanged(); - }); } //TODO move to a layout file