Refactor InternetIconInjector to SettingsLib
- Plan to share the InternetIconInjector class to System UI. Bug: 192923176 Test: manual test make RunSettingsLibRoboTests ROBOTEST_FILTER=WifiUtilsTest Change-Id: Ieb7080ab6f6462abc3820b47c2a58cc2ea2a083e
This commit is contained in:
@@ -21,6 +21,7 @@ import static android.net.wifi.WifiConfiguration.NetworkSelectionStatus.getMaxNe
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.net.wifi.ScanResult;
|
||||
import android.net.wifi.WifiConfiguration;
|
||||
import android.net.wifi.WifiConfiguration.NetworkSelectionStatus;
|
||||
@@ -294,6 +295,28 @@ public class WifiUtils {
|
||||
return noInternet ? NO_INTERNET_WIFI_PIE[level] : WIFI_PIE[level];
|
||||
}
|
||||
|
||||
/**
|
||||
* Wrapper the {@link #getInternetIconResource} for testing compatibility.
|
||||
*/
|
||||
public static class InternetIconInjector {
|
||||
|
||||
protected final Context mContext;
|
||||
|
||||
public InternetIconInjector(Context context) {
|
||||
mContext = context;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the Internet icon for a given RSSI level.
|
||||
*
|
||||
* @param noInternet True if a connected Wi-Fi network cannot access the Internet
|
||||
* @param level The number of bars to show (0-4)
|
||||
*/
|
||||
public Drawable getIcon(boolean noInternet, int level) {
|
||||
return mContext.getDrawable(WifiUtils.getInternetIconResource(level, noInternet));
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isMeteredOverridden(WifiConfiguration config) {
|
||||
return config.meteredOverride != WifiConfiguration.METERED_OVERRIDE_NONE;
|
||||
}
|
||||
|
||||
@@ -20,6 +20,8 @@ import static com.google.common.truth.Truth.assertThat;
|
||||
import static org.mockito.ArgumentMatchers.anyInt;
|
||||
import static org.mockito.Mockito.any;
|
||||
import static org.mockito.Mockito.doReturn;
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.content.Context;
|
||||
@@ -37,6 +39,8 @@ import android.os.SystemClock;
|
||||
import android.text.format.DateUtils;
|
||||
import android.util.ArraySet;
|
||||
|
||||
import androidx.test.core.app.ApplicationProvider;
|
||||
|
||||
import com.android.settingslib.R;
|
||||
|
||||
import org.junit.Before;
|
||||
@@ -45,7 +49,6 @@ import org.junit.runner.RunWith;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
import org.robolectric.RobolectricTestRunner;
|
||||
import org.robolectric.RuntimeEnvironment;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Set;
|
||||
@@ -70,7 +73,7 @@ public class WifiUtilsTest {
|
||||
@Before
|
||||
public void setUp() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
mContext = RuntimeEnvironment.application;
|
||||
mContext = spy(ApplicationProvider.getApplicationContext());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -160,6 +163,21 @@ public class WifiUtilsTest {
|
||||
assertThat(bundle.getString(WifiUtils.KEY_CHOSEN_WIFIENTRY_KEY)).isEqualTo(key);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testInternetIconInjector_getIcon_returnsCorrectValues() {
|
||||
WifiUtils.InternetIconInjector iconInjector = new WifiUtils.InternetIconInjector(mContext);
|
||||
|
||||
for (int level = 0; level <= 4; level++) {
|
||||
iconInjector.getIcon(false /* noInternet */, level);
|
||||
verify(mContext).getDrawable(
|
||||
WifiUtils.getInternetIconResource(level, false /* noInternet */));
|
||||
|
||||
iconInjector.getIcon(true /* noInternet */, level);
|
||||
verify(mContext).getDrawable(
|
||||
WifiUtils.getInternetIconResource(level, true /* noInternet */));
|
||||
}
|
||||
}
|
||||
|
||||
private static ArrayList<ScanResult> buildScanResultCache() {
|
||||
ArrayList<ScanResult> scanResults = new ArrayList<>();
|
||||
for (int i = 0; i < 5; i++) {
|
||||
|
||||
Reference in New Issue
Block a user