Fix unable to erase eSIM
Before this change, - eSIM will be erased twice, one with result callback and one without result callback. - During reset, ResetNetworkConfirm could interrupted by subscription invalid event, which happens during reset. After this change, - eSIM will be erased only once, result callback is registered separately. - Explicit exit the page when reset finish, and ignore the subscription invalid event after reset started. Bug: 328293508 Flag: EXEMPT bug fix Test: manual - dry run the reset Test: ResetNetworkConfirmTest Change-Id: I51395a556b1c8775192d5897a87f13046c042578
This commit is contained in:
@@ -65,6 +65,8 @@ public class ResetNetworkOperationBuilder {
|
||||
|
||||
private Context mContext;
|
||||
private List<Runnable> mResetSequence = new ArrayList<Runnable>();
|
||||
@Nullable
|
||||
private Consumer<Boolean> mResetEsimResultCallback = null;
|
||||
|
||||
/**
|
||||
* Constructor of builder.
|
||||
@@ -129,31 +131,32 @@ public class ResetNetworkOperationBuilder {
|
||||
}
|
||||
|
||||
/**
|
||||
* Append a step of resetting E-SIM.
|
||||
* @param callerPackage package name of caller
|
||||
* Append a result callback of resetting E-SIM.
|
||||
* @param resultCallback a callback dealing with result of resetting eSIM
|
||||
* @return this
|
||||
*/
|
||||
public ResetNetworkOperationBuilder resetEsim(String callerPackage) {
|
||||
resetEsim(callerPackage, null);
|
||||
public ResetNetworkOperationBuilder resetEsimResultCallback(Consumer<Boolean> resultCallback) {
|
||||
mResetEsimResultCallback = resultCallback;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Append a step of resetting E-SIM.
|
||||
* @param callerPackage package name of caller
|
||||
* @param resultCallback a Consumer<Boolean> dealing with result of resetting eSIM
|
||||
* @return this
|
||||
*/
|
||||
public ResetNetworkOperationBuilder resetEsim(String callerPackage,
|
||||
Consumer<Boolean> resultCallback) {
|
||||
public ResetNetworkOperationBuilder resetEsim(String callerPackage) {
|
||||
Runnable runnable = () -> {
|
||||
long startTime = SystemClock.elapsedRealtime();
|
||||
|
||||
if (!DRY_RUN) {
|
||||
Boolean wipped = RecoverySystem.wipeEuiccData(mContext, callerPackage);
|
||||
if (resultCallback != null) {
|
||||
resultCallback.accept(wipped);
|
||||
}
|
||||
boolean wipped;
|
||||
if (DRY_RUN) {
|
||||
wipped = true;
|
||||
} else {
|
||||
wipped = RecoverySystem.wipeEuiccData(mContext, callerPackage);
|
||||
}
|
||||
if (mResetEsimResultCallback != null) {
|
||||
mResetEsimResultCallback.accept(wipped);
|
||||
}
|
||||
|
||||
long endTime = SystemClock.elapsedRealtime();
|
||||
|
||||
Reference in New Issue
Block a user