Loading packages/SettingsLib/src/com/android/settingslib/Utils.java +32 −0 Original line number Diff line number Diff line Loading @@ -23,6 +23,9 @@ import android.graphics.ColorFilter; import android.graphics.ColorMatrix; import android.graphics.ColorMatrixColorFilter; import android.graphics.drawable.Drawable; import android.hardware.usb.UsbManager; import android.hardware.usb.UsbPort; import android.hardware.usb.UsbPortStatus; import android.location.LocationManager; import android.media.AudioManager; import android.net.NetworkCapabilities; Loading @@ -40,6 +43,7 @@ import android.telephony.AccessNetworkConstants; import android.telephony.NetworkRegistrationInfo; import android.telephony.ServiceState; import android.telephony.TelephonyManager; import android.util.Log; import androidx.annotation.NonNull; import androidx.annotation.RequiresApi; Loading @@ -55,6 +59,7 @@ import com.android.settingslib.fuelgauge.BatteryStatus; import com.android.settingslib.utils.BuildCompatUtils; import java.text.NumberFormat; import java.util.List; public class Utils { Loading Loading @@ -638,4 +643,31 @@ public class Utils { (VcnTransportInfo) networkCapabilities.getTransportInfo(); return vcnTransportInfo.getWifiInfo(); } /** Whether there is any incompatible chargers in the current UsbPort? */ public static boolean containsIncompatibleChargers(Context context, String tag) { final List<UsbPort> usbPortList = context.getSystemService(UsbManager.class).getPorts(); if (usbPortList == null || usbPortList.isEmpty()) { return false; } for (UsbPort usbPort : usbPortList) { Log.d(tag, "usbPort: " + usbPort); final UsbPortStatus usbStatus = usbPort.getStatus(); if (usbStatus == null || !usbStatus.isConnected()) { continue; } final int[] complianceWarnings = usbStatus.getComplianceWarnings(); if (complianceWarnings == null || complianceWarnings.length == 0) { continue; } for (int complianceWarningType : complianceWarnings) { if (complianceWarningType != 0) { return true; } } } return false; } } packages/SettingsLib/tests/robotests/src/com/android/settingslib/UtilsTest.java +58 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,9 @@ import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.res.Resources; import android.hardware.usb.UsbManager; import android.hardware.usb.UsbPort; import android.hardware.usb.UsbPortStatus; import android.location.LocationManager; import android.media.AudioManager; import android.os.BatteryManager; Loading @@ -53,7 +56,9 @@ import org.robolectric.annotation.Implementation; import org.robolectric.annotation.Implements; import org.robolectric.shadows.ShadowSettings; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @RunWith(RobolectricTestRunner.class) Loading @@ -74,12 +79,19 @@ public class UtilsTest { private ServiceState mServiceState; @Mock private NetworkRegistrationInfo mNetworkRegistrationInfo; @Mock private UsbPort mUsbPort; @Mock private UsbManager mUsbManager; @Mock private UsbPortStatus mUsbPortStatus; @Before public void setUp() { MockitoAnnotations.initMocks(this); mContext = spy(RuntimeEnvironment.application); when(mContext.getSystemService(Context.LOCATION_SERVICE)).thenReturn(mLocationManager); when(mContext.getSystemService(UsbManager.class)).thenReturn(mUsbManager); ShadowSecure.reset(); mAudioManager = mContext.getSystemService(AudioManager.class); } Loading Loading @@ -411,4 +423,50 @@ public class UtilsTest { assertThat(Utils.getBatteryStatus(mContext, intent, /* compactStatus= */ true)).isEqualTo( resources.getString(R.string.battery_info_status_charging)); } @Test public void containsIncompatibleChargers_nullPorts_returnFalse() { when(mUsbManager.getPorts()).thenReturn(null); assertThat(Utils.containsIncompatibleChargers(mContext, "tag")).isFalse(); } @Test public void containsIncompatibleChargers_emptyPorts_returnFalse() { when(mUsbManager.getPorts()).thenReturn(new ArrayList<>()); assertThat(Utils.containsIncompatibleChargers(mContext, "tag")).isFalse(); } @Test public void containsIncompatibleChargers_nullPortStatus_returnFalse() { final List<UsbPort> usbPorts = new ArrayList<>(); usbPorts.add(mUsbPort); when(mUsbManager.getPorts()).thenReturn(usbPorts); when(mUsbPort.getStatus()).thenReturn(null); assertThat(Utils.containsIncompatibleChargers(mContext, "tag")).isFalse(); } @Test public void containsIncompatibleChargers_returnTrue() { final List<UsbPort> usbPorts = new ArrayList<>(); usbPorts.add(mUsbPort); when(mUsbManager.getPorts()).thenReturn(usbPorts); when(mUsbPort.getStatus()).thenReturn(mUsbPortStatus); when(mUsbPortStatus.isConnected()).thenReturn(true); when(mUsbPortStatus.getComplianceWarnings()).thenReturn(new int[]{1}); assertThat(Utils.containsIncompatibleChargers(mContext, "tag")).isTrue(); } @Test public void containsIncompatibleChargers_emptyComplianceWarnings_returnFalse() { final List<UsbPort> usbPorts = new ArrayList<>(); usbPorts.add(mUsbPort); when(mUsbManager.getPorts()).thenReturn(usbPorts); when(mUsbPort.getStatus()).thenReturn(mUsbPortStatus); when(mUsbPortStatus.isConnected()).thenReturn(true); when(mUsbPortStatus.getComplianceWarnings()).thenReturn(new int[1]); assertThat(Utils.containsIncompatibleChargers(mContext, "tag")).isFalse(); } } Loading
packages/SettingsLib/src/com/android/settingslib/Utils.java +32 −0 Original line number Diff line number Diff line Loading @@ -23,6 +23,9 @@ import android.graphics.ColorFilter; import android.graphics.ColorMatrix; import android.graphics.ColorMatrixColorFilter; import android.graphics.drawable.Drawable; import android.hardware.usb.UsbManager; import android.hardware.usb.UsbPort; import android.hardware.usb.UsbPortStatus; import android.location.LocationManager; import android.media.AudioManager; import android.net.NetworkCapabilities; Loading @@ -40,6 +43,7 @@ import android.telephony.AccessNetworkConstants; import android.telephony.NetworkRegistrationInfo; import android.telephony.ServiceState; import android.telephony.TelephonyManager; import android.util.Log; import androidx.annotation.NonNull; import androidx.annotation.RequiresApi; Loading @@ -55,6 +59,7 @@ import com.android.settingslib.fuelgauge.BatteryStatus; import com.android.settingslib.utils.BuildCompatUtils; import java.text.NumberFormat; import java.util.List; public class Utils { Loading Loading @@ -638,4 +643,31 @@ public class Utils { (VcnTransportInfo) networkCapabilities.getTransportInfo(); return vcnTransportInfo.getWifiInfo(); } /** Whether there is any incompatible chargers in the current UsbPort? */ public static boolean containsIncompatibleChargers(Context context, String tag) { final List<UsbPort> usbPortList = context.getSystemService(UsbManager.class).getPorts(); if (usbPortList == null || usbPortList.isEmpty()) { return false; } for (UsbPort usbPort : usbPortList) { Log.d(tag, "usbPort: " + usbPort); final UsbPortStatus usbStatus = usbPort.getStatus(); if (usbStatus == null || !usbStatus.isConnected()) { continue; } final int[] complianceWarnings = usbStatus.getComplianceWarnings(); if (complianceWarnings == null || complianceWarnings.length == 0) { continue; } for (int complianceWarningType : complianceWarnings) { if (complianceWarningType != 0) { return true; } } } return false; } }
packages/SettingsLib/tests/robotests/src/com/android/settingslib/UtilsTest.java +58 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,9 @@ import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.res.Resources; import android.hardware.usb.UsbManager; import android.hardware.usb.UsbPort; import android.hardware.usb.UsbPortStatus; import android.location.LocationManager; import android.media.AudioManager; import android.os.BatteryManager; Loading @@ -53,7 +56,9 @@ import org.robolectric.annotation.Implementation; import org.robolectric.annotation.Implements; import org.robolectric.shadows.ShadowSettings; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @RunWith(RobolectricTestRunner.class) Loading @@ -74,12 +79,19 @@ public class UtilsTest { private ServiceState mServiceState; @Mock private NetworkRegistrationInfo mNetworkRegistrationInfo; @Mock private UsbPort mUsbPort; @Mock private UsbManager mUsbManager; @Mock private UsbPortStatus mUsbPortStatus; @Before public void setUp() { MockitoAnnotations.initMocks(this); mContext = spy(RuntimeEnvironment.application); when(mContext.getSystemService(Context.LOCATION_SERVICE)).thenReturn(mLocationManager); when(mContext.getSystemService(UsbManager.class)).thenReturn(mUsbManager); ShadowSecure.reset(); mAudioManager = mContext.getSystemService(AudioManager.class); } Loading Loading @@ -411,4 +423,50 @@ public class UtilsTest { assertThat(Utils.getBatteryStatus(mContext, intent, /* compactStatus= */ true)).isEqualTo( resources.getString(R.string.battery_info_status_charging)); } @Test public void containsIncompatibleChargers_nullPorts_returnFalse() { when(mUsbManager.getPorts()).thenReturn(null); assertThat(Utils.containsIncompatibleChargers(mContext, "tag")).isFalse(); } @Test public void containsIncompatibleChargers_emptyPorts_returnFalse() { when(mUsbManager.getPorts()).thenReturn(new ArrayList<>()); assertThat(Utils.containsIncompatibleChargers(mContext, "tag")).isFalse(); } @Test public void containsIncompatibleChargers_nullPortStatus_returnFalse() { final List<UsbPort> usbPorts = new ArrayList<>(); usbPorts.add(mUsbPort); when(mUsbManager.getPorts()).thenReturn(usbPorts); when(mUsbPort.getStatus()).thenReturn(null); assertThat(Utils.containsIncompatibleChargers(mContext, "tag")).isFalse(); } @Test public void containsIncompatibleChargers_returnTrue() { final List<UsbPort> usbPorts = new ArrayList<>(); usbPorts.add(mUsbPort); when(mUsbManager.getPorts()).thenReturn(usbPorts); when(mUsbPort.getStatus()).thenReturn(mUsbPortStatus); when(mUsbPortStatus.isConnected()).thenReturn(true); when(mUsbPortStatus.getComplianceWarnings()).thenReturn(new int[]{1}); assertThat(Utils.containsIncompatibleChargers(mContext, "tag")).isTrue(); } @Test public void containsIncompatibleChargers_emptyComplianceWarnings_returnFalse() { final List<UsbPort> usbPorts = new ArrayList<>(); usbPorts.add(mUsbPort); when(mUsbManager.getPorts()).thenReturn(usbPorts); when(mUsbPort.getStatus()).thenReturn(mUsbPortStatus); when(mUsbPortStatus.isConnected()).thenReturn(true); when(mUsbPortStatus.getComplianceWarnings()).thenReturn(new int[1]); assertThat(Utils.containsIncompatibleChargers(mContext, "tag")).isFalse(); } }