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

Commit 07ccb426 authored by Xin Li's avatar Xin Li
Browse files

DO NOT MERGE - Merge RQ1A.201205.011

Bug: 172690556
Merged-In: I3f7d41c196569c0cb61e89cfc270b957e2f0add5
Change-Id: Id2d9c4f56beae280e6299b6695185577a1521345
parents 83521596 afca31b5
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -50,6 +50,7 @@ public class UsbBackend {
    private final boolean mTetheringRestrictedBySystem;
    private final boolean mMidiSupported;
    private final boolean mTetheringSupported;
    private final boolean mIsAdminUser;

    private UsbManager mUsbManager;

@@ -70,6 +71,7 @@ public class UsbBackend {
        mFileTransferRestrictedBySystem = isUsbFileTransferRestrictedBySystem(userManager);
        mTetheringRestricted = isUsbTetheringRestricted(userManager);
        mTetheringRestrictedBySystem = isUsbTetheringRestrictedBySystem(userManager);
        mIsAdminUser = userManager.isAdminUser();

        mMidiSupported = context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_MIDI);
        ConnectivityManager cm =
@@ -100,7 +102,8 @@ public class UsbBackend {
                || (!mTetheringSupported && (functions & UsbManager.FUNCTION_RNDIS) != 0)) {
            return false;
        }
        return !(areFunctionDisallowed(functions) || areFunctionsDisallowedBySystem(functions));
        return !(areFunctionDisallowed(functions) || areFunctionsDisallowedBySystem(functions)
                || areFunctionsDisallowedByNonAdminUser(functions));
    }

    public int getPowerRole() {
@@ -207,6 +210,11 @@ public class UsbBackend {
                || (mTetheringRestrictedBySystem && ((functions & UsbManager.FUNCTION_RNDIS) != 0));
    }

    @VisibleForTesting
    boolean areFunctionsDisallowedByNonAdminUser(long functions) {
        return !mIsAdminUser && (functions & UsbManager.FUNCTION_RNDIS) != 0;
    }

    private void updatePorts() {
        mPort = null;
        mPortStatus = null;
+41 −1
Original line number Diff line number Diff line
@@ -365,9 +365,15 @@ public class EnabledNetworkModePreferenceController extends
        }

        private int getPreferredNetworkMode() {
            return Settings.Global.getInt(mContext.getContentResolver(),
            int networkMode = Settings.Global.getInt(mContext.getContentResolver(),
                    Settings.Global.PREFERRED_NETWORK_MODE + mSubId,
                    TelephonyManager.DEFAULT_PREFERRED_NETWORK_MODE);
            if (!showNrList()) {
                Log.d(LOG_TAG, "Network mode :" + networkMode + " reduce NR");
                networkMode = reduceNrToLteNetworkType(networkMode);
            }
            Log.d(LOG_TAG, "getPreferredNetworkMode: " + networkMode);
            return networkMode;
        }

        private EnabledNetworks getEnabledNetworkType() {
@@ -635,6 +641,40 @@ public class EnabledNetworkModePreferenceController extends
            }
        }

        /**
         * Transform NR5G network mode to LTE network mode.
         *
         * @param networkType an 5G network mode.
         * @return the corresponding network mode without 5G.
         */
        private static int reduceNrToLteNetworkType(int networkType) {
            switch(networkType) {
                case TelephonyManagerConstants.NETWORK_MODE_NR_LTE:
                    return TelephonyManagerConstants.NETWORK_MODE_LTE_ONLY;
                case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_CDMA_EVDO:
                    return TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO;
                case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_GSM_WCDMA:
                    return TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA;
                case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA:
                    return TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA;
                case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_WCDMA:
                    return TelephonyManagerConstants.NETWORK_MODE_LTE_WCDMA;
                case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA:
                    return TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA;
                case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_GSM:
                    return TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_GSM;
                case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_WCDMA:
                    return TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_WCDMA;
                case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA:
                    return TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_GSM_WCDMA;
                case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
                    return TelephonyManagerConstants
                            .NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA;
                default:
                    return networkType; // do nothing
            }
        }

        private void setPreferenceValueAndSummary() {
            setPreferenceValueAndSummary(getPreferredNetworkMode());
        }
+20 −0
Original line number Diff line number Diff line
@@ -181,4 +181,24 @@ public class UsbBackendTest {

        assertThat(usbBackend.areFunctionsSupported(UsbManager.FUNCTION_MTP)).isTrue();
    }

    @Test
    public void areFunctionsDisallowedByNonAdminUser_isAdminUser_returnFalse() {
        when(mUserManager.isAdminUser()).thenReturn(true);

        final UsbBackend usbBackend = new UsbBackend(mContext, mUserManager);

        assertThat(usbBackend.areFunctionsDisallowedByNonAdminUser(
                UsbManager.FUNCTION_RNDIS)).isFalse();
    }

    @Test
    public void areFunctionsDisallowedByNonAdminUser_isNotAdminUser_returnTrue() {
        when(mUserManager.isAdminUser()).thenReturn(false);

        final UsbBackend usbBackend = new UsbBackend(mContext, mUserManager);

        assertThat(usbBackend.areFunctionsDisallowedByNonAdminUser(
                UsbManager.FUNCTION_RNDIS)).isTrue();
    }
}
+28 −1
Original line number Diff line number Diff line
@@ -221,6 +221,28 @@ public class EnabledNetworkModePreferenceControllerTest {
                        TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA));
    }

    @Test
    public void updateState_NrEnableBoolFalse_5gOptionHidden() {
        mockEnabledNetworkMode(TelephonyManagerConstants.NETWORK_MODE_NR_LTE_GSM_WCDMA);
        mockAccessFamily(TelephonyManager.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA);
        mPersistableBundle.putBoolean(CarrierConfigManager.KEY_NR_ENABLED_BOOL, false);

        mController.init(mLifecycle, SUB_ID);
        Settings.Global.putInt(mContext.getContentResolver(),
                Settings.Global.PREFERRED_NETWORK_MODE + SUB_ID,
                TelephonyManagerConstants.NETWORK_MODE_NR_LTE_GSM_WCDMA);

        mController.updateState(mPreference);

        assertThat(mPreference.getValue()).isEqualTo(
                String.valueOf(
                        TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA));
        assertThat(mPreference.getEntryValues())
                .asList()
                .doesNotContain(
                        String.valueOf(TelephonyManager.NETWORK_MODE_NR_LTE_GSM_WCDMA));
    }

    @Test
    public void updateState_GlobalDisAllowed5g_GlobalWithoutNR() {
        mockAccessFamily(TelephonyManager.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA);
@@ -393,6 +415,11 @@ public class EnabledNetworkModePreferenceControllerTest {
        } else if (networkMode == TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA) {
            mockPhoneType(TelephonyManager.PHONE_TYPE_GSM);
            mPersistableBundle.putBoolean(CarrierConfigManager.KEY_SUPPORT_TDSCDMA_BOOL, true);
        } else if (networkMode
                == TelephonyManagerConstants.NETWORK_MODE_NR_LTE_GSM_WCDMA) {
            mockPhoneType(TelephonyManager.PHONE_TYPE_GSM);
            mPersistableBundle.putBoolean(CarrierConfigManager.KEY_PREFER_2G_BOOL, true);
            mPersistableBundle.putBoolean(CarrierConfigManager.KEY_LTE_ENABLED_BOOL, true);
        }
    }

@@ -407,6 +434,6 @@ public class EnabledNetworkModePreferenceControllerTest {
    }

    private void mockPhoneType(int phoneType) {
        doReturn(TelephonyManager.PHONE_TYPE_GSM).when(mTelephonyManager).getPhoneType();
        doReturn(phoneType).when(mTelephonyManager).getPhoneType();
    }
}