Fix the usb menu didn't switch to "File Transfer/Android Auto" right after connecting to the car unit.

- Before this CL, the usb receivers didn't check the extra information
  of the accessory. It causes the usb menu not to be aware that the
  usb port is switched to accessory mode.

  In this CL, the receivers will check whether the intent has an
  accessory extra. If the usb port is switched to accessory mode
  the usb menu will switch to "File Transfer/Android Auto".

Bug: 162451162
Test: make -j42 RunSettingsRoboTests
Change-Id: I0eca89a23670c674b74753fc526256cc1d52e759
Merged-In: I0eca89a23670c674b74753fc526256cc1d52e759
(cherry picked from commit af0a45bb7a)
This commit is contained in:
Hugh Chen
2020-09-14 15:55:57 +08:00
parent 4dd011b3c7
commit 91ed63124c
3 changed files with 21 additions and 1 deletions

View File

@@ -72,6 +72,9 @@ public class UsbConnectionBroadcastReceiver extends BroadcastReceiver implements
if (intent.getExtras().getBoolean(UsbManager.USB_FUNCTION_RNDIS)) {
functions |= UsbManager.FUNCTION_RNDIS;
}
if (intent.getExtras().getBoolean(UsbManager.USB_FUNCTION_ACCESSORY)) {
functions |= UsbManager.FUNCTION_ACCESSORY;
}
mFunctions = functions;
mDataRole = mUsbBackend.getDataRole();
mPowerRole = mUsbBackend.getPowerRole();

View File

@@ -100,7 +100,11 @@ public class UsbDetailsFunctionsController extends UsbDetailsController
pref = getProfilePreference(UsbBackend.usbFunctionsToString(option), title);
// Only show supported options
if (mUsbBackend.areFunctionsSupported(option)) {
pref.setChecked(functions == option);
if (functions == UsbManager.FUNCTION_ACCESSORY) {
pref.setChecked(UsbManager.FUNCTION_MTP == option);
} else {
pref.setChecked(functions == option);
}
} else {
mProfilesContainer.removePreference(pref);
}

View File

@@ -153,6 +153,19 @@ public class UsbDetailsFunctionsControllerTest {
assertThat(prefs.get(0).isChecked()).isTrue();
}
@Test
public void displayRefresh_accessoryEnabled_shouldCheckSwitches() {
when(mUsbBackend.areFunctionsSupported(anyLong())).thenReturn(true);
mDetailsFunctionsController.refresh(true, UsbManager.FUNCTION_ACCESSORY, POWER_ROLE_SINK,
DATA_ROLE_DEVICE);
List<RadioButtonPreference> prefs = getRadioPreferences();
assertThat(prefs.get(0).getKey())
.isEqualTo(UsbBackend.usbFunctionsToString(UsbManager.FUNCTION_MTP));
assertThat(prefs.get(0).isChecked()).isTrue();
}
@Test
public void onClickMtp_noneEnabled_shouldEnableMtp() {
when(mUsbBackend.areFunctionsSupported(anyLong())).thenReturn(true);