[Wi-Fi] Add Wifitracker mechanism to update the signal icon.

Signal icon on the add wifi network feature is constant, didn't change with real signal level.

Bug: 146842198
Test: Add following unit test cases:
      1. withOneSuggestion_uiElementShouldHaveInitLevel() to test init level.
      2. withOneSuggestion_whenScanResultChanged_uiListShouldHaveNewLevel() to test level should updated according to scan result.

Change-Id: I212a825da9455a09a5c7777f87c0a74ec030c890
This commit is contained in:
govenliu
2020-01-17 18:24:40 +08:00
parent 07416f4bee
commit 7e1018c0d0
2 changed files with 134 additions and 11 deletions

View File

@@ -18,8 +18,11 @@ package com.android.settings.wifi.addappnetworks;
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.spy;
import static org.mockito.Mockito.when;
import android.app.settings.SettingsEnums;
import android.net.wifi.WifiConfiguration;
@@ -32,10 +35,15 @@ import android.widget.TextView;
import androidx.annotation.NonNull;
import com.android.settings.R;
import com.android.settingslib.wifi.AccessPoint;
import com.android.settingslib.wifi.WifiTracker;
import com.android.settingslib.wifi.WifiTrackerFactory;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.shadows.androidx.fragment.FragmentController;
@@ -49,6 +57,9 @@ public class AddAppNetworksFragmentTest {
private static final String FAKE_NEW_OPEN_SSID = "fake_new_open_ssid";
private static final String FAKE_NEW_OPEN_SSID_WITH_QUOTE = "\"fake_new_open_ssid\"";
private static final String FAKE_NEW_SAVED_WPA_SSID = "\"fake_new_wpa_ssid\"";
private static final String KEY_SSID = "key_ssid";
private static final String KEY_SECURITY = "key_security";
private static final int SCANED_LEVEL = 4;
private AddAppNetworksFragment mAddAppNetworksFragment;
private List<WifiNetworkSuggestion> mFakedSpecifiedNetworksList;
@@ -59,8 +70,15 @@ public class AddAppNetworksFragmentTest {
private Bundle mBundle;
private ArrayList<Integer> mFakedResultArrayList = new ArrayList<>();
@Mock
private AccessPoint mMockAccessPoint;
@Mock
private WifiTracker mMockWifiTracker;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mAddAppNetworksFragment = spy(new AddAppNetworksFragment());
mNewWpaSuggestionEntry = generateRegularWifiSuggestion(FAKE_NEW_WPA_SSID,
WifiConfiguration.KeyMgmt.WPA_PSK, "1234567890");
@@ -68,6 +86,10 @@ public class AddAppNetworksFragmentTest {
WifiConfiguration.KeyMgmt.NONE, null);
mSavedWpaConfigurationEntry = generateRegularWifiConfiguration(FAKE_NEW_SAVED_WPA_SSID,
WifiConfiguration.KeyMgmt.WPA_PSK, "\"1234567890\"");
mAddAppNetworksFragment.mWifiTracker = mMockWifiTracker;
WifiTrackerFactory.setTestingWifiTracker(mMockWifiTracker);
setUpOneScannedNetworkWithScanedLevel();
}
@Test
@@ -165,6 +187,52 @@ public class AddAppNetworksFragmentTest {
assertThat(mAddAppNetworksFragment.mUiToRequestedList).hasSize(3);
}
@Test
public void withOneSuggestion_uiElementShouldHaveInitLevel() {
// Arrange
// Setup a fake saved network list and assign to fragment.
addOneSavedNetworkConfiguration(mSavedWpaConfigurationEntry);
// Setup one specified networks and its results and assign to fragment.
addOneSpecifiedRegularNetworkSuggestion(mNewOpenSuggestionEntry);
mAddAppNetworksFragment.mAllSpecifiedNetworksList = mFakedSpecifiedNetworksList;
// Act
mAddAppNetworksFragment.filterSavedNetworks(mFakeSavedNetworksList);
// Assert
assertThat(mAddAppNetworksFragment.mUiToRequestedList).hasSize(1);
assertThat(mAddAppNetworksFragment.mUiToRequestedList.get(0).mLevel).isEqualTo(
mAddAppNetworksFragment.INITIAL_RSSI_SIGNAL_LEVEL);
}
@Test
public void withOneSuggestion_whenScanResultChanged_uiListShouldHaveNewLevel() {
// Arrange
// Setup a fake saved network list and assign to fragment.
addOneSavedNetworkConfiguration(mSavedWpaConfigurationEntry);
// Setup one specified networks and its results and assign to fragment.
addOneSpecifiedRegularNetworkSuggestion(mNewOpenSuggestionEntry);
mAddAppNetworksFragment.mAllSpecifiedNetworksList = mFakedSpecifiedNetworksList;
// Call filterSavedNetworks to generate necessary objects.
mAddAppNetworksFragment.filterSavedNetworks(mFakeSavedNetworksList);
// Act
mAddAppNetworksFragment.onAccessPointsChanged();
// Assert
assertThat(mAddAppNetworksFragment.mUiToRequestedList.get(0).mLevel).isEqualTo(
SCANED_LEVEL);
}
private void setUpOneScannedNetworkWithScanedLevel() {
final ArrayList list = new ArrayList<>();
list.add(mMockAccessPoint);
when(mMockWifiTracker.getAccessPoints()).thenReturn(list);
when(mMockAccessPoint.getSsidStr()).thenReturn(FAKE_NEW_OPEN_SSID);
when(mMockAccessPoint.matches(any(WifiConfiguration.class))).thenReturn(true);
when(mMockAccessPoint.getLevel()).thenReturn(SCANED_LEVEL);
}
private void addOneSavedNetworkConfiguration(@NonNull WifiConfiguration wifiConfiguration) {
if (mFakeSavedNetworksList == null) {
mFakeSavedNetworksList = new ArrayList<>();