Merge "Use EntityHeaderController in WifiDetailPreferenceController." into oc-dr1-dev am: 09229abbf2

am: 4fd8528c2f

Change-Id: Ie183a68e7ae944bad8a2ca3782522afd7f78b74f
This commit is contained in:
Sundeep Ghuman
2017-07-05 22:43:16 +00:00
committed by android-build-merger
4 changed files with 77 additions and 81 deletions

View File

@@ -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