diff options
-rw-r--r-- | service/java/com/android/server/wifi/WifiNetworkFactory.java | 12 | ||||
-rw-r--r-- | tests/wifitests/src/com/android/server/wifi/WifiNetworkFactoryTest.java | 69 |
2 files changed, 54 insertions, 27 deletions
diff --git a/service/java/com/android/server/wifi/WifiNetworkFactory.java b/service/java/com/android/server/wifi/WifiNetworkFactory.java index ba3407b5f..57d1635db 100644 --- a/service/java/com/android/server/wifi/WifiNetworkFactory.java +++ b/service/java/com/android/server/wifi/WifiNetworkFactory.java @@ -73,9 +73,13 @@ public class WifiNetworkFactory extends NetworkFactory { @VisibleForTesting public static final int USER_SELECTED_NETWORK_CONNECT_RETRY_MAX = 3; // max of 3 retries. @VisibleForTesting - public static final String UI_START_INTENT_ACTION = "com.android.settings.wifi.NETWORK_REQUEST"; + public static final String UI_START_INTENT_ACTION = + "com.android.settings.wifi.action.NETWORK_REQUEST"; @VisibleForTesting public static final String UI_START_INTENT_CATEGORY = "android.intent.category.DEFAULT"; + @VisibleForTesting + public static final String UI_START_INTENT_EXTRA_PACKAGE_NAME = + "com.android.settings.wifi.extra.PACKAGE_NAME"; private final Context mContext; private final ActivityManager mActivityManager; @@ -905,9 +909,11 @@ public class WifiNetworkFactory extends NetworkFactory { intent.setAction(UI_START_INTENT_ACTION); intent.addCategory(UI_START_INTENT_CATEGORY); intent.setFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK); + int requestorUid = mActiveSpecificNetworkRequestSpecifier.requestorUid; + intent.putExtra(UI_START_INTENT_EXTRA_PACKAGE_NAME, + mContext.getPackageManager().getNameForUid(requestorUid)); mContext.startActivityAsUser(intent, - UserHandle.getUserHandleForUid( - mActiveSpecificNetworkRequestSpecifier.requestorUid)); + UserHandle.getUserHandleForUid(requestorUid)); } } diff --git a/tests/wifitests/src/com/android/server/wifi/WifiNetworkFactoryTest.java b/tests/wifitests/src/com/android/server/wifi/WifiNetworkFactoryTest.java index b3c498aec..12c70533c 100644 --- a/tests/wifitests/src/com/android/server/wifi/WifiNetworkFactoryTest.java +++ b/tests/wifitests/src/com/android/server/wifi/WifiNetworkFactoryTest.java @@ -27,6 +27,7 @@ import static com.android.server.wifi.util.NativeUtil.addEnclosingQuotes; import static org.junit.Assert.*; import static org.mockito.Mockito.*; +import android.annotation.Nullable; import android.app.ActivityManager; import android.app.AlarmManager; import android.app.AlarmManager.OnAlarmListener; @@ -422,6 +423,8 @@ public class WifiNetworkFactoryTest { Intent intent = intentArgumentCaptor.getValue(); assertNotNull(intent); assertEquals(intent.getAction(), WifiNetworkFactory.UI_START_INTENT_ACTION); + assertEquals(intent.getStringExtra(WifiNetworkFactory.UI_START_INTENT_EXTRA_PACKAGE_NAME), + TEST_PACKAGE_NAME_1); assertTrue(intent.getCategories().contains(WifiNetworkFactory.UI_START_INTENT_CATEGORY)); assertTrue((intent.getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0); assertTrue((intent.getFlags() & Intent.FLAG_ACTIVITY_NEW_TASK) != 0); @@ -429,15 +432,7 @@ public class WifiNetworkFactoryTest { // Verify scan settings. verify(mWifiScanner).startScan(mScanSettingsArgumentCaptor.capture(), any(), mWorkSourceArgumentCaptor.capture()); - ScanSettings scanSettings = mScanSettingsArgumentCaptor.getValue(); - assertNotNull(scanSettings); - assertEquals(WifiScanner.WIFI_BAND_BOTH_WITH_DFS, scanSettings.band); - assertEquals(WifiScanner.TYPE_HIGH_ACCURACY, scanSettings.type); - assertEquals(WifiScanner.REPORT_EVENT_AFTER_EACH_SCAN, scanSettings.reportEvents); - assertNull(scanSettings.hiddenNetworks); - WorkSource workSource = mWorkSourceArgumentCaptor.getValue(); - assertNotNull(workSource); - assertEquals(TEST_UID_1, workSource.get(0)); + validateScanSettings(null); } /** @@ -457,24 +452,15 @@ public class WifiNetworkFactoryTest { assertNotNull(intent); assertEquals(intent.getAction(), WifiNetworkFactory.UI_START_INTENT_ACTION); assertTrue(intent.getCategories().contains(WifiNetworkFactory.UI_START_INTENT_CATEGORY)); + assertEquals(intent.getStringExtra(WifiNetworkFactory.UI_START_INTENT_EXTRA_PACKAGE_NAME), + TEST_PACKAGE_NAME_1); assertTrue((intent.getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0); assertTrue((intent.getFlags() & Intent.FLAG_ACTIVITY_NEW_TASK) != 0); // Verify scan settings. verify(mWifiScanner).startScan(mScanSettingsArgumentCaptor.capture(), any(), mWorkSourceArgumentCaptor.capture()); - ScanSettings scanSettings = mScanSettingsArgumentCaptor.getValue(); - assertNotNull(scanSettings); - assertEquals(WifiScanner.WIFI_BAND_BOTH_WITH_DFS, scanSettings.band); - assertEquals(WifiScanner.TYPE_HIGH_ACCURACY, scanSettings.type); - assertEquals(WifiScanner.REPORT_EVENT_AFTER_EACH_SCAN, scanSettings.reportEvents); - assertNotNull(scanSettings.hiddenNetworks); - assertNotNull(scanSettings.hiddenNetworks[0]); - assertEquals(scanSettings.hiddenNetworks[0].ssid, - addEnclosingQuotes(specifier.ssidPatternMatcher.getPath())); - WorkSource workSource = mWorkSourceArgumentCaptor.getValue(); - assertNotNull(workSource); - assertEquals(TEST_UID_1, workSource.get(0)); + validateScanSettings(specifier.ssidPatternMatcher.getPath()); } /** @@ -485,10 +471,26 @@ public class WifiNetworkFactoryTest { */ @Test public void testHandleNetworkRequestWithSpecifierAfterPreviousHiddenNetworkRequest() { - testHandleNetworkRequestWithSpecifierForHiddenNetwork(); + // Hidden request 1. + WifiNetworkSpecifier specifier = createWifiNetworkSpecifier(TEST_UID_1, true); + mNetworkRequest.networkCapabilities.setNetworkSpecifier(specifier); + mWifiNetworkFactory.needNetworkFor(mNetworkRequest, 0); + // Verify scan settings. + verify(mWifiScanner, times(1)).startScan(mScanSettingsArgumentCaptor.capture(), any(), + mWorkSourceArgumentCaptor.capture()); + validateScanSettings(specifier.ssidPatternMatcher.getPath()); + + // Release request 1. mWifiNetworkFactory.releaseNetworkFor(mNetworkRequest); - reset(mWifiScanner, mWifiConnectivityManager, mContext); - testHandleNetworkRequestWithSpecifier(); + + // Regular request 2. + specifier = createWifiNetworkSpecifier(TEST_UID_1, false); + mNetworkRequest.networkCapabilities.setNetworkSpecifier(specifier); + mWifiNetworkFactory.needNetworkFor(mNetworkRequest, 0); + // Verify scan settings. + verify(mWifiScanner, times(2)).startScan(mScanSettingsArgumentCaptor.capture(), any(), + mWorkSourceArgumentCaptor.capture()); + validateScanSettings(null); } /** @@ -1849,4 +1851,23 @@ public class WifiNetworkFactoryTest { assertNotNull(mConnectionTimeoutAlarmListenerArgumentCaptor.getValue()); } } + + private void validateScanSettings(@Nullable String hiddenSsid) { + ScanSettings scanSettings = mScanSettingsArgumentCaptor.getValue(); + assertNotNull(scanSettings); + assertEquals(WifiScanner.WIFI_BAND_BOTH_WITH_DFS, scanSettings.band); + assertEquals(WifiScanner.TYPE_HIGH_ACCURACY, scanSettings.type); + assertEquals(WifiScanner.REPORT_EVENT_AFTER_EACH_SCAN, scanSettings.reportEvents); + if (hiddenSsid == null) { + assertNull(scanSettings.hiddenNetworks); + } else { + assertNotNull(scanSettings.hiddenNetworks); + assertNotNull(scanSettings.hiddenNetworks[0]); + assertEquals(scanSettings.hiddenNetworks[0].ssid, addEnclosingQuotes(hiddenSsid)); + } + WorkSource workSource = mWorkSourceArgumentCaptor.getValue(); + assertNotNull(workSource); + assertEquals(TEST_UID_1, workSource.get(0)); + + } } |