Merge "More fine-grained exception handling so we can still use non-excepting descriptors." into oc-dr1-dev

am: 84a60bf9e8

Change-Id: Ica095cfa4d341916fdb3ab1f9948c693c9471733
This commit is contained in:
Paul McLean
2017-07-13 18:00:55 +00:00
committed by android-build-merger

View File

@@ -118,8 +118,7 @@ public class UsbDescriptorParser {
/** /**
* @hide * @hide
*/ */
public boolean parseDescriptors(byte[] descriptors) { public void parseDescriptors(byte[] descriptors) {
try {
mDescriptors.clear(); mDescriptors.clear();
ByteStream stream = new ByteStream(descriptors); ByteStream stream = new ByteStream(descriptors);
@@ -127,18 +126,20 @@ public class UsbDescriptorParser {
UsbDescriptor descriptor = allocDescriptor(stream); UsbDescriptor descriptor = allocDescriptor(stream);
if (descriptor != null) { if (descriptor != null) {
// Parse // Parse
try {
descriptor.parseRawDescriptors(stream); descriptor.parseRawDescriptors(stream);
} catch (Exception ex) {
Log.e(TAG, "Exception parsing USB descriptors.", ex);
}
// Its OK to add the invalid descriptor as the postParse()
// routine will mark it as invalid.
mDescriptors.add(descriptor); mDescriptors.add(descriptor);
// Clean up // Clean up
descriptor.postParse(stream); descriptor.postParse(stream);
} }
} }
return true;
} catch (Exception ex) {
Log.e(TAG, "Exception parsing USB descriptors.", ex);
}
return false;
} }
/** /**
@@ -146,7 +147,11 @@ public class UsbDescriptorParser {
*/ */
public boolean parseDevice(String deviceAddr) { public boolean parseDevice(String deviceAddr) {
byte[] rawDescriptors = getRawDescriptors(deviceAddr); byte[] rawDescriptors = getRawDescriptors(deviceAddr);
return rawDescriptors != null && parseDescriptors(rawDescriptors); if (rawDescriptors != null) {
parseDescriptors(rawDescriptors);
return true;
}
return false;
} }
private native byte[] getRawDescriptors(String deviceAddr); private native byte[] getRawDescriptors(String deviceAddr);