summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoshan Pius <rpius@google.com>2016-05-21 14:45:43 +0000
committerandroid-build-merger <android-build-merger@google.com>2016-05-21 14:45:43 +0000
commit8b2a62d9eab3acbeadfa8ff1327eb673357b35ac (patch)
tree9ae26657bf87eba5ac3ef7ab7afa706dd64d74e6
parente02e8ecd7a43cb563598454fde7b3293a42d91d9 (diff)
parent9d6a7a1b5f9e9ea194fc6b15044c9d14d6aefabf (diff)
Merge changes Ie64c11f3,I91272aa5 into nyc-dev
am: 9d6a7a1b5f * commit '9d6a7a1b5f9e9ea194fc6b15044c9d14d6aefabf': WifiNetworHistory: Don't persist QNS blacklist Change clock for time interval/elapsed measurments Change-Id: Iaf52de161e43857e22734746fa979bdd893fb80b
-rw-r--r--service/java/com/android/server/wifi/WifiConfigManager.java22
-rw-r--r--service/java/com/android/server/wifi/WifiConnectivityManager.java30
-rw-r--r--service/java/com/android/server/wifi/WifiInjector.java7
-rw-r--r--service/java/com/android/server/wifi/WifiNetworkHistory.java20
-rw-r--r--service/java/com/android/server/wifi/WifiQualifiedNetworkSelector.java13
-rw-r--r--service/java/com/android/server/wifi/WifiStateMachine.java5
-rw-r--r--service/java/com/android/server/wifi/scanner/HalWifiScannerImpl.java6
-rw-r--r--service/java/com/android/server/wifi/scanner/SupplicantWifiScannerImpl.java35
-rw-r--r--service/java/com/android/server/wifi/scanner/WifiScannerImpl.java9
-rw-r--r--service/java/com/android/server/wifi/scanner/WifiScanningServiceImpl.java17
-rw-r--r--tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java20
-rw-r--r--tests/wifitests/src/com/android/server/wifi/WifiConnectivityManagerTest.java19
-rw-r--r--tests/wifitests/src/com/android/server/wifi/WifiQualifiedNetworkSelectorTest.java30
-rw-r--r--tests/wifitests/src/com/android/server/wifi/WifiStateMachineTest.java1
-rw-r--r--tests/wifitests/src/com/android/server/wifi/scanner/BaseWifiScannerImplTest.java5
-rw-r--r--tests/wifitests/src/com/android/server/wifi/scanner/HalWifiScannerTest.java2
-rw-r--r--tests/wifitests/src/com/android/server/wifi/scanner/SupplicantPnoScannerTest.java10
-rw-r--r--tests/wifitests/src/com/android/server/wifi/scanner/SupplicantWifiScannerTest.java2
-rw-r--r--tests/wifitests/src/com/android/server/wifi/scanner/WifiScanningServiceTest.java7
19 files changed, 140 insertions, 120 deletions
diff --git a/service/java/com/android/server/wifi/WifiConfigManager.java b/service/java/com/android/server/wifi/WifiConfigManager.java
index 76a95ccce..e2183e3ab 100644
--- a/service/java/com/android/server/wifi/WifiConfigManager.java
+++ b/service/java/com/android/server/wifi/WifiConfigManager.java
@@ -814,7 +814,7 @@ public class WifiConfigManager {
void noteRoamingFailure(WifiConfiguration config, int reason) {
if (config == null) return;
- config.lastRoamingFailure = System.currentTimeMillis();
+ config.lastRoamingFailure = mClock.currentTimeMillis();
config.roamingFailureBlackListTimeMilli =
2 * (config.roamingFailureBlackListTimeMilli + 1000);
if (config.roamingFailureBlackListTimeMilli > mNetworkSwitchingBlackListPeriodMs) {
@@ -1391,7 +1391,7 @@ public class WifiConfigManager {
* @return true if network status has been changed
* false network status is not changed
*/
- boolean tryEnableQualifiedNetwork(int networkId) {
+ public boolean tryEnableQualifiedNetwork(int networkId) {
WifiConfiguration config = getWifiConfiguration(networkId);
if (config == null) {
localLog("updateQualifiedNetworkstatus invalid network.");
@@ -1407,12 +1407,12 @@ public class WifiConfigManager {
* @return true if network status has been changed
* false network status is not changed
*/
- boolean tryEnableQualifiedNetwork(WifiConfiguration config) {
+ private boolean tryEnableQualifiedNetwork(WifiConfiguration config) {
WifiConfiguration.NetworkSelectionStatus networkStatus = config.getNetworkSelectionStatus();
if (networkStatus.isNetworkTemporaryDisabled()) {
//time difference in minutes
- long timeDifference = (System.currentTimeMillis()
- - networkStatus.getDisableTime()) / 1000 / 60;
+ long timeDifference =
+ (mClock.elapsedRealtime() - networkStatus.getDisableTime()) / 1000 / 60;
if (timeDifference < 0 || timeDifference
>= NETWORK_SELECTION_DISABLE_TIMEOUT[
networkStatus.getNetworkSelectionDisableReason()]) {
@@ -1497,7 +1497,7 @@ public class WifiConfigManager {
if (reason < WifiConfiguration.NetworkSelectionStatus.DISABLED_TLS_VERSION_MISMATCH) {
networkStatus.setNetworkSelectionStatus(WifiConfiguration.NetworkSelectionStatus
.NETWORK_SELECTION_TEMPORARY_DISABLED);
- networkStatus.setDisableTime(System.currentTimeMillis());
+ networkStatus.setDisableTime(mClock.elapsedRealtime());
} else {
networkStatus.setNetworkSelectionStatus(WifiConfiguration.NetworkSelectionStatus
.NETWORK_SELECTION_PERMANENTLY_DISABLED);
@@ -1855,7 +1855,7 @@ public class WifiConfigManager {
mLastSelectedTimeStamp = -1;
} else {
mLastSelectedConfiguration = selected.configKey();
- mLastSelectedTimeStamp = System.currentTimeMillis();
+ mLastSelectedTimeStamp = mClock.elapsedRealtime();
updateNetworkSelectionStatus(netId,
WifiConfiguration.NetworkSelectionStatus.NETWORK_SELECTION_ENABLE);
if (sVDBG) {
@@ -1868,7 +1868,7 @@ public class WifiConfigManager {
public void setLatestUserSelectedConfiguration(WifiConfiguration network) {
if (network != null) {
mLastSelectedConfiguration = network.configKey();
- mLastSelectedTimeStamp = System.currentTimeMillis();
+ mLastSelectedTimeStamp = mClock.elapsedRealtime();
}
}
@@ -2048,7 +2048,7 @@ public class WifiConfigManager {
StringBuilder sb = new StringBuilder();
sb.append("time=");
Calendar c = Calendar.getInstance();
- c.setTimeInMillis(System.currentTimeMillis());
+ c.setTimeInMillis(mClock.currentTimeMillis());
sb.append(String.format("%tm-%td %tH:%tM:%tS.%tL", c, c, c, c, c, c));
if (newNetwork) {
@@ -2391,7 +2391,7 @@ public class WifiConfigManager {
if (config == null) {
return null;
}
- long now_ms = System.currentTimeMillis();
+ long now_ms = mClock.currentTimeMillis();
HashSet<Integer> channels = new HashSet<Integer>();
@@ -3259,7 +3259,7 @@ public class WifiConfigManager {
}
}
// Record last time Connectivity Service switched us away from WiFi and onto Cell
- mLastUnwantedNetworkDisconnectTimestamp = System.currentTimeMillis();
+ mLastUnwantedNetworkDisconnectTimestamp = mClock.currentTimeMillis();
}
int getMaxDhcpRetries() {
diff --git a/service/java/com/android/server/wifi/WifiConnectivityManager.java b/service/java/com/android/server/wifi/WifiConnectivityManager.java
index 4e4cd2fbc..d99b65f8f 100644
--- a/service/java/com/android/server/wifi/WifiConnectivityManager.java
+++ b/service/java/com/android/server/wifi/WifiConnectivityManager.java
@@ -510,12 +510,12 @@ public class WifiConnectivityManager {
* should be skipped or not. This attempts to rate limit the rate of connections to
* prevent us from flapping between networks and draining battery rapidly.
*/
- private boolean shouldSkipConnectionAttempt(Long currentTimeMillis) {
+ private boolean shouldSkipConnectionAttempt(Long timeMillis) {
Iterator<Long> attemptIter = mConnectionAttemptTimeStamps.iterator();
// First evict old entries from the queue.
while (attemptIter.hasNext()) {
Long connectionAttemptTimeMillis = attemptIter.next();
- if ((currentTimeMillis - connectionAttemptTimeMillis)
+ if ((timeMillis - connectionAttemptTimeMillis)
> MAX_CONNECTION_ATTEMPTS_TIME_INTERVAL_MS) {
attemptIter.remove();
} else {
@@ -530,8 +530,8 @@ public class WifiConnectivityManager {
/**
* Add the current connection attempt timestamp to our queue of connection attempts.
*/
- private void noteConnectionAttempt(Long currentTimeMillis) {
- mConnectionAttemptTimeStamps.addLast(currentTimeMillis);
+ private void noteConnectionAttempt(Long timeMillis) {
+ mConnectionAttemptTimeStamps.addLast(timeMillis);
}
/**
@@ -572,13 +572,13 @@ public class WifiConnectivityManager {
return;
}
- Long currentTimeMillis = mClock.currentTimeMillis();
- if (!mScreenOn && shouldSkipConnectionAttempt(currentTimeMillis)) {
+ Long elapsedTimeMillis = mClock.elapsedRealtime();
+ if (!mScreenOn && shouldSkipConnectionAttempt(elapsedTimeMillis)) {
localLog("connectToNetwork: Too many connection attempts. Skipping this attempt!");
mTotalConnectivityAttemptsRateLimited++;
return;
}
- noteConnectionAttempt(currentTimeMillis);
+ noteConnectionAttempt(elapsedTimeMillis);
mLastConnectionAttemptBssid = targetBssid;
@@ -840,16 +840,16 @@ public class WifiConnectivityManager {
private void scheduleWatchdogTimer() {
Log.i(TAG, "scheduleWatchdogTimer");
- mAlarmManager.set(AlarmManager.RTC_WAKEUP,
- mClock.currentTimeMillis() + WATCHDOG_INTERVAL_MS,
+ mAlarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,
+ mClock.elapsedRealtime() + WATCHDOG_INTERVAL_MS,
WATCHDOG_TIMER_TAG,
mWatchdogListener, mEventHandler);
}
// Set up periodic scan timer
private void schedulePeriodicScanTimer(int intervalMs) {
- mAlarmManager.set(AlarmManager.RTC_WAKEUP,
- mClock.currentTimeMillis() + intervalMs,
+ mAlarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,
+ mClock.elapsedRealtime() + intervalMs,
PERIODIC_SCAN_TIMER_TAG,
mPeriodicScanTimerListener, mEventHandler);
}
@@ -860,8 +860,8 @@ public class WifiConnectivityManager {
RestartSingleScanListener restartSingleScanListener =
new RestartSingleScanListener(isWatchdogTriggered, isFullBandScan);
- mAlarmManager.set(AlarmManager.RTC_WAKEUP,
- mClock.currentTimeMillis() + RESTART_SCAN_DELAY_MS,
+ mAlarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,
+ mClock.elapsedRealtime() + RESTART_SCAN_DELAY_MS,
RESTART_SINGLE_SCAN_TIMER_TAG,
restartSingleScanListener, mEventHandler);
}
@@ -870,8 +870,8 @@ public class WifiConnectivityManager {
private void scheduleDelayedConnectivityScan(int msFromNow) {
localLog("scheduleDelayedConnectivityScan");
- mAlarmManager.set(AlarmManager.RTC_WAKEUP,
- mClock.currentTimeMillis() + msFromNow,
+ mAlarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,
+ mClock.elapsedRealtime() + msFromNow,
RESTART_CONNECTIVITY_SCAN_TIMER_TAG,
mRestartScanListener, mEventHandler);
diff --git a/service/java/com/android/server/wifi/WifiInjector.java b/service/java/com/android/server/wifi/WifiInjector.java
index 37ceaa84a..cc4048eb9 100644
--- a/service/java/com/android/server/wifi/WifiInjector.java
+++ b/service/java/com/android/server/wifi/WifiInjector.java
@@ -16,6 +16,8 @@
package com.android.server.wifi;
+import android.security.KeyStore;
+
/**
* WiFi dependency injector using thread-safe lazy singleton pattern. To be used for accessing
* various wifi class instances and as a handle for mock injection.
@@ -36,6 +38,7 @@ public class WifiInjector {
private final Clock mClock = new Clock();
private final PropertyService mPropertyService = new SystemPropertyService();
private final BuildProperties mBuildProperties = new SystemBuildProperties();
+ private final KeyStore mKeyStore = KeyStore.getInstance();
public WifiMetrics getWifiMetrics() {
return mWifiMetrics;
@@ -54,4 +57,8 @@ public class WifiInjector {
}
public BuildProperties getBuildProperties() { return mBuildProperties; }
+
+ public KeyStore getKeyStore() {
+ return mKeyStore;
+ }
}
diff --git a/service/java/com/android/server/wifi/WifiNetworkHistory.java b/service/java/com/android/server/wifi/WifiNetworkHistory.java
index 623d1cb96..cd1fe8b21 100644
--- a/service/java/com/android/server/wifi/WifiNetworkHistory.java
+++ b/service/java/com/android/server/wifi/WifiNetworkHistory.java
@@ -21,6 +21,7 @@ import android.content.Context;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiConfiguration;
+import android.net.wifi.WifiConfiguration.NetworkSelectionStatus;
import android.net.wifi.WifiSsid;
import android.os.Environment;
import android.os.Process;
@@ -69,7 +70,6 @@ public class WifiNetworkHistory {
private static final String FREQ_KEY = "FREQ";
private static final String DATE_KEY = "DATE";
private static final String MILLI_KEY = "MILLI";
- private static final String BLACKLIST_MILLI_KEY = "BLACKLIST_MILLI";
private static final String NETWORK_ID_KEY = "ID";
private static final String PRIORITY_KEY = "PRIORITY";
private static final String DEFAULT_GW_KEY = "DEFAULT_GW";
@@ -146,8 +146,7 @@ public class WifiNetworkHistory {
else
loge("attempt config w/o lp");
*/
- WifiConfiguration.NetworkSelectionStatus status =
- config.getNetworkSelectionStatus();
+ NetworkSelectionStatus status = config.getNetworkSelectionStatus();
if (VDBG) {
int numlink = 0;
if (config.linkedConfigurations != null) {
@@ -376,8 +375,7 @@ public class WifiNetworkHistory {
}
}
} else if (config != null) {
- WifiConfiguration.NetworkSelectionStatus networkStatus =
- config.getNetworkSelectionStatus();
+ NetworkSelectionStatus networkStatus = config.getNetworkSelectionStatus();
switch (key) {
case SSID_KEY:
if (config.isPasspoint()) {
@@ -432,9 +430,6 @@ public class WifiNetworkHistory {
case CREATOR_UID_KEY:
config.creatorUid = Integer.parseInt(value);
break;
- case BLACKLIST_MILLI_KEY:
- networkStatus.setDisableTime(Long.parseLong(value));
- break;
case SCORER_OVERRIDE_KEY:
config.numScorerOverride = Integer.parseInt(value);
break;
@@ -457,7 +452,14 @@ public class WifiNetworkHistory {
config.peerWifiConfiguration = value;
break;
case NETWORK_SELECTION_STATUS_KEY:
- networkStatus.setNetworkSelectionStatus(Integer.parseInt(value));
+ int networkStatusValue = Integer.parseInt(value);
+ // Reset temporarily disabled network status
+ if (networkStatusValue ==
+ NetworkSelectionStatus.NETWORK_SELECTION_TEMPORARY_DISABLED) {
+ networkStatusValue =
+ NetworkSelectionStatus.NETWORK_SELECTION_ENABLED;
+ }
+ networkStatus.setNetworkSelectionStatus(networkStatusValue);
break;
case NETWORK_SELECTION_DISABLE_REASON_KEY:
networkStatus.setNetworkSelectionDisableReason(Integer.parseInt(value));
diff --git a/service/java/com/android/server/wifi/WifiQualifiedNetworkSelector.java b/service/java/com/android/server/wifi/WifiQualifiedNetworkSelector.java
index a1c665a3a..edb539b90 100644
--- a/service/java/com/android/server/wifi/WifiQualifiedNetworkSelector.java
+++ b/service/java/com/android/server/wifi/WifiQualifiedNetworkSelector.java
@@ -297,7 +297,7 @@ public class WifiQualifiedNetworkSelector {
//Do not select again if last selection is within
//MINIMUM_QUALIFIED_NETWORK_SELECTION_INTERVAL
if (mLastQualifiedNetworkSelectionTimeStamp != INVALID_TIME_STAMP) {
- long gap = mClock.currentTimeMillis() - mLastQualifiedNetworkSelectionTimeStamp;
+ long gap = mClock.elapsedRealtime() - mLastQualifiedNetworkSelectionTimeStamp;
if (gap < MINIMUM_QUALIFIED_NETWORK_SELECTION_INTERVAL) {
localLog("Too short to last successful Qualified Network Selection Gap is:"
+ gap + " ms!");
@@ -355,7 +355,7 @@ public class WifiQualifiedNetworkSelector {
//last user selection award
if (sameSelect) {
- long timeDifference = mClock.currentTimeMillis()
+ long timeDifference = mClock.elapsedRealtime()
- mWifiConfigManager.getLastSelectedTimeStamp();
if (timeDifference > 0) {
@@ -480,6 +480,7 @@ public class WifiQualifiedNetworkSelector {
boolean change = false;
String key = selected.configKey();
+ // This is only used for setting the connect choice timestamp for debugging purposes.
long currentTime = mClock.currentTimeMillis();
List<WifiConfiguration> savedNetworks = mWifiConfigManager.getSavedNetworks();
@@ -543,7 +544,7 @@ public class WifiQualifiedNetworkSelector {
status.mCounter++;
if (status.mCounter >= BSSID_BLACKLIST_THRESHOLD) {
status.mIsBlacklisted = true;
- status.mBlacklistedTimeStamp = mClock.currentTimeMillis();
+ status.mBlacklistedTimeStamp = mClock.elapsedRealtime();
return true;
}
}
@@ -563,7 +564,7 @@ public class WifiQualifiedNetworkSelector {
while (iter.hasNext()) {
BssidBlacklistStatus status = iter.next();
if (status != null && status.mIsBlacklisted) {
- if (mClock.currentTimeMillis() - status.mBlacklistedTimeStamp
+ if (mClock.elapsedRealtime() - status.mBlacklistedTimeStamp
>= BSSID_BLACKLIST_EXPIRE_TIME) {
iter.remove();
}
@@ -639,7 +640,7 @@ public class WifiQualifiedNetworkSelector {
mWifiConfigManager.getWifiConfiguration(lastUserSelectedNetWorkKey);
if (lastUserSelectedNetwork != null) {
localLog("Last selection is " + lastUserSelectedNetwork.SSID + " Time to now: "
- + ((mClock.currentTimeMillis() - mWifiConfigManager.getLastSelectedTimeStamp())
+ + ((mClock.elapsedRealtime() - mWifiConfigManager.getLastSelectedTimeStamp())
/ 1000 / 60 + " minutes"));
}
@@ -877,7 +878,7 @@ public class WifiQualifiedNetworkSelector {
mCurrentBssid = scanResultCandidate.BSSID;
mCurrentConnectedNetwork = networkCandidate;
- mLastQualifiedNetworkSelectionTimeStamp = mClock.currentTimeMillis();
+ mLastQualifiedNetworkSelectionTimeStamp = mClock.elapsedRealtime();
return networkCandidate;
}
diff --git a/service/java/com/android/server/wifi/WifiStateMachine.java b/service/java/com/android/server/wifi/WifiStateMachine.java
index 936fa146c..c92d0c803 100644
--- a/service/java/com/android/server/wifi/WifiStateMachine.java
+++ b/service/java/com/android/server/wifi/WifiStateMachine.java
@@ -90,7 +90,6 @@ import android.os.UserHandle;
import android.os.UserManager;
import android.os.WorkSource;
import android.provider.Settings;
-import android.security.KeyStore;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.util.Log;
@@ -1021,7 +1020,7 @@ public class WifiStateMachine extends StateMachine implements WifiNative.WifiRss
PackageManager.FEATURE_WIFI_DIRECT);
mWifiConfigManager = mFacade.makeWifiConfigManager(context, mWifiNative, facade,
- mClock, userManager, KeyStore.getInstance());
+ mWifiInjector.getClock(), userManager, mWifiInjector.getKeyStore());
mWifiMonitor = WifiMonitor.getInstance();
@@ -1036,7 +1035,7 @@ public class WifiStateMachine extends StateMachine implements WifiNative.WifiRss
mWifiInfo = new WifiInfo();
mWifiQualifiedNetworkSelector = new WifiQualifiedNetworkSelector(mWifiConfigManager,
- mContext, mWifiInfo, mClock);
+ mContext, mWifiInfo, mWifiInjector.getClock());
mSupplicantStateTracker = mFacade.makeSupplicantStateTracker(
context, mWifiConfigManager, getHandler());
diff --git a/service/java/com/android/server/wifi/scanner/HalWifiScannerImpl.java b/service/java/com/android/server/wifi/scanner/HalWifiScannerImpl.java
index 6351042a8..d85c818d2 100644
--- a/service/java/com/android/server/wifi/scanner/HalWifiScannerImpl.java
+++ b/service/java/com/android/server/wifi/scanner/HalWifiScannerImpl.java
@@ -17,13 +17,13 @@
package com.android.server.wifi.scanner;
import android.content.Context;
-import android.net.wifi.WifiManager;
import android.net.wifi.WifiScanner;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.util.Log;
+import com.android.server.wifi.Clock;
import com.android.server.wifi.WifiNative;
/**
@@ -40,11 +40,11 @@ public class HalWifiScannerImpl extends WifiScannerImpl implements Handler.Callb
private final SupplicantWifiScannerImpl mSupplicantScannerDelegate;
private final boolean mHalBasedPnoSupported;
- public HalWifiScannerImpl(Context context, WifiNative wifiNative, Looper looper) {
+ public HalWifiScannerImpl(Context context, WifiNative wifiNative, Looper looper, Clock clock) {
mWifiNative = wifiNative;
mChannelHelper = new HalChannelHelper(wifiNative);
mSupplicantScannerDelegate =
- new SupplicantWifiScannerImpl(context, wifiNative, mChannelHelper, looper);
+ new SupplicantWifiScannerImpl(context, wifiNative, mChannelHelper, looper, clock);
// We are not going to support HAL ePNO currently.
mHalBasedPnoSupported = false;
diff --git a/service/java/com/android/server/wifi/scanner/SupplicantWifiScannerImpl.java b/service/java/com/android/server/wifi/scanner/SupplicantWifiScannerImpl.java
index aada52ddd..61c87f374 100644
--- a/service/java/com/android/server/wifi/scanner/SupplicantWifiScannerImpl.java
+++ b/service/java/com/android/server/wifi/scanner/SupplicantWifiScannerImpl.java
@@ -24,10 +24,10 @@ import android.net.wifi.WifiScanner;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
-import android.os.SystemClock;
import android.util.Log;
import com.android.internal.R;
+import com.android.server.wifi.Clock;
import com.android.server.wifi.ScanDetail;
import com.android.server.wifi.WifiMonitor;
import com.android.server.wifi.WifiNative;
@@ -66,6 +66,7 @@ public class SupplicantWifiScannerImpl extends WifiScannerImpl implements Handle
private final AlarmManager mAlarmManager;
private final Handler mEventHandler;
private final ChannelHelper mChannelHelper;
+ private final Clock mClock;
private Object mSettingsLock = new Object();
@@ -131,13 +132,14 @@ public class SupplicantWifiScannerImpl extends WifiScannerImpl implements Handle
};
public SupplicantWifiScannerImpl(Context context, WifiNative wifiNative,
- ChannelHelper channelHelper, Looper looper) {
+ ChannelHelper channelHelper, Looper looper, Clock clock) {
mContext = context;
mWifiNative = wifiNative;
mChannelHelper = channelHelper;
mAlarmManager = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE);
mEventHandler = new Handler(looper, this);
- mHwPnoDebouncer = new HwPnoDebouncer(mWifiNative, mAlarmManager, mEventHandler);
+ mClock = clock;
+ mHwPnoDebouncer = new HwPnoDebouncer(mWifiNative, mAlarmManager, mEventHandler, mClock);
// Check if the device supports HW PNO scans.
mHwPnoScanSupported = mContext.getResources().getBoolean(
@@ -149,9 +151,10 @@ public class SupplicantWifiScannerImpl extends WifiScannerImpl implements Handle
WifiMonitor.SCAN_RESULTS_EVENT, mEventHandler);
}
- public SupplicantWifiScannerImpl(Context context, WifiNative wifiNative, Looper looper) {
+ public SupplicantWifiScannerImpl(Context context, WifiNative wifiNative, Looper looper,
+ Clock clock) {
// TODO figure out how to get channel information from supplicant
- this(context, wifiNative, new NoBandChannelHelper(), looper);
+ this(context, wifiNative, new NoBandChannelHelper(), looper, clock);
}
@Override
@@ -338,7 +341,7 @@ public class SupplicantWifiScannerImpl extends WifiScannerImpl implements Handle
ChannelCollection allFreqs = mChannelHelper.createChannelCollection();
Set<Integer> hiddenNetworkIdSet = new HashSet<Integer>();
final LastScanSettings newScanSettings =
- new LastScanSettings(SystemClock.elapsedRealtime());
+ new LastScanSettings(mClock.elapsedRealtime());
// Update scan settings if there is a pending scan
if (!mBackgroundScanPaused) {
@@ -395,8 +398,8 @@ public class SupplicantWifiScannerImpl extends WifiScannerImpl implements Handle
mNextBackgroundScanPeriod++;
mBackgroundScanPeriodPending = false;
- mAlarmManager.set(AlarmManager.RTC_WAKEUP,
- System.currentTimeMillis() + mBackgroundScanSettings.base_period_ms,
+ mAlarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,
+ mClock.elapsedRealtime() + mBackgroundScanSettings.base_period_ms,
BACKGROUND_PERIOD_ALARM_TAG, mScanPeriodListener, mEventHandler);
}
}
@@ -441,8 +444,8 @@ public class SupplicantWifiScannerImpl extends WifiScannerImpl implements Handle
+ ", single=" + newScanSettings.singleScanActive);
}
mLastScanSettings = newScanSettings;
- mAlarmManager.set(AlarmManager.RTC_WAKEUP,
- System.currentTimeMillis() + SCAN_TIMEOUT_MS,
+ mAlarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,
+ mClock.elapsedRealtime() + SCAN_TIMEOUT_MS,
TIMEOUT_ALARM_TAG, mScanTimeoutListener, mEventHandler);
} else {
Log.e(TAG, "Failed to start scan, freqs=" + freqs);
@@ -1006,6 +1009,7 @@ public class SupplicantWifiScannerImpl extends WifiScannerImpl implements Handle
private final WifiNative mWifiNative;
private final AlarmManager mAlarmManager;
private final Handler mEventHandler;
+ private final Clock mClock;
private long mLastPnoChangeTimeStamp = -1L;
private boolean mExpectedPnoState = false;
private boolean mCurrentPnoState = false;;
@@ -1023,10 +1027,11 @@ public class SupplicantWifiScannerImpl extends WifiScannerImpl implements Handle
}
public HwPnoDebouncer(WifiNative wifiNative, AlarmManager alarmManager,
- Handler eventHandler) {
+ Handler eventHandler, Clock clock) {
mWifiNative = wifiNative;
mAlarmManager = alarmManager;
mEventHandler = eventHandler;
+ mClock = clock;
}
/**
@@ -1039,7 +1044,7 @@ public class SupplicantWifiScannerImpl extends WifiScannerImpl implements Handle
return true;
}
- mLastPnoChangeTimeStamp = System.currentTimeMillis();
+ mLastPnoChangeTimeStamp = mClock.elapsedRealtime();
if (mWifiNative.setPnoScan(enable)) {
Log.d(TAG, "Changed PNO state from " + mCurrentPnoState + " to " + enable);
mCurrentPnoState = enable;
@@ -1071,14 +1076,14 @@ public class SupplicantWifiScannerImpl extends WifiScannerImpl implements Handle
boolean isSuccess = true;
mExpectedPnoState = enable;
if (!mWaitForTimer) {
- long timeDifference = System.currentTimeMillis() - mLastPnoChangeTimeStamp;
+ long timeDifference = mClock.elapsedRealtime() - mLastPnoChangeTimeStamp;
if (timeDifference >= MINIMUM_PNO_GAP_MS) {
isSuccess = updatePnoState(enable);
} else {
long alarmTimeout = MINIMUM_PNO_GAP_MS - timeDifference;
Log.d(TAG, "Start PNO timer with delay " + alarmTimeout);
- mAlarmManager.set(AlarmManager.RTC_WAKEUP,
- System.currentTimeMillis() + alarmTimeout, PNO_DEBOUNCER_ALARM_TAG,
+ mAlarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,
+ mClock.elapsedRealtime() + alarmTimeout, PNO_DEBOUNCER_ALARM_TAG,
mAlarmListener, mEventHandler);
mWaitForTimer = true;
}
diff --git a/service/java/com/android/server/wifi/scanner/WifiScannerImpl.java b/service/java/com/android/server/wifi/scanner/WifiScannerImpl.java
index 66c3eda6f..9012fc6c0 100644
--- a/service/java/com/android/server/wifi/scanner/WifiScannerImpl.java
+++ b/service/java/com/android/server/wifi/scanner/WifiScannerImpl.java
@@ -21,6 +21,7 @@ import android.net.wifi.ScanResult;
import android.net.wifi.WifiScanner;
import android.os.Looper;
+import com.android.server.wifi.Clock;
import com.android.server.wifi.WifiNative;
import java.util.Comparator;
@@ -34,7 +35,7 @@ public abstract class WifiScannerImpl {
* A factory that create a {@link com.android.server.wifi.scanner.WifiScannerImpl}
*/
public static interface WifiScannerImplFactory {
- WifiScannerImpl create(Context context, Looper looper);
+ WifiScannerImpl create(Context context, Looper looper, Clock clock);
}
/**
@@ -42,12 +43,12 @@ public abstract class WifiScannerImpl {
* This factory should only ever be used once.
*/
public static final WifiScannerImplFactory DEFAULT_FACTORY = new WifiScannerImplFactory() {
- public WifiScannerImpl create(Context context, Looper looper) {
+ public WifiScannerImpl create(Context context, Looper looper, Clock clock) {
WifiNative wifiNative = WifiNative.getWlanNativeInterface();
if (wifiNative.getScanCapabilities(new WifiNative.ScanCapabilities())) {
- return new HalWifiScannerImpl(context, wifiNative, looper);
+ return new HalWifiScannerImpl(context, wifiNative, looper, clock);
} else {
- return new SupplicantWifiScannerImpl(context, wifiNative, looper);
+ return new SupplicantWifiScannerImpl(context, wifiNative, looper, clock);
}
}
};
diff --git a/service/java/com/android/server/wifi/scanner/WifiScanningServiceImpl.java b/service/java/com/android/server/wifi/scanner/WifiScanningServiceImpl.java
index 76bff29c7..b732a6e77 100644
--- a/service/java/com/android/server/wifi/scanner/WifiScanningServiceImpl.java
+++ b/service/java/com/android/server/wifi/scanner/WifiScanningServiceImpl.java
@@ -51,6 +51,7 @@ import com.android.internal.util.AsyncChannel;
import com.android.internal.util.Protocol;
import com.android.internal.util.State;
import com.android.internal.util.StateMachine;
+import com.android.server.wifi.Clock;
import com.android.server.wifi.WifiInjector;
import com.android.server.wifi.WifiMetrics;
import com.android.server.wifi.WifiMetricsProto;
@@ -65,7 +66,6 @@ import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
-import java.util.Map;
import java.util.Set;
public class WifiScanningServiceImpl extends IWifiScanner.Stub {
@@ -78,8 +78,6 @@ public class WifiScanningServiceImpl extends IWifiScanner.Stub {
private final LocalLog mLocalLog = new LocalLog(1024);
- private final WifiMetrics mWifiMetrics;
-
private void localLog(String message) {
mLocalLog.log(message);
}
@@ -256,6 +254,8 @@ public class WifiScanningServiceImpl extends IWifiScanner.Stub {
private ClientHandler mClientHandler;
private final IBatteryStats mBatteryStats;
private final AlarmManager mAlarmManager;
+ private final WifiMetrics mWifiMetrics;
+ private final Clock mClock;
WifiScanningServiceImpl(Context context, Looper looper,
WifiScannerImpl.WifiScannerImplFactory scannerImplFactory, IBatteryStats batteryStats,
@@ -267,6 +267,7 @@ public class WifiScanningServiceImpl extends IWifiScanner.Stub {
mClients = new ArrayMap<>();
mAlarmManager = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE);
mWifiMetrics = wifiInjector.getWifiMetrics();
+ mClock = wifiInjector.getClock();
mPreviousSchedule = null;
}
@@ -868,7 +869,7 @@ public class WifiScanningServiceImpl extends IWifiScanner.Stub {
// of this state machine. It is ok right now because the driver loaded event
// is sent to this state machine first.
if (mScannerImpl == null) {
- mScannerImpl = mScannerImplFactory.create(mContext, mLooper);
+ mScannerImpl = mScannerImplFactory.create(mContext, mLooper, mClock);
mChannelHelper = mScannerImpl.getChannelHelper();
}
@@ -2166,8 +2167,8 @@ public class WifiScanningServiceImpl extends IWifiScanner.Stub {
mWifiChangeDetected = false;
long unchangedDelay = settings.unchangedSampleSize * settings.periodInMs;
mAlarmManager.cancel(mTimeoutIntent);
- mAlarmManager.setExact(AlarmManager.RTC_WAKEUP,
- System.currentTimeMillis() + unchangedDelay,
+ mAlarmManager.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP,
+ mClock.elapsedRealtime() + unchangedDelay,
mTimeoutIntent);
break;
case WifiScanner.CMD_SCAN_RESULT:
@@ -2177,8 +2178,8 @@ public class WifiScanningServiceImpl extends IWifiScanner.Stub {
reconfigureScan((ScanData[])msg.obj,
STATIONARY_SCAN_PERIOD_MS);
mWifiChangeDetected = false;
- mAlarmManager.setExact(AlarmManager.RTC_WAKEUP,
- System.currentTimeMillis() + MOVING_STATE_TIMEOUT_MS,
+ mAlarmManager.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP,
+ mClock.elapsedRealtime() + MOVING_STATE_TIMEOUT_MS,
mTimeoutIntent);
mScanResultsPending = false;
}
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java b/tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java
index 53353f997..a5850005f 100644
--- a/tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java
@@ -17,22 +17,8 @@
package com.android.server.wifi;
import static org.hamcrest.CoreMatchers.not;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-import static org.mockito.Mockito.anyInt;
-import static org.mockito.Mockito.anyObject;
-import static org.mockito.Mockito.anyString;
-import static org.mockito.Mockito.doAnswer;
-import static org.mockito.Mockito.eq;
-import static org.mockito.Mockito.intThat;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.reset;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
+import static org.junit.Assert.*;
+import static org.mockito.Mockito.*;
import android.content.Context;
import android.content.pm.UserInfo;
@@ -51,6 +37,7 @@ import android.os.Process;
import android.os.UserHandle;
import android.os.UserManager;
import android.security.Credentials;
+import android.security.KeyStore;
import android.support.test.InstrumentationRegistry;
import android.test.suitebuilder.annotation.SmallTest;
import android.text.TextUtils;
@@ -154,6 +141,7 @@ public class WifiConfigManagerTest {
private ConfigurationMap mConfiguredNetworks;
public byte[] mNetworkHistoryBytes;
private MockKeyStore mMockKeyStore;
+ private KeyStore mKeyStore;
/**
* Called before each test
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiConnectivityManagerTest.java b/tests/wifitests/src/com/android/server/wifi/WifiConnectivityManagerTest.java
index 9fb859d39..a2379330c 100644
--- a/tests/wifitests/src/com/android/server/wifi/WifiConnectivityManagerTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/WifiConnectivityManagerTest.java
@@ -35,6 +35,7 @@ import android.net.wifi.WifiScanner.PnoSettings;
import android.net.wifi.WifiScanner.ScanListener;
import android.net.wifi.WifiScanner.ScanSettings;
import android.net.wifi.WifiSsid;
+import android.os.SystemClock;
import android.os.WorkSource;
import android.test.suitebuilder.annotation.SmallTest;
@@ -74,7 +75,7 @@ public class WifiConnectivityManagerTest {
mWifiScanner, mWifiConfigManager, mWifiInfo, mWifiQNS, mWifiInjector,
mLooper.getLooper());
mWifiConnectivityManager.setWifiEnabled(true);
- when(mClock.currentTimeMillis()).thenReturn(System.currentTimeMillis());
+ when(mClock.elapsedRealtime()).thenReturn(SystemClock.elapsedRealtime());
}
/**
@@ -339,7 +340,7 @@ public class WifiConnectivityManagerTest {
long currentTimeStamp = 0;
for (int attempt = 0; attempt < maxAttemptRate; attempt++) {
currentTimeStamp += connectionAttemptIntervals;
- when(mClock.currentTimeMillis()).thenReturn(currentTimeStamp);
+ when(mClock.elapsedRealtime()).thenReturn(currentTimeStamp);
// Set WiFi to disconnected state to trigger PNO scan
mWifiConnectivityManager.handleConnectionStateChanged(
WifiConnectivityManager.WIFI_STATE_DISCONNECTED);
@@ -347,7 +348,7 @@ public class WifiConnectivityManagerTest {
}
// Now trigger another connection attempt before the rate interval, this should be
// skipped because we've crossed rate limit.
- when(mClock.currentTimeMillis()).thenReturn(currentTimeStamp);
+ when(mClock.elapsedRealtime()).thenReturn(currentTimeStamp);
// Set WiFi to disconnected state to trigger PNO scan
mWifiConnectivityManager.handleConnectionStateChanged(
WifiConnectivityManager.WIFI_STATE_DISCONNECTED);
@@ -378,7 +379,7 @@ public class WifiConnectivityManagerTest {
long currentTimeStamp = 0;
for (int attempt = 0; attempt < maxAttemptRate; attempt++) {
currentTimeStamp += connectionAttemptIntervals;
- when(mClock.currentTimeMillis()).thenReturn(currentTimeStamp);
+ when(mClock.elapsedRealtime()).thenReturn(currentTimeStamp);
// Set WiFi to disconnected state to trigger PNO scan
mWifiConnectivityManager.handleConnectionStateChanged(
WifiConnectivityManager.WIFI_STATE_DISCONNECTED);
@@ -386,7 +387,7 @@ public class WifiConnectivityManagerTest {
}
// Now trigger another connection attempt after the rate interval, this should not be
// skipped because we should've evicted the older attempt.
- when(mClock.currentTimeMillis()).thenReturn(
+ when(mClock.elapsedRealtime()).thenReturn(
currentTimeStamp + connectionAttemptIntervals * 2);
// Set WiFi to disconnected state to trigger PNO scan
mWifiConnectivityManager.handleConnectionStateChanged(
@@ -418,7 +419,7 @@ public class WifiConnectivityManagerTest {
long currentTimeStamp = 0;
for (int attempt = 0; attempt < maxAttemptRate; attempt++) {
currentTimeStamp += connectionAttemptIntervals;
- when(mClock.currentTimeMillis()).thenReturn(currentTimeStamp);
+ when(mClock.elapsedRealtime()).thenReturn(currentTimeStamp);
// Set WiFi to disconnected state to trigger PNO scan
mWifiConnectivityManager.handleConnectionStateChanged(
WifiConnectivityManager.WIFI_STATE_DISCONNECTED);
@@ -429,7 +430,7 @@ public class WifiConnectivityManagerTest {
for (int attempt = 0; attempt < maxAttemptRate; attempt++) {
currentTimeStamp += connectionAttemptIntervals;
- when(mClock.currentTimeMillis()).thenReturn(currentTimeStamp);
+ when(mClock.elapsedRealtime()).thenReturn(currentTimeStamp);
// Set WiFi to disconnected state to trigger PNO scan
mWifiConnectivityManager.handleConnectionStateChanged(
WifiConnectivityManager.WIFI_STATE_DISCONNECTED);
@@ -532,7 +533,7 @@ public class WifiConnectivityManagerTest {
*/
@Test
public void checkPeriodicScanIntervalWhenDisconnected() {
- when(mClock.currentTimeMillis()).thenReturn(CURRENT_SYSTEM_TIME_MS);
+ when(mClock.elapsedRealtime()).thenReturn(CURRENT_SYSTEM_TIME_MS);
// Set screen to ON
mWifiConnectivityManager.handleScreenStateChanged(true);
@@ -581,7 +582,7 @@ public class WifiConnectivityManagerTest {
*/
@Test
public void checkPeriodicScanIntervalWhenConnected() {
- when(mClock.currentTimeMillis()).thenReturn(CURRENT_SYSTEM_TIME_MS);
+ when(mClock.elapsedRealtime()).thenReturn(CURRENT_SYSTEM_TIME_MS);
// Set screen to ON
mWifiConnectivityManager.handleScreenStateChanged(true);
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiQualifiedNetworkSelectorTest.java b/tests/wifitests/src/com/android/server/wifi/WifiQualifiedNetworkSelectorTest.java
index 1d8ec43cb..64fee84fc 100644
--- a/tests/wifitests/src/com/android/server/wifi/WifiQualifiedNetworkSelectorTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/WifiQualifiedNetworkSelectorTest.java
@@ -40,6 +40,7 @@ import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiEnterpriseConfig;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiSsid;
+import android.os.SystemClock;
import android.test.suitebuilder.annotation.SmallTest;
import android.util.LocalLog;
@@ -77,7 +78,7 @@ public class WifiQualifiedNetworkSelectorTest {
mWifiQualifiedNetworkSelector.enableVerboseLogging(1);
mWifiQualifiedNetworkSelector.setUserPreferredBand(1);
mWifiQualifiedNetworkSelector.setWifiNetworkScoreCache(mScoreCache);
- when(mClock.currentTimeMillis()).thenReturn(System.currentTimeMillis());
+ when(mClock.elapsedRealtime()).thenReturn(SystemClock.elapsedRealtime());
}
@After
@@ -101,7 +102,7 @@ public class WifiQualifiedNetworkSelectorTest {
private List<ScanDetail> getScanDetails(String[] ssids, String[] bssids, int[] frequencies,
String[] caps, int[] levels) {
List<ScanDetail> scanDetailList = new ArrayList<ScanDetail>();
- long timeStamp = System.currentTimeMillis();
+ long timeStamp = mClock.elapsedRealtime();
for (int index = 0; index < ssids.length; index++) {
ScanDetail scanDetail = new ScanDetail(WifiSsid.createFromAsciiEncoded(ssids[index]),
bssids[index], caps[index], levels[index], frequencies[index], timeStamp, 0);
@@ -883,7 +884,7 @@ public class WifiQualifiedNetworkSelectorTest {
}
//re-enable it
- when(mClock.currentTimeMillis()).thenReturn(System.currentTimeMillis()
+ when(mClock.elapsedRealtime()).thenReturn(SystemClock.elapsedRealtime()
+ WifiQualifiedNetworkSelector.BSSID_BLACKLIST_EXPIRE_TIME);
WifiConfiguration candidate = mWifiQualifiedNetworkSelector.selectQualifiedNetwork(false,
false, scanDetails, false, false, true, false);
@@ -921,6 +922,7 @@ public class WifiQualifiedNetworkSelectorTest {
scanResultLinkConfiguration(savedConfigs, scanDetails);
ScanResult chosenScanResult = scanDetails.get(0).getScanResult();
+ when(mWifiConfigManager.tryEnableQualifiedNetwork(anyInt())).thenReturn(true);
savedConfigs[1].getNetworkSelectionStatus().setNetworkSelectionStatus(
WifiConfiguration.NetworkSelectionStatus.NETWORK_SELECTION_TEMPORARY_DISABLED);
WifiConfiguration candidate = mWifiQualifiedNetworkSelector.selectQualifiedNetwork(false,
@@ -1144,7 +1146,7 @@ public class WifiQualifiedNetworkSelectorTest {
when(mWifiInfo.getBSSID()).thenReturn(bssids[1]);
when(mWifiInfo.is24GHz()).thenReturn(false);
when(mWifiConfigManager.getEnableAutoJoinWhenAssociated()).thenReturn(true);
- when(mClock.currentTimeMillis()).thenReturn(System.currentTimeMillis() + 11 * 1000);
+ when(mClock.elapsedRealtime()).thenReturn(SystemClock.elapsedRealtime() + 11 * 1000);
levels[0] = -50; // if there is QNS, test1 will be chosen
scanDetails = getScanDetails(ssids, bssids, frequencies, caps, levels);
@@ -1187,7 +1189,7 @@ public class WifiQualifiedNetworkSelectorTest {
when(mWifiInfo.getNetworkId()).thenReturn(1);
when(mWifiInfo.getBSSID()).thenReturn(bssids[1]);
when(mWifiInfo.is24GHz()).thenReturn(false);
- when(mClock.currentTimeMillis()).thenReturn(System.currentTimeMillis() + 11 * 1000);
+ when(mClock.elapsedRealtime()).thenReturn(SystemClock.elapsedRealtime() + 11 * 1000);
when(mWifiConfigManager.getEnableAutoJoinWhenAssociated()).thenReturn(true);
WifiConfiguration candidate = mWifiQualifiedNetworkSelector.selectQualifiedNetwork(false,
@@ -1227,7 +1229,7 @@ public class WifiQualifiedNetworkSelectorTest {
mWifiQualifiedNetworkSelector.selectQualifiedNetwork(false, false, scanDetails, false,
false, true, false);
- when(mClock.currentTimeMillis()).thenReturn(System.currentTimeMillis() + 11 * 1000);
+ when(mClock.elapsedRealtime()).thenReturn(SystemClock.elapsedRealtime() + 11 * 1000);
when(mWifiConfigManager.getEnableAutoJoinWhenAssociated()).thenReturn(true);
ScanResult chosenScanResult = scanDetails.get(0).getScanResult();
@@ -1271,7 +1273,7 @@ public class WifiQualifiedNetworkSelectorTest {
when(mWifiInfo.is24GHz()).thenReturn(false);
when(mWifiInfo.is5GHz()).thenReturn(true);
when(mWifiConfigManager.isOpenNetwork(savedConfigs[1])).thenReturn(true);
- when(mClock.currentTimeMillis()).thenReturn(System.currentTimeMillis() + 11 * 1000);
+ when(mClock.elapsedRealtime()).thenReturn(SystemClock.elapsedRealtime() + 11 * 1000);
when(mWifiConfigManager.getEnableAutoJoinWhenAssociated()).thenReturn(true);
levels[0] = -60;
scanDetails = getScanDetails(ssids, bssids, frequencies, caps, levels);
@@ -1322,7 +1324,7 @@ public class WifiQualifiedNetworkSelectorTest {
scanDetails = getScanDetails(ssids, bssids, frequencies, caps, levels);
scanResultLinkConfiguration(savedConfigs, scanDetails);
when(mWifiConfigManager.getEnableAutoJoinWhenAssociated()).thenReturn(true);
- when(mClock.currentTimeMillis()).thenReturn(System.currentTimeMillis() + 11 * 1000);
+ when(mClock.elapsedRealtime()).thenReturn(SystemClock.elapsedRealtime() + 11 * 1000);
ScanResult chosenScanResult = scanDetails.get(0).getScanResult();
WifiConfiguration candidate = mWifiQualifiedNetworkSelector.selectQualifiedNetwork(false,
@@ -1366,7 +1368,7 @@ public class WifiQualifiedNetworkSelectorTest {
when(mWifiInfo.is5GHz()).thenReturn(true);
when(mWifiConfigManager.getEnableAutoJoinWhenAssociated()).thenReturn(true);
- when(mClock.currentTimeMillis()).thenReturn(System.currentTimeMillis() + 11 * 1000);
+ when(mClock.elapsedRealtime()).thenReturn(SystemClock.elapsedRealtime() + 11 * 1000);
levels[0] = -60;
scanDetails = getScanDetails(ssids, bssids, frequencies, caps, levels);
scanResultLinkConfiguration(savedConfigs, scanDetails);
@@ -1415,7 +1417,7 @@ public class WifiQualifiedNetworkSelectorTest {
when(mWifiConfigManager.getEnableAutoJoinWhenAssociated()).thenReturn(true);
levels[0] = -60;
scanDetails = getScanDetails(ssids, bssids, frequencies, caps, levels);
- when(mClock.currentTimeMillis()).thenReturn(System.currentTimeMillis() + 11 * 1000);
+ when(mClock.elapsedRealtime()).thenReturn(SystemClock.elapsedRealtime() + 11 * 1000);
scanResultLinkConfiguration(savedConfigs, scanDetails);
ScanResult chosenScanResult = scanDetails.get(0).getScanResult();
@@ -1462,7 +1464,7 @@ public class WifiQualifiedNetworkSelectorTest {
levels[0] = -80 + WifiQualifiedNetworkSelector.SAME_BSSID_AWARD / 4
+ WifiQualifiedNetworkSelector.SAME_NETWORK_AWARD / 4 - 1;
scanDetails = getScanDetails(ssids, bssids, frequencies, caps, levels);
- when(mClock.currentTimeMillis()).thenReturn(System.currentTimeMillis() + 11 * 1000);
+ when(mClock.elapsedRealtime()).thenReturn(SystemClock.elapsedRealtime() + 11 * 1000);
scanResultLinkConfiguration(savedConfigs, scanDetails);
ScanResult chosenScanResult = scanDetails.get(1).getScanResult();
@@ -1508,7 +1510,7 @@ public class WifiQualifiedNetworkSelectorTest {
levels[0] = -80 + WifiQualifiedNetworkSelector.SAME_BSSID_AWARD / 4
+ WifiQualifiedNetworkSelector.SAME_NETWORK_AWARD / 4 + 1;
scanDetails = getScanDetails(ssids, bssids, frequencies, caps, levels);
- when(mClock.currentTimeMillis()).thenReturn(System.currentTimeMillis() + 11 * 1000);
+ when(mClock.elapsedRealtime()).thenReturn(SystemClock.elapsedRealtime() + 11 * 1000);
scanResultLinkConfiguration(savedConfigs, scanDetails);
ScanResult chosenScanResult = scanDetails.get(0).getScanResult();
@@ -1559,7 +1561,7 @@ public class WifiQualifiedNetworkSelectorTest {
when(mWifiConfigManager.getEnableAutoJoinWhenAssociated()).thenReturn(true);
levels[0] = -80 + WifiQualifiedNetworkSelector.SAME_NETWORK_AWARD / 4 - 1;
scanDetails = getScanDetails(ssids, bssids, frequencies, caps, levels);
- when(mClock.currentTimeMillis()).thenReturn(System.currentTimeMillis() + 11 * 1000);
+ when(mClock.elapsedRealtime()).thenReturn(SystemClock.elapsedRealtime() + 11 * 1000);
scanResultLinkConfiguration(savedConfigs, scanDetails);
ScanResult chosenScanResult = scanDetails.get(1).getScanResult();
@@ -1610,7 +1612,7 @@ public class WifiQualifiedNetworkSelectorTest {
when(mWifiConfigManager.getEnableAutoJoinWhenAssociated()).thenReturn(true);
levels[0] = -80 + WifiQualifiedNetworkSelector.SAME_BSSID_AWARD / 4 + 1;
scanDetails = getScanDetails(ssids, bssids, frequencies, caps, levels);
- when(mClock.currentTimeMillis()).thenReturn(System.currentTimeMillis() + 11 * 1000);
+ when(mClock.elapsedRealtime()).thenReturn(SystemClock.elapsedRealtime() + 11 * 1000);
scanResultLinkConfiguration(savedConfigs, scanDetails);
ScanResult chosenScanResult = scanDetails.get(0).getScanResult();
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiStateMachineTest.java b/tests/wifitests/src/com/android/server/wifi/WifiStateMachineTest.java
index bcbf940f3..e0f94ad17 100644
--- a/tests/wifitests/src/com/android/server/wifi/WifiStateMachineTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/WifiStateMachineTest.java
@@ -348,6 +348,7 @@ public class WifiStateMachineTest {
when(mWifiInjector.getWifiLastResortWatchdog()).thenReturn(mWifiLastResortWatchdog);
when(mWifiInjector.getPropertyService()).thenReturn(mPropertyService);
when(mWifiInjector.getBuildProperties()).thenReturn(mBuildProperties);
+ when(mWifiInjector.getKeyStore()).thenReturn(mock(KeyStore.class));
FrameworkFacade factory = getFrameworkFacade();
Context context = getContext();
diff --git a/tests/wifitests/src/com/android/server/wifi/scanner/BaseWifiScannerImplTest.java b/tests/wifitests/src/com/android/server/wifi/scanner/BaseWifiScannerImplTest.java
index 15d1465f0..1355961c1 100644
--- a/tests/wifitests/src/com/android/server/wifi/scanner/BaseWifiScannerImplTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/scanner/BaseWifiScannerImplTest.java
@@ -30,6 +30,7 @@ import android.net.wifi.WifiScanner.ScanData;
import android.net.wifi.WifiSsid;
import android.os.SystemClock;
+import com.android.server.wifi.Clock;
import com.android.server.wifi.MockAlarmManager;
import com.android.server.wifi.MockLooper;
import com.android.server.wifi.MockResources;
@@ -63,6 +64,7 @@ public abstract class BaseWifiScannerImplTest {
MockLooper mLooper;
@Mock WifiNative mWifiNative;
MockResources mResources;
+ @Mock Clock mClock;
/**
* mScanner implementation should be filled in by derived test class
@@ -84,6 +86,7 @@ public abstract class BaseWifiScannerImplTest {
.thenReturn(mAlarmManager.getAlarmManager());
when(mContext.getResources()).thenReturn(mResources);
+ when(mClock.elapsedRealtime()).thenReturn(SystemClock.elapsedRealtime());
}
protected Set<Integer> expectedBandScanFreqs(int band) {
@@ -386,7 +389,7 @@ public abstract class BaseWifiScannerImplTest {
WifiScanner.WIFI_BAND_24_GHZ)
.build();
- long approxScanStartUs = SystemClock.elapsedRealtime() * 1000;
+ long approxScanStartUs = mClock.elapsedRealtime() * 1000;
ArrayList<ScanDetail> rawResults = new ArrayList<>(Arrays.asList(
new ScanDetail(WifiSsid.createFromAsciiEncoded("TEST AP 1"),
"00:00:00:00:00:00", "", -70, 2450,
diff --git a/tests/wifitests/src/com/android/server/wifi/scanner/HalWifiScannerTest.java b/tests/wifitests/src/com/android/server/wifi/scanner/HalWifiScannerTest.java
index 7da2bad90..d5ff87797 100644
--- a/tests/wifitests/src/com/android/server/wifi/scanner/HalWifiScannerTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/scanner/HalWifiScannerTest.java
@@ -34,6 +34,6 @@ public class HalWifiScannerTest extends BaseWifiScannerImplTest {
new int[]{2400, 2450},
new int[]{5150, 5175},
new int[]{5600, 5650});
- mScanner = new HalWifiScannerImpl(mContext, mWifiNative, mLooper.getLooper());
+ mScanner = new HalWifiScannerImpl(mContext, mWifiNative, mLooper.getLooper(), mClock);
}
}
diff --git a/tests/wifitests/src/com/android/server/wifi/scanner/SupplicantPnoScannerTest.java b/tests/wifitests/src/com/android/server/wifi/scanner/SupplicantPnoScannerTest.java
index 4ef8a3f8d..39709f84d 100644
--- a/tests/wifitests/src/com/android/server/wifi/scanner/SupplicantPnoScannerTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/scanner/SupplicantPnoScannerTest.java
@@ -25,9 +25,11 @@ import static org.mockito.Mockito.*;
import android.content.Context;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiScanner;
+import android.os.SystemClock;
import android.test.suitebuilder.annotation.SmallTest;
import com.android.internal.R;
+import com.android.server.wifi.Clock;
import com.android.server.wifi.MockAlarmManager;
import com.android.server.wifi.MockLooper;
import com.android.server.wifi.MockResources;
@@ -59,6 +61,7 @@ public class SupplicantPnoScannerTest {
MockLooper mLooper;
@Mock WifiNative mWifiNative;
MockResources mResources;
+ @Mock Clock mClock;
SupplicantWifiScannerImpl mScanner;
@Before
@@ -74,6 +77,7 @@ public class SupplicantPnoScannerTest {
when(mContext.getSystemService(Context.ALARM_SERVICE))
.thenReturn(mAlarmManager.getAlarmManager());
when(mContext.getResources()).thenReturn(mResources);
+ when(mClock.elapsedRealtime()).thenReturn(SystemClock.elapsedRealtime());
}
/**
@@ -229,12 +233,14 @@ public class SupplicantPnoScannerTest {
private void createScannerWithHwPnoScanSupport() {
mResources.setBoolean(R.bool.config_wifi_background_scan_support, true);
- mScanner = new SupplicantWifiScannerImpl(mContext, mWifiNative, mLooper.getLooper());
+ mScanner =
+ new SupplicantWifiScannerImpl(mContext, mWifiNative, mLooper.getLooper(), mClock);
}
private void createScannerWithSwPnoScanSupport() {
mResources.setBoolean(R.bool.config_wifi_background_scan_support, false);
- mScanner = new SupplicantWifiScannerImpl(mContext, mWifiNative, mLooper.getLooper());
+ mScanner =
+ new SupplicantWifiScannerImpl(mContext, mWifiNative, mLooper.getLooper(), mClock);
}
private WifiNative.PnoSettings createDummyPnoSettings(boolean isConnected) {
diff --git a/tests/wifitests/src/com/android/server/wifi/scanner/SupplicantWifiScannerTest.java b/tests/wifitests/src/com/android/server/wifi/scanner/SupplicantWifiScannerTest.java
index b107f8124..7bf548109 100644
--- a/tests/wifitests/src/com/android/server/wifi/scanner/SupplicantWifiScannerTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/scanner/SupplicantWifiScannerTest.java
@@ -50,7 +50,7 @@ public class SupplicantWifiScannerTest extends BaseWifiScannerImplTest {
@Before
public void setup() throws Exception {
mScanner = new SupplicantWifiScannerImpl(mContext, mWifiNative,
- mLooper.getLooper());
+ mLooper.getLooper(), mClock);
}
@Test
diff --git a/tests/wifitests/src/com/android/server/wifi/scanner/WifiScanningServiceTest.java b/tests/wifitests/src/com/android/server/wifi/scanner/WifiScanningServiceTest.java
index e806f50e2..43dfc5523 100644
--- a/tests/wifitests/src/com/android/server/wifi/scanner/WifiScanningServiceTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/scanner/WifiScanningServiceTest.java
@@ -41,6 +41,7 @@ import android.util.Pair;
import com.android.internal.app.IBatteryStats;
import com.android.internal.util.Protocol;
import com.android.server.wifi.BidirectionalAsyncChannel;
+import com.android.server.wifi.Clock;
import com.android.server.wifi.MockAlarmManager;
import com.android.server.wifi.MockAnswerUtil.AnswerWithArguments;
import com.android.server.wifi.MockLooper;
@@ -101,7 +102,8 @@ public class WifiScanningServiceTest {
new int[]{5600, 5650, 5660});
mLooper = new MockLooper();
- when(mWifiScannerImplFactory.create(any(Context.class), any(Looper.class)))
+ when(mWifiScannerImplFactory
+ .create(any(Context.class), any(Looper.class), any(Clock.class)))
.thenReturn(mWifiScannerImpl);
when(mWifiScannerImpl.getChannelHelper()).thenReturn(channelHelper);
when(mWifiInjector.getWifiMetrics()).thenReturn(mWifiMetrics);
@@ -332,7 +334,8 @@ public class WifiScanningServiceTest {
@Test
public void loadDriver() throws Exception {
startServiceAndLoadDriver();
- verify(mWifiScannerImplFactory, times(1)).create(any(Context.class), any(Looper.class));
+ verify(mWifiScannerImplFactory, times(1))
+ .create(any(Context.class), any(Looper.class), any(Clock.class));
Handler handler = mock(Handler.class);
BidirectionalAsyncChannel controlChannel = connectChannel(handler);