[Settings] get wrong toggle when handle the WFC changed
WFC toggle's state(EXTRA_TOGGLE_STATE) is set to the newValue after each notifyChange. However, WFC slice gets the same newValue from EXTRA_TOGGLE_STATE when users change the toggle state before the EXTRA_TOGGLE_STATE is updated. Need to get the "correct" new value to set the WFC Follow the original logic(ag/3820815), 1. don't turn on WFC and only can turn off WFC if activationApp is not null. 2. turn on/off if no activationApp. Bug: 261922170 Test: m RunSettingsRoboTests -j ROBOTEST_FILTER=WifiCallingSliceHelperTest Change-Id: I823f00029c24f1901f40757ba13e7c0f90d6c0bc
This commit is contained in:
@@ -376,15 +376,17 @@ public class WifiCallingSliceHelper {
|
|||||||
final WifiCallingQueryImsState queryState = queryImsState(subId);
|
final WifiCallingQueryImsState queryState = queryImsState(subId);
|
||||||
if (queryState.isWifiCallingProvisioned()) {
|
if (queryState.isWifiCallingProvisioned()) {
|
||||||
final boolean currentValue = isWifiCallingEnabled();
|
final boolean currentValue = isWifiCallingEnabled();
|
||||||
final boolean newValue = intent.getBooleanExtra(EXTRA_TOGGLE_STATE,
|
final boolean newValue = !(intent.getBooleanExtra(EXTRA_TOGGLE_STATE,
|
||||||
currentValue);
|
currentValue));
|
||||||
final Intent activationAppIntent =
|
final Intent activationAppIntent =
|
||||||
getWifiCallingCarrierActivityIntent(subId);
|
getWifiCallingCarrierActivityIntent(subId);
|
||||||
if ((newValue == currentValue) && activationAppIntent == null) {
|
// 1. If activationApp is not null, users only can turn off WFC, or
|
||||||
|
// 2. Turn on/off directly if there is no activationApp.
|
||||||
|
if ((newValue != currentValue) && (activationAppIntent == null || !newValue)) {
|
||||||
// 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
|
||||||
final ImsMmTelManager imsMmTelManager = getImsMmTelManager(subId);
|
final ImsMmTelManager imsMmTelManager = getImsMmTelManager(subId);
|
||||||
imsMmTelManager.setVoWiFiSettingEnabled(!newValue);
|
imsMmTelManager.setVoWiFiSettingEnabled(newValue);
|
||||||
} else {
|
} else {
|
||||||
Log.w(TAG, "action not taken: subId " + subId
|
Log.w(TAG, "action not taken: subId " + subId
|
||||||
+ " from " + currentValue + " to " + newValue);
|
+ " from " + currentValue + " to " + newValue);
|
||||||
|
Reference in New Issue
Block a user