Loading src/com/android/settings/network/ims/ImsQueryController.java +0 −5 Original line number Diff line number Diff line Loading @@ -31,11 +31,6 @@ abstract class ImsQueryController { private volatile int mTech; private volatile int mTransportType; /** * Constructor for query IMS status */ ImsQueryController() {} /** * Constructor for query IMS status * Loading src/com/android/settings/network/ims/ImsQueryProvisioningStat.java +1 −1 Original line number Diff line number Diff line Loading @@ -45,7 +45,7 @@ public class ImsQueryProvisioningStat implements ImsQuery { } /** * Implementation of interface {@link ImsQuery} * Implementation of interface {@link ImsQuery#query()} * * @return result of query */ Loading src/com/android/settings/network/ims/WifiCallingQueryImsState.java +41 −1 Original line number Diff line number Diff line Loading @@ -18,10 +18,17 @@ package com.android.settings.network.ims; import android.content.Context; import android.telecom.TelecomManager; import android.telephony.AccessNetworkConstants; import android.telephony.SubscriptionManager; import android.telephony.ims.feature.MmTelFeature; import android.telephony.ims.stub.ImsRegistrationImplBase; import androidx.annotation.VisibleForTesting; import com.android.ims.ImsManager; import com.android.settings.network.SubscriptionUtil; import com.android.settings.network.telephony.MobileNetworkUtils; /** * Controller class for querying Wifi calling status */ Loading @@ -37,7 +44,9 @@ public class WifiCallingQueryImsState extends ImsQueryController { * @param subId subscription's id */ public WifiCallingQueryImsState(Context context, int subId) { super(); super(MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE, ImsRegistrationImplBase.REGISTRATION_TECH_IWLAN, AccessNetworkConstants.TRANSPORT_TYPE_WLAN); mContext = context; mSubId = subId; } Loading @@ -50,6 +59,37 @@ public class WifiCallingQueryImsState extends ImsQueryController { return new ImsQueryWfcUserSetting(subId); } @VisibleForTesting ImsManager getImsManager(int subId) { return ImsManager.getInstance(mContext, SubscriptionUtil.getPhoneId(mContext, subId)); } /** * Check whether Wifi Calling has been provisioned or not on this subscription * * @return true when Wifi Calling has been enabled, otherwise false */ public boolean isWifiCallingProvisioned() { final ImsManager imsManager = getImsManager(mSubId); if (imsManager == null) { return false; } return imsManager.isWfcEnabledByPlatform() && isProvisionedOnDevice(mSubId).query(); } /** * Check whether Wifi Calling can be perform or not on this subscription * * @return true when Wifi Calling can be performed, otherwise false */ public boolean isReadyToWifiCalling() { return isWifiCallingProvisioned() && MobileNetworkUtils.isImsServiceStateReady(getImsManager(mSubId)); } /** * Get allowance status for user to alter configuration * Loading src/com/android/settings/network/telephony/WifiCallingPreferenceController.java +20 −7 Original line number Diff line number Diff line Loading @@ -34,9 +34,7 @@ import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.ims.ImsManager; import com.android.settings.R; import com.android.settings.network.SubscriptionUtil; import com.android.settings.network.ims.WifiCallingQueryImsState; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnStart; Loading @@ -56,8 +54,6 @@ public class WifiCallingPreferenceController extends TelephonyBasePreferenceCont Integer mCallState; @VisibleForTesting CarrierConfigManager mCarrierConfigManager; @VisibleForTesting ImsManager mImsManager; private ImsMmTelManager mImsMmTelManager; @VisibleForTesting PhoneAccountHandle mSimCallManager; Loading @@ -73,7 +69,7 @@ public class WifiCallingPreferenceController extends TelephonyBasePreferenceCont @Override public int getAvailabilityStatus(int subId) { return SubscriptionManager.isValidSubscriptionId(subId) && MobileNetworkUtils.isWifiCallingEnabled(mContext, subId) && isWifiCallingEnabled(mContext, subId) ? AVAILABLE : UNSUPPORTED_ON_DEVICE; } Loading Loading @@ -164,8 +160,6 @@ public class WifiCallingPreferenceController extends TelephonyBasePreferenceCont public WifiCallingPreferenceController init(int subId) { mSubId = subId; mImsManager = ImsManager.getInstance(mContext, SubscriptionUtil.getPhoneId(mContext, mSubId)); mImsMmTelManager = getImsMmTelManager(mSubId); mSimCallManager = mContext.getSystemService(TelecomManager.class) .getSimCallManagerForSubscription(mSubId); Loading Loading @@ -221,4 +215,23 @@ public class WifiCallingPreferenceController extends TelephonyBasePreferenceCont mTelephonyManager.listen(this, PhoneStateListener.LISTEN_NONE); } } private boolean isWifiCallingEnabled(Context context, int subId) { final PhoneAccountHandle simCallManager = context.getSystemService(TelecomManager.class) .getSimCallManagerForSubscription(subId); final int phoneId = SubscriptionManager.getSlotIndex(subId); boolean isWifiCallingEnabled; if (simCallManager != null) { final Intent intent = MobileNetworkUtils.buildPhoneAccountConfigureIntent( context, simCallManager); isWifiCallingEnabled = intent != null; } else { isWifiCallingEnabled = queryImsState(subId).isReadyToWifiCalling(); } return isWifiCallingEnabled; } } src/com/android/settings/wifi/calling/WifiCallingSettings.java +7 −24 Original line number Diff line number Diff line Loading @@ -22,9 +22,6 @@ import android.os.Bundle; import android.provider.Settings; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import android.telephony.ims.ProvisioningManager; import android.telephony.ims.feature.MmTelFeature; import android.telephony.ims.stub.ImsRegistrationImplBase; import android.util.Log; import android.view.LayoutInflater; import android.view.View; Loading @@ -35,11 +32,11 @@ import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentPagerAdapter; import com.android.ims.ImsManager; import com.android.internal.util.CollectionUtils; import com.android.settings.R; import com.android.settings.core.InstrumentedFragment; import com.android.settings.network.SubscriptionUtil; import com.android.settings.network.ims.WifiCallingQueryImsState; import com.android.settings.search.actionbar.SearchMenuController; import com.android.settings.support.actionbar.HelpMenuController; import com.android.settings.support.actionbar.HelpResourceProvider; Loading Loading @@ -196,25 +193,6 @@ public class WifiCallingSettings extends InstrumentedFragment implements HelpRes } } @VisibleForTesting boolean isWfcEnabledByPlatform(SubscriptionInfo info) { final ImsManager imsManager = ImsManager.getInstance(getActivity(), info.getSimSlotIndex()); return imsManager.isWfcEnabledByPlatform(); } @VisibleForTesting boolean isWfcProvisionedOnDevice(SubscriptionInfo info) { final ProvisioningManager provisioningMgr = ProvisioningManager.createForSubscriptionId(info.getSubscriptionId()); if (provisioningMgr == null) { return true; } return provisioningMgr.getProvisioningStatusForCapability( MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE, ImsRegistrationImplBase.REGISTRATION_TECH_IWLAN); } private void updateSubList() { mSil = SubscriptionUtil.getActiveSubscriptions( getContext().getSystemService(SubscriptionManager.class)); Loading @@ -225,7 +203,7 @@ public class WifiCallingSettings extends InstrumentedFragment implements HelpRes } for (int i = 0; i < mSil.size(); ) { final SubscriptionInfo info = mSil.get(i); if (!isWfcEnabledByPlatform(info) || !isWfcProvisionedOnDevice(info)) { if (!queryImsState(info.getSubscriptionId()).isWifiCallingProvisioned()) { mSil.remove(i); } else { i++; Loading @@ -241,4 +219,9 @@ public class WifiCallingSettings extends InstrumentedFragment implements HelpRes getActivity().getActionBar().setTitle(title); } } @VisibleForTesting WifiCallingQueryImsState queryImsState(int subId) { return new WifiCallingQueryImsState(getContext(), subId); } } Loading
src/com/android/settings/network/ims/ImsQueryController.java +0 −5 Original line number Diff line number Diff line Loading @@ -31,11 +31,6 @@ abstract class ImsQueryController { private volatile int mTech; private volatile int mTransportType; /** * Constructor for query IMS status */ ImsQueryController() {} /** * Constructor for query IMS status * Loading
src/com/android/settings/network/ims/ImsQueryProvisioningStat.java +1 −1 Original line number Diff line number Diff line Loading @@ -45,7 +45,7 @@ public class ImsQueryProvisioningStat implements ImsQuery { } /** * Implementation of interface {@link ImsQuery} * Implementation of interface {@link ImsQuery#query()} * * @return result of query */ Loading
src/com/android/settings/network/ims/WifiCallingQueryImsState.java +41 −1 Original line number Diff line number Diff line Loading @@ -18,10 +18,17 @@ package com.android.settings.network.ims; import android.content.Context; import android.telecom.TelecomManager; import android.telephony.AccessNetworkConstants; import android.telephony.SubscriptionManager; import android.telephony.ims.feature.MmTelFeature; import android.telephony.ims.stub.ImsRegistrationImplBase; import androidx.annotation.VisibleForTesting; import com.android.ims.ImsManager; import com.android.settings.network.SubscriptionUtil; import com.android.settings.network.telephony.MobileNetworkUtils; /** * Controller class for querying Wifi calling status */ Loading @@ -37,7 +44,9 @@ public class WifiCallingQueryImsState extends ImsQueryController { * @param subId subscription's id */ public WifiCallingQueryImsState(Context context, int subId) { super(); super(MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE, ImsRegistrationImplBase.REGISTRATION_TECH_IWLAN, AccessNetworkConstants.TRANSPORT_TYPE_WLAN); mContext = context; mSubId = subId; } Loading @@ -50,6 +59,37 @@ public class WifiCallingQueryImsState extends ImsQueryController { return new ImsQueryWfcUserSetting(subId); } @VisibleForTesting ImsManager getImsManager(int subId) { return ImsManager.getInstance(mContext, SubscriptionUtil.getPhoneId(mContext, subId)); } /** * Check whether Wifi Calling has been provisioned or not on this subscription * * @return true when Wifi Calling has been enabled, otherwise false */ public boolean isWifiCallingProvisioned() { final ImsManager imsManager = getImsManager(mSubId); if (imsManager == null) { return false; } return imsManager.isWfcEnabledByPlatform() && isProvisionedOnDevice(mSubId).query(); } /** * Check whether Wifi Calling can be perform or not on this subscription * * @return true when Wifi Calling can be performed, otherwise false */ public boolean isReadyToWifiCalling() { return isWifiCallingProvisioned() && MobileNetworkUtils.isImsServiceStateReady(getImsManager(mSubId)); } /** * Get allowance status for user to alter configuration * Loading
src/com/android/settings/network/telephony/WifiCallingPreferenceController.java +20 −7 Original line number Diff line number Diff line Loading @@ -34,9 +34,7 @@ import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.ims.ImsManager; import com.android.settings.R; import com.android.settings.network.SubscriptionUtil; import com.android.settings.network.ims.WifiCallingQueryImsState; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnStart; Loading @@ -56,8 +54,6 @@ public class WifiCallingPreferenceController extends TelephonyBasePreferenceCont Integer mCallState; @VisibleForTesting CarrierConfigManager mCarrierConfigManager; @VisibleForTesting ImsManager mImsManager; private ImsMmTelManager mImsMmTelManager; @VisibleForTesting PhoneAccountHandle mSimCallManager; Loading @@ -73,7 +69,7 @@ public class WifiCallingPreferenceController extends TelephonyBasePreferenceCont @Override public int getAvailabilityStatus(int subId) { return SubscriptionManager.isValidSubscriptionId(subId) && MobileNetworkUtils.isWifiCallingEnabled(mContext, subId) && isWifiCallingEnabled(mContext, subId) ? AVAILABLE : UNSUPPORTED_ON_DEVICE; } Loading Loading @@ -164,8 +160,6 @@ public class WifiCallingPreferenceController extends TelephonyBasePreferenceCont public WifiCallingPreferenceController init(int subId) { mSubId = subId; mImsManager = ImsManager.getInstance(mContext, SubscriptionUtil.getPhoneId(mContext, mSubId)); mImsMmTelManager = getImsMmTelManager(mSubId); mSimCallManager = mContext.getSystemService(TelecomManager.class) .getSimCallManagerForSubscription(mSubId); Loading Loading @@ -221,4 +215,23 @@ public class WifiCallingPreferenceController extends TelephonyBasePreferenceCont mTelephonyManager.listen(this, PhoneStateListener.LISTEN_NONE); } } private boolean isWifiCallingEnabled(Context context, int subId) { final PhoneAccountHandle simCallManager = context.getSystemService(TelecomManager.class) .getSimCallManagerForSubscription(subId); final int phoneId = SubscriptionManager.getSlotIndex(subId); boolean isWifiCallingEnabled; if (simCallManager != null) { final Intent intent = MobileNetworkUtils.buildPhoneAccountConfigureIntent( context, simCallManager); isWifiCallingEnabled = intent != null; } else { isWifiCallingEnabled = queryImsState(subId).isReadyToWifiCalling(); } return isWifiCallingEnabled; } }
src/com/android/settings/wifi/calling/WifiCallingSettings.java +7 −24 Original line number Diff line number Diff line Loading @@ -22,9 +22,6 @@ import android.os.Bundle; import android.provider.Settings; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import android.telephony.ims.ProvisioningManager; import android.telephony.ims.feature.MmTelFeature; import android.telephony.ims.stub.ImsRegistrationImplBase; import android.util.Log; import android.view.LayoutInflater; import android.view.View; Loading @@ -35,11 +32,11 @@ import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentPagerAdapter; import com.android.ims.ImsManager; import com.android.internal.util.CollectionUtils; import com.android.settings.R; import com.android.settings.core.InstrumentedFragment; import com.android.settings.network.SubscriptionUtil; import com.android.settings.network.ims.WifiCallingQueryImsState; import com.android.settings.search.actionbar.SearchMenuController; import com.android.settings.support.actionbar.HelpMenuController; import com.android.settings.support.actionbar.HelpResourceProvider; Loading Loading @@ -196,25 +193,6 @@ public class WifiCallingSettings extends InstrumentedFragment implements HelpRes } } @VisibleForTesting boolean isWfcEnabledByPlatform(SubscriptionInfo info) { final ImsManager imsManager = ImsManager.getInstance(getActivity(), info.getSimSlotIndex()); return imsManager.isWfcEnabledByPlatform(); } @VisibleForTesting boolean isWfcProvisionedOnDevice(SubscriptionInfo info) { final ProvisioningManager provisioningMgr = ProvisioningManager.createForSubscriptionId(info.getSubscriptionId()); if (provisioningMgr == null) { return true; } return provisioningMgr.getProvisioningStatusForCapability( MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE, ImsRegistrationImplBase.REGISTRATION_TECH_IWLAN); } private void updateSubList() { mSil = SubscriptionUtil.getActiveSubscriptions( getContext().getSystemService(SubscriptionManager.class)); Loading @@ -225,7 +203,7 @@ public class WifiCallingSettings extends InstrumentedFragment implements HelpRes } for (int i = 0; i < mSil.size(); ) { final SubscriptionInfo info = mSil.get(i); if (!isWfcEnabledByPlatform(info) || !isWfcProvisionedOnDevice(info)) { if (!queryImsState(info.getSubscriptionId()).isWifiCallingProvisioned()) { mSil.remove(i); } else { i++; Loading @@ -241,4 +219,9 @@ public class WifiCallingSettings extends InstrumentedFragment implements HelpRes getActivity().getActionBar().setTitle(title); } } @VisibleForTesting WifiCallingQueryImsState queryImsState(int subId) { return new WifiCallingQueryImsState(getContext(), subId); } }