diff options
author | Roshan Pius <rpius@google.com> | 2019-04-18 10:36:16 -0700 |
---|---|---|
committer | Roshan Pius <rpius@google.com> | 2019-04-22 15:54:28 -0700 |
commit | ebf8acdbe44fe70d070e5c9911c50d6f0e5e89c0 (patch) | |
tree | ee6bb89003646d774727372c6b267a0ead07d783 | |
parent | af7f8a71dc68b8f5ddb484d5c27bad3088c4fc33 (diff) |
WifiController: Minor cleanups
a) Location mode check should use LocationManager.isLocationEnabled()
API. The previously used global setting has been deprecated.
b) Remove unused mNetworkInfo variable & stop listening to
NETWORK_STATE_CHANGED broadcast that was used to update mNetworkInfo.
Bug: 130766132
Test: Device boots & connects to wifi network.
Test: Regression testing.
Change-Id: I173f66fa408267c0912aff6fda16993880c8d141
4 files changed, 28 insertions, 50 deletions
diff --git a/service/java/com/android/server/wifi/WifiController.java b/service/java/com/android/server/wifi/WifiController.java index c92d32c3f..bfa2ae033 100644 --- a/service/java/com/android/server/wifi/WifiController.java +++ b/service/java/com/android/server/wifi/WifiController.java @@ -21,8 +21,6 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.location.LocationManager; -import android.net.ConnectivityManager; -import android.net.NetworkInfo; import android.net.wifi.WifiManager; import android.os.Handler; import android.os.Looper; @@ -35,6 +33,7 @@ import com.android.internal.R; import com.android.internal.util.Protocol; import com.android.internal.util.State; import com.android.internal.util.StateMachine; +import com.android.server.wifi.util.WifiPermissionsUtil; /** * WifiController is the class used to manage wifi state for various operating @@ -60,20 +59,18 @@ public class WifiController extends StateMachine { // probably rounding errors. add a margin to prevent problems private static final long DEFER_MARGIN_MS = 5; - NetworkInfo mNetworkInfo = new NetworkInfo(ConnectivityManager.TYPE_WIFI, 0, "WIFI", ""); - /* References to values tracked in WifiService */ private final ClientModeImpl mClientModeImpl; private final Looper mClientModeImplLooper; private final ActiveModeWarden mActiveModeWarden; private final WifiSettingsStore mSettingsStore; + private final FrameworkFacade mFacade; + private final WifiPermissionsUtil mWifiPermissionsUtil; private long mReEnableDelayMillis; private int mRecoveryDelayMillis; - private FrameworkFacade mFacade; - private static final int BASE = Protocol.BASE_WIFI_CONTROLLER; static final int CMD_EMERGENCY_MODE_CHANGED = BASE + 1; @@ -107,7 +104,7 @@ public class WifiController extends StateMachine { WifiController(Context context, ClientModeImpl clientModeImpl, Looper clientModeImplLooper, WifiSettingsStore wss, Looper wifiServiceLooper, FrameworkFacade f, - ActiveModeWarden amw) { + ActiveModeWarden amw, WifiPermissionsUtil wifiPermissionsUtil) { super(TAG, wifiServiceLooper); mFacade = f; mContext = context; @@ -115,6 +112,7 @@ public class WifiController extends StateMachine { mClientModeImplLooper = clientModeImplLooper; mActiveModeWarden = amw; mSettingsStore = wss; + mWifiPermissionsUtil = wifiPermissionsUtil; // CHECKSTYLE:OFF IndentationCheck addState(mDefaultState); @@ -140,9 +138,7 @@ public class WifiController extends StateMachine { boolean isAirplaneModeOn = mSettingsStore.isAirplaneModeOn(); boolean isWifiEnabled = mSettingsStore.isWifiToggleEnabled(); boolean isScanningAlwaysAvailable = mSettingsStore.isScanAlwaysAvailable(); - boolean isLocationModeActive = - mSettingsStore.getLocationModeSetting(mContext) - == Settings.Secure.LOCATION_MODE_OFF; + boolean isLocationModeActive = mWifiPermissionsUtil.isLocationModeEnabled(); log("isAirplaneModeOn = " + isAirplaneModeOn + ", isWifiEnabled = " + isWifiEnabled @@ -155,7 +151,6 @@ public class WifiController extends StateMachine { setInitialState(mStaDisabledState); } IntentFilter filter = new IntentFilter(); - filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION); filter.addAction(WifiManager.WIFI_AP_STATE_CHANGED_ACTION); filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION); filter.addAction(LocationManager.MODE_CHANGED_ACTION); @@ -164,10 +159,7 @@ public class WifiController extends StateMachine { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); - if (action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) { - mNetworkInfo = (NetworkInfo) intent.getParcelableExtra( - WifiManager.EXTRA_NETWORK_INFO); - } else if (action.equals(WifiManager.WIFI_AP_STATE_CHANGED_ACTION)) { + if (action.equals(WifiManager.WIFI_AP_STATE_CHANGED_ACTION)) { int state = intent.getIntExtra( WifiManager.EXTRA_WIFI_AP_STATE, WifiManager.WIFI_AP_STATE_FAILED); @@ -190,8 +182,7 @@ public class WifiController extends StateMachine { private boolean checkScanOnlyModeAvailable() { // first check if Location service is disabled, if so return false - if (mSettingsStore.getLocationModeSetting(mContext) - == Settings.Secure.LOCATION_MODE_OFF) { + if (!mWifiPermissionsUtil.isLocationModeEnabled()) { return false; } return mSettingsStore.isScanAlwaysAvailable(); diff --git a/service/java/com/android/server/wifi/WifiInjector.java b/service/java/com/android/server/wifi/WifiInjector.java index 988bdf086..705ce41ba 100644 --- a/service/java/com/android/server/wifi/WifiInjector.java +++ b/service/java/com/android/server/wifi/WifiInjector.java @@ -323,7 +323,7 @@ public class WifiInjector { mClock, mWifiMetrics); mWifiController = new WifiController(mContext, mClientModeImpl, clientModeImplLooper, mSettingsStore, mWifiServiceHandlerThread.getLooper(), mFrameworkFacade, - mActiveModeWarden); + mActiveModeWarden, mWifiPermissionsUtil); mSelfRecovery = new SelfRecovery(mWifiController, mClock); mWifiMulticastLockManager = new WifiMulticastLockManager( mClientModeImpl.getMcastLockManagerFilterController(), diff --git a/service/java/com/android/server/wifi/WifiSettingsStore.java b/service/java/com/android/server/wifi/WifiSettingsStore.java index 71b4deb97..8d8d587b5 100644 --- a/service/java/com/android/server/wifi/WifiSettingsStore.java +++ b/service/java/com/android/server/wifi/WifiSettingsStore.java @@ -225,14 +225,4 @@ public class WifiSettingsStore { Settings.Global.WIFI_SCAN_ALWAYS_AVAILABLE, 0) == 1; } - - /** - * Get Location Mode settings for the context - * @param context - * @return Location Mode setting - */ - public int getLocationModeSetting(Context context) { - return Settings.Secure.getInt(context.getContentResolver(), - Settings.Secure.LOCATION_MODE, Settings.Secure.LOCATION_MODE_OFF); - } } diff --git a/tests/wifitests/src/com/android/server/wifi/WifiControllerTest.java b/tests/wifitests/src/com/android/server/wifi/WifiControllerTest.java index 932014264..18f7ea5df 100644 --- a/tests/wifitests/src/com/android/server/wifi/WifiControllerTest.java +++ b/tests/wifitests/src/com/android/server/wifi/WifiControllerTest.java @@ -37,9 +37,7 @@ import android.content.IntentFilter; import android.content.res.Resources; import android.location.LocationManager; import android.net.wifi.WifiManager; -import android.os.Handler; import android.os.test.TestLooper; -import android.provider.Settings; import android.util.Log; import androidx.test.filters.SmallTest; @@ -47,6 +45,7 @@ import androidx.test.filters.SmallTest; import com.android.internal.R; import com.android.internal.util.IState; import com.android.internal.util.StateMachine; +import com.android.server.wifi.util.WifiPermissionsUtil; import org.junit.After; import org.junit.Before; @@ -88,8 +87,6 @@ public class WifiControllerTest { when(mSettingsStore.isAirplaneModeOn()).thenReturn(false); when(mSettingsStore.isWifiToggleEnabled()).thenReturn(false); when(mSettingsStore.isScanAlwaysAvailable()).thenReturn(false); - when(mSettingsStore.getLocationModeSetting(eq(mContext))) - .thenReturn(Settings.Secure.LOCATION_MODE_HIGH_ACCURACY); } TestLooper mLooper; @@ -99,9 +96,9 @@ public class WifiControllerTest { @Mock WifiSettingsStore mSettingsStore; @Mock ClientModeImpl mClientModeImpl; @Mock ActiveModeWarden mActiveModeWarden; + @Mock WifiPermissionsUtil mWifiPermissionsUtil; WifiController mWifiController; - Handler mClientModeImplHandler; private BroadcastReceiver mBroadcastReceiver; @@ -120,9 +117,11 @@ public class WifiControllerTest { when(mResources.getInteger(R.integer.config_wifi_framework_recovery_timeout_delay)) .thenReturn(TEST_WIFI_RECOVERY_DELAY_MS); + when(mWifiPermissionsUtil.isLocationModeEnabled()).thenReturn(true); mWifiController = new WifiController(mContext, mClientModeImpl, mLooper.getLooper(), - mSettingsStore, mLooper.getLooper(), mFacade, mActiveModeWarden); + mSettingsStore, mLooper.getLooper(), mFacade, mActiveModeWarden, + mWifiPermissionsUtil); mWifiController.start(); mLooper.dispatchAll(); @@ -185,7 +184,7 @@ public class WifiControllerTest { WifiController wifiController = new WifiController(mContext, mClientModeImpl, mLooper.getLooper(), mSettingsStore, mLooper.getLooper(), mFacade, - mActiveModeWarden); + mActiveModeWarden, mWifiPermissionsUtil); wifiController.start(); mLooper.dispatchAll(); @@ -203,11 +202,11 @@ public class WifiControllerTest { when(mSettingsStore.isAirplaneModeOn()).thenReturn(false); when(mSettingsStore.isWifiToggleEnabled()).thenReturn(false); when(mSettingsStore.isScanAlwaysAvailable()).thenReturn(false); - when(mSettingsStore.getLocationModeSetting(eq(mContext))) - .thenReturn(Settings.Secure.LOCATION_MODE_OFF); + when(mWifiPermissionsUtil.isLocationModeEnabled()).thenReturn(false); mWifiController = new WifiController(mContext, mClientModeImpl, mLooper.getLooper(), - mSettingsStore, mLooper.getLooper(), mFacade, mActiveModeWarden); + mSettingsStore, mLooper.getLooper(), mFacade, mActiveModeWarden, + mWifiPermissionsUtil); reset(mActiveModeWarden); mWifiController.start(); @@ -230,13 +229,13 @@ public class WifiControllerTest { @Test public void testEnterScanModeWhenLocationModeEnabled() throws Exception { when(mSettingsStore.isScanAlwaysAvailable()).thenReturn(true); - when(mSettingsStore.getLocationModeSetting(eq(mContext))) - .thenReturn(Settings.Secure.LOCATION_MODE_OFF); + when(mWifiPermissionsUtil.isLocationModeEnabled()).thenReturn(false); reset(mContext, mActiveModeWarden); when(mContext.getResources()).thenReturn(mResources); mWifiController = new WifiController(mContext, mClientModeImpl, mLooper.getLooper(), - mSettingsStore, mLooper.getLooper(), mFacade, mActiveModeWarden); + mSettingsStore, mLooper.getLooper(), mFacade, mActiveModeWarden, + mWifiPermissionsUtil); mWifiController.start(); mLooper.dispatchAll(); @@ -248,8 +247,7 @@ public class WifiControllerTest { verify(mActiveModeWarden).disableWifi(); - when(mSettingsStore.getLocationModeSetting(eq(mContext))) - .thenReturn(Settings.Secure.LOCATION_MODE_HIGH_ACCURACY); + when(mWifiPermissionsUtil.isLocationModeEnabled()).thenReturn(true); Intent intent = new Intent(LocationManager.MODE_CHANGED_ACTION); mBroadcastReceiver.onReceive(mContext, intent); @@ -265,14 +263,13 @@ public class WifiControllerTest { @Test public void testExitScanModeWhenLocationModeDisabled() throws Exception { when(mSettingsStore.isScanAlwaysAvailable()).thenReturn(true); - when(mSettingsStore.getLocationModeSetting(eq(mContext))) - .thenReturn(Settings.Secure.LOCATION_MODE_HIGH_ACCURACY); + when(mWifiPermissionsUtil.isLocationModeEnabled()).thenReturn(true); reset(mContext, mActiveModeWarden); when(mContext.getResources()).thenReturn(mResources); mWifiController = new WifiController(mContext, mClientModeImpl, mLooper.getLooper(), - mSettingsStore, mLooper.getLooper(), mFacade, mActiveModeWarden); - + mSettingsStore, mLooper.getLooper(), mFacade, mActiveModeWarden, + mWifiPermissionsUtil); mWifiController.start(); mLooper.dispatchAll(); @@ -283,8 +280,7 @@ public class WifiControllerTest { verify(mActiveModeWarden).enterScanOnlyMode(); - when(mSettingsStore.getLocationModeSetting(eq(mContext))) - .thenReturn(Settings.Secure.LOCATION_MODE_OFF); + when(mWifiPermissionsUtil.isLocationModeEnabled()).thenReturn(false); Intent intent = new Intent(LocationManager.MODE_CHANGED_ACTION); mBroadcastReceiver.onReceive(mContext, intent); @@ -1016,7 +1012,8 @@ public class WifiControllerTest { when(mSettingsStore.isScanAlwaysAvailable()).thenReturn(false); mWifiController = new WifiController(mContext, mClientModeImpl, mLooper.getLooper(), - mSettingsStore, mLooper.getLooper(), mFacade, mActiveModeWarden); + mSettingsStore, mLooper.getLooper(), mFacade, mActiveModeWarden, + mWifiPermissionsUtil); mWifiController.start(); mLooper.dispatchAll(); |