[Settings] eSIM existance detection rule change

1. eSIM retrieved from SubscriptionManager#getAvailableSubscriptionInfoList()
should be considered as existed all the time.

2. When SIM are both inactive(or active), sorted the ordering based on ordering provided by telephony framework.

Bug: 195090132
Bug: 195091953
Test: local
Change-Id: I2fe43a35e5b7965bde3b579e2297e9cdd89ec228
This commit is contained in:
Bonian Chen
2021-07-30 23:47:04 +08:00
parent 2cad599ca6
commit 848d097b94
3 changed files with 9 additions and 6 deletions

View File

@@ -16,6 +16,7 @@
package com.android.settings.network.helper;
import android.os.ParcelUuid;
import android.util.Log;
import androidx.annotation.Keep;
import androidx.annotation.VisibleForTesting;
@@ -44,9 +45,12 @@ import java.util.stream.Collectors;
*/
public class SubscriptionGrouping
implements UnaryOperator<List<SubscriptionAnnotation>> {
private static final String LOG_TAG = "SubscriptionGrouping";
// implementation of UnaryOperator
public List<SubscriptionAnnotation> apply(List<SubscriptionAnnotation> listOfSubscriptions) {
Log.d(LOG_TAG, "Grouping " + listOfSubscriptions);
// group by GUID
Map<ParcelUuid, List<SubscriptionAnnotation>> groupedSubInfoList =
listOfSubscriptions.stream()
@@ -89,8 +93,8 @@ public class SubscriptionGrouping
annoSelector = annoSelector
// eSIM in front of pSIM
.thenComparingInt(anno -> -anno.getType())
// subscription ID in reverse order
.thenComparingInt(anno -> -anno.getSubscriptionId());
// maintain the ordering within from list given
.thenComparingInt(anno -> annoList.indexOf(anno));
return annoList.stream().sorted(annoSelector).findFirst().orElse(null);
}
}