summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--service/java/com/android/server/wifi/WifiNetworkFactory.java12
-rw-r--r--tests/wifitests/src/com/android/server/wifi/WifiNetworkFactoryTest.java69
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));
+
+ }
}