Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit aee115ee authored by Zoey Chen's avatar Zoey Chen
Browse files

[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
parent e7225879
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -376,15 +376,17 @@ public class WifiCallingSliceHelper {
            final WifiCallingQueryImsState queryState = queryImsState(subId);
            if (queryState.isWifiCallingProvisioned()) {
                final boolean currentValue = isWifiCallingEnabled();
                final boolean newValue = intent.getBooleanExtra(EXTRA_TOGGLE_STATE,
                        currentValue);
                final boolean newValue = !(intent.getBooleanExtra(EXTRA_TOGGLE_STATE,
                        currentValue));
                final Intent activationAppIntent =
                        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
                    // or there is no activation involved - Update the setting
                    final ImsMmTelManager imsMmTelManager = getImsMmTelManager(subId);
                    imsMmTelManager.setVoWiFiSettingEnabled(!newValue);
                    imsMmTelManager.setVoWiFiSettingEnabled(newValue);
                } else {
                    Log.w(TAG, "action not taken: subId " + subId
                            + " from " + currentValue + " to " + newValue);