Merge "[Wi-Fi] Updates internal AccessPoint list upon onAccessPointsChanged"
This commit is contained in:
@@ -34,16 +34,19 @@ import android.widget.BaseAdapter;
|
|||||||
import android.widget.Button;
|
import android.widget.Button;
|
||||||
import android.widget.ProgressBar;
|
import android.widget.ProgressBar;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.VisibleForTesting;
|
import androidx.annotation.VisibleForTesting;
|
||||||
import androidx.appcompat.app.AlertDialog;
|
import androidx.appcompat.app.AlertDialog;
|
||||||
import androidx.preference.internal.PreferenceImageView;
|
import androidx.preference.internal.PreferenceImageView;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settingslib.Utils;
|
import com.android.settingslib.Utils;
|
||||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||||
import com.android.settingslib.wifi.AccessPoint;
|
import com.android.settingslib.wifi.AccessPoint;
|
||||||
import com.android.settingslib.wifi.WifiTracker;
|
import com.android.settingslib.wifi.WifiTracker;
|
||||||
import com.android.settingslib.wifi.WifiTrackerFactory;
|
import com.android.settingslib.wifi.WifiTrackerFactory;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -63,7 +66,8 @@ public class NetworkRequestDialogFragment extends NetworkRequestDialogBaseFragme
|
|||||||
private boolean mShowLimitedItem = true;
|
private boolean mShowLimitedItem = true;
|
||||||
|
|
||||||
private List<AccessPoint> mAccessPointList;
|
private List<AccessPoint> mAccessPointList;
|
||||||
private FilterWifiTracker mFilterWifiTracker;
|
@VisibleForTesting
|
||||||
|
FilterWifiTracker mFilterWifiTracker;
|
||||||
private AccessPointAdapter mDialogAdapter;
|
private AccessPointAdapter mDialogAdapter;
|
||||||
private NetworkRequestUserSelectionCallback mUserSelectionCallback;
|
private NetworkRequestUserSelectionCallback mUserSelectionCallback;
|
||||||
|
|
||||||
@@ -115,7 +119,7 @@ public class NetworkRequestDialogFragment extends NetworkRequestDialogBaseFragme
|
|||||||
neutralBtn.setVisibility(View.GONE);
|
neutralBtn.setVisibility(View.GONE);
|
||||||
neutralBtn.setOnClickListener(v -> {
|
neutralBtn.setOnClickListener(v -> {
|
||||||
mShowLimitedItem = false;
|
mShowLimitedItem = false;
|
||||||
renewAccessPointList(null /* List<ScanResult> */);
|
renewAccessPointList(null /* scanResults */);
|
||||||
notifyAdapterRefresh();
|
notifyAdapterRefresh();
|
||||||
neutralBtn.setVisibility(View.GONE);
|
neutralBtn.setVisibility(View.GONE);
|
||||||
});
|
});
|
||||||
@@ -323,7 +327,8 @@ public class NetworkRequestDialogFragment extends NetworkRequestDialogBaseFragme
|
|||||||
// Do nothing when selection is failed, let user could try again easily.
|
// Do nothing when selection is failed, let user could try again easily.
|
||||||
}
|
}
|
||||||
|
|
||||||
private final class FilterWifiTracker {
|
@VisibleForTesting
|
||||||
|
final class FilterWifiTracker {
|
||||||
private final List<String> mAccessPointKeys;
|
private final List<String> mAccessPointKeys;
|
||||||
private final WifiTracker mWifiTracker;
|
private final WifiTracker mWifiTracker;
|
||||||
|
|
||||||
@@ -381,7 +386,8 @@ public class NetworkRequestDialogFragment extends NetworkRequestDialogBaseFragme
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private WifiTracker.WifiListener mWifiListener = new WifiTracker.WifiListener() {
|
@VisibleForTesting
|
||||||
|
WifiTracker.WifiListener mWifiListener = new WifiTracker.WifiListener() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onWifiStateChanged(int state) {
|
public void onWifiStateChanged(int state) {
|
||||||
@@ -395,6 +401,7 @@ public class NetworkRequestDialogFragment extends NetworkRequestDialogBaseFragme
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onAccessPointsChanged() {
|
public void onAccessPointsChanged() {
|
||||||
|
renewAccessPointList(null /* scanResults */);
|
||||||
notifyAdapterRefresh();
|
notifyAdapterRefresh();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@@ -17,6 +17,7 @@
|
|||||||
package com.android.settings.wifi;
|
package com.android.settings.wifi;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
import static org.mockito.Mockito.times;
|
import static org.mockito.Mockito.times;
|
||||||
@@ -33,14 +34,16 @@ import android.os.Bundle;
|
|||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.Button;
|
import android.widget.Button;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import androidx.appcompat.app.AlertDialog;
|
import androidx.appcompat.app.AlertDialog;
|
||||||
|
import androidx.fragment.app.FragmentActivity;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
|
import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
|
||||||
import com.android.settingslib.wifi.AccessPoint;
|
import com.android.settingslib.wifi.AccessPoint;
|
||||||
import com.android.settingslib.wifi.WifiTracker;
|
import com.android.settingslib.wifi.WifiTracker;
|
||||||
import com.android.settingslib.wifi.WifiTrackerFactory;
|
import com.android.settingslib.wifi.WifiTrackerFactory;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
@@ -49,6 +52,9 @@ import org.robolectric.RobolectricTestRunner;
|
|||||||
import org.robolectric.RuntimeEnvironment;
|
import org.robolectric.RuntimeEnvironment;
|
||||||
import org.robolectric.annotation.Config;
|
import org.robolectric.annotation.Config;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
@Config(shadows = ShadowAlertDialogCompat.class)
|
@Config(shadows = ShadowAlertDialogCompat.class)
|
||||||
public class NetworkRequestDialogFragmentTest {
|
public class NetworkRequestDialogFragmentTest {
|
||||||
@@ -57,14 +63,14 @@ public class NetworkRequestDialogFragmentTest {
|
|||||||
private static final String KEY_SECURITY = "key_security";
|
private static final String KEY_SECURITY = "key_security";
|
||||||
private static final String TEST_APP_NAME = "TestAppName";
|
private static final String TEST_APP_NAME = "TestAppName";
|
||||||
|
|
||||||
private NetworkRequestDialogActivity mActivity;
|
private FragmentActivity mActivity;
|
||||||
private NetworkRequestDialogFragment networkRequestDialogFragment;
|
private NetworkRequestDialogFragment networkRequestDialogFragment;
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
private WifiTracker mWifiTracker;
|
private WifiTracker mWifiTracker;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
mActivity = Robolectric.buildActivity(NetworkRequestDialogActivity.class,
|
mActivity = Robolectric.buildActivity(FragmentActivity.class,
|
||||||
new Intent().putExtra(NetworkRequestDialogFragment.EXTRA_APP_NAME,
|
new Intent().putExtra(NetworkRequestDialogFragment.EXTRA_APP_NAME,
|
||||||
TEST_APP_NAME)).setup().get();
|
TEST_APP_NAME)).setup().get();
|
||||||
networkRequestDialogFragment = spy(NetworkRequestDialogFragment.newInstance());
|
networkRequestDialogFragment = spy(NetworkRequestDialogFragment.newInstance());
|
||||||
@@ -108,7 +114,6 @@ public class NetworkRequestDialogFragmentTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void onUserSelectionCallbackRegistration_onClick_shouldCallSelect() {
|
public void onUserSelectionCallbackRegistration_onClick_shouldCallSelect() {
|
||||||
// Assert.
|
|
||||||
final int indexClickItem = 3;
|
final int indexClickItem = 3;
|
||||||
List<AccessPoint> accessPointList = createAccessPointList();
|
List<AccessPoint> accessPointList = createAccessPointList();
|
||||||
AccessPoint clickedAccessPoint = accessPointList.get(indexClickItem);
|
AccessPoint clickedAccessPoint = accessPointList.get(indexClickItem);
|
||||||
@@ -129,7 +134,6 @@ public class NetworkRequestDialogFragmentTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void onMatch_shouldUpdatedList() {
|
public void onMatch_shouldUpdatedList() {
|
||||||
// Assert.
|
|
||||||
when(networkRequestDialogFragment.getContext()).thenReturn(mContext);
|
when(networkRequestDialogFragment.getContext()).thenReturn(mContext);
|
||||||
Context applicationContext = spy(RuntimeEnvironment.application.getApplicationContext());
|
Context applicationContext = spy(RuntimeEnvironment.application.getApplicationContext());
|
||||||
when(mContext.getApplicationContext()).thenReturn(applicationContext);
|
when(mContext.getApplicationContext()).thenReturn(applicationContext);
|
||||||
@@ -140,15 +144,15 @@ public class NetworkRequestDialogFragmentTest {
|
|||||||
List<AccessPoint> accessPointList = createAccessPointList();
|
List<AccessPoint> accessPointList = createAccessPointList();
|
||||||
when(mWifiTracker.getAccessPoints()).thenReturn(accessPointList);
|
when(mWifiTracker.getAccessPoints()).thenReturn(accessPointList);
|
||||||
|
|
||||||
final String SSID_AP1 = "Test AP 1";
|
final String ssidAp1 = "Test AP 1";
|
||||||
final String SSID_AP2 = "Test AP 2";
|
final String ssidAp2 = "Test AP 2";
|
||||||
List<ScanResult> scanResults = new ArrayList<>();
|
List<ScanResult> scanResults = new ArrayList<>();
|
||||||
ScanResult scanResult = new ScanResult();
|
ScanResult scanResult = new ScanResult();
|
||||||
scanResult.SSID = SSID_AP1;
|
scanResult.SSID = ssidAp1;
|
||||||
scanResult.capabilities = "WEP";
|
scanResult.capabilities = "WEP";
|
||||||
scanResults.add(scanResult);
|
scanResults.add(scanResult);
|
||||||
scanResult = new ScanResult();
|
scanResult = new ScanResult();
|
||||||
scanResult.SSID = SSID_AP2;
|
scanResult.SSID = ssidAp2;
|
||||||
scanResult.capabilities = "WEP";
|
scanResult.capabilities = "WEP";
|
||||||
scanResults.add(scanResult);
|
scanResults.add(scanResult);
|
||||||
|
|
||||||
@@ -159,8 +163,43 @@ public class NetworkRequestDialogFragmentTest {
|
|||||||
List<AccessPoint> returnList = networkRequestDialogFragment.getAccessPointList();
|
List<AccessPoint> returnList = networkRequestDialogFragment.getAccessPointList();
|
||||||
assertThat(returnList).isNotEmpty();
|
assertThat(returnList).isNotEmpty();
|
||||||
assertThat(returnList.size()).isEqualTo(2);
|
assertThat(returnList.size()).isEqualTo(2);
|
||||||
assertThat(returnList.get(0).getSsid()).isEqualTo(SSID_AP1);
|
assertThat(returnList.get(0).getSsid()).isEqualTo(ssidAp1);
|
||||||
assertThat(returnList.get(1).getSsid()).isEqualTo(SSID_AP2);
|
assertThat(returnList.get(1).getSsid()).isEqualTo(ssidAp2);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onAccessPointsChanged_shouldUpdatedList() {
|
||||||
|
when(networkRequestDialogFragment.getContext()).thenReturn(mContext);
|
||||||
|
Context applicationContext = spy(RuntimeEnvironment.application.getApplicationContext());
|
||||||
|
when(mContext.getApplicationContext()).thenReturn(applicationContext);
|
||||||
|
WifiManager wifiManager = mock(WifiManager.class);
|
||||||
|
when(applicationContext.getSystemService(Context.WIFI_SERVICE)).thenReturn(wifiManager);
|
||||||
|
networkRequestDialogFragment.onResume();
|
||||||
|
|
||||||
|
List<AccessPoint> accessPointList = new ArrayList<>();
|
||||||
|
when(mWifiTracker.getAccessPoints()).thenReturn(accessPointList);
|
||||||
|
|
||||||
|
final String ssidAp1 = "Test AP 1";
|
||||||
|
List<ScanResult> scanResults = new ArrayList<>();
|
||||||
|
ScanResult scanResult = new ScanResult();
|
||||||
|
scanResult.SSID = ssidAp1;
|
||||||
|
scanResult.capabilities = "WEP";
|
||||||
|
scanResults.add(scanResult);
|
||||||
|
|
||||||
|
// Act.
|
||||||
|
networkRequestDialogFragment.onMatch(scanResults);
|
||||||
|
|
||||||
|
accessPointList = createAccessPointList();
|
||||||
|
when(mWifiTracker.getAccessPoints()).thenReturn(accessPointList);
|
||||||
|
|
||||||
|
// Act.
|
||||||
|
networkRequestDialogFragment.mFilterWifiTracker.mWifiListener.onAccessPointsChanged();
|
||||||
|
|
||||||
|
// Check.
|
||||||
|
List<AccessPoint> returnList = networkRequestDialogFragment.getAccessPointList();
|
||||||
|
assertThat(returnList).isNotEmpty();
|
||||||
|
assertThat(returnList.size()).isEqualTo(1);
|
||||||
|
assertThat(returnList.get(0).getSsid()).isEqualTo(ssidAp1);
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<AccessPoint> createAccessPointList() {
|
private List<AccessPoint> createAccessPointList() {
|
||||||
@@ -208,16 +247,14 @@ public class NetworkRequestDialogFragmentTest {
|
|||||||
public void onMatchManyResult_showNeutralButton() {
|
public void onMatchManyResult_showNeutralButton() {
|
||||||
networkRequestDialogFragment.show(mActivity.getSupportFragmentManager(), /* tag */ null);
|
networkRequestDialogFragment.show(mActivity.getSupportFragmentManager(), /* tag */ null);
|
||||||
final AlertDialog alertDialog = ShadowAlertDialogCompat.getLatestAlertDialog();
|
final AlertDialog alertDialog = ShadowAlertDialogCompat.getLatestAlertDialog();
|
||||||
|
|
||||||
|
|
||||||
List<AccessPoint> accessPointList = createAccessPointList();
|
List<AccessPoint> accessPointList = createAccessPointList();
|
||||||
when(mWifiTracker.getAccessPoints()).thenReturn(accessPointList);
|
when(mWifiTracker.getAccessPoints()).thenReturn(accessPointList);
|
||||||
|
|
||||||
final String SSID_AP = "Test AP ";
|
final String ssidAp = "Test AP ";
|
||||||
final List<ScanResult> scanResults = new ArrayList<>();
|
final List<ScanResult> scanResults = new ArrayList<>();
|
||||||
for (int i = 0; i < 7 ; i ++) {
|
for (int i = 0; i < 7 ; i ++) {
|
||||||
ScanResult scanResult = new ScanResult();
|
ScanResult scanResult = new ScanResult();
|
||||||
scanResult.SSID = SSID_AP + i;
|
scanResult.SSID = ssidAp + i;
|
||||||
scanResult.capabilities = "WEP";
|
scanResult.capabilities = "WEP";
|
||||||
scanResults.add(scanResult);
|
scanResults.add(scanResult);
|
||||||
}
|
}
|
||||||
@@ -230,15 +267,14 @@ public class NetworkRequestDialogFragmentTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void clickNeutralButton_hideNeutralButton() {
|
public void clickNeutralButton_hideNeutralButton() {
|
||||||
// Assert
|
|
||||||
networkRequestDialogFragment.show(mActivity.getSupportFragmentManager(), /* tag */ null);
|
networkRequestDialogFragment.show(mActivity.getSupportFragmentManager(), /* tag */ null);
|
||||||
final AlertDialog alertDialog = ShadowAlertDialogCompat.getLatestAlertDialog();
|
final AlertDialog alertDialog = ShadowAlertDialogCompat.getLatestAlertDialog();
|
||||||
|
|
||||||
final String SSID_AP = "Test AP ";
|
final String ssidAp = "Test AP ";
|
||||||
final List<ScanResult> scanResults = new ArrayList<>();
|
final List<ScanResult> scanResults = new ArrayList<>();
|
||||||
for (int i = 0; i < 6 ; i ++) {
|
for (int i = 0; i < 6 ; i ++) {
|
||||||
ScanResult scanResult = new ScanResult();
|
ScanResult scanResult = new ScanResult();
|
||||||
scanResult.SSID = SSID_AP + i;
|
scanResult.SSID = ssidAp + i;
|
||||||
scanResult.capabilities = "WEP";
|
scanResult.capabilities = "WEP";
|
||||||
scanResults.add(scanResult);
|
scanResults.add(scanResult);
|
||||||
}
|
}
|
||||||
@@ -254,7 +290,6 @@ public class NetworkRequestDialogFragmentTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void cancelDialog_callsReject() {
|
public void cancelDialog_callsReject() {
|
||||||
// Assert
|
|
||||||
networkRequestDialogFragment.show(mActivity.getSupportFragmentManager(), /* tag */ null);
|
networkRequestDialogFragment.show(mActivity.getSupportFragmentManager(), /* tag */ null);
|
||||||
final AlertDialog alertDialog = ShadowAlertDialogCompat.getLatestAlertDialog();
|
final AlertDialog alertDialog = ShadowAlertDialogCompat.getLatestAlertDialog();
|
||||||
final NetworkRequestUserSelectionCallback selectionCallback = mock(
|
final NetworkRequestUserSelectionCallback selectionCallback = mock(
|
||||||
|
Reference in New Issue
Block a user