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

Commit 11737b95 authored by Charlotte Lu's avatar Charlotte Lu
Browse files

Telephony.Carriers.BEARER is deprecated.

Fix: 303971237
Test: Unit Test
Change-Id: Id3257b279421eb9f3544430667dc8ae536476e5c
parent 17354749
Loading
Loading
Loading
Loading
+55 −0
Original line number Diff line number Diff line
@@ -416,6 +416,61 @@
        <item>20</item>
    </string-array>

    <!-- Network type used in APN editor -->
    <string-array name="network_type_entries">
        <item>Unspecified</item>
        <item>LTE</item>
        <item>HSPAP</item>
        <item>HSPA</item>
        <item>HSUPA</item>
        <item>HSDPA</item>
        <item>UMTS</item>
        <item>EDGE</item>
        <item>GPRS</item>
        <item>eHRPD</item>
        <item>EVDO_B</item>
        <item>EVDO_A</item>
        <item>EVDO_0</item>
        <item>1xRTT</item>
        <item>CDMA</item>
        <item>NR</item>
    </string-array>

    <string-array translatable="false" name="network_type_values">
        <!-- Do not translate. -->
        <item>0</item>
        <!-- Do not translate. -->
        <item>13</item>
        <!-- Do not translate. -->
        <item>15</item>
        <!-- Do not translate. -->
        <item>10</item>
        <!-- Do not translate. -->
        <item>9</item>
        <!-- Do not translate. -->
        <item>8</item>
        <!-- Do not translate. -->
        <item>3</item>
        <!-- Do not translate. -->
        <item>2</item>
        <!-- Do not translate. -->
        <item>1</item>
        <!-- Do not translate. -->
        <item>14</item>
        <!-- Do not translate. -->
        <item>12</item>
        <!-- Do not translate. -->
        <item>6</item>
        <!-- Do not translate. -->
        <item>5</item>
        <!-- Do not translate. -->
        <item>7</item>
        <!-- Do not translate. -->
        <item>4</item>
        <!-- Do not translate. -->
        <item>20</item>
    </string-array>

    <!-- MVNO Info used in APN editor -->
    <string-array name="mvno_type_entries">
        <item>None</item>
+2 −0
Original line number Diff line number Diff line
@@ -3121,6 +3121,8 @@
    <string name="carrier_enabled_summaryOff">APN disabled</string>
    <!-- Edit Beaerer Info of APN -->
    <string name="bearer">Bearer</string>
    <!-- Edit Network Type Info of APN -->
    <string name="network_type">Network type</string>
    <!-- Edit Mvno Type Info of APN -->
    <string name="mvno_type">MVNO type</string>
    <!-- Edit Mvno Match Data Info of APN -->
