[Settings] Hidden API remove - WFC mode settings
Change API from getWfcMode/setWfcMode into APIs within ImsMmTelManager. Bug: 140542283 Test: make RunSettingsRoboTests -j ROBOTEST_FILTER=WifiCallingPreferenceControllerTest make RunSettingsRoboTests -j ROBOTEST_FILTER=WifiCallingSettingsForSubTest make RunSettingsRoboTests -j ROBOTEST_FILTER=WifiCallingSliceHelperTest atest WifiCallingSettingUiTest Change-Id: I2ee01852cb4ee90fe9db256d3333f461cc070da5
This commit is contained in:
@@ -29,12 +29,12 @@ import android.telephony.CarrierConfigManager;
|
|||||||
import android.telephony.PhoneStateListener;
|
import android.telephony.PhoneStateListener;
|
||||||
import android.telephony.SubscriptionManager;
|
import android.telephony.SubscriptionManager;
|
||||||
import android.telephony.TelephonyManager;
|
import android.telephony.TelephonyManager;
|
||||||
|
import android.telephony.ims.ImsMmTelManager;
|
||||||
|
|
||||||
import androidx.annotation.VisibleForTesting;
|
import androidx.annotation.VisibleForTesting;
|
||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
import androidx.preference.PreferenceScreen;
|
import androidx.preference.PreferenceScreen;
|
||||||
|
|
||||||
import com.android.ims.ImsConfig;
|
|
||||||
import com.android.ims.ImsManager;
|
import com.android.ims.ImsManager;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settingslib.core.lifecycle.LifecycleObserver;
|
import com.android.settingslib.core.lifecycle.LifecycleObserver;
|
||||||
@@ -54,6 +54,7 @@ public class WifiCallingPreferenceController extends TelephonyBasePreferenceCont
|
|||||||
CarrierConfigManager mCarrierConfigManager;
|
CarrierConfigManager mCarrierConfigManager;
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
ImsManager mImsManager;
|
ImsManager mImsManager;
|
||||||
|
private ImsMmTelManager mImsMmTelManager;
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
PhoneAccountHandle mSimCallManager;
|
PhoneAccountHandle mSimCallManager;
|
||||||
private PhoneCallStateListener mPhoneStateListener;
|
private PhoneCallStateListener mPhoneStateListener;
|
||||||
@@ -88,7 +89,7 @@ public class WifiCallingPreferenceController extends TelephonyBasePreferenceCont
|
|||||||
public void displayPreference(PreferenceScreen screen) {
|
public void displayPreference(PreferenceScreen screen) {
|
||||||
super.displayPreference(screen);
|
super.displayPreference(screen);
|
||||||
mPreference = screen.findPreference(getPreferenceKey());
|
mPreference = screen.findPreference(getPreferenceKey());
|
||||||
Intent intent = mPreference.getIntent();
|
final Intent intent = mPreference.getIntent();
|
||||||
if (intent != null) {
|
if (intent != null) {
|
||||||
intent.putExtra(Settings.EXTRA_SUB_ID, mSubId);
|
intent.putExtra(Settings.EXTRA_SUB_ID, mSubId);
|
||||||
}
|
}
|
||||||
@@ -98,14 +99,14 @@ public class WifiCallingPreferenceController extends TelephonyBasePreferenceCont
|
|||||||
public void updateState(Preference preference) {
|
public void updateState(Preference preference) {
|
||||||
super.updateState(preference);
|
super.updateState(preference);
|
||||||
if (mSimCallManager != null) {
|
if (mSimCallManager != null) {
|
||||||
Intent intent = MobileNetworkUtils.buildPhoneAccountConfigureIntent(mContext,
|
final Intent intent = MobileNetworkUtils.buildPhoneAccountConfigureIntent(mContext,
|
||||||
mSimCallManager);
|
mSimCallManager);
|
||||||
if (intent == null) {
|
if (intent == null) {
|
||||||
// Do nothing in this case since preference is invisible
|
// Do nothing in this case since preference is invisible
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
final PackageManager pm = mContext.getPackageManager();
|
final PackageManager pm = mContext.getPackageManager();
|
||||||
List<ResolveInfo> resolutions = pm.queryIntentActivities(intent, 0);
|
final List<ResolveInfo> resolutions = pm.queryIntentActivities(intent, 0);
|
||||||
preference.setTitle(resolutions.get(0).loadLabel(pm));
|
preference.setTitle(resolutions.get(0).loadLabel(pm));
|
||||||
preference.setSummary(null);
|
preference.setSummary(null);
|
||||||
preference.setIntent(intent);
|
preference.setIntent(intent);
|
||||||
@@ -126,16 +127,18 @@ public class WifiCallingPreferenceController extends TelephonyBasePreferenceCont
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
final boolean isRoaming = mTelephonyManager.isNetworkRoaming();
|
final boolean isRoaming = mTelephonyManager.isNetworkRoaming();
|
||||||
int wfcMode = mImsManager.getWfcMode(isRoaming && !useWfcHomeModeForRoaming);
|
final int wfcMode = (isRoaming && !useWfcHomeModeForRoaming)
|
||||||
|
? mImsMmTelManager.getVoWiFiRoamingModeSetting() :
|
||||||
|
mImsMmTelManager.getVoWiFiModeSetting();
|
||||||
switch (wfcMode) {
|
switch (wfcMode) {
|
||||||
case ImsConfig.WfcModeFeatureValueConstants.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;
|
||||||
break;
|
break;
|
||||||
case ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED:
|
case ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED:
|
||||||
resId = com.android.internal.R.string
|
resId = com.android.internal.R.string
|
||||||
.wfc_mode_cellular_preferred_summary;
|
.wfc_mode_cellular_preferred_summary;
|
||||||
break;
|
break;
|
||||||
case ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED:
|
case ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED:
|
||||||
resId = com.android.internal.R.string.wfc_mode_wifi_preferred_summary;
|
resId = com.android.internal.R.string.wfc_mode_wifi_preferred_summary;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -150,14 +153,20 @@ public class WifiCallingPreferenceController extends TelephonyBasePreferenceCont
|
|||||||
|
|
||||||
public WifiCallingPreferenceController init(int subId) {
|
public WifiCallingPreferenceController init(int subId) {
|
||||||
mSubId = subId;
|
mSubId = subId;
|
||||||
mTelephonyManager = TelephonyManager.from(mContext).createForSubscriptionId(mSubId);
|
mTelephonyManager = mContext.getSystemService(TelephonyManager.class)
|
||||||
|
.createForSubscriptionId(mSubId);
|
||||||
mImsManager = ImsManager.getInstance(mContext, SubscriptionManager.getPhoneId(mSubId));
|
mImsManager = ImsManager.getInstance(mContext, SubscriptionManager.getPhoneId(mSubId));
|
||||||
|
mImsMmTelManager = getImsMmTelManager(mSubId);
|
||||||
mSimCallManager = mContext.getSystemService(TelecomManager.class)
|
mSimCallManager = mContext.getSystemService(TelecomManager.class)
|
||||||
.getSimCallManagerForSubscription(mSubId);
|
.getSimCallManagerForSubscription(mSubId);
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected ImsMmTelManager getImsMmTelManager(int subId) {
|
||||||
|
return ImsMmTelManager.createForSubscriptionId(subId);
|
||||||
|
}
|
||||||
|
|
||||||
private class PhoneCallStateListener extends PhoneStateListener {
|
private class PhoneCallStateListener extends PhoneStateListener {
|
||||||
|
|
||||||
public PhoneCallStateListener(Looper looper) {
|
public PhoneCallStateListener(Looper looper) {
|
||||||
|
@@ -30,6 +30,7 @@ import android.telephony.CarrierConfigManager;
|
|||||||
import android.telephony.PhoneStateListener;
|
import android.telephony.PhoneStateListener;
|
||||||
import android.telephony.SubscriptionManager;
|
import android.telephony.SubscriptionManager;
|
||||||
import android.telephony.TelephonyManager;
|
import android.telephony.TelephonyManager;
|
||||||
|
import android.telephony.ims.ImsMmTelManager;
|
||||||
import android.telephony.ims.ProvisioningManager;
|
import android.telephony.ims.ProvisioningManager;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
@@ -98,6 +99,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 TelephonyManager mTelephonyManager;
|
private TelephonyManager mTelephonyManager;
|
||||||
|
|
||||||
private final PhoneStateListener mPhoneStateListener = new PhoneStateListener() {
|
private final PhoneStateListener mPhoneStateListener = new PhoneStateListener() {
|
||||||
@@ -110,8 +112,8 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment
|
|||||||
@Override
|
@Override
|
||||||
public void onCallStateChanged(int state, String incomingNumber) {
|
public void onCallStateChanged(int state, String incomingNumber) {
|
||||||
final SettingsActivity activity = (SettingsActivity) getActivity();
|
final SettingsActivity activity = (SettingsActivity) getActivity();
|
||||||
boolean isNonTtyOrTtyOnVolteEnabled = mImsManager.isNonTtyOrTtyOnVolteEnabled();
|
final boolean isNonTtyOrTtyOnVolteEnabled = mImsManager.isNonTtyOrTtyOnVolteEnabled();
|
||||||
boolean isWfcEnabled = mSwitchBar.isChecked()
|
final boolean isWfcEnabled = mSwitchBar.isChecked()
|
||||||
&& isNonTtyOrTtyOnVolteEnabled;
|
&& isNonTtyOrTtyOnVolteEnabled;
|
||||||
|
|
||||||
mSwitchBar.setEnabled((state == TelephonyManager.CALL_STATE_IDLE)
|
mSwitchBar.setEnabled((state == TelephonyManager.CALL_STATE_IDLE)
|
||||||
@@ -132,12 +134,12 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Preference pref = getPreferenceScreen().findPreference(BUTTON_WFC_MODE);
|
final Preference pref = getPreferenceScreen().findPreference(BUTTON_WFC_MODE);
|
||||||
if (pref != null) {
|
if (pref != null) {
|
||||||
pref.setEnabled(isWfcEnabled && isWfcModeEditable
|
pref.setEnabled(isWfcEnabled && isWfcModeEditable
|
||||||
&& (state == TelephonyManager.CALL_STATE_IDLE));
|
&& (state == TelephonyManager.CALL_STATE_IDLE));
|
||||||
}
|
}
|
||||||
Preference pref_roam =
|
final Preference pref_roam =
|
||||||
getPreferenceScreen().findPreference(BUTTON_WFC_ROAMING_MODE);
|
getPreferenceScreen().findPreference(BUTTON_WFC_ROAMING_MODE);
|
||||||
if (pref_roam != null) {
|
if (pref_roam != null) {
|
||||||
pref_roam.setEnabled(isWfcEnabled && isWfcRoamingModeEditable
|
pref_roam.setEnabled(isWfcEnabled && isWfcRoamingModeEditable
|
||||||
@@ -151,7 +153,7 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment
|
|||||||
*/
|
*/
|
||||||
private final OnPreferenceClickListener mUpdateAddressListener =
|
private final OnPreferenceClickListener mUpdateAddressListener =
|
||||||
preference -> {
|
preference -> {
|
||||||
Intent carrierAppIntent = getCarrierActivityIntent();
|
final Intent carrierAppIntent = getCarrierActivityIntent();
|
||||||
if (carrierAppIntent != null) {
|
if (carrierAppIntent != null) {
|
||||||
carrierAppIntent.putExtra(EXTRA_LAUNCH_CARRIER_APP, LAUCH_APP_UPDATE);
|
carrierAppIntent.putExtra(EXTRA_LAUNCH_CARRIER_APP, LAUCH_APP_UPDATE);
|
||||||
startActivity(carrierAppIntent);
|
startActivity(carrierAppIntent);
|
||||||
@@ -179,7 +181,7 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment
|
|||||||
mEmptyView = getView().findViewById(android.R.id.empty);
|
mEmptyView = getView().findViewById(android.R.id.empty);
|
||||||
setEmptyView(mEmptyView);
|
setEmptyView(mEmptyView);
|
||||||
final Resources res = getResourcesForSubId();
|
final Resources res = getResourcesForSubId();
|
||||||
String emptyViewText = res.getString(R.string.wifi_calling_off_explanation,
|
final String emptyViewText = res.getString(R.string.wifi_calling_off_explanation,
|
||||||
res.getString(R.string.wifi_calling_off_explanation_2));
|
res.getString(R.string.wifi_calling_off_explanation_2));
|
||||||
mEmptyView.setText(emptyViewText);
|
mEmptyView.setText(emptyViewText);
|
||||||
|
|
||||||
@@ -195,17 +197,17 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void showAlert(Intent intent) {
|
private void showAlert(Intent intent) {
|
||||||
Context context = getActivity();
|
final Context context = getActivity();
|
||||||
|
|
||||||
CharSequence title = intent.getCharSequenceExtra(Phone.EXTRA_KEY_ALERT_TITLE);
|
final CharSequence title = intent.getCharSequenceExtra(Phone.EXTRA_KEY_ALERT_TITLE);
|
||||||
CharSequence message = intent.getCharSequenceExtra(Phone.EXTRA_KEY_ALERT_MESSAGE);
|
final CharSequence message = intent.getCharSequenceExtra(Phone.EXTRA_KEY_ALERT_MESSAGE);
|
||||||
|
|
||||||
AlertDialog.Builder builder = new AlertDialog.Builder(context);
|
final AlertDialog.Builder builder = new AlertDialog.Builder(context);
|
||||||
builder.setMessage(message)
|
builder.setMessage(message)
|
||||||
.setTitle(title)
|
.setTitle(title)
|
||||||
.setIcon(android.R.drawable.ic_dialog_alert)
|
.setIcon(android.R.drawable.ic_dialog_alert)
|
||||||
.setPositiveButton(android.R.string.ok, null);
|
.setPositiveButton(android.R.string.ok, null);
|
||||||
AlertDialog dialog = builder.create();
|
final AlertDialog dialog = builder.create();
|
||||||
dialog.show();
|
dialog.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -214,7 +216,7 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment
|
|||||||
private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {
|
private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {
|
||||||
@Override
|
@Override
|
||||||
public void onReceive(Context context, Intent intent) {
|
public void onReceive(Context context, Intent intent) {
|
||||||
String action = intent.getAction();
|
final String action = intent.getAction();
|
||||||
if (action.equals(ImsManager.ACTION_IMS_REGISTRATION_ERROR)) {
|
if (action.equals(ImsManager.ACTION_IMS_REGISTRATION_ERROR)) {
|
||||||
// If this fragment is active then we are immediately
|
// If this fragment is active then we are immediately
|
||||||
// showing alert on screen. There is no need to add
|
// showing alert on screen. There is no need to add
|
||||||
@@ -245,6 +247,11 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment
|
|||||||
return ImsManager.getInstance(getActivity(), SubscriptionManager.getPhoneId(mSubId));
|
return ImsManager.getInstance(getActivity(), SubscriptionManager.getPhoneId(mSubId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
ImsMmTelManager getImsMmTelManager() {
|
||||||
|
return ImsMmTelManager.createForSubscriptionId(mSubId);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
@@ -261,6 +268,7 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment
|
|||||||
}
|
}
|
||||||
|
|
||||||
mImsManager = getImsManager();
|
mImsManager = getImsManager();
|
||||||
|
mImsMmTelManager = getImsMmTelManager();
|
||||||
|
|
||||||
mTelephonyManager = ((TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE))
|
mTelephonyManager = ((TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE))
|
||||||
.createForSubscriptionId(mSubId);
|
.createForSubscriptionId(mSubId);
|
||||||
@@ -288,12 +296,12 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment
|
|||||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||||
Bundle savedInstanceState) {
|
Bundle savedInstanceState) {
|
||||||
|
|
||||||
View view = inflater.inflate(
|
final View view = inflater.inflate(
|
||||||
R.layout.wifi_calling_settings_preferences, container, false);
|
R.layout.wifi_calling_settings_preferences, container, false);
|
||||||
|
|
||||||
final ViewGroup prefs_container = view.findViewById(R.id.prefs_container);
|
final ViewGroup prefs_container = view.findViewById(R.id.prefs_container);
|
||||||
Utils.prepareCustomPreferencesList(container, view, prefs_container, false);
|
Utils.prepareCustomPreferencesList(container, view, prefs_container, false);
|
||||||
View prefs = super.onCreateView(inflater, prefs_container, savedInstanceState);
|
final View prefs = super.onCreateView(inflater, prefs_container, savedInstanceState);
|
||||||
prefs_container.addView(prefs);
|
prefs_container.addView(prefs);
|
||||||
|
|
||||||
return view;
|
return view;
|
||||||
@@ -307,12 +315,12 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
CarrierConfigManager configManager = (CarrierConfigManager)
|
final CarrierConfigManager configManager = (CarrierConfigManager)
|
||||||
getSystemService(Context.CARRIER_CONFIG_SERVICE);
|
getSystemService(Context.CARRIER_CONFIG_SERVICE);
|
||||||
boolean isWifiOnlySupported = true;
|
boolean isWifiOnlySupported = true;
|
||||||
|
|
||||||
if (configManager != null) {
|
if (configManager != null) {
|
||||||
PersistableBundle b = configManager.getConfigForSubId(mSubId);
|
final PersistableBundle b = configManager.getConfigForSubId(mSubId);
|
||||||
if (b != null) {
|
if (b != null) {
|
||||||
mEditableWfcMode = b.getBoolean(
|
mEditableWfcMode = b.getBoolean(
|
||||||
CarrierConfigManager.KEY_EDITABLE_WFC_MODE_BOOL);
|
CarrierConfigManager.KEY_EDITABLE_WFC_MODE_BOOL);
|
||||||
@@ -341,11 +349,11 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment
|
|||||||
|
|
||||||
|
|
||||||
// NOTE: Buttons will be enabled/disabled in mPhoneStateListener
|
// NOTE: Buttons will be enabled/disabled in mPhoneStateListener
|
||||||
boolean wfcEnabled = mImsManager.isWfcEnabledByUser()
|
final boolean wfcEnabled = mImsManager.isWfcEnabledByUser()
|
||||||
&& mImsManager.isNonTtyOrTtyOnVolteEnabled();
|
&& mImsManager.isNonTtyOrTtyOnVolteEnabled();
|
||||||
mSwitch.setChecked(wfcEnabled);
|
mSwitch.setChecked(wfcEnabled);
|
||||||
int wfcMode = mImsManager.getWfcMode(false);
|
final int wfcMode = mImsMmTelManager.getVoWiFiModeSetting();
|
||||||
int wfcRoamingMode = mImsManager.getWfcMode(true);
|
final int wfcRoamingMode = mImsMmTelManager.getVoWiFiRoamingModeSetting();
|
||||||
mButtonWfcMode.setValue(Integer.toString(wfcMode));
|
mButtonWfcMode.setValue(Integer.toString(wfcMode));
|
||||||
mButtonWfcRoamingMode.setValue(Integer.toString(wfcRoamingMode));
|
mButtonWfcRoamingMode.setValue(Integer.toString(wfcRoamingMode));
|
||||||
updateButtonWfcMode(wfcEnabled, wfcMode, wfcRoamingMode);
|
updateButtonWfcMode(wfcEnabled, wfcMode, wfcRoamingMode);
|
||||||
@@ -369,7 +377,7 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment
|
|||||||
|
|
||||||
context.registerReceiver(mIntentReceiver, mIntentFilter);
|
context.registerReceiver(mIntentReceiver, mIntentFilter);
|
||||||
|
|
||||||
Intent intent = getActivity().getIntent();
|
final Intent intent = getActivity().getIntent();
|
||||||
if (intent.getBooleanExtra(Phone.EXTRA_KEY_ALERT_SHOW, false)) {
|
if (intent.getBooleanExtra(Phone.EXTRA_KEY_ALERT_SHOW, false)) {
|
||||||
showAlert(intent);
|
showAlert(intent);
|
||||||
}
|
}
|
||||||
@@ -392,7 +400,8 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment
|
|||||||
if (mValidListener) {
|
if (mValidListener) {
|
||||||
mValidListener = false;
|
mValidListener = false;
|
||||||
|
|
||||||
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
|
final TelephonyManager tm = (TelephonyManager)
|
||||||
|
getSystemService(Context.TELEPHONY_SERVICE);
|
||||||
tm.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE);
|
tm.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE);
|
||||||
|
|
||||||
mSwitchBar.removeOnSwitchChangeListener(this);
|
mSwitchBar.removeOnSwitchChangeListener(this);
|
||||||
@@ -441,22 +450,22 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment
|
|||||||
*/
|
*/
|
||||||
private Intent getCarrierActivityIntent() {
|
private Intent getCarrierActivityIntent() {
|
||||||
// Retrive component name from carrier config
|
// Retrive component name from carrier config
|
||||||
CarrierConfigManager configManager =
|
final CarrierConfigManager configManager =
|
||||||
getActivity().getSystemService(CarrierConfigManager.class);
|
getActivity().getSystemService(CarrierConfigManager.class);
|
||||||
if (configManager == null) return null;
|
if (configManager == null) return null;
|
||||||
|
|
||||||
PersistableBundle bundle = configManager.getConfigForSubId(mSubId);
|
final PersistableBundle bundle = configManager.getConfigForSubId(mSubId);
|
||||||
if (bundle == null) return null;
|
if (bundle == null) return null;
|
||||||
|
|
||||||
String carrierApp = bundle.getString(
|
final String carrierApp = bundle.getString(
|
||||||
CarrierConfigManager.KEY_WFC_EMERGENCY_ADDRESS_CARRIER_APP_STRING);
|
CarrierConfigManager.KEY_WFC_EMERGENCY_ADDRESS_CARRIER_APP_STRING);
|
||||||
if (TextUtils.isEmpty(carrierApp)) return null;
|
if (TextUtils.isEmpty(carrierApp)) return null;
|
||||||
|
|
||||||
ComponentName componentName = ComponentName.unflattenFromString(carrierApp);
|
final ComponentName componentName = ComponentName.unflattenFromString(carrierApp);
|
||||||
if (componentName == null) return null;
|
if (componentName == null) return null;
|
||||||
|
|
||||||
// Build and return intent
|
// Build and return intent
|
||||||
Intent intent = new Intent();
|
final Intent intent = new Intent();
|
||||||
intent.setComponent(componentName);
|
intent.setComponent(componentName);
|
||||||
intent.putExtra(SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX, mSubId);
|
intent.putExtra(SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX, mSubId);
|
||||||
return intent;
|
return intent;
|
||||||
@@ -469,8 +478,8 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment
|
|||||||
Log.i(TAG, "updateWfcMode(" + wfcEnabled + ")");
|
Log.i(TAG, "updateWfcMode(" + wfcEnabled + ")");
|
||||||
mImsManager.setWfcSetting(wfcEnabled);
|
mImsManager.setWfcSetting(wfcEnabled);
|
||||||
|
|
||||||
int wfcMode = mImsManager.getWfcMode(false);
|
final int wfcMode = mImsMmTelManager.getVoWiFiModeSetting();
|
||||||
int wfcRoamingMode = mImsManager.getWfcMode(true);
|
final int wfcRoamingMode = mImsMmTelManager.getVoWiFiRoamingModeSetting();
|
||||||
updateButtonWfcMode(wfcEnabled, wfcMode, wfcRoamingMode);
|
updateButtonWfcMode(wfcEnabled, wfcMode, wfcRoamingMode);
|
||||||
if (wfcEnabled) {
|
if (wfcEnabled) {
|
||||||
mMetricsFeatureProvider.action(getActivity(), getMetricsCategory(), wfcMode);
|
mMetricsFeatureProvider.action(getActivity(), getMetricsCategory(), wfcMode);
|
||||||
@@ -496,7 +505,7 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment
|
|||||||
case REQUEST_CHECK_WFC_DISCLAIMER:
|
case REQUEST_CHECK_WFC_DISCLAIMER:
|
||||||
if (resultCode == Activity.RESULT_OK) {
|
if (resultCode == Activity.RESULT_OK) {
|
||||||
// Call address management activity before turning on WFC
|
// Call address management activity before turning on WFC
|
||||||
Intent carrierAppIntent = getCarrierActivityIntent();
|
final Intent carrierAppIntent = getCarrierActivityIntent();
|
||||||
if (carrierAppIntent != null) {
|
if (carrierAppIntent != null) {
|
||||||
carrierAppIntent.putExtra(EXTRA_LAUNCH_CARRIER_APP, LAUCH_APP_ACTIVATE);
|
carrierAppIntent.putExtra(EXTRA_LAUNCH_CARRIER_APP, LAUCH_APP_ACTIVATE);
|
||||||
startActivityForResult(carrierAppIntent,
|
startActivityForResult(carrierAppIntent,
|
||||||
@@ -520,7 +529,7 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment
|
|||||||
mButtonWfcRoamingMode.setEnabled(wfcEnabled && mEditableWfcRoamingMode);
|
mButtonWfcRoamingMode.setEnabled(wfcEnabled && mEditableWfcRoamingMode);
|
||||||
|
|
||||||
final PreferenceScreen preferenceScreen = getPreferenceScreen();
|
final PreferenceScreen preferenceScreen = getPreferenceScreen();
|
||||||
boolean updateAddressEnabled = (getCarrierActivityIntent() != null);
|
final boolean updateAddressEnabled = (getCarrierActivityIntent() != null);
|
||||||
if (wfcEnabled) {
|
if (wfcEnabled) {
|
||||||
if (mEditableWfcMode) {
|
if (mEditableWfcMode) {
|
||||||
preferenceScreen.addPreference(mButtonWfcMode);
|
preferenceScreen.addPreference(mButtonWfcMode);
|
||||||
@@ -551,24 +560,24 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment
|
|||||||
if (preference == mButtonWfcMode) {
|
if (preference == mButtonWfcMode) {
|
||||||
Log.d(TAG, "onPreferenceChange mButtonWfcMode " + newValue);
|
Log.d(TAG, "onPreferenceChange mButtonWfcMode " + newValue);
|
||||||
mButtonWfcMode.setValue((String) newValue);
|
mButtonWfcMode.setValue((String) newValue);
|
||||||
int buttonMode = Integer.valueOf((String) newValue);
|
final int buttonMode = Integer.valueOf((String) newValue);
|
||||||
int currentWfcMode = mImsManager.getWfcMode(false);
|
final int currentWfcMode = mImsMmTelManager.getVoWiFiModeSetting();
|
||||||
if (buttonMode != currentWfcMode) {
|
if (buttonMode != currentWfcMode) {
|
||||||
mImsManager.setWfcMode(buttonMode, false);
|
mImsMmTelManager.setVoWiFiModeSetting(buttonMode);
|
||||||
mButtonWfcMode.setSummary(getWfcModeSummary(buttonMode));
|
mButtonWfcMode.setSummary(getWfcModeSummary(buttonMode));
|
||||||
mMetricsFeatureProvider.action(getActivity(), getMetricsCategory(), buttonMode);
|
mMetricsFeatureProvider.action(getActivity(), getMetricsCategory(), buttonMode);
|
||||||
|
|
||||||
if (mUseWfcHomeModeForRoaming) {
|
if (mUseWfcHomeModeForRoaming) {
|
||||||
mImsManager.setWfcMode(buttonMode, true);
|
mImsMmTelManager.setVoWiFiRoamingModeSetting(buttonMode);
|
||||||
// mButtonWfcRoamingMode.setSummary is not needed; summary is selected value
|
// mButtonWfcRoamingMode.setSummary is not needed; summary is selected value
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (preference == mButtonWfcRoamingMode) {
|
} else if (preference == mButtonWfcRoamingMode) {
|
||||||
mButtonWfcRoamingMode.setValue((String) newValue);
|
mButtonWfcRoamingMode.setValue((String) newValue);
|
||||||
int buttonMode = Integer.valueOf((String) newValue);
|
final int buttonMode = Integer.valueOf((String) newValue);
|
||||||
int currentMode = mImsManager.getWfcMode(true);
|
final int currentMode = mImsMmTelManager.getVoWiFiRoamingModeSetting();
|
||||||
if (buttonMode != currentMode) {
|
if (buttonMode != currentMode) {
|
||||||
mImsManager.setWfcMode(buttonMode, true);
|
mImsMmTelManager.setVoWiFiRoamingModeSetting(buttonMode);
|
||||||
// mButtonWfcRoamingMode.setSummary is not needed; summary is just selected value.
|
// mButtonWfcRoamingMode.setSummary is not needed; summary is just selected value.
|
||||||
mMetricsFeatureProvider.action(getActivity(), getMetricsCategory(), buttonMode);
|
mMetricsFeatureProvider.action(getActivity(), getMetricsCategory(), buttonMode);
|
||||||
}
|
}
|
||||||
@@ -580,13 +589,13 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment
|
|||||||
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 (mImsManager.isWfcEnabledByUser()) {
|
||||||
switch (wfcMode) {
|
switch (wfcMode) {
|
||||||
case ImsConfig.WfcModeFeatureValueConstants.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;
|
||||||
break;
|
break;
|
||||||
case ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED:
|
case ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED:
|
||||||
resId = com.android.internal.R.string.wfc_mode_cellular_preferred_summary;
|
resId = com.android.internal.R.string.wfc_mode_cellular_preferred_summary;
|
||||||
break;
|
break;
|
||||||
case ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED:
|
case ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED:
|
||||||
resId = com.android.internal.R.string.wfc_mode_wifi_preferred_summary;
|
resId = com.android.internal.R.string.wfc_mode_wifi_preferred_summary;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@@ -30,6 +30,7 @@ import android.os.PersistableBundle;
|
|||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.telephony.CarrierConfigManager;
|
import android.telephony.CarrierConfigManager;
|
||||||
import android.telephony.SubscriptionManager;
|
import android.telephony.SubscriptionManager;
|
||||||
|
import android.telephony.ims.ImsMmTelManager;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
@@ -233,6 +234,7 @@ public class WifiCallingSliceHelper {
|
|||||||
final boolean isWifiOnlySupported = isCarrierConfigManagerKeyEnabled(
|
final boolean isWifiOnlySupported = isCarrierConfigManagerKeyEnabled(
|
||||||
CarrierConfigManager.KEY_CARRIER_WFC_SUPPORTS_WIFI_ONLY_BOOL, subId, true);
|
CarrierConfigManager.KEY_CARRIER_WFC_SUPPORTS_WIFI_ONLY_BOOL, subId, true);
|
||||||
final ImsManager imsManager = getImsManager(subId);
|
final ImsManager imsManager = getImsManager(subId);
|
||||||
|
final ImsMmTelManager imsMmTelManager = getImsMmTelManager(subId);
|
||||||
|
|
||||||
if (!imsManager.isWfcEnabledByPlatform()
|
if (!imsManager.isWfcEnabledByPlatform()
|
||||||
|| !imsManager.isWfcProvisionedOnDevice()) {
|
|| !imsManager.isWfcProvisionedOnDevice()) {
|
||||||
@@ -249,7 +251,7 @@ public class WifiCallingSliceHelper {
|
|||||||
int wfcMode = -1;
|
int wfcMode = -1;
|
||||||
try {
|
try {
|
||||||
isWifiCallingEnabled = isWifiCallingEnabled(imsManager);
|
isWifiCallingEnabled = isWifiCallingEnabled(imsManager);
|
||||||
wfcMode = getWfcMode(imsManager);
|
wfcMode = getWfcMode(imsMmTelManager);
|
||||||
} catch (InterruptedException | ExecutionException | TimeoutException e) {
|
} catch (InterruptedException | ExecutionException | TimeoutException e) {
|
||||||
Log.e(TAG, "Unable to get wifi calling preferred mode", e);
|
Log.e(TAG, "Unable to get wifi calling preferred mode", e);
|
||||||
return null;
|
return null;
|
||||||
@@ -279,7 +281,7 @@ public class WifiCallingSliceHelper {
|
|||||||
Uri sliceUri) {
|
Uri sliceUri) {
|
||||||
final IconCompat icon = IconCompat.createWithResource(mContext, R.drawable.wifi_signal);
|
final IconCompat icon = IconCompat.createWithResource(mContext, R.drawable.wifi_signal);
|
||||||
// Top row shows information on current preference state
|
// Top row shows information on current preference state
|
||||||
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));
|
||||||
listBuilder.setHeader(new ListBuilder.HeaderBuilder()
|
listBuilder.setHeader(new ListBuilder.HeaderBuilder()
|
||||||
.setTitle(mContext.getText(R.string.wifi_calling_mode_title))
|
.setTitle(mContext.getText(R.string.wifi_calling_mode_title))
|
||||||
@@ -294,18 +296,18 @@ public class WifiCallingSliceHelper {
|
|||||||
listBuilder.addRow(wifiPreferenceRowBuilder(listBuilder,
|
listBuilder.addRow(wifiPreferenceRowBuilder(listBuilder,
|
||||||
com.android.internal.R.string.wfc_mode_wifi_only_summary,
|
com.android.internal.R.string.wfc_mode_wifi_only_summary,
|
||||||
ACTION_WIFI_CALLING_PREFERENCE_WIFI_ONLY,
|
ACTION_WIFI_CALLING_PREFERENCE_WIFI_ONLY,
|
||||||
currentWfcPref == ImsConfig.WfcModeFeatureValueConstants.WIFI_ONLY));
|
currentWfcPref == ImsMmTelManager.WIFI_MODE_WIFI_ONLY));
|
||||||
}
|
}
|
||||||
|
|
||||||
listBuilder.addRow(wifiPreferenceRowBuilder(listBuilder,
|
listBuilder.addRow(wifiPreferenceRowBuilder(listBuilder,
|
||||||
com.android.internal.R.string.wfc_mode_wifi_preferred_summary,
|
com.android.internal.R.string.wfc_mode_wifi_preferred_summary,
|
||||||
ACTION_WIFI_CALLING_PREFERENCE_WIFI_PREFERRED,
|
ACTION_WIFI_CALLING_PREFERENCE_WIFI_PREFERRED,
|
||||||
currentWfcPref == ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED));
|
currentWfcPref == ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED));
|
||||||
|
|
||||||
listBuilder.addRow(wifiPreferenceRowBuilder(listBuilder,
|
listBuilder.addRow(wifiPreferenceRowBuilder(listBuilder,
|
||||||
com.android.internal.R.string.wfc_mode_cellular_preferred_summary,
|
com.android.internal.R.string.wfc_mode_cellular_preferred_summary,
|
||||||
ACTION_WIFI_CALLING_PREFERENCE_CELLULAR_PREFERRED,
|
ACTION_WIFI_CALLING_PREFERENCE_CELLULAR_PREFERRED,
|
||||||
currentWfcPref == ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED));
|
currentWfcPref == ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED));
|
||||||
|
|
||||||
return listBuilder.build();
|
return listBuilder.build();
|
||||||
}
|
}
|
||||||
@@ -337,13 +339,13 @@ public class WifiCallingSliceHelper {
|
|||||||
*/
|
*/
|
||||||
private CharSequence getWifiCallingPreferenceSummary(int wfcMode) {
|
private CharSequence getWifiCallingPreferenceSummary(int wfcMode) {
|
||||||
switch (wfcMode) {
|
switch (wfcMode) {
|
||||||
case ImsConfig.WfcModeFeatureValueConstants.WIFI_ONLY:
|
case ImsMmTelManager.WIFI_MODE_WIFI_ONLY:
|
||||||
return mContext.getText(
|
return mContext.getText(
|
||||||
com.android.internal.R.string.wfc_mode_wifi_only_summary);
|
com.android.internal.R.string.wfc_mode_wifi_only_summary);
|
||||||
case ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED:
|
case ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED:
|
||||||
return mContext.getText(
|
return mContext.getText(
|
||||||
com.android.internal.R.string.wfc_mode_wifi_preferred_summary);
|
com.android.internal.R.string.wfc_mode_wifi_preferred_summary);
|
||||||
case ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED:
|
case ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED:
|
||||||
return mContext.getText(
|
return mContext.getText(
|
||||||
com.android.internal.R.string.wfc_mode_cellular_preferred_summary);
|
com.android.internal.R.string.wfc_mode_cellular_preferred_summary);
|
||||||
default:
|
default:
|
||||||
@@ -355,15 +357,19 @@ public class WifiCallingSliceHelper {
|
|||||||
return ImsManager.getInstance(mContext, SubscriptionManager.getPhoneId(subId));
|
return ImsManager.getInstance(mContext, SubscriptionManager.getPhoneId(subId));
|
||||||
}
|
}
|
||||||
|
|
||||||
private int getWfcMode(ImsManager imsManager)
|
protected ImsMmTelManager getImsMmTelManager(int subId) {
|
||||||
|
return ImsMmTelManager.createForSubscriptionId(subId);
|
||||||
|
}
|
||||||
|
|
||||||
|
private int getWfcMode(ImsMmTelManager imsMmTelManager)
|
||||||
throws InterruptedException, ExecutionException, TimeoutException {
|
throws InterruptedException, ExecutionException, TimeoutException {
|
||||||
FutureTask<Integer> wfcModeTask = new FutureTask<>(new Callable<Integer>() {
|
final FutureTask<Integer> wfcModeTask = new FutureTask<>(new Callable<Integer>() {
|
||||||
@Override
|
@Override
|
||||||
public Integer call() {
|
public Integer call() {
|
||||||
return imsManager.getWfcMode(false);
|
return imsMmTelManager.getVoWiFiModeSetting();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
ExecutorService executor = Executors.newSingleThreadExecutor();
|
final ExecutorService executor = Executors.newSingleThreadExecutor();
|
||||||
executor.execute(wfcModeTask);
|
executor.execute(wfcModeTask);
|
||||||
return wfcModeTask.get(TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
|
return wfcModeTask.get(TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
|
||||||
}
|
}
|
||||||
@@ -420,7 +426,7 @@ public class WifiCallingSliceHelper {
|
|||||||
final boolean isWifiOnlySupported = isCarrierConfigManagerKeyEnabled(
|
final boolean isWifiOnlySupported = isCarrierConfigManagerKeyEnabled(
|
||||||
CarrierConfigManager.KEY_CARRIER_WFC_SUPPORTS_WIFI_ONLY_BOOL, subId, true);
|
CarrierConfigManager.KEY_CARRIER_WFC_SUPPORTS_WIFI_ONLY_BOOL, subId, true);
|
||||||
|
|
||||||
ImsManager imsManager = getImsManager(subId);
|
final ImsManager imsManager = getImsManager(subId);
|
||||||
if (isWifiCallingPrefEditable
|
if (isWifiCallingPrefEditable
|
||||||
&& imsManager.isWfcEnabledByPlatform()
|
&& imsManager.isWfcEnabledByPlatform()
|
||||||
&& imsManager.isWfcProvisionedOnDevice()
|
&& imsManager.isWfcProvisionedOnDevice()
|
||||||
@@ -428,25 +434,26 @@ public class WifiCallingSliceHelper {
|
|||||||
&& 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
|
||||||
final int currentValue = imsManager.getWfcMode(false);
|
final ImsMmTelManager imsMmTelManager = getImsMmTelManager(subId);
|
||||||
|
final int currentValue = imsMmTelManager.getVoWiFiModeSetting();
|
||||||
int newValue = errorValue;
|
int newValue = errorValue;
|
||||||
switch (intent.getAction()) {
|
switch (intent.getAction()) {
|
||||||
case ACTION_WIFI_CALLING_PREFERENCE_WIFI_ONLY:
|
case ACTION_WIFI_CALLING_PREFERENCE_WIFI_ONLY:
|
||||||
if (isWifiOnlySupported) {
|
if (isWifiOnlySupported) {
|
||||||
// change to wifi_only when wifi_only is enabled.
|
// change to wifi_only when wifi_only is enabled.
|
||||||
newValue = ImsConfig.WfcModeFeatureValueConstants.WIFI_ONLY;
|
newValue = ImsMmTelManager.WIFI_MODE_WIFI_ONLY;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ACTION_WIFI_CALLING_PREFERENCE_WIFI_PREFERRED:
|
case ACTION_WIFI_CALLING_PREFERENCE_WIFI_PREFERRED:
|
||||||
newValue = ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED;
|
newValue = ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED;
|
||||||
break;
|
break;
|
||||||
case ACTION_WIFI_CALLING_PREFERENCE_CELLULAR_PREFERRED:
|
case ACTION_WIFI_CALLING_PREFERENCE_CELLULAR_PREFERRED:
|
||||||
newValue = ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED;
|
newValue = ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (newValue != errorValue && newValue != currentValue) {
|
if (newValue != errorValue && newValue != currentValue) {
|
||||||
// Update the setting only when there is a valid update
|
// Update the setting only when there is a valid update
|
||||||
imsManager.setWfcMode(newValue, false);
|
imsMmTelManager.setVoWiFiModeSetting(newValue);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -19,7 +19,6 @@ package com.android.settings.network.telephony;
|
|||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
import static org.junit.Assert.assertNull;
|
import static org.junit.Assert.assertNull;
|
||||||
import static org.mockito.ArgumentMatchers.anyBoolean;
|
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
@@ -31,12 +30,11 @@ import android.telecom.PhoneAccountHandle;
|
|||||||
import android.telephony.CarrierConfigManager;
|
import android.telephony.CarrierConfigManager;
|
||||||
import android.telephony.SubscriptionManager;
|
import android.telephony.SubscriptionManager;
|
||||||
import android.telephony.TelephonyManager;
|
import android.telephony.TelephonyManager;
|
||||||
|
import android.telephony.ims.ImsMmTelManager;
|
||||||
|
|
||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
import androidx.preference.PreferenceCategory;
|
|
||||||
import androidx.preference.PreferenceScreen;
|
import androidx.preference.PreferenceScreen;
|
||||||
|
|
||||||
import com.android.ims.ImsConfig;
|
|
||||||
import com.android.ims.ImsManager;
|
import com.android.ims.ImsManager;
|
||||||
import com.android.internal.R;
|
import com.android.internal.R;
|
||||||
import com.android.settings.core.BasePreferenceController;
|
import com.android.settings.core.BasePreferenceController;
|
||||||
@@ -60,6 +58,8 @@ public class WifiCallingPreferenceControllerTest {
|
|||||||
@Mock
|
@Mock
|
||||||
private ImsManager mImsManager;
|
private ImsManager mImsManager;
|
||||||
@Mock
|
@Mock
|
||||||
|
private ImsMmTelManager mImsMmTelManager;
|
||||||
|
@Mock
|
||||||
private PreferenceScreen mPreferenceScreen;
|
private PreferenceScreen mPreferenceScreen;
|
||||||
|
|
||||||
private WifiCallingPreferenceController mController;
|
private WifiCallingPreferenceController mController;
|
||||||
@@ -77,7 +77,12 @@ public class WifiCallingPreferenceControllerTest {
|
|||||||
when(mTelephonyManager.createForSubscriptionId(SUB_ID)).thenReturn(mTelephonyManager);
|
when(mTelephonyManager.createForSubscriptionId(SUB_ID)).thenReturn(mTelephonyManager);
|
||||||
|
|
||||||
mPreference = new Preference(mContext);
|
mPreference = new Preference(mContext);
|
||||||
mController = new WifiCallingPreferenceController(mContext, "wifi_calling");
|
mController = new WifiCallingPreferenceController(mContext, "wifi_calling") {
|
||||||
|
@Override
|
||||||
|
protected ImsMmTelManager getImsMmTelManager(int subId) {
|
||||||
|
return mImsMmTelManager;
|
||||||
|
}
|
||||||
|
};
|
||||||
mController.mCarrierConfigManager = mCarrierConfigManager;
|
mController.mCarrierConfigManager = mCarrierConfigManager;
|
||||||
mController.init(SUB_ID);
|
mController.init(SUB_ID);
|
||||||
mController.mImsManager = mImsManager;
|
mController.mImsManager = mImsManager;
|
||||||
@@ -94,8 +99,10 @@ public class WifiCallingPreferenceControllerTest {
|
|||||||
public void updateState_noSimCallManager_setCorrectSummary() {
|
public void updateState_noSimCallManager_setCorrectSummary() {
|
||||||
mController.mSimCallManager = null;
|
mController.mSimCallManager = null;
|
||||||
when(mImsManager.isWfcEnabledByUser()).thenReturn(true);
|
when(mImsManager.isWfcEnabledByUser()).thenReturn(true);
|
||||||
when(mImsManager.getWfcMode(anyBoolean())).thenReturn(
|
when(mImsMmTelManager.getVoWiFiRoamingModeSetting()).thenReturn(
|
||||||
ImsConfig.WfcModeFeatureValueConstants.WIFI_ONLY);
|
ImsMmTelManager.WIFI_MODE_WIFI_ONLY);
|
||||||
|
when(mImsMmTelManager.getVoWiFiModeSetting()).thenReturn(
|
||||||
|
ImsMmTelManager.WIFI_MODE_WIFI_ONLY);
|
||||||
|
|
||||||
mController.updateState(mPreference);
|
mController.updateState(mPreference);
|
||||||
|
|
||||||
@@ -129,10 +136,10 @@ public class WifiCallingPreferenceControllerTest {
|
|||||||
mController.init(SUB_ID);
|
mController.init(SUB_ID);
|
||||||
mController.mImsManager = mImsManager;
|
mController.mImsManager = mImsManager;
|
||||||
|
|
||||||
when(mImsManager.getWfcMode(true)).thenReturn(
|
when(mImsMmTelManager.getVoWiFiRoamingModeSetting()).thenReturn(
|
||||||
ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED);
|
ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED);
|
||||||
when(mImsManager.getWfcMode(false)).thenReturn(
|
when(mImsMmTelManager.getVoWiFiModeSetting()).thenReturn(
|
||||||
ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED);
|
ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED);
|
||||||
when(mImsManager.isWfcEnabledByUser()).thenReturn(true);
|
when(mImsManager.isWfcEnabledByUser()).thenReturn(true);
|
||||||
when(mTelephonyManager.isNetworkRoaming()).thenReturn(true);
|
when(mTelephonyManager.isNetworkRoaming()).thenReturn(true);
|
||||||
|
|
||||||
@@ -146,10 +153,10 @@ public class WifiCallingPreferenceControllerTest {
|
|||||||
assertNull(mController.mSimCallManager);
|
assertNull(mController.mSimCallManager);
|
||||||
// useWfcHomeModeForRoaming is false by default. In order to check wfc in roaming mode. We
|
// useWfcHomeModeForRoaming is false by default. In order to check wfc in roaming mode. We
|
||||||
// need the device roaming, and not using home mode in roaming network.
|
// need the device roaming, and not using home mode in roaming network.
|
||||||
when(mImsManager.getWfcMode(true)).thenReturn(
|
when(mImsMmTelManager.getVoWiFiRoamingModeSetting()).thenReturn(
|
||||||
ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED);
|
ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED);
|
||||||
when(mImsManager.getWfcMode(false)).thenReturn(
|
when(mImsMmTelManager.getVoWiFiModeSetting()).thenReturn(
|
||||||
ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED);
|
ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED);
|
||||||
when(mImsManager.isWfcEnabledByUser()).thenReturn(true);
|
when(mImsManager.isWfcEnabledByUser()).thenReturn(true);
|
||||||
when(mTelephonyManager.isNetworkRoaming()).thenReturn(true);
|
when(mTelephonyManager.isNetworkRoaming()).thenReturn(true);
|
||||||
|
|
||||||
@@ -169,7 +176,7 @@ public class WifiCallingPreferenceControllerTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void displayPreference_available_setsSubscriptionIdOnIntent() {
|
public void displayPreference_available_setsSubscriptionIdOnIntent() {
|
||||||
Intent intent = new Intent();
|
final Intent intent = new Intent();
|
||||||
mPreference.setIntent(intent);
|
mPreference.setIntent(intent);
|
||||||
mController.displayPreference(mPreferenceScreen);
|
mController.displayPreference(mPreferenceScreen);
|
||||||
assertThat(intent.getIntExtra(Settings.EXTRA_SUB_ID,
|
assertThat(intent.getIntExtra(Settings.EXTRA_SUB_ID,
|
||||||
|
@@ -17,11 +17,12 @@
|
|||||||
package com.android.settings.wifi.calling;
|
package com.android.settings.wifi.calling;
|
||||||
|
|
||||||
import static com.android.settings.SettingsActivity.EXTRA_SHOW_FRAGMENT;
|
import static com.android.settings.SettingsActivity.EXTRA_SHOW_FRAGMENT;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
import static junit.framework.Assert.assertEquals;
|
import static junit.framework.Assert.assertEquals;
|
||||||
|
|
||||||
import static org.mockito.Matchers.any;
|
import static org.mockito.Matchers.any;
|
||||||
import static org.mockito.Matchers.anyBoolean;
|
|
||||||
import static org.mockito.Matchers.anyInt;
|
import static org.mockito.Matchers.anyInt;
|
||||||
import static org.mockito.Matchers.eq;
|
import static org.mockito.Matchers.eq;
|
||||||
import static org.mockito.Mockito.doNothing;
|
import static org.mockito.Mockito.doNothing;
|
||||||
@@ -42,6 +43,7 @@ import android.os.Bundle;
|
|||||||
import android.os.PersistableBundle;
|
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.ProvisioningManager;
|
import android.telephony.ims.ProvisioningManager;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
@@ -53,8 +55,6 @@ import com.android.ims.ImsConfig;
|
|||||||
import com.android.ims.ImsManager;
|
import com.android.ims.ImsManager;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.SettingsActivity;
|
import com.android.settings.SettingsActivity;
|
||||||
import com.android.settings.testutils.FakeFeatureFactory;
|
|
||||||
import com.android.settings.testutils.shadow.SettingsShadowResources;
|
|
||||||
import com.android.settings.testutils.shadow.ShadowFragment;
|
import com.android.settings.testutils.shadow.ShadowFragment;
|
||||||
import com.android.settings.widget.SwitchBar;
|
import com.android.settings.widget.SwitchBar;
|
||||||
import com.android.settings.widget.ToggleSwitch;
|
import com.android.settings.widget.ToggleSwitch;
|
||||||
@@ -67,8 +67,8 @@ import org.mockito.Mock;
|
|||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
import org.robolectric.RobolectricTestRunner;
|
import org.robolectric.RobolectricTestRunner;
|
||||||
import org.robolectric.RuntimeEnvironment;
|
import org.robolectric.RuntimeEnvironment;
|
||||||
import org.robolectric.util.ReflectionHelpers;
|
|
||||||
import org.robolectric.annotation.Config;
|
import org.robolectric.annotation.Config;
|
||||||
|
import org.robolectric.util.ReflectionHelpers;
|
||||||
|
|
||||||
@Config(shadows = ShadowFragment.class)
|
@Config(shadows = ShadowFragment.class)
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
@@ -86,6 +86,7 @@ public class WifiCallingSettingsForSubTest {
|
|||||||
@Mock private static CarrierConfigManager sCarrierConfigManager;
|
@Mock private static CarrierConfigManager sCarrierConfigManager;
|
||||||
@Mock private CarrierConfigManager mMockConfigManager;
|
@Mock private CarrierConfigManager mMockConfigManager;
|
||||||
@Mock private ImsManager mImsManager;
|
@Mock private ImsManager mImsManager;
|
||||||
|
@Mock private ImsMmTelManager mImsMmTelManager;
|
||||||
@Mock private TelephonyManager mTelephonyManager;
|
@Mock private TelephonyManager mTelephonyManager;
|
||||||
@Mock private PreferenceScreen mPreferenceScreen;
|
@Mock private PreferenceScreen mPreferenceScreen;
|
||||||
@Mock private SettingsActivity mActivity;
|
@Mock private SettingsActivity mActivity;
|
||||||
@@ -127,12 +128,15 @@ public class WifiCallingSettingsForSubTest {
|
|||||||
doReturn(mSwitchBar).when(mView).findViewById(R.id.switch_bar);
|
doReturn(mSwitchBar).when(mView).findViewById(R.id.switch_bar);
|
||||||
|
|
||||||
doReturn(mImsManager).when(mFragment).getImsManager();
|
doReturn(mImsManager).when(mFragment).getImsManager();
|
||||||
|
doReturn(mImsMmTelManager).when(mFragment).getImsMmTelManager();
|
||||||
doReturn(mImsConfig).when(mImsManager).getConfigInterface();
|
doReturn(mImsConfig).when(mImsManager).getConfigInterface();
|
||||||
doReturn(true).when(mImsManager).isWfcProvisionedOnDevice();
|
doReturn(true).when(mImsManager).isWfcProvisionedOnDevice();
|
||||||
doReturn(true).when(mImsManager).isWfcEnabledByUser();
|
doReturn(true).when(mImsManager).isWfcEnabledByUser();
|
||||||
doReturn(true).when(mImsManager).isNonTtyOrTtyOnVolteEnabled();
|
doReturn(true).when(mImsManager).isNonTtyOrTtyOnVolteEnabled();
|
||||||
doReturn(ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED)
|
doReturn(ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED)
|
||||||
.when(mImsManager).getWfcMode(anyBoolean());
|
.when(mImsMmTelManager).getVoWiFiModeSetting();
|
||||||
|
doReturn(ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED)
|
||||||
|
.when(mImsMmTelManager).getVoWiFiRoamingModeSetting();
|
||||||
|
|
||||||
doReturn(mBundle).when(sCarrierConfigManager).getConfigForSubId(anyInt());
|
doReturn(mBundle).when(sCarrierConfigManager).getConfigForSubId(anyInt());
|
||||||
setDefaultCarrierConfigValues();
|
setDefaultCarrierConfigValues();
|
||||||
@@ -251,15 +255,13 @@ public class WifiCallingSettingsForSubTest {
|
|||||||
|
|
||||||
// Set the WFC home mode.
|
// Set the WFC home mode.
|
||||||
mFragment.onPreferenceChange(mButtonWfcMode,
|
mFragment.onPreferenceChange(mButtonWfcMode,
|
||||||
String.valueOf(ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED));
|
String.valueOf(ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED));
|
||||||
|
|
||||||
// Check that only WFC home mode is set.
|
// Check that only WFC home mode is set.
|
||||||
verify(mImsManager, times(1)).setWfcMode(
|
verify(mImsMmTelManager, times(1)).setVoWiFiModeSetting(
|
||||||
eq(ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED),
|
eq(ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED));
|
||||||
eq(false));
|
verify(mImsMmTelManager, never()).setVoWiFiRoamingModeSetting(
|
||||||
verify(mImsManager, never()).setWfcMode(
|
eq(ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED));
|
||||||
eq(ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED),
|
|
||||||
eq(true));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -272,34 +274,32 @@ public class WifiCallingSettingsForSubTest {
|
|||||||
|
|
||||||
// Set the WFC home mode.
|
// Set the WFC home mode.
|
||||||
mFragment.onPreferenceChange(mButtonWfcMode,
|
mFragment.onPreferenceChange(mButtonWfcMode,
|
||||||
String.valueOf(ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED));
|
String.valueOf(ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED));
|
||||||
|
|
||||||
// Check that both WFC home mode and roaming mode are set.
|
// Check that both WFC home mode and roaming mode are set.
|
||||||
verify(mImsManager, times(1)).setWfcMode(
|
verify(mImsMmTelManager, times(1)).setVoWiFiModeSetting(
|
||||||
eq(ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED),
|
eq(ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED));
|
||||||
eq(false));
|
verify(mImsMmTelManager, times(1)).setVoWiFiRoamingModeSetting(
|
||||||
verify(mImsManager, times(1)).setWfcMode(
|
eq(ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED));
|
||||||
eq(ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED),
|
|
||||||
eq(true));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void onSwitchChanged_enableSetting_shouldLaunchWfcDisclaimerFragment() {
|
public void onSwitchChanged_enableSetting_shouldLaunchWfcDisclaimerFragment() {
|
||||||
ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
|
final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
|
||||||
|
|
||||||
mFragment.onSwitchChanged(null, true);
|
mFragment.onSwitchChanged(null, true);
|
||||||
|
|
||||||
// Check the WFC disclaimer fragment is launched.
|
// Check the WFC disclaimer fragment is launched.
|
||||||
verify(mFragment).startActivityForResult(intentCaptor.capture(),
|
verify(mFragment).startActivityForResult(intentCaptor.capture(),
|
||||||
eq(WifiCallingSettingsForSub.REQUEST_CHECK_WFC_DISCLAIMER));
|
eq(WifiCallingSettingsForSub.REQUEST_CHECK_WFC_DISCLAIMER));
|
||||||
Intent intent = intentCaptor.getValue();
|
final Intent intent = intentCaptor.getValue();
|
||||||
assertThat(intent.getStringExtra(EXTRA_SHOW_FRAGMENT))
|
assertThat(intent.getStringExtra(EXTRA_SHOW_FRAGMENT))
|
||||||
.isEqualTo(WifiCallingDisclaimerFragment.class.getName());
|
.isEqualTo(WifiCallingDisclaimerFragment.class.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void onActivityResult_finishWfcDisclaimerFragment_shouldLaunchCarrierActivity() {
|
public void onActivityResult_finishWfcDisclaimerFragment_shouldLaunchCarrierActivity() {
|
||||||
ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
|
final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
|
||||||
|
|
||||||
// Emulate the WfcDisclaimerActivity finish.
|
// Emulate the WfcDisclaimerActivity finish.
|
||||||
mFragment.onActivityResult(WifiCallingSettingsForSub.REQUEST_CHECK_WFC_DISCLAIMER,
|
mFragment.onActivityResult(WifiCallingSettingsForSub.REQUEST_CHECK_WFC_DISCLAIMER,
|
||||||
@@ -308,7 +308,7 @@ public class WifiCallingSettingsForSubTest {
|
|||||||
// Check the WFC emergency address activity is launched.
|
// Check the WFC emergency address activity is launched.
|
||||||
verify(mFragment).startActivityForResult(intentCaptor.capture(),
|
verify(mFragment).startActivityForResult(intentCaptor.capture(),
|
||||||
eq(WifiCallingSettingsForSub.REQUEST_CHECK_WFC_EMERGENCY_ADDRESS));
|
eq(WifiCallingSettingsForSub.REQUEST_CHECK_WFC_EMERGENCY_ADDRESS));
|
||||||
Intent intent = intentCaptor.getValue();
|
final Intent intent = intentCaptor.getValue();
|
||||||
assertEquals(intent.getComponent(), ComponentName.unflattenFromString(
|
assertEquals(intent.getComponent(), ComponentName.unflattenFromString(
|
||||||
TEST_EMERGENCY_ADDRESS_CARRIER_APP));
|
TEST_EMERGENCY_ADDRESS_CARRIER_APP));
|
||||||
}
|
}
|
||||||
|
@@ -22,7 +22,6 @@ import static android.app.slice.SliceItem.FORMAT_TEXT;
|
|||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
import static org.mockito.ArgumentMatchers.eq;
|
|
||||||
import static org.mockito.Mockito.doReturn;
|
import static org.mockito.Mockito.doReturn;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
@@ -32,6 +31,7 @@ import android.app.PendingIntent;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.telephony.CarrierConfigManager;
|
import android.telephony.CarrierConfigManager;
|
||||||
|
import android.telephony.ims.ImsMmTelManager;
|
||||||
|
|
||||||
import androidx.slice.Slice;
|
import androidx.slice.Slice;
|
||||||
import androidx.slice.SliceItem;
|
import androidx.slice.SliceItem;
|
||||||
@@ -44,7 +44,6 @@ import androidx.slice.widget.RowContent;
|
|||||||
import androidx.slice.widget.SliceContent;
|
import androidx.slice.widget.SliceContent;
|
||||||
import androidx.slice.widget.SliceLiveData;
|
import androidx.slice.widget.SliceLiveData;
|
||||||
|
|
||||||
import com.android.ims.ImsConfig;
|
|
||||||
import com.android.ims.ImsManager;
|
import com.android.ims.ImsManager;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.slices.CustomSliceRegistry;
|
import com.android.settings.slices.CustomSliceRegistry;
|
||||||
@@ -76,6 +75,9 @@ public class WifiCallingSliceHelperTest {
|
|||||||
@Mock
|
@Mock
|
||||||
private ImsManager mMockImsManager;
|
private ImsManager mMockImsManager;
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private ImsMmTelManager mMockImsMmTelManager;
|
||||||
|
|
||||||
private FakeWifiCallingSliceHelper mWfcSliceHelper;
|
private FakeWifiCallingSliceHelper mWfcSliceHelper;
|
||||||
private SettingsSliceProvider mProvider;
|
private SettingsSliceProvider mProvider;
|
||||||
private SliceBroadcastReceiver mReceiver;
|
private SliceBroadcastReceiver mReceiver;
|
||||||
@@ -189,10 +191,10 @@ public class WifiCallingSliceHelperTest {
|
|||||||
.thenReturn(mWfcSliceHelper);
|
.thenReturn(mWfcSliceHelper);
|
||||||
mWfcSliceHelper.setActivationAppIntent(null);
|
mWfcSliceHelper.setActivationAppIntent(null);
|
||||||
|
|
||||||
ArgumentCaptor<Boolean> mWfcSettingCaptor = ArgumentCaptor.forClass(Boolean.class);
|
final ArgumentCaptor<Boolean> mWfcSettingCaptor = ArgumentCaptor.forClass(Boolean.class);
|
||||||
|
|
||||||
// turn on Wifi calling setting
|
// turn on Wifi calling setting
|
||||||
Intent intent = new Intent(WifiCallingSliceHelper.ACTION_WIFI_CALLING_CHANGED);
|
final Intent intent = new Intent(WifiCallingSliceHelper.ACTION_WIFI_CALLING_CHANGED);
|
||||||
intent.putExtra(EXTRA_TOGGLE_STATE, true);
|
intent.putExtra(EXTRA_TOGGLE_STATE, true);
|
||||||
|
|
||||||
// change the setting
|
// change the setting
|
||||||
@@ -242,8 +244,8 @@ public class WifiCallingSliceHelperTest {
|
|||||||
when(mMockImsManager.isWfcProvisionedOnDevice()).thenReturn(true);
|
when(mMockImsManager.isWfcProvisionedOnDevice()).thenReturn(true);
|
||||||
when(mMockImsManager.isWfcEnabledByUser()).thenReturn(true);
|
when(mMockImsManager.isWfcEnabledByUser()).thenReturn(true);
|
||||||
when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true);
|
when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true);
|
||||||
when(mMockImsManager.getWfcMode(false)).thenReturn(
|
when(mMockImsMmTelManager.getVoWiFiModeSetting()).thenReturn(
|
||||||
ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED);
|
ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED);
|
||||||
mWfcSliceHelper.setIsWifiCallingPrefEditable(true);
|
mWfcSliceHelper.setIsWifiCallingPrefEditable(true);
|
||||||
|
|
||||||
final Slice slice = mWfcSliceHelper.createWifiCallingPreferenceSlice(
|
final Slice slice = mWfcSliceHelper.createWifiCallingPreferenceSlice(
|
||||||
@@ -260,8 +262,8 @@ public class WifiCallingSliceHelperTest {
|
|||||||
when(mMockImsManager.isWfcProvisionedOnDevice()).thenReturn(true);
|
when(mMockImsManager.isWfcProvisionedOnDevice()).thenReturn(true);
|
||||||
when(mMockImsManager.isWfcEnabledByUser()).thenReturn(true);
|
when(mMockImsManager.isWfcEnabledByUser()).thenReturn(true);
|
||||||
when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true);
|
when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true);
|
||||||
when(mMockImsManager.getWfcMode(false)).thenReturn(
|
when(mMockImsMmTelManager.getVoWiFiModeSetting()).thenReturn(
|
||||||
ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED);
|
ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED);
|
||||||
when(mSlicesFeatureProvider.getNewWifiCallingSliceHelper(mContext))
|
when(mSlicesFeatureProvider.getNewWifiCallingSliceHelper(mContext))
|
||||||
.thenReturn(mWfcSliceHelper);
|
.thenReturn(mWfcSliceHelper);
|
||||||
mWfcSliceHelper.setIsWifiCallingPrefEditable(true);
|
mWfcSliceHelper.setIsWifiCallingPrefEditable(true);
|
||||||
@@ -279,25 +281,26 @@ public class WifiCallingSliceHelperTest {
|
|||||||
when(mMockImsManager.isWfcProvisionedOnDevice()).thenReturn(true);
|
when(mMockImsManager.isWfcProvisionedOnDevice()).thenReturn(true);
|
||||||
when(mMockImsManager.isWfcEnabledByUser()).thenReturn(true);
|
when(mMockImsManager.isWfcEnabledByUser()).thenReturn(true);
|
||||||
when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true);
|
when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true);
|
||||||
when(mMockImsManager.getWfcMode(false)).thenReturn(
|
when(mMockImsMmTelManager.getVoWiFiModeSetting()).thenReturn(
|
||||||
ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED);
|
ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED);
|
||||||
when(mSlicesFeatureProvider.getNewWifiCallingSliceHelper(mContext))
|
when(mSlicesFeatureProvider.getNewWifiCallingSliceHelper(mContext))
|
||||||
.thenReturn(mWfcSliceHelper);
|
.thenReturn(mWfcSliceHelper);
|
||||||
mWfcSliceHelper.setIsWifiCallingPrefEditable(true);
|
mWfcSliceHelper.setIsWifiCallingPrefEditable(true);
|
||||||
|
|
||||||
ArgumentCaptor<Integer> mWfcPreferenceCaptor = ArgumentCaptor.forClass(Integer.class);
|
final ArgumentCaptor<Integer> mWfcPreferenceCaptor =
|
||||||
|
ArgumentCaptor.forClass(Integer.class);
|
||||||
|
|
||||||
// Change preference to Cellular pref
|
// Change preference to Cellular pref
|
||||||
Intent intent = new Intent(
|
final Intent intent = new Intent(
|
||||||
WifiCallingSliceHelper.ACTION_WIFI_CALLING_PREFERENCE_CELLULAR_PREFERRED);
|
WifiCallingSliceHelper.ACTION_WIFI_CALLING_PREFERENCE_CELLULAR_PREFERRED);
|
||||||
|
|
||||||
mReceiver.onReceive(mContext, intent);
|
mReceiver.onReceive(mContext, intent);
|
||||||
|
|
||||||
verify((mMockImsManager)).setWfcMode(mWfcPreferenceCaptor.capture(), eq(false));
|
verify((mMockImsMmTelManager)).setVoWiFiModeSetting(mWfcPreferenceCaptor.capture());
|
||||||
|
|
||||||
// assert the change
|
// assert the change
|
||||||
assertThat(mWfcPreferenceCaptor.getValue()).isEqualTo(
|
assertThat(mWfcPreferenceCaptor.getValue()).isEqualTo(
|
||||||
ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED);
|
ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void testWifiCallingSettingsUnavailableSlice(Slice slice,
|
private void testWifiCallingSettingsUnavailableSlice(Slice slice,
|
||||||
@@ -400,7 +403,7 @@ public class WifiCallingSliceHelperTest {
|
|||||||
private void assertTitle(List<SliceItem> sliceItems, String title) {
|
private void assertTitle(List<SliceItem> sliceItems, String title) {
|
||||||
boolean hasTitle = false;
|
boolean hasTitle = false;
|
||||||
for (SliceItem item : sliceItems) {
|
for (SliceItem item : sliceItems) {
|
||||||
List<SliceItem> titleItems = SliceQuery.findAll(item, FORMAT_TEXT, HINT_TITLE,
|
final List<SliceItem> titleItems = SliceQuery.findAll(item, FORMAT_TEXT, HINT_TITLE,
|
||||||
null /* non-hints */);
|
null /* non-hints */);
|
||||||
if (titleItems == null) {
|
if (titleItems == null) {
|
||||||
continue;
|
continue;
|
||||||
@@ -434,6 +437,11 @@ public class WifiCallingSliceHelperTest {
|
|||||||
return mMockImsManager;
|
return mMockImsManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected ImsMmTelManager getImsMmTelManager(int subId) {
|
||||||
|
return mMockImsMmTelManager;
|
||||||
|
}
|
||||||
|
|
||||||
protected int getDefaultVoiceSubId() {
|
protected int getDefaultVoiceSubId() {
|
||||||
return mSubId;
|
return mSubId;
|
||||||
}
|
}
|
||||||
|
@@ -28,7 +28,6 @@ import static org.hamcrest.CoreMatchers.allOf;
|
|||||||
import static org.hamcrest.CoreMatchers.anything;
|
import static org.hamcrest.CoreMatchers.anything;
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.junit.matchers.JUnitMatchers.containsString;
|
import static org.junit.matchers.JUnitMatchers.containsString;
|
||||||
import static org.mockito.ArgumentMatchers.anyBoolean;
|
|
||||||
import static org.mockito.ArgumentMatchers.anyString;
|
import static org.mockito.ArgumentMatchers.anyString;
|
||||||
import static org.mockito.Mockito.doReturn;
|
import static org.mockito.Mockito.doReturn;
|
||||||
|
|
||||||
@@ -38,13 +37,13 @@ import android.content.Context;
|
|||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.support.test.uiautomator.UiDevice;
|
import android.support.test.uiautomator.UiDevice;
|
||||||
import android.telephony.SubscriptionInfo;
|
import android.telephony.SubscriptionInfo;
|
||||||
|
import android.telephony.ims.ImsMmTelManager;
|
||||||
|
|
||||||
import androidx.test.InstrumentationRegistry;
|
import androidx.test.InstrumentationRegistry;
|
||||||
import androidx.test.espresso.NoMatchingViewException;
|
import androidx.test.espresso.NoMatchingViewException;
|
||||||
import androidx.test.espresso.ViewInteraction;
|
import androidx.test.espresso.ViewInteraction;
|
||||||
import androidx.test.runner.AndroidJUnit4;
|
import androidx.test.runner.AndroidJUnit4;
|
||||||
|
|
||||||
import com.android.ims.ImsConfig;
|
|
||||||
import com.android.ims.ImsManager;
|
import com.android.ims.ImsManager;
|
||||||
import com.android.internal.telephony.SubscriptionController;
|
import com.android.internal.telephony.SubscriptionController;
|
||||||
import com.android.settings.testutils.MockedServiceManager;
|
import com.android.settings.testutils.MockedServiceManager;
|
||||||
@@ -87,6 +86,10 @@ public class WifiCallingSettingUiTest {
|
|||||||
ImsManager mImsManager0;
|
ImsManager mImsManager0;
|
||||||
@Mock
|
@Mock
|
||||||
ImsManager mImsManager1;
|
ImsManager mImsManager1;
|
||||||
|
@Mock
|
||||||
|
ImsMmTelManager mImsMmTelManager0;
|
||||||
|
@Mock
|
||||||
|
ImsMmTelManager mImsMmTelManager1;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() throws Exception {
|
public void setUp() throws Exception {
|
||||||
@@ -134,10 +137,10 @@ public class WifiCallingSettingUiTest {
|
|||||||
public void testSingleSimUi() throws InterruptedException {
|
public void testSingleSimUi() throws InterruptedException {
|
||||||
configureSingleSim();
|
configureSingleSim();
|
||||||
doReturn(true).when(mImsManager0).isWfcEnabledByUser();
|
doReturn(true).when(mImsManager0).isWfcEnabledByUser();
|
||||||
doReturn(ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED)
|
doReturn(ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED)
|
||||||
.when(mImsManager0).getWfcMode();
|
.when(mImsMmTelManager0).getVoWiFiModeSetting();
|
||||||
doReturn(ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED)
|
doReturn(ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED)
|
||||||
.when(mImsManager0).getWfcMode(anyBoolean());
|
.when(mImsMmTelManager0).getVoWiFiRoamingModeSetting();
|
||||||
|
|
||||||
mInstrumentation.startActivitySync(createActivityIntent());
|
mInstrumentation.startActivitySync(createActivityIntent());
|
||||||
|
|
||||||
@@ -179,10 +182,10 @@ public class WifiCallingSettingUiTest {
|
|||||||
doReturn(false).when(mImsManager1).isWfcEnabledByPlatform();
|
doReturn(false).when(mImsManager1).isWfcEnabledByPlatform();
|
||||||
doReturn(false).when(mImsManager1).isNonTtyOrTtyOnVolteEnabled();
|
doReturn(false).when(mImsManager1).isNonTtyOrTtyOnVolteEnabled();
|
||||||
doReturn(false).when(mImsManager0).isWfcEnabledByUser();
|
doReturn(false).when(mImsManager0).isWfcEnabledByUser();
|
||||||
doReturn(ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED)
|
doReturn(ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED)
|
||||||
.when(mImsManager0).getWfcMode();
|
.when(mImsMmTelManager0).getVoWiFiModeSetting();
|
||||||
doReturn(ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED)
|
doReturn(ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED)
|
||||||
.when(mImsManager0).getWfcMode(anyBoolean());
|
.when(mImsMmTelManager0).getVoWiFiRoamingModeSetting();
|
||||||
|
|
||||||
Activity activity = mInstrumentation.startActivitySync(createActivityIntent());
|
Activity activity = mInstrumentation.startActivitySync(createActivityIntent());
|
||||||
|
|
||||||
@@ -198,10 +201,10 @@ public class WifiCallingSettingUiTest {
|
|||||||
public void testWfcDisabled() throws InterruptedException {
|
public void testWfcDisabled() throws InterruptedException {
|
||||||
configureSingleSim();
|
configureSingleSim();
|
||||||
doReturn(false).when(mImsManager0).isWfcEnabledByUser();
|
doReturn(false).when(mImsManager0).isWfcEnabledByUser();
|
||||||
doReturn(ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED)
|
doReturn(ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED)
|
||||||
.when(mImsManager0).getWfcMode();
|
.when(mImsMmTelManager0).getVoWiFiModeSetting();
|
||||||
doReturn(ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED)
|
doReturn(ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED)
|
||||||
.when(mImsManager0).getWfcMode(anyBoolean());
|
.when(mImsMmTelManager0).getVoWiFiRoamingModeSetting();
|
||||||
|
|
||||||
Activity activity = mInstrumentation.startActivitySync(createActivityIntent());
|
Activity activity = mInstrumentation.startActivitySync(createActivityIntent());
|
||||||
|
|
||||||
@@ -218,10 +221,10 @@ public class WifiCallingSettingUiTest {
|
|||||||
configureDualSim();
|
configureDualSim();
|
||||||
doReturn(true).when(mImsManager0).isWfcEnabledByUser();
|
doReturn(true).when(mImsManager0).isWfcEnabledByUser();
|
||||||
doReturn(false).when(mImsManager1).isWfcEnabledByUser();
|
doReturn(false).when(mImsManager1).isWfcEnabledByUser();
|
||||||
doReturn(ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED)
|
doReturn(ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED)
|
||||||
.when(mImsManager0).getWfcMode();
|
.when(mImsMmTelManager0).getVoWiFiModeSetting();
|
||||||
doReturn(ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED)
|
doReturn(ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED)
|
||||||
.when(mImsManager0).getWfcMode(anyBoolean());
|
.when(mImsMmTelManager0).getVoWiFiRoamingModeSetting();
|
||||||
|
|
||||||
mInstrumentation.startActivitySync(createActivityIntent());
|
mInstrumentation.startActivitySync(createActivityIntent());
|
||||||
|
|
||||||
@@ -256,6 +259,7 @@ public class WifiCallingSettingUiTest {
|
|||||||
com.android.settings.Settings.WifiCallingSettingsActivity.class);
|
com.android.settings.Settings.WifiCallingSettingsActivity.class);
|
||||||
intent.setPackage("com.android.settings");
|
intent.setPackage("com.android.settings");
|
||||||
intent.setAction("android.intent.action.MAIN");
|
intent.setAction("android.intent.action.MAIN");
|
||||||
|
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||||
return intent;
|
return intent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user