Merge "Use EntityHeaderController in WifiDetailPreferenceController." into oc-dr1-dev am: 09229abbf2
am: 4fd8528c2f
Change-Id: Ie183a68e7ae944bad8a2ca3782522afd7f78b74f
This commit is contained in:
@@ -17,6 +17,7 @@ package com.android.settings.wifi.details;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.ArgumentMatchers.anyString;
|
||||
import static org.mockito.ArgumentMatchers.nullable;
|
||||
import static org.mockito.Matchers.any;
|
||||
import static org.mockito.Mockito.doNothing;
|
||||
@@ -52,14 +53,17 @@ import android.support.v7.preference.PreferenceScreen;
|
||||
import android.view.View;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.widget.Button;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import com.android.internal.logging.nano.MetricsProto;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||
import com.android.settings.TestConfig;
|
||||
import com.android.settings.applications.LayoutPreference;
|
||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||
import com.android.settings.testutils.shadow.ShadowEntityHeaderController;
|
||||
import com.android.settings.vpn2.ConnectivityManagerWrapperImpl;
|
||||
import com.android.settings.widget.EntityHeaderController;
|
||||
import com.android.settings.wifi.WifiDetailPreference;
|
||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||
import com.android.settingslib.wifi.AccessPoint;
|
||||
@@ -84,7 +88,8 @@ import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@RunWith(SettingsRobolectricTestRunner.class)
|
||||
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
|
||||
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION,
|
||||
shadows = ShadowEntityHeaderController.class)
|
||||
public class WifiDetailPreferenceControllerTest {
|
||||
|
||||
private static final int LEVEL = 1;
|
||||
@@ -108,7 +113,12 @@ public class WifiDetailPreferenceControllerTest {
|
||||
@Mock private WifiManager mockWifiManager;
|
||||
@Mock private MetricsFeatureProvider mockMetricsFeatureProvider;
|
||||
|
||||
@Mock private Preference mockConnectionDetailPref;
|
||||
@Mock (answer = Answers.RETURNS_DEEP_STUBS)
|
||||
private EntityHeaderController mockHeaderController;
|
||||
@Mock (answer = Answers.RETURNS_DEEP_STUBS)
|
||||
private LayoutPreference mockHeaderLayoutPreference;
|
||||
@Mock private ImageView mockHeaderIcon;
|
||||
|
||||
@Mock private LayoutPreference mockButtonsPref;
|
||||
@Mock private Button mockSignInButton;
|
||||
@Mock private WifiDetailPreference mockSignalStrengthPref;
|
||||
@@ -214,6 +224,12 @@ public class WifiDetailPreferenceControllerTest {
|
||||
|
||||
when(mockFragment.getActivity()).thenReturn(mockActivity);
|
||||
|
||||
ShadowEntityHeaderController.setUseMock(mockHeaderController);
|
||||
// builder pattern
|
||||
when(mockHeaderController.setRecyclerView(mockFragment.getListView(), mLifecycle))
|
||||
.thenReturn(mockHeaderController);
|
||||
when(mockHeaderController.setSummary(anyString())).thenReturn(mockHeaderController);
|
||||
|
||||
setupMockedPreferenceScreen();
|
||||
mController = newWifiDetailPreferenceController();
|
||||
}
|
||||
@@ -233,8 +249,11 @@ public class WifiDetailPreferenceControllerTest {
|
||||
private void setupMockedPreferenceScreen() {
|
||||
when(mockScreen.getPreferenceManager().getContext()).thenReturn(mContext);
|
||||
|
||||
when(mockScreen.findPreference(WifiDetailPreferenceController.KEY_CONNECTION_DETAIL_PREF))
|
||||
.thenReturn(mockConnectionDetailPref);
|
||||
when(mockScreen.findPreference(WifiDetailPreferenceController.KEY_HEADER))
|
||||
.thenReturn(mockHeaderLayoutPreference);
|
||||
when(mockHeaderLayoutPreference.findViewById(R.id.entity_header_icon))
|
||||
.thenReturn(mockHeaderIcon);
|
||||
|
||||
when(mockScreen.findPreference(WifiDetailPreferenceController.KEY_BUTTONS_PREF))
|
||||
.thenReturn(mockButtonsPref);
|
||||
when(mockButtonsPref.findViewById(R.id.forget_button))
|
||||
@@ -316,23 +335,33 @@ public class WifiDetailPreferenceControllerTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void connectionDetailPref_shouldHaveIconSet() {
|
||||
public void entityHeader_shouldHaveIconSet() {
|
||||
Drawable expectedIcon =
|
||||
NetworkBadging.getWifiIcon(LEVEL, NetworkBadging.BADGING_NONE, mContext.getTheme());
|
||||
|
||||
displayAndResume();
|
||||
|
||||
verify(mockConnectionDetailPref).setIcon(expectedIcon);
|
||||
verify(mockHeaderController).setIcon(expectedIcon);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void connectionDetailPref_shouldHaveTitleSet() {
|
||||
public void entityHeader_shouldHaveLabelSetToSsid() {
|
||||
String label = "ssid";
|
||||
when(mockAccessPoint.getSsidStr()).thenReturn(label);
|
||||
|
||||
displayAndResume();
|
||||
|
||||
verify(mockHeaderController).setLabel(label);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void entityHeader_shouldHaveSummarySet() {
|
||||
String summary = "summary";
|
||||
when(mockAccessPoint.getSettingsSummary()).thenReturn(summary);
|
||||
|
||||
displayAndResume();
|
||||
|
||||
verify(mockConnectionDetailPref).setTitle(summary);
|
||||
verify(mockHeaderController).setSummary(summary);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -531,33 +560,33 @@ public class WifiDetailPreferenceControllerTest {
|
||||
String summary = "Connected, no Internet";
|
||||
when(mockAccessPoint.getSettingsSummary()).thenReturn(summary);
|
||||
|
||||
InOrder inOrder = inOrder(mockConnectionDetailPref);
|
||||
InOrder inOrder = inOrder(mockHeaderController);
|
||||
displayAndResume();
|
||||
inOrder.verify(mockConnectionDetailPref).setTitle(summary);
|
||||
inOrder.verify(mockHeaderController).setSummary(summary);
|
||||
|
||||
// Check that an irrelevant capability update does not update the access point summary, as
|
||||
// doing so could cause unnecessary jank...
|
||||
summary = "Connected";
|
||||
when(mockAccessPoint.getSettingsSummary()).thenReturn(summary);
|
||||
updateNetworkCapabilities(nc);
|
||||
inOrder.verify(mockConnectionDetailPref, never()).setTitle(any());
|
||||
inOrder.verify(mockHeaderController, never()).setSummary(any(CharSequence.class));
|
||||
|
||||
// ... but that if the network validates, then we do refresh.
|
||||
nc.addCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED);
|
||||
updateNetworkCapabilities(nc);
|
||||
inOrder.verify(mockConnectionDetailPref).setTitle(summary);
|
||||
inOrder.verify(mockHeaderController).setSummary(summary);
|
||||
|
||||
summary = "Connected, no Internet";
|
||||
when(mockAccessPoint.getSettingsSummary()).thenReturn(summary);
|
||||
|
||||
// Another irrelevant update won't cause the UI to refresh...
|
||||
updateNetworkCapabilities(nc);
|
||||
inOrder.verify(mockConnectionDetailPref, never()).setTitle(any());
|
||||
inOrder.verify(mockHeaderController, never()).setSummary(any(CharSequence.class));
|
||||
|
||||
// ... but if the network is no longer validated, then we display "connected, no Internet".
|
||||
nc.removeCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED);
|
||||
updateNetworkCapabilities(nc);
|
||||
inOrder.verify(mockConnectionDetailPref).setTitle(summary);
|
||||
inOrder.verify(mockHeaderController).setSummary(summary);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
Reference in New Issue
Block a user