summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoshan Pius <rpius@google.com>2020-05-27 10:49:20 -0700
committerRoshan Pius <rpius@google.com>2020-05-27 11:10:17 -0700
commit2643b8eef2007c18d2e0e7d722e0372858bc66ed (patch)
tree33d8c1504d3516646903e431c89cc29819fc261e
parentc11cd31f25516662ea9a8d6b774d9e591a3fda91 (diff)
WifiWakeup: Ignore wakeup start if no saved networks or suggestions
If there are no saved networks or suggestions, there is no use of starting wifi wake feature. So, gate the feature start based on whether any saved networks are present on the device or not. This also works around a race in the wake initialization/deinitialization sequence on a freshly wiped device. This quick initialization/deinitialization causes the device to not show the notification on enabling the feature for a day. Bug: 155795687 Test: atest com.android.server.wifi Test: Manual tests - Flash wipe the device. - Connect to saved networks. - Turn off wifi. - Check that wake feature is enabled and the notification shown. Change-Id: I6bc6315c9c1852e7cdb17ad73c4ed34d3895a951
-rw-r--r--service/java/com/android/server/wifi/WakeupController.java4
-rw-r--r--tests/wifitests/src/com/android/server/wifi/WakeupControllerTest.java22
2 files changed, 22 insertions, 4 deletions
diff --git a/service/java/com/android/server/wifi/WakeupController.java b/service/java/com/android/server/wifi/WakeupController.java
index b003b74b9..d9882dbf3 100644
--- a/service/java/com/android/server/wifi/WakeupController.java
+++ b/service/java/com/android/server/wifi/WakeupController.java
@@ -240,6 +240,10 @@ public class WakeupController {
*/
public void start() {
Log.d(TAG, "start()");
+ if (getGoodSavedNetworksAndSuggestions().isEmpty()) {
+ Log.i(TAG, "Ignore wakeup start since there are no good networks.");
+ return;
+ }
mWifiInjector.getWifiScanner().registerScanListener(
new HandlerExecutor(mHandler), mScanListener);
diff --git a/tests/wifitests/src/com/android/server/wifi/WakeupControllerTest.java b/tests/wifitests/src/com/android/server/wifi/WakeupControllerTest.java
index ed2ccce5e..9824c5b23 100644
--- a/tests/wifitests/src/com/android/server/wifi/WakeupControllerTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/WakeupControllerTest.java
@@ -103,6 +103,10 @@ public class WakeupControllerTest extends WifiBaseTest {
.thenReturn(new int[]{DFS_CHANNEL_FREQ});
when(mWifiSettingsStore.handleWifiToggled(anyBoolean())).thenReturn(true);
+ // Saved network needed to start wake.
+ WifiConfiguration openNetwork = WifiConfigurationTestUtil.createOpenNetwork();
+ openNetwork.getNetworkSelectionStatus().setHasEverConnected(true);
+ when(mWifiConfigManager.getSavedNetworks(anyInt())).thenReturn(Arrays.asList(openNetwork));
mLooper = new TestLooper();
@@ -255,6 +259,19 @@ public class WakeupControllerTest extends WifiBaseTest {
verify(mWifiWakeMetrics, never()).recordStartEvent(anyInt());
}
+
+ /**
+ * Verify that start does not set the wakeup lock when feature is disabled.
+ */
+ @Test
+ public void startDoesNotSetWakeupLockWhenNoSavedNetworksOrSuggestions() {
+ when(mWifiConfigManager.getSavedNetworks(anyInt())).thenReturn(Collections.emptyList());
+ initializeWakeupController(false /* enabled */);
+ mWakeupController.start();
+ verify(mWakeupLock, never()).setLock(any());
+ verify(mWifiWakeMetrics, never()).recordStartEvent(anyInt());
+ }
+
/**
* If the controller is already active, verify that start() is ignored and no setup is done.
*/
@@ -537,8 +554,7 @@ public class WakeupControllerTest extends WifiBaseTest {
*/
@Test
public void onResultsUpdatesWakeupLockWithOnlySavedNetworks() {
- // no saved configs
- when(mWifiConfigManager.getSavedNetworks(anyInt())).thenReturn(Collections.emptyList());
+ // no matching saved configs
initializeWakeupController(true /* enabled */);
mWakeupController.start();
@@ -713,7 +729,6 @@ public class WakeupControllerTest extends WifiBaseTest {
when(mClock.getElapsedSinceBootMillis()).thenReturn(0L,
(long) (0.8 * WakeupController.LAST_DISCONNECT_TIMEOUT_MILLIS));
ScanResultMatchInfo matchInfo = ScanResultMatchInfo.fromScanResult(mTestScanResult);
- when(mWifiConfigManager.getSavedNetworks(anyInt())).thenReturn(Collections.emptyList());
when(mWifiScanner.getSingleScanResults()).thenReturn(Collections.emptyList());
initializeWakeupController(true);
@@ -739,7 +754,6 @@ public class WakeupControllerTest extends WifiBaseTest {
when(mClock.getElapsedSinceBootMillis()).thenReturn(0L,
(long) (1.2 * WakeupController.LAST_DISCONNECT_TIMEOUT_MILLIS));
ScanResultMatchInfo matchInfo = ScanResultMatchInfo.fromScanResult(mTestScanResult);
- when(mWifiConfigManager.getSavedNetworks(anyInt())).thenReturn(Collections.emptyList());
when(mWifiScanner.getSingleScanResults()).thenReturn(Collections.emptyList());
initializeWakeupController(true);