Fixed that SIM name not updated issue
The SIM name priority method did not give
the right priority. Added a unit test to
ensure user input always has the highest
priority.
Bug: 145925846
Test: Manual + unit tests
Change-Id: I100404997459731da93887237173f390af034139
diff --git a/src/java/com/android/internal/telephony/SubscriptionController.java b/src/java/com/android/internal/telephony/SubscriptionController.java
index 8117650..1692721 100644
--- a/src/java/com/android/internal/telephony/SubscriptionController.java
+++ b/src/java/com/android/internal/telephony/SubscriptionController.java
@@ -1543,14 +1543,13 @@
* @return int representing the priority. Higher value means higher priority.
*/
public static int getNameSourcePriority(@SimDisplayNameSource int nameSource) {
- int index = Arrays.binarySearch(
- new int[] {
- SubscriptionManager.NAME_SOURCE_DEFAULT_SOURCE,
- SubscriptionManager.NAME_SOURCE_SIM_PNN,
- SubscriptionManager.NAME_SOURCE_SIM_SPN,
- SubscriptionManager.NAME_SOURCE_CARRIER,
- SubscriptionManager.NAME_SOURCE_USER_INPUT // user has highest priority.
- }, nameSource);
+ int index = Arrays.asList(
+ SubscriptionManager.NAME_SOURCE_DEFAULT_SOURCE,
+ SubscriptionManager.NAME_SOURCE_SIM_PNN,
+ SubscriptionManager.NAME_SOURCE_SIM_SPN,
+ SubscriptionManager.NAME_SOURCE_CARRIER,
+ SubscriptionManager.NAME_SOURCE_USER_INPUT // user has highest priority.
+ ).indexOf(nameSource);
return (index < 0) ? 0 : index;
}
@@ -1583,6 +1582,10 @@
&& (getNameSourcePriority(subInfo.getNameSource())
> getNameSourcePriority(nameSource)
|| (displayName != null && displayName.equals(subInfo.getDisplayName())))) {
+ logd("Name source " + subInfo.getNameSource() + "'s priority "
+ + getNameSourcePriority(subInfo.getNameSource()) + " is greater than "
+ + "name source " + nameSource + "'s priority "
+ + getNameSourcePriority(nameSource) + ", return now.");
return 0;
}
}
diff --git a/tests/telephonytests/src/com/android/internal/telephony/SubscriptionControllerTest.java b/tests/telephonytests/src/com/android/internal/telephony/SubscriptionControllerTest.java
index 5370191..bc27429 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/SubscriptionControllerTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/SubscriptionControllerTest.java
@@ -1005,4 +1005,28 @@
mSubscriptionControllerUT.setAlwaysAllowMmsData(0, false);
verify(mDataEnabledSettings).setAlwaysAllowMmsData(eq(false));
}
+
+ @Test
+ @SmallTest
+ public void testNameSourcePriority() throws Exception {
+ assertTrue(mSubscriptionControllerUT.getNameSourcePriority(
+ SubscriptionManager.NAME_SOURCE_USER_INPUT)
+ > mSubscriptionControllerUT.getNameSourcePriority(
+ SubscriptionManager.NAME_SOURCE_CARRIER));
+
+ assertTrue(mSubscriptionControllerUT.getNameSourcePriority(
+ SubscriptionManager.NAME_SOURCE_CARRIER)
+ > mSubscriptionControllerUT.getNameSourcePriority(
+ SubscriptionManager.NAME_SOURCE_SIM_SPN));
+
+ assertTrue(mSubscriptionControllerUT.getNameSourcePriority(
+ SubscriptionManager.NAME_SOURCE_SIM_SPN)
+ > mSubscriptionControllerUT.getNameSourcePriority(
+ SubscriptionManager.NAME_SOURCE_SIM_PNN));
+
+ assertTrue(mSubscriptionControllerUT.getNameSourcePriority(
+ SubscriptionManager.NAME_SOURCE_SIM_PNN)
+ > mSubscriptionControllerUT.getNameSourcePriority(
+ SubscriptionManager.NAME_SOURCE_DEFAULT_SOURCE));
+ }
}