Merge "Sort in slot selectable subscriptions first" into main

This commit is contained in:
Chaohui Wang
2024-05-27 09:02:40 +00:00
committed by Android (Google) Code Review
2 changed files with 30 additions and 1 deletions

View File

@@ -124,6 +124,14 @@ fun Context.getSelectableSubscriptionInfoList(): List<SubscriptionInfo> {
}
}
// Matching the sorting order in SubscriptionManagerService.getAvailableSubscriptionInfoList
.sortedWith(compareBy({ it.simSlotIndex }, { it.subscriptionId }))
.sortedWith(compareBy({ it.sortableSimSlotIndex }, { it.subscriptionId }))
.also { Log.d(TAG, "getSelectableSubscriptionInfoList: $it") }
}
/** Subscription with invalid sim slot index has lowest sort order. */
private val SubscriptionInfo.sortableSimSlotIndex: Int
get() = if (simSlotIndex != SubscriptionManager.INVALID_SIM_SLOT_INDEX) {
simSlotIndex
} else {
Int.MAX_VALUE
}

View File

@@ -115,6 +115,27 @@ class SubscriptionRepositoryTest {
.containsExactly(SIM_SLOT_INDEX_0, SIM_SLOT_INDEX_1).inOrder()
}
@Test
fun getSelectableSubscriptionInfoList_oneNotInSlot_inSlotSortedFirst() {
mockSubscriptionManager.stub {
on { getAvailableSubscriptionInfoList() } doReturn listOf(
SubscriptionInfo.Builder().apply {
setSimSlotIndex(SubscriptionManager.INVALID_SIM_SLOT_INDEX)
setId(SUB_ID_3_NOT_IN_SLOT)
}.build(),
SubscriptionInfo.Builder().apply {
setSimSlotIndex(SIM_SLOT_INDEX_1)
setId(SUB_ID_IN_SLOT_1)
}.build(),
)
}
val subInfos = context.getSelectableSubscriptionInfoList()
assertThat(subInfos.map { it.simSlotIndex })
.containsExactly(SIM_SLOT_INDEX_1, SubscriptionManager.INVALID_SIM_SLOT_INDEX).inOrder()
}
@Test
fun getSelectableSubscriptionInfoList_sameGroupAndOneHasSlot_returnTheOneWithSimSlotIndex() {
mockSubscriptionManager.stub {