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

Commit 9f49e038 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Telephony.Carriers.BEARER is deprecated." into main

parents c2691b24 11737b95
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