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();
}
/**