Telephony.Carriers.BEARER is deprecated.

Fix: 303971237
Test: Unit Test
Change-Id: Id3257b279421eb9f3544430667dc8ae536476e5c
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
index 01a8126..18f37bf 100644
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -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>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 87ba77b..7e6de11 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -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 -->
diff --git a/src/com/android/settings/network/apn/ApnEditPageProvider.kt b/src/com/android/settings/network/apn/ApnEditPageProvider.kt
index 5a459a0..97d001c 100644
--- a/src/com/android/settings/network/apn/ApnEditPageProvider.kt
+++ b/src/com/android/settings/network/apn/ApnEditPageProvider.kt
@@ -88,12 +88,12 @@
     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 @@
                 }
             )
             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),
diff --git a/src/com/android/settings/network/apn/ApnStatus.kt b/src/com/android/settings/network/apn/ApnStatus.kt
index 5d64142..5a13ede 100644
--- a/src/com/android/settings/network/apn/ApnStatus.kt
+++ b/src/com/android/settings/network/apn/ApnStatus.kt
@@ -41,10 +41,9 @@
     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 @@
     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
 }
+
+
diff --git a/tests/spa_unit/src/com/android/settings/network/apn/ApnEditPageProviderTest.kt b/tests/spa_unit/src/com/android/settings/network/apn/ApnEditPageProviderTest.kt
index d744181..f6b2342 100644
--- a/tests/spa_unit/src/com/android/settings/network/apn/ApnEditPageProviderTest.kt
+++ b/tests/spa_unit/src/com/android/settings/network/apn/ApnEditPageProviderTest.kt
@@ -57,8 +57,8 @@
     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 @@
     }
 
     @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 @@
             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 @@
             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