diff options
Diffstat (limited to 'service')
-rw-r--r-- | service/java/com/android/server/wifi/ActiveModeWarden.java | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/service/java/com/android/server/wifi/ActiveModeWarden.java b/service/java/com/android/server/wifi/ActiveModeWarden.java index e0a0a3d29..cf54e328b 100644 --- a/service/java/com/android/server/wifi/ActiveModeWarden.java +++ b/service/java/com/android/server/wifi/ActiveModeWarden.java @@ -850,6 +850,9 @@ public class ActiveModeWarden { } class EnabledState extends BaseState { + + private boolean mIsDisablingDueToAirplaneMode; + @Override public void enter() { log("EnabledState.enter()"); @@ -857,6 +860,7 @@ public class ActiveModeWarden { if (!hasAnyModeManager()) { Log.e(TAG, "Entered EnabledState, but no active mode managers"); } + mIsDisablingDueToAirplaneMode = false; } @Override @@ -894,11 +898,15 @@ public class ActiveModeWarden { case CMD_AIRPLANE_TOGGLED: // airplane mode toggled on is handled in the default state if (mSettingsStore.isAirplaneModeOn()) { + mIsDisablingDueToAirplaneMode = true; return NOT_HANDLED; } else { - if (hasAnyModeManagerStopping()) { - // previous airplane mode toggle on is being processed, defer the + if (mIsDisablingDueToAirplaneMode) { + // Previous airplane mode toggle on is being processed, defer the // message toggle off until previous processing is completed. + // Once previous airplane mode toggle is complete, we should + // transition to DisabledState. There, we will process the deferred + // airplane mode toggle message to disable airplane mode. deferMessage(msg); } else { // when airplane mode is toggled off, but wifi is on, we can keep it |