[Settings] Remove WFC enabled state condition of querying Telecomm.

- Query WFC enabled state by querying Telecomm may have problem.
 - Only use ImsMmTelManager API to check WFC enabled state.

Bug: 278108377
Test: atest passed
Change-Id: I6d1122bcf66ed5cd274e99b7b4f13558ab922162
This commit is contained in:
tom hsu
2023-05-02 15:06:40 +08:00
committed by Tom Hsu
parent d3897afda6
commit 21860761e8
5 changed files with 14 additions and 47 deletions

View File

@@ -940,28 +940,11 @@ public class MobileNetworkUtils {
* Copied from WifiCallingPreferenceController#isWifiCallingEnabled()
*/
public static boolean isWifiCallingEnabled(Context context, int subId,
@Nullable WifiCallingQueryImsState queryImsState,
@Nullable PhoneAccountHandle phoneAccountHandle) {
if (phoneAccountHandle == null){
phoneAccountHandle = context.getSystemService(TelecomManager.class)
.getSimCallManagerForSubscription(subId);
@Nullable WifiCallingQueryImsState queryImsState) {
if (queryImsState == null) {
queryImsState = new WifiCallingQueryImsState(context, subId);
}
boolean isWifiCallingEnabled;
if (phoneAccountHandle != null) {
final Intent intent = buildPhoneAccountConfigureIntent(context, phoneAccountHandle);
if (intent == null) {
Log.d(TAG, "Can not get phoneAccount configure intent.");
isWifiCallingEnabled = false;
} else {
isWifiCallingEnabled = true;
}
} else {
if (queryImsState == null) {
queryImsState = new WifiCallingQueryImsState(context, subId);
}
isWifiCallingEnabled = queryImsState.isReadyToWifiCalling();
}
return isWifiCallingEnabled;
return queryImsState.isReadyToWifiCalling();
}
/**

View File

@@ -22,7 +22,6 @@ import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.os.PersistableBundle;
import android.provider.Settings;
import android.telecom.PhoneAccountHandle;
import android.telecom.TelecomManager;
@@ -314,8 +313,7 @@ public class NetworkProviderWifiCallingGroup extends
@VisibleForTesting
protected boolean shouldShowWifiCallingForSub(int subId) {
if (SubscriptionManager.isValidSubscriptionId(subId)
&& MobileNetworkUtils.isWifiCallingEnabled(mContext, subId, queryImsState(subId),
null)) {
&& MobileNetworkUtils.isWifiCallingEnabled(mContext, subId, queryImsState(subId))) {
return true;
}
return false;

View File

@@ -71,7 +71,7 @@ public class WifiCallingPreferenceController extends TelephonyBasePreferenceCont
@Override
public int getAvailabilityStatus(int subId) {
return SubscriptionManager.isValidSubscriptionId(subId)
&& MobileNetworkUtils.isWifiCallingEnabled(mContext, subId, null, null)
&& MobileNetworkUtils.isWifiCallingEnabled(mContext, subId, null)
? AVAILABLE
: UNSUPPORTED_ON_DEVICE;
}

View File

@@ -257,8 +257,10 @@ public class WifiCallingSettings extends SettingsPreferenceFragment
for (SubscriptionInfo subInfo : subInfoList) {
int subId = subInfo.getSubscriptionId();
try {
if (MobileNetworkUtils.isWifiCallingEnabled(getContext(), subId,
queryImsState(subId), null)) {
if (MobileNetworkUtils.isWifiCallingEnabled(
getContext(),
subId,
queryImsState(subId))) {
selectedList.add(subInfo);
}
} catch (Exception exception) {}

View File

@@ -385,35 +385,19 @@ public class MobileNetworkUtilsTest {
}
@Test
public void isWifiCallingEnabled_hasPhoneAccountHandleAndHasActivityHandleIntent_returnTrue() {
buildPhoneAccountConfigureIntent(true);
assertTrue(MobileNetworkUtils.isWifiCallingEnabled(mContext, SUB_ID_1,
null, mPhoneAccountHandle));
}
@Test
public void isWifiCallingEnabled_hasPhoneAccountHandleAndNoActivityHandleIntent_returnFalse() {
buildPhoneAccountConfigureIntent(false);
assertFalse(MobileNetworkUtils.isWifiCallingEnabled(mContext, SUB_ID_1,
null, mPhoneAccountHandle));
}
@Test
public void isWifiCallingEnabled_noPhoneAccountHandleAndWifiCallingIsReady_returnTrue() {
public void isWifiCallingEnabled_wifiCallingIsReady_returnTrue() {
setWifiCallingEnabled(true);
assertTrue(MobileNetworkUtils.isWifiCallingEnabled(mContext, SUB_ID_1,
mMockQueryWfcState, null));
mMockQueryWfcState));
}
@Test
public void isWifiCallingEnabled_noPhoneAccountHandleAndWifiCallingNotReady_returnFalse() {
public void isWifiCallingEnabled_wifiCallingNotReady_returnFalse() {
setWifiCallingEnabled(false);
assertFalse(MobileNetworkUtils.isWifiCallingEnabled(mContext, SUB_ID_1,
mMockQueryWfcState, null));
mMockQueryWfcState));
}
private void setWifiCallingEnabled(boolean enabled){