SIM refresh of type init should not dispose CatService.
Test: Basic telephony sanity
Bug: 78240540
Change-Id: Ied9230646c1e722ae33f50f4dfdacae77cb921c1
diff --git a/src/java/com/android/internal/telephony/uicc/UiccCard.java b/src/java/com/android/internal/telephony/uicc/UiccCard.java
index e55170a..68463c5 100644
--- a/src/java/com/android/internal/telephony/uicc/UiccCard.java
+++ b/src/java/com/android/internal/telephony/uicc/UiccCard.java
@@ -230,13 +230,13 @@
*
* A null aid implies a card level reset - all applications must be reset.
*
- * @deprecated Please use {@link UiccProfile#resetAppWithAid(String)} instead.
+ * @deprecated Please use {@link UiccProfile#resetAppWithAid(String, boolean)} instead.
*/
@Deprecated
- public boolean resetAppWithAid(String aid) {
+ public boolean resetAppWithAid(String aid, boolean disposeCatService) {
synchronized (mLock) {
if (mUiccProfile != null) {
- return mUiccProfile.resetAppWithAid(aid);
+ return mUiccProfile.resetAppWithAid(aid, disposeCatService);
} else {
return false;
}
diff --git a/src/java/com/android/internal/telephony/uicc/UiccController.java b/src/java/com/android/internal/telephony/uicc/UiccController.java
index 033f0a1..670b85a 100644
--- a/src/java/com/android/internal/telephony/uicc/UiccController.java
+++ b/src/java/com/android/internal/telephony/uicc/UiccController.java
@@ -642,14 +642,17 @@
boolean changed = false;
switch(resp.refreshResult) {
+ // Reset the required apps when we know about the refresh so that
+ // anyone interested does not get stale state.
case IccRefreshResponse.REFRESH_RESULT_RESET:
+ changed = uiccCard.resetAppWithAid(resp.aid, true /* disposeCatService */);
+ break;
case IccRefreshResponse.REFRESH_RESULT_INIT:
- // Reset the required apps when we know about the refresh so that
- // anyone interested does not get stale state.
- changed = uiccCard.resetAppWithAid(resp.aid);
- break;
+ // don't dispose CatService on SIM REFRESH of type INIT
+ changed = uiccCard.resetAppWithAid(resp.aid, false /* disposeCatService */);
+ break;
default:
- return;
+ return;
}
if (changed && resp.refreshResult == IccRefreshResponse.REFRESH_RESULT_RESET) {
diff --git a/src/java/com/android/internal/telephony/uicc/UiccProfile.java b/src/java/com/android/internal/telephony/uicc/UiccProfile.java
index e80ab1d..2407b71 100644
--- a/src/java/com/android/internal/telephony/uicc/UiccProfile.java
+++ b/src/java/com/android/internal/telephony/uicc/UiccProfile.java
@@ -1275,8 +1275,13 @@
* Resets the application with the input AID. Returns true if any changes were made.
*
* A null aid implies a card level reset - all applications must be reset.
+ *
+ * @param aid aid of the application which should be reset; null imples all applications
+ * @param disposeCatService flag indicating if CatService should be disposed as part of
+ * this reset
+ * @return boolean indicating if there was any change made as part of the reset
*/
- public boolean resetAppWithAid(String aid) {
+ public boolean resetAppWithAid(String aid, boolean disposeCatService) {
synchronized (mLock) {
boolean changed = false;
for (int i = 0; i < mUiccApplications.length; i++) {
@@ -1293,7 +1298,7 @@
mCarrierPrivilegeRules = null;
changed = true;
}
- if (mCatService != null) {
+ if (disposeCatService && mCatService != null) {
mCatService.dispose();
mCatService = null;
changed = true;