summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoshan Pius <rpius@google.com>2019-04-18 10:36:16 -0700
committerRoshan Pius <rpius@google.com>2019-04-22 15:54:28 -0700
commitebf8acdbe44fe70d070e5c9911c50d6f0e5e89c0 (patch)
treeee6bb89003646d774727372c6b267a0ead07d783
parentaf7f8a71dc68b8f5ddb484d5c27bad3088c4fc33 (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
-rw-r--r--service/java/com/android/server/wifi/WifiController.java25
-rw-r--r--service/java/com/android/server/wifi/WifiInjector.java2
-rw-r--r--service/java/com/android/server/wifi/WifiSettingsStore.java10
-rw-r--r--tests/wifitests/src/com/android/server/wifi/WifiControllerTest.java41
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();