WifiController: removed deferred enable

In the old implementation, upon seeing a Wifi toggle on followed by a
toggle off, we discard both commands. Remove this logic since it is
no longer necessary.

Bug: 71559473
Test: Toggle wifi on and off repeatedly.

Change-Id: Ia13ef8efd99e3b0b322862b0644081974d214508
diff --git a/service/java/com/android/server/wifi/ActiveModeWarden.java b/service/java/com/android/server/wifi/ActiveModeWarden.java
index 6ef51d8..9a8abdf 100644
--- a/service/java/com/android/server/wifi/ActiveModeWarden.java
+++ b/service/java/com/android/server/wifi/ActiveModeWarden.java
@@ -28,6 +28,7 @@
 import android.util.Log;
 
 import com.android.internal.app.IBatteryStats;
+import com.android.internal.util.IState;
 import com.android.internal.util.Preconditions;
 import com.android.internal.util.Protocol;
 import com.android.internal.util.State;
@@ -42,6 +43,7 @@
  */
 public class ActiveModeWarden {
     private static final String TAG = "WifiActiveModeWarden";
+    private static final String STATE_MACHINE_EXITED_STATE_NAME = "STATE_MACHINE_EXITED";
 
     private ModeStateMachine mModeStateMachine;
 
@@ -142,7 +144,7 @@
         mLooper = looper;
         mHandler = new Handler(looper);
         mWifiNative = wifiNative;
-        mActiveModeManagers = new ArraySet();
+        mActiveModeManagers = new ArraySet<>();
         mDefaultModeManager = defaultModeManager;
         mBatteryStats = batteryStats;
         mSelfRecovery = mWifiInjector.getSelfRecovery();
@@ -180,10 +182,8 @@
      * {@link WifiManager#IFACE_IP_MODE_TETHERED} {@link WifiManager#IFACE_IP_MODE_LOCAL_ONLY}).
      *
      */
-    public void enterSoftAPMode(@NonNull SoftApModeConfiguration softApModeConfiguration) {
-        mHandler.post(() -> {
-            startSoftAp(softApModeConfiguration);
-        });
+    public void enterSoftAPMode(@NonNull SoftApModeConfiguration softApConfig) {
+        mHandler.post(() -> startSoftAp(softApConfig));
     }
 
     /**
@@ -259,8 +259,8 @@
     /**
      *  Helper class to wrap the ActiveModeManager callback objects.
      */
-    private class ModeCallback {
-        ActiveModeManager mActiveManager;
+    private static class ModeCallback {
+        private ActiveModeManager mActiveManager;
 
         void setActiveModeManager(ActiveModeManager manager) {
             mActiveManager = manager;
@@ -295,7 +295,12 @@
         }
 
         private String getCurrentMode() {
-            return getCurrentState().getName();
+            IState state = getCurrentState();
+            if (state == null) {
+                return STATE_MACHINE_EXITED_STATE_NAME;
+            } else {
+                return state.getName();
+            }
         }
 
         private boolean checkForAndHandleModeChange(Message message) {
diff --git a/service/java/com/android/server/wifi/WifiController.java b/service/java/com/android/server/wifi/WifiController.java
index d5a806e..3ac3cde 100644
--- a/service/java/com/android/server/wifi/WifiController.java
+++ b/service/java/com/android/server/wifi/WifiController.java
@@ -25,8 +25,6 @@
 import android.os.Handler;
 import android.os.Looper;
 import android.os.Message;
-import android.os.SystemClock;
-import android.provider.Settings;
 import android.util.Log;
 
 import com.android.internal.R;
@@ -41,23 +39,11 @@
  */
 public class WifiController extends StateMachine {
     private static final String TAG = "WifiController";
-    private Context mContext;
-    private boolean mFirstUserSignOnSeen = false;
-
-    /**
-     * See {@link Settings.Global#WIFI_REENABLE_DELAY_MS}.  This is the default value if a
-     * Settings.Global value is not present.  This is the minimum time after wifi is disabled
-     * we'll act on an enable.  Enable requests received before this delay will be deferred.
-     */
-    private static final long DEFAULT_REENABLE_DELAY_MS = 500;
+    private final Context mContext;
 
     // Maximum limit to use for timeout delay if the value from overlay setting is too large.
     private static final int MAX_RECOVERY_TIMEOUT_DELAY_MS = 4000;
 
-    // finding that delayed messages can sometimes be delivered earlier than expected
-    // probably rounding errors.  add a margin to prevent problems
-    private static final long DEFER_MARGIN_MS = 5;
-
     /* References to values tracked in WifiService */
     private final ClientModeImpl mClientModeImpl;
     private final Looper mClientModeImplLooper;
@@ -66,9 +52,7 @@
     private final FrameworkFacade mFacade;
     private final WifiPermissionsUtil mWifiPermissionsUtil;
 
-    private long mReEnableDelayMillis;
-
-    private int mRecoveryDelayMillis;
+    private final int mRecoveryDelayMillis;
 
     private static final int BASE = Protocol.BASE_WIFI_CONTROLLER;
 
@@ -77,7 +61,6 @@
     static final int CMD_WIFI_TOGGLED                           = BASE + 8;
     static final int CMD_AIRPLANE_TOGGLED                       = BASE + 9;
     static final int CMD_SET_AP                                 = BASE + 10;
-    static final int CMD_DEFERRED_TOGGLE                        = BASE + 11;
     static final int CMD_EMERGENCY_CALL_STATE_CHANGED           = BASE + 14;
     static final int CMD_AP_STOPPED                             = BASE + 15;
     static final int CMD_STA_START_FAILURE                      = BASE + 16;
@@ -91,14 +74,12 @@
     static final int CMD_SCANNING_STOPPED                       = BASE + 21;
     static final int CMD_DEFERRED_RECOVERY_RESTART_WIFI         = BASE + 22;
 
-    private DefaultState mDefaultState = new DefaultState();
-    private StaEnabledState mStaEnabledState = new StaEnabledState();
-    private StaDisabledState mStaDisabledState = new StaDisabledState();
-    private StaDisabledWithScanState mStaDisabledWithScanState = new StaDisabledWithScanState();
-    private EcmState mEcmState = new EcmState();
-
-    private ScanOnlyModeManager.Listener mScanOnlyModeCallback = new ScanOnlyCallback();
-    private ClientModeManager.Listener mClientModeCallback = new ClientModeCallback();
+    private final DefaultState mDefaultState = new DefaultState();
+    private final StaEnabledState mStaEnabledState = new StaEnabledState();
+    private final StaDisabledState mStaDisabledState = new StaDisabledState();
+    private final StaDisabledWithScanState mStaDisabledWithScanState =
+            new StaDisabledWithScanState();
+    private final EcmState mEcmState = new EcmState();
 
     WifiController(Context context, ClientModeImpl clientModeImpl, Looper clientModeImplLooper,
                    WifiSettingsStore wss, Looper wifiServiceLooper, FrameworkFacade f,
@@ -112,23 +93,46 @@
         mSettingsStore = wss;
         mWifiPermissionsUtil = wifiPermissionsUtil;
 
-        // CHECKSTYLE:OFF IndentationCheck
-        addState(mDefaultState);
+        addState(mDefaultState); {
             addState(mStaDisabledState, mDefaultState);
             addState(mStaEnabledState, mDefaultState);
             addState(mStaDisabledWithScanState, mDefaultState);
             addState(mEcmState, mDefaultState);
-        // CHECKSTYLE:ON IndentationCheck
+        }
 
         setLogRecSize(100);
         setLogOnlyTransitions(false);
 
         // register for state updates via callbacks (vs the intents registered below)
-        mActiveModeWarden.registerScanOnlyCallback(mScanOnlyModeCallback);
-        mActiveModeWarden.registerClientModeCallback(mClientModeCallback);
+        mActiveModeWarden.registerScanOnlyCallback(state -> {
+            if (state == WifiManager.WIFI_STATE_UNKNOWN) {
+                Log.d(TAG, "ScanOnlyMode unexpected failure: state unknown");
+            } else if (state == WifiManager.WIFI_STATE_DISABLED) {
+                Log.d(TAG, "ScanOnlyMode stopped");
+                sendMessage(CMD_SCANNING_STOPPED);
+            } else if (state == WifiManager.WIFI_STATE_ENABLED) {
+                // scan mode is ready to go
+                Log.d(TAG, "scan mode active");
+            } else {
+                Log.d(TAG, "unexpected state update: " + state);
+            }
+        });
+        mActiveModeWarden.registerClientModeCallback(state -> {
+            if (state == WifiManager.WIFI_STATE_UNKNOWN) {
+                logd("ClientMode unexpected failure: state unknown");
+                sendMessage(CMD_STA_START_FAILURE);
+            } else if (state == WifiManager.WIFI_STATE_DISABLED) {
+                logd("ClientMode stopped");
+                sendMessage(CMD_STA_STOPPED);
+            } else if (state == WifiManager.WIFI_STATE_ENABLED) {
+                // scan mode is ready to go
+                logd("client mode active");
+            } else {
+                logd("unexpected state update: " + state);
+            }
+        });
 
-        readWifiReEnableDelay();
-        readWifiRecoveryDelay();
+        mRecoveryDelayMillis = readWifiRecoveryDelay();
     }
 
     @Override
@@ -167,67 +171,18 @@
     }
 
     private boolean checkScanOnlyModeAvailable() {
-        // first check if Location service is disabled, if so return false
-        if (!mWifiPermissionsUtil.isLocationModeEnabled()) {
-            return false;
-        }
-        return mSettingsStore.isScanAlwaysAvailable();
+        return mWifiPermissionsUtil.isLocationModeEnabled()
+                && mSettingsStore.isScanAlwaysAvailable();
     }
 
-    /**
-     * Listener used to receive scan mode updates - really needed for disabled updates to trigger
-     * mode changes.
-     */
-    private class ScanOnlyCallback implements ScanOnlyModeManager.Listener {
-        @Override
-        public void onStateChanged(int state) {
-            if (state == WifiManager.WIFI_STATE_UNKNOWN) {
-                Log.d(TAG, "ScanOnlyMode unexpected failure: state unknown");
-            } else if (state == WifiManager.WIFI_STATE_DISABLED) {
-                Log.d(TAG, "ScanOnlyMode stopped");
-                sendMessage(CMD_SCANNING_STOPPED);
-            } else if (state == WifiManager.WIFI_STATE_ENABLED) {
-                // scan mode is ready to go
-                Log.d(TAG, "scan mode active");
-            } else {
-                Log.d(TAG, "unexpected state update: " + state);
-            }
-        }
-    }
-
-    /**
-     * Listener used to receive client mode updates
-     */
-    private class ClientModeCallback implements ClientModeManager.Listener {
-        @Override
-        public void onStateChanged(int state) {
-            if (state == WifiManager.WIFI_STATE_UNKNOWN) {
-                logd("ClientMode unexpected failure: state unknown");
-                sendMessage(CMD_STA_START_FAILURE);
-            } else if (state == WifiManager.WIFI_STATE_DISABLED) {
-                logd("ClientMode stopped");
-                sendMessage(CMD_STA_STOPPED);
-            } else if (state == WifiManager.WIFI_STATE_ENABLED) {
-                // scan mode is ready to go
-                logd("client mode active");
-            } else {
-                logd("unexpected state update: " + state);
-            }
-        }
-    }
-
-    private void readWifiReEnableDelay() {
-        mReEnableDelayMillis = mFacade.getLongSetting(mContext,
-                Settings.Global.WIFI_REENABLE_DELAY_MS, DEFAULT_REENABLE_DELAY_MS);
-    }
-
-    private void readWifiRecoveryDelay() {
-        mRecoveryDelayMillis = mContext.getResources().getInteger(
+    private int readWifiRecoveryDelay() {
+        int recoveryDelayMillis = mContext.getResources().getInteger(
                 R.integer.config_wifi_framework_recovery_timeout_delay);
-        if (mRecoveryDelayMillis > MAX_RECOVERY_TIMEOUT_DELAY_MS) {
-            mRecoveryDelayMillis = MAX_RECOVERY_TIMEOUT_DELAY_MS;
+        if (recoveryDelayMillis > MAX_RECOVERY_TIMEOUT_DELAY_MS) {
+            recoveryDelayMillis = MAX_RECOVERY_TIMEOUT_DELAY_MS;
             Log.w(TAG, "Overriding timeout delay with maximum limit value");
         }
+        return recoveryDelayMillis;
     }
 
     class DefaultState extends State {
@@ -252,13 +207,9 @@
                     mActiveModeWarden.shutdownWifi();
                     transitionTo(mStaDisabledState);
                     break;
-                case CMD_DEFERRED_TOGGLE:
-                    log("DEFERRED_TOGGLE ignored due to state change");
-                    break;
                 case CMD_SET_AP:
                     // note: CMD_SET_AP is handled/dropped in ECM mode - will not start here
                     if (msg.arg1 == 1) {
-                        SoftApModeConfiguration config = (SoftApModeConfiguration) msg.obj;
                         mActiveModeWarden.enterSoftAPMode((SoftApModeConfiguration) msg.obj);
                     } else {
                         mActiveModeWarden.stopSoftAPMode(msg.arg2);
@@ -299,35 +250,19 @@
             }
             return HANDLED;
         }
-
     }
 
     class StaDisabledState extends State {
-        private int mDeferredEnableSerialNumber = 0;
-        private boolean mHaveDeferredEnable = false;
-        private long mDisabledTimestamp;
-
         @Override
         public void enter() {
             mActiveModeWarden.disableWifi();
-            // Supplicant can't restart right away, so note the time we switched off
-            mDisabledTimestamp = SystemClock.elapsedRealtime();
-            mDeferredEnableSerialNumber++;
-            mHaveDeferredEnable = false;
         }
+
         @Override
         public boolean processMessage(Message msg) {
             switch (msg.what) {
                 case CMD_WIFI_TOGGLED:
                     if (mSettingsStore.isWifiToggleEnabled()) {
-                        if (doDeferEnable(msg)) {
-                            if (mHaveDeferredEnable) {
-                                //  have 2 toggles now, inc serial number and ignore both
-                                mDeferredEnableSerialNumber++;
-                            }
-                            mHaveDeferredEnable = !mHaveDeferredEnable;
-                            break;
-                        }
                         transitionTo(mStaEnabledState);
                     } else if (checkScanOnlyModeAvailable()) {
                         // only go to scan mode if we aren't in airplane mode
@@ -339,7 +274,6 @@
                 case CMD_SCAN_ALWAYS_MODE_CHANGED:
                     if (checkScanOnlyModeAvailable()) {
                         transitionTo(mStaDisabledWithScanState);
-                        break;
                     }
                     break;
                 case CMD_SET_AP:
@@ -348,14 +282,6 @@
                         mSettingsStore.setWifiSavedState(WifiSettingsStore.WIFI_DISABLED);
                     }
                     return NOT_HANDLED;
-                case CMD_DEFERRED_TOGGLE:
-                    if (msg.arg1 != mDeferredEnableSerialNumber) {
-                        log("DEFERRED_TOGGLE ignored due to serial mismatch");
-                        break;
-                    }
-                    log("DEFERRED_TOGGLE handled");
-                    sendMessage((Message)(msg.obj));
-                    break;
                 case CMD_DEFERRED_RECOVERY_RESTART_WIFI:
                     // wait mRecoveryDelayMillis for letting driver clean reset.
                     sendMessageDelayed(CMD_RECOVERY_RESTART_WIFI_CONTINUE, mRecoveryDelayMillis);
@@ -376,24 +302,6 @@
             }
             return HANDLED;
         }
-
-        private boolean doDeferEnable(Message msg) {
-            long delaySoFar = SystemClock.elapsedRealtime() - mDisabledTimestamp;
-            if (delaySoFar >= mReEnableDelayMillis) {
-                return false;
-            }
-
-            log("WifiController msg " + msg + " deferred for " +
-                    (mReEnableDelayMillis - delaySoFar) + "ms");
-
-            // need to defer this action.
-            Message deferredMsg = obtainMessage(CMD_DEFERRED_TOGGLE);
-            deferredMsg.obj = Message.obtain(msg);
-            deferredMsg.arg1 = ++mDeferredEnableSerialNumber;
-            sendMessageDelayed(deferredMsg, mReEnableDelayMillis - delaySoFar + DEFER_MARGIN_MS);
-            return true;
-        }
-
     }
 
     class StaEnabledState extends State {
@@ -421,7 +329,7 @@
                         return NOT_HANDLED;
                     } else {
                         // when airplane mode is toggled off, but wifi is on, we can keep it on
-                        log("airplane mode toggled - and airplane mode is off.  return handled");
+                        log("airplane mode toggled - and airplane mode is off. return handled");
                         return HANDLED;
                     }
                 case CMD_STA_START_FAILURE:
@@ -442,7 +350,7 @@
                     // stopped
                     break;
                 case CMD_STA_STOPPED:
-                    // Client mode stopped.  head to Disabled to wait for next command
+                    // Client mode stopped. head to Disabled to wait for next command
                     transitionTo(mStaDisabledState);
                     break;
                 case CMD_RECOVERY_RESTART_WIFI:
@@ -456,9 +364,8 @@
                         bugTitle = "Wi-Fi BugReport";
                     }
                     if (msg.arg1 != SelfRecovery.REASON_LAST_RESORT_WATCHDOG) {
-                        (new Handler(mClientModeImplLooper)).post(() -> {
-                            mClientModeImpl.takeBugReport(bugTitle, bugDetail);
-                        });
+                        new Handler(mClientModeImplLooper)
+                                .post(() -> mClientModeImpl.takeBugReport(bugTitle, bugDetail));
                     }
                     // after the bug report trigger, more handling needs to be done
                     return NOT_HANDLED;
@@ -470,20 +377,10 @@
     }
 
     class StaDisabledWithScanState extends State {
-        private int mDeferredEnableSerialNumber = 0;
-        private boolean mHaveDeferredEnable = false;
-        private long mDisabledTimestamp;
-
         @Override
         public void enter() {
             // now trigger the actual mode switch in ActiveModeWarden
             mActiveModeWarden.enterScanOnlyMode();
-
-            // TODO b/71559473: remove the defered enable after mode management changes are complete
-            // Supplicant can't restart right away, so not the time we switched off
-            mDisabledTimestamp = SystemClock.elapsedRealtime();
-            mDeferredEnableSerialNumber++;
-            mHaveDeferredEnable = false;
         }
 
         @Override
@@ -491,14 +388,6 @@
             switch (msg.what) {
                 case CMD_WIFI_TOGGLED:
                     if (mSettingsStore.isWifiToggleEnabled()) {
-                        if (doDeferEnable(msg)) {
-                            if (mHaveDeferredEnable) {
-                                // have 2 toggles now, inc serial number and ignore both
-                                mDeferredEnableSerialNumber++;
-                            }
-                            mHaveDeferredEnable = !mHaveDeferredEnable;
-                            break;
-                        }
                         transitionTo(mStaEnabledState);
                     }
                     break;
@@ -514,14 +403,6 @@
                         mSettingsStore.setWifiSavedState(WifiSettingsStore.WIFI_DISABLED);
                     }
                     return NOT_HANDLED;
-                case CMD_DEFERRED_TOGGLE:
-                    if (msg.arg1 != mDeferredEnableSerialNumber) {
-                        log("DEFERRED_TOGGLE ignored due to serial mismatch");
-                        break;
-                    }
-                    logd("DEFERRED_TOGGLE handled");
-                    sendMessage((Message)(msg.obj));
-                    break;
                 case CMD_AP_STOPPED:
                     // already in a wifi mode, no need to check where we should go with softap
                     // stopped
@@ -536,32 +417,16 @@
             }
             return HANDLED;
         }
-
-        private boolean doDeferEnable(Message msg) {
-            long delaySoFar = SystemClock.elapsedRealtime() - mDisabledTimestamp;
-            if (delaySoFar >= mReEnableDelayMillis) {
-                return false;
-            }
-
-            log("WifiController msg " + msg + " deferred for " +
-                    (mReEnableDelayMillis - delaySoFar) + "ms");
-
-            // need to defer this action.
-            Message deferredMsg = obtainMessage(CMD_DEFERRED_TOGGLE);
-            deferredMsg.obj = Message.obtain(msg);
-            deferredMsg.arg1 = ++mDeferredEnableSerialNumber;
-            sendMessageDelayed(deferredMsg, mReEnableDelayMillis - delaySoFar + DEFER_MARGIN_MS);
-            return true;
-        }
-
     }
 
     class EcmState extends State {
-        // we can enter EcmState either because an emergency call started or because
-        // emergency callback mode started. This count keeps track of how many such
-        // events happened; so we can exit after all are undone
-
+        /**
+         * we can enter EcmState either because an emergency call started or because
+         * emergency callback mode started. This count keeps track of how many such
+         * events happened; so we can exit after all are undone
+         */
         private int mEcmEntryCount;
+
         @Override
         public void enter() {
             mActiveModeWarden.stopSoftAPMode(WifiManager.IFACE_IP_MODE_UNSPECIFIED);
@@ -582,21 +447,20 @@
         public boolean processMessage(Message msg) {
             switch (msg.what) {
                 case CMD_EMERGENCY_CALL_STATE_CHANGED:
-                    if (msg.arg1 == 1) {
-                        // nothing to do - just says emergency call started
-                        mEcmEntryCount++;
-                    } else if (msg.arg1 == 0) {
-                        // emergency call ended
-                        decrementCountAndReturnToAppropriateState();
-                    }
-                    return HANDLED;
                 case CMD_EMERGENCY_MODE_CHANGED:
                     if (msg.arg1 == 1) {
-                        // Transitioned into emergency callback mode
                         mEcmEntryCount++;
-                    } else if (msg.arg1 == 0) {
-                        // out of emergency callback mode
-                        decrementCountAndReturnToAppropriateState();
+                    } else {
+                        mEcmEntryCount--;
+                    }
+                    if (mEcmEntryCount <= 0) {
+                        if (mSettingsStore.isWifiToggleEnabled()) {
+                            transitionTo(mStaEnabledState);
+                        } else if (checkScanOnlyModeAvailable()) {
+                            transitionTo(mStaDisabledWithScanState);
+                        } else {
+                            transitionTo(mStaDisabledState);
+                        }
                     }
                     return HANDLED;
                 case CMD_RECOVERY_RESTART_WIFI:
@@ -615,26 +479,5 @@
                     return NOT_HANDLED;
             }
         }
-
-        private void decrementCountAndReturnToAppropriateState() {
-            boolean exitEcm = false;
-
-            if (mEcmEntryCount == 0) {
-                loge("mEcmEntryCount is 0; exiting Ecm");
-                exitEcm = true;
-            } else if (--mEcmEntryCount == 0) {
-                exitEcm = true;
-            }
-
-            if (exitEcm) {
-                if (mSettingsStore.isWifiToggleEnabled()) {
-                    transitionTo(mStaEnabledState);
-                } else if (checkScanOnlyModeAvailable()) {
-                    transitionTo(mStaDisabledWithScanState);
-                } else {
-                    transitionTo(mStaDisabledState);
-                }
-            }
-        }
     }
 }
diff --git a/service/java/com/android/server/wifi/WifiServiceImpl.java b/service/java/com/android/server/wifi/WifiServiceImpl.java
index 373ce8e..451716143 100644
--- a/service/java/com/android/server/wifi/WifiServiceImpl.java
+++ b/service/java/com/android/server/wifi/WifiServiceImpl.java
@@ -1068,6 +1068,7 @@
                     callback.onStateChanged(state, failureReason);
                 } catch (RemoteException e) {
                     Log.e(TAG, "onStateChanged: remote exception -- " + e);
+                    // TODO(b/138863863) remove does nothing, getCallbacks() returns a copy
                     iterator.remove();
                 }
             }
@@ -1094,6 +1095,7 @@
                     callback.onNumClientsChanged(numClients);
                 } catch (RemoteException e) {
                     Log.e(TAG, "onNumClientsChanged: remote exception -- " + e);
+                    // TODO(b/138863863) remove does nothing, getCallbacks() returns a copy
                     iterator.remove();
                 }
             }
