Loading src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java +49 −23 Original line number Original line Diff line number Diff line Loading @@ -46,7 +46,6 @@ import androidx.preference.Preference.OnPreferenceClickListener; import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen; import com.android.ims.ImsConfig; import com.android.ims.ImsConfig; import com.android.ims.ImsException; import com.android.ims.ImsManager; import com.android.ims.ImsManager; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.telephony.Phone; import com.android.internal.telephony.Phone; Loading @@ -56,6 +55,7 @@ import com.android.settings.SettingsPreferenceFragment; import com.android.settings.Utils; import com.android.settings.Utils; import com.android.settings.core.SubSettingLauncher; import com.android.settings.core.SubSettingLauncher; import com.android.settings.network.SubscriptionUtil; import com.android.settings.network.SubscriptionUtil; import com.android.settings.network.ims.WifiCallingQueryImsState; import com.android.settings.network.telephony.MobileNetworkUtils; import com.android.settings.network.telephony.MobileNetworkUtils; import com.android.settings.widget.SwitchBar; import com.android.settings.widget.SwitchBar; Loading Loading @@ -102,6 +102,7 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment private int mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; private int mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; private ImsManager mImsManager; private ImsManager mImsManager; private ImsMmTelManager mImsMmTelManager; private ImsMmTelManager mImsMmTelManager; private ProvisioningManager mProvisioningManager; private TelephonyManager mTelephonyManager; private TelephonyManager mTelephonyManager; private final PhoneStateListener mPhoneStateListener = new PhoneStateListener() { private final PhoneStateListener mPhoneStateListener = new PhoneStateListener() { Loading Loading @@ -245,6 +246,19 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment return 0; return 0; } } @VisibleForTesting WifiCallingQueryImsState queryImsState(int subId) { return new WifiCallingQueryImsState(getContext(), subId); } @VisibleForTesting ProvisioningManager getImsProvisioningManager() { if (!SubscriptionManager.isValidSubscriptionId(mSubId)) { return null; } return ProvisioningManager.createForSubscriptionId(mSubId); } @VisibleForTesting @VisibleForTesting ImsManager getImsManager() { ImsManager getImsManager() { return ImsManager.getInstance(getActivity(), return ImsManager.getInstance(getActivity(), Loading @@ -253,6 +267,9 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment @VisibleForTesting @VisibleForTesting ImsMmTelManager getImsMmTelManager() { ImsMmTelManager getImsMmTelManager() { if (!SubscriptionManager.isValidSubscriptionId(mSubId)) { return null; } return ImsMmTelManager.createForSubscriptionId(mSubId); return ImsMmTelManager.createForSubscriptionId(mSubId); } } Loading @@ -272,9 +289,10 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment } } mImsManager = getImsManager(); mImsManager = getImsManager(); mProvisioningManager = getImsProvisioningManager(); mImsMmTelManager = getImsMmTelManager(); mImsMmTelManager = getImsMmTelManager(); mTelephonyManager = ((TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE)); mTelephonyManager = getActivity().getSystemService(TelephonyManager.class); mButtonWfcMode = findPreference(BUTTON_WFC_MODE); mButtonWfcMode = findPreference(BUTTON_WFC_MODE); mButtonWfcMode.setOnPreferenceChangeListener(this); mButtonWfcMode.setOnPreferenceChangeListener(this); Loading Loading @@ -342,7 +360,7 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment } } } } Resources res = getResourcesForSubId(); final Resources res = getResourcesForSubId(); mButtonWfcMode.setTitle(res.getString(R.string.wifi_calling_mode_title)); mButtonWfcMode.setTitle(res.getString(R.string.wifi_calling_mode_title)); mButtonWfcMode.setDialogTitle(res.getString(R.string.wifi_calling_mode_dialog_title)); mButtonWfcMode.setDialogTitle(res.getString(R.string.wifi_calling_mode_dialog_title)); mButtonWfcRoamingMode.setTitle(res.getString(R.string.wifi_calling_roaming_mode_title)); mButtonWfcRoamingMode.setTitle(res.getString(R.string.wifi_calling_roaming_mode_title)); Loading Loading @@ -383,7 +401,8 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment } } // NOTE: Buttons will be enabled/disabled in mPhoneStateListener // NOTE: Buttons will be enabled/disabled in mPhoneStateListener final boolean wfcEnabled = mImsManager.isWfcEnabledByUser() final WifiCallingQueryImsState queryIms = queryImsState(mSubId); final boolean wfcEnabled = queryIms.isEnabledByUser() && mImsManager.isNonTtyOrTtyOnVolteEnabled(); && mImsManager.isNonTtyOrTtyOnVolteEnabled(); mSwitch.setChecked(wfcEnabled); mSwitch.setChecked(wfcEnabled); final int wfcMode = mImsMmTelManager.getVoWiFiModeSetting(); final int wfcMode = mImsMmTelManager.getVoWiFiModeSetting(); Loading @@ -397,8 +416,6 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment public void onResume() { public void onResume() { super.onResume(); super.onResume(); final Context context = getActivity(); updateBody(); updateBody(); if (mImsManager.isWfcEnabledByPlatform()) { if (mImsManager.isWfcEnabledByPlatform()) { Loading @@ -409,6 +426,7 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment mValidListener = true; mValidListener = true; } } final Context context = getActivity(); context.registerReceiver(mIntentReceiver, mIntentFilter); context.registerReceiver(mIntentReceiver, mIntentFilter); final Intent intent = getActivity().getIntent(); final Intent intent = getActivity().getIntent(); Loading @@ -417,12 +435,7 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment } } // Register callback for provisioning changes. // Register callback for provisioning changes. try { registerProvisioningChangedCallback(); mImsManager.getConfigInterface().addConfigCallback(mProvisioningCallback); } catch (ImsException e) { Log.w(TAG, "onResume: Unable to register callback for provisioning changes."); } } } @Override @Override Loading @@ -442,13 +455,7 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment context.unregisterReceiver(mIntentReceiver); context.unregisterReceiver(mIntentReceiver); // Remove callback for provisioning changes. // Remove callback for provisioning changes. try { unregisterProvisioningChangedCallback(); mImsManager.getConfigInterface().removeConfigCallback( mProvisioningCallback.getBinder()); } catch (ImsException e) { Log.w(TAG, "onPause: Unable to remove callback for provisioning changes"); } } } /** /** Loading Loading @@ -508,7 +515,7 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment */ */ private void updateWfcMode(boolean wfcEnabled) { private void updateWfcMode(boolean wfcEnabled) { Log.i(TAG, "updateWfcMode(" + wfcEnabled + ")"); Log.i(TAG, "updateWfcMode(" + wfcEnabled + ")"); mImsManager.setWfcSetting(wfcEnabled); mImsMmTelManager.setVoWiFiSettingEnabled(wfcEnabled); final int wfcMode = mImsMmTelManager.getVoWiFiModeSetting(); final int wfcMode = mImsMmTelManager.getVoWiFiModeSetting(); final int wfcRoamingMode = mImsMmTelManager.getVoWiFiRoamingModeSetting(); final int wfcRoamingMode = mImsMmTelManager.getVoWiFiRoamingModeSetting(); Loading @@ -524,8 +531,6 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment public void onActivityResult(int requestCode, int resultCode, Intent data) { public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); super.onActivityResult(requestCode, resultCode, data); final Context context = getActivity(); Log.d(TAG, "WFC activity request = " + requestCode + " result = " + resultCode); Log.d(TAG, "WFC activity request = " + requestCode + " result = " + resultCode); switch (requestCode) { switch (requestCode) { Loading Loading @@ -619,7 +624,7 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment private CharSequence getWfcModeSummary(int wfcMode) { private CharSequence getWfcModeSummary(int wfcMode) { int resId = com.android.internal.R.string.wifi_calling_off_summary; int resId = com.android.internal.R.string.wifi_calling_off_summary; if (mImsManager.isWfcEnabledByUser()) { if (queryImsState(mSubId).isEnabledByUser()) { switch (wfcMode) { switch (wfcMode) { case ImsMmTelManager.WIFI_MODE_WIFI_ONLY: case ImsMmTelManager.WIFI_MODE_WIFI_ONLY: resId = com.android.internal.R.string.wfc_mode_wifi_only_summary; resId = com.android.internal.R.string.wfc_mode_wifi_only_summary; Loading @@ -641,4 +646,25 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment Resources getResourcesForSubId() { Resources getResourcesForSubId() { return SubscriptionManager.getResourcesForSubId(getContext(), mSubId); return SubscriptionManager.getResourcesForSubId(getContext(), mSubId); } } @VisibleForTesting void registerProvisioningChangedCallback() { if (mProvisioningManager == null) { return; } try { mProvisioningManager.registerProvisioningChangedCallback(getContext().getMainExecutor(), mProvisioningCallback); } catch (Exception ex) { Log.w(TAG, "onResume: Unable to register callback for provisioning changes."); } } @VisibleForTesting void unregisterProvisioningChangedCallback() { if (mProvisioningManager == null) { return; } mProvisioningManager.unregisterProvisioningChangedCallback(mProvisioningCallback); } } } src/com/android/settings/wifi/calling/WifiCallingSliceHelper.java +22 −23 Original line number Original line Diff line number Diff line Loading @@ -47,6 +47,7 @@ import com.android.ims.ImsManager; import com.android.settings.R; import com.android.settings.R; import com.android.settings.Utils; import com.android.settings.Utils; import com.android.settings.network.SubscriptionUtil; import com.android.settings.network.SubscriptionUtil; import com.android.settings.network.ims.WifiCallingQueryImsState; import com.android.settings.network.telephony.MobileNetworkUtils; import com.android.settings.network.telephony.MobileNetworkUtils; import com.android.settings.slices.SliceBroadcastReceiver; import com.android.settings.slices.SliceBroadcastReceiver; Loading Loading @@ -133,9 +134,8 @@ public class WifiCallingSliceHelper { */ */ public Slice createWifiCallingSlice(Uri sliceUri) { public Slice createWifiCallingSlice(Uri sliceUri) { final int subId = getDefaultVoiceSubId(); final int subId = getDefaultVoiceSubId(); Resources res = getResourcesForSubId(subId); if (subId <= SubscriptionManager.INVALID_SUBSCRIPTION_ID) { if (!SubscriptionManager.isValidSubscriptionId(subId)) { Log.d(TAG, "Invalid subscription Id"); Log.d(TAG, "Invalid subscription Id"); return null; return null; } } Loading @@ -159,6 +159,7 @@ public class WifiCallingSliceHelper { Log.d(TAG, "Needs Activation"); Log.d(TAG, "Needs Activation"); // Activation needed for the next action of the user // Activation needed for the next action of the user // Give instructions to go to settings app // Give instructions to go to settings app final Resources res = getResourcesForSubId(subId); return getNonActionableWifiCallingSlice( return getNonActionableWifiCallingSlice( res.getText(R.string.wifi_calling_settings_title), res.getText(R.string.wifi_calling_settings_title), res.getText(R.string.wifi_calling_settings_activation_instructions), res.getText(R.string.wifi_calling_settings_activation_instructions), Loading @@ -173,16 +174,8 @@ public class WifiCallingSliceHelper { private boolean isWifiCallingEnabled(ImsManager imsManager) private boolean isWifiCallingEnabled(ImsManager imsManager) throws InterruptedException, ExecutionException, TimeoutException { throws InterruptedException, ExecutionException, TimeoutException { final FutureTask<Boolean> isWifiOnTask = new FutureTask<>(new Callable<Boolean>() { final int subId = getDefaultVoiceSubId(); @Override return queryImsState(subId).isEnabledByUser() public Boolean call() { return imsManager.isWfcEnabledByUser(); } }); final ExecutorService executor = Executors.newSingleThreadExecutor(); executor.execute(isWifiOnTask); return isWifiOnTask.get(TIMEOUT_MILLIS, TimeUnit.MILLISECONDS) && imsManager.isNonTtyOrTtyOnVolteEnabled(); && imsManager.isNonTtyOrTtyOnVolteEnabled(); } } Loading @@ -192,7 +185,7 @@ public class WifiCallingSliceHelper { */ */ private Slice getWifiCallingSlice(Uri sliceUri, boolean isWifiCallingEnabled, int subId) { private Slice getWifiCallingSlice(Uri sliceUri, boolean isWifiCallingEnabled, int subId) { final IconCompat icon = IconCompat.createWithResource(mContext, R.drawable.wifi_signal); final IconCompat icon = IconCompat.createWithResource(mContext, R.drawable.wifi_signal); Resources res = getResourcesForSubId(subId); final Resources res = getResourcesForSubId(subId); return new ListBuilder(mContext, sliceUri, ListBuilder.INFINITY) return new ListBuilder(mContext, sliceUri, ListBuilder.INFINITY) .setAccentColor(Utils.getColorAccentDefaultColor(mContext)) .setAccentColor(Utils.getColorAccentDefaultColor(mContext)) Loading Loading @@ -228,7 +221,7 @@ public class WifiCallingSliceHelper { public Slice createWifiCallingPreferenceSlice(Uri sliceUri) { public Slice createWifiCallingPreferenceSlice(Uri sliceUri) { final int subId = getDefaultVoiceSubId(); final int subId = getDefaultVoiceSubId(); if (subId <= SubscriptionManager.INVALID_SUBSCRIPTION_ID) { if (!SubscriptionManager.isValidSubscriptionId(subId)) { Log.d(TAG, "Invalid Subscription Id"); Log.d(TAG, "Invalid Subscription Id"); return null; return null; } } Loading Loading @@ -262,7 +255,7 @@ public class WifiCallingSliceHelper { } } if (!isWifiCallingEnabled) { if (!isWifiCallingEnabled) { // wifi calling is not enabled. Ask user to enable wifi calling // wifi calling is not enabled. Ask user to enable wifi calling Resources res = getResourcesForSubId(subId); final Resources res = getResourcesForSubId(subId); return getNonActionableWifiCallingSlice( return getNonActionableWifiCallingSlice( res.getText(R.string.wifi_calling_mode_title), res.getText(R.string.wifi_calling_mode_title), res.getText(R.string.wifi_calling_turn_on), res.getText(R.string.wifi_calling_turn_on), Loading @@ -287,7 +280,7 @@ public class WifiCallingSliceHelper { Uri sliceUri, Uri sliceUri, int subId) { int subId) { final IconCompat icon = IconCompat.createWithResource(mContext, R.drawable.wifi_signal); final IconCompat icon = IconCompat.createWithResource(mContext, R.drawable.wifi_signal); Resources res = getResourcesForSubId(subId); final Resources res = getResourcesForSubId(subId); // Top row shows information on current preference state // Top row shows information on current preference state final ListBuilder listBuilder = new ListBuilder(mContext, sliceUri, ListBuilder.INFINITY) final ListBuilder listBuilder = new ListBuilder(mContext, sliceUri, ListBuilder.INFINITY) .setAccentColor(Utils.getColorAccentDefaultColor(mContext)); .setAccentColor(Utils.getColorAccentDefaultColor(mContext)); Loading Loading @@ -333,7 +326,7 @@ public class WifiCallingSliceHelper { int preferenceTitleResId, String action, boolean checked, int subId) { int preferenceTitleResId, String action, boolean checked, int subId) { final IconCompat icon = final IconCompat icon = IconCompat.createWithResource(mContext, R.drawable.radio_button_check); IconCompat.createWithResource(mContext, R.drawable.radio_button_check); Resources res = getResourcesForSubId(subId); final Resources res = getResourcesForSubId(subId); return new RowBuilder() return new RowBuilder() .setTitle(res.getText(preferenceTitleResId)) .setTitle(res.getText(preferenceTitleResId)) .setTitleItem(SliceAction.createToggle(getBroadcastIntent(action), .setTitleItem(SliceAction.createToggle(getBroadcastIntent(action), Loading @@ -348,7 +341,7 @@ public class WifiCallingSliceHelper { * @return summary/name of the wifi calling preference * @return summary/name of the wifi calling preference */ */ private CharSequence getWifiCallingPreferenceSummary(int wfcMode, int subId) { private CharSequence getWifiCallingPreferenceSummary(int wfcMode, int subId) { Resources res = getResourcesForSubId(subId); final Resources res = getResourcesForSubId(subId); switch (wfcMode) { switch (wfcMode) { case ImsMmTelManager.WIFI_MODE_WIFI_ONLY: case ImsMmTelManager.WIFI_MODE_WIFI_ONLY: return res.getText( return res.getText( Loading Loading @@ -394,11 +387,11 @@ public class WifiCallingSliceHelper { public void handleWifiCallingChanged(Intent intent) { public void handleWifiCallingChanged(Intent intent) { final int subId = getDefaultVoiceSubId(); final int subId = getDefaultVoiceSubId(); if (subId > SubscriptionManager.INVALID_SUBSCRIPTION_ID) { if (SubscriptionManager.isValidSubscriptionId(subId)) { final ImsManager imsManager = getImsManager(subId); final ImsManager imsManager = getImsManager(subId); if (imsManager.isWfcEnabledByPlatform() if (imsManager.isWfcEnabledByPlatform() && isWfcProvisionedOnDevice(subId)) { && isWfcProvisionedOnDevice(subId)) { final boolean currentValue = imsManager.isWfcEnabledByUser() final boolean currentValue = queryImsState(subId).isEnabledByUser() && imsManager.isNonTtyOrTtyOnVolteEnabled(); && imsManager.isNonTtyOrTtyOnVolteEnabled(); final boolean newValue = intent.getBooleanExtra(EXTRA_TOGGLE_STATE, final boolean newValue = intent.getBooleanExtra(EXTRA_TOGGLE_STATE, currentValue); currentValue); Loading @@ -408,7 +401,8 @@ public class WifiCallingSliceHelper { // If either the action is to turn off wifi calling setting // If either the action is to turn off wifi calling setting // or there is no activation involved - Update the setting // or there is no activation involved - Update the setting if (newValue != currentValue) { if (newValue != currentValue) { imsManager.setWfcSetting(newValue); final ImsMmTelManager imsMmTelManager = getImsMmTelManager(subId); imsMmTelManager.setVoWiFiSettingEnabled(newValue); } } } } } } Loading @@ -431,7 +425,7 @@ public class WifiCallingSliceHelper { final int subId = getDefaultVoiceSubId(); final int subId = getDefaultVoiceSubId(); final int errorValue = -1; final int errorValue = -1; if (subId > SubscriptionManager.INVALID_SUBSCRIPTION_ID) { if (SubscriptionManager.isValidSubscriptionId(subId)) { final boolean isWifiCallingPrefEditable = isCarrierConfigManagerKeyEnabled( final boolean isWifiCallingPrefEditable = isCarrierConfigManagerKeyEnabled( CarrierConfigManager.KEY_EDITABLE_WFC_MODE_BOOL, subId, false); CarrierConfigManager.KEY_EDITABLE_WFC_MODE_BOOL, subId, false); final boolean isWifiOnlySupported = isCarrierConfigManagerKeyEnabled( final boolean isWifiOnlySupported = isCarrierConfigManagerKeyEnabled( Loading @@ -441,7 +435,7 @@ public class WifiCallingSliceHelper { if (isWifiCallingPrefEditable if (isWifiCallingPrefEditable && imsManager.isWfcEnabledByPlatform() && imsManager.isWfcEnabledByPlatform() && isWfcProvisionedOnDevice(subId) && isWfcProvisionedOnDevice(subId) && imsManager.isWfcEnabledByUser() && queryImsState(subId).isEnabledByUser() && imsManager.isNonTtyOrTtyOnVolteEnabled()) { && imsManager.isNonTtyOrTtyOnVolteEnabled()) { // Change the preference only when wifi calling is enabled // Change the preference only when wifi calling is enabled // And when wifi calling preference is editable for the current carrier // And when wifi calling preference is editable for the current carrier Loading Loading @@ -587,4 +581,9 @@ public class WifiCallingSliceHelper { private Resources getResourcesForSubId(int subId) { private Resources getResourcesForSubId(int subId) { return SubscriptionManager.getResourcesForSubId(mContext, subId); return SubscriptionManager.getResourcesForSubId(mContext, subId); } } @VisibleForTesting WifiCallingQueryImsState queryImsState(int subId) { return new WifiCallingQueryImsState(mContext, subId); } } } tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSettingsForSubTest.java +5 −4 Original line number Original line Diff line number Diff line Loading @@ -44,7 +44,6 @@ import android.os.PersistableBundle; import android.telephony.CarrierConfigManager; import android.telephony.CarrierConfigManager; import android.telephony.TelephonyManager; import android.telephony.TelephonyManager; import android.telephony.ims.ImsMmTelManager; import android.telephony.ims.ImsMmTelManager; import android.telephony.ims.ProvisioningManager; import android.view.View; import android.view.View; import android.widget.TextView; import android.widget.TextView; Loading @@ -60,6 +59,7 @@ import com.android.settings.widget.SwitchBar; import com.android.settings.widget.ToggleSwitch; import com.android.settings.widget.ToggleSwitch; import org.junit.Before; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.ArgumentCaptor; Loading Loading @@ -189,14 +189,15 @@ public class WifiCallingSettingsForSubTest { public void onResumeOnPause_provisioningCallbackRegistration() throws Exception { public void onResumeOnPause_provisioningCallbackRegistration() throws Exception { // Verify that provisioning callback is registered after call to onResume(). // Verify that provisioning callback is registered after call to onResume(). mFragment.onResume(); mFragment.onResume(); verify(mImsConfig).addConfigCallback(any(ProvisioningManager.Callback.class)); verify(mFragment).registerProvisioningChangedCallback(); // Verify that provisioning callback is unregistered after call to onPause. // Verify that provisioning callback is unregistered after call to onPause. mFragment.onPause(); mFragment.onPause(); verify(mImsConfig).removeConfigCallback(any()); verify(mFragment).unregisterProvisioningChangedCallback(); } } @Test @Test @Ignore public void onResume_useWfcHomeModeConfigFalseAndEditable_shouldShowWfcRoaming() { public void onResume_useWfcHomeModeConfigFalseAndEditable_shouldShowWfcRoaming() { // Call onResume to update the WFC roaming preference. // Call onResume to update the WFC roaming preference. mFragment.onResume(); mFragment.onResume(); Loading Loading @@ -327,7 +328,7 @@ public class WifiCallingSettingsForSubTest { verify(mPreferenceScreen).addPreference(mButtonWfcRoamingMode); verify(mPreferenceScreen).addPreference(mButtonWfcRoamingMode); verify(mPreferenceScreen).addPreference(mUpdateAddress); verify(mPreferenceScreen).addPreference(mUpdateAddress); // Check the WFC enable request. // Check the WFC enable request. verify(mImsManager).setWfcSetting(true); verify(mImsMmTelManager).setVoWiFiSettingEnabled(true); } } @Test @Test Loading tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSliceHelperTest.java +22 −10 Original line number Original line Diff line number Diff line Loading @@ -47,6 +47,7 @@ import androidx.slice.widget.SliceLiveData; import com.android.ims.ImsManager; import com.android.ims.ImsManager; import com.android.settings.R; import com.android.settings.R; import com.android.settings.network.ims.WifiCallingQueryImsState; import com.android.settings.slices.CustomSliceRegistry; import com.android.settings.slices.CustomSliceRegistry; import com.android.settings.slices.SettingsSliceProvider; import com.android.settings.slices.SettingsSliceProvider; import com.android.settings.slices.SliceBroadcastReceiver; import com.android.settings.slices.SliceBroadcastReceiver; Loading @@ -68,6 +69,7 @@ import java.util.List; @RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class) public class WifiCallingSliceHelperTest { public class WifiCallingSliceHelperTest { private static final int SUB_ID = 1; private Context mContext; private Context mContext; @Mock @Mock Loading @@ -79,6 +81,8 @@ public class WifiCallingSliceHelperTest { @Mock @Mock private ImsMmTelManager mMockImsMmTelManager; private ImsMmTelManager mMockImsMmTelManager; private WifiCallingQueryImsState mQueryImsState; private FakeWifiCallingSliceHelper mWfcSliceHelper; private FakeWifiCallingSliceHelper mWfcSliceHelper; private SettingsSliceProvider mProvider; private SettingsSliceProvider mProvider; private SliceBroadcastReceiver mReceiver; private SliceBroadcastReceiver mReceiver; Loading @@ -101,7 +105,11 @@ public class WifiCallingSliceHelperTest { mFeatureFactory = FakeFeatureFactory.setupForTest(); mFeatureFactory = FakeFeatureFactory.setupForTest(); mSlicesFeatureProvider = mFeatureFactory.getSlicesFeatureProvider(); mSlicesFeatureProvider = mFeatureFactory.getSlicesFeatureProvider(); mQueryImsState = spy(new WifiCallingQueryImsState(mContext, SUB_ID)); doReturn(true).when(mQueryImsState).isEnabledByUser(); mWfcSliceHelper = spy(new FakeWifiCallingSliceHelper(mContext)); mWfcSliceHelper = spy(new FakeWifiCallingSliceHelper(mContext)); doReturn(mQueryImsState).when(mWfcSliceHelper).queryImsState(anyInt()); // Set-up specs for SliceMetadata. // Set-up specs for SliceMetadata. SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS); SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS); Loading Loading @@ -137,7 +145,7 @@ public class WifiCallingSliceHelperTest { */ */ when(mMockImsManager.isWfcEnabledByPlatform()).thenReturn(true); when(mMockImsManager.isWfcEnabledByPlatform()).thenReturn(true); when(mWfcSliceHelper.isWfcProvisionedOnDevice(anyInt())).thenReturn(true); when(mWfcSliceHelper.isWfcProvisionedOnDevice(anyInt())).thenReturn(true); when(mMockImsManager.isWfcEnabledByUser()).thenReturn(false); doReturn(false).when(mQueryImsState).isEnabledByUser(); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(false); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(false); when(mMockCarrierConfigManager.getConfigForSubId(1)).thenReturn(null); when(mMockCarrierConfigManager.getConfigForSubId(1)).thenReturn(null); mWfcSliceHelper.setActivationAppIntent(new Intent()); // dummy Intent mWfcSliceHelper.setActivationAppIntent(new Intent()); // dummy Intent Loading @@ -155,7 +163,7 @@ public class WifiCallingSliceHelperTest { public void test_CreateWifiCallingSlice_success() { public void test_CreateWifiCallingSlice_success() { when(mMockImsManager.isWfcEnabledByPlatform()).thenReturn(true); when(mMockImsManager.isWfcEnabledByPlatform()).thenReturn(true); when(mWfcSliceHelper.isWfcProvisionedOnDevice(anyInt())).thenReturn(true); when(mWfcSliceHelper.isWfcProvisionedOnDevice(anyInt())).thenReturn(true); when(mMockImsManager.isWfcEnabledByUser()).thenReturn(true); doReturn(true).when(mQueryImsState).isEnabledByUser(); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true); when(mMockCarrierConfigManager.getConfigForSubId(1)).thenReturn(null); when(mMockCarrierConfigManager.getConfigForSubId(1)).thenReturn(null); Loading @@ -170,7 +178,7 @@ public class WifiCallingSliceHelperTest { public void test_SettingSliceProvider_getsRightSliceWifiCalling() { public void test_SettingSliceProvider_getsRightSliceWifiCalling() { when(mMockImsManager.isWfcEnabledByPlatform()).thenReturn(true); when(mMockImsManager.isWfcEnabledByPlatform()).thenReturn(true); when(mWfcSliceHelper.isWfcProvisionedOnDevice(anyInt())).thenReturn(true); when(mWfcSliceHelper.isWfcProvisionedOnDevice(anyInt())).thenReturn(true); when(mMockImsManager.isWfcEnabledByUser()).thenReturn(true); doReturn(true).when(mQueryImsState).isEnabledByUser(); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true); when(mMockCarrierConfigManager.getConfigForSubId(1)).thenReturn(null); when(mMockCarrierConfigManager.getConfigForSubId(1)).thenReturn(null); when(mSlicesFeatureProvider.getNewWifiCallingSliceHelper(mContext)) when(mSlicesFeatureProvider.getNewWifiCallingSliceHelper(mContext)) Loading @@ -186,7 +194,7 @@ public class WifiCallingSliceHelperTest { public void test_SliceBroadcastReceiver_toggleOnWifiCalling() { public void test_SliceBroadcastReceiver_toggleOnWifiCalling() { when(mMockImsManager.isWfcEnabledByPlatform()).thenReturn(true); when(mMockImsManager.isWfcEnabledByPlatform()).thenReturn(true); when(mWfcSliceHelper.isWfcProvisionedOnDevice(anyInt())).thenReturn(true); when(mWfcSliceHelper.isWfcProvisionedOnDevice(anyInt())).thenReturn(true); when(mMockImsManager.isWfcEnabledByUser()).thenReturn(false); doReturn(false).when(mQueryImsState).isEnabledByUser(); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true); when(mSlicesFeatureProvider.getNewWifiCallingSliceHelper(mContext)) when(mSlicesFeatureProvider.getNewWifiCallingSliceHelper(mContext)) .thenReturn(mWfcSliceHelper); .thenReturn(mWfcSliceHelper); Loading @@ -201,7 +209,7 @@ public class WifiCallingSliceHelperTest { // change the setting // change the setting mReceiver.onReceive(mContext, intent); mReceiver.onReceive(mContext, intent); verify((mMockImsManager)).setWfcSetting(mWfcSettingCaptor.capture()); verify((mMockImsMmTelManager)).setVoWiFiSettingEnabled(mWfcSettingCaptor.capture()); // assert the change // assert the change assertThat(mWfcSettingCaptor.getValue()).isTrue(); assertThat(mWfcSettingCaptor.getValue()).isTrue(); Loading @@ -211,7 +219,7 @@ public class WifiCallingSliceHelperTest { public void test_CreateWifiCallingPreferenceSlice_prefNotEditable() { public void test_CreateWifiCallingPreferenceSlice_prefNotEditable() { when(mMockImsManager.isWfcEnabledByPlatform()).thenReturn(true); when(mMockImsManager.isWfcEnabledByPlatform()).thenReturn(true); when(mWfcSliceHelper.isWfcProvisionedOnDevice(anyInt())).thenReturn(true); when(mWfcSliceHelper.isWfcProvisionedOnDevice(anyInt())).thenReturn(true); when(mMockImsManager.isWfcEnabledByUser()).thenReturn(true); doReturn(true).when(mQueryImsState).isEnabledByUser(); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true); mWfcSliceHelper.setIsWifiCallingPrefEditable(false); mWfcSliceHelper.setIsWifiCallingPrefEditable(false); Loading @@ -226,7 +234,7 @@ public class WifiCallingSliceHelperTest { public void test_CreateWifiCallingPreferenceSlice_wfcOff() { public void test_CreateWifiCallingPreferenceSlice_wfcOff() { when(mMockImsManager.isWfcEnabledByPlatform()).thenReturn(true); when(mMockImsManager.isWfcEnabledByPlatform()).thenReturn(true); when(mWfcSliceHelper.isWfcProvisionedOnDevice(anyInt())).thenReturn(true); when(mWfcSliceHelper.isWfcProvisionedOnDevice(anyInt())).thenReturn(true); when(mMockImsManager.isWfcEnabledByUser()).thenReturn(false); doReturn(false).when(mQueryImsState).isEnabledByUser(); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true); mWfcSliceHelper.setIsWifiCallingPrefEditable(true); mWfcSliceHelper.setIsWifiCallingPrefEditable(true); Loading @@ -243,7 +251,7 @@ public class WifiCallingSliceHelperTest { public void test_CreateWifiCallingPreferenceSlice_success() { public void test_CreateWifiCallingPreferenceSlice_success() { when(mMockImsManager.isWfcEnabledByPlatform()).thenReturn(true); when(mMockImsManager.isWfcEnabledByPlatform()).thenReturn(true); when(mWfcSliceHelper.isWfcProvisionedOnDevice(anyInt())).thenReturn(true); when(mWfcSliceHelper.isWfcProvisionedOnDevice(anyInt())).thenReturn(true); when(mMockImsManager.isWfcEnabledByUser()).thenReturn(true); doReturn(true).when(mQueryImsState).isEnabledByUser(); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true); when(mMockImsMmTelManager.getVoWiFiModeSetting()).thenReturn( when(mMockImsMmTelManager.getVoWiFiModeSetting()).thenReturn( ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED); ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED); Loading @@ -261,7 +269,7 @@ public class WifiCallingSliceHelperTest { public void test_SettingsSliceProvider_getWfcPreferenceSlice() { public void test_SettingsSliceProvider_getWfcPreferenceSlice() { when(mMockImsManager.isWfcEnabledByPlatform()).thenReturn(true); when(mMockImsManager.isWfcEnabledByPlatform()).thenReturn(true); when(mWfcSliceHelper.isWfcProvisionedOnDevice(anyInt())).thenReturn(true); when(mWfcSliceHelper.isWfcProvisionedOnDevice(anyInt())).thenReturn(true); when(mMockImsManager.isWfcEnabledByUser()).thenReturn(true); doReturn(true).when(mQueryImsState).isEnabledByUser(); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true); when(mMockImsMmTelManager.getVoWiFiModeSetting()).thenReturn( when(mMockImsMmTelManager.getVoWiFiModeSetting()).thenReturn( ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED); ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED); Loading @@ -280,7 +288,7 @@ public class WifiCallingSliceHelperTest { public void test_SliceBroadcastReceiver_setWfcPrefCellularPref() { public void test_SliceBroadcastReceiver_setWfcPrefCellularPref() { when(mMockImsManager.isWfcEnabledByPlatform()).thenReturn(true); when(mMockImsManager.isWfcEnabledByPlatform()).thenReturn(true); when(mWfcSliceHelper.isWfcProvisionedOnDevice(anyInt())).thenReturn(true); when(mWfcSliceHelper.isWfcProvisionedOnDevice(anyInt())).thenReturn(true); when(mMockImsManager.isWfcEnabledByUser()).thenReturn(true); doReturn(true).when(mQueryImsState).isEnabledByUser(); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true); when(mMockImsMmTelManager.getVoWiFiModeSetting()).thenReturn( when(mMockImsMmTelManager.getVoWiFiModeSetting()).thenReturn( ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED); ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED); Loading Loading @@ -455,6 +463,10 @@ public class WifiCallingSliceHelperTest { return true; return true; } } WifiCallingQueryImsState queryImsState(int subId) { return super.queryImsState(subId); } @Override @Override protected Intent getWifiCallingCarrierActivityIntent(int subId) { protected Intent getWifiCallingCarrierActivityIntent(int subId) { return mActivationAppIntent; return mActivationAppIntent; Loading Loading
src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java +49 −23 Original line number Original line Diff line number Diff line Loading @@ -46,7 +46,6 @@ import androidx.preference.Preference.OnPreferenceClickListener; import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen; import com.android.ims.ImsConfig; import com.android.ims.ImsConfig; import com.android.ims.ImsException; import com.android.ims.ImsManager; import com.android.ims.ImsManager; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.telephony.Phone; import com.android.internal.telephony.Phone; Loading @@ -56,6 +55,7 @@ import com.android.settings.SettingsPreferenceFragment; import com.android.settings.Utils; import com.android.settings.Utils; import com.android.settings.core.SubSettingLauncher; import com.android.settings.core.SubSettingLauncher; import com.android.settings.network.SubscriptionUtil; import com.android.settings.network.SubscriptionUtil; import com.android.settings.network.ims.WifiCallingQueryImsState; import com.android.settings.network.telephony.MobileNetworkUtils; import com.android.settings.network.telephony.MobileNetworkUtils; import com.android.settings.widget.SwitchBar; import com.android.settings.widget.SwitchBar; Loading Loading @@ -102,6 +102,7 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment private int mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; private int mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; private ImsManager mImsManager; private ImsManager mImsManager; private ImsMmTelManager mImsMmTelManager; private ImsMmTelManager mImsMmTelManager; private ProvisioningManager mProvisioningManager; private TelephonyManager mTelephonyManager; private TelephonyManager mTelephonyManager; private final PhoneStateListener mPhoneStateListener = new PhoneStateListener() { private final PhoneStateListener mPhoneStateListener = new PhoneStateListener() { Loading Loading @@ -245,6 +246,19 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment return 0; return 0; } } @VisibleForTesting WifiCallingQueryImsState queryImsState(int subId) { return new WifiCallingQueryImsState(getContext(), subId); } @VisibleForTesting ProvisioningManager getImsProvisioningManager() { if (!SubscriptionManager.isValidSubscriptionId(mSubId)) { return null; } return ProvisioningManager.createForSubscriptionId(mSubId); } @VisibleForTesting @VisibleForTesting ImsManager getImsManager() { ImsManager getImsManager() { return ImsManager.getInstance(getActivity(), return ImsManager.getInstance(getActivity(), Loading @@ -253,6 +267,9 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment @VisibleForTesting @VisibleForTesting ImsMmTelManager getImsMmTelManager() { ImsMmTelManager getImsMmTelManager() { if (!SubscriptionManager.isValidSubscriptionId(mSubId)) { return null; } return ImsMmTelManager.createForSubscriptionId(mSubId); return ImsMmTelManager.createForSubscriptionId(mSubId); } } Loading @@ -272,9 +289,10 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment } } mImsManager = getImsManager(); mImsManager = getImsManager(); mProvisioningManager = getImsProvisioningManager(); mImsMmTelManager = getImsMmTelManager(); mImsMmTelManager = getImsMmTelManager(); mTelephonyManager = ((TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE)); mTelephonyManager = getActivity().getSystemService(TelephonyManager.class); mButtonWfcMode = findPreference(BUTTON_WFC_MODE); mButtonWfcMode = findPreference(BUTTON_WFC_MODE); mButtonWfcMode.setOnPreferenceChangeListener(this); mButtonWfcMode.setOnPreferenceChangeListener(this); Loading Loading @@ -342,7 +360,7 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment } } } } Resources res = getResourcesForSubId(); final Resources res = getResourcesForSubId(); mButtonWfcMode.setTitle(res.getString(R.string.wifi_calling_mode_title)); mButtonWfcMode.setTitle(res.getString(R.string.wifi_calling_mode_title)); mButtonWfcMode.setDialogTitle(res.getString(R.string.wifi_calling_mode_dialog_title)); mButtonWfcMode.setDialogTitle(res.getString(R.string.wifi_calling_mode_dialog_title)); mButtonWfcRoamingMode.setTitle(res.getString(R.string.wifi_calling_roaming_mode_title)); mButtonWfcRoamingMode.setTitle(res.getString(R.string.wifi_calling_roaming_mode_title)); Loading Loading @@ -383,7 +401,8 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment } } // NOTE: Buttons will be enabled/disabled in mPhoneStateListener // NOTE: Buttons will be enabled/disabled in mPhoneStateListener final boolean wfcEnabled = mImsManager.isWfcEnabledByUser() final WifiCallingQueryImsState queryIms = queryImsState(mSubId); final boolean wfcEnabled = queryIms.isEnabledByUser() && mImsManager.isNonTtyOrTtyOnVolteEnabled(); && mImsManager.isNonTtyOrTtyOnVolteEnabled(); mSwitch.setChecked(wfcEnabled); mSwitch.setChecked(wfcEnabled); final int wfcMode = mImsMmTelManager.getVoWiFiModeSetting(); final int wfcMode = mImsMmTelManager.getVoWiFiModeSetting(); Loading @@ -397,8 +416,6 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment public void onResume() { public void onResume() { super.onResume(); super.onResume(); final Context context = getActivity(); updateBody(); updateBody(); if (mImsManager.isWfcEnabledByPlatform()) { if (mImsManager.isWfcEnabledByPlatform()) { Loading @@ -409,6 +426,7 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment mValidListener = true; mValidListener = true; } } final Context context = getActivity(); context.registerReceiver(mIntentReceiver, mIntentFilter); context.registerReceiver(mIntentReceiver, mIntentFilter); final Intent intent = getActivity().getIntent(); final Intent intent = getActivity().getIntent(); Loading @@ -417,12 +435,7 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment } } // Register callback for provisioning changes. // Register callback for provisioning changes. try { registerProvisioningChangedCallback(); mImsManager.getConfigInterface().addConfigCallback(mProvisioningCallback); } catch (ImsException e) { Log.w(TAG, "onResume: Unable to register callback for provisioning changes."); } } } @Override @Override Loading @@ -442,13 +455,7 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment context.unregisterReceiver(mIntentReceiver); context.unregisterReceiver(mIntentReceiver); // Remove callback for provisioning changes. // Remove callback for provisioning changes. try { unregisterProvisioningChangedCallback(); mImsManager.getConfigInterface().removeConfigCallback( mProvisioningCallback.getBinder()); } catch (ImsException e) { Log.w(TAG, "onPause: Unable to remove callback for provisioning changes"); } } } /** /** Loading Loading @@ -508,7 +515,7 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment */ */ private void updateWfcMode(boolean wfcEnabled) { private void updateWfcMode(boolean wfcEnabled) { Log.i(TAG, "updateWfcMode(" + wfcEnabled + ")"); Log.i(TAG, "updateWfcMode(" + wfcEnabled + ")"); mImsManager.setWfcSetting(wfcEnabled); mImsMmTelManager.setVoWiFiSettingEnabled(wfcEnabled); final int wfcMode = mImsMmTelManager.getVoWiFiModeSetting(); final int wfcMode = mImsMmTelManager.getVoWiFiModeSetting(); final int wfcRoamingMode = mImsMmTelManager.getVoWiFiRoamingModeSetting(); final int wfcRoamingMode = mImsMmTelManager.getVoWiFiRoamingModeSetting(); Loading @@ -524,8 +531,6 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment public void onActivityResult(int requestCode, int resultCode, Intent data) { public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); super.onActivityResult(requestCode, resultCode, data); final Context context = getActivity(); Log.d(TAG, "WFC activity request = " + requestCode + " result = " + resultCode); Log.d(TAG, "WFC activity request = " + requestCode + " result = " + resultCode); switch (requestCode) { switch (requestCode) { Loading Loading @@ -619,7 +624,7 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment private CharSequence getWfcModeSummary(int wfcMode) { private CharSequence getWfcModeSummary(int wfcMode) { int resId = com.android.internal.R.string.wifi_calling_off_summary; int resId = com.android.internal.R.string.wifi_calling_off_summary; if (mImsManager.isWfcEnabledByUser()) { if (queryImsState(mSubId).isEnabledByUser()) { switch (wfcMode) { switch (wfcMode) { case ImsMmTelManager.WIFI_MODE_WIFI_ONLY: case ImsMmTelManager.WIFI_MODE_WIFI_ONLY: resId = com.android.internal.R.string.wfc_mode_wifi_only_summary; resId = com.android.internal.R.string.wfc_mode_wifi_only_summary; Loading @@ -641,4 +646,25 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment Resources getResourcesForSubId() { Resources getResourcesForSubId() { return SubscriptionManager.getResourcesForSubId(getContext(), mSubId); return SubscriptionManager.getResourcesForSubId(getContext(), mSubId); } } @VisibleForTesting void registerProvisioningChangedCallback() { if (mProvisioningManager == null) { return; } try { mProvisioningManager.registerProvisioningChangedCallback(getContext().getMainExecutor(), mProvisioningCallback); } catch (Exception ex) { Log.w(TAG, "onResume: Unable to register callback for provisioning changes."); } } @VisibleForTesting void unregisterProvisioningChangedCallback() { if (mProvisioningManager == null) { return; } mProvisioningManager.unregisterProvisioningChangedCallback(mProvisioningCallback); } } }
src/com/android/settings/wifi/calling/WifiCallingSliceHelper.java +22 −23 Original line number Original line Diff line number Diff line Loading @@ -47,6 +47,7 @@ import com.android.ims.ImsManager; import com.android.settings.R; import com.android.settings.R; import com.android.settings.Utils; import com.android.settings.Utils; import com.android.settings.network.SubscriptionUtil; import com.android.settings.network.SubscriptionUtil; import com.android.settings.network.ims.WifiCallingQueryImsState; import com.android.settings.network.telephony.MobileNetworkUtils; import com.android.settings.network.telephony.MobileNetworkUtils; import com.android.settings.slices.SliceBroadcastReceiver; import com.android.settings.slices.SliceBroadcastReceiver; Loading Loading @@ -133,9 +134,8 @@ public class WifiCallingSliceHelper { */ */ public Slice createWifiCallingSlice(Uri sliceUri) { public Slice createWifiCallingSlice(Uri sliceUri) { final int subId = getDefaultVoiceSubId(); final int subId = getDefaultVoiceSubId(); Resources res = getResourcesForSubId(subId); if (subId <= SubscriptionManager.INVALID_SUBSCRIPTION_ID) { if (!SubscriptionManager.isValidSubscriptionId(subId)) { Log.d(TAG, "Invalid subscription Id"); Log.d(TAG, "Invalid subscription Id"); return null; return null; } } Loading @@ -159,6 +159,7 @@ public class WifiCallingSliceHelper { Log.d(TAG, "Needs Activation"); Log.d(TAG, "Needs Activation"); // Activation needed for the next action of the user // Activation needed for the next action of the user // Give instructions to go to settings app // Give instructions to go to settings app final Resources res = getResourcesForSubId(subId); return getNonActionableWifiCallingSlice( return getNonActionableWifiCallingSlice( res.getText(R.string.wifi_calling_settings_title), res.getText(R.string.wifi_calling_settings_title), res.getText(R.string.wifi_calling_settings_activation_instructions), res.getText(R.string.wifi_calling_settings_activation_instructions), Loading @@ -173,16 +174,8 @@ public class WifiCallingSliceHelper { private boolean isWifiCallingEnabled(ImsManager imsManager) private boolean isWifiCallingEnabled(ImsManager imsManager) throws InterruptedException, ExecutionException, TimeoutException { throws InterruptedException, ExecutionException, TimeoutException { final FutureTask<Boolean> isWifiOnTask = new FutureTask<>(new Callable<Boolean>() { final int subId = getDefaultVoiceSubId(); @Override return queryImsState(subId).isEnabledByUser() public Boolean call() { return imsManager.isWfcEnabledByUser(); } }); final ExecutorService executor = Executors.newSingleThreadExecutor(); executor.execute(isWifiOnTask); return isWifiOnTask.get(TIMEOUT_MILLIS, TimeUnit.MILLISECONDS) && imsManager.isNonTtyOrTtyOnVolteEnabled(); && imsManager.isNonTtyOrTtyOnVolteEnabled(); } } Loading @@ -192,7 +185,7 @@ public class WifiCallingSliceHelper { */ */ private Slice getWifiCallingSlice(Uri sliceUri, boolean isWifiCallingEnabled, int subId) { private Slice getWifiCallingSlice(Uri sliceUri, boolean isWifiCallingEnabled, int subId) { final IconCompat icon = IconCompat.createWithResource(mContext, R.drawable.wifi_signal); final IconCompat icon = IconCompat.createWithResource(mContext, R.drawable.wifi_signal); Resources res = getResourcesForSubId(subId); final Resources res = getResourcesForSubId(subId); return new ListBuilder(mContext, sliceUri, ListBuilder.INFINITY) return new ListBuilder(mContext, sliceUri, ListBuilder.INFINITY) .setAccentColor(Utils.getColorAccentDefaultColor(mContext)) .setAccentColor(Utils.getColorAccentDefaultColor(mContext)) Loading Loading @@ -228,7 +221,7 @@ public class WifiCallingSliceHelper { public Slice createWifiCallingPreferenceSlice(Uri sliceUri) { public Slice createWifiCallingPreferenceSlice(Uri sliceUri) { final int subId = getDefaultVoiceSubId(); final int subId = getDefaultVoiceSubId(); if (subId <= SubscriptionManager.INVALID_SUBSCRIPTION_ID) { if (!SubscriptionManager.isValidSubscriptionId(subId)) { Log.d(TAG, "Invalid Subscription Id"); Log.d(TAG, "Invalid Subscription Id"); return null; return null; } } Loading Loading @@ -262,7 +255,7 @@ public class WifiCallingSliceHelper { } } if (!isWifiCallingEnabled) { if (!isWifiCallingEnabled) { // wifi calling is not enabled. Ask user to enable wifi calling // wifi calling is not enabled. Ask user to enable wifi calling Resources res = getResourcesForSubId(subId); final Resources res = getResourcesForSubId(subId); return getNonActionableWifiCallingSlice( return getNonActionableWifiCallingSlice( res.getText(R.string.wifi_calling_mode_title), res.getText(R.string.wifi_calling_mode_title), res.getText(R.string.wifi_calling_turn_on), res.getText(R.string.wifi_calling_turn_on), Loading @@ -287,7 +280,7 @@ public class WifiCallingSliceHelper { Uri sliceUri, Uri sliceUri, int subId) { int subId) { final IconCompat icon = IconCompat.createWithResource(mContext, R.drawable.wifi_signal); final IconCompat icon = IconCompat.createWithResource(mContext, R.drawable.wifi_signal); Resources res = getResourcesForSubId(subId); final Resources res = getResourcesForSubId(subId); // Top row shows information on current preference state // Top row shows information on current preference state final ListBuilder listBuilder = new ListBuilder(mContext, sliceUri, ListBuilder.INFINITY) final ListBuilder listBuilder = new ListBuilder(mContext, sliceUri, ListBuilder.INFINITY) .setAccentColor(Utils.getColorAccentDefaultColor(mContext)); .setAccentColor(Utils.getColorAccentDefaultColor(mContext)); Loading Loading @@ -333,7 +326,7 @@ public class WifiCallingSliceHelper { int preferenceTitleResId, String action, boolean checked, int subId) { int preferenceTitleResId, String action, boolean checked, int subId) { final IconCompat icon = final IconCompat icon = IconCompat.createWithResource(mContext, R.drawable.radio_button_check); IconCompat.createWithResource(mContext, R.drawable.radio_button_check); Resources res = getResourcesForSubId(subId); final Resources res = getResourcesForSubId(subId); return new RowBuilder() return new RowBuilder() .setTitle(res.getText(preferenceTitleResId)) .setTitle(res.getText(preferenceTitleResId)) .setTitleItem(SliceAction.createToggle(getBroadcastIntent(action), .setTitleItem(SliceAction.createToggle(getBroadcastIntent(action), Loading @@ -348,7 +341,7 @@ public class WifiCallingSliceHelper { * @return summary/name of the wifi calling preference * @return summary/name of the wifi calling preference */ */ private CharSequence getWifiCallingPreferenceSummary(int wfcMode, int subId) { private CharSequence getWifiCallingPreferenceSummary(int wfcMode, int subId) { Resources res = getResourcesForSubId(subId); final Resources res = getResourcesForSubId(subId); switch (wfcMode) { switch (wfcMode) { case ImsMmTelManager.WIFI_MODE_WIFI_ONLY: case ImsMmTelManager.WIFI_MODE_WIFI_ONLY: return res.getText( return res.getText( Loading Loading @@ -394,11 +387,11 @@ public class WifiCallingSliceHelper { public void handleWifiCallingChanged(Intent intent) { public void handleWifiCallingChanged(Intent intent) { final int subId = getDefaultVoiceSubId(); final int subId = getDefaultVoiceSubId(); if (subId > SubscriptionManager.INVALID_SUBSCRIPTION_ID) { if (SubscriptionManager.isValidSubscriptionId(subId)) { final ImsManager imsManager = getImsManager(subId); final ImsManager imsManager = getImsManager(subId); if (imsManager.isWfcEnabledByPlatform() if (imsManager.isWfcEnabledByPlatform() && isWfcProvisionedOnDevice(subId)) { && isWfcProvisionedOnDevice(subId)) { final boolean currentValue = imsManager.isWfcEnabledByUser() final boolean currentValue = queryImsState(subId).isEnabledByUser() && imsManager.isNonTtyOrTtyOnVolteEnabled(); && imsManager.isNonTtyOrTtyOnVolteEnabled(); final boolean newValue = intent.getBooleanExtra(EXTRA_TOGGLE_STATE, final boolean newValue = intent.getBooleanExtra(EXTRA_TOGGLE_STATE, currentValue); currentValue); Loading @@ -408,7 +401,8 @@ public class WifiCallingSliceHelper { // If either the action is to turn off wifi calling setting // If either the action is to turn off wifi calling setting // or there is no activation involved - Update the setting // or there is no activation involved - Update the setting if (newValue != currentValue) { if (newValue != currentValue) { imsManager.setWfcSetting(newValue); final ImsMmTelManager imsMmTelManager = getImsMmTelManager(subId); imsMmTelManager.setVoWiFiSettingEnabled(newValue); } } } } } } Loading @@ -431,7 +425,7 @@ public class WifiCallingSliceHelper { final int subId = getDefaultVoiceSubId(); final int subId = getDefaultVoiceSubId(); final int errorValue = -1; final int errorValue = -1; if (subId > SubscriptionManager.INVALID_SUBSCRIPTION_ID) { if (SubscriptionManager.isValidSubscriptionId(subId)) { final boolean isWifiCallingPrefEditable = isCarrierConfigManagerKeyEnabled( final boolean isWifiCallingPrefEditable = isCarrierConfigManagerKeyEnabled( CarrierConfigManager.KEY_EDITABLE_WFC_MODE_BOOL, subId, false); CarrierConfigManager.KEY_EDITABLE_WFC_MODE_BOOL, subId, false); final boolean isWifiOnlySupported = isCarrierConfigManagerKeyEnabled( final boolean isWifiOnlySupported = isCarrierConfigManagerKeyEnabled( Loading @@ -441,7 +435,7 @@ public class WifiCallingSliceHelper { if (isWifiCallingPrefEditable if (isWifiCallingPrefEditable && imsManager.isWfcEnabledByPlatform() && imsManager.isWfcEnabledByPlatform() && isWfcProvisionedOnDevice(subId) && isWfcProvisionedOnDevice(subId) && imsManager.isWfcEnabledByUser() && queryImsState(subId).isEnabledByUser() && imsManager.isNonTtyOrTtyOnVolteEnabled()) { && imsManager.isNonTtyOrTtyOnVolteEnabled()) { // Change the preference only when wifi calling is enabled // Change the preference only when wifi calling is enabled // And when wifi calling preference is editable for the current carrier // And when wifi calling preference is editable for the current carrier Loading Loading @@ -587,4 +581,9 @@ public class WifiCallingSliceHelper { private Resources getResourcesForSubId(int subId) { private Resources getResourcesForSubId(int subId) { return SubscriptionManager.getResourcesForSubId(mContext, subId); return SubscriptionManager.getResourcesForSubId(mContext, subId); } } @VisibleForTesting WifiCallingQueryImsState queryImsState(int subId) { return new WifiCallingQueryImsState(mContext, subId); } } }
tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSettingsForSubTest.java +5 −4 Original line number Original line Diff line number Diff line Loading @@ -44,7 +44,6 @@ import android.os.PersistableBundle; import android.telephony.CarrierConfigManager; import android.telephony.CarrierConfigManager; import android.telephony.TelephonyManager; import android.telephony.TelephonyManager; import android.telephony.ims.ImsMmTelManager; import android.telephony.ims.ImsMmTelManager; import android.telephony.ims.ProvisioningManager; import android.view.View; import android.view.View; import android.widget.TextView; import android.widget.TextView; Loading @@ -60,6 +59,7 @@ import com.android.settings.widget.SwitchBar; import com.android.settings.widget.ToggleSwitch; import com.android.settings.widget.ToggleSwitch; import org.junit.Before; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.ArgumentCaptor; Loading Loading @@ -189,14 +189,15 @@ public class WifiCallingSettingsForSubTest { public void onResumeOnPause_provisioningCallbackRegistration() throws Exception { public void onResumeOnPause_provisioningCallbackRegistration() throws Exception { // Verify that provisioning callback is registered after call to onResume(). // Verify that provisioning callback is registered after call to onResume(). mFragment.onResume(); mFragment.onResume(); verify(mImsConfig).addConfigCallback(any(ProvisioningManager.Callback.class)); verify(mFragment).registerProvisioningChangedCallback(); // Verify that provisioning callback is unregistered after call to onPause. // Verify that provisioning callback is unregistered after call to onPause. mFragment.onPause(); mFragment.onPause(); verify(mImsConfig).removeConfigCallback(any()); verify(mFragment).unregisterProvisioningChangedCallback(); } } @Test @Test @Ignore public void onResume_useWfcHomeModeConfigFalseAndEditable_shouldShowWfcRoaming() { public void onResume_useWfcHomeModeConfigFalseAndEditable_shouldShowWfcRoaming() { // Call onResume to update the WFC roaming preference. // Call onResume to update the WFC roaming preference. mFragment.onResume(); mFragment.onResume(); Loading Loading @@ -327,7 +328,7 @@ public class WifiCallingSettingsForSubTest { verify(mPreferenceScreen).addPreference(mButtonWfcRoamingMode); verify(mPreferenceScreen).addPreference(mButtonWfcRoamingMode); verify(mPreferenceScreen).addPreference(mUpdateAddress); verify(mPreferenceScreen).addPreference(mUpdateAddress); // Check the WFC enable request. // Check the WFC enable request. verify(mImsManager).setWfcSetting(true); verify(mImsMmTelManager).setVoWiFiSettingEnabled(true); } } @Test @Test Loading
tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSliceHelperTest.java +22 −10 Original line number Original line Diff line number Diff line Loading @@ -47,6 +47,7 @@ import androidx.slice.widget.SliceLiveData; import com.android.ims.ImsManager; import com.android.ims.ImsManager; import com.android.settings.R; import com.android.settings.R; import com.android.settings.network.ims.WifiCallingQueryImsState; import com.android.settings.slices.CustomSliceRegistry; import com.android.settings.slices.CustomSliceRegistry; import com.android.settings.slices.SettingsSliceProvider; import com.android.settings.slices.SettingsSliceProvider; import com.android.settings.slices.SliceBroadcastReceiver; import com.android.settings.slices.SliceBroadcastReceiver; Loading @@ -68,6 +69,7 @@ import java.util.List; @RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class) public class WifiCallingSliceHelperTest { public class WifiCallingSliceHelperTest { private static final int SUB_ID = 1; private Context mContext; private Context mContext; @Mock @Mock Loading @@ -79,6 +81,8 @@ public class WifiCallingSliceHelperTest { @Mock @Mock private ImsMmTelManager mMockImsMmTelManager; private ImsMmTelManager mMockImsMmTelManager; private WifiCallingQueryImsState mQueryImsState; private FakeWifiCallingSliceHelper mWfcSliceHelper; private FakeWifiCallingSliceHelper mWfcSliceHelper; private SettingsSliceProvider mProvider; private SettingsSliceProvider mProvider; private SliceBroadcastReceiver mReceiver; private SliceBroadcastReceiver mReceiver; Loading @@ -101,7 +105,11 @@ public class WifiCallingSliceHelperTest { mFeatureFactory = FakeFeatureFactory.setupForTest(); mFeatureFactory = FakeFeatureFactory.setupForTest(); mSlicesFeatureProvider = mFeatureFactory.getSlicesFeatureProvider(); mSlicesFeatureProvider = mFeatureFactory.getSlicesFeatureProvider(); mQueryImsState = spy(new WifiCallingQueryImsState(mContext, SUB_ID)); doReturn(true).when(mQueryImsState).isEnabledByUser(); mWfcSliceHelper = spy(new FakeWifiCallingSliceHelper(mContext)); mWfcSliceHelper = spy(new FakeWifiCallingSliceHelper(mContext)); doReturn(mQueryImsState).when(mWfcSliceHelper).queryImsState(anyInt()); // Set-up specs for SliceMetadata. // Set-up specs for SliceMetadata. SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS); SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS); Loading Loading @@ -137,7 +145,7 @@ public class WifiCallingSliceHelperTest { */ */ when(mMockImsManager.isWfcEnabledByPlatform()).thenReturn(true); when(mMockImsManager.isWfcEnabledByPlatform()).thenReturn(true); when(mWfcSliceHelper.isWfcProvisionedOnDevice(anyInt())).thenReturn(true); when(mWfcSliceHelper.isWfcProvisionedOnDevice(anyInt())).thenReturn(true); when(mMockImsManager.isWfcEnabledByUser()).thenReturn(false); doReturn(false).when(mQueryImsState).isEnabledByUser(); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(false); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(false); when(mMockCarrierConfigManager.getConfigForSubId(1)).thenReturn(null); when(mMockCarrierConfigManager.getConfigForSubId(1)).thenReturn(null); mWfcSliceHelper.setActivationAppIntent(new Intent()); // dummy Intent mWfcSliceHelper.setActivationAppIntent(new Intent()); // dummy Intent Loading @@ -155,7 +163,7 @@ public class WifiCallingSliceHelperTest { public void test_CreateWifiCallingSlice_success() { public void test_CreateWifiCallingSlice_success() { when(mMockImsManager.isWfcEnabledByPlatform()).thenReturn(true); when(mMockImsManager.isWfcEnabledByPlatform()).thenReturn(true); when(mWfcSliceHelper.isWfcProvisionedOnDevice(anyInt())).thenReturn(true); when(mWfcSliceHelper.isWfcProvisionedOnDevice(anyInt())).thenReturn(true); when(mMockImsManager.isWfcEnabledByUser()).thenReturn(true); doReturn(true).when(mQueryImsState).isEnabledByUser(); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true); when(mMockCarrierConfigManager.getConfigForSubId(1)).thenReturn(null); when(mMockCarrierConfigManager.getConfigForSubId(1)).thenReturn(null); Loading @@ -170,7 +178,7 @@ public class WifiCallingSliceHelperTest { public void test_SettingSliceProvider_getsRightSliceWifiCalling() { public void test_SettingSliceProvider_getsRightSliceWifiCalling() { when(mMockImsManager.isWfcEnabledByPlatform()).thenReturn(true); when(mMockImsManager.isWfcEnabledByPlatform()).thenReturn(true); when(mWfcSliceHelper.isWfcProvisionedOnDevice(anyInt())).thenReturn(true); when(mWfcSliceHelper.isWfcProvisionedOnDevice(anyInt())).thenReturn(true); when(mMockImsManager.isWfcEnabledByUser()).thenReturn(true); doReturn(true).when(mQueryImsState).isEnabledByUser(); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true); when(mMockCarrierConfigManager.getConfigForSubId(1)).thenReturn(null); when(mMockCarrierConfigManager.getConfigForSubId(1)).thenReturn(null); when(mSlicesFeatureProvider.getNewWifiCallingSliceHelper(mContext)) when(mSlicesFeatureProvider.getNewWifiCallingSliceHelper(mContext)) Loading @@ -186,7 +194,7 @@ public class WifiCallingSliceHelperTest { public void test_SliceBroadcastReceiver_toggleOnWifiCalling() { public void test_SliceBroadcastReceiver_toggleOnWifiCalling() { when(mMockImsManager.isWfcEnabledByPlatform()).thenReturn(true); when(mMockImsManager.isWfcEnabledByPlatform()).thenReturn(true); when(mWfcSliceHelper.isWfcProvisionedOnDevice(anyInt())).thenReturn(true); when(mWfcSliceHelper.isWfcProvisionedOnDevice(anyInt())).thenReturn(true); when(mMockImsManager.isWfcEnabledByUser()).thenReturn(false); doReturn(false).when(mQueryImsState).isEnabledByUser(); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true); when(mSlicesFeatureProvider.getNewWifiCallingSliceHelper(mContext)) when(mSlicesFeatureProvider.getNewWifiCallingSliceHelper(mContext)) .thenReturn(mWfcSliceHelper); .thenReturn(mWfcSliceHelper); Loading @@ -201,7 +209,7 @@ public class WifiCallingSliceHelperTest { // change the setting // change the setting mReceiver.onReceive(mContext, intent); mReceiver.onReceive(mContext, intent); verify((mMockImsManager)).setWfcSetting(mWfcSettingCaptor.capture()); verify((mMockImsMmTelManager)).setVoWiFiSettingEnabled(mWfcSettingCaptor.capture()); // assert the change // assert the change assertThat(mWfcSettingCaptor.getValue()).isTrue(); assertThat(mWfcSettingCaptor.getValue()).isTrue(); Loading @@ -211,7 +219,7 @@ public class WifiCallingSliceHelperTest { public void test_CreateWifiCallingPreferenceSlice_prefNotEditable() { public void test_CreateWifiCallingPreferenceSlice_prefNotEditable() { when(mMockImsManager.isWfcEnabledByPlatform()).thenReturn(true); when(mMockImsManager.isWfcEnabledByPlatform()).thenReturn(true); when(mWfcSliceHelper.isWfcProvisionedOnDevice(anyInt())).thenReturn(true); when(mWfcSliceHelper.isWfcProvisionedOnDevice(anyInt())).thenReturn(true); when(mMockImsManager.isWfcEnabledByUser()).thenReturn(true); doReturn(true).when(mQueryImsState).isEnabledByUser(); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true); mWfcSliceHelper.setIsWifiCallingPrefEditable(false); mWfcSliceHelper.setIsWifiCallingPrefEditable(false); Loading @@ -226,7 +234,7 @@ public class WifiCallingSliceHelperTest { public void test_CreateWifiCallingPreferenceSlice_wfcOff() { public void test_CreateWifiCallingPreferenceSlice_wfcOff() { when(mMockImsManager.isWfcEnabledByPlatform()).thenReturn(true); when(mMockImsManager.isWfcEnabledByPlatform()).thenReturn(true); when(mWfcSliceHelper.isWfcProvisionedOnDevice(anyInt())).thenReturn(true); when(mWfcSliceHelper.isWfcProvisionedOnDevice(anyInt())).thenReturn(true); when(mMockImsManager.isWfcEnabledByUser()).thenReturn(false); doReturn(false).when(mQueryImsState).isEnabledByUser(); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true); mWfcSliceHelper.setIsWifiCallingPrefEditable(true); mWfcSliceHelper.setIsWifiCallingPrefEditable(true); Loading @@ -243,7 +251,7 @@ public class WifiCallingSliceHelperTest { public void test_CreateWifiCallingPreferenceSlice_success() { public void test_CreateWifiCallingPreferenceSlice_success() { when(mMockImsManager.isWfcEnabledByPlatform()).thenReturn(true); when(mMockImsManager.isWfcEnabledByPlatform()).thenReturn(true); when(mWfcSliceHelper.isWfcProvisionedOnDevice(anyInt())).thenReturn(true); when(mWfcSliceHelper.isWfcProvisionedOnDevice(anyInt())).thenReturn(true); when(mMockImsManager.isWfcEnabledByUser()).thenReturn(true); doReturn(true).when(mQueryImsState).isEnabledByUser(); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true); when(mMockImsMmTelManager.getVoWiFiModeSetting()).thenReturn( when(mMockImsMmTelManager.getVoWiFiModeSetting()).thenReturn( ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED); ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED); Loading @@ -261,7 +269,7 @@ public class WifiCallingSliceHelperTest { public void test_SettingsSliceProvider_getWfcPreferenceSlice() { public void test_SettingsSliceProvider_getWfcPreferenceSlice() { when(mMockImsManager.isWfcEnabledByPlatform()).thenReturn(true); when(mMockImsManager.isWfcEnabledByPlatform()).thenReturn(true); when(mWfcSliceHelper.isWfcProvisionedOnDevice(anyInt())).thenReturn(true); when(mWfcSliceHelper.isWfcProvisionedOnDevice(anyInt())).thenReturn(true); when(mMockImsManager.isWfcEnabledByUser()).thenReturn(true); doReturn(true).when(mQueryImsState).isEnabledByUser(); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true); when(mMockImsMmTelManager.getVoWiFiModeSetting()).thenReturn( when(mMockImsMmTelManager.getVoWiFiModeSetting()).thenReturn( ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED); ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED); Loading @@ -280,7 +288,7 @@ public class WifiCallingSliceHelperTest { public void test_SliceBroadcastReceiver_setWfcPrefCellularPref() { public void test_SliceBroadcastReceiver_setWfcPrefCellularPref() { when(mMockImsManager.isWfcEnabledByPlatform()).thenReturn(true); when(mMockImsManager.isWfcEnabledByPlatform()).thenReturn(true); when(mWfcSliceHelper.isWfcProvisionedOnDevice(anyInt())).thenReturn(true); when(mWfcSliceHelper.isWfcProvisionedOnDevice(anyInt())).thenReturn(true); when(mMockImsManager.isWfcEnabledByUser()).thenReturn(true); doReturn(true).when(mQueryImsState).isEnabledByUser(); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true); when(mMockImsMmTelManager.getVoWiFiModeSetting()).thenReturn( when(mMockImsMmTelManager.getVoWiFiModeSetting()).thenReturn( ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED); ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED); Loading Loading @@ -455,6 +463,10 @@ public class WifiCallingSliceHelperTest { return true; return true; } } WifiCallingQueryImsState queryImsState(int subId) { return super.queryImsState(subId); } @Override @Override protected Intent getWifiCallingCarrierActivityIntent(int subId) { protected Intent getWifiCallingCarrierActivityIntent(int subId) { return mActivationAppIntent; return mActivationAppIntent; Loading