Merge "Add prompt to sign in at captive portal to Wi-Fi Slice" into qt-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
973eff2eb2
@@ -18,6 +18,7 @@ package com.android.settings.testutils;
|
||||
|
||||
import static android.app.slice.Slice.HINT_TITLE;
|
||||
import static android.app.slice.Slice.SUBTYPE_COLOR;
|
||||
import static android.app.slice.SliceItem.FORMAT_IMAGE;
|
||||
import static android.app.slice.SliceItem.FORMAT_INT;
|
||||
import static android.app.slice.SliceItem.FORMAT_TEXT;
|
||||
|
||||
@@ -284,6 +285,31 @@ public class SliceTester {
|
||||
return hasText;
|
||||
}
|
||||
|
||||
/**
|
||||
* Assert any slice item contains icon.
|
||||
*
|
||||
* @param sliceItems All slice items of a Slice.
|
||||
* @param icon Icon for asserting.
|
||||
*/
|
||||
public static void assertAnySliceItemContainsIcon(List<SliceItem> sliceItems, IconCompat icon) {
|
||||
boolean hasIcon = false;
|
||||
for (SliceItem item : sliceItems) {
|
||||
List<SliceItem> iconItems = SliceQuery.findAll(item, FORMAT_IMAGE,
|
||||
(String) null /* hints */, null /* non-hints */);
|
||||
if (iconItems == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
for (SliceItem iconItem : iconItems) {
|
||||
if (icon.toString().equals(iconItem.getIcon().toString())) {
|
||||
hasIcon = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
assertThat(hasIcon).isTrue();
|
||||
}
|
||||
|
||||
private static void assertKeywords(SliceMetadata metadata, SliceData data) {
|
||||
final List<String> keywords = metadata.getSliceKeywords();
|
||||
final Set<String> expectedKeywords = Arrays.stream(data.getKeywords().split(","))
|
||||
|
@@ -16,6 +16,7 @@
|
||||
|
||||
package com.android.settings.wifi.slice;
|
||||
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.Mockito.doReturn;
|
||||
@@ -24,6 +25,7 @@ import static org.mockito.Mockito.spy;
|
||||
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.net.ConnectivityManager;
|
||||
import android.net.wifi.WifiConfiguration;
|
||||
import android.net.wifi.WifiManager;
|
||||
|
||||
@@ -53,6 +55,7 @@ public class ContextualWifiSliceTest {
|
||||
private Context mContext;
|
||||
private ContentResolver mResolver;
|
||||
private WifiManager mWifiManager;
|
||||
private ConnectivityManager mConnectivityManager;
|
||||
private ContextualWifiSlice mWifiSlice;
|
||||
private FakeFeatureFactory mFeatureFactory;
|
||||
|
||||
@@ -70,6 +73,9 @@ public class ContextualWifiSliceTest {
|
||||
SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS);
|
||||
mWifiManager.setWifiEnabled(true);
|
||||
|
||||
mConnectivityManager = spy(mContext.getSystemService(ConnectivityManager.class));
|
||||
doReturn(mConnectivityManager).when(mContext).getSystemService(ConnectivityManager.class);
|
||||
|
||||
mWifiSlice = new ContextualWifiSlice(mContext);
|
||||
mWifiSlice.sPreviouslyDisplayed = false;
|
||||
}
|
||||
@@ -124,6 +130,29 @@ public class ContextualWifiSliceTest {
|
||||
assertThat(primaryAction.getIcon().toString()).isEqualTo(expectedToggleIcon.toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getWifiSlice_isCaptivePortal_shouldHaveTitleAndToggle() {
|
||||
mWifiSlice.sPreviouslyDisplayed = false;
|
||||
final WifiConfiguration config = new WifiConfiguration();
|
||||
config.SSID = "123";
|
||||
mWifiManager.connect(config, null /* listener */);
|
||||
doReturn(WifiSliceTest.makeCaptivePortalNetworkCapabilities()).when(mConnectivityManager)
|
||||
.getNetworkCapabilities(any());
|
||||
|
||||
final Slice wifiSlice = mWifiSlice.getSlice();
|
||||
|
||||
final SliceMetadata metadata = SliceMetadata.from(mContext, wifiSlice);
|
||||
assertThat(metadata.getTitle()).isEqualTo(mContext.getString(R.string.wifi_settings));
|
||||
|
||||
final List<SliceAction> toggles = metadata.getToggles();
|
||||
assertThat(toggles).hasSize(1);
|
||||
|
||||
final SliceAction primaryAction = metadata.getPrimaryAction();
|
||||
final IconCompat expectedToggleIcon = IconCompat.createWithResource(mContext,
|
||||
R.drawable.ic_settings_wireless);
|
||||
assertThat(primaryAction.getIcon().toString()).isEqualTo(expectedToggleIcon.toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getWifiSlice_contextualWifiSlice_shouldReturnContextualWifiSliceUri() {
|
||||
mWifiSlice.sActiveUiSession = mFeatureFactory.slicesFeatureProvider.getUiSessionToken();
|
||||
|
@@ -27,6 +27,8 @@ import static org.mockito.Mockito.verify;
|
||||
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.net.ConnectivityManager;
|
||||
import android.net.Network;
|
||||
import android.net.NetworkInfo;
|
||||
import android.net.NetworkInfo.State;
|
||||
import android.net.wifi.WifiManager;
|
||||
@@ -55,6 +57,7 @@ public class WifiScanWorkerTest {
|
||||
private Context mContext;
|
||||
private ContentResolver mResolver;
|
||||
private WifiManager mWifiManager;
|
||||
private ConnectivityManager mConnectivityManager;
|
||||
private WifiScanWorker mWifiScanWorker;
|
||||
|
||||
@Before
|
||||
@@ -68,6 +71,7 @@ public class WifiScanWorkerTest {
|
||||
SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS);
|
||||
mWifiManager.setWifiEnabled(true);
|
||||
|
||||
mConnectivityManager = mContext.getSystemService(ConnectivityManager.class);
|
||||
mWifiScanWorker = new WifiScanWorker(mContext, WIFI_SLICE_URI);
|
||||
}
|
||||
|
||||
@@ -89,7 +93,7 @@ public class WifiScanWorkerTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void SliceAccessPoint_sameState_shouldBeTheSame() {
|
||||
public void AccessPointList_sameState_shouldBeTheSame() {
|
||||
final AccessPoint ap1 = createAccessPoint(AP_NAME, State.CONNECTED);
|
||||
final AccessPoint ap2 = createAccessPoint(AP_NAME, State.CONNECTED);
|
||||
|
||||
@@ -98,7 +102,7 @@ public class WifiScanWorkerTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void SliceAccessPoint_differentState_shouldBeDifferent() {
|
||||
public void AccessPointList_differentState_shouldBeDifferent() {
|
||||
final AccessPoint ap1 = createAccessPoint(AP_NAME, State.CONNECTING);
|
||||
final AccessPoint ap2 = createAccessPoint(AP_NAME, State.CONNECTED);
|
||||
|
||||
@@ -107,7 +111,7 @@ public class WifiScanWorkerTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void SliceAccessPoint_differentLength_shouldBeDifferent() {
|
||||
public void AccessPointList_differentLength_shouldBeDifferent() {
|
||||
final AccessPoint ap1 = createAccessPoint(AP_NAME, State.CONNECTED);
|
||||
final AccessPoint ap2 = createAccessPoint(AP_NAME, State.CONNECTED);
|
||||
final List<AccessPoint> list = new ArrayList<>();
|
||||
@@ -116,4 +120,15 @@ public class WifiScanWorkerTest {
|
||||
|
||||
assertThat(mWifiScanWorker.areListsTheSame(list, Arrays.asList(ap1))).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void NetworkCallback_onCapabilitiesChanged_shouldNotifyChange() {
|
||||
final Network network = mConnectivityManager.getActiveNetwork();
|
||||
mWifiScanWorker.registerCaptivePortalNetworkCallback(network);
|
||||
|
||||
mWifiScanWorker.mCaptivePortalNetworkCallback.onCapabilitiesChanged(network,
|
||||
WifiSliceTest.makeCaptivePortalNetworkCapabilities());
|
||||
|
||||
verify(mResolver).notifyChange(WIFI_SLICE_URI, null);
|
||||
}
|
||||
}
|
||||
|
@@ -23,6 +23,7 @@ import static com.android.settings.wifi.slice.WifiSlice.DEFAULT_EXPANDED_ROW_COU
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.Mockito.doReturn;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.spy;
|
||||
@@ -30,6 +31,8 @@ import static org.mockito.Mockito.spy;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.net.ConnectivityManager;
|
||||
import android.net.NetworkCapabilities;
|
||||
import android.net.NetworkInfo;
|
||||
import android.net.Uri;
|
||||
import android.net.wifi.WifiManager;
|
||||
@@ -70,6 +73,7 @@ public class WifiSliceTest {
|
||||
private Context mContext;
|
||||
private ContentResolver mResolver;
|
||||
private WifiManager mWifiManager;
|
||||
private ConnectivityManager mConnectivityManager;
|
||||
private WifiSlice mWifiSlice;
|
||||
|
||||
@Before
|
||||
@@ -83,6 +87,9 @@ public class WifiSliceTest {
|
||||
SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS);
|
||||
mWifiManager.setWifiEnabled(true);
|
||||
|
||||
mConnectivityManager = spy(mContext.getSystemService(ConnectivityManager.class));
|
||||
doReturn(mConnectivityManager).when(mContext).getSystemService(ConnectivityManager.class);
|
||||
|
||||
mWifiSlice = new WifiSlice(mContext);
|
||||
}
|
||||
|
||||
@@ -226,6 +233,37 @@ public class WifiSliceTest {
|
||||
mContext.getString(R.string.wifi_empty_list_wifi_on));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getWifiSlice_isCaptivePortal_shouldHaveCaptivePortalItems() {
|
||||
setWorkerResults(createAccessPoint(AP1_NAME, true, true));
|
||||
doReturn(makeCaptivePortalNetworkCapabilities()).when(mConnectivityManager)
|
||||
.getNetworkCapabilities(any());
|
||||
|
||||
final Slice wifiSlice = mWifiSlice.getSlice();
|
||||
final List<SliceItem> sliceItems = wifiSlice.getItems();
|
||||
|
||||
SliceTester.assertAnySliceItemContainsTitle(sliceItems, AP1_NAME);
|
||||
assertCaptivePortalItems(sliceItems);
|
||||
}
|
||||
|
||||
private void assertCaptivePortalItems(List<SliceItem> sliceItems) {
|
||||
final String expectedSummary = mContext.getString(mContext.getResources()
|
||||
.getIdentifier("network_available_sign_in", "string", "android"));
|
||||
SliceTester.assertAnySliceItemContainsSubtitle(sliceItems, expectedSummary);
|
||||
|
||||
final IconCompat expectedIcon = IconCompat.createWithResource(mContext,
|
||||
R.drawable.ic_settings_accent);
|
||||
SliceTester.assertAnySliceItemContainsIcon(sliceItems, expectedIcon);
|
||||
}
|
||||
|
||||
static NetworkCapabilities makeCaptivePortalNetworkCapabilities() {
|
||||
final NetworkCapabilities nc = new NetworkCapabilities();
|
||||
nc.clearAll();
|
||||
nc.addTransportType(NetworkCapabilities.TRANSPORT_WIFI);
|
||||
nc.addCapability(NetworkCapabilities.NET_CAPABILITY_CAPTIVE_PORTAL);
|
||||
return nc;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void handleUriChange_updatesWifi() {
|
||||
final Intent intent = mWifiSlice.getIntent();
|
||||
|
Reference in New Issue
Block a user