[Wi-Fi] Apply cache in WifiTracker to update the signal icon immediatelly.
issue: Signal icon on the add wifi network feature need to wait for the scan result. Solution: Apply the cache in the WifiTracker to update signal icon for shortening the waiting time of new scan result. Bug: 146842198 Test: Add following unit test cases to test signal level has been updated correctly: 1. withOneSuggestion_whenScanResultChangedButWifiOff_uiListShouldHaveZeroLevel. Change-Id: Id72e2b43e020f2cafa2af4af5ffb1c28529002bd
This commit is contained in:
@@ -715,7 +715,7 @@ public class AddAppNetworksFragment extends InstrumentedFragment implements
|
|||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
void updateScanResults(List<AccessPoint> allAccessPoints) {
|
void updateScanResultsToUi(List<AccessPoint> allAccessPoints) {
|
||||||
if (mUiToRequestedList == null) {
|
if (mUiToRequestedList == null) {
|
||||||
// Nothing need to be updated.
|
// Nothing need to be updated.
|
||||||
return;
|
return;
|
||||||
@@ -723,13 +723,16 @@ public class AddAppNetworksFragment extends InstrumentedFragment implements
|
|||||||
|
|
||||||
// Update the signal level of the UI networks.
|
// Update the signal level of the UI networks.
|
||||||
for (UiConfigurationItem uiConfigurationItem : mUiToRequestedList) {
|
for (UiConfigurationItem uiConfigurationItem : mUiToRequestedList) {
|
||||||
final Optional<AccessPoint> matchedAccessPoint = allAccessPoints
|
uiConfigurationItem.mLevel = 0;
|
||||||
.stream()
|
if (allAccessPoints != null) {
|
||||||
.filter(accesspoint -> accesspoint.matches(
|
final Optional<AccessPoint> matchedAccessPoint = allAccessPoints
|
||||||
uiConfigurationItem.mWifiNetworkSuggestion.getWifiConfiguration()))
|
.stream()
|
||||||
.findFirst();
|
.filter(accesspoint -> accesspoint.matches(
|
||||||
uiConfigurationItem.mLevel =
|
uiConfigurationItem.mWifiNetworkSuggestion.getWifiConfiguration()))
|
||||||
matchedAccessPoint.isPresent() ? matchedAccessPoint.get().getLevel() : 0;
|
.findFirst();
|
||||||
|
uiConfigurationItem.mLevel =
|
||||||
|
matchedAccessPoint.isPresent() ? matchedAccessPoint.get().getLevel() : 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mIsSingleNetwork) {
|
if (mIsSingleNetwork) {
|
||||||
@@ -741,8 +744,18 @@ public class AddAppNetworksFragment extends InstrumentedFragment implements
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onResume() {
|
||||||
|
super.onResume();
|
||||||
|
onAccessPointsChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update the results when data changes
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void onAccessPointsChanged() {
|
public void onAccessPointsChanged() {
|
||||||
updateScanResults(mWifiTracker.getAccessPoints());
|
updateScanResultsToUi(
|
||||||
|
mWifiTracker.getManager().isWifiEnabled() ? mWifiTracker.getAccessPoints() : null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -26,6 +26,7 @@ import static org.mockito.Mockito.when;
|
|||||||
|
|
||||||
import android.app.settings.SettingsEnums;
|
import android.app.settings.SettingsEnums;
|
||||||
import android.net.wifi.WifiConfiguration;
|
import android.net.wifi.WifiConfiguration;
|
||||||
|
import android.net.wifi.WifiManager;
|
||||||
import android.net.wifi.WifiNetworkSuggestion;
|
import android.net.wifi.WifiNetworkSuggestion;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Parcelable;
|
import android.os.Parcelable;
|
||||||
@@ -59,7 +60,8 @@ public class AddAppNetworksFragmentTest {
|
|||||||
private static final String FAKE_NEW_SAVED_WPA_SSID = "\"fake_new_wpa_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_SSID = "key_ssid";
|
||||||
private static final String KEY_SECURITY = "key_security";
|
private static final String KEY_SECURITY = "key_security";
|
||||||
private static final int SCANED_LEVEL = 4;
|
private static final int SCANED_LEVEL0 = 0;
|
||||||
|
private static final int SCANED_LEVEL4 = 4;
|
||||||
|
|
||||||
private AddAppNetworksFragment mAddAppNetworksFragment;
|
private AddAppNetworksFragment mAddAppNetworksFragment;
|
||||||
private List<WifiNetworkSuggestion> mFakedSpecifiedNetworksList;
|
private List<WifiNetworkSuggestion> mFakedSpecifiedNetworksList;
|
||||||
@@ -76,6 +78,9 @@ public class AddAppNetworksFragmentTest {
|
|||||||
@Mock
|
@Mock
|
||||||
private WifiTracker mMockWifiTracker;
|
private WifiTracker mMockWifiTracker;
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private WifiManager mMockWifiManager;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
@@ -86,10 +91,13 @@ public class AddAppNetworksFragmentTest {
|
|||||||
WifiConfiguration.KeyMgmt.NONE, null);
|
WifiConfiguration.KeyMgmt.NONE, null);
|
||||||
mSavedWpaConfigurationEntry = generateRegularWifiConfiguration(FAKE_NEW_SAVED_WPA_SSID,
|
mSavedWpaConfigurationEntry = generateRegularWifiConfiguration(FAKE_NEW_SAVED_WPA_SSID,
|
||||||
WifiConfiguration.KeyMgmt.WPA_PSK, "\"1234567890\"");
|
WifiConfiguration.KeyMgmt.WPA_PSK, "\"1234567890\"");
|
||||||
|
when(mMockWifiTracker.getManager()).thenReturn(mMockWifiManager);
|
||||||
|
when(mMockWifiManager.isWifiEnabled()).thenReturn(true);
|
||||||
|
|
||||||
mAddAppNetworksFragment.mWifiTracker = mMockWifiTracker;
|
mAddAppNetworksFragment.mWifiTracker = mMockWifiTracker;
|
||||||
WifiTrackerFactory.setTestingWifiTracker(mMockWifiTracker);
|
WifiTrackerFactory.setTestingWifiTracker(mMockWifiTracker);
|
||||||
|
|
||||||
setUpOneScannedNetworkWithScanedLevel();
|
setUpOneScannedNetworkWithScanedLevel4();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -208,6 +216,7 @@ public class AddAppNetworksFragmentTest {
|
|||||||
@Test
|
@Test
|
||||||
public void withOneSuggestion_whenScanResultChanged_uiListShouldHaveNewLevel() {
|
public void withOneSuggestion_whenScanResultChanged_uiListShouldHaveNewLevel() {
|
||||||
// Arrange
|
// Arrange
|
||||||
|
when(mAddAppNetworksFragment.mWifiTracker.getManager().isWifiEnabled()).thenReturn(true);
|
||||||
// Setup a fake saved network list and assign to fragment.
|
// Setup a fake saved network list and assign to fragment.
|
||||||
addOneSavedNetworkConfiguration(mSavedWpaConfigurationEntry);
|
addOneSavedNetworkConfiguration(mSavedWpaConfigurationEntry);
|
||||||
// Setup one specified networks and its results and assign to fragment.
|
// Setup one specified networks and its results and assign to fragment.
|
||||||
@@ -221,16 +230,36 @@ public class AddAppNetworksFragmentTest {
|
|||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
assertThat(mAddAppNetworksFragment.mUiToRequestedList.get(0).mLevel).isEqualTo(
|
assertThat(mAddAppNetworksFragment.mUiToRequestedList.get(0).mLevel).isEqualTo(
|
||||||
SCANED_LEVEL);
|
SCANED_LEVEL4);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setUpOneScannedNetworkWithScanedLevel() {
|
@Test
|
||||||
|
public void withOneSuggestion_whenScanResultChangedButWifiOff_uiListShouldHaveZeroLevel() {
|
||||||
|
// Arrange
|
||||||
|
when(mAddAppNetworksFragment.mWifiTracker.getManager().isWifiEnabled()).thenReturn(false);
|
||||||
|
// 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_LEVEL0);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setUpOneScannedNetworkWithScanedLevel4() {
|
||||||
final ArrayList list = new ArrayList<>();
|
final ArrayList list = new ArrayList<>();
|
||||||
list.add(mMockAccessPoint);
|
list.add(mMockAccessPoint);
|
||||||
when(mMockWifiTracker.getAccessPoints()).thenReturn(list);
|
when(mMockWifiTracker.getAccessPoints()).thenReturn(list);
|
||||||
when(mMockAccessPoint.getSsidStr()).thenReturn(FAKE_NEW_OPEN_SSID);
|
when(mMockAccessPoint.getSsidStr()).thenReturn(FAKE_NEW_OPEN_SSID);
|
||||||
when(mMockAccessPoint.matches(any(WifiConfiguration.class))).thenReturn(true);
|
when(mMockAccessPoint.matches(any(WifiConfiguration.class))).thenReturn(true);
|
||||||
when(mMockAccessPoint.getLevel()).thenReturn(SCANED_LEVEL);
|
when(mMockAccessPoint.getLevel()).thenReturn(SCANED_LEVEL4);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addOneSavedNetworkConfiguration(@NonNull WifiConfiguration wifiConfiguration) {
|
private void addOneSavedNetworkConfiguration(@NonNull WifiConfiguration wifiConfiguration) {
|
||||||
|
Reference in New Issue
Block a user