summaryrefslogtreecommitdiff
path: root/service
diff options
context:
space:
mode:
authorRoshan Pius <rpius@google.com>2018-09-21 09:18:13 -0700
committerRoshan Pius <rpius@google.com>2018-10-09 10:35:37 -0700
commit29f2a62b0e6d38d5cc8a6b5ed5b096d6f3654340 (patch)
tree512cd0f187c83cb6897e3c0b65437f2b3768597e /service
parentafa78c953b73d7024e3d8ef49a021f8dac4999f6 (diff)
ClientModeImpl: Construct network factories in constructor
Also, refactor the ClientModeImpl tests to just use mocks for the NetworkFactory. Bug: 116210817 Test: Unit tests Test: Device boots up & auto-connects to wifi networks Change-Id: I5b1baad80eb7dcfb4ae46aa7062f143b510a74fd
Diffstat (limited to 'service')
-rw-r--r--service/java/com/android/server/wifi/ClientModeImpl.java54
-rw-r--r--service/java/com/android/server/wifi/UntrustedWifiNetworkFactory.java2
-rw-r--r--service/java/com/android/server/wifi/WifiInjector.java21
-rw-r--r--service/java/com/android/server/wifi/WifiNetworkFactory.java2
4 files changed, 46 insertions, 33 deletions
diff --git a/service/java/com/android/server/wifi/ClientModeImpl.java b/service/java/com/android/server/wifi/ClientModeImpl.java
index 1372e5ee1..dd63d10b8 100644
--- a/service/java/com/android/server/wifi/ClientModeImpl.java
+++ b/service/java/com/android/server/wifi/ClientModeImpl.java
@@ -807,6 +807,16 @@ public class ClientModeImpl extends StateMachine {
// TODO - needs to be a bit more dynamic
mDfltNetworkCapabilities = new NetworkCapabilities(mNetworkCapabilitiesFilter);
+ // Make the network factories.
+ mNetworkFactory = mWifiInjector.makeWifiNetworkFactory(
+ mNetworkCapabilitiesFilter, mWifiConnectivityManager);
+ // We can't filter untrusted network in the capabilities filter because a trusted
+ // network would still satisfy a request that accepts untrusted ones.
+ // We need a second network factory for untrusted network requests because we need a
+ // different score filter for these requests.
+ mUntrustedNetworkFactory = mWifiInjector.makeUntrustedWifiNetworkFactory(
+ mNetworkCapabilitiesFilter, mWifiConnectivityManager);
+
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
@@ -1907,18 +1917,8 @@ public class ClientModeImpl extends StateMachine {
pw.println("mUserWantsSuspendOpt " + mUserWantsSuspendOpt);
pw.println("mSuspendOptNeedsDisabled " + mSuspendOptNeedsDisabled);
mCountryCode.dump(fd, pw, args);
-
- if (mNetworkFactory != null) {
- mNetworkFactory.dump(fd, pw, args);
- } else {
- pw.println("mNetworkFactory is not initialized");
- }
-
- if (mUntrustedNetworkFactory != null) {
- mUntrustedNetworkFactory.dump(fd, pw, args);
- } else {
- pw.println("mUntrustedNetworkFactory is not initialized");
- }
+ mNetworkFactory.dump(fd, pw, args);
+ mUntrustedNetworkFactory.dump(fd, pw, args);
pw.println("Wlan Wake Reasons:" + mWifiNative.getWlanWakeReasonCount());
pw.println();
@@ -2423,10 +2423,15 @@ public class ClientModeImpl extends StateMachine {
if (mVerboseLoggingEnabled) log("handleScreenStateChanged Exit: " + screenOn);
}
- private void checkAndSetConnectivityInstance() {
+ private boolean checkAndSetConnectivityInstance() {
if (mCm == null) {
mCm = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
}
+ if (mCm == null) {
+ Log.e(TAG, "Cannot retrieve connectivity service");
+ return false;
+ }
+ return true;
}
private void setSuspendOptimizationsNative(int reason, boolean enabled) {
@@ -3091,23 +3096,10 @@ public class ClientModeImpl extends StateMachine {
return true;
}
- void maybeRegisterNetworkFactory() {
- if (mNetworkFactory == null) {
- checkAndSetConnectivityInstance();
- if (mCm != null) {
- mNetworkFactory = new WifiNetworkFactory(getHandler().getLooper(), mContext,
- mNetworkCapabilitiesFilter, mWifiConnectivityManager);
- mNetworkFactory.register();
-
- // We can't filter untrusted network in the capabilities filter because a trusted
- // network would still satisfy a request that accepts untrusted ones.
- // We need a second network factory for untrusted network requests because we need a
- // different score filter for these requests.
- mUntrustedNetworkFactory = new UntrustedWifiNetworkFactory(getHandler().getLooper(),
- mContext, mNetworkCapabilitiesFilter, mWifiConnectivityManager);
- mUntrustedNetworkFactory.register();
- }
- }
+ void registerNetworkFactory() {
+ if (!checkAndSetConnectivityInstance()) return;
+ mNetworkFactory.register();
+ mUntrustedNetworkFactory.register();
}
/**
@@ -3296,7 +3288,7 @@ public class ClientModeImpl extends StateMachine {
if (!mWifiConfigManager.loadFromStore()) {
Log.e(TAG, "Failed to load from config store");
}
- maybeRegisterNetworkFactory();
+ registerNetworkFactory();
break;
case CMD_SCREEN_STATE_CHANGED:
handleScreenStateChanged(message.arg1 != 0);
diff --git a/service/java/com/android/server/wifi/UntrustedWifiNetworkFactory.java b/service/java/com/android/server/wifi/UntrustedWifiNetworkFactory.java
index 86f3cd87e..7eae75827 100644
--- a/service/java/com/android/server/wifi/UntrustedWifiNetworkFactory.java
+++ b/service/java/com/android/server/wifi/UntrustedWifiNetworkFactory.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2018 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/service/java/com/android/server/wifi/WifiInjector.java b/service/java/com/android/server/wifi/WifiInjector.java
index 8e367e92f..bb0a37176 100644
--- a/service/java/com/android/server/wifi/WifiInjector.java
+++ b/service/java/com/android/server/wifi/WifiInjector.java
@@ -21,6 +21,7 @@ import android.app.ActivityManager;
import android.app.AppOpsManager;
import android.content.Context;
import android.hardware.SystemSensorManager;
+import android.net.NetworkCapabilities;
import android.net.NetworkKey;
import android.net.NetworkScoreManager;
import android.net.wifi.IWifiScanner;
@@ -537,6 +538,26 @@ public class WifiInjector {
mSavedNetworkEvaluator, mScoredNetworkEvaluator, mPasspointNetworkEvaluator);
}
+ /**
+ * Construct a new instance of {@link WifiNetworkFactory}.
+ * TODO(b/116233964): Remove cyclic dependency between WifiConnectivityManager & ClientModeImpl.
+ */
+ public WifiNetworkFactory makeWifiNetworkFactory(
+ NetworkCapabilities nc, WifiConnectivityManager wifiConnectivityManager) {
+ return new WifiNetworkFactory(
+ mWifiCoreHandlerThread.getLooper(), mContext, nc, wifiConnectivityManager);
+ }
+
+ /**
+ * Construct a new instance of {@link UntrustedWifiNetworkFactory}.
+ * TODO(b/116233964): Remove cyclic dependency between WifiConnectivityManager & ClientModeImpl.
+ */
+ public UntrustedWifiNetworkFactory makeUntrustedWifiNetworkFactory(
+ NetworkCapabilities nc, WifiConnectivityManager wifiConnectivityManager) {
+ return new UntrustedWifiNetworkFactory(
+ mWifiCoreHandlerThread.getLooper(), mContext, nc, wifiConnectivityManager);
+ }
+
public WifiPermissionsUtil getWifiPermissionsUtil() {
return mWifiPermissionsUtil;
}
diff --git a/service/java/com/android/server/wifi/WifiNetworkFactory.java b/service/java/com/android/server/wifi/WifiNetworkFactory.java
index 8bc2dab2a..489601d0d 100644
--- a/service/java/com/android/server/wifi/WifiNetworkFactory.java
+++ b/service/java/com/android/server/wifi/WifiNetworkFactory.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2018 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.