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>
</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>

View File

@@ -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 -->

View File

@@ -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),

View File

@@ -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
}

View File

@@ -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