summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRandy Pan <zpan@google.com>2016-04-26 11:24:50 -0700
committerRandy Pan <zpan@google.com>2016-04-26 16:19:11 -0700
commitc8a21e495dfaa5c44e87fda330621a1ed6c8aace (patch)
tree635cca3b91bbbaf98cdaf84a9544a7f194901f89
parentf6807b2f28848838d60aef1c9563c79e15cd7519 (diff)
WifiConnectivityManager: Run AlarmManager on WifiStateMachine thread
With WifiScanner also running on the WifiStateMachine thread, WifiConnectivityManager is now exectued on a single thread context. While there, fixed a few checkstyle issues. Bug: 28369823 Change-Id: Ibf2b65be42d243deb61a68380a9011f4acc663b4
-rw-r--r--service/java/com/android/server/wifi/WifiConnectivityManager.java20
-rw-r--r--service/java/com/android/server/wifi/WifiStateMachine.java3
-rw-r--r--tests/wifitests/src/com/android/server/wifi/WifiConnectivityManagerTest.java5
3 files changed, 18 insertions, 10 deletions
diff --git a/service/java/com/android/server/wifi/WifiConnectivityManager.java b/service/java/com/android/server/wifi/WifiConnectivityManager.java
index 9b1eeacb5..80e04fbdf 100644
--- a/service/java/com/android/server/wifi/WifiConnectivityManager.java
+++ b/service/java/com/android/server/wifi/WifiConnectivityManager.java
@@ -29,6 +29,8 @@ import android.net.wifi.WifiManager;
import android.net.wifi.WifiScanner;
import android.net.wifi.WifiScanner.PnoSettings;
import android.net.wifi.WifiScanner.ScanSettings;
+import android.os.Handler;
+import android.os.Looper;
import android.util.LocalLog;
import android.util.Log;
@@ -99,6 +101,7 @@ public class WifiConnectivityManager {
private final WifiQualifiedNetworkSelector mQualifiedNetworkSelector;
private final WifiLastResortWatchdog mWifiLastResortWatchdog;
private final AlarmManager mAlarmManager;
+ private final Handler mEventHandler;
private final Clock mClock;
private final LocalLog mLocalLog =
new LocalLog(ActivityManager.isLowRamDeviceStatic() ? 1024 : 16384);
@@ -378,7 +381,7 @@ public class WifiConnectivityManager {
public WifiConnectivityManager(Context context, WifiStateMachine stateMachine,
WifiScanner scanner, WifiConfigManager configManager, WifiInfo wifiInfo,
WifiQualifiedNetworkSelector qualifiedNetworkSelector,
- WifiInjector wifiInjector) {
+ WifiInjector wifiInjector, Looper looper) {
mStateMachine = stateMachine;
mScanner = scanner;
mConfigManager = configManager;
@@ -386,6 +389,7 @@ public class WifiConnectivityManager {
mQualifiedNetworkSelector = qualifiedNetworkSelector;
mWifiLastResortWatchdog = wifiInjector.getWifiLastResortWatchdog();
mAlarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
+ mEventHandler = new Handler(looper);
mClock = wifiInjector.getClock();
mConnectionAttemptTimeStamps = new LinkedList<>();
@@ -419,10 +423,10 @@ public class WifiConnectivityManager {
private boolean shouldSkipConnectionAttempt(Long currentTimeMillis) {
Iterator<Long> attemptIter = mConnectionAttemptTimeStamps.iterator();
// First evict old entries from the queue.
- while(attemptIter.hasNext()) {
+ while (attemptIter.hasNext()) {
Long connectionAttemptTimeMillis = attemptIter.next();
- if ((currentTimeMillis - connectionAttemptTimeMillis) >
- MAX_CONNECTION_ATTEMPTS_TIME_INTERVAL_MS) {
+ if ((currentTimeMillis - connectionAttemptTimeMillis)
+ > MAX_CONNECTION_ATTEMPTS_TIME_INTERVAL_MS) {
attemptIter.remove();
} else {
// This list is sorted by timestamps, so we can skip any more checks
@@ -672,7 +676,7 @@ public class WifiConnectivityManager {
mAlarmManager.set(AlarmManager.RTC_WAKEUP,
mClock.currentTimeMillis() + WATCHDOG_INTERVAL_MS,
"WifiConnectivityManager Schedule Watchdog Timer",
- mWatchdogListener, null);
+ mWatchdogListener, mEventHandler);
}
// Set up periodic scan timer
@@ -680,7 +684,7 @@ public class WifiConnectivityManager {
mAlarmManager.set(AlarmManager.RTC_WAKEUP,
mClock.currentTimeMillis() + PERIODIC_SCAN_INTERVAL_MS,
"WifiConnectivityManager Schedule Periodic Scan Timer",
- mPeriodicScanTimerListener, null);
+ mPeriodicScanTimerListener, mEventHandler);
}
// Set up timer to start a delayed single scan after RESTART_SCAN_DELAY_MS
@@ -690,7 +694,7 @@ public class WifiConnectivityManager {
mAlarmManager.set(AlarmManager.RTC_WAKEUP,
mClock.currentTimeMillis() + RESTART_SCAN_DELAY_MS,
"WifiConnectivityManager Restart Single Scan",
- mRestartSingleScanListener, null);
+ mRestartSingleScanListener, mEventHandler);
}
// Set up timer to start a delayed scan after RESTART_SCAN_DELAY_MS
@@ -700,7 +704,7 @@ public class WifiConnectivityManager {
mAlarmManager.set(AlarmManager.RTC_WAKEUP,
mClock.currentTimeMillis() + RESTART_SCAN_DELAY_MS,
"WifiConnectivityManager Restart Scan",
- mRestartScanListener, null);
+ mRestartScanListener, mEventHandler);
}
diff --git a/service/java/com/android/server/wifi/WifiStateMachine.java b/service/java/com/android/server/wifi/WifiStateMachine.java
index ef93801c4..869a09f43 100644
--- a/service/java/com/android/server/wifi/WifiStateMachine.java
+++ b/service/java/com/android/server/wifi/WifiStateMachine.java
@@ -4674,7 +4674,8 @@ public class WifiStateMachine extends StateMachine implements WifiNative.WifiRss
mWifiConnectivityManager = new WifiConnectivityManager(mContext,
WifiStateMachine.this, mWifiScanner, mWifiConfigManager, mWifiInfo,
- mWifiQualifiedNetworkSelector, mWifiInjector);
+ mWifiQualifiedNetworkSelector, mWifiInjector,
+ getHandler().getLooper());
}
mWifiLogger.startLogging(DBG);
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiConnectivityManagerTest.java b/tests/wifitests/src/com/android/server/wifi/WifiConnectivityManagerTest.java
index b3a9b175c..a8784a45c 100644
--- a/tests/wifitests/src/com/android/server/wifi/WifiConnectivityManagerTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/WifiConnectivityManagerTest.java
@@ -33,6 +33,7 @@ import android.net.wifi.WifiScanner.PnoScanListener;
import android.net.wifi.WifiScanner.PnoSettings;
import android.net.wifi.WifiScanner.ScanListener;
import android.net.wifi.WifiScanner.ScanSettings;
+import android.os.Looper;
import android.os.WorkSource;
import android.test.suitebuilder.annotation.SmallTest;
@@ -69,7 +70,8 @@ public class WifiConnectivityManagerTest {
mWifiScanner = mockWifiScanner();
mWifiQNS = mockWifiQualifiedNetworkSelector();
mWifiConnectivityManager = new WifiConnectivityManager(mContext, mWifiStateMachine,
- mWifiScanner, mWifiConfigManager, mWifiInfo, mWifiQNS, mWifiInjector);
+ mWifiScanner, mWifiConfigManager, mWifiInfo, mWifiQNS, mWifiInjector,
+ mLooper.getLooper());
mWifiConnectivityManager.setWifiEnabled(true);
when(mClock.currentTimeMillis()).thenReturn(System.currentTimeMillis());
}
@@ -85,6 +87,7 @@ public class WifiConnectivityManagerTest {
private Resources mResource;
private Context mContext;
private AlarmManager mAlarmManager;
+ private MockLooper mLooper = new MockLooper();
private WifiConnectivityManager mWifiConnectivityManager;
private WifiQualifiedNetworkSelector mWifiQNS;
private WifiStateMachine mWifiStateMachine;