Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ee03ff34 authored by Roy Luo's avatar Roy Luo Committed by Android (Google) Code Review
Browse files

Merge "Update incompatible charger checking rule" into main

parents 7723ce41 34fd9425
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -6,3 +6,10 @@ flag {
    description: "Enable USB data compliance warnings when set"
    bug: "296119135"
}

flag {
    name: "enable_input_power_limited_warning"
    namespace: "system_sw_usb"
    description: "Flag incompatible charging on COMPLIANCE_WARNING_INPUT_POWER_LIMITED instead of COMPLIANCE_WARNING_OTHER when enabled"
    bug: "308700954"
}
+18 −6
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import android.graphics.ColorFilter;
import android.graphics.ColorMatrix;
import android.graphics.ColorMatrixColorFilter;
import android.graphics.drawable.Drawable;
import android.hardware.usb.flags.Flags;
import android.hardware.usb.UsbManager;
import android.hardware.usb.UsbPort;
import android.hardware.usb.UsbPortStatus;
@@ -704,6 +705,16 @@ public class Utils {
                continue;
            }
            for (int complianceWarningType : complianceWarnings) {
                if (Flags.enableUsbDataComplianceWarning()
                        && Flags.enableInputPowerLimitedWarning()) {
                    switch (complianceWarningType) {
                        case UsbPortStatus.COMPLIANCE_WARNING_INPUT_POWER_LIMITED:
                        case UsbPortStatus.COMPLIANCE_WARNING_DEBUG_ACCESSORY:
                            return true;
                        default:
                            break;
                    }
                } else {
                    switch (complianceWarningType) {
                        case UsbPortStatus.COMPLIANCE_WARNING_OTHER:
                        case UsbPortStatus.COMPLIANCE_WARNING_DEBUG_ACCESSORY:
@@ -713,6 +724,7 @@ public class Utils {
                    }
                }
            }
        }
        return false;
    }

+37 −3
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ import android.app.ActivityManager;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import android.hardware.usb.flags.Flags;
import android.hardware.usb.UsbManager;
import android.hardware.usb.UsbPort;
import android.hardware.usb.UsbPortStatus;
@@ -36,6 +37,7 @@ import android.media.AudioManager;
import android.os.BatteryManager;
import android.os.SystemProperties;
import android.os.UserHandle;
import android.platform.test.flag.junit.SetFlagsRule;
import android.provider.Settings;
import android.telephony.AccessNetworkConstants;
import android.telephony.NetworkRegistrationInfo;
@@ -44,6 +46,7 @@ import android.text.TextUtils;

import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentMatcher;
@@ -85,6 +88,8 @@ public class UtilsTest {
    @Mock
    private UsbPortStatus mUsbPortStatus;

    @Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
@@ -425,8 +430,38 @@ public class UtilsTest {
    }

    @Test
    public void containsIncompatibleChargers_complianeWarningOther_returnTrue() {
    public void containsIncompatibleChargers_complianeWarningOther_returnTrue_flagDisabled() {
        mSetFlagsRule.disableFlags(Flags.FLAG_ENABLE_USB_DATA_COMPLIANCE_WARNING);
        mSetFlagsRule.disableFlags(Flags.FLAG_ENABLE_INPUT_POWER_LIMITED_WARNING);
        setupIncompatibleCharging(UsbPortStatus.COMPLIANCE_WARNING_OTHER);

        assertThat(Utils.containsIncompatibleChargers(mContext, TAG)).isTrue();
    }

    @Test
    public void containsIncompatibleChargers_complianeWarningPower_returnFalse_flagDisabled() {
        mSetFlagsRule.disableFlags(Flags.FLAG_ENABLE_USB_DATA_COMPLIANCE_WARNING);
        mSetFlagsRule.disableFlags(Flags.FLAG_ENABLE_INPUT_POWER_LIMITED_WARNING);
        setupIncompatibleCharging(UsbPortStatus.COMPLIANCE_WARNING_INPUT_POWER_LIMITED);

        assertThat(Utils.containsIncompatibleChargers(mContext, TAG)).isFalse();
    }

    @Test
    public void containsIncompatibleChargers_complianeWarningOther_returnFalse_flagEnabled() {
        mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_USB_DATA_COMPLIANCE_WARNING);
        mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_INPUT_POWER_LIMITED_WARNING);
        setupIncompatibleCharging(UsbPortStatus.COMPLIANCE_WARNING_OTHER);

        assertThat(Utils.containsIncompatibleChargers(mContext, TAG)).isFalse();
    }

    @Test
    public void containsIncompatibleChargers_complianeWarningPower_returnTrue_flagEnabled() {
        mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_USB_DATA_COMPLIANCE_WARNING);
        mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_INPUT_POWER_LIMITED_WARNING);
        setupIncompatibleCharging(UsbPortStatus.COMPLIANCE_WARNING_INPUT_POWER_LIMITED);

        assertThat(Utils.containsIncompatibleChargers(mContext, TAG)).isTrue();
    }

@@ -446,7 +481,6 @@ public class UtilsTest {
    public void containsIncompatibleChargers_emptyComplianceWarnings_returnFalse() {
        setupIncompatibleCharging();
        when(mUsbPortStatus.getComplianceWarnings()).thenReturn(new int[1]);

        assertThat(Utils.containsIncompatibleChargers(mContext, TAG)).isFalse();
    }

@@ -476,7 +510,7 @@ public class UtilsTest {
    }

    private void setupIncompatibleCharging() {
        setupIncompatibleCharging(UsbPortStatus.COMPLIANCE_WARNING_OTHER);
        setupIncompatibleCharging(UsbPortStatus.COMPLIANCE_WARNING_DEBUG_ACCESSORY);
    }

    private void setupIncompatibleCharging(int complianceWarningType) {
+1 −1
Original line number Diff line number Diff line
@@ -294,6 +294,6 @@ public class BatteryControllerTest extends SysuiTestCase {
        when(mUsbPort.supportsComplianceWarnings()).thenReturn(true);
        when(mUsbPortStatus.isConnected()).thenReturn(true);
        when(mUsbPortStatus.getComplianceWarnings())
                .thenReturn(new int[]{UsbPortStatus.COMPLIANCE_WARNING_OTHER});
                .thenReturn(new int[]{UsbPortStatus.COMPLIANCE_WARNING_DEBUG_ACCESSORY});
    }
}