Refactor SimStatusDialogRepository

- Move data logic into repository for better testing
- Check carrier config first, if not shows some items, we don't need to
  load data
- Tests in SimStatusDialogControllerTest will be fixed in later cls

Bug: 337417520
Test: manual - on SIM status
Test: unit test
Change-Id: Ia0c32882f0b35ec9154b3da58ac6a7b98c879efc
This commit is contained in:
Chaohui Wang
2024-05-27 18:24:52 +08:00
parent 659e512b1c
commit 3b925a0cfe
5 changed files with 113 additions and 64 deletions

View File

@@ -227,7 +227,6 @@ public class SimStatusDialogController implements DefaultLifecycleObserver {
updateNetworkType();
updateRoamingStatus(serviceState);
updateIccidNumber();
updateImsRegistrationState();
}
/**
@@ -257,7 +256,7 @@ public class SimStatusDialogController implements DefaultLifecycleObserver {
.registerTelephonyCallback(mContext.getMainExecutor(), mTelephonyCallback);
mSubscriptionManager.addOnSubscriptionsChangedListener(
mContext.getMainExecutor(), mOnSubscriptionsChangedListener);
collectImsRegistered(owner);
collectSimStatusDialogInfo(owner);
if (mShowLatestAreaInfo) {
updateAreaInfoText();
@@ -581,39 +580,20 @@ public class SimStatusDialogController implements DefaultLifecycleObserver {
}
}
private boolean isImsRegistrationStateShowUp() {
if (mSubscriptionInfo == null) {
return false;
}
final int subscriptionId = mSubscriptionInfo.getSubscriptionId();
final PersistableBundle carrierConfig =
mCarrierConfigManager.getConfigForSubId(subscriptionId);
return carrierConfig == null ? false :
carrierConfig.getBoolean(
CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL);
private void updateImsRegistrationState(@Nullable Boolean imsRegistered) {
boolean isVisible = imsRegistered != null;
mDialog.setSettingVisibility(IMS_REGISTRATION_STATE_LABEL_ID, isVisible);
mDialog.setSettingVisibility(IMS_REGISTRATION_STATE_VALUE_ID, isVisible);
int stringId = Boolean.TRUE.equals(imsRegistered)
? com.android.settingslib.R.string.ims_reg_status_registered
: com.android.settingslib.R.string.ims_reg_status_not_registered;
mDialog.setText(IMS_REGISTRATION_STATE_VALUE_ID, mRes.getString(stringId));
}
private void updateImsRegistrationState() {
if (isImsRegistrationStateShowUp()) {
return;
}
mDialog.removeSettingFromScreen(IMS_REGISTRATION_STATE_LABEL_ID);
mDialog.removeSettingFromScreen(IMS_REGISTRATION_STATE_VALUE_ID);
}
private void collectImsRegistered(@NonNull LifecycleOwner owner) {
if (!isImsRegistrationStateShowUp()) {
return;
}
new ImsRegistrationStateController(mContext).collectImsRegistered(
owner, mSlotIndex, (Boolean imsRegistered) -> {
if (imsRegistered) {
mDialog.setText(IMS_REGISTRATION_STATE_VALUE_ID, mRes.getString(
com.android.settingslib.R.string.ims_reg_status_registered));
} else {
mDialog.setText(IMS_REGISTRATION_STATE_VALUE_ID, mRes.getString(
com.android.settingslib.R.string.ims_reg_status_not_registered));
}
private void collectSimStatusDialogInfo(@NonNull LifecycleOwner owner) {
new SimStatusDialogRepository(mContext).collectSimStatusDialogInfo(
owner, mSlotIndex, (simStatusDialogInfo) -> {
updateImsRegistrationState(simStatusDialogInfo.getImsRegistered());
return Unit.INSTANCE;
}
);