From e8dc7bc2831db9eae8aeba2fde68eea4eb20c097 Mon Sep 17 00:00:00 2001 From: Hugh Chen Date: Mon, 28 Sep 2020 14:58:34 +0800 Subject: [PATCH] Do nothing when choosing file transfer when in accessory mode - Before this CL, the device will be disconnected and reconnected to accessory mode when choosing "File transfer/Android Auto" in accessory mode. Because the USB menu didn't check state of function, it should do nothing when choosing "File transfer/Android Auto" in accessory mode. This CL add condition to check state of function, it will do nothing when choosing "File transfer/Android Auto" in accessory mode. Bug: 162451162 Test: make -j42 RunSettingsRoboTests Change-Id: I1749c6c43d2a192e4ce1bf1ae5343ff8deafbe48 Merged-In: I1749c6c43d2a192e4ce1bf1ae5343ff8deafbe48 (cherry picked from commit 3251a04ba3bb21bf5309bfd4431250ad567eca94) --- .../usb/UsbDetailsFunctionsController.java | 8 +++++++- .../usb/UsbDetailsFunctionsControllerTest.java | 12 ++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/connecteddevice/usb/UsbDetailsFunctionsController.java b/src/com/android/settings/connecteddevice/usb/UsbDetailsFunctionsController.java index ded1294c94c..b91bb794265 100644 --- a/src/com/android/settings/connecteddevice/usb/UsbDetailsFunctionsController.java +++ b/src/com/android/settings/connecteddevice/usb/UsbDetailsFunctionsController.java @@ -115,7 +115,8 @@ public class UsbDetailsFunctionsController extends UsbDetailsController public void onRadioButtonClicked(RadioButtonPreference preference) { final long function = UsbBackend.usbFunctionsFromString(preference.getKey()); final long previousFunction = mUsbBackend.getCurrentFunctions(); - if (function != previousFunction && !Utils.isMonkeyRunning()) { + if (function != previousFunction && !Utils.isMonkeyRunning() + && !shouldIgnoreClickEvent(function, previousFunction)) { mPreviousFunction = previousFunction; //Update the UI in advance to make it looks smooth @@ -138,6 +139,11 @@ public class UsbDetailsFunctionsController extends UsbDetailsController } } + private boolean shouldIgnoreClickEvent(long function, long previousFunction) { + return previousFunction == UsbManager.FUNCTION_ACCESSORY + && function == UsbManager.FUNCTION_MTP; + } + @Override public boolean isAvailable() { return !Utils.isMonkeyRunning(); diff --git a/tests/robotests/src/com/android/settings/connecteddevice/usb/UsbDetailsFunctionsControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/usb/UsbDetailsFunctionsControllerTest.java index 149df6ef33e..9e31ca13524 100644 --- a/tests/robotests/src/com/android/settings/connecteddevice/usb/UsbDetailsFunctionsControllerTest.java +++ b/tests/robotests/src/com/android/settings/connecteddevice/usb/UsbDetailsFunctionsControllerTest.java @@ -263,6 +263,18 @@ public class UsbDetailsFunctionsControllerTest { UsbManager.FUNCTION_MTP); } + @Test + public void onRadioButtonClicked_functionMtp_inAccessoryMode_doNothing() { + mRadioButtonPreference.setKey(UsbBackend.usbFunctionsToString(UsbManager.FUNCTION_MTP)); + doReturn(UsbManager.FUNCTION_ACCESSORY).when(mUsbBackend).getCurrentFunctions(); + + mDetailsFunctionsController.mPreviousFunction = UsbManager.FUNCTION_ACCESSORY; + mDetailsFunctionsController.onRadioButtonClicked(mRadioButtonPreference); + + assertThat(mDetailsFunctionsController.mPreviousFunction).isEqualTo( + UsbManager.FUNCTION_ACCESSORY); + } + @Test public void onRadioButtonClicked_clickSameButton_doNothing() { mRadioButtonPreference.setKey(UsbBackend.usbFunctionsToString(UsbManager.FUNCTION_PTP));