Merge "Fix default usb settings will set wrong function when onPause()" into tm-dev

This commit is contained in:
Hugh Chen
2022-04-19 01:56:59 +00:00
committed by Android (Google) Code Review
3 changed files with 14 additions and 0 deletions

View File

@@ -21,6 +21,7 @@ import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.hardware.usb.UsbManager; import android.hardware.usb.UsbManager;
import android.hardware.usb.UsbPortStatus; import android.hardware.usb.UsbPortStatus;
import android.util.Log;
import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnPause; 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, public class UsbConnectionBroadcastReceiver extends BroadcastReceiver implements LifecycleObserver,
OnResume, OnPause { OnResume, OnPause {
private static final String TAG = "UsbBroadcastReceiver";
private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
private Context mContext; private Context mContext;
private UsbConnectionListener mUsbConnectionListener; private UsbConnectionListener mUsbConnectionListener;
private boolean mListeningToUsbEvents; private boolean mListeningToUsbEvents;
@@ -54,6 +58,9 @@ public class UsbConnectionBroadcastReceiver extends BroadcastReceiver implements
@Override @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
if (DEBUG) {
Log.d(TAG, "onReceive() action : " + intent.getAction());
}
if (UsbManager.ACTION_USB_STATE.equals(intent.getAction())) { if (UsbManager.ACTION_USB_STATE.equals(intent.getAction())) {
mConnected = intent.getExtras().getBoolean(UsbManager.USB_CONNECTED) mConnected = intent.getExtras().getBoolean(UsbManager.USB_CONNECTED)
|| intent.getExtras().getBoolean(UsbManager.USB_HOST_CONNECTED); || intent.getExtras().getBoolean(UsbManager.USB_HOST_CONNECTED);

View File

@@ -189,6 +189,8 @@ public class UsbDefaultFragment extends RadioButtonPickerFragment {
@Override @Override
public void onPause() { public void onPause() {
super.onPause(); super.onPause();
mCurrentFunctions = mUsbBackend.getCurrentFunctions();
Log.d(TAG, "onPause() : current functions : " + mCurrentFunctions);
mUsbBackend.setDefaultUsbFunctions(mCurrentFunctions); mUsbBackend.setDefaultUsbFunctions(mCurrentFunctions);
} }

View File

@@ -205,6 +205,7 @@ public class UsbDefaultFragmentTest {
mFragment.mIsStartTethering = true; mFragment.mIsStartTethering = true;
mFragment.mUsbConnectionListener.onUsbConnectionChanged(true /* connected */, mFragment.mUsbConnectionListener.onUsbConnectionChanged(true /* connected */,
UsbManager.FUNCTION_RNDIS, POWER_ROLE_SINK, DATA_ROLE_DEVICE); UsbManager.FUNCTION_RNDIS, POWER_ROLE_SINK, DATA_ROLE_DEVICE);
when(mUsbBackend.getCurrentFunctions()).thenReturn(UsbManager.FUNCTION_RNDIS);
mFragment.onPause(); mFragment.onPause();
@@ -229,6 +230,7 @@ public class UsbDefaultFragmentTest {
mFragment.mIsStartTethering = true; mFragment.mIsStartTethering = true;
mFragment.mUsbConnectionListener.onUsbConnectionChanged(true /* connected */, mFragment.mUsbConnectionListener.onUsbConnectionChanged(true /* connected */,
UsbManager.FUNCTION_MTP, POWER_ROLE_SINK, DATA_ROLE_DEVICE); UsbManager.FUNCTION_MTP, POWER_ROLE_SINK, DATA_ROLE_DEVICE);
when(mUsbBackend.getCurrentFunctions()).thenReturn(UsbManager.FUNCTION_MTP);
mFragment.onPause(); mFragment.onPause();
@@ -241,6 +243,7 @@ public class UsbDefaultFragmentTest {
mFragment.mIsStartTethering = true; mFragment.mIsStartTethering = true;
mFragment.mUsbConnectionListener.onUsbConnectionChanged(true /* connected */, mFragment.mUsbConnectionListener.onUsbConnectionChanged(true /* connected */,
UsbManager.FUNCTION_PTP, POWER_ROLE_SINK, DATA_ROLE_DEVICE); UsbManager.FUNCTION_PTP, POWER_ROLE_SINK, DATA_ROLE_DEVICE);
when(mUsbBackend.getCurrentFunctions()).thenReturn(UsbManager.FUNCTION_PTP);
mFragment.onPause(); mFragment.onPause();
@@ -253,6 +256,7 @@ public class UsbDefaultFragmentTest {
mFragment.mIsStartTethering = true; mFragment.mIsStartTethering = true;
mFragment.mUsbConnectionListener.onUsbConnectionChanged(true /* connected */, mFragment.mUsbConnectionListener.onUsbConnectionChanged(true /* connected */,
UsbManager.FUNCTION_MIDI, POWER_ROLE_SINK, DATA_ROLE_DEVICE); UsbManager.FUNCTION_MIDI, POWER_ROLE_SINK, DATA_ROLE_DEVICE);
when(mUsbBackend.getCurrentFunctions()).thenReturn(UsbManager.FUNCTION_MIDI);
mFragment.onPause(); mFragment.onPause();
@@ -265,6 +269,7 @@ public class UsbDefaultFragmentTest {
mFragment.mIsStartTethering = true; mFragment.mIsStartTethering = true;
mFragment.mUsbConnectionListener.onUsbConnectionChanged(/* connected */ true, mFragment.mUsbConnectionListener.onUsbConnectionChanged(/* connected */ true,
UsbManager.FUNCTION_NCM, POWER_ROLE_SINK, DATA_ROLE_DEVICE); UsbManager.FUNCTION_NCM, POWER_ROLE_SINK, DATA_ROLE_DEVICE);
when(mUsbBackend.getCurrentFunctions()).thenReturn(UsbManager.FUNCTION_NCM);
mFragment.onPause(); mFragment.onPause();