[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:
Zoey Chen
2022-12-22 07:41:32 +00:00
parent e722587923
commit aee115ee3b

View File

@@ -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);