@@ -2648,11 +2650,13 @@
                         BluetoothAdapter.STATE_DISCONNECTED);
                 mClientModeImpl.sendBluetoothAdapterStateChange(state);
             } else if (action.equals(TelephonyIntents.ACTION_EMERGENCY_CALLBACK_MODE_CHANGED)) {
-                boolean emergencyMode = intent.getBooleanExtra("phoneinECMState", false);
-                mWifiController.sendMessage(CMD_EMERGENCY_MODE_CHANGED, emergencyMode ? 1 : 0, 0);
+                boolean emergencyMode =
+                        intent.getBooleanExtra(PhoneConstants.PHONE_IN_ECM_STATE, false);
+                mWifiController.sendMessage(CMD_EMERGENCY_MODE_CHANGED, emergencyMode ? 1 : 0);
             } else if (action.equals(TelephonyIntents.ACTION_EMERGENCY_CALL_STATE_CHANGED)) {
-                boolean inCall = intent.getBooleanExtra(PhoneConstants.PHONE_IN_EMERGENCY_CALL, false);
-                mWifiController.sendMessage(CMD_EMERGENCY_CALL_STATE_CHANGED, inCall ? 1 : 0, 0);
+                boolean inCall =
+                        intent.getBooleanExtra(PhoneConstants.PHONE_IN_EMERGENCY_CALL, false);
+                mWifiController.sendMessage(CMD_EMERGENCY_CALL_STATE_CHANGED, inCall ? 1 : 0);
             } else if (action.equals(PowerManager.ACTION_DEVICE_IDLE_MODE_CHANGED)) {
                 handleIdleModeChanged();
             }
