diff options
3 files changed, 32 insertions, 36 deletions
diff --git a/service/java/com/android/server/wifi/ScanRequestProxy.java b/service/java/com/android/server/wifi/ScanRequestProxy.java index 1b74191d5..cd5f1280e 100644 --- a/service/java/com/android/server/wifi/ScanRequestProxy.java +++ b/service/java/com/android/server/wifi/ScanRequestProxy.java @@ -453,7 +453,7 @@ public class ScanRequestProxy { * @return true if the scan request was placed or a scan is already ongoing, false otherwise. */ public boolean startScan(int callingUid, String packageName) { - if (!retrieveWifiScannerIfNecessary()) { + if (!mScanningEnabled || !retrieveWifiScannerIfNecessary()) { Log.e(TAG, "Failed to retrieve wifiscanner"); sendScanResultFailureBroadcastToPackage(packageName); return false; diff --git a/service/java/com/android/server/wifi/rtt/RttServiceImpl.java b/service/java/com/android/server/wifi/rtt/RttServiceImpl.java index d69ce8f00..ce64d2e4a 100644 --- a/service/java/com/android/server/wifi/rtt/RttServiceImpl.java +++ b/service/java/com/android/server/wifi/rtt/RttServiceImpl.java @@ -399,7 +399,7 @@ public class RttServiceImpl extends IWifiRttManager.Stub { public boolean isAvailable() { long ident = Binder.clearCallingIdentity(); try { - return mRttNative.isReady() && !mPowerManager.isDeviceIdleMode() + return mRttNative != null && mRttNative.isReady() && !mPowerManager.isDeviceIdleMode() && mWifiPermissionsUtil.isLocationModeEnabled(); } finally { Binder.restoreCallingIdentity(ident); diff --git a/tests/wifitests/src/com/android/server/wifi/ScanRequestProxyTest.java b/tests/wifitests/src/com/android/server/wifi/ScanRequestProxyTest.java index 09537769c..471c9ebb5 100644 --- a/tests/wifitests/src/com/android/server/wifi/ScanRequestProxyTest.java +++ b/tests/wifitests/src/com/android/server/wifi/ScanRequestProxyTest.java @@ -144,6 +144,16 @@ public class ScanRequestProxyTest extends WifiBaseTest { validateMockitoUsage(); } + private void enableScanning() { + // Enable scanning + mScanRequestProxy.enableScanning(true, false); + mInOrder.verify(mWifiScanner).registerScanListener(any()); + mInOrder.verify(mWifiScanner).setScanningEnabled(true); + validateScanAvailableBroadcastSent(true); + + when(mClock.getElapsedSinceBootMillis()).thenReturn(782L); + } + /** * Verify scan enable sequence. */ @@ -181,8 +191,8 @@ public class ScanRequestProxyTest extends WifiBaseTest { */ @Test public void testStartScanSuccess() { + enableScanning(); assertTrue(mScanRequestProxy.startScan(TEST_UID, TEST_PACKAGE_NAME_1)); - mInOrder.verify(mWifiScanner).registerScanListener(any()); mInOrder.verify(mWifiScanner).startScan(any(), any(), any()); assertTrue(mWorkSourceArgumentCaptor.getValue().equals( @@ -197,9 +207,9 @@ public class ScanRequestProxyTest extends WifiBaseTest { */ @Test public void testStartScanSuccessFromAppWithNetworkSettings() { + enableScanning(); when(mWifiPermissionsUtil.checkNetworkSettingsPermission(TEST_UID)).thenReturn(true); assertTrue(mScanRequestProxy.startScan(TEST_UID, TEST_PACKAGE_NAME_1)); - mInOrder.verify(mWifiScanner).registerScanListener(any()); mInOrder.verify(mWifiScanner).startScan(any(), any(), any()); assertTrue(mWorkSourceArgumentCaptor.getValue().equals( @@ -212,9 +222,9 @@ public class ScanRequestProxyTest extends WifiBaseTest { */ @Test public void testStartScanSuccessFromAppWithNetworkSetupWizard() { + enableScanning(); when(mWifiPermissionsUtil.checkNetworkSetupWizardPermission(TEST_UID)).thenReturn(true); assertTrue(mScanRequestProxy.startScan(TEST_UID, TEST_PACKAGE_NAME_1)); - mInOrder.verify(mWifiScanner).registerScanListener(any()); mInOrder.verify(mWifiScanner).startScan(any(), any(), any()); assertEquals(mWorkSourceArgumentCaptor.getValue(), @@ -310,9 +320,9 @@ public class ScanRequestProxyTest extends WifiBaseTest { */ @Test public void testScanSuccessOverwritesPreviousResults() { + enableScanning(); // Make scan request 1. assertTrue(mScanRequestProxy.startScan(TEST_UID, TEST_PACKAGE_NAME_1)); - mInOrder.verify(mWifiScanner).registerScanListener(any()); mInOrder.verify(mWifiScanner).startScan(any(), any(), any()); // Verify the scan results processing for request 1. mGlobalScanListenerArgumentCaptor.getValue().onResults(mTestScanDatas1); @@ -341,9 +351,9 @@ public class ScanRequestProxyTest extends WifiBaseTest { */ @Test public void testScanFailureDoesNotOverwritePreviousResults() { + enableScanning(); // Make scan request 1. assertTrue(mScanRequestProxy.startScan(TEST_UID, TEST_PACKAGE_NAME_1)); - mInOrder.verify(mWifiScanner).registerScanListener(any()); mInOrder.verify(mWifiScanner).startScan(any(), any(), any()); // Verify the scan results processing for request 1. mGlobalScanListenerArgumentCaptor.getValue().onResults(mTestScanDatas1); @@ -373,9 +383,9 @@ public class ScanRequestProxyTest extends WifiBaseTest { */ @Test public void testNewScanRequestAfterPreviousScanSucceeds() { + enableScanning(); // Make scan request 1. assertTrue(mScanRequestProxy.startScan(TEST_UID, TEST_PACKAGE_NAME_1)); - mInOrder.verify(mWifiScanner).registerScanListener(any()); mInOrder.verify(mWifiScanner).startScan(any(), any(), any()); // Now send the scan results for request 1. mGlobalScanListenerArgumentCaptor.getValue().onResults(mTestScanDatas1); @@ -407,9 +417,9 @@ public class ScanRequestProxyTest extends WifiBaseTest { */ @Test public void testNewScanRequestAfterPreviousScanSucceedsWithInvalidScanDatas() { + enableScanning(); // Make scan request 1. assertTrue(mScanRequestProxy.startScan(TEST_UID, TEST_PACKAGE_NAME_1)); - mInOrder.verify(mWifiScanner).registerScanListener(any()); mInOrder.verify(mWifiScanner).startScan(any(), any(), any()); // Now send scan success for request 1, but with invalid scan datas. @@ -441,9 +451,9 @@ public class ScanRequestProxyTest extends WifiBaseTest { */ @Test public void testNewScanRequestAfterPreviousScanFailure() { + enableScanning(); // Make scan request 1. assertTrue(mScanRequestProxy.startScan(TEST_UID, TEST_PACKAGE_NAME_1)); - mInOrder.verify(mWifiScanner).registerScanListener(any()); mInOrder.verify(mWifiScanner).startScan(any(), any(), any()); // Now send scan failure for request 1. @@ -504,11 +514,11 @@ public class ScanRequestProxyTest extends WifiBaseTest { */ @Test public void testSuccessiveScanRequestsDontUseSameListener() { + enableScanning(); WifiScanner.ScanListener listener1; WifiScanner.ScanListener listener2; // Make scan request 1. assertTrue(mScanRequestProxy.startScan(TEST_UID, TEST_PACKAGE_NAME_1)); - mInOrder.verify(mWifiScanner).registerScanListener(any()); mInOrder.verify(mWifiScanner).startScan(any(), any(), any()); listener1 = mScanRequestListenerArgumentCaptor.getValue(); @@ -530,14 +540,12 @@ public class ScanRequestProxyTest extends WifiBaseTest { */ @Test public void testSuccessiveScanRequestFromSameFgAppThrottled() { + enableScanning(); long firstRequestMs = 782; when(mClock.getElapsedSinceBootMillis()).thenReturn(firstRequestMs); for (int i = 0; i < SCAN_REQUEST_THROTTLE_MAX_IN_TIME_WINDOW_FG_APPS; i++) { when(mClock.getElapsedSinceBootMillis()).thenReturn(firstRequestMs + i); assertTrue(mScanRequestProxy.startScan(TEST_UID, TEST_PACKAGE_NAME_1)); - if (i == 0) { - mInOrder.verify(mWifiScanner).registerScanListener(any()); - } mInOrder.verify(mWifiScanner).startScan(any(), any(), any()); } // Make next scan request from the same package name & ensure that it is throttled. @@ -556,14 +564,12 @@ public class ScanRequestProxyTest extends WifiBaseTest { */ @Test public void testSuccessiveScanRequestFromSameFgAppNotThrottled() { + enableScanning(); long firstRequestMs = 782; when(mClock.getElapsedSinceBootMillis()).thenReturn(firstRequestMs); for (int i = 0; i < SCAN_REQUEST_THROTTLE_MAX_IN_TIME_WINDOW_FG_APPS; i++) { when(mClock.getElapsedSinceBootMillis()).thenReturn(firstRequestMs + i); assertTrue(mScanRequestProxy.startScan(TEST_UID, TEST_PACKAGE_NAME_1)); - if (i == 0) { - mInOrder.verify(mWifiScanner).registerScanListener(any()); - } mInOrder.verify(mWifiScanner).startScan(any(), any(), any()); } long lastRequestMs = firstRequestMs + SCAN_REQUEST_THROTTLE_TIME_WINDOW_FG_APPS_MS + 1; @@ -582,6 +588,7 @@ public class ScanRequestProxyTest extends WifiBaseTest { */ @Test public void testSuccessiveScanRequestFromSameAppWithNetworkSettingsPermissionNotThrottled() { + enableScanning(); when(mWifiPermissionsUtil.checkNetworkSettingsPermission(TEST_UID)).thenReturn(true); long firstRequestMs = 782; @@ -589,9 +596,6 @@ public class ScanRequestProxyTest extends WifiBaseTest { for (int i = 0; i < SCAN_REQUEST_THROTTLE_MAX_IN_TIME_WINDOW_FG_APPS; i++) { when(mClock.getElapsedSinceBootMillis()).thenReturn(firstRequestMs + i); assertTrue(mScanRequestProxy.startScan(TEST_UID, TEST_PACKAGE_NAME_1)); - if (i == 0) { - mInOrder.verify(mWifiScanner).registerScanListener(any()); - } mInOrder.verify(mWifiScanner).startScan(any(), any(), any()); } // Make next scan request from the same package name & ensure that it is not throttled. @@ -605,6 +609,7 @@ public class ScanRequestProxyTest extends WifiBaseTest { */ @Test public void testSuccessiveScanRequestFromSameAppWithNetworkSetupWizardPermissionNotThrottled() { + enableScanning(); when(mWifiPermissionsUtil.checkNetworkSetupWizardPermission(TEST_UID)).thenReturn(true); long firstRequestMs = 782; @@ -612,9 +617,6 @@ public class ScanRequestProxyTest extends WifiBaseTest { for (int i = 0; i < SCAN_REQUEST_THROTTLE_MAX_IN_TIME_WINDOW_FG_APPS; i++) { when(mClock.getElapsedSinceBootMillis()).thenReturn(firstRequestMs + i); assertTrue(mScanRequestProxy.startScan(TEST_UID, TEST_PACKAGE_NAME_1)); - if (i == 0) { - mInOrder.verify(mWifiScanner).registerScanListener(any()); - } mInOrder.verify(mWifiScanner).startScan(any(), any(), any()); } // Make next scan request from the same package name & ensure that it is not throttled. @@ -657,14 +659,12 @@ public class ScanRequestProxyTest extends WifiBaseTest { */ @Test public void testSuccessiveScanRequestFromDifferentFgAppsNotThrottled() { + enableScanning(); long firstRequestMs = 782; when(mClock.getElapsedSinceBootMillis()).thenReturn(firstRequestMs); for (int i = 0; i < SCAN_REQUEST_THROTTLE_MAX_IN_TIME_WINDOW_FG_APPS / 2; i++) { when(mClock.getElapsedSinceBootMillis()).thenReturn(firstRequestMs + i); assertTrue(mScanRequestProxy.startScan(TEST_UID, TEST_PACKAGE_NAME_1)); - if (i == 0) { - mInOrder.verify(mWifiScanner).registerScanListener(any()); - } mInOrder.verify(mWifiScanner).startScan(any(), any(), any()); } for (int i = 0; i < SCAN_REQUEST_THROTTLE_MAX_IN_TIME_WINDOW_FG_APPS / 2; i++) { @@ -689,14 +689,12 @@ public class ScanRequestProxyTest extends WifiBaseTest { */ @Test public void testSuccessiveScanRequestFromSameAppAfterRemovalAndReinstallNotThrottled() { + enableScanning(); long firstRequestMs = 782; when(mClock.getElapsedSinceBootMillis()).thenReturn(firstRequestMs); for (int i = 0; i < SCAN_REQUEST_THROTTLE_MAX_IN_TIME_WINDOW_FG_APPS; i++) { when(mClock.getElapsedSinceBootMillis()).thenReturn(firstRequestMs + i); assertTrue(mScanRequestProxy.startScan(TEST_UID, TEST_PACKAGE_NAME_1)); - if (i == 0) { - mInOrder.verify(mWifiScanner).registerScanListener(any()); - } mInOrder.verify(mWifiScanner).startScan(any(), any(), any()); } // Now simulate removing the app. @@ -718,14 +716,12 @@ public class ScanRequestProxyTest extends WifiBaseTest { */ @Test public void testSuccessiveScanRequestFromSameAppAfterRemovalOnAnotherUserThrottled() { + enableScanning(); long firstRequestMs = 782; when(mClock.getElapsedSinceBootMillis()).thenReturn(firstRequestMs); for (int i = 0; i < SCAN_REQUEST_THROTTLE_MAX_IN_TIME_WINDOW_FG_APPS; i++) { when(mClock.getElapsedSinceBootMillis()).thenReturn(firstRequestMs + i); assertTrue(mScanRequestProxy.startScan(TEST_UID, TEST_PACKAGE_NAME_1)); - if (i == 0) { - mInOrder.verify(mWifiScanner).registerScanListener(any()); - } mInOrder.verify(mWifiScanner).startScan(any(), any(), any()); } // Now simulate removing the app for another user (User 1). @@ -748,6 +744,7 @@ public class ScanRequestProxyTest extends WifiBaseTest { */ @Test public void testSuccessiveScanRequestFromBgAppsThrottled() { + enableScanning(); when(mActivityManager.getPackageImportance(TEST_PACKAGE_NAME_1)) .thenReturn(IMPORTANCE_FOREGROUND_SERVICE + 1); when(mActivityManager.getPackageImportance(TEST_PACKAGE_NAME_2)) @@ -757,7 +754,6 @@ public class ScanRequestProxyTest extends WifiBaseTest { when(mClock.getElapsedSinceBootMillis()).thenReturn(firstRequestMs); // Make scan request 1. assertTrue(mScanRequestProxy.startScan(TEST_UID, TEST_PACKAGE_NAME_1)); - mInOrder.verify(mWifiScanner).registerScanListener(any()); mInOrder.verify(mWifiScanner).startScan(any(), any(), any()); // Make scan request 2 from the different package name & ensure that it is throttled. @@ -774,6 +770,7 @@ public class ScanRequestProxyTest extends WifiBaseTest { */ @Test public void testSuccessiveScanRequestFromBgAppsNotThrottled() { + enableScanning(); when(mActivityManager.getPackageImportance(TEST_PACKAGE_NAME_1)) .thenReturn(ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND + 1); when(mActivityManager.getPackageImportance(TEST_PACKAGE_NAME_2)) @@ -783,7 +780,6 @@ public class ScanRequestProxyTest extends WifiBaseTest { when(mClock.getElapsedSinceBootMillis()).thenReturn(firstRequestMs); // Make scan request 1. assertTrue(mScanRequestProxy.startScan(TEST_UID, TEST_PACKAGE_NAME_1)); - mInOrder.verify(mWifiScanner).registerScanListener(any()); mInOrder.verify(mWifiScanner).startScan(any(), any(), any()); long secondRequestMs = @@ -802,9 +798,9 @@ public class ScanRequestProxyTest extends WifiBaseTest { */ @Test public void testFullInternalScanResultsOverwritesPreviousResults() { + enableScanning(); // Make scan request 1. assertTrue(mScanRequestProxy.startScan(TEST_UID, TEST_PACKAGE_NAME_1)); - mInOrder.verify(mWifiScanner).registerScanListener(any()); mInOrder.verify(mWifiScanner).startScan(any(), any(), any()); // Verify the scan results processing for request 1. mGlobalScanListenerArgumentCaptor.getValue().onResults(mTestScanDatas1); @@ -832,9 +828,9 @@ public class ScanRequestProxyTest extends WifiBaseTest { */ @Test public void testPartialInternalScanResultsDoesNotOverwritePreviousResults() { + enableScanning(); // Make scan request 1. assertTrue(mScanRequestProxy.startScan(TEST_UID, TEST_PACKAGE_NAME_1)); - mInOrder.verify(mWifiScanner).registerScanListener(any()); mInOrder.verify(mWifiScanner).startScan(any(), any(), any()); // Verify the scan results processing for request 1. mGlobalScanListenerArgumentCaptor.getValue().onResults(mTestScanDatas1); |