Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c3e15d3f authored by Weng Su's avatar Weng Su Committed by Zoey Chen
Browse files

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
Merged-In: Ieb7080ab6f6462abc3820b47c2a58cc2ea2a083e
(cherry picked from commit a9c846a5)
parent 903f54b1
Loading
Loading
Loading
Loading
+23 −0
Original line number Diff line number Diff line
@@ -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 −2
Original line number Diff line number Diff line
@@ -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++) {