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

This commit is contained in:
Treehugger Robot
2023-10-08 03:33:27 +00:00
committed by Android (Google) Code Review
5 changed files with 105 additions and 53 deletions

View File

@@ -416,6 +416,61 @@
<item>20</item> <item>20</item>
</string-array> </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 --> <!-- MVNO Info used in APN editor -->
<string-array name="mvno_type_entries"> <string-array name="mvno_type_entries">
<item>None</item> <item>None</item>

View File

@@ -3121,6 +3121,8 @@
<string name="carrier_enabled_summaryOff">APN disabled</string> <string name="carrier_enabled_summaryOff">APN disabled</string>
<!-- Edit Beaerer Info of APN --> <!-- Edit Beaerer Info of APN -->
<string name="bearer">Bearer</string> <string name="bearer">Bearer</string>
<!-- Edit Network Type Info of APN -->
<string name="network_type">Network type</string>
<!-- Edit Mvno Type Info of APN --> <!-- Edit Mvno Type Info of APN -->
<string name="mvno_type">MVNO type</string> <string name="mvno_type">MVNO type</string>
<!-- Edit Mvno Match Data Info of APN --> <!-- Edit Mvno Match Data Info of APN -->

View File

@@ -88,12 +88,12 @@ fun ApnPage(apnDataCur: MutableState<ApnData>) {
val context = LocalContext.current val context = LocalContext.current
val authTypeOptions = stringArrayResource(R.array.apn_auth_entries).toList() val authTypeOptions = stringArrayResource(R.array.apn_auth_entries).toList()
val apnProtocolOptions = stringArrayResource(R.array.apn_protocol_entries).toList() val apnProtocolOptions = stringArrayResource(R.array.apn_protocol_entries).toList()
val bearerOptionsAll = stringArrayResource(R.array.bearer_entries) val networkTypeOptionsAll = stringArrayResource(R.array.network_type_entries)
val bearerOptions = bearerOptionsAll.drop(1).toList() val networkTypeOptions = networkTypeOptionsAll.drop(1).toList()
val bearerEmptyVal = bearerOptionsAll[0] val networkTypeEmptyVal = networkTypeOptionsAll[0]
val mvnoTypeOptions = stringArrayResource(R.array.mvno_type_entries).toList() val mvnoTypeOptions = stringArrayResource(R.array.mvno_type_entries).toList()
val bearerSelectedOptionsState = remember { val networkTypeSelectedOptionsState = remember {
getBearerSelectedOptionsState(apnData.bearer, apnData.bearerBitmask, context) getNetworkTypeSelectedOptionsState(apnData.networkType, context)
} }
RegularScaffold( RegularScaffold(
title = stringResource(id = R.string.apn_edit), title = stringResource(id = R.string.apn_edit),
@@ -196,11 +196,11 @@ fun ApnPage(apnDataCur: MutableState<ApnData>) {
} }
) )
SettingsExposedDropdownMenuCheckBox( SettingsExposedDropdownMenuCheckBox(
label = stringResource(R.string.bearer), label = stringResource(R.string.network_type),
options = bearerOptions, options = networkTypeOptions,
selectedOptionsState = bearerSelectedOptionsState, selectedOptionsState = networkTypeSelectedOptionsState,
emptyVal = bearerEmptyVal, emptyVal = networkTypeEmptyVal,
enabled = apnData.bearerEnabled enabled = apnData.networkTypeEnabled
) {} ) {}
SettingsExposedDropdownMenuBox( SettingsExposedDropdownMenuBox(
label = stringResource(R.string.mvno_type), label = stringResource(R.string.mvno_type),

View File

@@ -41,10 +41,9 @@ data class ApnData(
val apnProtocol: Int = -1, val apnProtocol: Int = -1,
val apnRoaming: Int = -1, val apnRoaming: Int = -1,
val apnEnable: Boolean = true, val apnEnable: Boolean = true,
val bearer: Int = 0, val networkType: Int = 0,
val mvnoType: Int = -1, val mvnoType: Int = -1,
var mvnoValue: String = "", var mvnoValue: String = "",
val bearerBitmask: Int = 0,
val edited: Int = Telephony.Carriers.USER_EDITED, val edited: Int = Telephony.Carriers.USER_EDITED,
val userEditable: Int = 1, val userEditable: Int = 1,
val carrierId: Int = TelephonyManager.UNKNOWN_CARRIER_ID val carrierId: Int = TelephonyManager.UNKNOWN_CARRIER_ID
@@ -66,40 +65,36 @@ data class ApnData(
var apnProtocolEnabled = true var apnProtocolEnabled = true
var apnRoamingEnabled = true var apnRoamingEnabled = true
var apnEnableEnabled = true var apnEnableEnabled = true
var bearerEnabled = true var networkTypeEnabled = true
var mvnoTypeEnabled = true var mvnoTypeEnabled = true
var mvnoValueEnabled = false var mvnoValueEnabled = false
} }
/** /**
* Initialize the selected Bearer Selected Options according to bearer. * Initialize the selected Network type Selected Options according to network type.
* @param bearer Initialized bearer options. * @param networkType Initialized network type bitmask, often multiple network type options may be included.
* @param bearerBitmask Initialized bearer bitmask, often multiple bearer options may be included. * @param context The context to get network type values.
* @param context The context to get bearerValues.
* *
* @return An error message if the apn data is invalid, otherwise return null. * @return An error message if the apn data is invalid, otherwise return null.
*/ */
fun getBearerSelectedOptionsState( fun getNetworkTypeSelectedOptionsState(
bearer: Int, networkType: Int,
bearerBitmask: Int,
context: Context context: Context
): SnapshotStateList<Int> { ): SnapshotStateList<Int> {
val bearerValues = context.resources.getStringArray(R.array.bearer_values) val networkTypeValues = context.resources.getStringArray(R.array.network_type_values)
val bearerSelectedOptionsState = mutableStateListOf<Int>() val networkTypeSelectedOptionsState = mutableStateListOf<Int>()
if (bearerBitmask != 0) { if (networkType != 0) {
var i = 1 var i = 1
var _bearerBitmask = bearerBitmask var networkTypeBitMask = networkType
while (_bearerBitmask != 0) { while (networkTypeBitMask != 0) {
if (_bearerBitmask and 1 == 1 && !bearerSelectedOptionsState.contains(i)) { if (networkTypeBitMask and 1 == 1 && !networkTypeSelectedOptionsState.contains(i)) {
bearerSelectedOptionsState.add(bearerValues.indexOf("$i") - 1) networkTypeSelectedOptionsState.add(networkTypeValues.indexOf("$i") - 1)
} }
_bearerBitmask = _bearerBitmask shr 1 networkTypeBitMask = networkTypeBitMask shr 1
i++ i++
} }
} }
if (bearer != 0 && !bearerSelectedOptionsState.contains(bearer)) { return networkTypeSelectedOptionsState
// add mBearerInitialVal to bearers
bearerSelectedOptionsState.add(bearerValues.indexOf("$bearer") - 1)
}
return bearerSelectedOptionsState
} }

View File

@@ -57,8 +57,8 @@ class ApnEditPageProviderTest {
private val apnEnable = context.resources.getString(R.string.carrier_enabled) private val apnEnable = context.resources.getString(R.string.carrier_enabled)
private val apnProtocolOptions = private val apnProtocolOptions =
context.resources.getStringArray(R.array.apn_protocol_entries).toList() context.resources.getStringArray(R.array.apn_protocol_entries).toList()
private val bearer = context.resources.getString(R.string.bearer) private val networkType = context.resources.getString(R.string.network_type)
private val bearerOptions = context.resources.getStringArray(R.array.bearer_entries).toList() private val networkTypeOptions = context.resources.getStringArray(R.array.network_type_entries).toList()
private val passwordTitle = context.resources.getString(R.string.apn_password) private val passwordTitle = context.resources.getString(R.string.apn_password)
private val apnData = mutableStateOf( private val apnData = mutableStateOf(
ApnData( ApnData(
@@ -195,19 +195,19 @@ class ApnEditPageProviderTest {
} }
@Test @Test
fun bearer_displayed() { fun network_type_displayed() {
composeTestRule.setContent { composeTestRule.setContent {
ApnPage(remember { ApnPage(remember {
apnData apnData
}) })
} }
composeTestRule.onRoot().onChild().onChildAt(0) composeTestRule.onRoot().onChild().onChildAt(0)
.performScrollToNode(hasText(bearer, true)) .performScrollToNode(hasText(networkType, true))
composeTestRule.onNodeWithText(bearer, true).assertIsDisplayed() composeTestRule.onNodeWithText(networkType, true).assertIsDisplayed()
} }
@Test @Test
fun bearer_changed() { fun network_type_changed() {
var apnDataa: MutableState<ApnData> = apnData var apnDataa: MutableState<ApnData> = apnData
composeTestRule.setContent { composeTestRule.setContent {
apnDataa = remember { apnDataa = remember {
@@ -216,15 +216,15 @@ class ApnEditPageProviderTest {
ApnPage(apnDataa) ApnPage(apnDataa)
} }
composeTestRule.onRoot().onChild().onChildAt(0) composeTestRule.onRoot().onChild().onChildAt(0)
.performScrollToNode(hasText(bearer, true)) .performScrollToNode(hasText(networkType, true))
composeTestRule.onNodeWithText(bearer, true).performClick() composeTestRule.onNodeWithText(networkType, true).performClick()
composeTestRule.onNodeWithText(bearerOptions[1], true).performClick() composeTestRule.onNodeWithText(networkTypeOptions[1], true).performClick()
composeTestRule.onNode(hasText(bearerOptions[0]) and isFocused(), true).assertDoesNotExist() composeTestRule.onNode(hasText(networkTypeOptions[0]) and isFocused(), true).assertDoesNotExist()
composeTestRule.onNode(hasText(bearerOptions[1]) and isFocused(), true).assertIsDisplayed() composeTestRule.onNode(hasText(networkTypeOptions[1]) and isFocused(), true).assertIsDisplayed()
} }
@Test @Test
fun bearer_changed_back2Default() { fun network_type_changed_back2Default() {
var apnDataa: MutableState<ApnData> = apnData var apnDataa: MutableState<ApnData> = apnData
composeTestRule.setContent { composeTestRule.setContent {
apnDataa = remember { apnDataa = remember {
@@ -233,14 +233,14 @@ class ApnEditPageProviderTest {
ApnPage(apnDataa) ApnPage(apnDataa)
} }
composeTestRule.onRoot().onChild().onChildAt(0) composeTestRule.onRoot().onChild().onChildAt(0)
.performScrollToNode(hasText(bearer, true)) .performScrollToNode(hasText(networkType, true))
composeTestRule.onNodeWithText(bearer, true).performClick() composeTestRule.onNodeWithText(networkType, true).performClick()
composeTestRule.onNodeWithText(bearerOptions[1], true).performClick() composeTestRule.onNodeWithText(networkTypeOptions[1], true).performClick()
composeTestRule.onNode(hasText(bearerOptions[0]) and isFocused(), true).assertDoesNotExist() composeTestRule.onNode(hasText(networkTypeOptions[0]) and isFocused(), true).assertDoesNotExist()
composeTestRule.onNode(hasText(bearerOptions[1]) and isFocused(), true).assertIsDisplayed() composeTestRule.onNode(hasText(networkTypeOptions[1]) and isFocused(), true).assertIsDisplayed()
composeTestRule.onAllNodesWithText(bearerOptions[1], true).onLast().performClick() composeTestRule.onAllNodesWithText(networkTypeOptions[1], true).onLast().performClick()
composeTestRule.onNode(hasText(bearerOptions[0]) and isFocused(), true).assertIsDisplayed() composeTestRule.onNode(hasText(networkTypeOptions[0]) and isFocused(), true).assertIsDisplayed()
composeTestRule.onNode(hasText(bearerOptions[1]) and isFocused(), true).assertDoesNotExist() composeTestRule.onNode(hasText(networkTypeOptions[1]) and isFocused(), true).assertDoesNotExist()
} }
@Test @Test