summaryrefslogtreecommitdiff
path: root/services/usb/java
diff options
context:
space:
mode:
authorPaul McLean <pmclean@google.com>2019-09-23 08:28:41 -0600
committerPaul McLean <pmclean@google.com>2019-10-03 11:54:05 -0600
commitd33645321723b04823ba03c4ce1d10b0ef56e6a5 (patch)
tree16160bef3a1f823fc27ccc423b7f39bd75001c03 /services/usb/java
parent4252183449824d77f5c4035e8c12bf504619a5b1 (diff)
Adding additional prompt to UsbPermissionsDialg for audio devices.
To support, adding members to UsbDevice to mark devices as having audio playback and audio capture capabilities. Bug: 136080195 Test: Run "UsbAccess" test bed. Connect audio and non-audio USB devices and see the additional prompt shown/not-shown. Change-Id: Ie7c614d9ed30a163c350b18a54b8a9115698779d
Diffstat (limited to 'services/usb/java')
-rw-r--r--services/usb/java/com/android/server/usb/UsbHostManager.java2
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/UsbDescriptorParser.java39
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/UsbDeviceDescriptor.java7
3 files changed, 39 insertions, 9 deletions
diff --git a/services/usb/java/com/android/server/usb/UsbHostManager.java b/services/usb/java/com/android/server/usb/UsbHostManager.java
index e899dff5e5a2..047fcecd5a5b 100644
--- a/services/usb/java/com/android/server/usb/UsbHostManager.java
+++ b/services/usb/java/com/android/server/usb/UsbHostManager.java
@@ -386,7 +386,7 @@ public class UsbHostManager {
return false;
}
- UsbDevice.Builder newDeviceBuilder = parser.toAndroidUsbDevice();
+ UsbDevice.Builder newDeviceBuilder = parser.toAndroidUsbDeviceBuilder();
if (newDeviceBuilder == null) {
Slog.e(TAG, "Couldn't create UsbDevice object.");
// Tracking
diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbDescriptorParser.java b/services/usb/java/com/android/server/usb/descriptors/UsbDescriptorParser.java
index 6ffbd43a7b1a..8e7babb40fc0 100644
--- a/services/usb/java/com/android/server/usb/descriptors/UsbDescriptorParser.java
+++ b/services/usb/java/com/android/server/usb/descriptors/UsbDescriptorParser.java
@@ -309,17 +309,17 @@ public final class UsbDescriptorParser {
/**
* @hide
*/
- public UsbDevice.Builder toAndroidUsbDevice() {
+ public UsbDevice.Builder toAndroidUsbDeviceBuilder() {
if (mDeviceDescriptor == null) {
Log.e(TAG, "toAndroidUsbDevice() ERROR - No Device Descriptor");
return null;
}
- UsbDevice.Builder device = mDeviceDescriptor.toAndroid(this);
- if (device == null) {
+ UsbDevice.Builder builder = mDeviceDescriptor.toAndroid(this);
+ if (builder == null) {
Log.e(TAG, "toAndroidUsbDevice() ERROR Creating Device");
}
- return device;
+ return builder;
}
/**
@@ -524,6 +524,37 @@ public final class UsbDescriptorParser {
/**
* @hide
*/
+ public boolean hasAudioTerminal(int subType) {
+ for (UsbDescriptor descriptor : mDescriptors) {
+ if (descriptor instanceof UsbACInterface) {
+ if (((UsbACInterface) descriptor).getSubclass()
+ == UsbDescriptor.AUDIO_AUDIOCONTROL
+ && ((UsbACInterface) descriptor).getSubtype()
+ == subType) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ /**
+ * @hide
+ */
+ public boolean hasAudioPlayback() {
+ return hasAudioTerminal(UsbACInterface.ACI_OUTPUT_TERMINAL);
+ }
+
+ /**
+ * @hide
+ */
+ public boolean hasAudioCapture() {
+ return hasAudioTerminal(UsbACInterface.ACI_INPUT_TERMINAL);
+ }
+
+ /**
+ * @hide
+ */
public boolean hasHIDInterface() {
ArrayList<UsbDescriptor> descriptors =
getInterfaceDescriptorsForClass(UsbDescriptor.CLASSID_HID);
diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbDeviceDescriptor.java b/services/usb/java/com/android/server/usb/descriptors/UsbDeviceDescriptor.java
index e6e10fef9f9a..9735502a4f69 100644
--- a/services/usb/java/com/android/server/usb/descriptors/UsbDeviceDescriptor.java
+++ b/services/usb/java/com/android/server/usb/descriptors/UsbDeviceDescriptor.java
@@ -156,11 +156,10 @@ public final class UsbDeviceDescriptor extends UsbDescriptor {
for (int index = 0; index < mConfigDescriptors.size(); index++) {
configs[index] = mConfigDescriptors.get(index).toAndroid(parser);
}
- UsbDevice.Builder device = new UsbDevice.Builder(parser.getDeviceAddr(), mVendorID,
- mProductID, mDevClass, mDevSubClass, mProtocol, mfgName, prodName, versionString,
- configs, serialStr);
- return device;
+ return new UsbDevice.Builder(parser.getDeviceAddr(), mVendorID,
+ mProductID, mDevClass, mDevSubClass, mProtocol, mfgName, prodName, versionString,
+ configs, serialStr, parser.hasAudioPlayback(), parser.hasAudioCapture());
}
@Override