diff --git a/service/java/com/android/server/wifi/util/ExternalCallbackTracker.java b/service/java/com/android/server/wifi/util/ExternalCallbackTracker.java
index 8f92da4..506b272 100644
--- a/service/java/com/android/server/wifi/util/ExternalCallbackTracker.java
+++ b/service/java/com/android/server/wifi/util/ExternalCallbackTracker.java
@@ -72,11 +72,11 @@
          * @return an instance of {@link ExternalCallbackHolder} if there are no failures, otherwise
          * null.
          */
-        public static <T> ExternalCallbackHolder createAndLinkToDeath(
+        public static <T> ExternalCallbackHolder<T> createAndLinkToDeath(
                 @NonNull IBinder binder, @NonNull T callbackObject,
                 @NonNull DeathCallback deathCallback) {
             ExternalCallbackHolder<T> externalCallback =
-                    new ExternalCallbackHolder<T>(binder, callbackObject, deathCallback);
+                    new ExternalCallbackHolder<>(binder, callbackObject, deathCallback);
             try {
                 binder.linkToDeath(externalCallback, 0);
             } catch (RemoteException e) {
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiControllerTest.java b/tests/wifitests/src/com/android/server/wifi/WifiControllerTest.java
index 18f7ea5..1a9fe57 100644
--- a/tests/wifitests/src/com/android/server/wifi/WifiControllerTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/WifiControllerTest.java
@@ -542,58 +542,6 @@
     }
 
     /**
-     * Updates about call state change with an invalid state do not change modes.
-     */
-    @Test
-    public void testEnterEcmOnEmergencyCallStateChangeAndUpdateWithInvalidState() throws Exception {
-        verify(mActiveModeWarden).disableWifi();
-
-        enableWifi();
-        verify(mActiveModeWarden).enterClientMode();
-
-        reset(mActiveModeWarden);
-
-        // Test with WifiDisableInECBM turned on:
-        when(mFacade.getConfigWiFiDisableInECBM(mContext)).thenReturn(true);
-
-        // test call state changed
-        mWifiController.sendMessage(CMD_EMERGENCY_CALL_STATE_CHANGED, 1);
-        mLooper.dispatchAll();
-        verify(mActiveModeWarden).shutdownWifi();
-
-        reset(mActiveModeWarden);
-        mWifiController.sendMessage(CMD_EMERGENCY_CALL_STATE_CHANGED, 2);
-        mLooper.dispatchAll();
-        verifyNoMoreInteractions(mActiveModeWarden);
-    }
-
-    /**
-     * Updates about emergency mode change with an invalid state do not change modes.
-     */
-    @Test
-    public void testEnterEcmOnEmergencyModeChangeAndUpdateWithInvalidState() throws Exception {
-        verify(mActiveModeWarden).disableWifi();
-
-        enableWifi();
-        verify(mActiveModeWarden).enterClientMode();
-
-        reset(mActiveModeWarden);
-
-        // Test with WifiDisableInECBM turned on:
-        when(mFacade.getConfigWiFiDisableInECBM(mContext)).thenReturn(true);
-
-        // test call state changed
-        mWifiController.sendMessage(CMD_EMERGENCY_MODE_CHANGED, 1);
-        mLooper.dispatchAll();
-        verify(mActiveModeWarden).shutdownWifi();
-
-        reset(mActiveModeWarden);
-        mWifiController.sendMessage(CMD_EMERGENCY_MODE_CHANGED, 2);
-        mLooper.dispatchAll();
-        verifyNoMoreInteractions(mActiveModeWarden);
-    }
-
-    /**
      * Verify when both ECM and call state changes arrive, we enter ECM mode
      */
     @Test
@@ -1050,8 +998,8 @@
         mLooper.moveTimeForward(TEST_WIFI_RECOVERY_DELAY_MS);
         mLooper.dispatchAll();
         InOrder inOrder = inOrder(mActiveModeWarden);
-        verify(mActiveModeWarden).disableWifi();
-        verify(mActiveModeWarden).enterScanOnlyMode();
+        inOrder.verify(mActiveModeWarden).disableWifi();
+        inOrder.verify(mActiveModeWarden).enterScanOnlyMode();
     }
 
     /**