+10 −10
Original line number Diff line number Diff line
@@ -88,12 +88,12 @@ fun ApnPage(apnDataCur: MutableState<ApnData>) {
    val context = LocalContext.current
    val authTypeOptions = stringArrayResource(R.array.apn_auth_entries).toList()
    val apnProtocolOptions = stringArrayResource(R.array.apn_protocol_entries).toList()
    val bearerOptionsAll = stringArrayResource(R.array.bearer_entries)
    val bearerOptions = bearerOptionsAll.drop(1).toList()
    val bearerEmptyVal = bearerOptionsAll[0]
    val networkTypeOptionsAll = stringArrayResource(R.array.network_type_entries)
    val networkTypeOptions = networkTypeOptionsAll.drop(1).toList()
    val networkTypeEmptyVal = networkTypeOptionsAll[0]
    val mvnoTypeOptions = stringArrayResource(R.array.mvno_type_entries).toList()
    val bearerSelectedOptionsState = remember {
        getBearerSelectedOptionsState(apnData.bearer, apnData.bearerBitmask, context)
    val networkTypeSelectedOptionsState = remember {
        getNetworkTypeSelectedOptionsState(apnData.networkType, context)
    }
    RegularScaffold(
        title = stringResource(id = R.string.apn_edit),
@@ -196,11 +196,11 @@ fun ApnPage(apnDataCur: MutableState<ApnData>) {
                }
            )
            SettingsExposedDropdownMenuCheckBox(
                label = stringResource(R.string.bearer),
                options = bearerOptions,
                selectedOptionsState = bearerSelectedOptionsState,
                emptyVal = bearerEmptyVal,
                enabled = apnData.bearerEnabled
                label = stringResource(R.string.network_type),
                options = networkTypeOptions,
                selectedOptionsState = networkTypeSelectedOptionsState,
                emptyVal = networkTypeEmptyVal,
                enabled = apnData.networkTypeEnabled
            ) {}
            SettingsExposedDropdownMenuBox(
                label = stringResource(R.string.mvno_type),
+18 −23
Original line number Diff line number Diff line
@@ -41,10 +41,9 @@ data class ApnData(
    val apnProtocol: Int = -1,
    val apnRoaming: Int = -1,
    val apnEnable: Boolean = true,
    val bearer: Int = 0,
    val networkType: Int = 0,
    val mvnoType: Int = -1,
    var mvnoValue: String = "",
    val bearerBitmask: Int = 0,
    val edited: Int = Telephony.Carriers.USER_EDITED,
    val userEditable: Int = 1,
    val carrierId: Int = TelephonyManager.UNKNOWN_CARRIER_ID
@@ -66,40 +65,36 @@ data class ApnData(
    var apnProtocolEnabled = true
    var apnRoamingEnabled = true
    var apnEnableEnabled = true
    var bearerEnabled = true
    var networkTypeEnabled = true
    var mvnoTypeEnabled = true
    var mvnoValueEnabled = false
}

/**
 * Initialize the selected Bearer Selected Options according to bearer.
 * @param bearer Initialized bearer options.
 * @param bearerBitmask Initialized bearer bitmask, often multiple bearer options may be included.
 * @param context The context to get bearerValues.
 * Initialize the selected Network type Selected Options according to network type.
 * @param networkType Initialized network type bitmask, often multiple network type options may be included.
 * @param context The context to get network type values.
 *
 * @return An error message if the apn data is invalid, otherwise return null.
 */
fun getBearerSelectedOptionsState(
    bearer: Int,
    bearerBitmask: Int,
fun getNetworkTypeSelectedOptionsState(
    networkType: Int,
    context: Context
): SnapshotStateList<Int> {
    val bearerValues = context.resources.getStringArray(R.array.bearer_values)
    val bearerSelectedOptionsState = mutableStateListOf<Int>()
    if (bearerBitmask != 0) {
    val networkTypeValues = context.resources.getStringArray(R.array.network_type_values)
    val networkTypeSelectedOptionsState = mutableStateListOf<Int>()
    if (networkType != 0) {
        var i = 1
        var _bearerBitmask = bearerBitmask
        while (_bearerBitmask != 0) {
            if (_bearerBitmask and 1 == 1 && !bearerSelectedOptionsState.contains(i)) {
                bearerSelectedOptionsState.add(bearerValues.indexOf("$i") - 1)
        var networkTypeBitMask = networkType
        while (networkTypeBitMask != 0) {
            if (networkTypeBitMask and 1 == 1 && !networkTypeSelectedOptionsState.contains(i)) {
                networkTypeSelectedOptionsState.add(networkTypeValues.indexOf("$i") - 1)
            }
            _bearerBitmask = _bearerBitmask shr 1
            networkTypeBitMask = networkTypeBitMask shr 1
            i++
        }
    }
    if (bearer != 0 && !bearerSelectedOptionsState.contains(bearer)) {
        // add mBearerInitialVal to bearers
        bearerSelectedOptionsState.add(bearerValues.indexOf("$bearer") - 1)
    }
    return bearerSelectedOptionsState
    return networkTypeSelectedOptionsState
}

+20 −20
Original line number Diff line number Diff line
@@ -57,8 +57,8 @@ class ApnEditPageProviderTest {
    private val apnEnable = context.resources.getString(R.string.carrier_enabled)
    private val apnProtocolOptions =
        context.resources.getStringArray(R.array.apn_protocol_entries).toList()
    private val bearer = context.resources.getString(R.string.bearer)
    private val bearerOptions = context.resources.getStringArray(R.array.bearer_entries).toList()
    private val networkType = context.resources.getString(R.string.network_type)
    private val networkTypeOptions = context.resources.getStringArray(R.array.network_type_entries).toList()
    private val passwordTitle = context.resources.getString(R.string.apn_password)
    private val apnData = mutableStateOf(
        ApnData(
@@ -195,19 +195,19 @@ class ApnEditPageProviderTest {
    }

    @Test
    fun bearer_displayed() {
    fun network_type_displayed() {
        composeTestRule.setContent {
            ApnPage(remember {
                apnData
            })
        }
        composeTestRule.onRoot().onChild().onChildAt(0)
            .performScrollToNode(hasText(bearer, true))
        composeTestRule.onNodeWithText(bearer, true).assertIsDisplayed()
            .performScrollToNode(hasText(networkType, true))
        composeTestRule.onNodeWithText(networkType, true).assertIsDisplayed()
    }

    @Test
    fun bearer_changed() {
    fun network_type_changed() {
        var apnDataa: MutableState<ApnData> = apnData
        composeTestRule.setContent {
            apnDataa = remember {
@@ -216,15 +216,15 @@ class ApnEditPageProviderTest {
            ApnPage(apnDataa)
        }
        composeTestRule.onRoot().onChild().onChildAt(0)
            .performScrollToNode(hasText(bearer, true))
        composeTestRule.onNodeWithText(bearer, true).performClick()
        composeTestRule.onNodeWithText(bearerOptions[1], true).performClick()
        composeTestRule.onNode(hasText(bearerOptions[0]) and isFocused(), true).assertDoesNotExist()
        composeTestRule.onNode(hasText(bearerOptions[1]) and isFocused(), true).assertIsDisplayed()
            .performScrollToNode(hasText(networkType, true))
        composeTestRule.onNodeWithText(networkType, true).performClick()
        composeTestRule.onNodeWithText(networkTypeOptions[1], true).performClick()
        composeTestRule.onNode(hasText(networkTypeOptions[0]) and isFocused(), true).assertDoesNotExist()
        composeTestRule.onNode(hasText(networkTypeOptions[1]) and isFocused(), true).assertIsDisplayed()
    }

    @Test
    fun bearer_changed_back2Default() {
    fun network_type_changed_back2Default() {
        var apnDataa: MutableState<ApnData> = apnData
        composeTestRule.setContent {
            apnDataa = remember {
@@ -233,14 +233,14 @@ class ApnEditPageProviderTest {
            ApnPage(apnDataa)
        }
        composeTestRule.onRoot().onChild().onChildAt(0)
            .performScrollToNode(hasText(bearer, true))
        composeTestRule.onNodeWithText(bearer, true).performClick()
        composeTestRule.onNodeWithText(bearerOptions[1], true).performClick()
        composeTestRule.onNode(hasText(bearerOptions[0]) and isFocused(), true).assertDoesNotExist()
        composeTestRule.onNode(hasText(bearerOptions[1]) and isFocused(), true).assertIsDisplayed()
        composeTestRule.onAllNodesWithText(bearerOptions[1], true).onLast().performClick()
        composeTestRule.onNode(hasText(bearerOptions[0]) and isFocused(), true).assertIsDisplayed()
        composeTestRule.onNode(hasText(bearerOptions[1]) and isFocused(), true).assertDoesNotExist()
            .performScrollToNode(hasText(networkType, true))
        composeTestRule.onNodeWithText(networkType, true).performClick()
        composeTestRule.onNodeWithText(networkTypeOptions[1], true).performClick()
        composeTestRule.onNode(hasText(networkTypeOptions[0]) and isFocused(), true).assertDoesNotExist()
        composeTestRule.onNode(hasText(networkTypeOptions[1]) and isFocused(), true).assertIsDisplayed()
        composeTestRule.onAllNodesWithText(networkTypeOptions[1], true).onLast().performClick()
        composeTestRule.onNode(hasText(networkTypeOptions[0]) and isFocused(), true).assertIsDisplayed()
        composeTestRule.onNode(hasText(networkTypeOptions[1]) and isFocused(), true).assertDoesNotExist()
    }

    @Test