From aadc44ae263d75e28be82857035d5f5151ed511b Mon Sep 17 00:00:00 2001 From: Hugh Chen Date: Mon, 18 Apr 2022 08:50:02 +0000 Subject: [PATCH] Fix default usb settings will set wrong function when onPause() Bug: 229200265 Test: make -j64 RunSettingsRoboTests Change-Id: Ibee2d39af8b341d03117d96029446ddcd45921fe --- .../usb/UsbConnectionBroadcastReceiver.java | 7 +++++++ .../settings/connecteddevice/usb/UsbDefaultFragment.java | 2 ++ .../connecteddevice/usb/UsbDefaultFragmentTest.java | 5 +++++ 3 files changed, 14 insertions(+) diff --git a/src/com/android/settings/connecteddevice/usb/UsbConnectionBroadcastReceiver.java b/src/com/android/settings/connecteddevice/usb/UsbConnectionBroadcastReceiver.java index c5bcbed00cb..c73c957b93b 100644 --- a/src/com/android/settings/connecteddevice/usb/UsbConnectionBroadcastReceiver.java +++ b/src/com/android/settings/connecteddevice/usb/UsbConnectionBroadcastReceiver.java @@ -21,6 +21,7 @@ import android.content.Intent; import android.content.IntentFilter; import android.hardware.usb.UsbManager; import android.hardware.usb.UsbPortStatus; +import android.util.Log; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnPause; @@ -31,6 +32,9 @@ import com.android.settingslib.core.lifecycle.events.OnResume; */ public class UsbConnectionBroadcastReceiver extends BroadcastReceiver implements LifecycleObserver, OnResume, OnPause { + private static final String TAG = "UsbBroadcastReceiver"; + private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); + private Context mContext; private UsbConnectionListener mUsbConnectionListener; private boolean mListeningToUsbEvents; @@ -54,6 +58,9 @@ public class UsbConnectionBroadcastReceiver extends BroadcastReceiver implements @Override public void onReceive(Context context, Intent intent) { + if (DEBUG) { + Log.d(TAG, "onReceive() action : " + intent.getAction()); + } if (UsbManager.ACTION_USB_STATE.equals(intent.getAction())) { mConnected = intent.getExtras().getBoolean(UsbManager.USB_CONNECTED) || intent.getExtras().getBoolean(UsbManager.USB_HOST_CONNECTED); diff --git a/src/com/android/settings/connecteddevice/usb/UsbDefaultFragment.java b/src/com/android/settings/connecteddevice/usb/UsbDefaultFragment.java index ea1ccc0935a..d58e97b3cee 100644 --- a/src/com/android/settings/connecteddevice/usb/UsbDefaultFragment.java +++ b/src/com/android/settings/connecteddevice/usb/UsbDefaultFragment.java @@ -189,6 +189,8 @@ public class UsbDefaultFragment extends RadioButtonPickerFragment { @Override public void onPause() { super.onPause(); + mCurrentFunctions = mUsbBackend.getCurrentFunctions(); + Log.d(TAG, "onPause() : current functions : " + mCurrentFunctions); mUsbBackend.setDefaultUsbFunctions(mCurrentFunctions); } diff --git a/tests/robotests/src/com/android/settings/connecteddevice/usb/UsbDefaultFragmentTest.java b/tests/robotests/src/com/android/settings/connecteddevice/usb/UsbDefaultFragmentTest.java index 2317c97513b..9afc6778c92 100644 --- a/tests/robotests/src/com/android/settings/connecteddevice/usb/UsbDefaultFragmentTest.java +++ b/tests/robotests/src/com/android/settings/connecteddevice/usb/UsbDefaultFragmentTest.java @@ -205,6 +205,7 @@ public class UsbDefaultFragmentTest { mFragment.mIsStartTethering = true; mFragment.mUsbConnectionListener.onUsbConnectionChanged(true /* connected */, UsbManager.FUNCTION_RNDIS, POWER_ROLE_SINK, DATA_ROLE_DEVICE); + when(mUsbBackend.getCurrentFunctions()).thenReturn(UsbManager.FUNCTION_RNDIS); mFragment.onPause(); @@ -229,6 +230,7 @@ public class UsbDefaultFragmentTest { mFragment.mIsStartTethering = true; mFragment.mUsbConnectionListener.onUsbConnectionChanged(true /* connected */, UsbManager.FUNCTION_MTP, POWER_ROLE_SINK, DATA_ROLE_DEVICE); + when(mUsbBackend.getCurrentFunctions()).thenReturn(UsbManager.FUNCTION_MTP); mFragment.onPause(); @@ -241,6 +243,7 @@ public class UsbDefaultFragmentTest { mFragment.mIsStartTethering = true; mFragment.mUsbConnectionListener.onUsbConnectionChanged(true /* connected */, UsbManager.FUNCTION_PTP, POWER_ROLE_SINK, DATA_ROLE_DEVICE); + when(mUsbBackend.getCurrentFunctions()).thenReturn(UsbManager.FUNCTION_PTP); mFragment.onPause(); @@ -253,6 +256,7 @@ public class UsbDefaultFragmentTest { mFragment.mIsStartTethering = true; mFragment.mUsbConnectionListener.onUsbConnectionChanged(true /* connected */, UsbManager.FUNCTION_MIDI, POWER_ROLE_SINK, DATA_ROLE_DEVICE); + when(mUsbBackend.getCurrentFunctions()).thenReturn(UsbManager.FUNCTION_MIDI); mFragment.onPause(); @@ -265,6 +269,7 @@ public class UsbDefaultFragmentTest { mFragment.mIsStartTethering = true; mFragment.mUsbConnectionListener.onUsbConnectionChanged(/* connected */ true, UsbManager.FUNCTION_NCM, POWER_ROLE_SINK, DATA_ROLE_DEVICE); + when(mUsbBackend.getCurrentFunctions()).thenReturn(UsbManager.FUNCTION_NCM); mFragment.onPause();