From 9546b7fdcb15d1efed964d60e30bc0a18417bacd Mon Sep 17 00:00:00 2001 From: hughchen Date: Wed, 6 May 2020 16:02:35 +0800 Subject: [PATCH] Stop usb tethering when user cancel it - Call stop tethering to clear entitlement result when user do not want using USB tethering on USB menu. - Add test case Bug: 154933817 Test: make -j42 RunSettingsRoboTests Change-Id: Idaaba8df2052f45e710c7959251817e8947a544f --- .../usb/UsbDetailsFunctionsController.java | 6 +++ .../UsbDetailsFunctionsControllerTest.java | 38 +++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/src/com/android/settings/connecteddevice/usb/UsbDetailsFunctionsController.java b/src/com/android/settings/connecteddevice/usb/UsbDetailsFunctionsController.java index 31bca1241ec..07893033925 100644 --- a/src/com/android/settings/connecteddevice/usb/UsbDetailsFunctionsController.java +++ b/src/com/android/settings/connecteddevice/usb/UsbDetailsFunctionsController.java @@ -89,6 +89,9 @@ public class UsbDetailsFunctionsController extends UsbDetailsController @Override protected void refresh(boolean connected, long functions, int powerRole, int dataRole) { if (!connected || dataRole != DATA_ROLE_DEVICE) { + if (mPreviousFunction == UsbManager.FUNCTION_RNDIS) { + mConnectivityManager.stopTethering(TETHERING_USB); + } mProfilesContainer.setEnabled(false); } else { // Functions are only available in device mode @@ -129,6 +132,9 @@ public class UsbDetailsFunctionsController extends UsbDetailsController mConnectivityManager.startTethering(TETHERING_USB, true /* showProvisioningUi */, mOnStartTetheringCallback); } else { + if (mPreviousFunction == UsbManager.FUNCTION_RNDIS) { + mConnectivityManager.stopTethering(TETHERING_USB); + } mUsbBackend.setCurrentFunctions(function); } } 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 3a6eec0fd89..f1c472866e3 100644 --- a/tests/robotests/src/com/android/settings/connecteddevice/usb/UsbDetailsFunctionsControllerTest.java +++ b/tests/robotests/src/com/android/settings/connecteddevice/usb/UsbDetailsFunctionsControllerTest.java @@ -270,4 +270,42 @@ public class UsbDetailsFunctionsControllerTest { verify(mUsbBackend).setCurrentFunctions(UsbManager.FUNCTION_PTP); } + + @Test + public void refresh_previousFunctionIsRndis_stopTethering() { + mDetailsFunctionsController.mPreviousFunction = UsbManager.FUNCTION_RNDIS; + + mDetailsFunctionsController.refresh(false, 0, 0, 0); + + verify(mConnectivityManager).stopTethering(TETHERING_USB); + } + + @Test + public void refresh_previousFunctionIsNotRndis_doNothing() { + mDetailsFunctionsController.mPreviousFunction = UsbManager.FUNCTION_MIDI; + + mDetailsFunctionsController.refresh(false, 0, 0, 0); + + verify(mConnectivityManager, never()).stopTethering(TETHERING_USB); + } + + @Test + public void onRadioButtonClicked_previousFunctionIsRndis_stopTethering() { + mRadioButtonPreference.setKey(UsbBackend.usbFunctionsToString(UsbManager.FUNCTION_PTP)); + doReturn(UsbManager.FUNCTION_RNDIS).when(mUsbBackend).getCurrentFunctions(); + + mDetailsFunctionsController.onRadioButtonClicked(mRadioButtonPreference); + + verify(mConnectivityManager).stopTethering(TETHERING_USB); + } + + @Test + public void onRadioButtonClicked_previousFunctionIsNotRndis_doNothing() { + mRadioButtonPreference.setKey(UsbBackend.usbFunctionsToString(UsbManager.FUNCTION_PTP)); + doReturn(UsbManager.FUNCTION_MIDI).when(mUsbBackend).getCurrentFunctions(); + + mDetailsFunctionsController.onRadioButtonClicked(mRadioButtonPreference); + + verify(mConnectivityManager, never()).stopTethering(TETHERING_USB); + } }